From 05a55641f1a30a9b9bba103797cc44a11dfe6e8c Mon Sep 17 00:00:00 2001 From: Samster91 Date: Mon, 30 Jan 2023 14:48:55 +0100 Subject: [PATCH 0001/1354] NEW: Idle Finance Euler tranches --- package-lock.json | 2468 +++++++++++++++++++++++++++++++++++++--- projects/idle/index.js | 8 +- 2 files changed, 2302 insertions(+), 174 deletions(-) diff --git a/package-lock.json b/package-lock.json index d2fe5319c2..298fa3d761 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "license": "ISC", "dependencies": { "@defillama/sdk": "latest", + "@hover-labs/kolibri-js": "^4.1.3", "@project-serum/anchor": "^0.25.0", "@solana/web3.js": "^1.36.0", "@solendprotocol/solend-sdk": "^0.6.2", @@ -38,6 +39,112 @@ "ts-node": "^10.8.1" } }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "peer": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "peer": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "peer": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "peer": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/runtime": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", @@ -62,9 +169,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "3.0.28", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.28.tgz", - "integrity": "sha512-OZSDraOb5YH1ECEAJYoihwOtm+73p00bdS0JC30W4DqbapgUiRorPPtssQU2pwdJyswXylv/S28m2vhgiBchFA==", + "version": "3.0.29", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.29.tgz", + "integrity": "sha512-CjkFIiDZheHySQ25np3CVyT7nHOCnvSgRstSd66nIHKuvoAVTrFMV0FpZ3lNKtVGdS7JKtqE1GCOj7mJrb818Q==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -765,6 +872,103 @@ "@ethersproject/strings": "^5.7.0" } }, + "node_modules/@hover-labs/kolibri-js": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@hover-labs/kolibri-js/-/kolibri-js-4.1.3.tgz", + "integrity": "sha512-ZmW4x+7XptaQnE5nw3AJU7L5AHxHE/E0Qy0rWKjd23MM/V6vd2CODbR9UC0Rh1dVmWioprj0KbTEqg499OM7ow==", + "dependencies": { + "@taquito/signer": "^12.0.2", + "@taquito/taquito": "^12.0.2", + "@temple-wallet/dapp": "^5.0.2", + "axios": "^0.21.0", + "bignumber.js": "^9.0.1", + "blakejs": "^1.1.1", + "bs58check": "^2.1.2", + "decimal.js": "^10.3.1", + "lodash": "^4.17.21" + } + }, + "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/http-utils": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", + "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", + "dependencies": { + "axios": "^0.26.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/http-utils/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/michel-codec": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", + "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/michelson-encoder": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", + "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", + "dependencies": { + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "fast-json-stable-stringify": "^2.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/rpc": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", + "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", + "dependencies": { + "@taquito/http-utils": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/taquito": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", + "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", + "hasInstallScript": true, + "dependencies": { + "@taquito/http-utils": "^12.1.1", + "@taquito/local-forging": "^12.1.1", + "@taquito/michel-codec": "^12.1.1", + "@taquito/michelson-encoder": "^12.1.1", + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "rxjs": "^6.6.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@hover-labs/kolibri-js/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -798,6 +1002,22 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -1440,152 +1660,695 @@ "node": ">=4.2.0" } }, - "node_modules/@supercharge/promise-pool": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", - "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==", - "engines": { - "node": ">=8" + "node_modules/@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "dependencies": { + "@stablelib/int": "^1.0.1" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "node_modules/@stablelib/blake2b": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/blake2b/-/blake2b-1.0.1.tgz", + "integrity": "sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "node_modules/@stablelib/bytes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", + "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "node_modules/@stablelib/constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", + "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" }, - "node_modules/@tsconfig/node16": { + "node_modules/@stablelib/ed25519": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", + "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", + "dependencies": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } }, - "node_modules/@types/async-retry": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.5.tgz", - "integrity": "sha512-YrdjSD+yQv7h6d5Ip+PMxh3H6ZxKyQk0Ts+PvaNRInxneG9PFVZjFg77ILAN+N6qYf7g4giSJ1l+ZjQ1zeegvA==", - "dev": true, + "node_modules/@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + }, + "node_modules/@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + }, + "node_modules/@stablelib/keyagreement": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", + "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", "dependencies": { - "@types/retry": "*" + "@stablelib/bytes": "^1.0.1" } }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, + "node_modules/@stablelib/nacl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@stablelib/nacl/-/nacl-1.0.4.tgz", + "integrity": "sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==", "dependencies": { - "@types/node": "*" + "@stablelib/poly1305": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1", + "@stablelib/x25519": "^1.0.3", + "@stablelib/xsalsa20": "^1.0.2" } }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "node_modules/@stablelib/poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", "dependencies": { - "@types/node": "*" + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + "node_modules/@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true + "node_modules/@stablelib/salsa20": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/salsa20/-/salsa20-1.0.2.tgz", + "integrity": "sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "node_modules/@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", "dependencies": { - "@types/node": "*" + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "node_modules/@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + }, + "node_modules/@stablelib/x25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", + "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", + "dependencies": { + "@stablelib/keyagreement": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/@stablelib/xsalsa20": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/xsalsa20/-/xsalsa20-1.0.2.tgz", + "integrity": "sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/salsa20": "^1.0.2", + "@stablelib/wipe": "^1.0.1" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, + "node_modules/@supercharge/promise-pool": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", + "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==", "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" - }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "node_modules/@taquito/http-utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-10.2.1.tgz", + "integrity": "sha512-RZmGxJFllTHC5LuxrPcVQoH/MpDvQehLjE1czSmL2Dz1VZlzI4Q6Ie+pG5nHQODRPqE8ABi/2aHAGGYMQWqKZg==", + "peer": true, "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "xhr2-cookies": "^1.1.0" }, "engines": { - "node": ">= 8.0.0" + "node": ">=6.0.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, + "node_modules/@taquito/local-forging": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-12.1.1.tgz", + "integrity": "sha512-SUA1YYRIpEGsTy5OfUIgIem0k/QsAzGjDCvf/wl5XV/fVBkP/+GN7uvYoqgJblCmsgtsMBhJFtXgs+D6bjGexg==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "node_modules/@taquito/michel-codec": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-10.2.1.tgz", + "integrity": "sha512-VSHELyuiwso1qCpAEZkH7JdDlZdHxTjyvZcBsfnfpbdpCrAUpCB48P4NZOnvZ58SYt9VS1bNAa5GRvQyOnNvMQ==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/michelson-encoder": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-10.2.1.tgz", + "integrity": "sha512-HYCtDGCWtyCgOQjmxYLYw5ftejG0FUfAW1FzZWIW6w2ars1TInSbLNeVRZs+EmbD3L8wOaxaOlgdsMoDnGqM/g==", + "peer": true, + "dependencies": { + "@taquito/rpc": "^10.2.1", + "@taquito/utils": "^10.2.1", + "bignumber.js": "^9.0.1", + "fast-json-stable-stringify": "^2.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/michelson-encoder/node_modules/@taquito/utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", + "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", + "peer": true, + "dependencies": { + "blakejs": "^1.1.0", + "bs58check": "^2.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/michelson-encoder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@taquito/michelson-encoder/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, + "node_modules/@taquito/rpc": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-10.2.1.tgz", + "integrity": "sha512-Vg80sGLICkEKGls+7YEd0uFpsp8dwx2kNeGgCbpNROIs0S6Slsd0UfDlaZGlllWeUAKr5r6baexYrTKFuWs/UA==", + "peer": true, + "dependencies": { + "@taquito/http-utils": "^10.2.1", + "bignumber.js": "^9.0.1", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/signer": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-12.1.1.tgz", + "integrity": "sha512-TONxIbLs7bgmB3TTzcTOYzL8pFLZFBujHDHjB5QHJY5DT+lpByjYZHk2Frqjcy3NDvENVLU6uXeCeba2LK8kwA==", + "dependencies": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.2", + "@stablelib/nacl": "^1.0.3", + "@taquito/taquito": "^12.1.1", + "@taquito/utils": "^12.1.1", + "elliptic": "^6.5.4", + "pbkdf2": "^3.1.2", + "typedarray-to-buffer": "^4.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/signer/node_modules/@taquito/http-utils": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", + "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", + "dependencies": { + "axios": "^0.26.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/signer/node_modules/@taquito/michel-codec": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", + "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/signer/node_modules/@taquito/michelson-encoder": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", + "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", + "dependencies": { + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "fast-json-stable-stringify": "^2.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/signer/node_modules/@taquito/rpc": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", + "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", + "dependencies": { + "@taquito/http-utils": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/signer/node_modules/@taquito/taquito": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", + "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", + "hasInstallScript": true, + "dependencies": { + "@taquito/http-utils": "^12.1.1", + "@taquito/local-forging": "^12.1.1", + "@taquito/michel-codec": "^12.1.1", + "@taquito/michelson-encoder": "^12.1.1", + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "rxjs": "^6.6.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/signer/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@taquito/taquito": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-10.2.1.tgz", + "integrity": "sha512-ay61aKhFQPnYGu5d9jqEvaZE0EzE6tO9MD+5vOu6/NFVThBd7ysOQS1PB0VprL9SupM1NVDFnEJ8GtE8SYgk8g==", + "hasInstallScript": true, + "peer": true, + "dependencies": { + "@taquito/http-utils": "^10.2.1", + "@taquito/michel-codec": "^10.2.1", + "@taquito/michelson-encoder": "^10.2.1", + "@taquito/rpc": "^10.2.1", + "@taquito/utils": "^10.2.1", + "bignumber.js": "^9.0.1", + "rx-sandbox": "^1.0.4", + "rxjs": "^6.6.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/taquito/node_modules/@taquito/utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", + "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", + "peer": true, + "dependencies": { + "blakejs": "^1.1.0", + "bs58check": "^2.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/taquito/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@taquito/taquito/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, + "node_modules/@taquito/utils": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-12.1.1.tgz", + "integrity": "sha512-GxNSBrA02vwhy56ayWB49VZficB+j2oyhPdlsRb2CguephmyEYnlUaNV27ILa6dPDW+zv6+QWQj6GyqLBRpIlA==", + "dependencies": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.2", + "@types/bs58check": "^2.1.0", + "blakejs": "^1.1.1", + "bs58check": "^2.1.2", + "buffer": "^6.0.3", + "elliptic": "^6.5.4", + "typedarray-to-buffer": "^4.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@taquito/utils/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@taquito/utils/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@temple-wallet/dapp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@temple-wallet/dapp/-/dapp-5.0.2.tgz", + "integrity": "sha512-IIeHTowHXOp7/JnttfzMyCJjFWwhqOauDN7S2vU0GzHkpT5gH6FBXqB3kvZUyPfoxY0PXuXg+HKh++qABx+g9A==", + "dependencies": { + "nanoid": "^3.1.25" + }, + "peerDependencies": { + "@taquito/taquito": "^10.0.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/async-retry": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.5.tgz", + "integrity": "sha512-YrdjSD+yQv7h6d5Ip+PMxh3H6ZxKyQk0Ts+PvaNRInxneG9PFVZjFg77ILAN+N6qYf7g4giSJ1l+ZjQ1zeegvA==", + "dev": true, + "dependencies": { + "@types/retry": "*" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/bs58check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", + "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "peer": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "peer": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "peer": true + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "15.0.15", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", + "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "peer": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } @@ -1594,7 +2357,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1775,6 +2537,18 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "peer": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -1788,6 +2562,16 @@ "base-x": "^3.0.2" } }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, "node_modules/buffer": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", @@ -1884,7 +2668,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1896,11 +2679,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1911,8 +2702,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colors": { "version": "1.4.0", @@ -1944,6 +2734,37 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "peer": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -1999,6 +2820,11 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2041,6 +2867,15 @@ "node": ">=0.3.1" } }, + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "peer": true, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -2371,6 +3206,23 @@ "node": ">=0.4.x" } }, + "node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -2399,8 +3251,7 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -2439,6 +3290,18 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "peer": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", @@ -2700,7 +3563,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2730,6 +3592,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -2908,6 +3783,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "peer": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -3002,6 +3886,74 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "peer": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "peer": true, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -3035,6 +3987,12 @@ "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3202,6 +4160,29 @@ "node": ">= 8.16.2" } }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "peer": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3262,6 +4243,17 @@ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3417,6 +4409,33 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "peer": true }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "peer": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3426,6 +4445,21 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -3469,6 +4503,25 @@ } ] }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "peer": true + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -3549,6 +4602,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/rpc-websockets": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", @@ -3619,6 +4681,39 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rx-sandbox": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rx-sandbox/-/rx-sandbox-1.0.4.tgz", + "integrity": "sha512-+/9MHDYNoF9ca/2RR+L2LloXXeQyIR3k/wjK03IicrxxlbkhmKF4ejPiWeafMWDg7otF+pnX5NE/8v/rX6ICJA==", + "peer": true, + "dependencies": { + "expect": "^26.6.1", + "jest-matcher-utils": "^26.6.1" + }, + "engines": { + "node": ">=4.2.4", + "npm": ">=3.0.0" + }, + "peerDependencies": { + "rxjs": "6.x" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -3648,6 +4743,18 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3697,6 +4804,15 @@ "vscode-textmate": "5.2.0" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -3715,6 +4831,27 @@ "node": ">=0.10.0" } }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "peer": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/starknet": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/starknet/-/starknet-4.17.1.tgz", @@ -3733,6 +4870,14 @@ "url-join": "^4.0.1" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3766,7 +4911,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3802,6 +4946,18 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "peer": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -3902,6 +5058,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typedarray-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", + "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/typedoc-default-themes": { "version": "0.12.10", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", @@ -4016,6 +5191,11 @@ "which-typed-array": "^1.1.2" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -4135,6 +5315,15 @@ } } }, + "node_modules/xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", + "peer": true, + "dependencies": { + "cookiejar": "^2.1.1" + } + }, "node_modules/xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", @@ -4175,6 +5364,90 @@ } }, "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "peer": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "peer": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "peer": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "peer": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "peer": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "peer": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "@babel/runtime": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", @@ -4193,9 +5466,9 @@ } }, "@defillama/sdk": { - "version": "3.0.28", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.28.tgz", - "integrity": "sha512-OZSDraOb5YH1ECEAJYoihwOtm+73p00bdS0JC30W4DqbapgUiRorPPtssQU2pwdJyswXylv/S28m2vhgiBchFA==", + "version": "3.0.29", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.29.tgz", + "integrity": "sha512-CjkFIiDZheHySQ25np3CVyT7nHOCnvSgRstSd66nIHKuvoAVTrFMV0FpZ3lNKtVGdS7JKtqE1GCOj7mJrb818Q==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4590,6 +5863,91 @@ "@ethersproject/strings": "^5.7.0" } }, + "@hover-labs/kolibri-js": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@hover-labs/kolibri-js/-/kolibri-js-4.1.3.tgz", + "integrity": "sha512-ZmW4x+7XptaQnE5nw3AJU7L5AHxHE/E0Qy0rWKjd23MM/V6vd2CODbR9UC0Rh1dVmWioprj0KbTEqg499OM7ow==", + "requires": { + "@taquito/signer": "^12.0.2", + "@taquito/taquito": "^12.0.2", + "@temple-wallet/dapp": "^5.0.2", + "axios": "^0.21.0", + "bignumber.js": "^9.0.1", + "blakejs": "^1.1.1", + "bs58check": "^2.1.2", + "decimal.js": "^10.3.1", + "lodash": "^4.17.21" + }, + "dependencies": { + "@taquito/http-utils": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", + "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", + "requires": { + "axios": "^0.26.0" + }, + "dependencies": { + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "requires": { + "follow-redirects": "^1.14.8" + } + } + } + }, + "@taquito/michel-codec": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", + "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==" + }, + "@taquito/michelson-encoder": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", + "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", + "requires": { + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "fast-json-stable-stringify": "^2.1.0" + } + }, + "@taquito/rpc": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", + "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", + "requires": { + "@taquito/http-utils": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2" + } + }, + "@taquito/taquito": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", + "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", + "requires": { + "@taquito/http-utils": "^12.1.1", + "@taquito/local-forging": "^12.1.1", + "@taquito/michel-codec": "^12.1.1", + "@taquito/michelson-encoder": "^12.1.1", + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "rxjs": "^6.6.3" + } + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -4613,6 +5971,19 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -5028,17 +6399,378 @@ } }, "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "typedoc": { + "version": "0.20.37", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", + "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", + "peer": true, + "requires": { + "colors": "^1.4.0", + "fs-extra": "^9.1.0", + "handlebars": "^4.7.7", + "lodash": "^4.17.21", + "lunr": "^2.3.9", + "marked": "~2.0.3", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "shiki": "^0.9.3", + "typedoc-default-themes": "^0.12.10" + } + }, + "typedoc-plugin-cname": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", + "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", + "requires": {} + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "peer": true + } + } + }, + "@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "requires": { + "@stablelib/int": "^1.0.1" + } + }, + "@stablelib/blake2b": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/blake2b/-/blake2b-1.0.1.tgz", + "integrity": "sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/bytes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", + "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" + }, + "@stablelib/constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", + "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" + }, + "@stablelib/ed25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", + "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", + "requires": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + }, + "@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + }, + "@stablelib/keyagreement": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", + "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", + "requires": { + "@stablelib/bytes": "^1.0.1" + } + }, + "@stablelib/nacl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@stablelib/nacl/-/nacl-1.0.4.tgz", + "integrity": "sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==", + "requires": { + "@stablelib/poly1305": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1", + "@stablelib/x25519": "^1.0.3", + "@stablelib/xsalsa20": "^1.0.2" + } + }, + "@stablelib/poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "requires": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/salsa20": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/salsa20/-/salsa20-1.0.2.tgz", + "integrity": "sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + }, + "@stablelib/x25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", + "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", + "requires": { + "@stablelib/keyagreement": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/xsalsa20": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/xsalsa20/-/xsalsa20-1.0.2.tgz", + "integrity": "sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/salsa20": "^1.0.2", + "@stablelib/wipe": "^1.0.1" + } + }, + "@supercharge/promise-pool": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", + "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==" + }, + "@taquito/http-utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-10.2.1.tgz", + "integrity": "sha512-RZmGxJFllTHC5LuxrPcVQoH/MpDvQehLjE1czSmL2Dz1VZlzI4Q6Ie+pG5nHQODRPqE8ABi/2aHAGGYMQWqKZg==", + "peer": true, + "requires": { + "xhr2-cookies": "^1.1.0" + } + }, + "@taquito/local-forging": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-12.1.1.tgz", + "integrity": "sha512-SUA1YYRIpEGsTy5OfUIgIem0k/QsAzGjDCvf/wl5XV/fVBkP/+GN7uvYoqgJblCmsgtsMBhJFtXgs+D6bjGexg==", + "requires": { + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2" + } + }, + "@taquito/michel-codec": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-10.2.1.tgz", + "integrity": "sha512-VSHELyuiwso1qCpAEZkH7JdDlZdHxTjyvZcBsfnfpbdpCrAUpCB48P4NZOnvZ58SYt9VS1bNAa5GRvQyOnNvMQ==", + "peer": true + }, + "@taquito/michelson-encoder": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-10.2.1.tgz", + "integrity": "sha512-HYCtDGCWtyCgOQjmxYLYw5ftejG0FUfAW1FzZWIW6w2ars1TInSbLNeVRZs+EmbD3L8wOaxaOlgdsMoDnGqM/g==", + "peer": true, + "requires": { + "@taquito/rpc": "^10.2.1", + "@taquito/utils": "^10.2.1", + "bignumber.js": "^9.0.1", + "fast-json-stable-stringify": "^2.1.0" + }, + "dependencies": { + "@taquito/utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", + "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", + "peer": true, + "requires": { + "blakejs": "^1.1.0", + "bs58check": "^2.1.2", + "buffer": "^6.0.3" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "peer": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "peer": true + } + } + }, + "@taquito/rpc": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-10.2.1.tgz", + "integrity": "sha512-Vg80sGLICkEKGls+7YEd0uFpsp8dwx2kNeGgCbpNROIs0S6Slsd0UfDlaZGlllWeUAKr5r6baexYrTKFuWs/UA==", + "peer": true, + "requires": { + "@taquito/http-utils": "^10.2.1", + "bignumber.js": "^9.0.1", + "lodash": "^4.17.21" + } + }, + "@taquito/signer": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-12.1.1.tgz", + "integrity": "sha512-TONxIbLs7bgmB3TTzcTOYzL8pFLZFBujHDHjB5QHJY5DT+lpByjYZHk2Frqjcy3NDvENVLU6uXeCeba2LK8kwA==", + "requires": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.2", + "@stablelib/nacl": "^1.0.3", + "@taquito/taquito": "^12.1.1", + "@taquito/utils": "^12.1.1", + "elliptic": "^6.5.4", + "pbkdf2": "^3.1.2", + "typedarray-to-buffer": "^4.0.0" + }, + "dependencies": { + "@taquito/http-utils": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", + "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", + "requires": { + "axios": "^0.26.0" + } + }, + "@taquito/michel-codec": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", + "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==" + }, + "@taquito/michelson-encoder": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", + "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", + "requires": { + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "fast-json-stable-stringify": "^2.1.0" + } + }, + "@taquito/rpc": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", + "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", + "requires": { + "@taquito/http-utils": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2" + } + }, + "@taquito/taquito": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", + "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", + "requires": { + "@taquito/http-utils": "^12.1.1", + "@taquito/local-forging": "^12.1.1", + "@taquito/michel-codec": "^12.1.1", + "@taquito/michelson-encoder": "^12.1.1", + "@taquito/rpc": "^12.1.1", + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2", + "rxjs": "^6.6.3" + } + }, + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.14.8" + } + } + } + }, + "@taquito/taquito": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-10.2.1.tgz", + "integrity": "sha512-ay61aKhFQPnYGu5d9jqEvaZE0EzE6tO9MD+5vOu6/NFVThBd7ysOQS1PB0VprL9SupM1NVDFnEJ8GtE8SYgk8g==", + "peer": true, + "requires": { + "@taquito/http-utils": "^10.2.1", + "@taquito/michel-codec": "^10.2.1", + "@taquito/michelson-encoder": "^10.2.1", + "@taquito/rpc": "^10.2.1", + "@taquito/utils": "^10.2.1", + "bignumber.js": "^9.0.1", + "rx-sandbox": "^1.0.4", + "rxjs": "^6.6.3" + }, + "dependencies": { + "@taquito/utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", + "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", + "peer": true, + "requires": { + "blakejs": "^1.1.0", + "bs58check": "^2.1.2", + "buffer": "^6.0.3" } }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "peer": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -5047,45 +6779,49 @@ "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "typedoc": { - "version": "0.20.37", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", - "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", - "peer": true, + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "peer": true + } + } + }, + "@taquito/utils": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-12.1.1.tgz", + "integrity": "sha512-GxNSBrA02vwhy56ayWB49VZficB+j2oyhPdlsRb2CguephmyEYnlUaNV27ILa6dPDW+zv6+QWQj6GyqLBRpIlA==", + "requires": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.2", + "@types/bs58check": "^2.1.0", + "blakejs": "^1.1.1", + "bs58check": "^2.1.2", + "buffer": "^6.0.3", + "elliptic": "^6.5.4", + "typedarray-to-buffer": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { - "colors": "^1.4.0", - "fs-extra": "^9.1.0", - "handlebars": "^4.7.7", - "lodash": "^4.17.21", - "lunr": "^2.3.9", - "marked": "~2.0.3", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "shiki": "^0.9.3", - "typedoc-default-themes": "^0.12.10" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "typedoc-plugin-cname": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", - "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", - "requires": {} - }, - "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", - "peer": true + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" } } }, - "@supercharge/promise-pool": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", - "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==" + "@temple-wallet/dapp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@temple-wallet/dapp/-/dapp-5.0.2.tgz", + "integrity": "sha512-IIeHTowHXOp7/JnttfzMyCJjFWwhqOauDN7S2vU0GzHkpT5gH6FBXqB3kvZUyPfoxY0PXuXg+HKh++qABx+g9A==", + "requires": { + "nanoid": "^3.1.25" + } }, "@tsconfig/node10": { "version": "1.0.9", @@ -5129,6 +6865,14 @@ "@types/node": "*" } }, + "@types/bs58check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", + "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", + "requires": { + "@types/node": "*" + } + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -5137,6 +6881,30 @@ "@types/node": "*" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "peer": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "peer": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, "@types/node": { "version": "18.11.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", @@ -5148,6 +6916,12 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "peer": true + }, "@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", @@ -5156,6 +6930,21 @@ "@types/node": "*" } }, + "@types/yargs": { + "version": "15.0.15", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", + "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "peer": true + }, "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -5205,14 +6994,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -5356,6 +7143,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "peer": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -5369,6 +7165,16 @@ "base-x": "^3.0.2" } }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, "buffer": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", @@ -5423,17 +7229,24 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -5441,8 +7254,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colors": { "version": "1.4.0", @@ -5468,6 +7280,37 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "peer": true + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -5506,6 +7349,11 @@ "ms": "2.1.2" } }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5533,6 +7381,12 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "peer": true + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -5787,6 +7641,20 @@ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, "extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -5806,8 +7674,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -5843,6 +7710,15 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "peer": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "find": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", @@ -6035,8 +7911,7 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-symbols": { "version": "1.0.3", @@ -6051,6 +7926,16 @@ "has-symbols": "^1.0.2" } }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -6184,6 +8069,12 @@ "is-extglob": "^2.1.1" } }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "peer": true + }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -6260,6 +8151,59 @@ } } }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "peer": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "peer": true + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "peer": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "peer": true + }, "jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -6286,6 +8230,12 @@ "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -6424,6 +8374,26 @@ "integrity": "sha512-BJXxkuIfJchcXOJWTT2DOL+yFWifFv2yGYOUzvXg8Qz610QKw+sHCvTMYwA+qWGhlA2uivBezChZ/pBy1tWdkQ==", "peer": true }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "peer": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6472,6 +8442,11 @@ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6584,12 +8559,42 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "peer": true }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "peer": true + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "5.0.1", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -6612,6 +8617,22 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "peer": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -6664,6 +8685,15 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "rpc-websockets": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", @@ -6699,6 +8729,31 @@ "queue-microtask": "^1.2.2" } }, + "rx-sandbox": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rx-sandbox/-/rx-sandbox-1.0.4.tgz", + "integrity": "sha512-+/9MHDYNoF9ca/2RR+L2LloXXeQyIR3k/wjK03IicrxxlbkhmKF4ejPiWeafMWDg7otF+pnX5NE/8v/rX6ICJA==", + "peer": true, + "requires": { + "expect": "^26.6.1", + "jest-matcher-utils": "^26.6.1" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6714,6 +8769,15 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6751,6 +8815,12 @@ "vscode-textmate": "5.2.0" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true + }, "snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -6766,6 +8836,23 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "peer": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "peer": true + } + } + }, "starknet": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/starknet/-/starknet-4.17.1.tgz", @@ -6784,6 +8871,14 @@ "url-join": "^4.0.1" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -6808,7 +8903,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -6835,6 +8929,15 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "peer": true, + "requires": { + "is-number": "^7.0.0" + } + }, "toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -6901,6 +9004,11 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "typedarray-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", + "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==" + }, "typedoc-default-themes": { "version": "0.12.10", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", @@ -6987,6 +9095,11 @@ "which-typed-array": "^1.1.2" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -7074,6 +9187,15 @@ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "requires": {} }, + "xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", + "peer": true, + "requires": { + "cookiejar": "^2.1.1" + } + }, "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", diff --git a/projects/idle/index.js b/projects/idle/index.js index ec69a608ed..9e05ff3b5b 100644 --- a/projects/idle/index.js +++ b/projects/idle/index.js @@ -25,7 +25,8 @@ const contracts = { '0x3391bc034f2935ef0e1e41619445f998b2680d35', // idleUSDCSafe '0xcDdB1Bceb7a1979C6caa0229820707429dd3Ec6C', // idleUSDCSafeV3 '0x28fAc5334C9f7262b3A3Fe707e250E01053e07b5', // idleUSDTSafe - '0x42740698959761baf1b06baa51efbd88cb1d862b' // idleUSDTSafeV3 + '0x42740698959761baf1b06baa51efbd88cb1d862b', // idleUSDTSafeV3 + '0xDc7777C771a6e4B3A82830781bDDe4DBC78f320e' // idleUSDCBB ], polygon:[ "0x8a999F5A3546F8243205b2c0eCb0627cC10003ab", // idleDAIYield @@ -58,6 +59,9 @@ const trancheContracts = [ "0xf6B692CC9A5421E4C66D32511d65F94c64fbD043", // IdleCDO_ribbon_wintermute_USDC "0xc8c64CC8c15D9aa1F4dD40933f3eF742A7c62478", // IdleCDO_ribbon_DAI "0x1f5A97fB665e295303D2F7215bA2160cc5313c8E", // IdleCDO_truefi_USDC + "0xf615a552c000B114DdAa09636BBF4205De49333c", // IdleCDO_Euler_USDC + "0x860B1d25903DbDFFEC579d30012dA268aEB0d621", // IdleCDO_Euler_USDT + "0xec964d06cD71a68531fC9D083a142C48441F391C", // IdleCDO_Euler_WETH ]; const trancheTokenUnderlying = { @@ -75,6 +79,8 @@ const trancheTokenUnderlying = { "0x1a7e4e63778b4f12a199c062f3efdd288afcbce8":"0x1a7e4e63778b4f12a199c062f3efdd288afcbce8", // AGEUR "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0":"0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", // MATIC "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC + "0xdac17f958d2ee523a2206206994597c13d831ec7":"0xdac17f958d2ee523a2206206994597c13d831ec7", // USDT + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH }; function chainTvl(chain){ From 314158a0ff61ba9dd52f9bc4a7da7124298e9116 Mon Sep 17 00:00:00 2001 From: Samster91 Date: Mon, 30 Jan 2023 23:50:44 +0100 Subject: [PATCH 0002/1354] FIX: updated package-lock.json --- package-lock.json | 2556 ++++----------------------------------------- 1 file changed, 217 insertions(+), 2339 deletions(-) diff --git a/package-lock.json b/package-lock.json index 298fa3d761..fc4f64397a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "license": "ISC", "dependencies": { "@defillama/sdk": "latest", - "@hover-labs/kolibri-js": "^4.1.3", "@project-serum/anchor": "^0.25.0", "@solana/web3.js": "^1.36.0", "@solendprotocol/solend-sdk": "^0.6.2", @@ -39,112 +38,6 @@ "ts-node": "^10.8.1" } }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "peer": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/runtime": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", @@ -169,9 +62,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "3.0.29", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.29.tgz", - "integrity": "sha512-CjkFIiDZheHySQ25np3CVyT7nHOCnvSgRstSd66nIHKuvoAVTrFMV0FpZ3lNKtVGdS7JKtqE1GCOj7mJrb818Q==", + "version": "3.0.28", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.28.tgz", + "integrity": "sha512-OZSDraOb5YH1ECEAJYoihwOtm+73p00bdS0JC30W4DqbapgUiRorPPtssQU2pwdJyswXylv/S28m2vhgiBchFA==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -872,103 +765,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@hover-labs/kolibri-js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hover-labs/kolibri-js/-/kolibri-js-4.1.3.tgz", - "integrity": "sha512-ZmW4x+7XptaQnE5nw3AJU7L5AHxHE/E0Qy0rWKjd23MM/V6vd2CODbR9UC0Rh1dVmWioprj0KbTEqg499OM7ow==", - "dependencies": { - "@taquito/signer": "^12.0.2", - "@taquito/taquito": "^12.0.2", - "@temple-wallet/dapp": "^5.0.2", - "axios": "^0.21.0", - "bignumber.js": "^9.0.1", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "decimal.js": "^10.3.1", - "lodash": "^4.17.21" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "dependencies": { - "axios": "^0.26.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/http-utils/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "dependencies": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "hasInstallScript": true, - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -1002,22 +798,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -1660,695 +1440,152 @@ "node": ">=4.2.0" } }, - "node_modules/@stablelib/binary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", - "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", - "dependencies": { - "@stablelib/int": "^1.0.1" - } - }, - "node_modules/@stablelib/blake2b": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/blake2b/-/blake2b-1.0.1.tgz", - "integrity": "sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" + "node_modules/@supercharge/promise-pool": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", + "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==", + "engines": { + "node": ">=8" } }, - "node_modules/@stablelib/bytes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", - "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true }, - "node_modules/@stablelib/constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", - "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true }, - "node_modules/@stablelib/ed25519": { + "node_modules/@tsconfig/node14": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", - "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", - "dependencies": { - "@stablelib/random": "^1.0.2", - "@stablelib/sha512": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", - "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true }, - "node_modules/@stablelib/int": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", - "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true }, - "node_modules/@stablelib/keyagreement": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", - "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", + "node_modules/@types/async-retry": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.5.tgz", + "integrity": "sha512-YrdjSD+yQv7h6d5Ip+PMxh3H6ZxKyQk0Ts+PvaNRInxneG9PFVZjFg77ILAN+N6qYf7g4giSJ1l+ZjQ1zeegvA==", + "dev": true, "dependencies": { - "@stablelib/bytes": "^1.0.1" + "@types/retry": "*" } }, - "node_modules/@stablelib/nacl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@stablelib/nacl/-/nacl-1.0.4.tgz", - "integrity": "sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==", + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, "dependencies": { - "@stablelib/poly1305": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1", - "@stablelib/x25519": "^1.0.3", - "@stablelib/xsalsa20": "^1.0.2" + "@types/node": "*" } }, - "node_modules/@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" + "@types/node": "*" } }, - "node_modules/@stablelib/random": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", - "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, - "node_modules/@stablelib/salsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/salsa20/-/salsa20-1.0.2.tgz", - "integrity": "sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true }, - "node_modules/@stablelib/sha512": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", - "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" + "@types/node": "*" } }, - "node_modules/@stablelib/wipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", - "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" - }, - "node_modules/@stablelib/x25519": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", - "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", - "dependencies": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1" + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@stablelib/xsalsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/xsalsa20/-/xsalsa20-1.0.2.tgz", - "integrity": "sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/salsa20": "^1.0.2", - "@stablelib/wipe": "^1.0.1" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@supercharge/promise-pool": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", - "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==", + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/@taquito/http-utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-10.2.1.tgz", - "integrity": "sha512-RZmGxJFllTHC5LuxrPcVQoH/MpDvQehLjE1czSmL2Dz1VZlzI4Q6Ie+pG5nHQODRPqE8ABi/2aHAGGYMQWqKZg==", - "peer": true, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dependencies": { - "xhr2-cookies": "^1.1.0" + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 8.0.0" } }, - "node_modules/@taquito/local-forging": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-12.1.1.tgz", - "integrity": "sha512-SUA1YYRIpEGsTy5OfUIgIem0k/QsAzGjDCvf/wl5XV/fVBkP/+GN7uvYoqgJblCmsgtsMBhJFtXgs+D6bjGexg==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@taquito/michel-codec": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-10.2.1.tgz", - "integrity": "sha512-VSHELyuiwso1qCpAEZkH7JdDlZdHxTjyvZcBsfnfpbdpCrAUpCB48P4NZOnvZ58SYt9VS1bNAa5GRvQyOnNvMQ==", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/michelson-encoder": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-10.2.1.tgz", - "integrity": "sha512-HYCtDGCWtyCgOQjmxYLYw5ftejG0FUfAW1FzZWIW6w2ars1TInSbLNeVRZs+EmbD3L8wOaxaOlgdsMoDnGqM/g==", - "peer": true, - "dependencies": { - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "fast-json-stable-stringify": "^2.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/michelson-encoder/node_modules/@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, - "dependencies": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/michelson-encoder/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@taquito/michelson-encoder/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/@taquito/rpc": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-10.2.1.tgz", - "integrity": "sha512-Vg80sGLICkEKGls+7YEd0uFpsp8dwx2kNeGgCbpNROIs0S6Slsd0UfDlaZGlllWeUAKr5r6baexYrTKFuWs/UA==", - "peer": true, - "dependencies": { - "@taquito/http-utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-12.1.1.tgz", - "integrity": "sha512-TONxIbLs7bgmB3TTzcTOYzL8pFLZFBujHDHjB5QHJY5DT+lpByjYZHk2Frqjcy3NDvENVLU6uXeCeba2LK8kwA==", - "dependencies": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@stablelib/nacl": "^1.0.3", - "@taquito/taquito": "^12.1.1", - "@taquito/utils": "^12.1.1", - "elliptic": "^6.5.4", - "pbkdf2": "^3.1.2", - "typedarray-to-buffer": "^4.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "dependencies": { - "axios": "^0.26.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "dependencies": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "hasInstallScript": true, - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/@taquito/taquito": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-10.2.1.tgz", - "integrity": "sha512-ay61aKhFQPnYGu5d9jqEvaZE0EzE6tO9MD+5vOu6/NFVThBd7ysOQS1PB0VprL9SupM1NVDFnEJ8GtE8SYgk8g==", - "hasInstallScript": true, - "peer": true, - "dependencies": { - "@taquito/http-utils": "^10.2.1", - "@taquito/michel-codec": "^10.2.1", - "@taquito/michelson-encoder": "^10.2.1", - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "rx-sandbox": "^1.0.4", - "rxjs": "^6.6.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/taquito/node_modules/@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, - "dependencies": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/taquito/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@taquito/taquito/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/@taquito/utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-12.1.1.tgz", - "integrity": "sha512-GxNSBrA02vwhy56ayWB49VZficB+j2oyhPdlsRb2CguephmyEYnlUaNV27ILa6dPDW+zv6+QWQj6GyqLBRpIlA==", - "dependencies": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@types/bs58check": "^2.1.0", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "buffer": "^6.0.3", - "elliptic": "^6.5.4", - "typedarray-to-buffer": "^4.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@taquito/utils/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/@temple-wallet/dapp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@temple-wallet/dapp/-/dapp-5.0.2.tgz", - "integrity": "sha512-IIeHTowHXOp7/JnttfzMyCJjFWwhqOauDN7S2vU0GzHkpT5gH6FBXqB3kvZUyPfoxY0PXuXg+HKh++qABx+g9A==", - "dependencies": { - "nanoid": "^3.1.25" - }, - "peerDependencies": { - "@taquito/taquito": "^10.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/async-retry": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.5.tgz", - "integrity": "sha512-YrdjSD+yQv7h6d5Ip+PMxh3H6ZxKyQk0Ts+PvaNRInxneG9PFVZjFg77ILAN+N6qYf7g4giSJ1l+ZjQ1zeegvA==", - "dev": true, - "dependencies": { - "@types/retry": "*" - } - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/bs58check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", - "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "peer": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "peer": true - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "peer": true - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" - }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -2357,6 +1594,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2537,18 +1775,6 @@ "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "peer": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -2562,16 +1788,6 @@ "base-x": "^3.0.2" } }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, "node_modules/buffer": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", @@ -2668,30 +1884,23 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2702,7 +1911,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", @@ -2734,37 +1944,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "peer": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -2820,11 +1999,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2867,15 +2041,6 @@ "node": ">=0.3.1" } }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "peer": true, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -3206,23 +2371,6 @@ "node": ">=0.4.x" } }, - "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -3251,7 +2399,8 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -3290,18 +2439,6 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", @@ -3563,6 +2700,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3592,19 +2730,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -3783,15 +2908,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -3886,74 +3002,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "peer": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "peer": true, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -3987,12 +3035,6 @@ "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4160,29 +3202,6 @@ "node": ">= 8.16.2" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "peer": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4243,17 +3262,6 @@ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4409,33 +3417,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "peer": true }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4445,21 +3426,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -4503,25 +3469,6 @@ } ] }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "peer": true - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -4602,15 +3549,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/rpc-websockets": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", @@ -4681,39 +3619,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rx-sandbox": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/rx-sandbox/-/rx-sandbox-1.0.4.tgz", - "integrity": "sha512-+/9MHDYNoF9ca/2RR+L2LloXXeQyIR3k/wjK03IicrxxlbkhmKF4ejPiWeafMWDg7otF+pnX5NE/8v/rX6ICJA==", - "peer": true, - "dependencies": { - "expect": "^26.6.1", - "jest-matcher-utils": "^26.6.1" - }, - "engines": { - "node": ">=4.2.4", - "npm": ">=3.0.0" - }, - "peerDependencies": { - "rxjs": "6.x" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4743,18 +3648,6 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4804,15 +3697,6 @@ "vscode-textmate": "5.2.0" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -4831,27 +3715,6 @@ "node": ">=0.10.0" } }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "peer": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/starknet": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/starknet/-/starknet-4.17.1.tgz", @@ -4870,14 +3733,6 @@ "url-join": "^4.0.1" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4911,6 +3766,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4946,18 +3802,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -5058,25 +3902,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", - "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/typedoc-default-themes": { "version": "0.12.10", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", @@ -5191,11 +4016,6 @@ "which-typed-array": "^1.1.2" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "node_modules/uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -5315,15 +4135,6 @@ } } }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "peer": true, - "dependencies": { - "cookiejar": "^2.1.1" - } - }, "node_modules/xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", @@ -5343,111 +4154,27 @@ }, "node_modules/yn": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "peer": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "peer": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "peer": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { "@babel/runtime": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", @@ -5466,9 +4193,9 @@ } }, "@defillama/sdk": { - "version": "3.0.29", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.29.tgz", - "integrity": "sha512-CjkFIiDZheHySQ25np3CVyT7nHOCnvSgRstSd66nIHKuvoAVTrFMV0FpZ3lNKtVGdS7JKtqE1GCOj7mJrb818Q==", + "version": "3.0.28", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-3.0.28.tgz", + "integrity": "sha512-OZSDraOb5YH1ECEAJYoihwOtm+73p00bdS0JC30W4DqbapgUiRorPPtssQU2pwdJyswXylv/S28m2vhgiBchFA==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -5863,91 +4590,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "@hover-labs/kolibri-js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hover-labs/kolibri-js/-/kolibri-js-4.1.3.tgz", - "integrity": "sha512-ZmW4x+7XptaQnE5nw3AJU7L5AHxHE/E0Qy0rWKjd23MM/V6vd2CODbR9UC0Rh1dVmWioprj0KbTEqg499OM7ow==", - "requires": { - "@taquito/signer": "^12.0.2", - "@taquito/taquito": "^12.0.2", - "@temple-wallet/dapp": "^5.0.2", - "axios": "^0.21.0", - "bignumber.js": "^9.0.1", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "decimal.js": "^10.3.1", - "lodash": "^4.17.21" - }, - "dependencies": { - "@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "requires": { - "axios": "^0.26.0" - }, - "dependencies": { - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - } - } - }, - "@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==" - }, - "@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "requires": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - } - }, - "@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - } - }, - "@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - } - } - }, "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -5971,19 +4613,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - } - }, "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -6377,428 +5006,35 @@ "typedoc-plugin-cname": "^1.0.1" }, "dependencies": { - "@project-serum/anchor": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.24.2.tgz", - "integrity": "sha512-0/718g8/DnEuwAidUwh5wLYphUYXhUbiClkuRNhvNoa+1Y8a4g2tJyxoae+emV+PG/Gikd/QUBNMkIcimiIRTA==", - "requires": { - "@project-serum/borsh": "^0.2.5", - "@solana/web3.js": "^1.36.0", - "base64-js": "^1.5.1", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^5.3.1", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "js-sha256": "^0.9.0", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "toml": "^3.0.0" - } - }, - "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "requires": { - "follow-redirects": "^1.14.4" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "typedoc": { - "version": "0.20.37", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", - "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", - "peer": true, - "requires": { - "colors": "^1.4.0", - "fs-extra": "^9.1.0", - "handlebars": "^4.7.7", - "lodash": "^4.17.21", - "lunr": "^2.3.9", - "marked": "~2.0.3", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "shiki": "^0.9.3", - "typedoc-default-themes": "^0.12.10" - } - }, - "typedoc-plugin-cname": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", - "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", - "requires": {} - }, - "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", - "peer": true - } - } - }, - "@stablelib/binary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", - "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", - "requires": { - "@stablelib/int": "^1.0.1" - } - }, - "@stablelib/blake2b": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/blake2b/-/blake2b-1.0.1.tgz", - "integrity": "sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/bytes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", - "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" - }, - "@stablelib/constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", - "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" - }, - "@stablelib/ed25519": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", - "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", - "requires": { - "@stablelib/random": "^1.0.2", - "@stablelib/sha512": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", - "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" - }, - "@stablelib/int": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", - "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" - }, - "@stablelib/keyagreement": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", - "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", - "requires": { - "@stablelib/bytes": "^1.0.1" - } - }, - "@stablelib/nacl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@stablelib/nacl/-/nacl-1.0.4.tgz", - "integrity": "sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==", - "requires": { - "@stablelib/poly1305": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1", - "@stablelib/x25519": "^1.0.3", - "@stablelib/xsalsa20": "^1.0.2" - } - }, - "@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", - "requires": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/random": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", - "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/salsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/salsa20/-/salsa20-1.0.2.tgz", - "integrity": "sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/sha512": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", - "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/wipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", - "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" - }, - "@stablelib/x25519": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", - "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", - "requires": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/xsalsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/xsalsa20/-/xsalsa20-1.0.2.tgz", - "integrity": "sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/salsa20": "^1.0.2", - "@stablelib/wipe": "^1.0.1" - } - }, - "@supercharge/promise-pool": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", - "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==" - }, - "@taquito/http-utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-10.2.1.tgz", - "integrity": "sha512-RZmGxJFllTHC5LuxrPcVQoH/MpDvQehLjE1czSmL2Dz1VZlzI4Q6Ie+pG5nHQODRPqE8ABi/2aHAGGYMQWqKZg==", - "peer": true, - "requires": { - "xhr2-cookies": "^1.1.0" - } - }, - "@taquito/local-forging": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-12.1.1.tgz", - "integrity": "sha512-SUA1YYRIpEGsTy5OfUIgIem0k/QsAzGjDCvf/wl5XV/fVBkP/+GN7uvYoqgJblCmsgtsMBhJFtXgs+D6bjGexg==", - "requires": { - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - } - }, - "@taquito/michel-codec": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-10.2.1.tgz", - "integrity": "sha512-VSHELyuiwso1qCpAEZkH7JdDlZdHxTjyvZcBsfnfpbdpCrAUpCB48P4NZOnvZ58SYt9VS1bNAa5GRvQyOnNvMQ==", - "peer": true - }, - "@taquito/michelson-encoder": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-10.2.1.tgz", - "integrity": "sha512-HYCtDGCWtyCgOQjmxYLYw5ftejG0FUfAW1FzZWIW6w2ars1TInSbLNeVRZs+EmbD3L8wOaxaOlgdsMoDnGqM/g==", - "peer": true, - "requires": { - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "fast-json-stable-stringify": "^2.1.0" - }, - "dependencies": { - "@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, - "requires": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "peer": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "peer": true - } - } - }, - "@taquito/rpc": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-10.2.1.tgz", - "integrity": "sha512-Vg80sGLICkEKGls+7YEd0uFpsp8dwx2kNeGgCbpNROIs0S6Slsd0UfDlaZGlllWeUAKr5r6baexYrTKFuWs/UA==", - "peer": true, - "requires": { - "@taquito/http-utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "lodash": "^4.17.21" - } - }, - "@taquito/signer": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-12.1.1.tgz", - "integrity": "sha512-TONxIbLs7bgmB3TTzcTOYzL8pFLZFBujHDHjB5QHJY5DT+lpByjYZHk2Frqjcy3NDvENVLU6uXeCeba2LK8kwA==", - "requires": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@stablelib/nacl": "^1.0.3", - "@taquito/taquito": "^12.1.1", - "@taquito/utils": "^12.1.1", - "elliptic": "^6.5.4", - "pbkdf2": "^3.1.2", - "typedarray-to-buffer": "^4.0.0" - }, - "dependencies": { - "@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "requires": { - "axios": "^0.26.0" - } - }, - "@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==" - }, - "@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "requires": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - } - }, - "@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - } - }, - "@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" - } - }, - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - } - } - }, - "@taquito/taquito": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-10.2.1.tgz", - "integrity": "sha512-ay61aKhFQPnYGu5d9jqEvaZE0EzE6tO9MD+5vOu6/NFVThBd7ysOQS1PB0VprL9SupM1NVDFnEJ8GtE8SYgk8g==", - "peer": true, - "requires": { - "@taquito/http-utils": "^10.2.1", - "@taquito/michel-codec": "^10.2.1", - "@taquito/michelson-encoder": "^10.2.1", - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "rx-sandbox": "^1.0.4", - "rxjs": "^6.6.3" - }, - "dependencies": { - "@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, + "@project-serum/anchor": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.24.2.tgz", + "integrity": "sha512-0/718g8/DnEuwAidUwh5wLYphUYXhUbiClkuRNhvNoa+1Y8a4g2tJyxoae+emV+PG/Gikd/QUBNMkIcimiIRTA==", "requires": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" + "@project-serum/borsh": "^0.2.5", + "@solana/web3.js": "^1.36.0", + "base64-js": "^1.5.1", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^5.3.1", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "js-sha256": "^0.9.0", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "toml": "^3.0.0" } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "peer": true, + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "follow-redirects": "^1.14.4" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "peer": true - } - } - }, - "@taquito/utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-12.1.1.tgz", - "integrity": "sha512-GxNSBrA02vwhy56ayWB49VZficB+j2oyhPdlsRb2CguephmyEYnlUaNV27ILa6dPDW+zv6+QWQj6GyqLBRpIlA==", - "requires": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@types/bs58check": "^2.1.0", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "buffer": "^6.0.3", - "elliptic": "^6.5.4", - "typedarray-to-buffer": "^4.0.0" - }, - "dependencies": { "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -6812,16 +5048,44 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "typedoc": { + "version": "0.20.37", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", + "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", + "peer": true, + "requires": { + "colors": "^1.4.0", + "fs-extra": "^9.1.0", + "handlebars": "^4.7.7", + "lodash": "^4.17.21", + "lunr": "^2.3.9", + "marked": "~2.0.3", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "shiki": "^0.9.3", + "typedoc-default-themes": "^0.12.10" + } + }, + "typedoc-plugin-cname": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", + "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", + "requires": {} + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "peer": true } } }, - "@temple-wallet/dapp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@temple-wallet/dapp/-/dapp-5.0.2.tgz", - "integrity": "sha512-IIeHTowHXOp7/JnttfzMyCJjFWwhqOauDN7S2vU0GzHkpT5gH6FBXqB3kvZUyPfoxY0PXuXg+HKh++qABx+g9A==", - "requires": { - "nanoid": "^3.1.25" - } + "@supercharge/promise-pool": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", + "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==" }, "@tsconfig/node10": { "version": "1.0.9", @@ -6865,14 +5129,6 @@ "@types/node": "*" } }, - "@types/bs58check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", - "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", - "requires": { - "@types/node": "*" - } - }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -6881,30 +5137,6 @@ "@types/node": "*" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "peer": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "peer": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, "@types/node": { "version": "18.11.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", @@ -6916,12 +5148,6 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "peer": true - }, "@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", @@ -6930,21 +5156,6 @@ "@types/node": "*" } }, - "@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "peer": true - }, "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -6994,12 +5205,14 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -7143,15 +5356,6 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "peer": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -7165,16 +5369,6 @@ "base-x": "^3.0.2" } }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, "buffer": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", @@ -7229,24 +5423,17 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -7254,7 +5441,8 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "colors": { "version": "1.4.0", @@ -7280,37 +5468,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "peer": true - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -7349,11 +5506,6 @@ "ms": "2.1.2" } }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7381,12 +5533,6 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "peer": true - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -7641,20 +5787,6 @@ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" }, - "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - } - }, "extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -7674,7 +5806,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -7710,15 +5843,6 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "peer": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "find": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", @@ -7911,7 +6035,8 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "has-symbols": { "version": "1.0.3", @@ -7926,16 +6051,6 @@ "has-symbols": "^1.0.2" } }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -8069,12 +6184,6 @@ "is-extglob": "^2.1.1" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "peer": true - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -8151,59 +6260,6 @@ } } }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "peer": true - }, - "jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "peer": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "peer": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - } - }, - "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "peer": true - }, "jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -8230,12 +6286,6 @@ "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -8374,26 +6424,6 @@ "integrity": "sha512-BJXxkuIfJchcXOJWTT2DOL+yFWifFv2yGYOUzvXg8Qz610QKw+sHCvTMYwA+qWGhlA2uivBezChZ/pBy1tWdkQ==", "peer": true }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "peer": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -8442,11 +6472,6 @@ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -8559,42 +6584,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "peer": true }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "peer": true - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "5.0.1", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - } - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -8617,22 +6612,6 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "peer": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -8685,15 +6664,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "rpc-websockets": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", @@ -8729,31 +6699,6 @@ "queue-microtask": "^1.2.2" } }, - "rx-sandbox": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/rx-sandbox/-/rx-sandbox-1.0.4.tgz", - "integrity": "sha512-+/9MHDYNoF9ca/2RR+L2LloXXeQyIR3k/wjK03IicrxxlbkhmKF4ejPiWeafMWDg7otF+pnX5NE/8v/rX6ICJA==", - "peer": true, - "requires": { - "expect": "^26.6.1", - "jest-matcher-utils": "^26.6.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -8769,15 +6714,6 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8815,12 +6751,6 @@ "vscode-textmate": "5.2.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true - }, "snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -8836,23 +6766,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "peer": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "peer": true - } - } - }, "starknet": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/starknet/-/starknet-4.17.1.tgz", @@ -8871,14 +6784,6 @@ "url-join": "^4.0.1" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8903,6 +6808,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -8929,15 +6835,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "peer": true, - "requires": { - "is-number": "^7.0.0" - } - }, "toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -9004,11 +6901,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "typedarray-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", - "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==" - }, "typedoc-default-themes": { "version": "0.12.10", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", @@ -9095,11 +6987,6 @@ "which-typed-array": "^1.1.2" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -9187,15 +7074,6 @@ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "requires": {} }, - "xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "peer": true, - "requires": { - "cookiejar": "^2.1.1" - } - }, "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", @@ -9223,4 +7101,4 @@ "dev": true } } -} +} \ No newline at end of file From 7414834b88fe60c2b5460d0ed8a750a577926f0d Mon Sep 17 00:00:00 2001 From: Samster91 <37342443+samster91@users.noreply.github.com> Date: Mon, 30 Jan 2023 23:52:27 +0100 Subject: [PATCH 0003/1354] Update package-lock.json --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index fc4f64397a..d2fe5319c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7101,4 +7101,4 @@ "dev": true } } -} \ No newline at end of file +} From 853746f77b38f4fc8f30a71281d3ffc2bcdfd6f1 Mon Sep 17 00:00:00 2001 From: Samster91 Date: Fri, 3 Feb 2023 11:20:17 +0100 Subject: [PATCH 0004/1354] NEW: idleUSDT Junior tranche --- projects/idle/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/idle/index.js b/projects/idle/index.js index 9e05ff3b5b..761ec2708c 100644 --- a/projects/idle/index.js +++ b/projects/idle/index.js @@ -26,7 +26,8 @@ const contracts = { '0xcDdB1Bceb7a1979C6caa0229820707429dd3Ec6C', // idleUSDCSafeV3 '0x28fAc5334C9f7262b3A3Fe707e250E01053e07b5', // idleUSDTSafe '0x42740698959761baf1b06baa51efbd88cb1d862b', // idleUSDTSafeV3 - '0xDc7777C771a6e4B3A82830781bDDe4DBC78f320e' // idleUSDCBB + '0xDc7777C771a6e4B3A82830781bDDe4DBC78f320e', // idleUSDCBB + '0xfa3AfC9a194BaBD56e743fA3b7aA2CcbED3eAaad' // idleUSDTBB ], polygon:[ "0x8a999F5A3546F8243205b2c0eCb0627cC10003ab", // idleDAIYield From f3713db192bd392c579e3154b7f690e65eb83610 Mon Sep 17 00:00:00 2001 From: Samster91 Date: Wed, 22 Feb 2023 14:16:08 +0100 Subject: [PATCH 0005/1354] NEW: IdleCDO_euler_DAIStaking --- projects/idle/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/idle/index.js b/projects/idle/index.js index 761ec2708c..9159344579 100644 --- a/projects/idle/index.js +++ b/projects/idle/index.js @@ -60,9 +60,10 @@ const trancheContracts = [ "0xf6B692CC9A5421E4C66D32511d65F94c64fbD043", // IdleCDO_ribbon_wintermute_USDC "0xc8c64CC8c15D9aa1F4dD40933f3eF742A7c62478", // IdleCDO_ribbon_DAI "0x1f5A97fB665e295303D2F7215bA2160cc5313c8E", // IdleCDO_truefi_USDC - "0xf615a552c000B114DdAa09636BBF4205De49333c", // IdleCDO_Euler_USDC - "0x860B1d25903DbDFFEC579d30012dA268aEB0d621", // IdleCDO_Euler_USDT - "0xec964d06cD71a68531fC9D083a142C48441F391C", // IdleCDO_Euler_WETH + "0xf615a552c000B114DdAa09636BBF4205De49333c", // IdleCDO_Euler_USDCStaking + "0x860B1d25903DbDFFEC579d30012dA268aEB0d621", // IdleCDO_Euler_USDTStaking + "0xec964d06cD71a68531fC9D083a142C48441F391C", // IdleCDO_euler_WETHStaking + "0x264E1552Ee99f57a7D9E1bD1130a478266870C39", // IdleCDO_euler_DAIStaking ]; const trancheTokenUnderlying = { From da8f05246ef177fa9906ddd6da5bac3ae27156e2 Mon Sep 17 00:00:00 2001 From: tutacrypto Date: Thu, 2 Mar 2023 17:07:30 +0100 Subject: [PATCH 0006/1354] add Curve agEUR-EUROC AMO --- projects/angle/index.js | 98 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 91 insertions(+), 7 deletions(-) diff --git a/projects/angle/index.js b/projects/angle/index.js index 9dc6442b12..04ecc91094 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -84,6 +84,44 @@ async function tvl(chain, block) { assets.forEach(({ output }, i) => sdk.util.sumSingleBalance(balances, tokens[i].output, output) ); + + // AMOs + const EUROC = "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c"; + const curvePool = "0xBa3436Fd341F2C8A928452Db3C5A3670d1d5Cc73"; + const sdagEUREUROC = "0x63f222079608EEc2DDC7a9acdCD9344a21428Ce7"; + const cvxagEUREUROCstaker = "0xA91fccC1ec9d4A2271B7A86a7509Ca05057C1A98"; + const AngleagEUREUROCStaker = "0xC1e8Dba1cbF29f1CaA8343CAe96d5AdFD9bca736"; + // pool TVL + let agEURTVL = await sdk.api.erc20.balanceOf({ + owner: curvePool, + target: agEUR.contract, + block: block, + }); + let EUROCTVL = await sdk.api.erc20.balanceOf({ + owner: curvePool, + target: EUROC, + block: block, + }); + const totPoolTVL = agEURTVL.output / 10 ** 18 + EUROCTVL.output / 10 ** 6; + // Angle holdings of Curve agEUREUROC LP tokens (staked on Stake DAO and Convex) + let sdagEUREUROCTVL = await sdk.api.erc20.balanceOf({ + owner: AngleagEUREUROCStaker, + target: sdagEUREUROC, + block: block, + }); + let cvxagEUREUROCstakerTVL = await sdk.api.erc20.balanceOf({ + owner: AngleagEUREUROCStaker, + target: cvxagEUREUROCstaker, + block: block, + }); + const AnglePoolTVL = + (Number(sdagEUREUROCTVL.output) + Number(cvxagEUREUROCstakerTVL.output)) / + 10 ** 18; + let AngleagEURTVL = (AnglePoolTVL / totPoolTVL) * agEURTVL.output; + let AngleEUROCTVL = (AnglePoolTVL / totPoolTVL) * EUROCTVL.output; + + sdk.util.sumSingleBalance(balances, agEUR.contract, AngleagEURTVL); + sdk.util.sumSingleBalance(balances, EUROC, AngleEUROCTVL); } // Borrowing module @@ -91,6 +129,48 @@ async function tvl(chain, block) { return sumTokens2({ balances, chain, block, tokensAndOwners }); } +/* +async function amos(chain, block) { + const balances = {}; + const agEUR = "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8"; + const EUROC = "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c"; + const curvePool = "0xBa3436Fd341F2C8A928452Db3C5A3670d1d5Cc73"; + const sdagEUREUROC = "0x63f222079608EEc2DDC7a9acdCD9344a21428Ce7"; + const cvxagEUREUROCstaker = "0xA91fccC1ec9d4A2271B7A86a7509Ca05057C1A98"; + const AngleagEUREUROCStaker = "0xC1e8Dba1cbF29f1CaA8343CAe96d5AdFD9bca736"; + // pool TVL + let agEURTVL = await sdk.api.erc20.balanceOf({ + owner: curvePool, + target: agEUR, + block: block, + }); + let EUROCTVL = await sdk.api.erc20.balanceOf({ + owner: curvePool, + target: EUROC, + block: block, + }); + const totPoolTVL = agEURTVL.output / 10 ** 18 + EUROCTVL.output / 10 ** 6; + // our TVL + let sdagEUREUROCTVL = await sdk.api.erc20.balanceOf({ + owner: AngleagEUREUROCStaker, + target: sdagEUREUROC, + block: block, + }); + let cvxagEUREUROCstakerTVL = await sdk.api.erc20.balanceOf({ + owner: AngleagEUREUROCStaker, + target: cvxagEUREUROCstaker, + block: block, + }); + const AnglePoolTVL = + (Number(sdagEUREUROCTVL.output) + Number(cvxagEUREUROCstakerTVL.output)) / + 10 ** 18; + let AngleagEURTVL = (AnglePoolTVL / totPoolTVL) * agEURTVL.output; + let AngleEUROCTVL = (AnglePoolTVL / totPoolTVL) * EUROCTVL.output; + console.log(AngleagEURTVL, AngleEUROCTVL); + return AnglePoolTVL; +} +*/ + /* New networks will need to be added progressively. If not, the API call defaults to mainnet and the blockchain calls fail and return an error. @@ -103,10 +183,14 @@ module.exports = { methodology: `TVL is retrieved on-chain by querying the total assets managed by the Core module, and the balances of the vaultManagers of the Borrowing module.`, }; -["ethereum", "polygon", "optimism", "arbitrum", "avax"].forEach( - (chain) => { - if (!module.exports[chain]) module.exports[chain] = {}; - module.exports[chain].tvl = async (_, _b, { [chain]: block }) => - tvl(chain, block); - } -); +["ethereum", "polygon", "optimism", "arbitrum", "avax"].forEach((chain) => { + if (!module.exports[chain]) module.exports[chain] = {}; + module.exports[chain].tvl = async (_, _b, { [chain]: block }) => + tvl(chain, block); +}); + +/* +amos().then((data) => { + console.log(data); +}); +*/ From e44145c2520d746608fc3be305e86a64c0ec84dd Mon Sep 17 00:00:00 2001 From: tutacrypto Date: Thu, 2 Mar 2023 17:54:33 +0100 Subject: [PATCH 0007/1354] fix: get totalPoolTokenSupply instead of tvl --- projects/angle/index.js | 65 +++++++---------------------------------- 1 file changed, 11 insertions(+), 54 deletions(-) diff --git a/projects/angle/index.js b/projects/angle/index.js index 04ecc91094..4f1c7f9f04 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -102,7 +102,10 @@ async function tvl(chain, block) { target: EUROC, block: block, }); - const totPoolTVL = agEURTVL.output / 10 ** 18 + EUROCTVL.output / 10 ** 6; + const totPoolTokenSupply = await sdk.api.erc20.totalSupply({ + target: curvePool, + block: block, + }); // Angle holdings of Curve agEUREUROC LP tokens (staked on Stake DAO and Convex) let sdagEUREUROCTVL = await sdk.api.erc20.balanceOf({ owner: AngleagEUREUROCStaker, @@ -114,11 +117,13 @@ async function tvl(chain, block) { target: cvxagEUREUROCstaker, block: block, }); - const AnglePoolTVL = - (Number(sdagEUREUROCTVL.output) + Number(cvxagEUREUROCstakerTVL.output)) / - 10 ** 18; - let AngleagEURTVL = (AnglePoolTVL / totPoolTVL) * agEURTVL.output; - let AngleEUROCTVL = (AnglePoolTVL / totPoolTVL) * EUROCTVL.output; + const AnglePoolTokenSupply = + Number(sdagEUREUROCTVL.output) + Number(cvxagEUREUROCstakerTVL.output); + let AngleagEURTVL = + (AnglePoolTokenSupply / totPoolTokenSupply.output) * agEURTVL.output; + let AngleEUROCTVL = + (AnglePoolTokenSupply / totPoolTokenSupply.output) * EUROCTVL.output; + console.log(AngleagEURTVL, AngleEUROCTVL); sdk.util.sumSingleBalance(balances, agEUR.contract, AngleagEURTVL); sdk.util.sumSingleBalance(balances, EUROC, AngleEUROCTVL); @@ -129,48 +134,6 @@ async function tvl(chain, block) { return sumTokens2({ balances, chain, block, tokensAndOwners }); } -/* -async function amos(chain, block) { - const balances = {}; - const agEUR = "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8"; - const EUROC = "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c"; - const curvePool = "0xBa3436Fd341F2C8A928452Db3C5A3670d1d5Cc73"; - const sdagEUREUROC = "0x63f222079608EEc2DDC7a9acdCD9344a21428Ce7"; - const cvxagEUREUROCstaker = "0xA91fccC1ec9d4A2271B7A86a7509Ca05057C1A98"; - const AngleagEUREUROCStaker = "0xC1e8Dba1cbF29f1CaA8343CAe96d5AdFD9bca736"; - // pool TVL - let agEURTVL = await sdk.api.erc20.balanceOf({ - owner: curvePool, - target: agEUR, - block: block, - }); - let EUROCTVL = await sdk.api.erc20.balanceOf({ - owner: curvePool, - target: EUROC, - block: block, - }); - const totPoolTVL = agEURTVL.output / 10 ** 18 + EUROCTVL.output / 10 ** 6; - // our TVL - let sdagEUREUROCTVL = await sdk.api.erc20.balanceOf({ - owner: AngleagEUREUROCStaker, - target: sdagEUREUROC, - block: block, - }); - let cvxagEUREUROCstakerTVL = await sdk.api.erc20.balanceOf({ - owner: AngleagEUREUROCStaker, - target: cvxagEUREUROCstaker, - block: block, - }); - const AnglePoolTVL = - (Number(sdagEUREUROCTVL.output) + Number(cvxagEUREUROCstakerTVL.output)) / - 10 ** 18; - let AngleagEURTVL = (AnglePoolTVL / totPoolTVL) * agEURTVL.output; - let AngleEUROCTVL = (AnglePoolTVL / totPoolTVL) * EUROCTVL.output; - console.log(AngleagEURTVL, AngleEUROCTVL); - return AnglePoolTVL; -} -*/ - /* New networks will need to be added progressively. If not, the API call defaults to mainnet and the blockchain calls fail and return an error. @@ -188,9 +151,3 @@ module.exports = { module.exports[chain].tvl = async (_, _b, { [chain]: block }) => tvl(chain, block); }); - -/* -amos().then((data) => { - console.log(data); -}); -*/ From 4f7e9eb993e6d990f418c514566ab5268262a1e3 Mon Sep 17 00:00:00 2001 From: tutacrypto Date: Fri, 3 Mar 2023 12:04:38 +0100 Subject: [PATCH 0008/1354] remove console.log --- projects/angle/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/angle/index.js b/projects/angle/index.js index 4f1c7f9f04..41692fae90 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -123,7 +123,6 @@ async function tvl(chain, block) { (AnglePoolTokenSupply / totPoolTokenSupply.output) * agEURTVL.output; let AngleEUROCTVL = (AnglePoolTokenSupply / totPoolTokenSupply.output) * EUROCTVL.output; - console.log(AngleagEURTVL, AngleEUROCTVL); sdk.util.sumSingleBalance(balances, agEUR.contract, AngleagEURTVL); sdk.util.sumSingleBalance(balances, EUROC, AngleEUROCTVL); From a8ac7487f9d4ea5d0062f84014425e2e3207a058 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 12 Mar 2023 23:53:23 +0100 Subject: [PATCH 0009/1354] refactor frax --- projects/fraxfinance/abi.json | 5 - projects/fraxfinance/index.js | 273 ++++++++++++++++++++-------------- 2 files changed, 158 insertions(+), 120 deletions(-) delete mode 100644 projects/fraxfinance/abi.json diff --git a/projects/fraxfinance/abi.json b/projects/fraxfinance/abi.json deleted file mode 100644 index 99c01ca361..0000000000 --- a/projects/fraxfinance/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "usdValueInVault": "uint256:usdValueInVault", - "collatDollarBalance": "uint256:collatDollarBalance", - "borrowed_frax": "uint256:borrowed_frax" -} \ No newline at end of file diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js index 1010a770d5..0568af47b7 100644 --- a/projects/fraxfinance/index.js +++ b/projects/fraxfinance/index.js @@ -1,41 +1,35 @@ const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const BigNumber = require("bignumber.js"); -const { staking, stakings } = require("../helper/staking"); -const { sumTokens } = require("../helper/unwrapLPs"); +const { staking, } = require("../helper/staking"); +const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; const FXS = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0"; - -const FEI3CRVs = [ - "0x70F55767B11c047C8397285E852919F5f6c8DC60", - "0xE4BD0461AE7fdc76c61CE286a80c9B55d83B204a", -]; +const FRAX_3CRV = '0xd632f22692fac7611d2aa1c0d552930d43caed3b' +const T_3CRV = '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490' const contractAddresses = [ - //FRAX3CRV - "0x49ee75278820f409ecd67063D8D717B38d66bd71", //CURVE_AMO - "0x72170Cdc48C33a6AE6B3E83CD387ca3Fb9105da2", + // "0x72170Cdc48C33a6AE6B3E83CD387ca3Fb9105da2", //FRAX_AMO_MINTER "0xcf37B62109b537fa0Cb9A90Af4CA72f6fb85E241", //LENDING_AMO - "0x9507189f5B6D820cd93d970d67893006968825ef", + // "0x9507189f5B6D820cd93d970d67893006968825ef", //MANUAL_AMO - "0x1Be588641Fb28Eb8C2A51f1129707FB1E2683f5a", + // "0x1Be588641Fb28Eb8C2A51f1129707FB1E2683f5a", //USDC_POOL_V1 - "0x3C2982CA260e870eee70c423818010DfeF212659", + // "0x3C2982CA260e870eee70c423818010DfeF212659", //USDC_POOL_V2 - "0x1864Ca3d47AaB98Ee78D11fc9DCC5E7bADdA1c0d", + // "0x1864Ca3d47AaB98Ee78D11fc9DCC5E7bADdA1c0d", //USDC_POOL_V3 - "0x2fE065e6FFEf9ac95ab39E5042744d695F560729", + // "0x2fE065e6FFEf9ac95ab39E5042744d695F560729", //INVESTOR_COLLATERAL_POOL - "0xEE5825d5185a1D512706f9068E69146A54B6e076", + // "0xEE5825d5185a1D512706f9068E69146A54B6e076", -- ignored //INVESTOR_AMO_V2 - "0xB8315Af919729c823B2d996B1A6DDE381E7444f1", + // "0xB8315Af919729c823B2d996B1A6DDE381E7444f1", ]; const veFXS_StakingContract = "0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0"; +const INVESTOR_AMO = '0xb1748c79709f4ba2dd82834b8c82d4a505003f27' const POOL_STAKING_CONTRACTS = [ "0xD875628B942f8970De3CcEaf6417005F68540d4f", @@ -54,116 +48,165 @@ const LP_ADDRESSES = [ "0xecBa967D84fCF0405F6b32Bc45F4d36BfDBB2E81", ]; -const treasuryContracts = [ - "0x63278bF9AcdFC9fA65CFa2940b89A34ADfbCb4A1", - "0x8D4392F55bC76A046E443eb3bab99887F4366BB0", - "0xa95f86fE0409030136D6b82491822B3D70F890b3", - "0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48", - "0x874a873e4891fB760EdFDae0D26cA2c00922C404", -]; +async function get3CRVRatio(api) { + const [ + frax3crvSupply, + bal_3crv, + ] = await Promise.all([ + api.call({ abi: 'erc20:totalSupply', target: FRAX_3CRV, }), + api.call({ abi: 'erc20:balanceOf', target: T_3CRV, params: FRAX_3CRV, }), + ]) + return bal_3crv / frax3crvSupply +} -const ethereumTvl = async (timestamp, block) => { - let balances = {}; +async function addFrax3CRV(api, balances) { + const vault = '0x49ee75278820f409ecd67063D8D717B38d66bd71' + const [ + frax3crvBal, + ratio3CRV, + ] = await Promise.all([ + api.call({ abi: 'uint256:FRAX3CRVInVault', target: vault }), + get3CRVRatio(api), + ]) + sdk.util.sumSingleBalance(balances, T_3CRV, ratio3CRV * frax3crvBal, api.chain) +} - // --- CurveMetapoolLockerAMOs USDC TVL --- - const usdValueInVault = ( - await sdk.api.abi.multiCall({ - calls: FEI3CRVs.map((addr) => ({ target: addr })), - abi: abi.usdValueInVault, - block, - }) - ).output.map((value) => value.output); - - usdValueInVault.forEach((value) => { - sdk.util.sumSingleBalance( - balances, - USDC, - BigNumber(value) - .dividedBy(10 ** 12) - .toFixed(0) - ); - }); - - // --- USDC POOLs + AMOs + FRAX3CRV and FEI3CRVs --- - const usdcTvls = ( - await sdk.api.abi.multiCall({ - calls: contractAddresses.map((addr) => ({ target: addr })), - abi: abi.collatDollarBalance, - block, - }) - ).output.map((response) => response.output); - - usdcTvls.forEach((usdcTvl) => { - sdk.util.sumSingleBalance( - balances, - USDC, - BigNumber(usdcTvl) - .dividedBy(10 ** 12) - .toFixed(0) - ); - }); - - return balances; -}; +async function addyFrax3CRV(api, balances) { + const vault = '0x72170Cdc48C33a6AE6B3E83CD387ca3Fb9105da2' + const yFRAX3CRV = '0xB4AdA607B9d6b2c9Ee07A275e9616B84AC560139' + const [ + yfrax3crvBal, + pricePerShare, + ratio3CRV, + ] = await Promise.all([ + api.call({ abi: 'uint256:yvCurveFRAXBalance', target: vault }), + api.call({ abi: 'uint256:pricePerShare', target: yFRAX3CRV }), + get3CRVRatio(api), + ]) + sdk.util.sumSingleBalance(balances, T_3CRV, yfrax3crvBal * ratio3CRV * (pricePerShare / 1e18), api.chain) + return sumTokens2({ balances, api, owner: vault, tokens: [USDC] }) +} -// Fantom -const contractAddressesFantom = [ - //Spirit/Ola Lending AMO Fantom - "0x8dbc48743a05A6e615D9C39aEBf8C2b157aa31eA", - //Scream Lending AMO Fantom - "0x51E6D09d5A1EcF8BE035BBCa82F77BfeC3c7672A", - //SpiritSwap Liquidity AMO Fantom - "0x48F0856e0E2D06fBCed5FDA10DD69092a500646B", -]; +async function addCvxFRAX_BP(api, balances) { + const convexFRAXBP = '0x7e880867363A7e321f5d260Cade2B0Bb2F717B02' + const crvFRAX = '0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC' + const crvFRAXPool = '0xdcef968d416a41cdac0ed8702fac8128a64241a2' + const [ + cvxFraxBal, + usdcBal, + poolSupply, + ] = await Promise.all([ + + api.call({ abi: 'erc20:balanceOf', target: convexFRAXBP, params: INVESTOR_AMO }), + api.call({ abi: 'erc20:balanceOf', target: USDC, params: crvFRAXPool }), + api.call({ abi: 'erc20:totalSupply', target: crvFRAX }), + ]) + sdk.util.sumSingleBalance(balances, USDC, usdcBal * cvxFraxBal / poolSupply, api.chain) +} -const fantomTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - const chain = "fantom" - const block = chainBlocks[chain] - // --- AMO's --- - const usdcTvls = ( - await sdk.api.abi.multiCall({ - calls: contractAddressesFantom.map((addr) => ({ target: addr })), - abi: abi.borrowed_frax, - block, - chain, - }) - ).output.map((response) => response.output); - - usdcTvls.forEach((usdcTvl) => { - sdk.util.sumSingleBalance( - balances, - USDC, - BigNumber(usdcTvl) - .dividedBy(10 ** 12) // // Convert to 6 decimal USDC values - .toFixed(0) - ); - }); - - // --- Liquidity staking --- - - // Curve FRAX2Pool - await sumTokens(balances, [ - ["0x8866414733f22295b7563f9c5299715d2d76caf4", "0x7a656b342e14f745e2b164890e88017e27ae7320"], - ["0x04068da6c83afcfa0e13ba15a6696662335d5b75", "0xbea9f78090bdb9e662d8cb301a00ad09a5b756e9"] - ], block, chain, addr => addr === "0x8866414733f22295b7563f9c5299715d2d76caf4" ? "0x6b175474e89094c44da98b954eedeac495271d0f" : `${chain}:${addr}`) - - return balances; +async function addCvxFXSFRAX_BP(api, balances) { + const userAccount = '0x2AA609715488B09EFA93883759e8B089FBa11296' + const vault = '0x963f487796d54d2f27ba6f3fbe91154ca103b199' + const crvFRAX = '0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC' + const crvFRAXPool = '0xdcef968d416a41cdac0ed8702fac8128a64241a2' + const [ + cvxFraxBal, + usdcBal, + poolSupply, + ] = await Promise.all([ + api.call({ abi: 'function lockedLiquidityOf(address) view returns (uint256)', target: vault, params: userAccount }), + api.call({ abi: 'erc20:balanceOf', target: USDC, params: crvFRAXPool }), + api.call({ abi: 'erc20:totalSupply', target: crvFRAX }), + ]) + sdk.util.sumSingleBalance(balances, USDC, usdcBal * cvxFraxBal / poolSupply, api.chain) } + +async function addUSDCPools(api, balances) { + return sumTokens2({ + balances, api, owners: [ + '0x3C2982CA260e870eee70c423818010DfeF212659', + '0x1864Ca3d47AaB98Ee78D11fc9DCC5E7bADdA1c0d', + '0x2fE065e6FFEf9ac95ab39E5042744d695F560729', + ], tokens: [USDC] + }) +} + +async function addAMOMinter(api, balances) { + const amoMinter = '0xcf37B62109b537fa0Cb9A90Af4CA72f6fb85E241' + let allAMOAddresses = await api.call({ target: amoMinter, abi: 'address[]:allAMOAddresses' }) + const amos = allAMOAddresses.filter(i => i !== nullAddress) + const blacklist = new Set([ + '0x66635DC1EdEfF19e839f152a67278151Aa6e1B61', // aave AMO + INVESTOR_AMO, + ].map(i => i.toLowerCase())) + const dollBallAbi = 'function dollarBalances() view returns (uint256 frax_val_e18, uint256 collat_val_e18)' + const res = await api.multiCall({ abi: dollBallAbi, calls: amos.filter(i => blacklist.has(i.toLowerCase())) }) + const table = [] + res.forEach((v, i) => { + table.push([amos[i], Number(v.collat_val_e18 / 1e24).toFixed(3)]) + sdk.util.sumSingleBalance(balances, USDC, v.collat_val_e18 / 1e12, api.chain) + }) + table.sort((a, b) => +b[1] - +a[1]) + console.log(amos.length) + console.table(table) + +} + +async function addInvestorAMO(api, balances) { + return sumTokens2({ + balances, + api, owner: INVESTOR_AMO, + tokens: Object.values({ + Synapse: '0x0f2d719407fdbeff09d87557abb7232601fd9f29', + 'Wrapped BTC': '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + 'USD Coin': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + ZigZag: '0xc91a71a1ffa3d8b22ba615ba1b9c01b2bbbf55ad', + 'Governance OHM': '0x0ab87046fbb341d058f17cbc4c1133f25a20a52f', + 'Aave interest bearing USDC': '0xbcca60bb61934080951369a648fb03df4f96263c', + Perpetual: '0xbc396689893d065f41bc2c6ecbee5e0085233447', + Hop: '0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc', + 'Ethereum Name Service': '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', + 'Curve.fi DAI/USDC/USDT': '0x6c3f90f043a72fa612cbac8115ee7e52bde6e490', + 'Saddle DAO': '0xf1dc500fde233a4055e25e5bbf516372bc4f6871', + Ether: nullAddress, + TrueUSD: '0x0000000000085d4780b73119b644ae5ecd22b376', + 'Gelato Network Token': '0x15b7c0c907e4c6b9adaaaabc300c08991d6cea05', + 'Staked Aave': '0x4da27a545c0c5b758a6ba100e3a049001de870f5', + 'Convex Token': '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b', + 'Curve DAO Token': '0xd533a949740bb3306d119cc777fa900ba034cd52', + 'Bend Token': '0x0d02755a5700414b26ff040e1de35d337df56218', + 'Binance USD': '0x4fabb145d64652a948d72533023f6e7a623c7c53', + 'Alchemix USD': '0xbc6da0fe9ad5f3b0d58160288917aa56653660e9', + 'Staked CvxCrv': '0xaa0c3f5f7dfd688c6e646f66cd2a6b66acdbe434', + }), + resolveUniV3: false, // because most of the tokens in UNI pools are frax eco tokens + }) +} + +const ethereumTvl = async (timestamp, block, _, { api }) => { + let balances = {}; + + await Promise.all([ + addFrax3CRV(api, balances), + addyFrax3CRV(api, balances), + addUSDCPools(api, balances), + addInvestorAMO(api, balances), + addCvxFRAX_BP(api, balances), + addCvxFXSFRAX_BP(api, balances), + ]) + return balances +}; + module.exports = { doublecounted: true, - misrepresentedTokens: true, ethereum: { staking: staking(veFXS_StakingContract, FXS), pool2: staking(POOL_STAKING_CONTRACTS, LP_ADDRESSES), tvl: ethereumTvl, }, - fantom: { - tvl: fantomTvl - }, - hallmarks:[ + hallmarks: [ [1651881600, "UST depeg"], ], methodology: From f3101dd2aa641418c3c4490bd0dd7ae80d008dcb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 13 Mar 2023 08:06:26 +0100 Subject: [PATCH 0010/1354] minor fix --- projects/fraxfinance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js index 0568af47b7..cc1d370e5c 100644 --- a/projects/fraxfinance/index.js +++ b/projects/fraxfinance/index.js @@ -193,7 +193,7 @@ const ethereumTvl = async (timestamp, block, _, { api }) => { addyFrax3CRV(api, balances), addUSDCPools(api, balances), addInvestorAMO(api, balances), - addCvxFRAX_BP(api, balances), + // addCvxFRAX_BP(api, balances), addCvxFXSFRAX_BP(api, balances), ]) return balances From 56560454ba994713472b89b54481af3d1ae12e48 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 15 Mar 2023 09:15:14 +0100 Subject: [PATCH 0011/1354] update frax --- projects/fraxfinance/index.js | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js index cc1d370e5c..53c72924c5 100644 --- a/projects/fraxfinance/index.js +++ b/projects/fraxfinance/index.js @@ -7,27 +7,6 @@ const FXS = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0"; const FRAX_3CRV = '0xd632f22692fac7611d2aa1c0d552930d43caed3b' const T_3CRV = '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490' -const contractAddresses = [ - //CURVE_AMO - // "0x72170Cdc48C33a6AE6B3E83CD387ca3Fb9105da2", - //FRAX_AMO_MINTER - "0xcf37B62109b537fa0Cb9A90Af4CA72f6fb85E241", - //LENDING_AMO - // "0x9507189f5B6D820cd93d970d67893006968825ef", - //MANUAL_AMO - // "0x1Be588641Fb28Eb8C2A51f1129707FB1E2683f5a", - //USDC_POOL_V1 - // "0x3C2982CA260e870eee70c423818010DfeF212659", - //USDC_POOL_V2 - // "0x1864Ca3d47AaB98Ee78D11fc9DCC5E7bADdA1c0d", - //USDC_POOL_V3 - // "0x2fE065e6FFEf9ac95ab39E5042744d695F560729", - //INVESTOR_COLLATERAL_POOL - // "0xEE5825d5185a1D512706f9068E69146A54B6e076", -- ignored - //INVESTOR_AMO_V2 - // "0xB8315Af919729c823B2d996B1A6DDE381E7444f1", -]; - const veFXS_StakingContract = "0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0"; const INVESTOR_AMO = '0xb1748c79709f4ba2dd82834b8c82d4a505003f27' @@ -181,7 +160,6 @@ async function addInvestorAMO(api, balances) { 'Alchemix USD': '0xbc6da0fe9ad5f3b0d58160288917aa56653660e9', 'Staked CvxCrv': '0xaa0c3f5f7dfd688c6e646f66cd2a6b66acdbe434', }), - resolveUniV3: false, // because most of the tokens in UNI pools are frax eco tokens }) } @@ -193,7 +171,6 @@ const ethereumTvl = async (timestamp, block, _, { api }) => { addyFrax3CRV(api, balances), addUSDCPools(api, balances), addInvestorAMO(api, balances), - // addCvxFRAX_BP(api, balances), addCvxFXSFRAX_BP(api, balances), ]) return balances From 9030b89beda90d815b724a99996762bae4e1854f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 15 Mar 2023 19:46:48 +0100 Subject: [PATCH 0012/1354] angle: update code for euler hack --- projects/angle/index.js | 92 +++++++++++++---------------------------- 1 file changed, 28 insertions(+), 64 deletions(-) diff --git a/projects/angle/index.js b/projects/angle/index.js index 41692fae90..4973d65ea9 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -2,6 +2,7 @@ const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { getConfig } = require("../helper/cache"); const { sumTokens2 } = require("../helper/unwrapLPs"); +const { getUniqueAddresses } = require("../helper/tokenMapping"); const ANGLE = "0x31429d1856ad1377a8a0079410b297e1a9e214c2"; const veANGLE = "0x0C462Dbb9EC8cD1630f1728B2CFD2769d09f0dd5"; @@ -35,54 +36,39 @@ async function getVaultManagersFromAPI(chain) { return calls; } -async function tvl(chain, block) { +async function tvl(_, _1, _2, { api }) { + const chain = api.chain const balances = {}; const tokensAndOwners = []; if (chain === "ethereum") { // Registry will be released in next sdk of Angle + graphql endpoint to come - const collaterals = { - dai: "0x6b175474e89094c44da98b954eedeac495271d0f", - usdc: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - frax: "0x853d955acef822db058eb8505911ed77f175b99e", - fei: "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", - weth: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - }; - const agEUR = { contract: "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8", stableMasterFront: "0x5adDc89785D75C86aB939E9e15bfBBb7Fc086A87", poolManagers: { dai: "0xc9daabC677F3d1301006e723bD21C60be57a5915", // DAI - usdc: "0xe9f183FC656656f1F17af1F2b0dF79b8fF9ad8eD", // USDC + // usdc: "0xe9f183FC656656f1F17af1F2b0dF79b8fF9ad8eD", // USDC disabled because of EULER hack fei: "0x53b981389Cfc5dCDA2DC2e903147B5DD0E985F44", // FEI frax: "0x6b4eE7352406707003bC6f6b96595FD35925af48", // FRAX weth: "0x3f66867b4b6eCeBA0dBb6776be15619F73BC30A2", // WETH }, }; - const agTokens = [agEUR]; - const tokenMapping = {}; - agTokens.map((t) => { - return Object.entries(t.poolManagers).forEach(([key, value]) => { - tokenMapping[value] = collaterals[key]; - }); - }); + // count the USDC in pool manager contract + tokensAndOwners.push(['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xe9f183FC656656f1F17af1F2b0dF79b8fF9ad8eD']) // add USDC in USDC manager + const poolManagers = getUniqueAddresses([agEUR].map(i => Object.values(i.poolManagers)).flat()) - let { output: assets } = await sdk.api.abi.multiCall({ - calls: Object.keys(tokenMapping).map((i) => ({ target: i })), + let assets = await api.multiCall({ + calls: poolManagers, abi: poolManagers_abi["getTotalAsset"], - chain, - block, }); - let { output: tokens } = await sdk.api.abi.multiCall({ - calls: Object.keys(tokenMapping).map((i) => ({ target: i })), + let tokens = await api.multiCall({ + calls: poolManagers, abi: poolManagers_abi["token"], - chain, - block, }); - assets.forEach(({ output }, i) => - sdk.util.sumSingleBalance(balances, tokens[i].output, output) + assets.forEach((output, i) => + sdk.util.sumSingleBalance(balances, tokens[i], output) ); // AMOs @@ -92,45 +78,21 @@ async function tvl(chain, block) { const cvxagEUREUROCstaker = "0xA91fccC1ec9d4A2271B7A86a7509Ca05057C1A98"; const AngleagEUREUROCStaker = "0xC1e8Dba1cbF29f1CaA8343CAe96d5AdFD9bca736"; // pool TVL - let agEURTVL = await sdk.api.erc20.balanceOf({ - owner: curvePool, - target: agEUR.contract, - block: block, - }); - let EUROCTVL = await sdk.api.erc20.balanceOf({ - owner: curvePool, - target: EUROC, - block: block, - }); - const totPoolTokenSupply = await sdk.api.erc20.totalSupply({ - target: curvePool, - block: block, - }); - // Angle holdings of Curve agEUREUROC LP tokens (staked on Stake DAO and Convex) - let sdagEUREUROCTVL = await sdk.api.erc20.balanceOf({ - owner: AngleagEUREUROCStaker, - target: sdagEUREUROC, - block: block, - }); - let cvxagEUREUROCstakerTVL = await sdk.api.erc20.balanceOf({ - owner: AngleagEUREUROCStaker, - target: cvxagEUREUROCstaker, - block: block, - }); - const AnglePoolTokenSupply = - Number(sdagEUREUROCTVL.output) + Number(cvxagEUREUROCstakerTVL.output); - let AngleagEURTVL = - (AnglePoolTokenSupply / totPoolTokenSupply.output) * agEURTVL.output; - let AngleEUROCTVL = - (AnglePoolTokenSupply / totPoolTokenSupply.output) * EUROCTVL.output; - - sdk.util.sumSingleBalance(balances, agEUR.contract, AngleagEURTVL); - sdk.util.sumSingleBalance(balances, EUROC, AngleEUROCTVL); + const [agEurBal, eurocBal, totPoolTokenSupply, sdagEUREUROCTVL, cvxagEUREUROCstakerTVL] = await Promise.all([ + api.call({ abi: 'erc20:balanceOf', target: agEUR.contract, params: curvePool }), + api.call({ abi: 'erc20:balanceOf', target: EUROC, params: curvePool }), + api.call({ abi: 'erc20:totalSupply', target: curvePool }), + // Angle holdings of Curve agEUREUROC LP tokens (staked on Stake DAO and Convex) + api.call({ abi: 'erc20:balanceOf', target: sdagEUREUROC, params: AngleagEUREUROCStaker }), + api.call({ abi: 'erc20:balanceOf', target: cvxagEUREUROCstaker, params: AngleagEUREUROCStaker }), + ]) + const eurocBalance = eurocBal * (+sdagEUREUROCTVL + +cvxagEUREUROCstakerTVL) / totPoolTokenSupply + sdk.util.sumSingleBalance(balances, EUROC, eurocBalance); } // Borrowing module tokensAndOwners.push(...(await getVaultManagersFromAPI(chain))); - return sumTokens2({ balances, chain, block, tokensAndOwners }); + return sumTokens2({ balances, api, tokensAndOwners }); } /* @@ -139,6 +101,9 @@ If not, the API call defaults to mainnet and the blockchain calls fail and retur */ module.exports = { + hallmarks: [ + [Math.floor(new Date('2023-03-13') / 1e3), 'Euler was hacked'], + ], ethereum: { staking: staking(veANGLE, ANGLE, "ethereum"), }, @@ -147,6 +112,5 @@ module.exports = { ["ethereum", "polygon", "optimism", "arbitrum", "avax"].forEach((chain) => { if (!module.exports[chain]) module.exports[chain] = {}; - module.exports[chain].tvl = async (_, _b, { [chain]: block }) => - tvl(chain, block); + module.exports[chain].tvl = tvl }); From 9f21b82a9fb28622b347a38f0a9f7752576f07e1 Mon Sep 17 00:00:00 2001 From: 0xJasmine Date: Mon, 10 Apr 2023 16:00:32 -0400 Subject: [PATCH 0013/1354] Add TProtocol Adapter --- projects/t-protocol/index.js | 87 ++++++++++++++++++++++++++++++++++++ pull_request_template.md | 18 ++++++++ 2 files changed, 105 insertions(+) create mode 100644 projects/t-protocol/index.js diff --git a/projects/t-protocol/index.js b/projects/t-protocol/index.js new file mode 100644 index 0000000000..855cedd001 --- /dev/null +++ b/projects/t-protocol/index.js @@ -0,0 +1,87 @@ +const sdk = require("@defillama/sdk"); +const { ethers } = require("ethers"); +const BigNumber = require("bignumber.js"); + +// Contract of T Protocol +const WTBT_TOKEN_CONTRACT = "0xD38e031f4529a07996aaB977d2B79f0e00656C56"; +const TBT_TOKEN_CONTRACT = "0x07Ac55797D4F43f57cA92a49E65ca582cC287c27"; +const USDC_TOKEN_CONTRACT = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const TREASURY_CONTRACT = "0xa01D9bc8343016C7DDD39852e49890a8361B2884"; + +const multiple = (val1, val2) => { + return new BigNumber(val1).multipliedBy(val2); +}; + +const pricePerTokenABI = { + inputs: [], + name: "pricePerToken", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", +}; + +async function tvl(_, _1, _2, { api }) { + const balances = {}; + + //@dev WTBT TVL = WTBT Supply * NAV Price of WTBT + const wtbtSupply = await api.call({ + abi: "erc20:totalSupply", + target: WTBT_TOKEN_CONTRACT, + }); + const pricePerToken = await api.call({ + abi: pricePerTokenABI, + target: WTBT_TOKEN_CONTRACT, + }); + const wtbtTVL = multiple( + ethers.utils.formatUnits(wtbtSupply, 18), + ethers.utils.formatUnits(pricePerToken, 6) + ).decimalPlaces(6); + // console.log("wtbtTVL", wtbtTVL.toString()); + + //@dev TBT TVL = TBT Supply * 1 USDC + const tbtSupply = await api.call({ + abi: "erc20:totalSupply", + target: TBT_TOKEN_CONTRACT, + }); + const tbtTVL = multiple( + ethers.utils.formatUnits(tbtSupply, 18), + ethers.utils.formatUnits("1000000", 6) + ).decimalPlaces(6); + // console.log("tbtTVL", tbtTVL.toString()); + + //@dev TREASURY TVL = USDC Balance of Treasury + const usdcInTreasury = await api.call({ + abi: "erc20:balanceOf", + target: USDC_TOKEN_CONTRACT, + params: [TREASURY_CONTRACT], + }); + const treasuryTVL = ethers.utils.formatUnits(usdcInTreasury, 6); + // console.log("treasuryTVL", treasuryTVL.toString()); + + //@dev Total TVL = WTBT TVL + TBT TVL + TREASURY TVL + const SummaryTVL = ethers.utils.parseUnits( + wtbtTVL.plus(tbtTVL).plus(treasuryTVL).decimalPlaces(6).toString(), + 6 + ); + // console.log("SummaryTVL", SummaryTVL.toString()); + + await sdk.util.sumSingleBalance( + balances, + USDC_TOKEN_CONTRACT, + SummaryTVL, + api.chain + ); + // console.log("balances", balances); + + return balances; +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: "counts the assets value of WTBT, TBT, and USDC in the Treasury", + start: 1677913260, + ethereum: { + tvl, + }, +}; diff --git a/pull_request_template.md b/pull_request_template.md index b2b9b82512..9f2145bcb1 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -14,48 +14,66 @@ --- ##### Name (to be shown on DefiLlama): +TProtocol ##### Twitter Link: +https://twitter.com/TProtocol_ ##### List of audit links if any: +/ ##### Website Link: +https://www.tprotocol.io/ ##### Logo (High resolution, preferably in .svg and .png, for application on both white and black backgrounds. Will be shown with rounded borders): +- Black: https://github.com/TProtocol/Public/raw/main/img/Logo/logo-tprotocol-black-200x200.png +- White: https://github.com/TProtocol/Public/raw/main/img/Logo/logo-tprotocol-white-200x200.png ##### Current TVL: +`6,782,521.31` ##### Treasury Addresses (if the protocol has treasury) +https://etherscan.io/0xa01D9bc8343016C7DDD39852e49890a8361B2884 ##### Chain: +Ethereum ##### Coingecko ID (so your TVL can appear on Coingecko): (https://api.coingecko.com/api/v3/coins/list) +/ ##### Coinmarketcap ID (so your TVL can appear on Coinmarketcap): (https://api.coinmarketcap.com/data-api/v3/map/all?listing_status=active,inactive,untracked&start=1&limit=10000) +/ ##### Short Description (to be shown on DefiLlama): +First DeFi composable LSD solution for stablecoins. ##### Token address and ticker if any: +- wTBT: https://etherscan.io/token/0xD38e031f4529a07996aaB977d2B79f0e00656C56 +- TBT: https://etherscan.io/token/0x07Ac55797D4F43f57cA92a49E65ca582cC287c27 ##### Category (full list at https://defillama.com/categories) *Please choose only one: +DeFi ##### Oracle used (Chainlink/Band/API3/TWAP or any other that you are using): +/ ##### forkedFrom (Does your project originate from another project): +/ ##### methodology (what is being counted as tvl, how is tvl being calculated): +`Protocol TVL = WTBT asset value + TBT asset value + TREASURY asset value` From 9e740a0aa0abbac413a6f6f2a4d688d97d2fb48b Mon Sep 17 00:00:00 2001 From: tpktpj Date: Mon, 10 Apr 2023 16:05:04 -0400 Subject: [PATCH 0014/1354] Add TProtocol Adapter --- pull_request_template.md | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/pull_request_template.md b/pull_request_template.md index 9f2145bcb1..b2b9b82512 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -14,66 +14,48 @@ --- ##### Name (to be shown on DefiLlama): -TProtocol ##### Twitter Link: -https://twitter.com/TProtocol_ ##### List of audit links if any: -/ ##### Website Link: -https://www.tprotocol.io/ ##### Logo (High resolution, preferably in .svg and .png, for application on both white and black backgrounds. Will be shown with rounded borders): -- Black: https://github.com/TProtocol/Public/raw/main/img/Logo/logo-tprotocol-black-200x200.png -- White: https://github.com/TProtocol/Public/raw/main/img/Logo/logo-tprotocol-white-200x200.png ##### Current TVL: -`6,782,521.31` ##### Treasury Addresses (if the protocol has treasury) -https://etherscan.io/0xa01D9bc8343016C7DDD39852e49890a8361B2884 ##### Chain: -Ethereum ##### Coingecko ID (so your TVL can appear on Coingecko): (https://api.coingecko.com/api/v3/coins/list) -/ ##### Coinmarketcap ID (so your TVL can appear on Coinmarketcap): (https://api.coinmarketcap.com/data-api/v3/map/all?listing_status=active,inactive,untracked&start=1&limit=10000) -/ ##### Short Description (to be shown on DefiLlama): -First DeFi composable LSD solution for stablecoins. ##### Token address and ticker if any: -- wTBT: https://etherscan.io/token/0xD38e031f4529a07996aaB977d2B79f0e00656C56 -- TBT: https://etherscan.io/token/0x07Ac55797D4F43f57cA92a49E65ca582cC287c27 ##### Category (full list at https://defillama.com/categories) *Please choose only one: -DeFi ##### Oracle used (Chainlink/Band/API3/TWAP or any other that you are using): -/ ##### forkedFrom (Does your project originate from another project): -/ ##### methodology (what is being counted as tvl, how is tvl being calculated): -`Protocol TVL = WTBT asset value + TBT asset value + TREASURY asset value` From 6f3d3c4b55fc3a2131c3e09a25a95701742cf07e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Apr 2023 12:06:27 +0200 Subject: [PATCH 0015/1354] code refactor: t protocol --- projects/t-protocol/index.js | 73 +++++------------------------------- 1 file changed, 9 insertions(+), 64 deletions(-) diff --git a/projects/t-protocol/index.js b/projects/t-protocol/index.js index 855cedd001..13d0518b14 100644 --- a/projects/t-protocol/index.js +++ b/projects/t-protocol/index.js @@ -1,6 +1,4 @@ -const sdk = require("@defillama/sdk"); -const { ethers } = require("ethers"); -const BigNumber = require("bignumber.js"); +const { sumTokens2 } = require("../helper/unwrapLPs"); // Contract of T Protocol const WTBT_TOKEN_CONTRACT = "0xD38e031f4529a07996aaB977d2B79f0e00656C56"; @@ -8,77 +6,24 @@ const TBT_TOKEN_CONTRACT = "0x07Ac55797D4F43f57cA92a49E65ca582cC287c27"; const USDC_TOKEN_CONTRACT = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; const TREASURY_CONTRACT = "0xa01D9bc8343016C7DDD39852e49890a8361B2884"; -const multiple = (val1, val2) => { - return new BigNumber(val1).multipliedBy(val2); -}; - -const pricePerTokenABI = { - inputs: [], - name: "pricePerToken", - outputs: [{ internalType: "uint256", name: "", type: "uint256" }], - stateMutability: "view", - type: "function", -}; +const pricePerTokenABI = 'uint256:pricePerToken' async function tvl(_, _1, _2, { api }) { - const balances = {}; - //@dev WTBT TVL = WTBT Supply * NAV Price of WTBT - const wtbtSupply = await api.call({ - abi: "erc20:totalSupply", - target: WTBT_TOKEN_CONTRACT, - }); - const pricePerToken = await api.call({ - abi: pricePerTokenABI, - target: WTBT_TOKEN_CONTRACT, - }); - const wtbtTVL = multiple( - ethers.utils.formatUnits(wtbtSupply, 18), - ethers.utils.formatUnits(pricePerToken, 6) - ).decimalPlaces(6); - // console.log("wtbtTVL", wtbtTVL.toString()); + const wtbtSupply = (await api.call({ abi: "erc20:totalSupply", target: WTBT_TOKEN_CONTRACT, })) / 1e18 + const pricePerToken = await api.call({ abi: pricePerTokenABI, target: WTBT_TOKEN_CONTRACT, }) + api.add(USDC_TOKEN_CONTRACT, wtbtSupply * pricePerToken) //@dev TBT TVL = TBT Supply * 1 USDC - const tbtSupply = await api.call({ - abi: "erc20:totalSupply", - target: TBT_TOKEN_CONTRACT, - }); - const tbtTVL = multiple( - ethers.utils.formatUnits(tbtSupply, 18), - ethers.utils.formatUnits("1000000", 6) - ).decimalPlaces(6); - // console.log("tbtTVL", tbtTVL.toString()); + const tbtSupply = await api.call({ abi: "erc20:totalSupply", target: TBT_TOKEN_CONTRACT, }) / 1e18 + api.add(USDC_TOKEN_CONTRACT, tbtSupply * 1e6) //@dev TREASURY TVL = USDC Balance of Treasury - const usdcInTreasury = await api.call({ - abi: "erc20:balanceOf", - target: USDC_TOKEN_CONTRACT, - params: [TREASURY_CONTRACT], - }); - const treasuryTVL = ethers.utils.formatUnits(usdcInTreasury, 6); - // console.log("treasuryTVL", treasuryTVL.toString()); - - //@dev Total TVL = WTBT TVL + TBT TVL + TREASURY TVL - const SummaryTVL = ethers.utils.parseUnits( - wtbtTVL.plus(tbtTVL).plus(treasuryTVL).decimalPlaces(6).toString(), - 6 - ); - // console.log("SummaryTVL", SummaryTVL.toString()); - - await sdk.util.sumSingleBalance( - balances, - USDC_TOKEN_CONTRACT, - SummaryTVL, - api.chain - ); - // console.log("balances", balances); - - return balances; + return sumTokens2({ api, owner: TREASURY_CONTRACT, tokens: [USDC_TOKEN_CONTRACT]}); } module.exports = { - timetravel: true, - misrepresentedTokens: false, + misrepresentedTokens: true, methodology: "counts the assets value of WTBT, TBT, and USDC in the Treasury", start: 1677913260, ethereum: { From 19a8193c16cb9cada0e0a89d8696876bdaa519e7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Apr 2023 12:11:59 +0200 Subject: [PATCH 0016/1354] code refactor: t protocol --- projects/t-protocol/index.js | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/projects/t-protocol/index.js b/projects/t-protocol/index.js index 13d0518b14..621d880b6b 100644 --- a/projects/t-protocol/index.js +++ b/projects/t-protocol/index.js @@ -1,32 +1,13 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokensExport } = require("../helper/unwrapLPs"); -// Contract of T Protocol -const WTBT_TOKEN_CONTRACT = "0xD38e031f4529a07996aaB977d2B79f0e00656C56"; -const TBT_TOKEN_CONTRACT = "0x07Ac55797D4F43f57cA92a49E65ca582cC287c27"; const USDC_TOKEN_CONTRACT = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; const TREASURY_CONTRACT = "0xa01D9bc8343016C7DDD39852e49890a8361B2884"; - -const pricePerTokenABI = 'uint256:pricePerToken' - -async function tvl(_, _1, _2, { api }) { - //@dev WTBT TVL = WTBT Supply * NAV Price of WTBT - const wtbtSupply = (await api.call({ abi: "erc20:totalSupply", target: WTBT_TOKEN_CONTRACT, })) / 1e18 - const pricePerToken = await api.call({ abi: pricePerTokenABI, target: WTBT_TOKEN_CONTRACT, }) - api.add(USDC_TOKEN_CONTRACT, wtbtSupply * pricePerToken) - - //@dev TBT TVL = TBT Supply * 1 USDC - const tbtSupply = await api.call({ abi: "erc20:totalSupply", target: TBT_TOKEN_CONTRACT, }) / 1e18 - api.add(USDC_TOKEN_CONTRACT, tbtSupply * 1e6) - - //@dev TREASURY TVL = USDC Balance of Treasury - return sumTokens2({ api, owner: TREASURY_CONTRACT, tokens: [USDC_TOKEN_CONTRACT]}); -} +const STBT = '0x530824DA86689C9C17CdC2871Ff29B058345b44a' module.exports = { - misrepresentedTokens: true, - methodology: "counts the assets value of WTBT, TBT, and USDC in the Treasury", + methodology: "counts value of assets in the Treasury", start: 1677913260, ethereum: { - tvl, + tvl: sumTokensExport({ owner: TREASURY_CONTRACT, tokens: [USDC_TOKEN_CONTRACT, STBT] }), }, }; From f8686d19f96609dc4d092da80a76e9455e7f1ad1 Mon Sep 17 00:00:00 2001 From: "Michael.He" Date: Thu, 13 Apr 2023 02:13:22 +0900 Subject: [PATCH 0017/1354] add protoss dex --- projects/protoss-dex/abi.js | 87 +++++++++++++++++++++++++++++++++++ projects/protoss-dex/api.js | 38 +++++++++++++++ projects/protoss-dex/index.js | 1 + 3 files changed, 126 insertions(+) create mode 100644 projects/protoss-dex/abi.js create mode 100644 projects/protoss-dex/api.js create mode 100644 projects/protoss-dex/index.js diff --git a/projects/protoss-dex/abi.js b/projects/protoss-dex/abi.js new file mode 100644 index 0000000000..07114bcb6b --- /dev/null +++ b/projects/protoss-dex/abi.js @@ -0,0 +1,87 @@ +const fabis = [{ + "name": "allPairs", + "type": "function", + "inputs": [ + { + "name": "index", + "type": "felt" + } + ], + "outputs": [ + { + "name": "pair", + "type": "felt" + } + ], + "stateMutability": "view" +}, +{ + "name": "allPairsLength", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "length", + "type": "felt" + } + ], + "stateMutability": "view" +} +] + +const pabis = [ + { + "name": "token0", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "token0", + "type": "felt" + } + ], + "stateMutability": "view" + }, + { + "name": "token1", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "token1", + "type": "felt" + } + ], + "stateMutability": "view" + }, + { + "name": "getReserves", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "reserve0", + "type": "felt" + }, + { + "name": "reserve1", + "type": "felt" + }, + { + "name": "blockTimestampLast", + "type": "felt" + } + ], + "stateMutability": "view" + }, +] + + +const factory = {} +const pair = {} +fabis.forEach(i => factory[i.name] = i) +pabis.forEach(i => pair[i.name] = i) + +module.exports = { + factory, pair, fabis, pabis, +} \ No newline at end of file diff --git a/projects/protoss-dex/api.js b/projects/protoss-dex/api.js new file mode 100644 index 0000000000..bcfbb20001 --- /dev/null +++ b/projects/protoss-dex/api.js @@ -0,0 +1,38 @@ + +const { call, multiCall, parseAddress } = require('../helper/chain/starknet') +const abi = require('./abi') +const { transformDexBalances } = require('../helper/portedTokens') +const { getParamCalls } = require('../helper/utils') + +async function tvl() { + const factory = '0x04bd9ec70e3ee64fe0adefe0ae4eff797fe07b6fe19d72438db0b6d336ee77c8' + let pairLength = await call({ target: factory, abi: abi.factory.allPairsLength}) + let pairs = await multiCall({ abi: abi.factory.allPairs, target: factory, calls: getParamCalls(+pairLength)}) + + const calls = pairs.map(i => parseAddress(i)) + + const [ token0s, token1s, reserves ] = await Promise.all([ + multiCall({ abi: abi.pair.token0, calls }), + multiCall({ abi: abi.pair.token1, calls }), + multiCall({ abi: abi.pair.getReserves, calls }), + ]) + + const data = [] + reserves.forEach((reserve, i) => { + data.push({ + token0: parseAddress(token0s[i]), + token1: parseAddress(token1s[i]), + token0Bal: +reserve.reserve0, + token1Bal: +reserve.reserve1, + }) + }) + + return transformDexBalances({chain:'starknet', data}) +} + +module.exports = { + timetravel: false, + starknet: { + tvl, + } +} diff --git a/projects/protoss-dex/index.js b/projects/protoss-dex/index.js new file mode 100644 index 0000000000..674e8c995c --- /dev/null +++ b/projects/protoss-dex/index.js @@ -0,0 +1 @@ +module.exports = require('./api') \ No newline at end of file From 4862e6387e9ea5e6ecd288e6dff9c9ca850363d8 Mon Sep 17 00:00:00 2001 From: adamrturman Date: Tue, 18 Apr 2023 10:17:13 -0500 Subject: [PATCH 0018/1354] include wBTC, USDC, and USDT (multichain) in Kava Lend TVL --- projects/hard.js | 84 ++++++++++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 35 deletions(-) diff --git a/projects/hard.js b/projects/hard.js index 956d199214..c81738688f 100644 --- a/projects/hard.js +++ b/projects/hard.js @@ -1,4 +1,4 @@ -const { get } = require('./helper/http') +const { get } = require('./helper/http'); const KAVA_DENOM = "ukava"; const HARD_DENOM = "hard"; @@ -7,58 +7,72 @@ const BNB_DENOM = "bnb"; const BTC_DENOM = "btcb"; const BUSD_DENOM = "busd"; const XRPB_DENOM = "xrpb"; -const ATOM_DENOM = "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2" -const AKT_DENOM = "ibc/799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098" -const AXLUSDC_DENOM = "erc20/axelar/usdc" +const ATOM_DENOM = "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2"; +const AKT_DENOM = "ibc/799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098"; +const AXLUSDC_DENOM = "erc20/axelar/usdc"; +const MULTICHAIN_WBTC = "erc20/multichain/wbtc"; +const MULTICHAIN_USDC = "erc20/multichain/usdc"; +const MULTICHAIN_USDT = "erc20/multichain/usdt"; + const coingeckoIds = { [KAVA_DENOM]: 'kava', - [HARD_DENOM]:'kava-lend', - [USDX_DENOM]:'usdx', - [BNB_DENOM]:'binancecoin', - [BTC_DENOM]:'bitcoin', - [BUSD_DENOM]:'binance-usd', - [XRPB_DENOM]:'ripple', - [ATOM_DENOM]:'cosmos', - [AKT_DENOM]:'akash-network', - [AXLUSDC_DENOM]: 'axlusdc' + [HARD_DENOM]: 'kava-lend', + [USDX_DENOM]: 'usdx', + [BNB_DENOM]: 'binancecoin', + [BTC_DENOM]: 'bitcoin', + [BUSD_DENOM]: 'binance-usd', + [XRPB_DENOM]: 'ripple', + [ATOM_DENOM]: 'cosmos', + [AKT_DENOM]: 'akash-network', + [AXLUSDC_DENOM]: 'axlusdc', + [MULTICHAIN_WBTC]: 'wrapped-bitcoin', + [MULTICHAIN_USDC]: 'usd-coin', + [MULTICHAIN_USDT]: 'tether', } const decimals = { [KAVA_DENOM]: 6, - [HARD_DENOM]:6, - [USDX_DENOM]:6, - [BNB_DENOM]:8, - [BTC_DENOM]:8, - [BUSD_DENOM]:8, - [XRPB_DENOM]:8, - [ATOM_DENOM]:6, - [AKT_DENOM]:6, - [AXLUSDC_DENOM]:6, + [HARD_DENOM]: 6, + [USDX_DENOM]: 6, + [BNB_DENOM]: 8, + [BTC_DENOM]: 8, + [BUSD_DENOM]: 8, + [XRPB_DENOM]: 8, + [ATOM_DENOM]: 6, + [AKT_DENOM]: 6, + [AXLUSDC_DENOM]: 6, + [MULTICHAIN_WBTC]: 8, + [AXLUSDC_DENOM]: 6, + [AXLUSDC_DENOM]: 6, } -var tvl = async () => { - const balances = {} - const totalDeposited = await get('https://api2.kava.io/hard/total-deposited') - const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed') - for(const coin of totalDeposited.result){ - const borrowed = Number(totalBorrowed.result.find(item=>item.denom === coin.denom)?.amount || 0); - balances[coingeckoIds[coin.denom]]=(Number(coin.amount)-borrowed)/(10**decimals[coin.denom]); +const tvl = async () => { + const balances = {}; + const totalDeposited = await get('https://api2.kava.io/hard/total-deposited'); + const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed'); + + for (const coin of totalDeposited.result) { + const borrowed = Number(totalBorrowed.result.find(item => item.denom === coin.denom)?.amount || 0); + balances[coingeckoIds[coin.denom]] = (Number(coin.amount)-borrowed) / (10**decimals[coin.denom]); } + return balances; } -var borrowed = async () => { - const balances = {} - const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed') - for(const coin of totalBorrowed.result){ - balances[coingeckoIds[coin.denom]]=Number(coin.amount)/(10**decimals[coin.denom]); +const borrowed = async () => { + const balances = {}; + const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed'); + + for (const coin of totalBorrowed.result) { + balances[coingeckoIds[coin.denom]] = Number(coin.amount)/(10**decimals[coin.denom]); } + return balances; } module.exports = { timetravel: false, - kava:{ + kava: { tvl, borrowed } From 8996537ee8392759d3858b77f1dfbba70ba3b96a Mon Sep 17 00:00:00 2001 From: Fireb0mb1 Date: Wed, 19 Apr 2023 22:16:07 +0200 Subject: [PATCH 0019/1354] shapeshift: list new pools and foxy --- projects/shapeshift/index.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/projects/shapeshift/index.js b/projects/shapeshift/index.js index af38c84c7f..ab9bb44756 100644 --- a/projects/shapeshift/index.js +++ b/projects/shapeshift/index.js @@ -1,18 +1,30 @@ const { staking } = require("../helper/staking"); // Contracts -const StakingYieldContract = "0xDd80E21669A664Bce83E3AD9a0d74f8Dad5D9E72"; -const StakingYieldContractV2 = "0xc54b9f82c1c54e9d4d274d633c7523f2299c42a0"; +const stakingUNIv2Contracts = [ + "0xDd80E21669A664Bce83E3AD9a0d74f8Dad5D9E72", // v1 + "0xc54b9f82c1c54e9d4d274d633c7523f2299c42a0", // v2 + "0x212ebf9fd3c10f371557b08e993eaab385c3932b", // v3 + "0x24FD7FB95dc742e23Dc3829d3e656FEeb5f67fa0", // v4 + "0xC14eaA8284feFF79EDc118E06caDBf3813a7e555", // v5 + "0xEbB1761Ad43034Fd7FaA64d84e5BbD8cB5c40b68", // v6 +]; +const stakingFoxy = "0xee77aa3Fd23BbeBaf94386dD44b548e9a785ea4b"; // Tokens Or LPs const ETH_FOX_UNIV2 = "0x470e8de2eBaef52014A47Cb5E6aF86884947F08c"; const FOX = "0xc770eefad204b5180df6a14ee197d99d808ee52d"; +const tFOX = "0x808D3E6b23516967ceAE4f17a5F9038383ED5311"; +const FOXy = "0xDc49108ce5C57bc3408c3A5E95F3d864eC386Ed3"; module.exports = { ethereum: { - pool2: staking([StakingYieldContract, StakingYieldContractV2], [ETH_FOX_UNIV2]), - tvl: async ()=>({}), + pool2: staking( + [...stakingUNIv2Contracts, stakingFoxy], + [ETH_FOX_UNIV2, FOX, tFOX, FOXy] + ), + tvl: async () => ({}), }, methodology: - "We count liquidity of ETH-FOX LP deposited on Uniswap V2 pool through StakingYieldContract contract; and the staking of native token", + "We count liquidity of ETH-FOX LP deposited on Uniswap V2 pool through StakingYieldContract contracts; and the staking of native token", }; From 88813465b7a042f691f9acd6cc51f3bcd9182120 Mon Sep 17 00:00:00 2001 From: Chris Gutkowski Date: Thu, 20 Apr 2023 15:04:54 +0200 Subject: [PATCH 0020/1354] update illuvium project --- projects/illuvium/index.js | 65 +++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/projects/illuvium/index.js b/projects/illuvium/index.js index bf075b9fb9..960c3ff8b6 100644 --- a/projects/illuvium/index.js +++ b/projects/illuvium/index.js @@ -1,47 +1,40 @@ -const {sumTokensAndLPs} = require('../helper/unwrapLPs') +const { api } = require("@defillama/sdk") +const BigNumber = require("bignumber.js") -const slp = "0x6a091a3406E0073C3CD6340122143009aDac0EDa" -const ilvstk = "0x25121EDDf746c884ddE4619b573A7B10714E2a36" -const ilv = "0x767fe9edc9e0df98e07454847909b5e959d7ca0e" -const slpstk = "0x8B4d8443a0229349A9892D4F7CbE89eF5f843F72" -const snxstk = "0x9898d72c2901D09E72A426d1c24b6ab90eB100e7" -const snx = "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f" -const axsstk = "0x099A3B242dceC87e729cEfc6157632d7D5F1c4ef" -const axs = "0xbb0e17ef65f82ab018d8edd776e8dd940327b28b" +const ILV_POOL_V2_ADDRESS = "0x7f5f854FfB6b7701540a00C69c4AB2De2B34291D" +const ILV_TOKEN_ADDRESS = "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E" +const SLP_TOKEN_ADDRESS = "0x6a091a3406E0073C3CD6340122143009aDac0EDa" +const LP_POOL_V1_ADDRESS = "0x8B4d8443a0229349A9892D4F7CbE89eF5f843F72" +const LP_POOL_V2_ADDRESS = "0xe98477bDc16126bB0877c6e3882e3Edd72571Cc2" -async function getTvl(tokens, block){ - const balances = {} - await sumTokensAndLPs(balances, tokens, block) +async function tvl() { + const [{ output: ilvPoolTvl }, { output: lpPoolLpBalance }, { output: lpPoolV1LpBalance }] = await Promise.all([ + // ILVPool + api.abi.call({ + abi: "function getTotalReserves() view returns (uint256 totalReserves)", + target: ILV_POOL_V2_ADDRESS, + }), + // SushiLPPool + api.erc20.balanceOf({ + owner: LP_POOL_V2_ADDRESS, + target: SLP_TOKEN_ADDRESS, + }), + api.erc20.balanceOf({ + owner: LP_POOL_V1_ADDRESS, + target: SLP_TOKEN_ADDRESS, + }) + ]) - return balances -} - -async function staking(timestamp, block) { - return getTvl([ - [ilv, ilvstk], - ], block) -} - -async function pool2(timestamp, block) { - return getTvl([ - [slp, slpstk, true], - ], block) -} - -async function tvl(timestamp, block) { - return getTvl([ - [snx, snxstk], - [axs, axsstk] - ], block) + return { + [ILV_TOKEN_ADDRESS]: new BigNumber(ilvPoolTvl), + [SLP_TOKEN_ADDRESS]: new BigNumber(lpPoolLpBalance).plus(lpPoolV1LpBalance), + } } module.exports = { timetravel: true, - methodology: `Counts the tokens staked on the flash pools, currently SNX on 0x9898d72c2901D09E72A426d1c24b6ab90eB100e7 and AXS on 0x099A3B242dceC87e729cEfc6157632d7D5F1c4ef - pool2 are the SLP tokens locked on 0x8B4d8443a0229349A9892D4F7CbE89eF5f843F72 and staking are the ILV tokens on 0x25121EDDf746c884ddE4619b573A7B10714E2a36`, + methodology: `Based on ILV reserves in the ILVPool contract and SLP in SushiLPPool contracts.`, ethereum:{ tvl, - pool2, - staking }, } \ No newline at end of file From 2884bdbc627d6f3cd3549fe11db5b9249a580060 Mon Sep 17 00:00:00 2001 From: cheng Date: Thu, 20 Apr 2023 15:27:55 +0200 Subject: [PATCH 0021/1354] feat:Remove veth1.0 and update bifrost tvl --- projects/bifrost-staking/index.js | 33 +++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/projects/bifrost-staking/index.js b/projects/bifrost-staking/index.js index 65da65fe40..c9738abbdf 100644 --- a/projects/bifrost-staking/index.js +++ b/projects/bifrost-staking/index.js @@ -1,18 +1,43 @@ const { getExports } = require('../helper/heroku-api') const { nullAddress } = require('../helper/unwrapLPs') -const BigNumber = require("bignumber.js"); module.exports = { timetravel: false, - ...getExports("bifrost-staking", ['bifrost']), + bifrost: { + tvl: async () => { + const { bifrost } = getExports("bifrost-staking", ['bifrost']) + const tvl = await bifrost.tvl() + return { 'bifrost-native-coin': tvl['bifrost-native-coin'], polkadot: tvl.polkadot, kusama: tvl.kusama } + } + }, ethereum: { tvl: async (_, _1, _2, { api }) => { const vETH = await api.call({ target: '0x4bc3263eb5bb2ef7ad9ab6fb68be80e43b43801f', abi: 'uint256:totalSupply' }) - const vETH_v1 = await api.call({ target: '0xc3d088842dcf02c13699f936bb83dfbbc6f721ab', abi: 'uint256:totalSupply' }) return { - [nullAddress]: new BigNumber(vETH).plus(vETH_v1).toString(), + [nullAddress]: vETH, } } + }, + filecoin: { + tvl: async () => { + const { bifrost } = getExports("bifrost-staking", ['bifrost']) + const { filecoin } = await bifrost.tvl() + return { filecoin } + } + }, + moonbeam: { + tvl: async () => { + const { bifrost } = getExports("bifrost-staking", ['bifrost']) + const { moonbeam } = await bifrost.tvl() + return { moonbeam } + } + }, + moonriver: { + tvl: async () => { + const { bifrost } = getExports("bifrost-staking", ['bifrost']) + const { moonriver } = await bifrost.tvl() + return { moonriver } + } } } From a58fb9251acb859bb2d789f3edec6cf68b427961 Mon Sep 17 00:00:00 2001 From: brightiron Date: Sun, 23 Apr 2023 08:51:52 -0500 Subject: [PATCH 0022/1354] import treasury calcs from the olympus project --- projects/treasury/olympus-dao.js | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/projects/treasury/olympus-dao.js b/projects/treasury/olympus-dao.js index 116f925402..309c6c8065 100644 --- a/projects/treasury/olympus-dao.js +++ b/projects/treasury/olympus-dao.js @@ -1,30 +1,3 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); +const olympus = require("../olympus/index"); -const ohmTreasury = "0x9A315BdF513367C0377FB36545857d12e85813Ef"; -const ohmTreasury1 = "0x31F8Cc382c9898b273eff4e0b7626a6987C846E8"; - -const OHM = "0x64aa3364F17a4D01c6f1751Fd97C2BD3D7e7f1D5"; - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT - '0x853d955aCEf822Db058eb8505911ED77F175b99e',//FRAX - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC - '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX - '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0',//FXS - '0x0f2D719407FdBeFF09D87557AbB7232601FD9F29',//SYN - '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8',//agEUR - '0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68',//INV - - ], - owners: [ohmTreasury, ohmTreasury1], - ownTokens: [OHM], - }, -}) \ No newline at end of file +module.exports = olympus; From 5266a72f20b0076224755f216d39eb2e50035f63 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 23 Apr 2023 16:50:21 +0200 Subject: [PATCH 0023/1354] shapeshift: minor fix --- projects/shapeshift/index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/shapeshift/index.js b/projects/shapeshift/index.js index ab9bb44756..8e6a4836e8 100644 --- a/projects/shapeshift/index.js +++ b/projects/shapeshift/index.js @@ -1,4 +1,5 @@ const { staking } = require("../helper/staking"); +const { pool2 } = require("../helper/pool2"); // Contracts const stakingUNIv2Contracts = [ @@ -19,9 +20,13 @@ const FOXy = "0xDc49108ce5C57bc3408c3A5E95F3d864eC386Ed3"; module.exports = { ethereum: { - pool2: staking( - [...stakingUNIv2Contracts, stakingFoxy], - [ETH_FOX_UNIV2, FOX, tFOX, FOXy] + pool2: pool2( + [...stakingUNIv2Contracts, ], + [ETH_FOX_UNIV2, ] + ), + staking: staking( + [stakingFoxy], + [FOX, tFOX] ), tvl: async () => ({}), }, From 31f8b39548f72381be7337afc127daf7418a97a5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 23 Apr 2023 19:32:23 +0200 Subject: [PATCH 0024/1354] ohm: split own tokens in treasury --- projects/olympus/api.js | 8 ++++++ projects/olympus/index.js | 49 ++++++++++++++------------------ projects/treasury/olympus-dao.js | 2 ++ 3 files changed, 32 insertions(+), 27 deletions(-) create mode 100644 projects/olympus/api.js diff --git a/projects/olympus/api.js b/projects/olympus/api.js new file mode 100644 index 0000000000..b83e37f250 --- /dev/null +++ b/projects/olympus/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + ethereum: { + tvl: () => 0, + staking: index.ethereum.staking, + } +} \ No newline at end of file diff --git a/projects/olympus/index.js b/projects/olympus/index.js index 27a0db8f89..69faf7fc69 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -1,6 +1,6 @@ const sdk = require("@defillama/sdk"); const { blockQuery } = require("../helper/http"); -const env= require("../helper/env"); +const env = require("../helper/env"); const BigNumber = require("bignumber.js"); const OlympusStakings = [ @@ -10,7 +10,7 @@ const OlympusStakings = [ "0xFd31c7d00Ca47653c6Ce64Af53c1571f9C36566a", ]; -const OHM = "0x383518188c0c6d7730d91b2c03a03c837814a899"; +const OHM = "0x383518188c0c6d7730d91b2c03a03c837814a899" // this is OHM v1 /** Map any staked assets without price feeds to those with price feeds. * All balances are 1: 1 to their unstaked counterpart that has the price feed. @@ -112,7 +112,7 @@ function sumBalancesByTokenAddress(arr) { * #2. Call tokenRecords with block num from prev query * #3. Sum values returned ***/ -async function tvl(timestamp, block, _, { api }, poolsOnly = false) { +async function tvl(timestamp, block, _, { api }, isOwnTokensMode = false) { const indexedBlockForEndpoint = await blockQuery( subgraphUrls[api.chain], getLatestBlockIndexed, @@ -130,16 +130,16 @@ async function tvl(timestamp, block, _, { api }, poolsOnly = false) { if (now - blockNum[0].timestamp > 3 * aDay) { throw new Error("outdated"); } - const filteredTokenRecords = poolsOnly - ? tokenRecords.filter((t) => t.category === "Protocol-Owned Liquidity") - : tokenRecords; + // const filteredTokenRecords = poolsOnly + // ? tokenRecords.filter((t) => t.category === "Protocol-Owned Liquidity") + // : tokenRecords; /** * iterates over filtered list from subgraph and returns any addresses * that need to be normalized for pricing . * See addressMap above **/ - const normalizedFilteredTokenRecords = filteredTokenRecords.map((token) => { + const normalizedFilteredTokenRecords = tokenRecords.map((token) => { const normalizedAddress = addressMap[token.tokenAddress] ? addressMap[token.tokenAddress] : token.tokenAddress; @@ -149,27 +149,22 @@ async function tvl(timestamp, block, _, { api }, poolsOnly = false) { const tokensToBalances = sumBalancesByTokenAddress( normalizedFilteredTokenRecords ); - const balances = await Promise.all( - tokensToBalances.map(async (token, index) => { - const decimals = await sdk.api.abi.call({ - abi: "erc20:decimals", - target: token.tokenAddress, - chain: api.chain, - }); - return [ - `${api.chain}:${token.tokenAddress}`, - Number( - BigNumber(token.balance) - .times(10 ** decimals.output) - .toFixed(0) - ), - ]; - }) - ); - return Object.fromEntries(balances); + const tokens = tokensToBalances.map(i => i.tokenAddress) + const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) + const ownTokens = new Set([ + '0x0ab87046fBb341D058F17CBC4c1133F25a20a52f', // GOHM + '0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5', // OHM + ].map(i => i.toLowerCase())) + tokensToBalances.map(async (token, i) => { + if (ownTokens.has(token.tokenAddress.toLowerCase())) { + if (!isOwnTokensMode) return; + } else if (isOwnTokensMode) return; + api.add(token.tokenAddress, token.balance * 10 ** decimals[i]) + }) + return api.getBalances() } -async function pool2(timestamp, block, _, { api }) { +async function ownTokens(timestamp, block, _, { api }) { return tvl(timestamp, block, _, { api }, true); } @@ -181,7 +176,7 @@ module.exports = { ethereum: { staking, tvl, - // pool2, + ownTokens, }, arbitrum: { tvl, diff --git a/projects/treasury/olympus-dao.js b/projects/treasury/olympus-dao.js index 309c6c8065..cb0bfc9455 100644 --- a/projects/treasury/olympus-dao.js +++ b/projects/treasury/olympus-dao.js @@ -1,3 +1,5 @@ const olympus = require("../olympus/index"); module.exports = olympus; + +delete module.exports.ethereum.staking \ No newline at end of file From 87ad4a19be40ec8784bfe6846a0d07a71256f931 Mon Sep 17 00:00:00 2001 From: Chris Gutkowski Date: Mon, 24 Apr 2023 09:36:27 +0200 Subject: [PATCH 0025/1354] separate into pool2 and staking categories --- projects/illuvium/index.js | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/projects/illuvium/index.js b/projects/illuvium/index.js index 960c3ff8b6..f891a37210 100644 --- a/projects/illuvium/index.js +++ b/projects/illuvium/index.js @@ -1,5 +1,6 @@ const { api } = require("@defillama/sdk") -const BigNumber = require("bignumber.js") + +const { staking } = require("../helper/staking") const ILV_POOL_V2_ADDRESS = "0x7f5f854FfB6b7701540a00C69c4AB2De2B34291D" const ILV_TOKEN_ADDRESS = "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E" @@ -7,27 +8,14 @@ const SLP_TOKEN_ADDRESS = "0x6a091a3406E0073C3CD6340122143009aDac0EDa" const LP_POOL_V1_ADDRESS = "0x8B4d8443a0229349A9892D4F7CbE89eF5f843F72" const LP_POOL_V2_ADDRESS = "0xe98477bDc16126bB0877c6e3882e3Edd72571Cc2" -async function tvl() { - const [{ output: ilvPoolTvl }, { output: lpPoolLpBalance }, { output: lpPoolV1LpBalance }] = await Promise.all([ - // ILVPool - api.abi.call({ - abi: "function getTotalReserves() view returns (uint256 totalReserves)", - target: ILV_POOL_V2_ADDRESS, - }), - // SushiLPPool - api.erc20.balanceOf({ - owner: LP_POOL_V2_ADDRESS, - target: SLP_TOKEN_ADDRESS, - }), - api.erc20.balanceOf({ - owner: LP_POOL_V1_ADDRESS, - target: SLP_TOKEN_ADDRESS, - }) - ]) +async function ilvStaking() { + const { output: ilvPoolTvl } = await api.abi.call({ + abi: "function getTotalReserves() view returns (uint256 totalReserves)", + target: ILV_POOL_V2_ADDRESS, + }) return { - [ILV_TOKEN_ADDRESS]: new BigNumber(ilvPoolTvl), - [SLP_TOKEN_ADDRESS]: new BigNumber(lpPoolLpBalance).plus(lpPoolV1LpBalance), + [ILV_TOKEN_ADDRESS]: ilvPoolTvl, } } @@ -35,6 +23,8 @@ module.exports = { timetravel: true, methodology: `Based on ILV reserves in the ILVPool contract and SLP in SushiLPPool contracts.`, ethereum:{ - tvl, + tvl: () => 0, + pool2: staking([LP_POOL_V1_ADDRESS, LP_POOL_V2_ADDRESS], SLP_TOKEN_ADDRESS), + staking: ilvStaking, }, } \ No newline at end of file From 671fe9e0c6d2ae17b9cc62676a301c72aeec3cff Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 09:44:50 +0200 Subject: [PATCH 0026/1354] jpeg-d: add autocompounding vault tvl --- projects/jpeg-d/helper/addresses.js | 2 ++ projects/jpeg-d/helper/index.js | 29 +++++++++++++++++++++++++++-- projects/jpeg-d/index.js | 4 +--- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/projects/jpeg-d/helper/addresses.js b/projects/jpeg-d/helper/addresses.js index 46b8804587..262708fe92 100644 --- a/projects/jpeg-d/helper/addresses.js +++ b/projects/jpeg-d/helper/addresses.js @@ -132,7 +132,9 @@ module.exports = { PETH_ETH_VAULT, LP_STAKING, PETH_ETH_F: '0x56D1b6Ac326e152C9fAad749F1F4f9737a049d46', + PETH_POOL: '0x9848482da3ee3076165ce6497eda906e66bb85c5', PUSD_USD_F: '0xF6Cbf5e56a8575797069c7A7FBED218aDF17e3b2', + USD_POOL: '0x8ee017541375f6bcd802ba119bddc94dad6911a1', helperToNftMapping, artBlockOwners, }; diff --git a/projects/jpeg-d/helper/index.js b/projects/jpeg-d/helper/index.js index 21daa5b786..b5fecd16d8 100644 --- a/projects/jpeg-d/helper/index.js +++ b/projects/jpeg-d/helper/index.js @@ -1,4 +1,4 @@ -const { sumTokens2 } = require("../../helper/unwrapLPs"); +const { sumTokens2, nullAddress } = require("../../helper/unwrapLPs"); const abi = require("./abis"); const { VAULTS_ADDRESSES, @@ -13,8 +13,13 @@ const { APE, BAKC, JPEG, - helperToNftMapping, + PETH_POOL, + USD_POOL, + PETH_ETH_F, + PUSD_USD_F, artBlockOwners, + LP_STAKING, + helperToNftMapping, } = require("./addresses"); /** @@ -173,11 +178,31 @@ async function vaultsTvl(api) { }) } + +async function autocompoundingTvl(api) { + const curveBalApi = 'function balances(uint256) view returns (uint256)' + const [ + ethInPETHFactory, pethGaugeSupply, pethGaugeBalance, + usdInPUSDFactory, pusdGaugeSupply, pusdGaugeBalance, + ] = await api.batchCall([ + { target: PETH_POOL, abi: curveBalApi, params: [0]}, + { target: PETH_POOL, abi: 'erc20:totalSupply'}, + { target: PETH_ETH_F, abi: 'erc20:balanceOf', params: [LP_STAKING]}, + { target: USD_POOL, abi: curveBalApi, params: [1]}, + { target: USD_POOL, abi: 'erc20:totalSupply'}, + { target: PUSD_USD_F, abi: 'erc20:balanceOf', params: [LP_STAKING]}, + ]) + + api.add(nullAddress, ethInPETHFactory * pethGaugeSupply / pethGaugeSupply) + api.add('0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490', usdInPUSDFactory * pusdGaugeBalance / pusdGaugeSupply) +} + async function tvl(ts, b, cb, { api }) { await Promise.all([ getStakedApeAmount(api), getWalletStakedBakcCount(api), vaultsTvl(api), + autocompoundingTvl(api), sumTokens2({ api, resolveArtBlocks: true, owners: [...artBlockOwners], }), ]); } diff --git a/projects/jpeg-d/index.js b/projects/jpeg-d/index.js index 3b14659b3f..4af3ac8c51 100644 --- a/projects/jpeg-d/index.js +++ b/projects/jpeg-d/index.js @@ -3,8 +3,6 @@ const { tvl, stakingJPEGD } = require("./helper/index"); const { LP_STAKING, JPEG_WETH_SLP, - PETH_ETH_F, - PUSD_USD_F, } = require("./helper/addresses"); module.exports = { @@ -12,7 +10,7 @@ module.exports = { ethereum: { tvl, staking: stakingJPEGD, - pool2: staking(LP_STAKING, [JPEG_WETH_SLP, PETH_ETH_F, PUSD_USD_F, ]), + pool2: staking(LP_STAKING, [JPEG_WETH_SLP,]), }, hallmarks: [ [1666003500, "pETH borrows"], From 28b07665a81ce3797edbda12fd5598d88b3bd5fa Mon Sep 17 00:00:00 2001 From: define Date: Mon, 24 Apr 2023 11:04:09 +0100 Subject: [PATCH 0027/1354] update printy code --- projects/printy/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/printy/index.js b/projects/printy/index.js index 963704e1e4..2e07502f02 100644 --- a/projects/printy/index.js +++ b/projects/printy/index.js @@ -1,8 +1,8 @@ -const { getUniTVL } = require('../helper/unknownTokens') +const { uniTvlExport } = require("../helper/calculateUniTvl.js"); module.exports = { - misrepresentedTokens: true, avax: { - tvl: getUniTVL({ factory: '0xc62Ca231Cd2b0c530C622269dA02374134511a36', useDefaultCoreAssets: true, }) - } -} \ No newline at end of file + tvl: uniTvlExport("0xc62Ca231Cd2b0c530C622269dA02374134511a36", "avax", undefined, undefined, { hasStablePools: true, useDefaultCoreAssets: false, }), + }, +}; + From cacf13e0f2729931b77fea5239169eaf67a80630 Mon Sep 17 00:00:00 2001 From: Zolidly Date: Mon, 24 Apr 2023 19:32:53 +0900 Subject: [PATCH 0028/1354] Create index.js --- projects/Zolidly/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/Zolidly/index.js diff --git a/projects/Zolidly/index.js b/projects/Zolidly/index.js new file mode 100644 index 0000000000..5dc7396048 --- /dev/null +++ b/projects/Zolidly/index.js @@ -0,0 +1,13 @@ +const { getUniTVL } = require('../helper/unknownTokens'); + +module.exports = { + misrepresentedTokens: true, + era: { + tvl: getUniTVL({ + factory: '0x6E1315819908Eaa036405f405c033cC2BfFBFc75', + useDefaultCoreAssets: true, + hasStablePools: true, + }) + }, + methodology: "Counts liquidity in pools", +}; \ No newline at end of file From af37e9147a38e9e45040d2f7b11b41723d8728b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AC=B8=EB=B3=B4=EC=84=A4?= Date: Mon, 24 Apr 2023 20:05:15 +0900 Subject: [PATCH 0029/1354] Add purple bridge dex --- projects/purple-bridge-dex/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/purple-bridge-dex/index.js diff --git a/projects/purple-bridge-dex/index.js b/projects/purple-bridge-dex/index.js new file mode 100644 index 0000000000..a808ecad53 --- /dev/null +++ b/projects/purple-bridge-dex/index.js @@ -0,0 +1,12 @@ +const sdk = require("@defillama/sdk"); +const { getUniTVL } = require("../helper/unknownTokens"); +// const pUSDC = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" +// const pBORA = "0x0EF39E52704Ad52E2882BBfA6781167E1b6c4510" +// const pair = "0x14be05a3d26991f07288F4a0C85a8d54AFa36a80" + +module.exports = { + timetravel: false, + polygon: { + tvl: getUniTVL({factory: '0x9c9238b2E47D61482D36deaFcDCD448D8bAAd75b', coreAssets: ['usdc', 'pBORA']}), + } +} \ No newline at end of file From 902acdf9471ef0bc902b27b696b5ed89efc94dcd Mon Sep 17 00:00:00 2001 From: define Date: Mon, 24 Apr 2023 12:30:08 +0100 Subject: [PATCH 0030/1354] add treasury illuvium --- projects/treasury/illuvium.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/treasury/illuvium.js diff --git a/projects/treasury/illuvium.js b/projects/treasury/illuvium.js new file mode 100644 index 0000000000..024ba7ac08 --- /dev/null +++ b/projects/treasury/illuvium.js @@ -0,0 +1,11 @@ +const { treasuryExports } = require("../helper/treasury"); + +const Treasury = "0x58c37a622cdf8ace54d8b25c58223f61d0d738aa"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [], + owners: [Treasury], + ownTokens: ['0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E'], + }, +}) \ No newline at end of file From adfd850b6e4617f5d51bc4a76fd38b11488c86b2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 14:45:53 +0200 Subject: [PATCH 0031/1354] fix broken adapters --- projects/alpha-homora/v2.js | 5 +++-- projects/curve/index.js | 1 + projects/helper/compound.js | 4 +++- projects/maker/index.js | 3 +++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/alpha-homora/v2.js b/projects/alpha-homora/v2.js index 3014158d5e..b3a285f840 100644 --- a/projects/alpha-homora/v2.js +++ b/projects/alpha-homora/v2.js @@ -271,12 +271,13 @@ async function getTokenPrices(tokens, block, chain, coreOracleAddress) { chain, abi: abi["getETHPx"], block, + permitFailure: true, }); const tokenPrices = {}; for (let i = 0; i < _ethPrices.length; i++) { - const price = BigNumber(_ethPrices[i].output).div(BigNumber(2).pow(112)); - if (price.gte(0)) { + const price = _ethPrices[i].output / 2 ** 112; + if (price > 0) { tokenPrices[tokens[i]] = price; } } diff --git a/projects/curve/index.js b/projects/curve/index.js index 509d3570fa..70f3ba5513 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -56,6 +56,7 @@ async function getNames(chain, tokens) { abi: erc20Abi.name, calls: missing, chain, + permitFailure: true, }) res.forEach((name, i) => { const key = chain + '-' + missing[i] diff --git a/projects/helper/compound.js b/projects/helper/compound.js index 84ba262639..8a5b37f1ee 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -196,10 +196,12 @@ async function getUnderlyingDecimalsMultiple(block, chain, marketData, cether) { abi: "erc20:decimals", block, chain, + permitFailure: true, }) decimals.forEach(({ output }, i) => { - response[marketData[i].cToken] = output + if (output !== null) + response[marketData[i].cToken] = output }) return response diff --git a/projects/maker/index.js b/projects/maker/index.js index a907826c02..9f1421745c 100644 --- a/projects/maker/index.js +++ b/projects/maker/index.js @@ -27,6 +27,7 @@ async function getJoins(block, api) { const ilks = await api.multiCall({ abi: MakerMCDConstants.ilk, calls: auths, + permitFailure: true, }); ilks.forEach((_, i) => { @@ -57,6 +58,7 @@ async function tvl(timestamp, block, _, { api }) { const { output: gems } = await sdk.api.abi.multiCall({ abi: MakerMCDConstants.gem, block, calls: joins.map(i => ({ target: i })), + permitFailure: true, }) const dogCalls = dogs.map(i => ({ target: i })) @@ -73,6 +75,7 @@ async function tvl(timestamp, block, _, { api }) { const { output: dogRes } = await sdk.api.abi.multiCall({ abi: MakerMCDConstants.dog, calls: dogCalls, block, + permitFailure: true, }) const failedCalls = dogRes.filter(i => !i.success) From a937dceb95ebe5197ef41362a3ef94f48f3ba2fa Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 15:37:11 +0200 Subject: [PATCH 0032/1354] fix broken adapters --- projects/ante/index.js | 1 + projects/creamswap/index.js | 3 ++- projects/inverse/index.js | 1 + projects/ooki/index.js | 2 ++ projects/pilotprotocol/index.js | 1 + projects/reserve/index.js | 2 +- projects/snowball/index.js | 23 ++++++++--------------- projects/unitrade/index.js | 1 + projects/visor/index.js | 1 + 9 files changed, 18 insertions(+), 17 deletions(-) diff --git a/projects/ante/index.js b/projects/ante/index.js index 27687dca1a..d87d385f0c 100644 --- a/projects/ante/index.js +++ b/projects/ante/index.js @@ -130,6 +130,7 @@ Object.keys(CONFIG).forEach((chain) => { calls, chain, block, + permitFailure: true, }); currentRes = res.map((i) => i.output).filter((i) => i); diff --git a/projects/creamswap/index.js b/projects/creamswap/index.js index b65dfda3ac..6269c07821 100644 --- a/projects/creamswap/index.js +++ b/projects/creamswap/index.js @@ -120,7 +120,8 @@ async function tvl(timestamp, block, _, { api }) { sdk.api.abi.multiCall({ block, calls: underlyingBalanceCalls, - abi: abi['balanceOfUnderlying'] + abi: abi['balanceOfUnderlying'], + permitFailure: true, }), sdk.api.abi.multiCall({ block, diff --git a/projects/inverse/index.js b/projects/inverse/index.js index 18b4ec0aaf..d17a373fb4 100644 --- a/projects/inverse/index.js +++ b/projects/inverse/index.js @@ -48,6 +48,7 @@ async function getAllUnderlying(block, tokens) { }) ), abi: abi["underlying"], + permitFailure: true, }) ).output; diff --git a/projects/ooki/index.js b/projects/ooki/index.js index 0c18e506b6..b84a3d3aec 100644 --- a/projects/ooki/index.js +++ b/projects/ooki/index.js @@ -108,6 +108,7 @@ async function getBalances(timestamp, block, chainBlocks, network) { chainBlocks, calls: iTokenCalls, chain: network, + permitFailure: true, abi: abi.totalAssetSupply }); @@ -115,6 +116,7 @@ async function getBalances(timestamp, block, chainBlocks, network) { chainBlocks, calls: iTokenCalls, chain: network, + permitFailure: true, abi: abi.totalAssetBorrow }); diff --git a/projects/pilotprotocol/index.js b/projects/pilotprotocol/index.js index e9872ee8f1..bf37485770 100644 --- a/projects/pilotprotocol/index.js +++ b/projects/pilotprotocol/index.js @@ -91,6 +91,7 @@ const hecoTvl = async (timestamp, ethBlock, chainBlocks) => { })), chain: "heco", block: chainBlocks["heco"], + permitFailure: true, }) ).output.map((st) => st.output); diff --git a/projects/reserve/index.js b/projects/reserve/index.js index d55e2e50cb..08c785988d 100644 --- a/projects/reserve/index.js +++ b/projects/reserve/index.js @@ -22,7 +22,7 @@ async function tvl(_time, block, _, { api }) { const basketHandlers = await api.multiCall({ abi: 'address:basketHandler', calls: mains }) const basketRes = await api.multiCall({ abi: "function quote(uint192, uint8) view returns (address[], uint256[])", calls: basketHandlers.map(i => ({ target: i, params: [0, 0] })) }) const basketTokens = await Promise.all(basketRes.map(async ([tokens]) => { - const aTokens = await api.multiCall({ abi: 'address:ATOKEN', calls: tokens }) + const aTokens = await api.multiCall({ abi: 'address:ATOKEN', calls: tokens, permitFailure: true, }) aTokens.forEach((v, i) => v && ownerTokens.push([[v], tokens[i]])) return tokens.filter((_, i) => !aTokens[i]) })) diff --git a/projects/snowball/index.js b/projects/snowball/index.js index a37e79db5a..618c5a5980 100644 --- a/projects/snowball/index.js +++ b/projects/snowball/index.js @@ -1,4 +1,3 @@ -const sdk = require('@defillama/sdk'); const { request, gql } = require("graphql-request"); const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require('../helper/staking.js'); @@ -27,18 +26,19 @@ query { const XSNOB_CONTRACT = '0x83952E7ab4aca74ca96217D6F8f7591BEaD6D64E'; const SNOB_TOKEN_CONTRACT = '0xc38f41a296a4493ff429f1238e030924a1542e50'; -async function getStableVaultBalances(balances, stablevaults, block, api) { +async function getStableVaultBalances(stablevaults, api) { const calls = stablevaults.map(i => [0, 1, 2, 3].map(num => ({ params: num, target: i.swapAddress }))).flat() - const tokens = await api.multiCall({ abi: abi.getToken, calls: calls, withMetadata: true, }) + const tokens = await api.multiCall({ abi: abi.getToken, calls: calls, withMetadata: true, + permitFailure: true, }) const toa = [] tokens.forEach(i => { if (!i.output) return; toa.push([i.output, i.input.target]) }) - return sumTokens2({ balances, api, tokensAndOwners: toa }) + return sumTokens2({ api, tokensAndOwners: toa }) } -async function getSnowglobeBalances(balances, snowglobes, block, api) { +async function getSnowglobeBalances(snowglobes, api) { const singleSidedPairs = snowglobes.map(globe => globe.snowglobeAddress).filter(i => i) const [tokens, tokenBalances] = await Promise.all([ api.multiCall({ @@ -50,25 +50,18 @@ async function getSnowglobeBalances(balances, snowglobes, block, api) { abi: abi.balance }) ]) - tokens.map((token, idx) => { - sdk.util.sumSingleBalance(balances, `avax:${token}`, tokenBalances[idx]); - }) - return balances + api.addTokens(tokens, tokenBalances) } async function tvl(_timestamp, _ethereumBlock, chainBlocks, { api }) { - const balances = {} - const block = chainBlocks['avax']; - let data = await request(API_URL, query); const deprecatedSnowglobes = data.DeprecatedContracts.filter(contract => contract.kind === "Snowglobe").map(contract => ({ pair: contract.pair, snowglobeAddress: contract.contractAddresses[0] })); const deprecatedStablevaults = data.DeprecatedContracts.filter(contract => contract.kind === "Stablevault").map(contract => ({ swapAddress: contract.contractAddresses[2] })); await Promise.all([ - getStableVaultBalances(balances, data.StablevaultContracts.concat(deprecatedStablevaults), block, api), - getSnowglobeBalances(balances, data.SnowglobeContracts.concat(deprecatedSnowglobes), block, api), + getStableVaultBalances(data.StablevaultContracts.concat(deprecatedStablevaults), api), + getSnowglobeBalances(data.SnowglobeContracts.concat(deprecatedSnowglobes), api), ]) - return balances; } module.exports = { diff --git a/projects/unitrade/index.js b/projects/unitrade/index.js index 69c786f2ef..17bf1e9939 100644 --- a/projects/unitrade/index.js +++ b/projects/unitrade/index.js @@ -64,6 +64,7 @@ async function tvl(_, block) { target: UNITRADE_BRIDGE, params: index, })), + permitFailure: true, }) ).output .filter((item) => item.output !== null) diff --git a/projects/visor/index.js b/projects/visor/index.js index 24c22a6df2..6c75ef1154 100644 --- a/projects/visor/index.js +++ b/projects/visor/index.js @@ -93,6 +93,7 @@ async function getHypervisorBalances({ hypervisors, api, balances = {} }) { const supplies = await api.multiCall({ abi: "erc20:totalSupply", calls: hypervisors, + permitFailure: true, }); hypervisors = hypervisors.filter((_, i) => +supplies[i] > 0); From 4901f3a67673c725837ef7245167b82cd9801f0a Mon Sep 17 00:00:00 2001 From: smak0v Date: Mon, 24 Apr 2023 16:43:34 +0300 Subject: [PATCH 0033/1354] Asymetrix protocol adapter added --- projects/asymetrix/index.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 projects/asymetrix/index.js diff --git a/projects/asymetrix/index.js b/projects/asymetrix/index.js new file mode 100644 index 0000000000..d79bec3c9b --- /dev/null +++ b/projects/asymetrix/index.js @@ -0,0 +1,31 @@ +const sdk = require("@defillama/sdk"); + +const STAKE_PRIZE_POOL_CONTRACT = "0x82D24dD5041A3Eb942ccA68B319F1fDa9EB0c604"; +const ST_ETH_TOKEN_CONTRACT = "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"; + +async function tvl(_timestamp, _ethBlock) { + const balances = {}; + + const stETHBalance = await sdk.api.abi.call({ + abi: "erc20:balanceOf", + target: ST_ETH_TOKEN_CONTRACT, + params: [STAKE_PRIZE_POOL_CONTRACT], + }); + + sdk.util.sumSingleBalance( + balances, + ST_ETH_TOKEN_CONTRACT, + stETHBalance.output, + sdk.api.chain + ); + + return balances; +} + +module.exports = { + methodology: + "TVL is counted as the amount of all stETH on the StakePrizePool contract. stETH that is not distributed yet are also counting because they will be distributed in the end of the current draw.", + ethereum: { + tvl, + }, +}; From 4f95b4ef313fcc062da950ad6b51b345755464eb Mon Sep 17 00:00:00 2001 From: graykode Date: Mon, 24 Apr 2023 22:51:23 +0900 Subject: [PATCH 0034/1354] feat: fix mango address to Treasury --- projects/mango-farmers-club/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/mango-farmers-club/index.js b/projects/mango-farmers-club/index.js index 6a7b7c7226..6b85f462bd 100644 --- a/projects/mango-farmers-club/index.js +++ b/projects/mango-farmers-club/index.js @@ -2,6 +2,6 @@ const { sumTokensExport } = require('../helper/unwrapLPs'); module.exports = { polygon_zkevm: { - tvl: sumTokensExport({ owner: '0x05Cd3c8Ded966BE2556A8A83190aEF845f24eB76', tokens: ['0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035']}) + tvl: sumTokensExport({ owner: '0x4eA8496D4D1d4EcF6eD6DaeA95D1A0856F8A5177', tokens: ['0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035']}) } }; From 2d2587a892c6e99ae1e215c325b1a621046833c1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 16:41:41 +0200 Subject: [PATCH 0035/1354] fix broken adapters --- projects/good-ghosting/index.js | 3 +- projects/polysynth/index.js | 2 +- projects/tetu/abi.json | 1 + projects/tetu/index.js | 117 +++++++------------------------- projects/ttswap/index.js | 2 +- 5 files changed, 28 insertions(+), 97 deletions(-) diff --git a/projects/good-ghosting/index.js b/projects/good-ghosting/index.js index 4f3c4be3a7..8e13b050dc 100644 --- a/projects/good-ghosting/index.js +++ b/projects/good-ghosting/index.js @@ -65,9 +65,10 @@ function tvl(chain) { .flat(); const gameContractBalances = await sdk.api.abi.multiCall({ - calls, + calls: calls.filter(i => i.target), abi: "erc20:balanceOf", chain, + permitFailure: true, }); sdk.util.sumMultiBalanceOf( diff --git a/projects/polysynth/index.js b/projects/polysynth/index.js index 990f7284eb..5bba442ccb 100644 --- a/projects/polysynth/index.js +++ b/projects/polysynth/index.js @@ -22,7 +22,7 @@ Object.keys(chains).forEach(chain => { tvl: async (_, _b, _cb, { api, }) => { const vaultData = await getVaults(chain) const vaults = vaultData.map(i => i.id) - const beefys = await api.multiCall({ abi: 'address:BEEFY_VAULT', calls: vaults }) + const beefys = await api.multiCall({ abi: 'address:BEEFY_VAULT', calls: vaults, permitFailure: true, }) const tokens = vaultData.map((v, i) => beefys[i] ? beefys[i] : v.underlying_asset) return sumTokens2({ api, tokensAndOwners2: [tokens, vaults] }) } diff --git a/projects/tetu/abi.json b/projects/tetu/abi.json index 798eaf0443..8604871d56 100644 --- a/projects/tetu/abi.json +++ b/projects/tetu/abi.json @@ -2,6 +2,7 @@ "vaultsLength": "uint256:vaultsLength", "vaults": "function _vaults(uint256) view returns (address)", "vaultTvlUsdc": "function vaultTvlUsdc(address _vault) view returns (uint256)", + "totalTvlUsdc": "function totalTvlUsdc(address[] _vault) view returns (uint256)", "strategy": "address:strategy", "platform": "uint8:platform", "vaultsList": "address[]:vaultsList", diff --git a/projects/tetu/index.js b/projects/tetu/index.js index 3766e68402..3fddd12187 100644 --- a/projects/tetu/index.js +++ b/projects/tetu/index.js @@ -30,142 +30,71 @@ const config = { fantom: { bookkeeper: '0x00379dD90b2A337C4652E286e4FBceadef940a21', contract_Reader: '0xa4EB2E1284D9E30fb656Fe6b34c1680Ef5d4cBFC', - controllerV2: '', - veTETU: '', }, bsc: { bookkeeper: '0x8A571137DA0d66c2528DA3A83F097fbA10D28540', contract_Reader: '0xE8210A2d1a7B56115a47B8C06a72356773f6838E', - controllerV2: '', - veTETU: '', }, ethereum: { bookkeeper: '0xb8bA82F19A9Be6CbF6DAF9BF4FBCC5bDfCF8bEe6', contract_Reader: '0x6E4D8CAc827B52E7E67Ae8f68531fafa36eaEf0B', - controllerV2: '', - veTETU: '', }, } Object.keys(config).forEach(chain => { const { bookkeeper, contract_Reader, controllerV2, veTETU } = config[chain] module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const vaultLength = ( - await sdk.api.abi.call({ - abi: abi.vaultsLength, - target: bookkeeper, - block, chain, - }) - ).output; - let calls = getParamCalls(vaultLength) - const { output: vaultAddresses } = await sdk.api.abi.multiCall({ - target: bookkeeper, - abi: abi.vaults, - calls, chain, block, - }) - - calls = vaultAddresses.map(i => ({ target: i.output })) - const { output: strategies } = await sdk.api.abi.multiCall({ - abi: abi.strategy, - calls, - chain, block, - }) - - calls = strategies.map(i => ({ target: i.output })) - const { output: platforms } = await sdk.api.abi.multiCall({ - abi: abi.platform, - calls, chain, block, - }) - + tvl: async (_, _b, { [chain]: block }, { api }) => { + const vaultAddresses = await api.fetchList({ lengthAbi: abi.vaultsLength, itemAbi: abi.vaults, target: bookkeeper }) + const strategies = await api.multiCall({ abi: abi.strategy, calls: vaultAddresses, }) + const platforms = await api.multiCall({ abi: abi.platform, calls: strategies, }) const vaultsCall = [] - for (let i = 0; i < vaultLength; i++) { - if (EXCLUDED_PLATFORMS[platforms[i].output] === true) + + for (let i = 0; i < vaultAddresses.length; i++) { + if (EXCLUDED_PLATFORMS[platforms[i]] === true) continue; // exclude duplication count or broken vaults - if (EXCLUDED_VAULTS[chain] && EXCLUDED_VAULTS[chain][vaultAddresses[i].output.toLowerCase()] === true) + if (EXCLUDED_VAULTS[chain] && EXCLUDED_VAULTS[chain][vaultAddresses[i].toLowerCase()] === true) continue; - vaultsCall.push({ params: vaultAddresses[i].output }) + vaultsCall.push(vaultAddresses[i]) } // TetuV2 vaults let usdcsV2 = []; - if(controllerV2 && controllerV2 !== '') { - const vaultsV2Call = []; - const vaultsV2 = ( - await sdk.api.abi.call({ - abi: abi.vaultsList, - target: controllerV2, - block, chain, - }) - ).output; - for(const vault of vaultsV2) { - vaultsV2Call.push({ params: vault }) - } - const { output: _usdcsV2 } = await sdk.api.abi.multiCall({ - target: contract_Reader, - abi: abi.vaultERC4626TvlUsdc, - calls: vaultsV2Call, - chain, block, - }) - usdcsV2 = _usdcsV2; + if (controllerV2) { + const vaultsV2 = (await api.call({ abi: abi.vaultsList, target: controllerV2, })); + usdcsV2 = await api.multiCall({ target: contract_Reader, abi: abi.vaultERC4626TvlUsdc, calls: vaultsV2, permitFailure: true, }) } // veTETU let veTETU_USDC = 0; - if(veTETU && veTETU !== '') { - for(let i = 0; i < 100; i++) { + if (veTETU) { + for (let i = 0; i < 100; i++) { let token = ''; try { - token = ( - await sdk.api.abi.call({ - abi: abi.veTokens, - target: veTETU, - params: i, - block, chain - }) - ).output; + token = (await api.call({ abi: abi.veTokens, target: veTETU, params: i, })); } catch (e) { // assume that tokens ended // we don't have length for tokens so this workaround break; } - const amount = ( - await sdk.api.abi.call({ - abi: abi.balanceOf, - target: token, - params: veTETU, - block, chain, - }) - ).output; - - const price = ( - await sdk.api.abi.call({ - abi: abi.getPrice, - target: contract_Reader, - params: token, - block, chain, - }) - ).output; + const amount = (await api.call({ abi: abi.balanceOf, target: token, params: veTETU, })); + const price = (await api.call({ abi: abi.getPrice, target: contract_Reader, params: token, })); // assume all tokens inside with decimal 18 // if not need addtionial call with decimals veTETU_USDC += amount * price / 1e36; } - } - const { output: usdcs } = await sdk.api.abi.multiCall({ - target: contract_Reader, - abi: abi.vaultTvlUsdc, - calls: vaultsCall, - chain, block, - }) - let total = veTETU_USDC - usdcs.forEach(i => total += i.output / 1e18) - usdcsV2.forEach(i => total += i.output / 1e18) + for (const vault of vaultsCall) { + const usdcs = await api.call({ target: contract_Reader, abi: abi.totalTvlUsdc, params: [[vault]], }) + total += usdcs / 1e18 + } + + usdcsV2.forEach(i => total += i / 1e18) return { 'usd-coin': total } diff --git a/projects/ttswap/index.js b/projects/ttswap/index.js index 662b5eb69d..3d55c03325 100644 --- a/projects/ttswap/index.js +++ b/projects/ttswap/index.js @@ -14,7 +14,7 @@ async function tvl(_, _b, _cb, { api, }) { onlyArgs: true, fromBlock: 13154136, }) - const calls = logs.map(i => ({ target: i.token, params: i.exchange })) + const calls = logs.map(i => ({ target: i.token, params: i.exchange })).filter(i => i.target.toLowerCase() !== '0xcE393b11872EE5020828e443f6Ec9DE58CD8b6c5'.toLowerCase()) const allToken1Res = await api.multiCall({ abi: 'erc20:balanceOf', calls }) const tokenFilter = (_, i) => allToken1Res[i] && +allToken1Res[i] > 0 const token1s = calls.map(i => i.target).filter(tokenFilter) From 31fed17350d2481fb8b860bbd858e11ebc7bdc25 Mon Sep 17 00:00:00 2001 From: OmiAkk Date: Mon, 24 Apr 2023 20:53:46 +0500 Subject: [PATCH 0036/1354] Added Theta TVL --- projects/OCTOplace/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/OCTOplace/index.js b/projects/OCTOplace/index.js index 31d7080edf..9dd8a88ba5 100644 --- a/projects/OCTOplace/index.js +++ b/projects/OCTOplace/index.js @@ -1,10 +1,12 @@ const sdk = require("@defillama/sdk"); const { sumTokensExport } = require("../helper/unwrapLPs"); -const contract = "0x61F91266F6abEA61447E00EB781A3c38a3D1b925"; -const KAVA = "0x0000000000000000000000000000000000000000"; +const contractKAVA = "0x61F91266F6abEA61447E00EB781A3c38a3D1b925"; +const contractTHETA = "0x6e4c614da85DD861e08f84706742239dBA892Df1"; +const KAVA_TFUEL = "0x0000000000000000000000000000000000000000"; // Native coin const USDC = "0xfa9343c3897324496a05fc75abed6bac29f8a40f"; module.exports = { - kava: { tvl: sumTokensExport({ owner: contract, tokens: [KAVA, USDC] }) }, + kava: { tvl: sumTokensExport({ owner: contractKAVA, tokens: [KAVA_TFUEL, USDC] }) }, + theta: { tvl: sumTokensExport({ owner: contractTHETA, tokens: [KAVA_TFUEL] }) } }; From a78e520c15b9cc500547afe4c91ae0c312227a72 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:29:39 +0200 Subject: [PATCH 0037/1354] fix broken adapters --- projects/cream/index.js | 2 ++ projects/sharky/helper/index.js | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/cream/index.js b/projects/cream/index.js index 34e09461ec..e1b727a71f 100644 --- a/projects/cream/index.js +++ b/projects/cream/index.js @@ -46,6 +46,7 @@ async function ethereumTvl(timestamp, block) { block, calls: tokens_ethereum.map((token) => ({ target: token.token_address })), abi: abiCerc20["underlying"], + permitFailure: true, }) ).output; @@ -123,6 +124,7 @@ async function lending(block, chain, borrowed) { block, calls: tokens_bsc.map((token) => ({ target: token.token_address })), abi: abiCerc20["underlying"], + permitFailure: true, chain, }) ).output; diff --git a/projects/sharky/helper/index.js b/projects/sharky/helper/index.js index 25f9b4f23b..49a955cc8c 100644 --- a/projects/sharky/helper/index.js +++ b/projects/sharky/helper/index.js @@ -27,7 +27,7 @@ async function borrowed(timestamp, _, _1, { api }) { return +time.start + +time.duration > timestamp }) api.log('active loans count: ',loans.length) - loans.forEach(i => api.add(i.valueTokenMint, i.principalLamports.toString())) + loans.forEach(i => api.add(i.valueTokenMint.toString(), i.principalLamports.toString())) } async function tvl(timestamp, _, _1, { api }) { @@ -38,7 +38,7 @@ async function tvl(timestamp, _, _1, { api }) { return !i.loanState.taken }) api.log('Loans yet to be taken: ',loans.length) - loans.forEach(i => api.add(i.valueTokenMint, i.principalLamports.toString())) + loans.forEach(i => api.add(i.valueTokenMint.toString(), i.principalLamports.toString())) } module.exports = { From 43f2fb2b6ed3b02e69236f2837737d4a898ce6ea Mon Sep 17 00:00:00 2001 From: 0xchiado <128964553+0xchiado@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:32:24 +0200 Subject: [PATCH 0038/1354] new factory addresses. added new chain: Optimism (#6045) * test * added SwapLine adapter * added SwapLine adapter * added new Fantom factory address; added Optimism Factory details --- projects/swapline/index.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/projects/swapline/index.js b/projects/swapline/index.js index e4d876ec28..62d0358fbf 100644 --- a/projects/swapline/index.js +++ b/projects/swapline/index.js @@ -1,20 +1,22 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const factories = { - fantom: '0xdD693b9F810D0AEE1b3B74C50D3c363cE45CEC0C', + fantom: '0x640801a6983c109805E928dc7d9794080C21C88E', + optimism: '0xd08C98F6409fCAe3E61f3157B4147B6595E60cf3', } + async function tvl(_, _b, _cb, { api, }) { const pools = await api.fetchList({ target: factories[api.chain], - itemAbi: 'function allLBPairs(uint256) view returns (address)', + itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', lengthAbi: 'uint256:getNumberOfLBPairs', }) const tokenA = await api.multiCall({ - abi: 'address:tokenX', + abi: 'address:getTokenX', calls: pools, }) const tokenB = await api.multiCall({ - abi: 'address:tokenY', + abi: 'address:getTokenY', calls: pools, }) const toa = [] @@ -30,4 +32,7 @@ module.exports = { fantom:{ tvl, }, + optimism:{ + tvl, + }, }; \ No newline at end of file From a7180dff6095ed15338afb89ab7507fa1cb24367 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:39:59 +0200 Subject: [PATCH 0039/1354] purple bridge: minor refactor --- projects/purple-bridge-dex/index.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/projects/purple-bridge-dex/index.js b/projects/purple-bridge-dex/index.js index a808ecad53..aa1627babb 100644 --- a/projects/purple-bridge-dex/index.js +++ b/projects/purple-bridge-dex/index.js @@ -1,12 +1,8 @@ -const sdk = require("@defillama/sdk"); const { getUniTVL } = require("../helper/unknownTokens"); -// const pUSDC = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" -// const pBORA = "0x0EF39E52704Ad52E2882BBfA6781167E1b6c4510" -// const pair = "0x14be05a3d26991f07288F4a0C85a8d54AFa36a80" module.exports = { - timetravel: false, + misrepresentedTokens: true, polygon: { - tvl: getUniTVL({factory: '0x9c9238b2E47D61482D36deaFcDCD448D8bAAd75b', coreAssets: ['usdc', 'pBORA']}), + tvl: getUniTVL({factory: '0x9c9238b2E47D61482D36deaFcDCD448D8bAAd75b', useDefaultCoreAssets: true, }), } } \ No newline at end of file From e2d5456cb6549d02dd923845c1e8863ad037f3b3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:51:39 +0200 Subject: [PATCH 0040/1354] asymetrix: minor refactor --- projects/asymetrix/index.js | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/projects/asymetrix/index.js b/projects/asymetrix/index.js index d79bec3c9b..cfe62ab370 100644 --- a/projects/asymetrix/index.js +++ b/projects/asymetrix/index.js @@ -1,31 +1,12 @@ -const sdk = require("@defillama/sdk"); +const { sumTokensExport } = require("../helper/unwrapLPs"); const STAKE_PRIZE_POOL_CONTRACT = "0x82D24dD5041A3Eb942ccA68B319F1fDa9EB0c604"; const ST_ETH_TOKEN_CONTRACT = "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"; -async function tvl(_timestamp, _ethBlock) { - const balances = {}; - - const stETHBalance = await sdk.api.abi.call({ - abi: "erc20:balanceOf", - target: ST_ETH_TOKEN_CONTRACT, - params: [STAKE_PRIZE_POOL_CONTRACT], - }); - - sdk.util.sumSingleBalance( - balances, - ST_ETH_TOKEN_CONTRACT, - stETHBalance.output, - sdk.api.chain - ); - - return balances; -} - module.exports = { methodology: "TVL is counted as the amount of all stETH on the StakePrizePool contract. stETH that is not distributed yet are also counting because they will be distributed in the end of the current draw.", ethereum: { - tvl, + tvl: sumTokensExport({ owners: [STAKE_PRIZE_POOL_CONTRACT], tokens: [ST_ETH_TOKEN_CONTRACT]}), }, }; From 16f9f29f3d23733aef9da2f82633902dd18200e2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 19:42:53 +0200 Subject: [PATCH 0041/1354] fix sentiment --- projects/helper/http.js | 4 ++-- projects/sentiment/index.js | 25 +++++++++++++++++-------- projects/sudoswap/index.js | 3 ++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/projects/helper/http.js b/projects/helper/http.js index 5078f7362f..adc522911b 100644 --- a/projects/helper/http.js +++ b/projects/helper/http.js @@ -105,9 +105,9 @@ async function blockQuery(endpoint, query, { api, blockCatchupLimit = 500, }) { } } -async function graphFetchById({ endpoint, query, params = {}, options: { timestamp, chain, chainBlocks, useBlock = false } = {} }) { +async function graphFetchById({ endpoint, query, params = {}, api, options: { useBlock = false } = {} }) { if (useBlock && !params.block) - params.block = await getBlock(timestamp, chain, chainBlocks) - 100 + params.block = await api.getBlock() - 100 let data = [] let lastId = "" diff --git a/projects/sentiment/index.js b/projects/sentiment/index.js index aefd268e8b..85fcf39b83 100644 --- a/projects/sentiment/index.js +++ b/projects/sentiment/index.js @@ -1,10 +1,14 @@ +const { graphFetchById } = require('../helper/http') + async function tvl(timestamp, ethBlock, { arbitrum: block }, { api }) { const tokens = await api.call({ target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", abi: "address[]:getAllLTokens", }) const assets = await api.multiCall({ calls: tokens, abi: "address:asset", }) const totalAssets = await api.multiCall({ calls: tokens, abi: "uint256:totalAssets", }) api.addTokens(assets, totalAssets) - const userAccounts = await api.call({ target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", abi: "address[]:getAllAccounts", }) + // const userAccounts = await api.call({ target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", abi: "address[]:getAllAccounts", }) + const data = await graphFetchById({ endpoint: 'https://api.thegraph.com/subgraphs/name/r0ohafza/sentiment', query, api, options: { useBlock: true, }}) + const userAccounts = data.map(i => i.id) const [equity, borrows] = await Promise.all([ api.multiCall({ target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", calls: userAccounts, abi: "function getBalance(address account) view returns (uint256)", }), api.multiCall({ target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", calls: userAccounts, abi: "function getBorrows(address account) view returns (uint256)", }), @@ -13,13 +17,6 @@ async function tvl(timestamp, ethBlock, { arbitrum: block }, { api }) { api.add('0x82af49447d8a07e3bd95bd0d56f35241523fbab1', equity[i] - borrows[i], {}) } -async function borrowed(timestamp, ethBlock, { arbitrum: block }, { api }) { - const tokens = await api.call({ target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", abi: "address[]:getAllLTokens", }) - const assets = await api.multiCall({ calls: tokens, abi: "address:asset", }) - const borrows = await api.multiCall({ calls: tokens, abi: "uint256:borrows", }) - api.addTokens(assets, borrows) -} - module.exports = { misrepresentedTokens: true, arbitrum: { tvl, }, @@ -27,3 +24,15 @@ module.exports = { [Math.floor(new Date('2023-04-04')/1e3), '1M hack'], ], }; + +const query = `query get_accounts($lastId: String!, $block: Int!) { + accounts( + first: 1000 + block: {number: $block} + where: {and: [{id_gt: $lastId}, {or: [{balance_gt: 0}, {debt_gt: 0}]}]} + ) { + id + balance + debt + } +}` \ No newline at end of file diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js index 28ae7d9a9f..87edf70fb4 100644 --- a/projects/sudoswap/index.js +++ b/projects/sudoswap/index.js @@ -39,8 +39,9 @@ module.exports = { const data = await graphFetchById({ endpoint: 'https://api.thegraph.com/subgraphs/name/zeframlou/sudoswap', query, + api, options: { - timestamp, chain: 'ethereum', chainBlocks, useBlock: true, + useBlock: true, } }) const balances = {} From 0b9095fc46a0eb38f0d9ea44c7eeead793b306b3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 19:58:17 +0200 Subject: [PATCH 0042/1354] add forta staking --- projects/forta/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/forta/index.js diff --git a/projects/forta/index.js b/projects/forta/index.js new file mode 100644 index 0000000000..3974efb36f --- /dev/null +++ b/projects/forta/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + polygon: { + tvl: () => 0, + staking: sumTokensExport({ owner: '0xd2863157539b1d11f39ce23fc4834b62082f6874', tokens: ['0x9ff62d1fc52a907b6dcba8077c2ddca6e6a9d3e1'] }) + } +} \ No newline at end of file From 669ca16986fc21b4175b4c8256f6e43bc5255be3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 20:07:32 +0200 Subject: [PATCH 0043/1354] fix kimberlite --- projects/kimberlite/index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/kimberlite/index.js b/projects/kimberlite/index.js index 497169f55c..a7dae25a41 100644 --- a/projects/kimberlite/index.js +++ b/projects/kimberlite/index.js @@ -3,15 +3,13 @@ const abi = require('./abi.json') const { sumUnknownTokens, } = require('../helper/unknownTokens') module.exports = { + methodology: 'Counts TVL of all the tokens locked on the Kimberlite Safe locker smart contracts' }; Object.values(config).forEach(({ chain, locker, startBlock }) => { module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - const length = await api.call({ abi: abi.depositId, target: locker}) - const calls = [] - for (let i = 0;i <=length;i++) calls.push(i) - const data = await api.multiCall({ abi: abi.lockedToken, calls, target: locker, }) + const data = await api.fetchList({ lengthAbi: abi.depositId, itemAbi: abi.lockedToken, target: locker, startFromOne: true, }) const tokensAndOwners = data // .filter(i => !i.withdrawn) .map((i) => [i.tokenAddress, locker]) From 1d75287a86c54250ceab0e02d61f3d656ad69f95 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 24 Apr 2023 20:23:53 +0100 Subject: [PATCH 0044/1354] add hallmark swapline --- projects/swapline/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/swapline/index.js b/projects/swapline/index.js index 62d0358fbf..166dae27e5 100644 --- a/projects/swapline/index.js +++ b/projects/swapline/index.js @@ -28,6 +28,9 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { + hallmarks: [ + [1682298000,"Launch on Optimism"] + ], methodology: 'We count the token balances in in different liquidity book contracts', fantom:{ tvl, From 6a3f56e3c0074a14b42af93ec43d1643f340c6ad Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Apr 2023 22:10:42 +0200 Subject: [PATCH 0045/1354] add rabbitx --- projects/filda/index.js | 3 +++ projects/rabbitx/index.js | 7 +++++++ 2 files changed, 10 insertions(+) create mode 100644 projects/rabbitx/index.js diff --git a/projects/filda/index.js b/projects/filda/index.js index 291104af60..9d850c9a74 100644 --- a/projects/filda/index.js +++ b/projects/filda/index.js @@ -139,4 +139,7 @@ module.exports = { elastos: compoundExportsWithDifferentBase("0xE52792E024697A6be770e5d6F1C455550265B2CD", "elastos", "elastos"), kava: compoundExportsWithDifferentBase("0xD2CBE89a36df2546eebc71766264e0F306d38196", "kava", "kava"), bittorrent: compoundExportsWithDifferentBase("0xE52792E024697A6be770e5d6F1C455550265B2CD", "bittorrent", "bittorrent"), + hallmarks: [ + [Math.floor(new Date('2023-04-24')/1e3), 'Protocol was hacked'], + ], }; diff --git a/projects/rabbitx/index.js b/projects/rabbitx/index.js new file mode 100644 index 0000000000..cec06935ce --- /dev/null +++ b/projects/rabbitx/index.js @@ -0,0 +1,7 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: sumTokensExport({ owner: '0xFc7f884DE22a59c0009C91733196b012Aecb8F41', tokens: ['0xdac17f958d2ee523a2206206994597c13d831ec7']}) + } +} \ No newline at end of file From c40eda1fe28ed71e35b68f83ea32180577edca02 Mon Sep 17 00:00:00 2001 From: thehashplayer <103730609+thehashplayer@users.noreply.github.com> Date: Tue, 25 Apr 2023 12:02:28 +0800 Subject: [PATCH 0046/1354] add metaid --- projects/metaid/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/metaid/index.js diff --git a/projects/metaid/index.js b/projects/metaid/index.js new file mode 100644 index 0000000000..f7ad62ea0e --- /dev/null +++ b/projects/metaid/index.js @@ -0,0 +1,15 @@ +const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') +const USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f" +const wkava = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b" +const MetaId = "0x8dD02F065EE650787A414568a13948629fa21333" + + +module.exports = { + kava: { + tvl: sumTokensExport({ tokensAndOwners: [ + [USDC, MetaId], + [wkava, MetaId], + [nullAddress, MetaId], + ]}), + }, + } \ No newline at end of file From 80163c2ea375a6958e1831b9da0afd3a227bfc6d Mon Sep 17 00:00:00 2001 From: LionDEX <131145154+LionDEXDev@users.noreply.github.com> Date: Tue, 25 Apr 2023 05:12:07 +0000 Subject: [PATCH 0047/1354] add liondex --- projects/liondex/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/liondex/index.js diff --git a/projects/liondex/index.js b/projects/liondex/index.js new file mode 100644 index 0000000000..307110da7a --- /dev/null +++ b/projects/liondex/index.js @@ -0,0 +1,18 @@ +const { staking } = require('../helper/staking') +const { sumTokens2,sumTokensExport } = require('../helper/unwrapLPs') + +const treasure = "0x7fca3bf8adc4e143bd789aecda36c0ce34f1d75b"; +const lionDEXVault = "0x8eF99304eb88Af9BDe85d58a35339Cb0e2a557B6"; +const lionStaking = "0x154E2b1dBE9F493fF7938E5d686366138ddCE017"; +const LION = "0x8ebb85d53e6955e557b7c53acde1d42fd68561ec"; +const fsGLP = "0x1aDDD80E6039594eE970E5872D247bf0414C8903"; +const USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; + + +module.exports = { + methodology: `Counts USDC in treasure and fsGLP deposited to lionDEXVault. Staking counts Lion deposited to stakingPool.`, + arbitrum: { + tvl: sumTokensExport({ chain: 'arbitrum', owners: [treasure, lionDEXVault], tokens: [ fsGLP, USDC]}), + staking: staking(lionStaking, LION, 'arbitrum') + } +} \ No newline at end of file From 6a9ee851a02c35a479bb30dfc5149069e72d07f8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 07:48:41 +0200 Subject: [PATCH 0048/1354] fix array-capital --- projects/array-capital/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/array-capital/index.js b/projects/array-capital/index.js index 7e2cdbc13e..c878cc4a74 100644 --- a/projects/array-capital/index.js +++ b/projects/array-capital/index.js @@ -1,7 +1,7 @@ const { staking } = require('../helper/staking'); -const token = "0x53Fd70B568e5C8DACe2cE3c38E650F5924BeB1c1"; -const masterchef = "0xA55Cb77E8CeBc3fe517044d0AaA923d541a69e71"; +const token = "0x164731cd270daa4a94bc70761e53320e48367b8b"; +const masterchef = "0x1b91b24d12C934383f25aa07C2c9C9666accf39e"; module.exports = { arbitrum: { From 12c0a1bade18f32d0bbac18a7992def44e04fb51 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 07:58:11 +0200 Subject: [PATCH 0049/1354] fix camelot --- projects/camelot/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/camelot/index.js b/projects/camelot/index.js index 1458b0bd9c..060254dd45 100644 --- a/projects/camelot/index.js +++ b/projects/camelot/index.js @@ -1,9 +1,9 @@ -const { uniTvlExport } = require("../helper/calculateUniTvl"); +const { getUniTVL } = require("../helper/unknownTokens"); + module.exports = { - doublecounted: false, - timetravel: true, + misrepresentedTokens: true, start: 1669075200, arbitrum: { - tvl: uniTvlExport("0x6EcCab422D763aC031210895C81787E87B43A652", "arbitrum"), + tvl: getUniTVL({ factory: '0x6EcCab422D763aC031210895C81787E87B43A652', useDefaultCoreAssets: true,}), }, }; \ No newline at end of file From fb3f14aa660c927a3096812ee0d726ac1929476a Mon Sep 17 00:00:00 2001 From: Krunal Jariwala Date: Tue, 25 Apr 2023 12:46:50 +0530 Subject: [PATCH 0050/1354] Adapter for Selfex --- projects/selfex/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/selfex/index.js diff --git a/projects/selfex/index.js b/projects/selfex/index.js new file mode 100644 index 0000000000..78a9d22d46 --- /dev/null +++ b/projects/selfex/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const chains = ['kava'] + +module.exports = { + misrepresentedTokens: true, + methodology: "Using DefiLlama's SDK for making on-chain calls to Selfex Factory Contract to iterate over Liquidity Pools & count token balances therein.", +}; + +chains.forEach(chain => { + module.exports[chain] = { tvl: getUniTVL({ factory: '0x98a3567692Eb055fA1F05D616cad494DE9B05512', useDefaultCoreAssets: true, }) } +}) From a0ad1cb55e64405dbc2d362da628914c508ba114 Mon Sep 17 00:00:00 2001 From: rorrieswap Date: Tue, 25 Apr 2023 09:40:52 +0100 Subject: [PATCH 0051/1354] Added Telos staking to Swapsicle --- projects/swapsicle/iceBoxABI.json | 3 +++ projects/swapsicle/index.js | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 projects/swapsicle/iceBoxABI.json diff --git a/projects/swapsicle/iceBoxABI.json b/projects/swapsicle/iceBoxABI.json new file mode 100644 index 0000000000..49c8cc7fb4 --- /dev/null +++ b/projects/swapsicle/iceBoxABI.json @@ -0,0 +1,3 @@ +{ + "totalPrimaryStaked": "uint256:totalPrimaryStaked" +} \ No newline at end of file diff --git a/projects/swapsicle/index.js b/projects/swapsicle/index.js index 0f63bd91a3..cc7e9f4602 100644 --- a/projects/swapsicle/index.js +++ b/projects/swapsicle/index.js @@ -105,6 +105,18 @@ async function stakedAVAXIceBox2(timestamp, ethBlock, chainBlocks) { return balances; } +async function stakedTLOSIceBox(timestamp, _, { telos: block }) { + const balances = {}; + const stakedSTLOS = await sdk.api.abi.call({ + target: contracts.telos.stakingContract_IB2, + abi: iceBoxABI.totalPrimaryStaked, + chain: "telos", block, + }); + + balances[getTLOSAddress(contracts.telos.stlos)] = stakedSTLOS.output; + return balances; +} + module.exports = { misrepresentedTokens: true, methodology: "", @@ -145,6 +157,7 @@ module.exports = { // Ice Cream Van stakingPricedLP(contracts.telos.stakingContract_sPOPS, contracts.telos.pops,'telos','0x6dee26f527adb0c24fef704228d8e458b46f9f5f',"wrapped-telos",true), // Ice Box + stakedTLOSIceBox ]) }, //start: 15434772, From 504d4db4afc04d26b78d638044f1b21fc2b33f72 Mon Sep 17 00:00:00 2001 From: rorrieswap Date: Tue, 25 Apr 2023 10:00:50 +0100 Subject: [PATCH 0052/1354] Updated avalanche staked USDC in IceVault Swapsicle --- projects/swapsicle/icevaultABI.json | 3 +++ projects/swapsicle/index.js | 32 +++++++++++++---------------- 2 files changed, 17 insertions(+), 18 deletions(-) create mode 100644 projects/swapsicle/icevaultABI.json diff --git a/projects/swapsicle/icevaultABI.json b/projects/swapsicle/icevaultABI.json new file mode 100644 index 0000000000..8e73ce09e5 --- /dev/null +++ b/projects/swapsicle/icevaultABI.json @@ -0,0 +1,3 @@ +{ + "totalStaked": "uint256:totalStaked" +} \ No newline at end of file diff --git a/projects/swapsicle/index.js b/projects/swapsicle/index.js index cc7e9f4602..3490ad8419 100644 --- a/projects/swapsicle/index.js +++ b/projects/swapsicle/index.js @@ -4,10 +4,11 @@ const { getUniTVL } = require('../helper/unknownTokens') const { stakingPricedLP } = require("../helper/staking") const sdk = require("@defillama/sdk") const BigNumber = require("bignumber.js"); +const iceBoxABI = require("./iceBoxABI.json"); +const iceVaultABI = require("./icevaultABI.json"); -//const stakingContract_IB = "0x6aA10ead8531504a8A3B04a9BfCFd18108F2d2c2"; const WAVAX = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7' -const WTLOS = '0xd102ce6a4db07d247fcc28f366a623df0938ca9e' +//const WTLOS = '0xd102ce6a4db07d247fcc28f366a623df0938ca9e' const contracts = { avax: { @@ -66,21 +67,16 @@ async function iceBox(contract, block, chain) { } // Avalanche - IceVault Staking (USDC) -async function stakedUSDC(timestamp, ethBlock, chainBlocks) { +async function stakedUSDC(timestamp, _, { avax: block }) { const balances = {}; - const tokenBalance = new BigNumber( - ( - await sdk.api.abi.call({ - abi: "erc20:balanceOf", - chain: "avax", - target: contracts.avax.usdc, - params: [contracts.avax.stakingContract_IV], - block: chainBlocks["avax"], - }) - ).output - ); - - balances[getAVAXAddress(contracts.avax.usdc)] = tokenBalance; + + const tokenBalance = await sdk.api.abi.call({ + target: contracts.avax.stakingContract_IV, + abi: iceVaultABI.totalStaked, + chain: "avax", block, + }); + + balances[getAVAXAddress(contracts.avax.usdc)] = tokenBalance.output; return balances; } @@ -113,8 +109,8 @@ async function stakedTLOSIceBox(timestamp, _, { telos: block }) { chain: "telos", block, }); - balances[getTLOSAddress(contracts.telos.stlos)] = stakedSTLOS.output; - return balances; + balances[getTLOSAddress(contracts.telos.stlos)] = stakedSTLOS.output; + return balances; } module.exports = { From 5f49330c52f6d6bc819282ef3b838ee7aa36b218 Mon Sep 17 00:00:00 2001 From: EVMlord <85406816+EVMlord@users.noreply.github.com> Date: Tue, 25 Apr 2023 11:19:21 +0100 Subject: [PATCH 0053/1354] Update config.js Add Kava smart contract. --- projects/kimberlite/config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/kimberlite/config.js b/projects/kimberlite/config.js index 0d8477c57a..4eb2442f6c 100644 --- a/projects/kimberlite/config.js +++ b/projects/kimberlite/config.js @@ -34,6 +34,11 @@ const config = { locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", startBlock: 49220342 }, + kimberliteSafeKAVA: { + chain: "kava", + locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", + startBlock: 4533304 + }, } module.exports = { From 20f6135c521bd554a3e52cb8af7bc5349aab9125 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 13:29:24 +0200 Subject: [PATCH 0054/1354] add rollup-fi --- projects/rollup-fi/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/rollup-fi/index.js diff --git a/projects/rollup-fi/index.js b/projects/rollup-fi/index.js new file mode 100644 index 0000000000..7217c03e83 --- /dev/null +++ b/projects/rollup-fi/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + era:{ + tvl: gmxExports({ vault: '0xefdE2AeFE307A7362C7E0E3BE019D1491Dc7E163', }) + }, +}; From 7bac8d68fb0891e8d1bfc4f9567a825f92079484 Mon Sep 17 00:00:00 2001 From: AmirJ Date: Tue, 25 Apr 2023 14:56:55 +0200 Subject: [PATCH 0055/1354] update to include vault TVL --- projects/popcorn/constants.js | 9 ++++- projects/popcorn/index.js | 7 ++++ projects/popcorn/vault.js | 70 +++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 projects/popcorn/vault.js diff --git a/projects/popcorn/constants.js b/projects/popcorn/constants.js index 44d0a09ec8..2b0fdd1b72 100644 --- a/projects/popcorn/constants.js +++ b/projects/popcorn/constants.js @@ -37,7 +37,10 @@ const ADDRESSES = { crv3EurMetapool: "0xb9446c4Ef5EBE66268dA6700D26f96273DE3d571", crvSUSDMetapool: "0xA5407eAE9Ba41422680e2e00537571bcC53efBfD", crvSUSD: "0xC25a3A3b969415c80451098fa907EC722572917F", - threeX: "0x8b97ADE5843c9BE7a1e8c95F32EC192E31A46cf3" + threeX: "0x8b97ADE5843c9BE7a1e8c95F32EC192E31A46cf3", + + vaultRegistry: '0x007318Dc89B314b47609C684260CfbfbcD412864', + }, arbitrum: { rewardsEscrow: "0x0c0991cb6e1c8456660a49aa200b71de6158b85c", @@ -53,7 +56,9 @@ const ADDRESSES = { popUsdcGelatoLp: "0xe8654f2b0a038a01bc273a2a7b7c48a76c0e58c5", arrakisPool: "0x6dE0500211bc3140409B345Fa1a5289cb77Af1e4", - arrakisPoolStaking: "0xd3836EF639A74EA7398d34c66aa171b1564BE4bc" + arrakisPoolStaking: "0xd3836EF639A74EA7398d34c66aa171b1564BE4bc", + + vaultRegistry: '0x2246c4c469735bCE95C120939b0C078EC37A08D0' }, bsc: { rewardsEscrow: "0x0C0991CB6e1c8456660A49aa200B71de6158b85C", diff --git a/projects/popcorn/index.js b/projects/popcorn/index.js index 955e161c05..d74303c54a 100644 --- a/projects/popcorn/index.js +++ b/projects/popcorn/index.js @@ -3,6 +3,9 @@ const { staking } = require('./staking') const { ADDRESSES } = require("./constants"); const { addButterV2TVL, addThreeXTVL } = require("./butter") const { addStakingPoolsTVL } = require("./stakingPools") +const { addVaultToTVL } = require("./vaults"); + +const vaultChains = Object.keys(ADDRESSES).filter(chain => Object.keys(ADDRESSES[chain]).includes('vaultRegistry')); function getTVL(chain = undefined) { return async (timestamp, block, chainBlocks) => { @@ -11,6 +14,10 @@ function getTVL(chain = undefined) { await addButterV2TVL(balances, timestamp, chainBlocks, chain); await addThreeXTVL(balances, timestamp, chainBlocks, chain); } + + if (chain && vaultChains.includes(chain)) { + await addVaultToTVL(balances, timestamp, chainBlocks, chain, ADDRESSES[chain].vaultRegistry); + } return balances; } } diff --git a/projects/popcorn/vault.js b/projects/popcorn/vault.js new file mode 100644 index 0000000000..771077ad9d --- /dev/null +++ b/projects/popcorn/vault.js @@ -0,0 +1,70 @@ +const sdk = require('@defillama/sdk'); +const { BigNumber, constants, utils: ethersutils } = require("ethers"); +const utils = require('../helper/utils'); + +const getVaultsAbi = 'address[]:getRegisteredAddresses'; +const getAssetAbi = 'address:asset'; +const getTotalAssets = 'uint256:totalAssets'; + +async function fetch(url) { + return await utils.fetchURL(url) + .catch(err => console.log(err, 'err')) +} + +async function getTokenPrice(chain, address) { + const queryString = `${chain}:${address}`; + const url = `https://coins.llama.fi/prices/current/${queryString}`; + const result = await fetch(url); + const parsed = await result.data; + const token = parsed.coins[`${chain}:${address}`]; + + + return token?.price && token?.decimals + ? { + value: BigNumber.from(Number(token?.price * (10 ** token?.decimals)).toFixed(0)), + decimals: token.decimals, + } + : { value: constants.Zero, decimals: 0 }; +} + +async function addVaultToTVL(balances, timestamp, chainBlocks, chain = "ethereum", vaultRegistryAddress) { + const block = chainBlocks[chain]; + const {output: vaultAddresses} = await sdk.api.abi.call({ + target: vaultRegistryAddress, + params: [], + chain, + block, + abi: getVaultsAbi + }); + + const { output: assets } = await sdk.api.abi.multiCall({ + abi: getAssetAbi, + calls: vaultAddresses.map(i => ({ target: i})), + chain, + block, + }); + + const { output: totalAssets } = await sdk.api.abi.multiCall({ + abi: getTotalAssets, + calls: vaultAddresses.map(i => ({ target: i})), + chain, + block, + }); + + const tokenPrices = await Promise.all( + assets.map(async asset => await getTokenPrice(chain, asset.output)) + ); + + + assets.forEach((asset, index) => { + const totalAssetsTransformed = totalAssets[index].output; + const priceOfAsset = tokenPrices[index].value; + const vaultTVL = (priceOfAsset.mul(totalAssetsTransformed)).div(ethersutils.parseUnits('1', tokenPrices[index].decimals)); + sdk.util.sumSingleBalance(balances, asset.output, vaultTVL, chain); + }) + +} + +module.exports = { + addVaultToTVL +} \ No newline at end of file From 726581b41021d85ff4a98b91f114d2bfd8a837ae Mon Sep 17 00:00:00 2001 From: TJ Date: Tue, 25 Apr 2023 16:52:05 +0200 Subject: [PATCH 0056/1354] adding EXFI loans to TVL --- projects/flare-loans/index.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/projects/flare-loans/index.js b/projects/flare-loans/index.js index e8b74a6538..2ce9d16324 100644 --- a/projects/flare-loans/index.js +++ b/projects/flare-loans/index.js @@ -1,16 +1,11 @@ -const sdk = require('@defillama/sdk') - -async function tvl(time, ethB, {songbird: block}){ - return { - "songbird": Number( - (await sdk.api.erc20.balanceOf({target: "0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED", owner: "0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f", block, chain:'songbird'})).output - )/1e18 - } -} +const { sumTokensExport } = require('../helper/unwrapLPs') module.exports={ - methodology: "We count all WSGB on 0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f, which is backing the stablecoin", + methodology: "We count all WSGB on 0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f and all EXFI on 0x4595fc96262057f9b0d4276ff04de8f2f44e612e, which are backing the stablecoin", songbird: { - tvl + tvl: sumTokensExport({chain: 'songbird', tokensAndOwners: [ + ['0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED', '0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f'], + ['0xC348F894d0E939FE72c467156E6d7DcbD6f16e21','0x4595fc96262057f9b0d4276ff04de8f2f44e612e'] + ]}) } } \ No newline at end of file From f83622514a3292fa044602667c52297454fe1ebf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 16:54:49 +0200 Subject: [PATCH 0057/1354] add https://app.carbondefi.xyz --- projects/carbondefi/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/carbondefi/index.js diff --git a/projects/carbondefi/index.js b/projects/carbondefi/index.js new file mode 100644 index 0000000000..ad46c9f01e --- /dev/null +++ b/projects/carbondefi/index.js @@ -0,0 +1,21 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const controller = '0xC537e898CD774e2dCBa3B14Ea6f34C93d5eA45e1' + +async function tvl(_, _b, _cb, { api, }) { + const logs = await getLogs({ + api, + target: controller, + topic: 'PairCreated(uint128,address,address)', + eventAbi: 'event PairCreated(uint128 indexed pairId, address indexed token0, address indexed token1)', + onlyArgs: true, + fromBlock: 17087375, + }) + const tokens = logs.map(i => [i.token0, i.token1]).flat() + + return sumTokens2({ api, owner: controller, tokens, }) +} + + +module.exports = { ethereum: { tvl } } \ No newline at end of file From 00c926fc24da0c23fd505c50b8f19877ca307f4f Mon Sep 17 00:00:00 2001 From: Autoearn-Finance <129837237+Autoearn-Finance@users.noreply.github.com> Date: Tue, 25 Apr 2023 23:13:34 +0800 Subject: [PATCH 0058/1354] Add files via upload --- projects/autoearn/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/autoearn/index.js diff --git a/projects/autoearn/index.js b/projects/autoearn/index.js new file mode 100644 index 0000000000..58a3e35c75 --- /dev/null +++ b/projects/autoearn/index.js @@ -0,0 +1,14 @@ +const { yieldHelper, } = require("../helper/yieldHelper") + +const farm = '0x9373da81F82Aba62605a8A03950B9Aa188a02bF7' +const ate = '0xd5DA32Ad4C7510457C0e46Fa4332F75f6C4C4dC0' + +module.exports = yieldHelper({ + project: 'autoearn-finance', + chain: 'arbitrum', + masterchef: farm, + nativeToken: ate, + abis: { + poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare, uint256 accAQUAPerShare, uint256 depositFee, uint256 withdrawFee, uint256 amount, uint256 reserve, address strat, address strat1)', + } +}) From eefe13351889ecaf29899243f8e52b8d07258ec9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 17:32:11 +0200 Subject: [PATCH 0059/1354] add new spice vaults --- projects/spice-finance/index.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/projects/spice-finance/index.js b/projects/spice-finance/index.js index cc6bcc399f..a343b0b0e6 100644 --- a/projects/spice-finance/index.js +++ b/projects/spice-finance/index.js @@ -1,9 +1,13 @@ -const VAULT = "0x6110d61DD1133b0f845f1025d6678Cd22A11a2fe"; +const vaults = [ + '0xAe11ae7CaD244dD1d321Ff2989543bCd8a6Db6DF', // Flagship + '0xd68871bd7D28572860b2E0Ee5c713b64445104F9', // Leverage + '0x6110d61DD1133b0f845f1025d6678Cd22A11a2fe', // VIP +] async function tvl(_1, _2, chainBlocks, { api }) { - return { - "ethereum:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": await api.call({ target: VAULT, abi: 'uint256:totalAssets'}), - }; + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) + api.addTokens(tokens, bals) } module.exports = { From b4621784d5e856f40a80b779b7c82f707a384809 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Tue, 25 Apr 2023 17:08:29 +0100 Subject: [PATCH 0060/1354] LP Equilibre Vaults (#6029) * LP Equilibre Vaults * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * fix scrub invest --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/scrubinvest/index.js | 52 ++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index f6ce9b7215..33b346abe6 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -1,16 +1,42 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); +const { sumUnknownTokens } = require("../helper/unknownTokens"); +async function tvl(_, _b, _cb, { api, }) { + + const bals = await api.multiCall({ + abi: 'erc20:balanceOf', calls: [ + { target: '0xe2C935041aEF672974A31d46c41A4F292982e621', params: '0x2c1C6aaB89272d07B7f78bFe93eefb6D2631Cf94' }, + { target: '0x69cEf0795FFFa66DfC4Ffc90E8Bd05c399388650', params: '0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457' }, + { target: '0x075CA53543D304c02Ee692C0b691770AEB273dA4', params: '0x4402Cf5433D57266563979654d20887AcE672393' }, + ] + }) + const lps = [ + '0x09d6561b3795ae237e42f7adf3dc83742e10a2e8', + '0x7f8ed7d31795dc6f5fc5f6685b11419674361501', + '0xeA848151ACB1508988e56Ee7689F004df2B15ced', + ] + api.addTokens(lps, bals) + + return sumUnknownTokens({ + api, + tokensAndOwners: [ + // YieldOptimizers Mare + ['0x066C98E48238e8D77006a5fA14EC3B080Fd2848d', '0xcd017B495DF1dE2DC8069b274e2ddfBB78561176'], + ['0x92e17FD2DA50775FBD423702E4717cCD7FB2A6BB', '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], + ['0x58333b7D0644b52E0e56cC3803CA94aF9e0B52C3', '0xB4Ba7ba722eacAE8f1e4c6213AF05b5E8B27dbdB'], + ['0x24149e2D0D3F79EBb7Fc464b09e3628dE395b39D', '0xB9774bB2A18Af59Ec9bf86dCaeC07473A2D2F230'], + // Vaults Equilibre Scrub + // ['0xeA848151ACB1508988e56Ee7689F004df2B15ced', "0x4402Cf5433D57266563979654d20887AcE672393"], + // ['0x7f8ed7d31795dc6f5fc5f6685b11419674361501', "0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457"], + // ['0x09d6561b3795ae237e42f7adf3dc83742e10a2e8', "0x2c1C6aaB89272d07B7f78bFe93eefb6D2631Cf94"], + ], + useDefaultCoreAssets: true, + resolveLP: true, + lps + }) +} module.exports = { - kava: { - tvl: sumTokensExport({ - chain: 'kava', - tokensAndOwners: [ - // [tokenAddress, ownerContractAddress] - ['0x066C98E48238e8D77006a5fA14EC3B080Fd2848d', '0xcd017B495DF1dE2DC8069b274e2ddfBB78561176'], - ['0x92e17FD2DA50775FBD423702E4717cCD7FB2A6BB', '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], - ['0x58333b7D0644b52E0e56cC3803CA94aF9e0B52C3', '0xB4Ba7ba722eacAE8f1e4c6213AF05b5E8B27dbdB'], - ['0x24149e2D0D3F79EBb7Fc464b09e3628dE395b39D', '0xB9774bB2A18Af59Ec9bf86dCaeC07473A2D2F230'], - ], - }), - } + misrepresentedTokens: true, + kava: { + tvl, + } }; From 215f9c4fbfeb25002d325aa1b642089aab0047e4 Mon Sep 17 00:00:00 2001 From: Gherase12 Date: Tue, 25 Apr 2023 21:35:02 +0300 Subject: [PATCH 0061/1354] Add Snark Launch --- projects/snarklaunch/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/snarklaunch/index.js diff --git a/projects/snarklaunch/index.js b/projects/snarklaunch/index.js new file mode 100644 index 0000000000..595fadc8d7 --- /dev/null +++ b/projects/snarklaunch/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +const STAKING_SNRK_CONTRACT = "0xEbA49A81501b036234578D10e78685ca8BbD2901"; +const SNRK_TOKEN = "0x533b5F887383196C6bc642f83338a69596465307"; + +module.exports = { + methodology: 'TVL for SNRK staking is computed by summing the balance of SNRK tokens held by the staking contract.', + era: { + tvl: sumTokensExport({ owners: [STAKING_SNRK_CONTRACT], tokens: [SNRK_TOKEN] }) + }, +} \ No newline at end of file From 7fd0c069ee7a59c7a1d2f536c2522f74ec38c989 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 20:42:24 +0200 Subject: [PATCH 0062/1354] fix the bug in sdk --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index eafdccfce3..ac5d561d9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -169,9 +169,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.5.tgz", - "integrity": "sha512-cUe5IODz78vapSnS96XX988xSONkV8fA2mgcRE3bkQrmZjkx7surP6/afKVEnTLLumQz+uShZEx78CNeDHVY+w==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.8.tgz", + "integrity": "sha512-IN6Ytw69/fQBmDgMzL9tWBEHnJVdL5LVaG/8+Nsb8rwrmaBkW4VbYJcKOuCTmTanWXinDG2hdogqZ7zx16lbww==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -5466,9 +5466,9 @@ } }, "@defillama/sdk": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.5.tgz", - "integrity": "sha512-cUe5IODz78vapSnS96XX988xSONkV8fA2mgcRE3bkQrmZjkx7surP6/afKVEnTLLumQz+uShZEx78CNeDHVY+w==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.8.tgz", + "integrity": "sha512-IN6Ytw69/fQBmDgMzL9tWBEHnJVdL5LVaG/8+Nsb8rwrmaBkW4VbYJcKOuCTmTanWXinDG2hdogqZ7zx16lbww==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", From 478d5895be4849308ce22c2d980f8e8afa481066 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 20:56:33 +0200 Subject: [PATCH 0063/1354] Update index.js --- projects/snarklaunch/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/snarklaunch/index.js b/projects/snarklaunch/index.js index 595fadc8d7..bdac5aaf12 100644 --- a/projects/snarklaunch/index.js +++ b/projects/snarklaunch/index.js @@ -6,6 +6,7 @@ const SNRK_TOKEN = "0x533b5F887383196C6bc642f83338a69596465307"; module.exports = { methodology: 'TVL for SNRK staking is computed by summing the balance of SNRK tokens held by the staking contract.', era: { - tvl: sumTokensExport({ owners: [STAKING_SNRK_CONTRACT], tokens: [SNRK_TOKEN] }) + staking: sumTokensExport({ owners: [STAKING_SNRK_CONTRACT], tokens: [SNRK_TOKEN] }), + tvl: () => 0, }, -} \ No newline at end of file +} From 1d2326832c857d80b79095882afc920a7b454208 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 21:04:28 +0200 Subject: [PATCH 0064/1354] fix kava lend --- projects/aave/v1.js | 2 +- projects/hard.js | 15 ++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/projects/aave/v1.js b/projects/aave/v1.js index a22a65cfd6..d22d548777 100644 --- a/projects/aave/v1.js +++ b/projects/aave/v1.js @@ -97,7 +97,7 @@ async function uniswapV1Market(balances, uniswapLendingPoolCore, block, borrowed const uniswapV1TokenBalance = await sdk.api.abi.multiCall({ abi: 'erc20:balanceOf', calls: uniswapV1Tokens.output.map(t => ({ - target: t.output || nullAddress, + target: t.output, params: t.input.target })), permitFailure: true, diff --git a/projects/hard.js b/projects/hard.js index c81738688f..62896c7d51 100644 --- a/projects/hard.js +++ b/projects/hard.js @@ -41,32 +41,29 @@ const decimals = { [AKT_DENOM]: 6, [AXLUSDC_DENOM]: 6, [MULTICHAIN_WBTC]: 8, + [MULTICHAIN_USDC]: 6, + [MULTICHAIN_USDT]: 6, [AXLUSDC_DENOM]: 6, [AXLUSDC_DENOM]: 6, } -const tvl = async () => { - const balances = {}; +const tvl = async (_, _1, _2, { api }) => { const totalDeposited = await get('https://api2.kava.io/hard/total-deposited'); const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed'); for (const coin of totalDeposited.result) { const borrowed = Number(totalBorrowed.result.find(item => item.denom === coin.denom)?.amount || 0); - balances[coingeckoIds[coin.denom]] = (Number(coin.amount)-borrowed) / (10**decimals[coin.denom]); + api.add(coingeckoIds[coin.denom], (coin.amount - borrowed) / (10 ** decimals[coin.denom]), { skipChain: true }) } - - return balances; } -const borrowed = async () => { - const balances = {}; +const borrowed = async (_, _1, _2, { api }) => { const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed'); for (const coin of totalBorrowed.result) { - balances[coingeckoIds[coin.denom]] = Number(coin.amount)/(10**decimals[coin.denom]); + api.add(coingeckoIds[coin.denom], coin.amount / (10 ** decimals[coin.denom]), { skipChain: true }) } - return balances; } From f35edd19b01612939b283556c3d486e2b14a5ff1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Apr 2023 21:24:54 +0200 Subject: [PATCH 0065/1354] fix the bug in sdk --- package-lock.json | 12 ++++++------ projects/api3/index.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac5d561d9b..85c849c00a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -169,9 +169,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.8.tgz", - "integrity": "sha512-IN6Ytw69/fQBmDgMzL9tWBEHnJVdL5LVaG/8+Nsb8rwrmaBkW4VbYJcKOuCTmTanWXinDG2hdogqZ7zx16lbww==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.10.tgz", + "integrity": "sha512-d+xTcUvuar3WVSmouJdsVGkGjZc44/tW/REQCjSKn0wplB0ugEjGWdZ/LbbxpCbqRiifwkp2IoFrf1DpNVjuyQ==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -5466,9 +5466,9 @@ } }, "@defillama/sdk": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.8.tgz", - "integrity": "sha512-IN6Ytw69/fQBmDgMzL9tWBEHnJVdL5LVaG/8+Nsb8rwrmaBkW4VbYJcKOuCTmTanWXinDG2hdogqZ7zx16lbww==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.10.tgz", + "integrity": "sha512-d+xTcUvuar3WVSmouJdsVGkGjZc44/tW/REQCjSKn0wplB0ugEjGWdZ/LbbxpCbqRiifwkp2IoFrf1DpNVjuyQ==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/api3/index.js b/projects/api3/index.js index 38bd86490f..c94505487d 100644 --- a/projects/api3/index.js +++ b/projects/api3/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const api3_token = '0x0b38210ea11411557c13457d4da7dc6ea731b88a' const api3_dao_pool = '0x6dd655f10d4b9e242ae186d9050b68f725c76d76' -const api3CirculatingSupply = "cD34bC5B03C954268d27c9Bc165a623c318bD0a8" +const api3CirculatingSupply = "0xcD34bC5B03C954268d27c9Bc165a623c318bD0a8" const stakingTVL = async (timestamp, ethBlock, chainBlocks, { api }) => { const balances = {} From 94e88610e1127871ebc341c01c087a2734e9b59e Mon Sep 17 00:00:00 2001 From: corey-wombat Date: Wed, 26 Apr 2023 11:11:36 +0800 Subject: [PATCH 0066/1354] update BNBy pool address --- projects/wombat-exchange/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 45e02482ea..5412d25218 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -21,6 +21,7 @@ module.exports = { overnight: "0x9498563e47D7CFdFa22B818bb8112781036c201C", // USD+ pool mim: "0xb8b1b72a9b9ba90e2539348fec1ad6b265f9f684", ankrBNB: "0x6f1c689235580341562cdc3304e923cc8fad5bfa", + bnby: "0xbed9B758A681d73a95Ab4c01309C63aa16297b80", }, }, arbitrum: { From 90eb3eece93ed1a283eded3721b3d8ac9a115533 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 05:32:30 +0200 Subject: [PATCH 0067/1354] fix merlin --- projects/merlin/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/merlin/index.js b/projects/merlin/index.js index 46d38a178e..01155119b6 100644 --- a/projects/merlin/index.js +++ b/projects/merlin/index.js @@ -2,6 +2,9 @@ const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { start: 1682899200, era: { - tvl: getUniTVL({ factory: '0x63E6fdAdb86Ea26f917496bEEEAEa4efb319229F', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0x63E6fdAdb86Ea26f917496bEEEAEa4efb319229F', useDefaultCoreAssets: true, fetchBalances: true }), }, + hallmarks: [ + [Math.floor(new Date('2023-04-26')/1e3), 'Project Rugged!'], + ], }; From 39ed1febf71956104074a3a469c638d84bd0fd00 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 07:35:34 +0200 Subject: [PATCH 0068/1354] fix thorchain --- projects/thorchain/index.js | 1 + test.js | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/projects/thorchain/index.js b/projects/thorchain/index.js index 9fb93092b7..dce3ed2f53 100644 --- a/projects/thorchain/index.js +++ b/projects/thorchain/index.js @@ -18,6 +18,7 @@ const chainMapping = { LTC: 'litecoin', BCH: 'bitcoin-cash', DOGE: 'dogecoin', + GAIA: 'cosmos', } const defillamaChainMapping = { diff --git a/test.js b/test.js index b0ee4e643d..1ce36d2ace 100644 --- a/test.js +++ b/test.js @@ -359,11 +359,9 @@ async function computeTVL(balances, timestamp) { readKeys.forEach(i => unknownTokens[i] = true) const { errors } = await PromisePool.withConcurrency(5) - .for(sliceIntoChunks(readKeys, 200)) + .for(sliceIntoChunks(readKeys, 100)) .process(async (keys) => { - tokenData.push((await axios.post(`https://coins.llama.fi/prices`, { - coins: keys - })).data.coins) + tokenData.push((await axios.get(`https://coins.llama.fi/prices/current/${keys.join(',')}`)).data.coins) }) if (errors && errors.length) @@ -381,7 +379,7 @@ async function computeTVL(balances, timestamp) { if (data == undefined) tokenBalances[`UNKNOWN (${address})`] = balance if ('confidence' in data && data.confidence < confidenceThreshold) return - if (Math.abs(data.timestamp - Date.now()/1e3) > (24*3600)) { + if (Math.abs(data.timestamp - Date.now() / 1e3) > (24 * 3600)) { console.log(`Price for ${address} is stale, ignoring...`) return } From d5192e4bd28968ccc457a3a47cb420bcf631d072 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 08:28:21 +0200 Subject: [PATCH 0069/1354] minor fix --- projects/merlin/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/merlin/index.js b/projects/merlin/index.js index 01155119b6..0bb4b2df48 100644 --- a/projects/merlin/index.js +++ b/projects/merlin/index.js @@ -5,6 +5,6 @@ module.exports = { tvl: getUniTVL({ factory: '0x63E6fdAdb86Ea26f917496bEEEAEa4efb319229F', useDefaultCoreAssets: true, fetchBalances: true }), }, hallmarks: [ - [Math.floor(new Date('2023-04-26')/1e3), 'Project Rugged!'], + [Math.floor(new Date('2023-04-25')/1e3), 'Project Rugged!'], ], }; From 294332856bc1ab9ad6cdf47a145dde3528e4aa0f Mon Sep 17 00:00:00 2001 From: "zkBoost.Finance" Date: Wed, 26 Apr 2023 13:37:53 +0700 Subject: [PATCH 0070/1354] create zkBoost (#6044) * create zkBoost * update zkBoost * zkboost: reafctor code * minor fix * revert fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkBoost/abi.js | 5 +++++ projects/zkBoost/config.js | 7 +++++++ projects/zkBoost/index.js | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 projects/zkBoost/abi.js create mode 100644 projects/zkBoost/config.js create mode 100644 projects/zkBoost/index.js diff --git a/projects/zkBoost/abi.js b/projects/zkBoost/abi.js new file mode 100644 index 0000000000..5a0e0d5959 --- /dev/null +++ b/projects/zkBoost/abi.js @@ -0,0 +1,5 @@ +module.exports = { + getTotalLockCount: "uint256:getTotalLockCount", + getLock: "function getLock(uint256 index) view returns (tuple(uint256 id, address token, address owner, uint256 amount, uint256 lockDate, uint256 unlockDate))", + getLockAt: "function getLockAt(uint256 index) view returns (tuple(uint256 id, address token, address owner, uint256 amount, uint256 lockDate, uint256 tgeDate, uint256 tgeBps, uint256 cycle, uint256 cycleBps, uint256 unlockedAmount, string description))", +} \ No newline at end of file diff --git a/projects/zkBoost/config.js b/projects/zkBoost/config.js new file mode 100644 index 0000000000..c9bb7bc2dc --- /dev/null +++ b/projects/zkBoost/config.js @@ -0,0 +1,7 @@ +module.exports = { + era: { + vaults: [ + '0x4d2528305C135A056D7e2A0e8BD1946273Fb89D7' + ] + } +} \ No newline at end of file diff --git a/projects/zkBoost/index.js b/projects/zkBoost/index.js new file mode 100644 index 0000000000..5076afaa9d --- /dev/null +++ b/projects/zkBoost/index.js @@ -0,0 +1,18 @@ +const abi = require('./abi') +const config = require('./config') +const { sumTokens2 } = require("../helper/unwrapLPs") + +module.exports = {} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async (timestamp, _block, { [chain]: block }, { api }) => { + const { vaults, } = config[chain] + for (const vault of vaults) { + const data = await api.fetchList({ lengthAbi: abi.getTotalLockCount, itemAbi: abi.getLockAt, target: vault }) + await sumTokens2({ api, owner: vault, tokens: data.map(i => i.token), resolveLP: true, }) + } + return api.getBalances() + } + } +}) \ No newline at end of file From b42e2013603a211b1e00e13e77fdced3bb949509 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Wed, 26 Apr 2023 07:49:14 +0100 Subject: [PATCH 0071/1354] New Compounders (#6074) * New Compounders Thanks!!!! * Update index.js * scrubinvest: autofetch LP addresses --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/scrubinvest/index.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index 33b346abe6..b81dea3296 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -1,18 +1,18 @@ const { sumUnknownTokens } = require("../helper/unknownTokens"); async function tvl(_, _b, _cb, { api, }) { - const bals = await api.multiCall({ - abi: 'erc20:balanceOf', calls: [ - { target: '0xe2C935041aEF672974A31d46c41A4F292982e621', params: '0x2c1C6aaB89272d07B7f78bFe93eefb6D2631Cf94' }, - { target: '0x69cEf0795FFFa66DfC4Ffc90E8Bd05c399388650', params: '0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457' }, - { target: '0x075CA53543D304c02Ee692C0b691770AEB273dA4', params: '0x4402Cf5433D57266563979654d20887AcE672393' }, - ] - }) - const lps = [ - '0x09d6561b3795ae237e42f7adf3dc83742e10a2e8', - '0x7f8ed7d31795dc6f5fc5f6685b11419674361501', - '0xeA848151ACB1508988e56Ee7689F004df2B15ced', + const calls = [ + { target: '0x075CA53543D304c02Ee692C0b691770AEB273dA4', params: '0x4402Cf5433D57266563979654d20887AcE672393' }, + { target: '0x69cEf0795FFFa66DfC4Ffc90E8Bd05c399388650', params: '0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457' }, + { target: '0xe2C935041aEF672974A31d46c41A4F292982e621', params: '0x2c1C6aaB89272d07B7f78bFe93eefb6D2631Cf94' }, + { target: '0x46B9FCac1B698AE54b9c1D52A734338964e28AEE', params: '0x070110b0cAd64833b1a6a9E86337A4e4eE786607' }, + { target: '0xA250a3b6a5e5E8b398092537951F8Bd80639ed5c', params: '0xE04539bD52618B7d197Be54B3e4D80732082906E' }, + { target: '0xCa0d15B4BB6ad730fE40592f9E25A2E052842c92', params: '0xEa892552BD31A20F42ceb3476D6A280c405883d0' }, + { target: '0xa27a1f03479cfe4B0b97Fd8c772a84aD815C1946', params: '0xa1FA74fD861FFf2fc5f7a618A05beB12709fB419' }, + { target: '0x74AE6bB3138DB1969c52f39e2c311d997528633B', params: '0x2D1D648c2AEdf62037f2b80f9cC8c93258179380' } ] + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls }) + const lps = await api.multiCall({ abi: 'address:stake', calls: calls.map(i => i.target)}) api.addTokens(lps, bals) return sumUnknownTokens({ From b51faccb110d99fb715bce93a59ee8592db60ca4 Mon Sep 17 00:00:00 2001 From: Dev Date: Wed, 26 Apr 2023 13:50:41 +0700 Subject: [PATCH 0072/1354] Add Superlauncher project --- projects/superlauncher/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/superlauncher/index.js diff --git a/projects/superlauncher/index.js b/projects/superlauncher/index.js new file mode 100644 index 0000000000..d996c55dfe --- /dev/null +++ b/projects/superlauncher/index.js @@ -0,0 +1,15 @@ +const { getUniTVL } = require('../helper/unknownTokens'); +const { stakings } = require("../helper/staking"); +const { stakingPricedLP } = require('../helper/staking'); +const sdk = require('@defillama/sdk') + +const LAUNCH = "0xF6D9a093A1C69a152d87e269A7d909E9D76B1815"; +const STAKING_CONTRACT = "0xA05385Ec1F4fFe5a43336f3864Ae66f536D95602"; + +module.exports = { + misrepresentedTokens: true, + era: { + tvl: stakings([STAKING_CONTRACT], [LAUNCH], 'era','superlauncher-dao',18) + }, + methodology: "TVL is calculated by summing the total LAUNCH held in the staking contract.", +}; \ No newline at end of file From 24c217e9172b71dea8be700e6dac89fe0b31891b Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 26 Apr 2023 15:07:13 +0800 Subject: [PATCH 0073/1354] feat: GoodEntry tracker --- projects/goodentry/index.js | 105 ++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 projects/goodentry/index.js diff --git a/projects/goodentry/index.js b/projects/goodentry/index.js new file mode 100644 index 0000000000..04b15c69cd --- /dev/null +++ b/projects/goodentry/index.js @@ -0,0 +1,105 @@ +const { aaveChainTvl,getData } = require("../helper/aave"); +const abi = require('../helper/abis/aave.json'); +const sdk = require('@defillama/sdk'); + +const addressesProviderRegistry = '0x01b76559D512Fa28aCc03630E8954405BcBB1E02'; +const balanceOfAbi = "function balanceOf(address account) view returns (uint256)"; +const getLpAbi = "function getLendingPool() view returns (address)"; +const getReserveDataAbi = "function getReserveData(address asset) view returns (uint256 reserveConfigurationMap, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id)"; +const getUnderlyingAbi = "function getTokenAmounts(uint amount) external view returns (uint token0Amount, uint token1Amount)"; +const token0Abi = "function TOKEN0() view returns (address token, uint8 decimals)"; +const token1Abi = "function TOKEN1() view returns (address token, uint8 decimals)"; + +// Aave helper doesnt recognize tokenized Uniswap positions, need to manually + + +function geTvl() { + const chain = "arbitrum"; + return async (timestamp, ethBlock, { [chain]: block }) => { + const balances = {} + const addressesProviders = ( + await sdk.api.abi.call({ + target: addressesProviderRegistry, + abi: abi["getAddressesProvidersList"], + block, + chain + }) + ).output; + const validAddressesProviders = addressesProviders.filter((ap) => ap != "0x0000000000000000000000000000000000000000") + + const lendingPools = ( + await sdk.api.abi.multiCall({ + calls: validAddressesProviders.map((provider) => ({ + target: provider, + })), + abi: getLpAbi, + block, + chain + }) + ).output; + + const aTokens = ( + await sdk.api.abi.multiCall({ + calls: lendingPools.map((lp) => ({ + target: lp.output, + })), + abi: abi["getReservesList"], + block, + chain + }) + ).output + + // merge + const ge = {} + for (let k of lendingPools) ge[k.output] = {ap: k.input.target} + for (let k of aTokens) ge[k.input.target].aTokens = k.output + + const bals = (await Promise.all( + Object.keys(ge).map( async (pool) => { + const atns = ge[pool].aTokens; + const atnsRes = await Promise.all(atns.map(async (atn) => { + var aTokenAddress; + var balance = 0; + var res = {} + try { + aTokenAddress = (await sdk.api.abi.call({target: pool, abi: getReserveDataAbi, block, chain, params: atn})).output.aTokenAddress; + balance = (await sdk.api.abi.call({target: atn, abi: balanceOfAbi, block, chain, params: aTokenAddress})).output; + } + catch(e) {} + try { + // if it's a ticker, can call underlying + const underlying = (await sdk.api.abi.call({target: atn, abi: getUnderlyingAbi, block, chain, params: balance})).output; + const token0 = (await sdk.api.abi.call({target: atn, abi: token0Abi, block, chain})).output.token; + const token1 = (await sdk.api.abi.call({target: atn, abi: token1Abi, block, chain})).output.token; + + res[chain+":"+token0] = parseInt(underlying.token0Amount); + res[chain+":"+token1] = parseInt(underlying.token1Amount); + } + catch(e){ + // in case of error, return the base asset + res[chain+":"+atn] = parseInt(balance); + } + return res; + }).flat(2) + ) + return atnsRes; + }) + )).flat(2) + //aggregate tokens balances + for (let k of bals){ + for( const [key, bal] of Object.entries(k)){ + balances[key] = balances.hasOwnProperty(key) ? bal + balances[key] : bal + } + } + return balances + } +} + + +module.exports = { + methodology: + "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending", + arbitrum: { + tvl: geTvl(), + } +}; From 15adea1d578ea7fc6671e7304578c5e02fff1c71 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 09:08:48 +0200 Subject: [PATCH 0074/1354] superlauncher: refactor code --- projects/superlauncher/index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/superlauncher/index.js b/projects/superlauncher/index.js index d996c55dfe..5579c6d7b2 100644 --- a/projects/superlauncher/index.js +++ b/projects/superlauncher/index.js @@ -1,7 +1,4 @@ -const { getUniTVL } = require('../helper/unknownTokens'); const { stakings } = require("../helper/staking"); -const { stakingPricedLP } = require('../helper/staking'); -const sdk = require('@defillama/sdk') const LAUNCH = "0xF6D9a093A1C69a152d87e269A7d909E9D76B1815"; const STAKING_CONTRACT = "0xA05385Ec1F4fFe5a43336f3864Ae66f536D95602"; @@ -9,7 +6,8 @@ const STAKING_CONTRACT = "0xA05385Ec1F4fFe5a43336f3864Ae66f536D95602"; module.exports = { misrepresentedTokens: true, era: { - tvl: stakings([STAKING_CONTRACT], [LAUNCH], 'era','superlauncher-dao',18) + tvl: () => ({}), + staking: stakings([STAKING_CONTRACT], [LAUNCH], 'era','superlauncher-dao',18) }, methodology: "TVL is calculated by summing the total LAUNCH held in the staking contract.", }; \ No newline at end of file From 7f0bc8dc48bfb609fec77febccfeda2713df918a Mon Sep 17 00:00:00 2001 From: merlincdj <39942523+merlincdj@users.noreply.github.com> Date: Wed, 26 Apr 2023 15:19:48 +0800 Subject: [PATCH 0075/1354] chore: add zkSync Era --- projects/woofi.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/woofi.js b/projects/woofi.js index 427fc21f96..eb637ad01a 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -43,6 +43,10 @@ const wooPPConfig = { '0x4200000000000000000000000000000000000042', // OP '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', // USDC ], + era: [ + "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", // WETH + "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", // USDC + ], } const chainConfig = { @@ -76,13 +80,19 @@ const chainConfig = { woo: '0x871f2f2ff935fd1ed867842ff2a7bfd051a5e527', stakingContract: '', }, + era: { + wooPPContract: '0x42ED123EB5266A5B8E2B54B2C76180CCF5e72FEe', + woo: '', + stakingContract: '', + }, } +const noStakingChains = ['optimism', 'era'] Object.keys(chainConfig).forEach(chain => { const wooPPTokens = wooPPConfig[chain] const { wooPPContract, woo, stakingContract } = chainConfig[chain] var stakingAmount = 0 - if (chain != 'optimism') { + if (noStakingChains.indexOf(chain) == -1) { stakingAmount = staking(stakingContract, woo, chain) } module.exports[chain] = { From 15b6838887f5e652c51330bb2e81779f3b6b8bbc Mon Sep 17 00:00:00 2001 From: Gosuto Inzasheru Date: Wed, 26 Apr 2023 17:56:09 +0900 Subject: [PATCH 0076/1354] chore: fix badgerdao's badgerfraxbp position --- projects/treasury/badger-dao.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/treasury/badger-dao.js b/projects/treasury/badger-dao.js index 995802fadc..51dd382294 100644 --- a/projects/treasury/badger-dao.js +++ b/projects/treasury/badger-dao.js @@ -8,6 +8,7 @@ const treasury_tech = "0x86cbD0ce0c087b482782c181dA8d191De18C8275"; const treasury_pay = "0x30a9c1D258F6c2D23005e6450E72bDD42C541105"; const treasury_drip1 = "0xA3Dc099D14722D0e25B3A904427377B4B2ab9fA4"; const treasury_drip2 = "0xC0D8fD5c722AF68437E7dFc095a980500dC0961D"; +const treasury_bfraxbp = "0xe0705A91984b076C250d410A41f615380aF1C2ed"; const BADGER = "0x3472A5A71965499acd81997a54BBA8D852C6E53d"; const DIGG = "0x798D1bE841a82a273720CE31c822C61a67a601C3"; @@ -37,12 +38,12 @@ module.exports = treasuryExports({ "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656",//aWBTC "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",//WETH "0xae78736Cd615f374D3085123A210448E74Fc6393",//rETH - "0x09b2e090531228d1b8e3d948c73b990cb6e60720", // BADGERFRAX-f + "0x25f0b7c3A7A43b409634a5759526560cC3313d75", // cvxBADGERFRAX-f "0xaad4ee162dbc9c25cca26ba4340b36e3ef7c1a80", // aura50rETH-50BADGER-vault "0x4efc8ded860bc472fa8d938dc3fd4946bc1a0a18", // aura20WBTC-80BADGER-vault "0xd7c9c6922db15f47ef3131f2830d8e87f7637210", // aura40WBTC-40DIGG-20graviAURA-vault ], - owners: [treasury_vault, treasury_ops, treasury_voter, treasury_dev, treasury_tech, treasury_pay, treasury_drip1, treasury_drip2], + owners: [treasury_vault, treasury_ops, treasury_voter, treasury_dev, treasury_tech, treasury_pay, treasury_drip1, treasury_drip2, treasury_bfraxbp], ownTokens: [BADGER, DIGG], resolveUniV3: true, transformAddress, From d93a326b71e607e64d74929106d83c72a996ed0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=83=B8?= Date: Wed, 26 Apr 2023 18:03:06 +0800 Subject: [PATCH 0077/1354] swap --- projects/pheasantswap/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/pheasantswap/index.js diff --git a/projects/pheasantswap/index.js b/projects/pheasantswap/index.js new file mode 100644 index 0000000000..65d41475f4 --- /dev/null +++ b/projects/pheasantswap/index.js @@ -0,0 +1,14 @@ +const { get } = require("../helper/http") +async function fetch() { + const {liquidityList} = await get('http://info.pheasantswap.com/swap/operate/getSwapStatisticsList') + const liquidity = liquidityList[liquidityList.length -1] + return liquidity.amount*1 +} + +module.exports = { + methodology: "PheasantSwap - A Trustworthy Decentralized Exchange Built on ENULS.", + enuls: { + fetch + }, + fetch +} From 425ee02e4f8e2b281906b52d58f884deff1e5a00 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Apr 2023 11:40:47 +0100 Subject: [PATCH 0078/1354] dfdy, instadapp, kromatika and thales treasuries --- projects/treasury/dfyn.js | 16 ++++++++++++++++ projects/treasury/instadapp.js | 15 +++++++++++++++ projects/treasury/kromatika.js | 18 ++++++++++++++++++ projects/treasury/thales.js | 18 ++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 projects/treasury/dfyn.js create mode 100644 projects/treasury/instadapp.js create mode 100644 projects/treasury/kromatika.js create mode 100644 projects/treasury/thales.js diff --git a/projects/treasury/dfyn.js b/projects/treasury/dfyn.js new file mode 100644 index 0000000000..c485217695 --- /dev/null +++ b/projects/treasury/dfyn.js @@ -0,0 +1,16 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const Treasury = "0x5C35D4BcF0827a22370915E75c387EC470338c10"; + + + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "0x8971dFb268B961a9270632f28B24F2f637c94244" + ], + owners: [Treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/instadapp.js b/projects/treasury/instadapp.js new file mode 100644 index 0000000000..6b349fd6d7 --- /dev/null +++ b/projects/treasury/instadapp.js @@ -0,0 +1,15 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const Treasury = "0xf81ab897e3940e95d749ff2e1f8d38f9b7cbe3cf"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "0x8971dFb268B961a9270632f28B24F2f637c94244", + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" + ], + owners: [Treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/kromatika.js b/projects/treasury/kromatika.js new file mode 100644 index 0000000000..fd05129b03 --- /dev/null +++ b/projects/treasury/kromatika.js @@ -0,0 +1,18 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const Treasury = "0x8e35cc21fbcade0a5483ce430e0d5456086a36d3"; + +const KROM = "0x55fF62567f09906A85183b866dF84bf599a4bf70"; + + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "0x8971dFb268B961a9270632f28B24F2f637c94244" + ], + owners: [Treasury], + ownTokens: [KROM], + }, +}) \ No newline at end of file diff --git a/projects/treasury/thales.js b/projects/treasury/thales.js new file mode 100644 index 0000000000..8994b94c43 --- /dev/null +++ b/projects/treasury/thales.js @@ -0,0 +1,18 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const Treasury = "0x2902E381c9Caacd17d25a2e008db0a9a4687FDBF"; + +const THALE = "0xE85B662Fe97e8562f4099d8A1d5A92D4B453bF30"; + + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "0x8971dFb268B961a9270632f28B24F2f637c94244" + ], + owners: [Treasury], + ownTokens: [THALE], + }, +}) \ No newline at end of file From 2dc0568b62e0fa93a6b9beed71f8ea5eb6c81334 Mon Sep 17 00:00:00 2001 From: LionDEX <131145154+LionDEXDev@users.noreply.github.com> Date: Wed, 26 Apr 2023 19:28:55 +0800 Subject: [PATCH 0079/1354] exclude treasury from tvl --- projects/liondex/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/liondex/index.js b/projects/liondex/index.js index 307110da7a..b065347850 100644 --- a/projects/liondex/index.js +++ b/projects/liondex/index.js @@ -1,7 +1,7 @@ const { staking } = require('../helper/staking') const { sumTokens2,sumTokensExport } = require('../helper/unwrapLPs') -const treasure = "0x7fca3bf8adc4e143bd789aecda36c0ce34f1d75b"; +//const treasure = "0x7fca3bf8adc4e143bd789aecda36c0ce34f1d75b"; const lionDEXVault = "0x8eF99304eb88Af9BDe85d58a35339Cb0e2a557B6"; const lionStaking = "0x154E2b1dBE9F493fF7938E5d686366138ddCE017"; const LION = "0x8ebb85d53e6955e557b7c53acde1d42fd68561ec"; @@ -10,9 +10,9 @@ const USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; module.exports = { - methodology: `Counts USDC in treasure and fsGLP deposited to lionDEXVault. Staking counts Lion deposited to stakingPool.`, + methodology: `Counts fsGLP and USDC deposited to lionDEXVault. Staking counts Lion deposited to stakingPool.`, arbitrum: { - tvl: sumTokensExport({ chain: 'arbitrum', owners: [treasure, lionDEXVault], tokens: [ fsGLP, USDC]}), + tvl: sumTokensExport({ chain: 'arbitrum', owners: [lionDEXVault], tokens: [ fsGLP, USDC]}), staking: staking(lionStaking, LION, 'arbitrum') } -} \ No newline at end of file +} From 04672252e223c033e83478121b9b1280e8661e82 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Apr 2023 12:32:07 +0100 Subject: [PATCH 0080/1354] smbswap v3 --- projects/smbswap-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/smbswap-v3/index.js diff --git a/projects/smbswap-v3/index.js b/projects/smbswap-v3/index.js new file mode 100644 index 0000000000..d6b0c28e11 --- /dev/null +++ b/projects/smbswap-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + bsc: { factory: '0xa9b5d4eac94cb98117abdcc0ecbd7731960f91d9', fromBlock: 27043748, isAlgebra: false }, +}) \ No newline at end of file From 576a0980e73b65ea19ca2d0abec1b75a903bf8b5 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Apr 2023 13:12:32 +0100 Subject: [PATCH 0081/1354] resolveUniV3 --- projects/smbswap-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/smbswap-v3/index.js b/projects/smbswap-v3/index.js index d6b0c28e11..b5ec4a2287 100644 --- a/projects/smbswap-v3/index.js +++ b/projects/smbswap-v3/index.js @@ -1,5 +1,5 @@ const { uniV3Export } = require('../helper/uniswapV3') module.exports = uniV3Export({ - bsc: { factory: '0xa9b5d4eac94cb98117abdcc0ecbd7731960f91d9', fromBlock: 27043748, isAlgebra: false }, + bsc: { factory: '0xa9b5d4eac94cb98117abdcc0ecbd7731960f91d9', fromBlock: 27043748, isAlgebra: false, resolveUniV3: true,}, }) \ No newline at end of file From 48cd4a3296ecb3931c1f0a0189967ff3d97631d9 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Apr 2023 13:13:18 +0100 Subject: [PATCH 0082/1354] undo last commit --- projects/smbswap-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/smbswap-v3/index.js b/projects/smbswap-v3/index.js index b5ec4a2287..05f2539157 100644 --- a/projects/smbswap-v3/index.js +++ b/projects/smbswap-v3/index.js @@ -1,5 +1,5 @@ const { uniV3Export } = require('../helper/uniswapV3') module.exports = uniV3Export({ - bsc: { factory: '0xa9b5d4eac94cb98117abdcc0ecbd7731960f91d9', fromBlock: 27043748, isAlgebra: false, resolveUniV3: true,}, + bsc: { factory: '0xa9b5d4eac94cb98117abdcc0ecbd7731960f91d9', fromBlock: 27043748, isAlgebra: false,}, }) \ No newline at end of file From fb771480123989b444a9b962388affa138ed2eac Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 26 Apr 2023 13:14:01 +0100 Subject: [PATCH 0083/1354] smbswap v3 (#6081) * smbswap v3 * resolveUniV3 * undo last commit --- projects/smbswap-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/smbswap-v3/index.js diff --git a/projects/smbswap-v3/index.js b/projects/smbswap-v3/index.js new file mode 100644 index 0000000000..05f2539157 --- /dev/null +++ b/projects/smbswap-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + bsc: { factory: '0xa9b5d4eac94cb98117abdcc0ecbd7731960f91d9', fromBlock: 27043748, isAlgebra: false,}, +}) \ No newline at end of file From 293d1cda6dcd3f9ea582d54fead787753628aaad Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Apr 2023 13:14:57 +0100 Subject: [PATCH 0084/1354] treasury liondex --- projects/treasury/liondex.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/treasury/liondex.js diff --git a/projects/treasury/liondex.js b/projects/treasury/liondex.js new file mode 100644 index 0000000000..532476687e --- /dev/null +++ b/projects/treasury/liondex.js @@ -0,0 +1,20 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const Treasury = "0x7fca3bf8adc4e143bd789aecda36c0ce34f1d75b"; + +const LION = "0x8eBb85D53e6955e557b7c53acDE1D42fD68561Ec"; + + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "0x8971dFb268B961a9270632f28B24F2f637c94244", + "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + ], + owners: [Treasury], + ownTokens: [LION], + resolveUniV3: true, + }, +}) \ No newline at end of file From a68fb76a00dac549f765cbc5534cb6f86f77f593 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 17:58:19 +0530 Subject: [PATCH 0085/1354] Update index.js --- projects/pheasantswap/index.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/projects/pheasantswap/index.js b/projects/pheasantswap/index.js index 65d41475f4..4941297bcf 100644 --- a/projects/pheasantswap/index.js +++ b/projects/pheasantswap/index.js @@ -1,14 +1,5 @@ -const { get } = require("../helper/http") -async function fetch() { - const {liquidityList} = await get('http://info.pheasantswap.com/swap/operate/getSwapStatisticsList') - const liquidity = liquidityList[liquidityList.length -1] - return liquidity.amount*1 -} +const { getUniTVL } = require('../helper/unknownTokens') module.exports = { - methodology: "PheasantSwap - A Trustworthy Decentralized Exchange Built on ENULS.", - enuls: { - fetch - }, - fetch + enuls: { tvl: getUniTVL({ factory: '0x7bf960B15Cbd9976042257Be3F6Bb2361E107384', useDefaultCoreAssets: true, fetchBalances: true }), }, } From bfeb498f6aad409d0ef3c4d947f4f527072a9724 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Apr 2023 13:31:46 +0100 Subject: [PATCH 0086/1354] add arbitrum treasury to badger dao and yearn --- projects/treasury/badger-dao.js | 8 ++++++++ projects/treasury/yearn.js | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/projects/treasury/badger-dao.js b/projects/treasury/badger-dao.js index 995802fadc..25385ea649 100644 --- a/projects/treasury/badger-dao.js +++ b/projects/treasury/badger-dao.js @@ -10,6 +10,7 @@ const treasury_drip1 = "0xA3Dc099D14722D0e25B3A904427377B4B2ab9fA4"; const treasury_drip2 = "0xC0D8fD5c722AF68437E7dFc095a980500dC0961D"; const BADGER = "0x3472A5A71965499acd81997a54BBA8D852C6E53d"; const DIGG = "0x798D1bE841a82a273720CE31c822C61a67a601C3"; +const treasuryarb = "0xb364bab258ad35dd83c7dd4e8ac78676b7aa1e9f" const mapping = { '0x4efc8ded860bc472fa8d938dc3fd4946bc1a0a18': '0xb460daa847c45f1c4a41cb05bfb3b51c92e41b36', @@ -47,4 +48,11 @@ module.exports = treasuryExports({ resolveUniV3: true, transformAddress, }, + arbitrum: { + tokens: [ + nullAddress, + "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978" + ], + owners: [treasuryarb] + } }) diff --git a/projects/treasury/yearn.js b/projects/treasury/yearn.js index 5289b3b4de..6a86d571a6 100644 --- a/projects/treasury/yearn.js +++ b/projects/treasury/yearn.js @@ -2,7 +2,7 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); const yearnTreasury = "0x93a62da5a14c80f265dabc077fcee437b1a0efde"; const yearnTreasury1 = "0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52"; - +const yearnTreasuryarb = "0xb6bc033d34733329971b938fef32fad7e98e56ad" const YEARN = "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e"; @@ -25,4 +25,10 @@ module.exports = treasuryExports({ ownTokens: [YEARN], fetchTokens: true, }, + arbitrum: { + tokens: [ + nullAddress + ], + owners: [yearnTreasuryarb] + } }) \ No newline at end of file From 11493cd7020e6f70eeba0df46a3c711265b18bc7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 14:34:38 +0200 Subject: [PATCH 0087/1354] add WENULS as coreAsset --- projects/helper/coreAssets.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 04884453f2..fc1b129a89 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1432,5 +1432,8 @@ ], "oas": [ "0x5200000000000000000000000000000000000001" + ], + "enuls": [ + "0x217dffF57E3b855803CE88a1374C90759Ea071bD" ] } From fb4221315b528b028bf5b6806e34577cd5636b6c Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Wed, 26 Apr 2023 13:55:19 +0100 Subject: [PATCH 0088/1354] add bsc rpc --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 31e6d30731..328af5536a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,6 +15,7 @@ jobs: - name: Run changes files through test script env: LLAMA_DEBUG_MODE: "true" + BSC_RPC: https://rpc.ankr.com/bsc,https://bsc-dataseed4.binance.org run: | RUN_FILES=$( MODIFIED=${{ steps.file_changes.outputs.files_modified}} \ From feb1bf1ce012706cf9d885a30e3d33956a5d23e2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 15:50:28 +0200 Subject: [PATCH 0089/1354] add https://app.vertexprotocol.com --- projects/vertex/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/vertex/index.js diff --git a/projects/vertex/index.js b/projects/vertex/index.js new file mode 100644 index 0000000000..6122e29f19 --- /dev/null +++ b/projects/vertex/index.js @@ -0,0 +1,21 @@ +const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') + +const config = { + "querier": "0x1693273B443699bee277eCbc60e2C8027E91995d", + "feeCalculator": "0x2259440579447D0625a5E28dfF3E743d207e8890", + "clearinghouse": "0xAE1ec28d6225dCE2ff787dcb8CE11cF6D3AE064f", + "clearinghouseLiq": "0xca007C51Fc14eEA88252Cc4FD71e91E44026F020", + "endpoint": "0xbbEE07B3e8121227AfCFe1E2B82772246226128e", + "spotEngine": "0x32d91Af2B17054D575A7bF1ACfa7615f41CCEfaB", + "perpEngine": "0xb74C78cca0FADAFBeE52B2f48A67eE8c834b5fd1" +} + + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ + owners: [config.clearinghouse, config.endpoint], + tokens: ['0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8'], + }) + } +} \ No newline at end of file From 2fb44696e1b29778135b5323c5f136d087783a30 Mon Sep 17 00:00:00 2001 From: Oscar Yin Date: Wed, 26 Apr 2023 21:54:17 +0800 Subject: [PATCH 0090/1354] update tifi staking and add pool2 (#6009) * update tifi tvl and add pool2 * fix for the pool2 * fix the test * comment the pool2 --------- Co-authored-by: Oscar Yin --- projects/tifi-bank/index.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/projects/tifi-bank/index.js b/projects/tifi-bank/index.js index bd554f8a09..1b512da688 100644 --- a/projects/tifi-bank/index.js +++ b/projects/tifi-bank/index.js @@ -1,9 +1,35 @@ const { getUniTVL } = require('../helper/unknownTokens') -const { staking } = require('../helper/staking') +const { sumTokensExport } = require("../helper/unknownTokens"); +const { stakings } = require('../helper/staking') + +const stakingContracts = [ + // Staking in the RESERVIOR + "0x0AEfF3d761F6706295f3828C87ccE29c9418a93B", + // Loan + "0x8A6F7834A9d60090668F5db33FEC353a7Fb4704B", + // Lock to Earn + "0xA015263066da13e94526a8b897eDB0E3cd55B19A" +]; + +const lpContract = [ + //PinkLock TIFI Bank + "0x407993575c91ce7643a4d4ccacc9a98c36ee1bbe", + //PinkLock Cake + "0x7ee058420e5937496f5a2096f04caa7721cf70cc" +] + +const lpTokens = [ + // TiFi bank LP token + "0x707B6F02fFC0C7fD9fe3a4F392Aef47218021337", + // Cake LP token + "0xB62BB233Af2F83028Be19626256A9894B68AAe5E" +] + module.exports = { bsc: { tvl: getUniTVL({ chain: 'bsc', factory: '0xb3456550c17128ca7ebbcc47d4be6cae29d43853', }), - staking: staking('0x0AEfF3d761F6706295f3828C87ccE29c9418a93B', '0x17E65E6b9B166Fb8e7c59432F0db126711246BC0', 'bsc') + staking: stakings(stakingContracts, '0x17E65E6b9B166Fb8e7c59432F0db126711246BC0', 'bsc'), + // pool2: sumTokensExport({ tokens: lpTokens, owners: lpContract, useDefaultCoreAssets: true }), } } From dfcaf7cd7c9d19cef9d99b6a129cc201e54ba50b Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 26 Apr 2023 22:49:20 +0800 Subject: [PATCH 0091/1354] update nerve bridge (#6078) * add tvl of kava chain * update nerve bridge * fix chain name issue --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/nervenetworkbridge/index.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/projects/nervenetworkbridge/index.js b/projects/nervenetworkbridge/index.js index 76f40f9c34..2b31e496b8 100644 --- a/projects/nervenetworkbridge/index.js +++ b/projects/nervenetworkbridge/index.js @@ -24,7 +24,9 @@ const getBridgeContract = { 'smartbch': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', 'enuls': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', 'kava': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', - 'ethpow': '0x67b3757f20DBFa114b593dfdAc2b3097Aa42133E' + 'ethpow': '0x67b3757f20DBFa114b593dfdAc2b3097Aa42133E', + 'rei': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'era': '0x54C4A99Ee277eFF14b378405b6600405790d5045' } const tronBridgeContract = 'TXeFBRKUW2x8ZYKPD13RuZDTd9qHbaPGEN'; @@ -36,10 +38,19 @@ async function getTokensConf() { return tokensConfTest } +function getChain(chain) { + const chainMapping = { + era: 'zksync' + } + + return chainMapping[chain] ?? chain +} + async function tvl(_, _b, _cb, { api, }) { let conf = await getTokensConf(); + const bridgeContract = getBridgeContract[api.chain]; - const tokens = Object.values(conf[api.chain]) + const tokens = Object.values(conf[getChain(api.chain)]) const owners = [bridgeContract] return sumTokens2({ api, tokens, owners, }) } From 0ae91255e860f63c96bedd2c190b1450ba349574 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 17:03:49 +0200 Subject: [PATCH 0092/1354] quadrat: add bsc --- projects/quadrat/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/quadrat/index.js b/projects/quadrat/index.js index 3716a442d7..bd9978676c 100644 --- a/projects/quadrat/index.js +++ b/projects/quadrat/index.js @@ -24,6 +24,10 @@ const config = { factory: '0xb8d498f025c45a8a7a63277cb1cca36c2599bbd7', fromBlock: 34510988, }, + bsc: { + factory: '0x28e9f86690449059734e079eaaa66d8913263bed', + fromBlock: 26497758, + }, } Object.keys(config).forEach(chain => { @@ -51,7 +55,7 @@ Object.keys(config).forEach(chain => { bals.forEach((val, i) => { if (!val) return; - const { amount0, amount1 } = val + const { amount0, amount1 } = val sdk.util.sumSingleBalance(balances, token0[i], amount0, api.chain) sdk.util.sumSingleBalance(balances, token1[i], amount1, api.chain) }) From f8c02feb6ef1419241c30d925287a5d056835c57 Mon Sep 17 00:00:00 2001 From: LybraFinance <131139254+LybraFinance@users.noreply.github.com> Date: Wed, 26 Apr 2023 23:18:55 +0800 Subject: [PATCH 0093/1354] Add files via upload Lybra protocol --- projects/lybra/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/lybra/index.js diff --git a/projects/lybra/index.js b/projects/lybra/index.js new file mode 100644 index 0000000000..9cf156e36c --- /dev/null +++ b/projects/lybra/index.js @@ -0,0 +1,28 @@ +const sdk = require("@defillama/sdk"); + +// Lybra holds total stake collateral (deposited ETH) +const LYBRA_CONTRACT = "0x97de57eC338AB5d51557DA3434828C5DbFaDA371"; + +async function tvl(_, block) { + + const lybraEthTvl = ( + await sdk.api.abi.call({ + target: LYBRA_CONTRACT, + abi: "uint256:totalDepositedEther", + block, + }) + ).output; + + return { + [ETH_ADDRESS]: lybraEthTvl, + }; +} + +module.exports = { + timetravel: true, + start: 1682265600, + ethereum: { + tvl, + } + +}; From 0d93648b72361e5e1642ebad70004f262120de3a Mon Sep 17 00:00:00 2001 From: AmirJ Date: Wed, 26 Apr 2023 18:15:43 +0100 Subject: [PATCH 0094/1354] fix vault import error --- projects/popcorn/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/popcorn/index.js b/projects/popcorn/index.js index d74303c54a..3646ce7389 100644 --- a/projects/popcorn/index.js +++ b/projects/popcorn/index.js @@ -3,7 +3,7 @@ const { staking } = require('./staking') const { ADDRESSES } = require("./constants"); const { addButterV2TVL, addThreeXTVL } = require("./butter") const { addStakingPoolsTVL } = require("./stakingPools") -const { addVaultToTVL } = require("./vaults"); +const { addVaultToTVL } = require("./vault"); const vaultChains = Object.keys(ADDRESSES).filter(chain => Object.keys(ADDRESSES[chain]).includes('vaultRegistry')); From e23446477b627ebc5b82517f7f449168429b0751 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Wed, 26 Apr 2023 18:38:17 +0100 Subject: [PATCH 0095/1354] Update index.js Please list the new cToken: maETH 0x0B6c2a9d4d739778dF6cD1cf815754BD1438063c kava chain --- projects/scrubinvest/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index b81dea3296..cda115e582 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -23,6 +23,8 @@ async function tvl(_, _b, _cb, { api, }) { ['0x92e17FD2DA50775FBD423702E4717cCD7FB2A6BB', '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], ['0x58333b7D0644b52E0e56cC3803CA94aF9e0B52C3', '0xB4Ba7ba722eacAE8f1e4c6213AF05b5E8B27dbdB'], ['0x24149e2D0D3F79EBb7Fc464b09e3628dE395b39D', '0xB9774bB2A18Af59Ec9bf86dCaeC07473A2D2F230'], + // WETH + ['0x0B6c2a9d4d739778dF6cD1cf815754BD1438063c', '0x3CcA2C0d433E00433082ba16e968CA11dA6Dc156'], // Vaults Equilibre Scrub // ['0xeA848151ACB1508988e56Ee7689F004df2B15ced', "0x4402Cf5433D57266563979654d20887AcE672393"], // ['0x7f8ed7d31795dc6f5fc5f6685b11419674361501', "0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457"], From e2a6ce159bfa54c6cfad07714c6fa43f015cb169 Mon Sep 17 00:00:00 2001 From: FunBear Date: Wed, 29 Mar 2023 16:34:33 +0300 Subject: [PATCH 0096/1354] Add Funbear --- projects/funbear/index.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 projects/funbear/index.js diff --git a/projects/funbear/index.js b/projects/funbear/index.js new file mode 100644 index 0000000000..a64b5386ad --- /dev/null +++ b/projects/funbear/index.js @@ -0,0 +1,36 @@ +const { ethers } = require("ethers"); +const sdk = require("@defillama/sdk"); + +const chain = 'kava'; +const stakeContractAddresses = { + unlockedStake: '0x1C4f227A2c7F62f88a7907cBF027403603A81A64', + yearlyStake: '0xb991FAeF710f2ae699c425a92482Fc5D3Ae0cCD7', +}; + +async function fetchStakedAmount(stakeContract, block) { + var stakeBalance = (await sdk.api.abi.call({ + target: stakeContract, + abi: 'erc20:totalSupply', + block: block, + chain: chain + })).output; + return stakeBalance; +} + +async function getTotalStake(timestamp, block, chainBlocks) { + var unlocked = await fetchStakedAmount(stakeContractAddresses.unlockedStake, chainBlocks[chain]); + var yearly = await fetchStakedAmount(stakeContractAddresses.yearlyStake, chainBlocks[chain]); + + return { + 'ethereum:0xd86c0b9b686f78a7a5c3780f03e700dbbad40e01': ethers.BigNumber.from(unlocked).add(yearly), + }; +} + +module.exports = { + methodology: 'TVL counts staked FUNB coins on the platform itself.', + timetravel: false, + kava: { + tvl:() => 0, + staking: getTotalStake, + } +}; From 3664b56f0df8c6eaf566a54553719bdf80cfc1f3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 22:22:56 +0200 Subject: [PATCH 0097/1354] add wasabi --- projects/merlin/index.js | 2 +- projects/wasabi/index.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 projects/wasabi/index.js diff --git a/projects/merlin/index.js b/projects/merlin/index.js index 0bb4b2df48..01155119b6 100644 --- a/projects/merlin/index.js +++ b/projects/merlin/index.js @@ -5,6 +5,6 @@ module.exports = { tvl: getUniTVL({ factory: '0x63E6fdAdb86Ea26f917496bEEEAEa4efb319229F', useDefaultCoreAssets: true, fetchBalances: true }), }, hallmarks: [ - [Math.floor(new Date('2023-04-25')/1e3), 'Project Rugged!'], + [Math.floor(new Date('2023-04-26')/1e3), 'Project Rugged!'], ], }; diff --git a/projects/wasabi/index.js b/projects/wasabi/index.js new file mode 100644 index 0000000000..44cc6d902e --- /dev/null +++ b/projects/wasabi/index.js @@ -0,0 +1,21 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') + +async function tvl(_, _b, _cb, { api, }) { + const logs = await getLogs({ + api, + target: '0x8e2b50413a53f50e2a059142a9be060294961e40', + topics: ['0xd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b967'], + eventAbi: 'event NewPool(address poolAddress, address indexed nftAddress, address indexed owner)', + onlyArgs: true, + fromBlock: 17082136, + }) + const ownerTokens = logs.map(i => [[i.nftAddress, nullAddress], i.poolAddress]) + return sumTokens2({ api, ownerTokens, }) +} + +module.exports = { + ethereum: { + tvl + } +} \ No newline at end of file From 2b7aa9ccaf3fda7ebe2ab23b37bcb4644f673c35 Mon Sep 17 00:00:00 2001 From: DCota <32775237+DaigaroCota@users.noreply.github.com> Date: Wed, 26 Apr 2023 21:55:24 +0100 Subject: [PATCH 0098/1354] feat(ladao-xocolatl): add bsc and reserve tokens --- projects/ladao-xocolatl/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/ladao-xocolatl/index.js b/projects/ladao-xocolatl/index.js index 3c8e0b9d80..7173cc240b 100644 --- a/projects/ladao-xocolatl/index.js +++ b/projects/ladao-xocolatl/index.js @@ -12,4 +12,12 @@ module.exports = { ] }) }, + bsc: { + tvl: sumTokensExport({ + tokensAndOwners: [ + ['0x2170Ed0880ac9A755fd29B2688956BD959F933F8','0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], + ['0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c','0x070ccE6887E70b75015F948b12601D1E759D2024'] + ] + }) + }, } \ No newline at end of file From e4635eef8e5a3ebe3561dc4ec189b58965cc3067 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Apr 2023 23:03:18 +0200 Subject: [PATCH 0099/1354] fix aura --- projects/aura-finance/index.js | 108 ++++++++++++++------------------- 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index b4a05092d7..d9462ad5d9 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -16,69 +16,55 @@ const addresses = { bal80eth20: "0x5c6Ee304399DBdB9C8Ef030aB642B10820DB8F56", }; -async function tvl(_, block) { - let pools = await Promise.all([AURA_BOOSTER, AURA_BOOSTER_2].map(i => sdk.api2.abi.fetchList({ - target: i, - block, - itemAbi: abi.poolInfo, - lengthAbi: abi.poolLength, - }))) - pools = pools.flat() - const poolIds = (await sdk.api.abi.multiCall({ - calls: pools.map(pool => ({target: pool.lptoken})), - abi: abi.getPoolId, - block, - })).output; - const poolTokensInfo = (await sdk.api.abi.multiCall({ - calls: poolIds.map(poolId => ({target: BALANCER_VAULT, params: poolId.output})), - abi: abi.getPoolTokens, - block - })).output; - const balancesinStaking = (await sdk.api.abi.multiCall({ - calls: pools.map(pool => ({target: pool.token, params:pool.crvRewards })), - abi: 'erc20:balanceOf', - block - })).output; - const totalSupplies = (await sdk.api.abi.multiCall({ - calls: pools.map(pool => ({target: pool.lptoken})), - abi: 'erc20:totalSupply', - block - })).output; - let balances = {} - const { output: veBalTotalSupply } = await sdk.api.erc20.totalSupply({ target: addresses.veBal, block }) - const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veBal, owner: addresses.auraDelegate, block }) - const ratio = veBalance / veBalTotalSupply - const bal = await unwrapBalancerPool({ block, balancerPool: addresses.bal80eth20, owner: addresses.veBal, }) - Object.entries(bal).forEach(([token, value]) => { - const newValue = BigNumber(+value * ratio).toFixed(0) - sdk.util.sumSingleBalance(balances, token, newValue) - }) - for (let [i,info] of poolTokensInfo.entries()) { - // unwrapBalancerPool would be better here, but since crvRewards address holds aura-wrapped tokens, it won't work - const result = Object.assign.apply({}, info.output.tokens.map( (v, i) => ( {[v]: info.output.balances[i]} ) ) ); - const totalSupply = BigNumber(totalSupplies[i].output); - const stakedBalance = BigNumber(balancesinStaking[i].output); - const ratio = stakedBalance.div(totalSupply) - if (info.input.params[0] == "0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249") { - // Pool is 80BAL-20ETH/auraBAL, need to unwrap 80BAL-20ETH - const unwrapped = await unwrapBalancerPool({block, balancerPool: addresses.bal80eth20, owner:BALANCER_VAULT}) - Object.entries(unwrapped).forEach(([token, balance]) => { - balances[token] = BigNumber(balances[token] || 0).plus(BigNumber(balance).times(ratio)) - }) - } - Object.entries(result).forEach(([token, balance]) => { - balances[token] = BigNumber(balances[token] || 0).plus(BigNumber(balance).times(ratio)) - }) - } - return balances +async function tvl(_, block, _1, { api }) { + let pools = await Promise.all([AURA_BOOSTER, AURA_BOOSTER_2].map(i => api.fetchList({ target: i, itemAbi: abi.poolInfo, lengthAbi: abi.poolLength, }))) + pools = pools.flat() + const poolInputs = pools.map(pool => pool.lptoken) + const poolIds = await api.multiCall({ calls: poolInputs, abi: abi.getPoolId, permitFailure: true, }) + + let failedCallIndices = poolIds.map((v, i) => [i, v]).filter(i => !i[1]).map(i => i[0]) + let newPoolIds = await api.multiCall({ calls: failedCallIndices.map(i => poolInputs[i]), abi: 'function POOL_ID() view returns (bytes32)', permitFailure: true, }) + newPoolIds.forEach((v, i) => { if (v) poolIds[failedCallIndices[i]] = v }) + + failedCallIndices = poolIds.map((v, i) => [i, v]).filter(i => !i[1]).map(i => i[0]) + const newLpTokens = await api.multiCall({ calls: failedCallIndices.map(i => poolInputs[i]), abi: 'address:lp_token', permitFailure: true, }) + newPoolIds = await api.multiCall({ calls: newLpTokens.map(i => ({ target: i})), abi: abi.getPoolId, permitFailure: true, }) + newPoolIds.forEach((v, i) => { if (v) poolIds[failedCallIndices[i]] = v }) + + + const poolTokensInfo = await api.multiCall({ calls: poolIds.map(poolId => ({ target: BALANCER_VAULT, params: poolId })), abi: abi.getPoolTokens, }) + const balancesinStaking = await api.multiCall({ calls: pools.map(pool => ({ target: pool.token, params: pool.crvRewards })), abi: 'erc20:balanceOf', }) + const totalSupplies = await api.multiCall({ calls: pools.map(pool => pool.lptoken), abi: 'erc20:totalSupply', }) + const { output: veBalTotalSupply } = await sdk.api.erc20.totalSupply({ target: addresses.veBal, block }) + const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veBal, owner: addresses.auraDelegate, block }) + const ratio = veBalance / veBalTotalSupply + const ratios = balancesinStaking.map((v, i) => +totalSupplies[i] > 0 ? v / totalSupplies[i]: 0) + const bal = await unwrapBalancerPool({ block, balancerPool: addresses.bal80eth20, owner: addresses.veBal, }) + Object.entries(bal).forEach(([token, value]) => { + api.add(token, +value * ratio, { skipChain: true,}) + }) + for (let [i, info] of poolTokensInfo.entries()) { + // // unwrapBalancerPool would be better here, but since crvRewards address holds aura-wrapped tokens, it won't work + // if (poolIds[i] == "0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249") { + // // Pool is 80BAL-20ETH/auraBAL, need to unwrap 80BAL-20ETH + // const unwrapped = await unwrapBalancerPool({ block: api.block, balancerPool: addresses.bal80eth20, owner: BALANCER_VAULT }) + // Object.entries(unwrapped).forEach(([token, balance]) => { + // api.add(token, balance * ratio) + // }) + // } else { + info.tokens.forEach((token, j) => { + api.add(token, info.balances[j] * ratios[i]) + }) + // } + } } module.exports = { - timetravel: true, - methodology: "TVL of Aura Finance consists of the total deposited assets, protocol-controlled value via veBAL and vote-locked AURA (staking)", - ethereum: { - tvl, - staking: staking(addresses.auraLocker, addresses.aura) - } + timetravel: true, + methodology: "TVL of Aura Finance consists of the total deposited assets, protocol-controlled value via veBAL and vote-locked AURA (staking)", + ethereum: { + tvl, + staking: staking(addresses.auraLocker, addresses.aura) + } } From 6ab36d9a931e097075c922c999b7341b2eb8421f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 27 Apr 2023 01:19:28 +0100 Subject: [PATCH 0100/1354] add swell adapter --- projects/swell/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/swell/index.js diff --git a/projects/swell/index.js b/projects/swell/index.js new file mode 100644 index 0000000000..e37c909255 --- /dev/null +++ b/projects/swell/index.js @@ -0,0 +1,9 @@ +const { nullAddress } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: async (_, _1, _2, { api }) => ({ + [nullAddress]: await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:totalETHDeposited'}) + }) + } +} \ No newline at end of file From ab1c6190daeee231beaaf5beb8ceb30b688f12f2 Mon Sep 17 00:00:00 2001 From: LybraFinance <131139254+LybraFinance@users.noreply.github.com> Date: Thu, 27 Apr 2023 10:12:37 +0800 Subject: [PATCH 0101/1354] Add Lybra Protocol Add Lybra Protocol --- projects/lybra/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/lybra/index.js b/projects/lybra/index.js index 9cf156e36c..ce713ffa7f 100644 --- a/projects/lybra/index.js +++ b/projects/lybra/index.js @@ -1,5 +1,6 @@ const sdk = require("@defillama/sdk"); +const ETH_ADDRESS = "0x0000000000000000000000000000000000000000"; // Lybra holds total stake collateral (deposited ETH) const LYBRA_CONTRACT = "0x97de57eC338AB5d51557DA3434828C5DbFaDA371"; From 2f42f0687baa96d82bdca593d4c75d6c3e7cfd9c Mon Sep 17 00:00:00 2001 From: user Date: Thu, 27 Apr 2023 03:51:47 +0100 Subject: [PATCH 0102/1354] Swaprum Init --- projects/swaprum/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/swaprum/index.js diff --git a/projects/swaprum/index.js b/projects/swaprum/index.js new file mode 100644 index 0000000000..3768c9b5b6 --- /dev/null +++ b/projects/swaprum/index.js @@ -0,0 +1,15 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +const { stakings } = require("../helper/staking"); + +const factory = "0xD757C986a28F82761Fe874Bc40073718dC1e980C"; +const SAPR = "0x2aE25460c44d578E6f41aB900a7A5425b6492C16" +const pools = [ + "0x2B6deC18E8e4DEf679b2E52e628B14751F2f66bc", +] + +module.exports = { + arbitrum: { + staking: stakings(pools, SAPR, 'arbitrum'), + tvl: getUniTVL({ chain: 'arbitrum', factory}) + } +}; \ No newline at end of file From ea67f761bf6021e407bae746e0e83db06e610f36 Mon Sep 17 00:00:00 2001 From: leon Date: Thu, 27 Apr 2023 10:57:39 +0500 Subject: [PATCH 0103/1354] Add DAMX --- projects/damx/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/damx/index.js diff --git a/projects/damx/index.js b/projects/damx/index.js new file mode 100644 index 0000000000..b039de169e --- /dev/null +++ b/projects/damx/index.js @@ -0,0 +1,14 @@ +const { staking } = require("../helper/staking"); +const { gmxExports } = require("../helper/gmx"); + +//Fantom +const fantomVault = "0xD093eeE7c968CEef2df96cA9949eba1a1A9b2306"; +const fantomStaking = "0xECef79f974182f4E9c168E751101F23686Bdc6dF"; +const fantomDMX = "0x0Ec581b1f76EE71FB9FEefd058E0eCf90EBAb63E"; + +module.exports = { + fantom: { + staking: staking(fantomStaking, fantomDMX, "fantom", fantomDMX, 18), + tvl: gmxExports({ vault: fantomVault }) + } +}; From 40c4782249e05af0b6ad46c2038b026f8a3fb17e Mon Sep 17 00:00:00 2001 From: ravirasadiya Date: Thu, 27 Apr 2023 11:31:07 +0530 Subject: [PATCH 0104/1354] add zkdefi tvl --- projects/zkdefi/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/zkdefi/index.js diff --git a/projects/zkdefi/index.js b/projects/zkdefi/index.js new file mode 100644 index 0000000000..eaae02a1dc --- /dev/null +++ b/projects/zkdefi/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + polygon_zkevm: { + tvl: getUniTVL({ + chain: "polygon_zkevm", + useDefaultCoreAssets: true, + factory: "0xfDC8ec444F482Fe8aFe0a00114548DC9ff729568", + }), + }, +}; From 58436abcc0166c7d1353f08e384da710cdf6b065 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Apr 2023 08:36:40 +0200 Subject: [PATCH 0105/1354] minor fix --- projects/damx/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/damx/index.js b/projects/damx/index.js index b039de169e..f13a1e5ce2 100644 --- a/projects/damx/index.js +++ b/projects/damx/index.js @@ -8,7 +8,7 @@ const fantomDMX = "0x0Ec581b1f76EE71FB9FEefd058E0eCf90EBAb63E"; module.exports = { fantom: { - staking: staking(fantomStaking, fantomDMX, "fantom", fantomDMX, 18), + staking: staking(fantomStaking, fantomDMX), tvl: gmxExports({ vault: fantomVault }) } }; From cc7b71d886c06252fd6c66f709850fad6c0775db Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Apr 2023 08:42:33 +0200 Subject: [PATCH 0106/1354] minor fix --- projects/swaprum/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/swaprum/index.js b/projects/swaprum/index.js index 3768c9b5b6..fade42032a 100644 --- a/projects/swaprum/index.js +++ b/projects/swaprum/index.js @@ -8,8 +8,9 @@ const pools = [ ] module.exports = { + misrepresentedTokens: true, arbitrum: { - staking: stakings(pools, SAPR, 'arbitrum'), - tvl: getUniTVL({ chain: 'arbitrum', factory}) + staking: stakings(pools, SAPR,), + tvl: getUniTVL({ fetchBalances: true, useDefaultCoreAssets: true, factory }) } }; \ No newline at end of file From bb979e0a96f808ea826f1a38ec1d7aeb276f45fd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Apr 2023 08:43:44 +0200 Subject: [PATCH 0107/1354] minor fix --- projects/merlin/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/merlin/index.js b/projects/merlin/index.js index 01155119b6..26f8863233 100644 --- a/projects/merlin/index.js +++ b/projects/merlin/index.js @@ -1,8 +1,7 @@ -const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { start: 1682899200, era: { - tvl: getUniTVL({ factory: '0x63E6fdAdb86Ea26f917496bEEEAEa4efb319229F', useDefaultCoreAssets: true, fetchBalances: true }), + tvl: () => 0, }, hallmarks: [ [Math.floor(new Date('2023-04-26')/1e3), 'Project Rugged!'], From be109b4a19367ff28c6815644cb96174948ffbc5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Apr 2023 08:53:40 +0200 Subject: [PATCH 0108/1354] lybra: minor refactor --- projects/lybra/index.js | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/projects/lybra/index.js b/projects/lybra/index.js index ce713ffa7f..578683eeb9 100644 --- a/projects/lybra/index.js +++ b/projects/lybra/index.js @@ -1,29 +1,11 @@ -const sdk = require("@defillama/sdk"); +const { sumTokensExport } = require("../helper/unwrapLPs"); -const ETH_ADDRESS = "0x0000000000000000000000000000000000000000"; // Lybra holds total stake collateral (deposited ETH) const LYBRA_CONTRACT = "0x97de57eC338AB5d51557DA3434828C5DbFaDA371"; -async function tvl(_, block) { - - const lybraEthTvl = ( - await sdk.api.abi.call({ - target: LYBRA_CONTRACT, - abi: "uint256:totalDepositedEther", - block, - }) - ).output; - - return { - [ETH_ADDRESS]: lybraEthTvl, - }; -} - module.exports = { - timetravel: true, start: 1682265600, ethereum: { - tvl, + tvl: sumTokensExport({ owner: LYBRA_CONTRACT, tokens: ['0xae7ab96520de3a18e5e111b5eaab095312d7fe84']}), } - }; From 62b5bdf5e2bc0b6597af808b69a631e4328a6de3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Apr 2023 09:21:28 +0200 Subject: [PATCH 0109/1354] popcorn: refactor code --- projects/popcorn/index.js | 4 +-- projects/popcorn/vault.js | 63 ++++----------------------------------- 2 files changed, 7 insertions(+), 60 deletions(-) diff --git a/projects/popcorn/index.js b/projects/popcorn/index.js index 3646ce7389..f058e3b3bf 100644 --- a/projects/popcorn/index.js +++ b/projects/popcorn/index.js @@ -8,7 +8,7 @@ const { addVaultToTVL } = require("./vault"); const vaultChains = Object.keys(ADDRESSES).filter(chain => Object.keys(ADDRESSES[chain]).includes('vaultRegistry')); function getTVL(chain = undefined) { - return async (timestamp, block, chainBlocks) => { + return async (timestamp, block, chainBlocks, { api }) => { let balances = {}; if (chain && chain === 'ethereum') { await addButterV2TVL(balances, timestamp, chainBlocks, chain); @@ -16,7 +16,7 @@ function getTVL(chain = undefined) { } if (chain && vaultChains.includes(chain)) { - await addVaultToTVL(balances, timestamp, chainBlocks, chain, ADDRESSES[chain].vaultRegistry); + await addVaultToTVL(balances, api, ADDRESSES[chain].vaultRegistry); } return balances; } diff --git a/projects/popcorn/vault.js b/projects/popcorn/vault.js index 771077ad9d..ee61dfb0a8 100644 --- a/projects/popcorn/vault.js +++ b/projects/popcorn/vault.js @@ -1,68 +1,15 @@ const sdk = require('@defillama/sdk'); -const { BigNumber, constants, utils: ethersutils } = require("ethers"); -const utils = require('../helper/utils'); const getVaultsAbi = 'address[]:getRegisteredAddresses'; const getAssetAbi = 'address:asset'; const getTotalAssets = 'uint256:totalAssets'; -async function fetch(url) { - return await utils.fetchURL(url) - .catch(err => console.log(err, 'err')) -} - -async function getTokenPrice(chain, address) { - const queryString = `${chain}:${address}`; - const url = `https://coins.llama.fi/prices/current/${queryString}`; - const result = await fetch(url); - const parsed = await result.data; - const token = parsed.coins[`${chain}:${address}`]; - - - return token?.price && token?.decimals - ? { - value: BigNumber.from(Number(token?.price * (10 ** token?.decimals)).toFixed(0)), - decimals: token.decimals, - } - : { value: constants.Zero, decimals: 0 }; -} - -async function addVaultToTVL(balances, timestamp, chainBlocks, chain = "ethereum", vaultRegistryAddress) { - const block = chainBlocks[chain]; - const {output: vaultAddresses} = await sdk.api.abi.call({ - target: vaultRegistryAddress, - params: [], - chain, - block, - abi: getVaultsAbi - }); - - const { output: assets } = await sdk.api.abi.multiCall({ - abi: getAssetAbi, - calls: vaultAddresses.map(i => ({ target: i})), - chain, - block, - }); - - const { output: totalAssets } = await sdk.api.abi.multiCall({ - abi: getTotalAssets, - calls: vaultAddresses.map(i => ({ target: i})), - chain, - block, - }); - - const tokenPrices = await Promise.all( - assets.map(async asset => await getTokenPrice(chain, asset.output)) - ); - - - assets.forEach((asset, index) => { - const totalAssetsTransformed = totalAssets[index].output; - const priceOfAsset = tokenPrices[index].value; - const vaultTVL = (priceOfAsset.mul(totalAssetsTransformed)).div(ethersutils.parseUnits('1', tokenPrices[index].decimals)); - sdk.util.sumSingleBalance(balances, asset.output, vaultTVL, chain); - }) +async function addVaultToTVL(balances, api, vaultRegistryAddress) { + const vaultAddresses = await api.call({ target: vaultRegistryAddress, abi: getVaultsAbi }); + const assets = await api.multiCall({ abi: getAssetAbi, calls: vaultAddresses, }); + const totalAssets = await api.multiCall({ abi: getTotalAssets, calls: vaultAddresses, }); + assets.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, totalAssets[i], api.chain)) } module.exports = { From e99cb4faf695eaba5c619b776fc642e51e0acadb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Apr 2023 09:36:54 +0200 Subject: [PATCH 0110/1354] minor refactor --- projects/funbear/index.js | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/projects/funbear/index.js b/projects/funbear/index.js index a64b5386ad..51238b72db 100644 --- a/projects/funbear/index.js +++ b/projects/funbear/index.js @@ -1,36 +1,19 @@ -const { ethers } = require("ethers"); -const sdk = require("@defillama/sdk"); - -const chain = 'kava'; +const FUNB = 'ethereum:0xd86c0b9b686f78a7a5c3780f03e700dbbad40e01'; const stakeContractAddresses = { unlockedStake: '0x1C4f227A2c7F62f88a7907cBF027403603A81A64', yearlyStake: '0xb991FAeF710f2ae699c425a92482Fc5D3Ae0cCD7', -}; - -async function fetchStakedAmount(stakeContract, block) { - var stakeBalance = (await sdk.api.abi.call({ - target: stakeContract, - abi: 'erc20:totalSupply', - block: block, - chain: chain - })).output; - return stakeBalance; } -async function getTotalStake(timestamp, block, chainBlocks) { - var unlocked = await fetchStakedAmount(stakeContractAddresses.unlockedStake, chainBlocks[chain]); - var yearly = await fetchStakedAmount(stakeContractAddresses.yearlyStake, chainBlocks[chain]); - - return { - 'ethereum:0xd86c0b9b686f78a7a5c3780f03e700dbbad40e01': ethers.BigNumber.from(unlocked).add(yearly), - }; +async function staking(timestamp, block, chainBlocks, { api }) { + const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: Object.values(stakeContractAddresses) }) + supplies.forEach(i => api.add(FUNB, i, { skipChain: true })) + return api.getBalances() } module.exports = { methodology: 'TVL counts staked FUNB coins on the platform itself.', - timetravel: false, kava: { - tvl:() => 0, - staking: getTotalStake, + tvl: () => 0, + staking, } }; From f73939c26387345fcb386bfcd4f129b889ee63af Mon Sep 17 00:00:00 2001 From: Ivaylo Petrov Date: Thu, 27 Apr 2023 12:55:57 +0300 Subject: [PATCH 0111/1354] Add hydradex-v3 --- projects/helper/getHydraV3SubgraphTvl.js | 71 +++++++++++++++++++++++ projects/{hydradex => hydradex-v2}/api.js | 0 projects/hydradex-v3/index.js | 17 ++++++ 3 files changed, 88 insertions(+) create mode 100644 projects/helper/getHydraV3SubgraphTvl.js rename projects/{hydradex => hydradex-v2}/api.js (100%) create mode 100644 projects/hydradex-v3/index.js diff --git a/projects/helper/getHydraV3SubgraphTvl.js b/projects/helper/getHydraV3SubgraphTvl.js new file mode 100644 index 0000000000..2a0ba290dd --- /dev/null +++ b/projects/helper/getHydraV3SubgraphTvl.js @@ -0,0 +1,71 @@ +const { request, gql } = require("graphql-request"); +const { toUSDTBalances } = require("../helper/balances"); +const { blockQuery } = require("./http"); + +function getChainTvl( + graphUrls, + factoriesName = "factories", + tvlName = "totalValueLockedUSD", + blockCatchupLimit = 500 +) { + const graphQuery = gql` + query get_tvl($block: Int!) { + ${factoriesName}( + block: { number: $block } + ) { + ${tvlName} + } + } + `; + + const blockGraphQuery = gql` + query get_block { + blocks(orderBy: "number", first: 1, orderDirection: "desc") { + number + } + } + `; + + return (chain) => { + return async (_, _b, _cb, { api }) => { + api.getBlock = async function () { + try { + const blocks = ( + await request( + "https://graph.hydradex.org/subgraphs/name/blocklytics/ethereum-blocks", + blockGraphQuery + ) + ).blocks; + + this.block = Number(blocks[0].number) || undefined; + } catch { + this.block = undefined; + } + }; + await api.getBlock(); + const block = api.block; + + let uniswapFactories; + + if (!blockCatchupLimit) { + uniswapFactories = ( + await request(graphUrls[chain], graphQuery, { block }) + )[factoriesName]; + } else { + uniswapFactories = ( + await blockQuery(graphUrls[chain], graphQuery, { + api, + blockCatchupLimit, + }) + )[factoriesName]; + } + + const usdTvl = Number(uniswapFactories[0][tvlName]); + return toUSDTBalances(usdTvl); + }; + }; +} + +module.exports = { + getChainTvl, +}; diff --git a/projects/hydradex/api.js b/projects/hydradex-v2/api.js similarity index 100% rename from projects/hydradex/api.js rename to projects/hydradex-v2/api.js diff --git a/projects/hydradex-v3/index.js b/projects/hydradex-v3/index.js new file mode 100644 index 0000000000..2bcdca26c7 --- /dev/null +++ b/projects/hydradex-v3/index.js @@ -0,0 +1,17 @@ +const { getChainTvl } = require("../helper/getHydraV3SubgraphTvl"); + +const v3graph = getChainTvl( + { + hydra: "https://graph.hydradex.org/subgraphs/name/v3-subgraph", + }, + "factories", + "totalValueLockedUSD" +); + +module.exports = { + timetravel: false, + methodology: `Counts the tokens locked on AMM pools, pulling the data from https://graph.hydradex.org/subgraphs/name/v3-subgraph`, + hydra: { + tvl: v3graph("hydra"), + }, +}; From 4999569f6af1222fc2272147dd80a8e1804a77b9 Mon Sep 17 00:00:00 2001 From: 4TT1L4 <2914096+4TT1L4@users.noreply.github.com> Date: Thu, 27 Apr 2023 13:01:57 +0200 Subject: [PATCH 0112/1354] Updated Genius Yield Adapter - Added the Empowa (EMP) token. --- projects/genius-yield/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/genius-yield/index.js b/projects/genius-yield/index.js index 00800a6828..900c5167e5 100644 --- a/projects/genius-yield/index.js +++ b/projects/genius-yield/index.js @@ -3,13 +3,14 @@ const { sumTokensExport, } = require('../helper/chain/cardano') const gens = 'dda5fdb1002f7389b33e036b6afee82a8189becb6cba852e8b79b4fb0014df1047454e53' const nmkr = '5dac8536653edc12f6f5e1045d8164b9f59998d3bdc300fc928434894e4d4b52' const ntx = 'edfd7a1d77bcb8b884c474bdc92a16002d1fb720e454fa6e993444794e5458' +const emp = '6c8642400e8437f737eb86df0fc8a8437c760f48592b1ba8f5767e81456d706f7761' const owner = 'addr1w8r99sv75y9tqfdzkzyqdqhedgnef47w4x7y0qnyts8pznq87e4wh' module.exports = { timetravel: false, cardano: { - staking: sumTokensExport({ owner, tokens: [gens, nmkr, ntx]}), + staking: sumTokensExport({ owner, tokens: [gens, nmkr, ntx, emp]}), tvl: () => ({}) } }; From e0f18760312dcf8de69776d2aa4da7e52c714e69 Mon Sep 17 00:00:00 2001 From: TechRiderWR Date: Thu, 27 Apr 2023 13:36:35 +0200 Subject: [PATCH 0113/1354] WingRiders: Add staking --- projects/wingriders/index.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/projects/wingriders/index.js b/projects/wingriders/index.js index dcb1267fe2..6474f94049 100644 --- a/projects/wingriders/index.js +++ b/projects/wingriders/index.js @@ -4,22 +4,33 @@ const headers = { "Accept-Encoding": "gzip, deflate, br", }; -async function tvl() { +/** @returns {Promise<{tvl: string, staking: string}>} */ +async function getTvlBreakdown() { const res = await axios.post( 'https://api.mainnet.wingriders.com/graphql', { - query: '{tvl}' + query: '{tvlBreakdown {tvl, staking}}' }, { headers } ) - const tvl = Number(res.data.data.tvl) - return {cardano: tvl} + return res.data.data.tvlBreakdown +} + +async function tvl() { + const tvlBreakdown = await getTvlBreakdown() + return {cardano: Number(tvlBreakdown.tvl)} +} + +async function staking() { + const tvlBreakdown = await getTvlBreakdown() + return {cardano: Number(tvlBreakdown.staking)} } module.exports = { timetravel: false, cardano: { tvl, + staking, }, hallmarks: [ [1659312000,"Nomad Bridge Hack"] From 81d1f6b8795aec2c651a23e3fa98e41fc8912d61 Mon Sep 17 00:00:00 2001 From: saehrimnir Date: Thu, 27 Apr 2023 17:14:58 +0300 Subject: [PATCH 0114/1354] add BSC network integration --- projects/pepe-bridge/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index fa146f4678..134fddbef2 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -11,6 +11,9 @@ const config = { ], '0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83' ] + ], + bsc: [ + [[nullAddress], '0xF1632012f6679Fcf464721433AFAAe9c11ad9e03'] // BNB ] } module.exports = {}; From 174369fc9ed4000517e88de2f07957833d722726 Mon Sep 17 00:00:00 2001 From: Sourabh Date: Thu, 27 Apr 2023 11:51:11 -0400 Subject: [PATCH 0115/1354] Add sfrxETH, frxETH and cUSDC to tokens list (#3) --- package-lock.json | 4 ++-- projects/swivel/index.js | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 15e95feaf6..9e9f64d9f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8590,7 +8590,7 @@ "peer": true, "requires": { "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", + "ansi-regex": "5.0.1", "ansi-styles": "^4.0.0", "react-is": "^17.0.1" } @@ -8885,7 +8885,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "5.0.1" } }, "strip-json-comments": { diff --git a/projects/swivel/index.js b/projects/swivel/index.js index 1783d9bef8..30a3e23955 100644 --- a/projects/swivel/index.js +++ b/projects/swivel/index.js @@ -15,9 +15,12 @@ module.exports = { "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + "0x39AA39c021dfbaE8faC545936693aC917d5E7563", // cUSDC, // "0xEb91861f8A4e1C12333F42DCE8fB0Ecdc28dA716", // eUSDC "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // Lido stETH - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0" // Lido wstETH + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", // Lido wstETH + "0x5E8422345238F34275888049021821E8E08CAa1f", // frxETH + "0xac3E018457B222d93114458476f3E3416Abbe38F" // sfrxETH ] }) } From aab9b2698356b24de663d80ac719a4477dae034c Mon Sep 17 00:00:00 2001 From: define Date: Thu, 27 Apr 2023 17:11:45 +0100 Subject: [PATCH 0116/1354] mt gox and silkroad addresses --- projects/mt-gox/index.js | 89 +++++++++++++++++++++++++++++ projects/silkroad-fbifunds/index.js | 14 +++++ 2 files changed, 103 insertions(+) create mode 100644 projects/mt-gox/index.js create mode 100644 projects/silkroad-fbifunds/index.js diff --git a/projects/mt-gox/index.js b/projects/mt-gox/index.js new file mode 100644 index 0000000000..9034364802 --- /dev/null +++ b/projects/mt-gox/index.js @@ -0,0 +1,89 @@ +const { cexExports } = require('../helper/cex') + +const config = { + bitcoin: { + owners: [ + "17Tf4bVQaCzwWrDWGRPC97RLCHnU4LY8Qr", + "1BzK87zuqidZn489Wb2oLSktrjKrX7TLKe", + "1Drshi4RAuvxk4T6Bkq959ZvLbvy7b1wvD", + "1EiiKCCnFgHjEvPZdu29qqgdBm8zTvpU3U", + "14p4w3TRCd6NMRSnzTmgdvQhNnbrAmzXmy", + "12KkeeRkiNS13GMbg7zos9KRn9ggvZtZgx", + "12T4oSNd4t9ty9fodgNd47TWhK35pAxDYN", + "15kNZcrhxeFZgVVLK2Yjzd69tRidbFdJEZ", + "1LS5EFRRMDgMQusW6zokQUHjzNUfy6HHCQ", + "1FrV9hv1AW34BGJvobJatyzUWYDWB9epRW", + "1HdKXsNQtzDcfB6PGM7DWTgX9vhBWsz1ak", + "1Fu4YgM3Y9CxvioGPqkSzkydAC8MVaPN1D", + "1G23Uzwj55k2A9TRwaTknqGav66oDTkWCu", + "1GkZQcDy8V6pmHFZqUBUBCnN9dc2hoWasD", + "1Hm6XDmhKCHz68wDEYTapN9MEanke8iwUk", + "15SeCwVCFx5cWyrcdD1Zp1D1zxjH2SELPg", + "15U4VsmWG1cdXAtizvQsW4r7iMxzp64Tgu", + "16jZZkMYqjUWUtQ9DfDvHdH5ko5BcnH9XQ", + "16w6sZBDP58yyeyZAcvnxcEGJpwR9amM6g", + "19Cr4zXpKw43xLJhFZW9iv4DDNtQk2TDeB", + "1GyDutntMuYyA2vQGW5HFcKLfx4cbDdbJq", + "17etv2L3nhk6SCcWSNW4eoZkBy84izAm17", + "18ok25NTkdrUzdByFJCNVsqVYkujZ8aP45", + "199Yxz2TJGtND3QKsHTptTJivqSaUZBvku", + "1AZu7TQmKBAes2duNDctYwjAB9nhHczUnA", + "17KcBp8g76Ue8pywgjta4q8Ds6wK4bEKp7", + "1LLc8aA9C9LLULGbYCYSFKXgxKP2DXdCqP", + "1CZsoJfkknbnW5fKrt1oR7N1ALE5WmDGP1", + "1DedUxzgwErg4ipNi988wPgLk5thwciKcc", + "1H4K3dGfNbAN4AUfyUrpkGpjrd83sntDpV", + "13sXfpp2V16nnxYvW9FHHoBdMa3k98uJw8", + "13Wv5hGhubAWgSPWtXYh6s1s7HX2N1psYg", + "14mP6caC5dFhHdVAPCjPKM8Nm36MBDR5pM", + "155FsTtEFq4eGCcBxDseuwLKPbmtWbyHJR", + "156HpsWfgkWYLT63uhTAGUSUF3ZMnB9WWj", + "15QcKCa84ZCHxbsqXDoKhi5XbmQB8jPEAd", + "1EK8vW7UYaYHKiW4TZmYJKtwcZLM14VjvP", + "1Hb8DmmvvtTYv5RBLuGtDxznkZwVpd5Vjy", + "1HuPVqz2xvf1rdNFUqd62vRTyxP3jeX9Ch", + "13xGCc4TPSYY9GYxBGVNox82KxyjkFnxMX", + "13ahgw8sM95EDbugT3tdb8TYoMU46Uw7PX", + "1439q4Na8v88kPBqoyg8F4ueL9SYr8ANWj", + "13dXFMyG22EsUsvaWhCqUo7SXuX7rBPog6", + "14USZ558Rr28AZwdJQyciSQkN4JT1cEoj2", + "1FhRuUkk8Bfx8FJDemtxhKAR4F8GCNKrXG", + "1Mm9brripN4RPTzkGnRrbt5uDWdqbfk2iX", + "1LueUjEuBgc7cQhsWT8zAfTjcWmrNBZXaR", + "1LXi3x7hyt17cxncscGE887WCrC6XDNZ4P", + "19KiFrafXEyJCUDYFEv3B6tBUwyfFo7kNU", + "18YDgRhxsomuBZ1g9d8Y1JuRmxDhF8Bvff", + "18hcZVFPqDNAovJmb9vA6hEJrDz6uWXNGh", + "1BDZBTb4KE5oq6wAgA6EvAe3uCFRrAbPao", + "195HvmjXgoF3M5vFaBC8swZPhwrE7VhxRD", + "18KDS3q6a4YV9Nn8jcyMvNoVPfcrfemeag", + "19c8sUa54yQuRTVDfJa3iDkkCaFkzBJLPB", + "1B6kJM75iu5ty1HAHMMz6tT1HhjoGNTCa9", + "18M1Z337NqLtK9V69bssnQUYsvb7hmfSFS", + "19eihBKk6e5YD2QXAe4SVUsxRLLnTDKsfv", + "1C5aU4Xnpd3txbxehk46UZgiuNB8QdpHCH", + "1BXyJc6BVuTFnHQCcjiWX2xmCPNVfaSZeb", + "1Ar6meJQCkNoC9wnPcyRNNpzX5fBDaGcKd", + "1CRjKZJu8LvTutnSKq4zTJ4yiqrzMAArYW", + "1HweN9p41BY2RBunsPqyVuheEq7gVoxA9u", + "1HX4s3JeFU3x1eQgPNQVAdx6FoCtbb1hr8", + "1HzEPuenagLEWj68igDXBBXrzc293RuR5V", + "1JtgU6Uo1RAt5eiMf34EehyatUezBQP36C", + "1JVmoJT3471FjsX5H4hAeR1RyrDgpkHbpm", + "1JVU43LNKXqa9W5fCh8tppxDDEWgfeNg46", + "1JztCg7eKSkb1vi7NzGJynXpLZmoaFtYud", + "1KFDUSZuapMv7YaDmL6cyrHTQhma1MtFYs", + "1MkyfwJf7uhWTmVGGQXfcT5ip31DoHMxsz", + "1LzwbLgdKd4eFLkpRdeajkH1YJkVCip2zj", + "1MPJJzRaT8vLhowNB4dVyWRxxu79dq7WkB", + "1MvpYtqgBH7CXbTutrSVCTNHPzm9vakuRy", + "1N5X4kcZ56uRh24XrZoztS9Vb8G7j1Joop", + "1Pq7hooZbEAz5y3QMnqFY8C5xqTdrjUwcA", + "1PRXQEoL8vzEzoJJ9hbtAP6NaV2daccAUn", + "1PxGTuJzDx1ceFHx4Z5CHaWuhiPBNovmZD", + "1NA3Tj4b1jtx9eGELe31Jw4DrzTqKP3ayH" //https://www.cryptoground.com/mtgox-cold-wallet-monitor/ + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/silkroad-fbifunds/index.js b/projects/silkroad-fbifunds/index.js new file mode 100644 index 0000000000..3adb8f9224 --- /dev/null +++ b/projects/silkroad-fbifunds/index.js @@ -0,0 +1,14 @@ +const { cexExports } = require('../helper/cex') + +const config = { + bitcoin: { + owners: [ + "bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6", //https://www.reddit.com/r/CryptoCurrency/comments/li1fw7/btc_silkroad_stash_seized_nov_2020_by_the_feds/ + 'bc1qmxjefnuy06v345v6vhwpwt05dztztmx4g3y7wp', + 'bc1qf2yvj48mzkj7uf8lc2a9sa7w983qe256l5c8fs', + 'bc1qe7nk2nlnjewghgw4sgm0r89zkjzsurda7z4rdg' + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file From 2ff5e2d3359e459a1a3deb88a5834a82b4d8762b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Apr 2023 19:05:29 +0200 Subject: [PATCH 0117/1354] add traderjoe v2.1 --- projects/traderjoe-lb-v2-1/index.js | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 projects/traderjoe-lb-v2-1/index.js diff --git a/projects/traderjoe-lb-v2-1/index.js b/projects/traderjoe-lb-v2-1/index.js new file mode 100644 index 0000000000..c9521d2101 --- /dev/null +++ b/projects/traderjoe-lb-v2-1/index.js @@ -0,0 +1,36 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const factories = { + avax: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', + arbitrum: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', + bsc: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', +} +async function tvl(_, _b, _cb, { api, }) { + const pools = await api.fetchList({ + target: factories[api.chain], + itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', + lengthAbi: 'uint256:getNumberOfLBPairs', + }) + const tokenA = await api.multiCall({ + abi: 'address:getTokenX', + calls: pools, + }) + const tokenB = await api.multiCall({ + abi: 'address:getTokenY', + calls: pools, + }) + const toa = [] + tokenA.map((_, i) => { + toa.push([tokenA[i], pools[i]]) + toa.push([tokenB[i], pools[i]]) + }) + return sumTokens2({ api, tokensAndOwners: toa, }) +} + +module.exports = { + methodology: 'We count the token balances in in different liquidity book contracts', +} + +Object.keys(factories).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From b4c62941e9e687ca893e1124fd623775ce56c26f Mon Sep 17 00:00:00 2001 From: drcpu Date: Thu, 27 Apr 2023 21:15:31 +0200 Subject: [PATCH 0118/1354] add steth.win tvl --- projects/steth-win/abi.json | 3 +++ projects/steth-win/index.js | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 projects/steth-win/abi.json create mode 100644 projects/steth-win/index.js diff --git a/projects/steth-win/abi.json b/projects/steth-win/abi.json new file mode 100644 index 0000000000..8ff2b38d43 --- /dev/null +++ b/projects/steth-win/abi.json @@ -0,0 +1,3 @@ +{ + "accountedBalance": "uint256:accountedBalance" +} \ No newline at end of file diff --git a/projects/steth-win/index.js b/projects/steth-win/index.js new file mode 100644 index 0000000000..10f3072763 --- /dev/null +++ b/projects/steth-win/index.js @@ -0,0 +1,25 @@ +const sdk = require('@defillama/sdk'); +const abi = require('./abi.json') + +const POOL_CONTRACT = '0x2758b8d894b08342f0d00ac5f9466fdc795e4618'; +const STETH_CONTRACT = '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'; + +async function tvl(_, _1, _2, { api }) { + const balances = {}; + + const poolBalance = await api.call({ + abi: abi['accountedBalance'], + target: POOL_CONTRACT, + }); + + await sdk.util.sumSingleBalance(balances, STETH_CONTRACT, poolBalance, api.chain) + + return balances; +} + +module.exports = { + methodology: 'Counts the number of stETH tokens in the pool and calculates its TVL', + ethereum: { + tvl, + } +}; From d459e88fa9b5d8d03f14e44378a82adb61c34923 Mon Sep 17 00:00:00 2001 From: Sourabh Date: Thu, 27 Apr 2023 16:24:30 -0400 Subject: [PATCH 0119/1354] Use iPT total supply to measure its TVL (#4) --- projects/illuminate-fi/index.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/projects/illuminate-fi/index.js b/projects/illuminate-fi/index.js index a011f782dc..f94d90cd6e 100644 --- a/projects/illuminate-fi/index.js +++ b/projects/illuminate-fi/index.js @@ -14,21 +14,20 @@ async function tvl(_, _b, _cb, { api, }) { const calls = createMarketLogs.map(i => ({ params: [i.underlying, +i.maturity] })) const pools = await api.multiCall({ abi: 'function pools(address, uint256) view returns (address)', calls, target: market }) - // Get the TVL of the base (using the shares token balance) + // Get the TVL of the base (using the shares token balance) - this counts the amount of base tokens locked in the AMM const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: pools }) const sharesTokens = await api.multiCall({ abi: 'address:sharesToken', calls: pools }) const ownerTokens = pools.map((v, i) => [[baseTokens[i], sharesTokens[i]], v]) await sumTokens2({ api, ownerTokens, }) - // Get the TVL of the PTs in the pool + // Get the TVL of the PTs - this counts the value of the iPTs lent out const principalTokens = await api.multiCall({ abi: 'address:fyToken', calls: pools }) const principalTokenDecimals = await api.multiCall({ abi: 'uint256:decimals', calls: pools }) const oneCalls = principalTokenDecimals.map((v, i) => ({ params: 10 ** v, target: pools[i] })) - const balanceOfCalls = pools.map((v, i) => ({ params: v, target: principalTokens[i] })) const principalTokenPrices = await api.multiCall({ abi: 'function sellFYTokenPreview(uint128) view returns (uint128)', calls: oneCalls }) - const principalTokenBalances = await api.multiCall({ abi: 'erc20:balanceOf', calls: balanceOfCalls }) + const principalTokenSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: principalTokens }) - principalTokenBalances.forEach((balance, i) => api.add(baseTokens[i], balance * +principalTokenPrices[i] / 10 ** principalTokenDecimals[i])) + principalTokenSupplies.forEach((supply, i) => api.add(baseTokens[i], supply * +principalTokenPrices[i] / 10 ** principalTokenDecimals[i])) } module.exports = { From 87bc82d21bc5586086dd6ee291433385bfd77beb Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 27 Apr 2023 21:52:24 +0100 Subject: [PATCH 0120/1354] change solana rpc --- projects/helper/solana.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/solana.js b/projects/helper/solana.js index ee2edf1866..90614de900 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -18,7 +18,7 @@ const blacklistedTokens = [ let connection, provider -const endpoint = env.SOLANA_RPC || "https://api.mainnet-beta.solana.com/" +const endpoint = env.SOLANA_RPC || "https://try-rpc.mainnet.solana.blockdaemon.tech" function getConnection() { if (!connection) connection = new Connection(endpoint) From 4587d3a01c395c4ba2f0ca270d5e809775465f8a Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 27 Apr 2023 22:46:31 +0100 Subject: [PATCH 0121/1354] add chronos --- projects/chronos/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/chronos/index.js diff --git a/projects/chronos/index.js b/projects/chronos/index.js new file mode 100644 index 0000000000..3a39e3fd36 --- /dev/null +++ b/projects/chronos/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require('../helper/unknownTokens') + + +module.exports = { + misrepresentedTokens: true, + methodology: `Uses factory(0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722) address to count liquidity in pools as TVL.`, + arbitrum: { + tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true }), + } +}; From 59fa5e0667cb0dbb5506a5919aae917fdc00c8f1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Apr 2023 01:09:54 +0200 Subject: [PATCH 0122/1354] minor refactor --- projects/steth-win/abi.json | 3 --- projects/steth-win/index.js | 18 ++---------------- 2 files changed, 2 insertions(+), 19 deletions(-) delete mode 100644 projects/steth-win/abi.json diff --git a/projects/steth-win/abi.json b/projects/steth-win/abi.json deleted file mode 100644 index 8ff2b38d43..0000000000 --- a/projects/steth-win/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "accountedBalance": "uint256:accountedBalance" -} \ No newline at end of file diff --git a/projects/steth-win/index.js b/projects/steth-win/index.js index 10f3072763..08bc9848f8 100644 --- a/projects/steth-win/index.js +++ b/projects/steth-win/index.js @@ -1,25 +1,11 @@ -const sdk = require('@defillama/sdk'); -const abi = require('./abi.json') +const { sumTokensExport } = require('../helper/unwrapLPs'); const POOL_CONTRACT = '0x2758b8d894b08342f0d00ac5f9466fdc795e4618'; const STETH_CONTRACT = '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'; -async function tvl(_, _1, _2, { api }) { - const balances = {}; - - const poolBalance = await api.call({ - abi: abi['accountedBalance'], - target: POOL_CONTRACT, - }); - - await sdk.util.sumSingleBalance(balances, STETH_CONTRACT, poolBalance, api.chain) - - return balances; -} - module.exports = { methodology: 'Counts the number of stETH tokens in the pool and calculates its TVL', ethereum: { - tvl, + tvl: sumTokensExport({ owner: POOL_CONTRACT, tokens: [STETH_CONTRACT] }), } }; From c25e995ac27c8fd6ac0683c293025173eead20d3 Mon Sep 17 00:00:00 2001 From: kevin <126134017+sixkevin878@users.noreply.github.com> Date: Fri, 28 Apr 2023 12:24:27 +0800 Subject: [PATCH 0123/1354] fix: upData FACTORY_CONTRACT --- projects/avatr/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/avatr/index.js b/projects/avatr/index.js index 8f71001c51..27547dd378 100644 --- a/projects/avatr/index.js +++ b/projects/avatr/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const { getLogs } = require("../helper/cache/getLogs"); const { staking } = require("../helper/staking"); -const FACTORY_CONTRACT = "0x9CAc6c4fDb0fCbbB1cA3064f7f6C3FAD22B0B92D"; +const FACTORY_CONTRACT = "0x498B8f1E767E2A32ab68C1301F1e98b59a34dA94"; const WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; async function tvl(timestamp, block, chainBlocks, { api }) { From 2460d86841139b1cbb4fd6355cbabe26cc7efe7d Mon Sep 17 00:00:00 2001 From: zeus Date: Fri, 28 Apr 2023 14:02:29 +0900 Subject: [PATCH 0124/1354] add onsenswap tvl --- projects/onsenswap/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/onsenswap/index.js diff --git a/projects/onsenswap/index.js b/projects/onsenswap/index.js new file mode 100644 index 0000000000..c2e81bbf3f --- /dev/null +++ b/projects/onsenswap/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + start: 1669075200, + era: { + tvl: getUniTVL({ + factory: "0x0E15a1a03bD356B17F576c50d23BF7FC00305590", + useDefaultCoreAssets: true, + }), + }, +}; From 1c7580daa4966cf46b6f7937e263aeb7ce9d67c4 Mon Sep 17 00:00:00 2001 From: zeus Date: Fri, 28 Apr 2023 14:06:36 +0900 Subject: [PATCH 0125/1354] update starttime --- projects/onsenswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/onsenswap/index.js b/projects/onsenswap/index.js index c2e81bbf3f..2e76f4eeae 100644 --- a/projects/onsenswap/index.js +++ b/projects/onsenswap/index.js @@ -2,7 +2,7 @@ const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { misrepresentedTokens: true, - start: 1669075200, + start: 1682168400, era: { tvl: getUniTVL({ factory: "0x0E15a1a03bD356B17F576c50d23BF7FC00305590", From d7cfe4fe189dfe43b9c01f2f78a5a47a9a5d4997 Mon Sep 17 00:00:00 2001 From: ytrobert <91405156+ytrobert@users.noreply.github.com> Date: Fri, 28 Apr 2023 15:50:04 +0800 Subject: [PATCH 0126/1354] add Aboard Exchange tvl --- projects/aboard-exchange/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/aboard-exchange/index.js diff --git a/projects/aboard-exchange/index.js b/projects/aboard-exchange/index.js new file mode 100644 index 0000000000..95b84bafe0 --- /dev/null +++ b/projects/aboard-exchange/index.js @@ -0,0 +1,30 @@ +//20230428 initial release: simple and clear +const { sumTokensExport } = require('../helper/unwrapLPs'); + +const ownerArbitrum = '0x7a08b29A7Ad4A19A5ECa0c82F5F082872488D135'; // contract address +const tokensArbitrum = [ + '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC + '0x0000000000000000000000000000000000000000', // ETH + '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', // USDT + '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', // WBTC +]; + +const ownerAvalanche = '0xd8b0D18faE7eA29F2AD95d01FFb479E0021a9A5e'; // contract address +const tokensAvalanche = [ + '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', // USDC + '0x0000000000000000000000000000000000000000', // AVAX + '0x152b9d0FdC40C096757F570A51E494bd4b943E50', // BTC.b + '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', // WETH.e + '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', // USDt +]; + +module.exports = { + methodology: "TVL is equal to users' deposits minus withdrawals", + start: 1641625200, // Jan-08-2022 07:00:00 AM +UTC + arbitrum: { + tvl: sumTokensExport({ owner:ownerArbitrum, tokens:tokensArbitrum }) + }, + avax: { + tvl: sumTokensExport({ owner:ownerAvalanche, tokens:tokensAvalanche }) + }, +}; From 122819319cc15c4ad99846b98ec0148e9d16fefb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Apr 2023 10:59:26 +0200 Subject: [PATCH 0127/1354] hydradex: refactor code --- projects/helper/getHydraV3SubgraphTvl.js | 71 ---------------------- projects/hydradex-v3/index.js | 32 ++++++---- projects/hydradex.js | 30 +++++---- projects/{hydradex-v2 => hydradex}/api.js | 0 projects/hydradex/getHydraV3SubgraphTvl.js | 23 +++++++ 5 files changed, 62 insertions(+), 94 deletions(-) delete mode 100644 projects/helper/getHydraV3SubgraphTvl.js rename projects/{hydradex-v2 => hydradex}/api.js (100%) create mode 100644 projects/hydradex/getHydraV3SubgraphTvl.js diff --git a/projects/helper/getHydraV3SubgraphTvl.js b/projects/helper/getHydraV3SubgraphTvl.js deleted file mode 100644 index 2a0ba290dd..0000000000 --- a/projects/helper/getHydraV3SubgraphTvl.js +++ /dev/null @@ -1,71 +0,0 @@ -const { request, gql } = require("graphql-request"); -const { toUSDTBalances } = require("../helper/balances"); -const { blockQuery } = require("./http"); - -function getChainTvl( - graphUrls, - factoriesName = "factories", - tvlName = "totalValueLockedUSD", - blockCatchupLimit = 500 -) { - const graphQuery = gql` - query get_tvl($block: Int!) { - ${factoriesName}( - block: { number: $block } - ) { - ${tvlName} - } - } - `; - - const blockGraphQuery = gql` - query get_block { - blocks(orderBy: "number", first: 1, orderDirection: "desc") { - number - } - } - `; - - return (chain) => { - return async (_, _b, _cb, { api }) => { - api.getBlock = async function () { - try { - const blocks = ( - await request( - "https://graph.hydradex.org/subgraphs/name/blocklytics/ethereum-blocks", - blockGraphQuery - ) - ).blocks; - - this.block = Number(blocks[0].number) || undefined; - } catch { - this.block = undefined; - } - }; - await api.getBlock(); - const block = api.block; - - let uniswapFactories; - - if (!blockCatchupLimit) { - uniswapFactories = ( - await request(graphUrls[chain], graphQuery, { block }) - )[factoriesName]; - } else { - uniswapFactories = ( - await blockQuery(graphUrls[chain], graphQuery, { - api, - blockCatchupLimit, - }) - )[factoriesName]; - } - - const usdTvl = Number(uniswapFactories[0][tvlName]); - return toUSDTBalances(usdTvl); - }; - }; -} - -module.exports = { - getChainTvl, -}; diff --git a/projects/hydradex-v3/index.js b/projects/hydradex-v3/index.js index 2bcdca26c7..164e7814a4 100644 --- a/projects/hydradex-v3/index.js +++ b/projects/hydradex-v3/index.js @@ -1,17 +1,27 @@ -const { getChainTvl } = require("../helper/getHydraV3SubgraphTvl"); +const { blockQuery } = require('../helper/http') +const { getBlock } = require('../hydradex/getHydraV3SubgraphTvl') -const v3graph = getChainTvl( - { - hydra: "https://graph.hydradex.org/subgraphs/name/v3-subgraph", - }, - "factories", - "totalValueLockedUSD" -); +async function tvl(timestamp) { + const endpoint = 'https://graph.hydradex.org/subgraphs/name/v3-subgraph' + const block = +(await getBlock('https://graph.hydradex.org/subgraphs/name/blocklytics/ethereum-blocks', timestamp)) + const query = `query ($block: Int){ + factories (block: { number: $block }) { + totalValueLockedUSD + } + }` + const { factories: [{ totalValueLockedUSD }] } = await blockQuery(endpoint, query, { + api: { + getBlock: () => block, + block + } + }) + return { tether: totalValueLockedUSD } +} module.exports = { - timetravel: false, - methodology: `Counts the tokens locked on AMM pools, pulling the data from https://graph.hydradex.org/subgraphs/name/v3-subgraph`, + misrepresentedTokens: true, + methodology: "We count liquidity on the dex, pulling data from subgraph", hydra: { - tvl: v3graph("hydra"), + tvl, }, }; diff --git a/projects/hydradex.js b/projects/hydradex.js index 11a0880538..4e1a289325 100644 --- a/projects/hydradex.js +++ b/projects/hydradex.js @@ -1,21 +1,27 @@ -const cloudscraper = require('cloudscraper') +const { blockQuery } = require('./helper/http') +const { getBlock } = require('./hydradex/getHydraV3SubgraphTvl') -async function fetch() { - const uri = 'https://info.hydradex.org/graphql' - const body = { "operationName": "Query", "variables": {}, "query": "query Query {\n hydraswapFactories(where: {id: \"5a2a927bea6c5f4a48d4e0116049c1e36d52a528\"}) {\n totalLiquidityUSD\n }\n}\n" } - const reserves = ( - await cloudscraper.post(uri, { - json: body - }) - ) - return { tether: +reserves.data.hydraswapFactories[0].totalLiquidityUSD } +async function tvl(timestamp) { + const endpoint = 'https://info.hydradex.org/graphql' + const block = await getBlock(endpoint, timestamp) + const query = `query ($block: Float!){ + hydraswapFactories (block: { number: $block }) { + totalLiquidityUSD + } + }` + const { hydraswapFactories: [{ totalLiquidityUSD }] } = await blockQuery(endpoint, query, { + api: { + getBlock: () => block, + block + } + }) + return { tether: totalLiquidityUSD } } module.exports = { misrepresentedTokens: true, - timetravel: false, methodology: "We count liquidity on the dex, pulling data from subgraph", hydra: { - tvl: fetch, + tvl, }, }; \ No newline at end of file diff --git a/projects/hydradex-v2/api.js b/projects/hydradex/api.js similarity index 100% rename from projects/hydradex-v2/api.js rename to projects/hydradex/api.js diff --git a/projects/hydradex/getHydraV3SubgraphTvl.js b/projects/hydradex/getHydraV3SubgraphTvl.js new file mode 100644 index 0000000000..90b75db167 --- /dev/null +++ b/projects/hydradex/getHydraV3SubgraphTvl.js @@ -0,0 +1,23 @@ +const { graphQuery, } = require("../helper/http"); + +const HOURS_12 = 12 * 3600 + +async function getBlock(endpoint, timestamp) { + const params = { + timestamp_from: timestamp - HOURS_12, + timestamp_to: timestamp + HOURS_12, + } + const query = `query ($timestamp_to: Int, $timestamp_from: Int){ + blocks (orderBy: "timestamp" first:1 orderDirection: "desc" where: { timestamp_lte: $timestamp_to timestamp_gte: $timestamp_from}) { + timestamp + number + } + }` + const { blocks } = await graphQuery(endpoint, query, params) + return blocks[0].number +} + +module.exports = { + getChainTvl, + getBlock, +}; From 8d3b1377ac5d452804345e73d0041d1a577586fd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Apr 2023 11:40:56 +0200 Subject: [PATCH 0128/1354] fix bug --- projects/hydradex/api.js | 8 +------- projects/hydradex/getHydraV3SubgraphTvl.js | 1 - 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/projects/hydradex/api.js b/projects/hydradex/api.js index 9b31da47f1..a36cb65a85 100644 --- a/projects/hydradex/api.js +++ b/projects/hydradex/api.js @@ -1,7 +1 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("hydradex", ['hydra']), -} +module.exports = require('../hydradex') \ No newline at end of file diff --git a/projects/hydradex/getHydraV3SubgraphTvl.js b/projects/hydradex/getHydraV3SubgraphTvl.js index 90b75db167..e0fd25b396 100644 --- a/projects/hydradex/getHydraV3SubgraphTvl.js +++ b/projects/hydradex/getHydraV3SubgraphTvl.js @@ -18,6 +18,5 @@ async function getBlock(endpoint, timestamp) { } module.exports = { - getChainTvl, getBlock, }; From fa422d1253325e80a04835ab5770cced2e335aaf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Apr 2023 11:42:37 +0200 Subject: [PATCH 0129/1354] zkdefi: minor fix --- projects/zkdefi/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/zkdefi/index.js b/projects/zkdefi/index.js index eaae02a1dc..e560c45f13 100644 --- a/projects/zkdefi/index.js +++ b/projects/zkdefi/index.js @@ -4,7 +4,7 @@ module.exports = { misrepresentedTokens: true, polygon_zkevm: { tvl: getUniTVL({ - chain: "polygon_zkevm", + fetchBalances: true, useDefaultCoreAssets: true, factory: "0xfDC8ec444F482Fe8aFe0a00114548DC9ff729568", }), From e938bb1250d44ab70256eeeec4cbcbaa909d8a84 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Apr 2023 13:38:06 +0200 Subject: [PATCH 0130/1354] 0vix was hacked --- projects/0vix/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/0vix/index.js b/projects/0vix/index.js index 0c735c47ce..47597b9089 100644 --- a/projects/0vix/index.js +++ b/projects/0vix/index.js @@ -6,6 +6,11 @@ const matic = "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"; const chain = "polygon"; module.exports = { + hallmarks: [ + [Math.floor(new Date('2023-04-28')/1e3), 'Protocol was hacked!'], + ], polygon: compoundExports(master0vix, chain, oMATIC, matic), polygon_zkevm: compoundExports("0x6EA32f626e3A5c41547235ebBdf861526e11f482", "polygon_zkevm", "0xee1727f5074e747716637e1776b7f7c7133f16b1", "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9"), -}; \ No newline at end of file +}; + +delete module.exports.polygon.borrowed \ No newline at end of file From 23cbafc3b1e47a5517e797f366a2d484d81f5291 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Apr 2023 15:15:22 +0200 Subject: [PATCH 0131/1354] ohm forks: create treasury adapters --- projects/fantOHM/api.js | 4 ++++ projects/fantOHM/index.js | 16 +++++++------- projects/floor-dao/api.js | 4 ++++ projects/floor-dao/index.js | 4 +++- projects/gyro.js | 3 ++- projects/hector/api.js | 4 ++++ projects/helper/treasury.js | 31 +++++++++++++++++++++++++- projects/klima-dao/index.js | 2 +- projects/maia-dao/api.js | 8 +++++++ projects/spartacus/index.js | 18 +-------------- projects/stargate-finance/api.js | 4 ++++ projects/treasury/fantohm-dao.js | 32 ++++++++++++++++----------- projects/treasury/floor-dao.js | 19 +++++----------- projects/treasury/gyro.js | 3 +++ projects/treasury/hector.js | 4 ++++ projects/treasury/maia-dao.js | 4 ++++ projects/treasury/stargate-finance.js | 10 +++++++++ projects/treasury/xeus.js | 4 ++++ projects/wonderland/api.js | 4 ++++ projects/xeus/api.js | 4 ++++ utils/testInteractive.js | 13 +++++++++-- 21 files changed, 137 insertions(+), 58 deletions(-) create mode 100644 projects/fantOHM/api.js create mode 100644 projects/floor-dao/api.js create mode 100644 projects/hector/api.js create mode 100644 projects/maia-dao/api.js create mode 100644 projects/stargate-finance/api.js create mode 100644 projects/treasury/hector.js create mode 100644 projects/treasury/maia-dao.js create mode 100644 projects/treasury/stargate-finance.js create mode 100644 projects/treasury/xeus.js create mode 100644 projects/wonderland/api.js create mode 100644 projects/xeus/api.js diff --git a/projects/fantOHM/api.js b/projects/fantOHM/api.js new file mode 100644 index 0000000000..606277d156 --- /dev/null +++ b/projects/fantOHM/api.js @@ -0,0 +1,4 @@ +const index = require('./index') +const { ohmStaking } = require('../helper/treasury') + +module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/fantOHM/index.js b/projects/fantOHM/index.js index fc8eb1c987..519d5d4e67 100644 --- a/projects/fantOHM/index.js +++ b/projects/fantOHM/index.js @@ -72,7 +72,7 @@ async function fantomTvl(timestamp, _, {fantom: block}) { await sumTokensAndLPsSharedOwners(balances, [ ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], // DAI ["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", false], // wFTM - ["0x6fc9383486c163fa48becdec79d6058f984f62ca", false], // USDB + // ["0x6fc9383486c163fa48becdec79d6058f984f62ca", false], // USDB ["0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", false], // USDC ["0xd77fc9c4074b56ecf80009744391942fbfddd88b", true], // DAI/FHM ], [fantomTreasuryContract], block, "fantom", @@ -85,7 +85,7 @@ async function fantomTvl(timestamp, _, {fantom: block}) { // investments await Promise.all([ - balanceOf(fantomGnosisContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB + // balanceOf(fantomGnosisContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB balanceOf(fantomGnosisContract, "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", "0x6b175474e89094c44da98b954eedeac495271d0f", balances, block), // DAI beetsFtm_BeetsLp(fantohmDaoDeployerWallet, balances, block), // beets/wftm LP lqdrFtm_BeetsLp(fantohmDaoDeployerWallet, balances, block), // lqdr/wftm LP @@ -93,8 +93,8 @@ async function fantomTvl(timestamp, _, {fantom: block}) { // usdbalance.com await Promise.all([ - balanceOf(ftmTradfi3mContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB - balanceOf(ftmTradfi6mContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB + // balanceOf(ftmTradfi3mContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB + // balanceOf(ftmTradfi6mContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB balanceOfStablePool(masterChefContract, "0xD5E946b5619fFf054c40D38c976f1d06C1e2fA82", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", balances, block), // USDB-DAI stable pool ]); @@ -119,13 +119,13 @@ async function ethTvl(timestamp, block, chainBlocks) { // usdbalance.com await Promise.all([ - balanceOf(ethGnosisContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB + // balanceOf(ethGnosisContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB balanceOf(ethGnosisContract, "0x6b175474e89094c44da98b954eedeac495271d0f", "ethereum:0x6b175474e89094c44da98b954eedeac495271d0f", balances, block, "ethereum"), // DAI - balanceOf(ethTreasuryContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB + // balanceOf(ethTreasuryContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB - balanceOf(ethTradfi3mContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB - balanceOf(ethTradfi6mContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB + // balanceOf(ethTradfi3mContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB + // balanceOf(ethTradfi6mContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB ]); return balances; diff --git a/projects/floor-dao/api.js b/projects/floor-dao/api.js new file mode 100644 index 0000000000..606277d156 --- /dev/null +++ b/projects/floor-dao/api.js @@ -0,0 +1,4 @@ +const index = require('./index') +const { ohmStaking } = require('../helper/treasury') + +module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/floor-dao/index.js b/projects/floor-dao/index.js index c1dd65a8cd..130e2840f1 100644 --- a/projects/floor-dao/index.js +++ b/projects/floor-dao/index.js @@ -3,9 +3,11 @@ const sdk = require("@defillama/sdk"); // https://docs.floor.xyz/fundamentals/treasury const WETH = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' const NFTX_LP_STAKING = '0x688c3e4658b5367da06fd629e41879beab538e37' const treasury = '0x91E453f442d25523F42063E1695390e325076ca2' +const floorTreasury2 = "0xa9d93a5cca9c98512c8c56547866b1db09090326"; const stakingAddress = '0x759c6de5bca9ade8a1a2719a31553c4b7de02539' const FLOOR = '0xf59257E961883636290411c11ec5Ae622d19455e' @@ -29,7 +31,7 @@ module.exports = { }) const balances = {} stakingBalances.forEach((bal,i) => sdk.util.sumSingleBalance(balances,stakingInfo[i][0],bal)) - return sumTokens2({ balances, block, owner: treasury, tokens: [WETH], resolveLP: true, }) + return sumTokens2({ balances, block, owners: [treasury, floorTreasury2], tokens: [WETH, USDC], resolveLP: true, }) }, staking: sumTokensExport({owner: stakingAddress, tokens: [FLOOR]}) } diff --git a/projects/gyro.js b/projects/gyro.js index 6264b6a20d..7bf07108c5 100644 --- a/projects/gyro.js +++ b/projects/gyro.js @@ -5,4 +5,5 @@ module.exports=ohmTvl("0x8B1522402FECe066d83E0F6C97024248Be3C8c01", [ ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], ["0x5ca063a7e2bebefeb2bdea42158f5b825f0f9ffb", true], ["0xa5399084a5f06d308c4527517bbb781c4dce887c", true] -], "bsc", "0xe9c178cfdfeb917a46429714e5d51f6d4f296b75", "0x1b239abe619e74232c827fbe5e49a4c072bd869d") \ No newline at end of file +], "bsc", "0xe9c178cfdfeb917a46429714e5d51f6d4f296b75", "0x1b239abe619e74232c827fbe5e49a4c072bd869d") +module.exports.bsc.tvl = () => 0 \ No newline at end of file diff --git a/projects/hector/api.js b/projects/hector/api.js new file mode 100644 index 0000000000..606277d156 --- /dev/null +++ b/projects/hector/api.js @@ -0,0 +1,4 @@ +const index = require('./index') +const { ohmStaking } = require('../helper/treasury') + +module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/helper/treasury.js b/projects/helper/treasury.js index 509f75ed0b..3b91a85903 100644 --- a/projects/helper/treasury.js +++ b/projects/helper/treasury.js @@ -51,8 +51,37 @@ async function getComplexTreasury(owners){ return sum } +function ohmStaking(exports) { + const dummyTvl = () => ({}) + const newExports = {} + Object.entries(exports).forEach(([chain, value]) => { + if (typeof value === 'object' && typeof value.tvl === 'function') { + newExports[chain] = { ...value, tvl: dummyTvl} + } else { + newExports[chain] = value + } + }) + return newExports +} + +function ohmTreasury(exports) { + const dummyTvl = () => ({}) + const newExports = {} + Object.entries(exports).forEach(([chain, value]) => { + if (typeof value === 'object' && typeof value.staking === 'function') { + newExports[chain] = { ...value,} + delete newExports[chain].staking + } else { + newExports[chain] = value + } + }) + return newExports +} + module.exports = { nullAddress, treasuryExports, - getComplexTreasury + getComplexTreasury, + ohmTreasury, + ohmStaking, } diff --git a/projects/klima-dao/index.js b/projects/klima-dao/index.js index bb619f4713..c836e59210 100644 --- a/projects/klima-dao/index.js +++ b/projects/klima-dao/index.js @@ -25,7 +25,7 @@ async function tvl(time, ethBlock, chainBlocks) { module.exports = { polygon: { - tvl, + tvl: () => 0, staking: staking("0x25d28a24Ceb6F81015bB0b2007D795ACAc411b4d", "0x4e78011ce80ee02d2c3e649fb657e45898257815", "polygon") } } \ No newline at end of file diff --git a/projects/maia-dao/api.js b/projects/maia-dao/api.js new file mode 100644 index 0000000000..55e19de8f5 --- /dev/null +++ b/projects/maia-dao/api.js @@ -0,0 +1,8 @@ +const { staking } = require('../helper/staking') + +module.exports = { + metis: { + tvl: () => 0, + staking: staking('0xD7a586CE5250bEfaB2cc2239F7226B9602536E6A', '0x72c232D56542Ba082592DEE7C77b1C6CFA758BCD') + } +} \ No newline at end of file diff --git a/projects/spartacus/index.js b/projects/spartacus/index.js index 617a89235c..0495b35761 100644 --- a/projects/spartacus/index.js +++ b/projects/spartacus/index.js @@ -1,24 +1,8 @@ const { staking } = require('../helper/staking') -const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') -const { transformFantomAddress } = require('../helper/portedTokens') - - -const treasury = "0x8CFA87aD11e69E071c40D58d2d1a01F862aE01a8" - -async function tvl(time, ethBlock, chainBlocks) { - const balances = {} - const transform = await transformFantomAddress() - await sumTokensAndLPsSharedOwners(balances, [ - ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], - ["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", false], // FTM asset - ["0xfa5a5f0bc990be1d095c5385fff6516f6e03c0a7", true] - ], [treasury], chainBlocks.fantom, "fantom", transform) - return balances -} module.exports = { fantom: { - tvl, + tvl: () => 0, staking: staking("0x9863056B4Bdb32160A70107a6797dD06B56E8137", "0x5602df4A94eB6C680190ACCFA2A475621E0ddBdc", "fantom") } } \ No newline at end of file diff --git a/projects/stargate-finance/api.js b/projects/stargate-finance/api.js new file mode 100644 index 0000000000..606277d156 --- /dev/null +++ b/projects/stargate-finance/api.js @@ -0,0 +1,4 @@ +const index = require('./index') +const { ohmStaking } = require('../helper/treasury') + +module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/treasury/fantohm-dao.js b/projects/treasury/fantohm-dao.js index 5d7bf63baf..9aa52d7fdf 100644 --- a/projects/treasury/fantohm-dao.js +++ b/projects/treasury/fantohm-dao.js @@ -1,16 +1,22 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); +const index = require('../fantOHM/index') +const { ohmTreasury } = require('../helper/treasury') +const { sumTokensExport } = require('../helper/unwrapLPs') -const treasury = "0xA3b52d5A6d2f8932a5cD921e09DA840092349D71"; +const fantomTreasuryContract = "0xA3b52d5A6d2f8932a5cD921e09DA840092349D71"; +const fantomGnosisContract = "0x34F93b12cA2e13C6E64f45cFA36EABADD0bA30fC"; +const ethTreasuryContract = "0x9042E869BedCD2BB3EEa241aC0032cadAE8DF006"; -module.exports = treasuryExports({ - fantom: { - tokens: [ - nullAddress, - "0x6Fc9383486c163fA48becdEC79d6058f984f62cA",//USDB - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75",//USDC - "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E",//DAI - "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83",//WFTM - ], - owners: [treasury,], - }, +const ethTradfi3mContract = "0xCD8A46dC7EE4488b441Ae1CD3b5BCa48d5389C12"; +const ethTradfi6mContract = "0xD9fDd86ecc03e34DAf9c645C40DF670406836816" +const ftmTradfi3mContract = "0xEFbe7fe9E8b407a3F0C0451E7669E70cDD0C4C77"; +const ftmTradfi6mContract = "0xB1c77436BC180009709Be00C9e852246476321A3"; +module.exports = ohmTreasury(index) + +module.exports.fantom.ownTokens = sumTokensExport({ + owners: [fantomTreasuryContract, fantomGnosisContract, ftmTradfi3mContract, ftmTradfi6mContract, ], + tokens: ['0x6fc9383486c163fa48becdec79d6058f984f62ca', '0xfa1FBb8Ef55A4855E5688C0eE13aC3f202486286'] +}) +module.exports.ethereum.ownTokens = sumTokensExport({ + owners: [ethTreasuryContract, ethTradfi3mContract, ethTradfi6mContract, ], + tokens: ['0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B',] }) \ No newline at end of file diff --git a/projects/treasury/floor-dao.js b/projects/treasury/floor-dao.js index bc82b6f58c..b7ec6e3089 100644 --- a/projects/treasury/floor-dao.js +++ b/projects/treasury/floor-dao.js @@ -1,19 +1,10 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - const floorTreasury1 = "0x91E453f442d25523F42063E1695390e325076ca2"; const floorTreasury2 = "0xa9d93a5cca9c98512c8c56547866b1db09090326"; const FLOOR = "0xf59257e961883636290411c11ec5ae622d19455e"; +const index = require('../floor-dao/index') +const { ohmTreasury } = require('../helper/treasury') +const { staking } = require('../helper/staking') - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - ], - owners: [floorTreasury1, floorTreasury2], - ownTokens: [FLOOR], - }, -}) +module.exports = ohmTreasury(index) +module.exports.ethereum.ownTokens = staking([floorTreasury1, floorTreasury2], FLOOR) \ No newline at end of file diff --git a/projects/treasury/gyro.js b/projects/treasury/gyro.js index 9db3c32feb..db91632a24 100644 --- a/projects/treasury/gyro.js +++ b/projects/treasury/gyro.js @@ -11,8 +11,11 @@ module.exports = treasuryExports({ nullAddress, '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',//BUSD '0x55d398326f99059fF775485246999027B3197955',//BSC-USD + '0x5ca063a7e2bebefeb2bdea42158f5b825f0f9ffb', + '0xa5399084a5f06d308c4527517bbb781c4dce887c', ], owners: [Treasury], ownTokens: [GYRO], + resolveLP: true, }, }) \ No newline at end of file diff --git a/projects/treasury/hector.js b/projects/treasury/hector.js new file mode 100644 index 0000000000..4ae2a1187d --- /dev/null +++ b/projects/treasury/hector.js @@ -0,0 +1,4 @@ +const index = require('../hector/index') +const { ohmTreasury } = require('../helper/treasury') + +module.exports = ohmTreasury(index) \ No newline at end of file diff --git a/projects/treasury/maia-dao.js b/projects/treasury/maia-dao.js new file mode 100644 index 0000000000..2bfb210a81 --- /dev/null +++ b/projects/treasury/maia-dao.js @@ -0,0 +1,4 @@ +const index = require('../maia-dao/index') +const { ohmTreasury } = require('../helper/treasury') + +module.exports = ohmTreasury(index) \ No newline at end of file diff --git a/projects/treasury/stargate-finance.js b/projects/treasury/stargate-finance.js new file mode 100644 index 0000000000..413c1bdf15 --- /dev/null +++ b/projects/treasury/stargate-finance.js @@ -0,0 +1,10 @@ +const index = require('../stargate-finance/index') +const { treasuryExports } = require('../helper/treasury') + +module.exports = treasuryExports({ + bsc: { + owner: '0xA2B48Ad28c09cc64CcCf9eD73e1EfceD052877d5', + tokens: ['0x55d398326f99059ff775485246999027b3197955', '0xe9e7cea3dedca5984780bafc599bd69add087d56', '0xd397a40884ce00e662b419673e0b15cae628877f', '0x41516dca7efe69518ec414de35e5aa067788de3d',], + resolveLP: true, + } +}) \ No newline at end of file diff --git a/projects/treasury/xeus.js b/projects/treasury/xeus.js new file mode 100644 index 0000000000..c627ecbf56 --- /dev/null +++ b/projects/treasury/xeus.js @@ -0,0 +1,4 @@ +const index = require('../xeus/index') +const { ohmTreasury } = require('../helper/treasury') + +module.exports = ohmTreasury(index) \ No newline at end of file diff --git a/projects/wonderland/api.js b/projects/wonderland/api.js new file mode 100644 index 0000000000..606277d156 --- /dev/null +++ b/projects/wonderland/api.js @@ -0,0 +1,4 @@ +const index = require('./index') +const { ohmStaking } = require('../helper/treasury') + +module.exports = ohmStaking(index) \ No newline at end of file diff --git a/projects/xeus/api.js b/projects/xeus/api.js new file mode 100644 index 0000000000..606277d156 --- /dev/null +++ b/projects/xeus/api.js @@ -0,0 +1,4 @@ +const index = require('./index') +const { ohmStaking } = require('../helper/treasury') + +module.exports = ohmStaking(index) \ No newline at end of file diff --git a/utils/testInteractive.js b/utils/testInteractive.js index 595a9131b5..98159d1512 100644 --- a/utils/testInteractive.js +++ b/utils/testInteractive.js @@ -1,6 +1,15 @@ const inquirer = require('inquirer') const childProcess = require('child_process') inquirer.registerPrompt('fuzzypath', require('inquirer-fuzzy-path')) +console.log('Starting directory: ' + process.cwd()); +try { + process.chdir('./projects/treasury'); + console.log('New directory: ' + process.cwd()); +} +catch (err) { + console.log('chdir: ' + err); +} + const adapterPrompt = { type: 'fuzzypath', @@ -8,7 +17,7 @@ const adapterPrompt = { excludePath: nodePath => nodePath.startsWith('helper'), excludeFilter: nodePath => nodePath == '.', itemType: 'any', - rootPath: 'projects', + rootPath: '.', message: 'Select an adapter to run:', suggestOnly: false, depthLimit: 0, @@ -48,7 +57,7 @@ async function runAdapter(adapterPath, debugMode) { const startTime = Date.now() - const child = childProcess.fork('test.js', [adapterPath], { + const child = childProcess.fork('../../test.js', [adapterPath], { env, }) From 42137a1d395f42d46c9f6fc32554b144ac12e2af Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Apr 2023 15:16:54 +0200 Subject: [PATCH 0132/1354] zkbob: add optimism --- projects/zkbob/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/zkbob/index.js b/projects/zkbob/index.js index bd15428193..cca35262c4 100644 --- a/projects/zkbob/index.js +++ b/projects/zkbob/index.js @@ -3,11 +3,18 @@ const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { polygon: { tvl: sumTokensExport({ - chain: 'polygon', tokens: [ '0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B', // BOB ], owner: '0x72e6b59d4a90ab232e55d4bb7ed2dd17494d62fb' - }) - } + }), + }, + optimism: { + tvl: sumTokensExport({ + tokens: [ + '0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b', // BOB + ], + owner: '0x1ca8c2b9b20e18e86d5b9a72370fc6c91814c97c' + }), + }, } \ No newline at end of file From a7fb2017f7079cf5c7189530a9ca9baa1f160903 Mon Sep 17 00:00:00 2001 From: Rahul Sethuram Date: Fri, 28 Apr 2023 18:07:25 +0400 Subject: [PATCH 0133/1354] Add new pool to midas --- projects/midas-capital/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/midas-capital/index.js b/projects/midas-capital/index.js index e49ffd829e..0953f70bff 100644 --- a/projects/midas-capital/index.js +++ b/projects/midas-capital/index.js @@ -4,6 +4,7 @@ const { compoundExportsWithAsyncTransform } = require("../helper/compound"); const pools = { bsc: { pools: [ + "0x1851e32F34565cb95754310b031C5a2Fc0a8a905", // Helio-Ankr "0x31d76A64Bc8BbEffb601fac5884372DEF910F044", // Jarvis "0xb2234eE69555EE4C3b6cEA4fd25c4979BbDBf0fd", // Risedile "0xEF0B026F93ba744cA3EDf799574538484c2C4f80", // AutoHedge From 86d55f1b65c38bec98ac26264c9fb27aab68873e Mon Sep 17 00:00:00 2001 From: Divya Patel Date: Fri, 28 Apr 2023 20:23:36 +0530 Subject: [PATCH 0134/1354] added rising undead tvl --- projects/rising-undead/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/rising-undead/index.js diff --git a/projects/rising-undead/index.js b/projects/rising-undead/index.js new file mode 100644 index 0000000000..18a3b91fe6 --- /dev/null +++ b/projects/rising-undead/index.js @@ -0,0 +1,28 @@ +const sdk = require('@defillama/sdk'); +const BigNumber = require('bignumber.js'); + +const chain = "kava"; +const owner = "0xc732471083342a842a728221878327c8DeE8aEDB"; +const tokens = [ + {symbol: "WKAVA", address: "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b" }, + {symbol: "ETH", address: "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D" }, + {symbol: "USDC", address: "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f" }, + {symbol: "USDT", address: "0xB44a9B6905aF7c801311e8F4E76932ee959c663C" }, +] + +async function getTVL() { + let balance = 0; + tokens.forEach( async(token) => { + const target = token.address; + const tokenDecimal = await sdk.api.erc20.decimals(token.address, chain); + const tokenBal = await sdk.api.erc20.balanceOf({ target, owner, chain }); + balance += BigNumber(tokenBal.output).dividedBy(BigNumber(10).pow(tokenDecimal.output)).toNumber(); + }); + return balance; +} + +module.exports = { + kava: { + tvl: getTVL() + } +} \ No newline at end of file From 1bc4332cca453553a2406ba37ea2f0b4a90f1667 Mon Sep 17 00:00:00 2001 From: Jeff Wu Date: Fri, 28 Apr 2023 08:28:45 -0700 Subject: [PATCH 0135/1354] making notional v2 tvl dynamic --- projects/notional/abi.json | 4 ++-- projects/notional/index.js | 26 +++++++++----------------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/projects/notional/abi.json b/projects/notional/abi.json index dba2eac561..4c5e817c6b 100644 --- a/projects/notional/abi.json +++ b/projects/notional/abi.json @@ -1,4 +1,4 @@ { - "maxCurrencyId": "uint16:maxCurrencyId", - "currencyIdToAddress": "function currencyIdToAddress(uint16) view returns (address)" + "getMaxCurrencyId": "function getMaxCurrencyId() view returns (uint16)", + "getCurrency": "function getCurrency(uint16) view returns ((address,bool,int256,uint8,uint256),(address,bool,int256,uint8,uint256))" } \ No newline at end of file diff --git a/projects/notional/index.js b/projects/notional/index.js index 9b254b23e7..520ab97844 100644 --- a/projects/notional/index.js +++ b/projects/notional/index.js @@ -1,36 +1,35 @@ const abi = require('./abi'); const sdk = require('@defillama/sdk'); -const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs'); -const escrowContract = '0x9abd0b8868546105F6F48298eaDC1D9c82f7f683'; const v2Contract = "0x1344A36A1B56144C3Bc62E7757377D288fDE0369" async function tvl (timestamp, block) { const maxCurrencyId = (await sdk.api.abi.call({ block, - target: escrowContract, - abi: abi['maxCurrencyId'] + target: v2Contract, + abi: abi['getMaxCurrencyId'] })).output; const addressCalls = [] - for (let i = 0; i <= maxCurrencyId; i++) { + for (let i = 1; i <= maxCurrencyId; i++) { addressCalls.push({ - target: escrowContract, + target: v2Contract, params: i }) } const supportedTokens = (await sdk.api.abi.multiCall({ calls: addressCalls, - target: escrowContract, - abi: abi['currencyIdToAddress'], + target: v2Contract, + abi: abi['getCurrency'], block, })).output const balanceCalls = supportedTokens.map((s) => { return { - target: s.output, - params: escrowContract + // Target is the asset token address, first parameter, first slot in tuple + target: s.output[0][0], + params: v2Contract } }) @@ -45,13 +44,6 @@ async function tvl (timestamp, block) { return obj }, {}) - await sumTokensAndLPsSharedOwners(balanceMap, [ - "0x39aa39c021dfbae8fac545936693ac917d5e7563", - "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", - "0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5", - "0xccf4429db6322d5c611ee964527d42e5d685dd6a" - ].map(a=>[a, false]), [v2Contract], block) - return balanceMap } From fb45f2b35bd8bf26f7e84e8a59cb2875e5ef592d Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 28 Apr 2023 16:41:41 +0100 Subject: [PATCH 0136/1354] add hasStablePools boolean --- projects/chronos/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/chronos/index.js b/projects/chronos/index.js index 3a39e3fd36..e92e057991 100644 --- a/projects/chronos/index.js +++ b/projects/chronos/index.js @@ -5,6 +5,6 @@ module.exports = { misrepresentedTokens: true, methodology: `Uses factory(0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722) address to count liquidity in pools as TVL.`, arbitrum: { - tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true, hasStablePools: true }), } }; From ab88cd95037046ac84562eecd70a4f747dcc6366 Mon Sep 17 00:00:00 2001 From: codehans <94654388+codehans@users.noreply.github.com> Date: Fri, 28 Apr 2023 17:02:48 +0100 Subject: [PATCH 0137/1354] market deposits --- projects/ghost/index.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/projects/ghost/index.js b/projects/ghost/index.js index 9db7d922b0..1e89952f3b 100644 --- a/projects/ghost/index.js +++ b/projects/ghost/index.js @@ -5,14 +5,23 @@ const { async function tvl(_, _1, _2, { api }) { const chain = api.chain - const contracts = await queryContracts({ chain, codeId: 106 }); - const deposited = (await Promise.all( - contracts.map(contract => queryContract({ contract, chain, data: { status: {} } })) + const vaultContracts = await queryContracts({ chain, codeId: 106 }); + const vaultDeposited = (await Promise.all( + vaultContracts.map(contract => queryContract({ contract, chain, data: { status: {} } })) )).map(i => i.deposited) - const tokens = (await Promise.all( - contracts.map(contract => queryContract({ contract, chain, data: { config: {} } })) + const vaultTokens = (await Promise.all( + vaultContracts.map(contract => queryContract({ contract, chain, data: { config: {} } })) )).map(i => i.denom) - api.addTokens(tokens, deposited) + api.addTokens(vaultTokens, vaultDeposited) + + const marketContracts = await queryContracts({ chain, codeId: 113 }); + const marketDeposited = (await Promise.all( + marketContracts.map(contract => queryContract({ contract, chain, data: { status: {} } })) + )).map(i => i.deposited) + const marketTokens = (await Promise.all( + marketContracts.map(contract => queryContract({ contract, chain, data: { config: {} } })) + )).map(i => i.collateral_denom) + api.addTokens(marketTokens, marketDeposited) } module.exports = { From 07f7281844136eb92fa80dea8e1e8df98c80af18 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 28 Apr 2023 19:16:37 +0100 Subject: [PATCH 0138/1354] fix bn tvl --- projects/shadeswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/shadeswap/index.js b/projects/shadeswap/index.js index d04e866b48..26666b229d 100644 --- a/projects/shadeswap/index.js +++ b/projects/shadeswap/index.js @@ -3,7 +3,7 @@ const { get } = require("../helper/http") async function tvl(_, _b, _cb, { api, }) { const data = await get('https://na36v10ce3.execute-api.us-east-1.amazonaws.com/API-mainnet-STAGE/shadeswap/pairs') return { - tether: data.map(i => +i.liquidity_usd).reduce((a, i) => a + i) + tether: data.map(i => +i.liquidity_usd).filter(i=>i<1e9).reduce((a, i) => a + i) } } From 43165a493784a3faf8284635344d790d9557e175 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Apr 2023 00:12:53 +0200 Subject: [PATCH 0139/1354] minor fix --- projects/onsenswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/onsenswap/index.js b/projects/onsenswap/index.js index 2e76f4eeae..a5ca229177 100644 --- a/projects/onsenswap/index.js +++ b/projects/onsenswap/index.js @@ -7,6 +7,7 @@ module.exports = { tvl: getUniTVL({ factory: "0x0E15a1a03bD356B17F576c50d23BF7FC00305590", useDefaultCoreAssets: true, + fetchBalances: true, }), }, }; From bf2f1eb522e45d18b6f649f588f938c841d9f78f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Apr 2023 00:33:31 +0200 Subject: [PATCH 0140/1354] code refactor --- projects/rising-undead/index.js | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/projects/rising-undead/index.js b/projects/rising-undead/index.js index 18a3b91fe6..5fce4d8231 100644 --- a/projects/rising-undead/index.js +++ b/projects/rising-undead/index.js @@ -1,7 +1,5 @@ -const sdk = require('@defillama/sdk'); -const BigNumber = require('bignumber.js'); +const { sumTokensExport } = require('../helper/unwrapLPs'); -const chain = "kava"; const owner = "0xc732471083342a842a728221878327c8DeE8aEDB"; const tokens = [ {symbol: "WKAVA", address: "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b" }, @@ -10,19 +8,8 @@ const tokens = [ {symbol: "USDT", address: "0xB44a9B6905aF7c801311e8F4E76932ee959c663C" }, ] -async function getTVL() { - let balance = 0; - tokens.forEach( async(token) => { - const target = token.address; - const tokenDecimal = await sdk.api.erc20.decimals(token.address, chain); - const tokenBal = await sdk.api.erc20.balanceOf({ target, owner, chain }); - balance += BigNumber(tokenBal.output).dividedBy(BigNumber(10).pow(tokenDecimal.output)).toNumber(); - }); - return balance; -} - module.exports = { kava: { - tvl: getTVL() + tvl: sumTokensExport({ owner, tokens: tokens.map(i => i.address)}) } } \ No newline at end of file From 0d37fb9f0513201b2f0a54ee0c733e09313dd045 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 29 Apr 2023 00:13:17 +0100 Subject: [PATCH 0141/1354] add staked FRB --- projects/freebie/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/freebie/index.js b/projects/freebie/index.js index 3f15854260..eb950c1b39 100644 --- a/projects/freebie/index.js +++ b/projects/freebie/index.js @@ -1,8 +1,10 @@ const { getTokenPrices } = require('../helper/unknownTokens') +const sdk = require("@defillama/sdk"); +const { staking } = require('../helper/staking') const token = '0x9bedce29f79076b21dd04958a9fd4b22f63fd86d' -async function staking(_, _b, _cb, { api, }) { +async function frbVault(_, _b, _cb, { api, }) { const balances = { ['avax:'+token]: await api.call({ abi: 'uint256:balanceVault', target: token, }) } @@ -11,10 +13,12 @@ async function staking(_, _b, _cb, { api, }) { return balances } +const stakedFRB = staking("0xcc2F243FA7bBcab3BD951E8aE40730173af88b83", "0x9BedCE29F79076b21DD04958a9Fd4B22F63fD86D", "avax") + module.exports = { misrepresentedTokens: true, avax: { tvl: () => 0, - staking, + staking: sdk.util.sumChainTvls([frbVault,stakedFRB]) } }; From eacdcf81e84d9f1f10e189f5ec6810468e9ac1a4 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Sat, 29 Apr 2023 03:33:46 +0100 Subject: [PATCH 0142/1354] add arbi to dsu --- projects/dsu-money/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/dsu-money/index.js b/projects/dsu-money/index.js index 5017e39f85..bdfc6e0d68 100644 --- a/projects/dsu-money/index.js +++ b/projects/dsu-money/index.js @@ -7,5 +7,10 @@ module.exports = { ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0xD05aCe63789cCb35B9cE71d01e4d632a0486Da4B'], ['0x39aa39c021dfbae8fac545936693ac917d5e7563', '0xD05aCe63789cCb35B9cE71d01e4d632a0486Da4B'], ]}) + }, + arbitrum: { + tvl: sumTokensExport({ tokensAndOwners: [ + ['0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', '0x0d49c416103cbd276d9c3cd96710db264e3a0c27'], + ]}) } -} \ No newline at end of file +} From fcbe0a6ef490e5b8c8b74da8daf7ae282752a15e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Apr 2023 14:27:23 +0200 Subject: [PATCH 0143/1354] change coreAssets format --- projects/helper/chain/algorand.js | 6 +- projects/helper/chain/aptos.js | 2 +- projects/helper/coreAssets.json | 2785 +++++++++++----------- projects/helper/tokenMapping.js | 2 +- utils/scripts/changeCoreAssetsFormat.js | 44 + utils/scripts/changeCoreAssetsFormat2.js | 74 + utils/scripts/formatAllAbis.js | 76 + utils/scripts/tokenMapping.js | 11 +- 8 files changed, 1551 insertions(+), 1449 deletions(-) create mode 100644 utils/scripts/changeCoreAssetsFormat.js create mode 100644 utils/scripts/changeCoreAssetsFormat2.js create mode 100644 utils/scripts/formatAllAbis.js diff --git a/projects/helper/chain/algorand.js b/projects/helper/chain/algorand.js index 62b53ea4a1..4b22fe96fb 100644 --- a/projects/helper/chain/algorand.js +++ b/projects/helper/chain/algorand.js @@ -10,7 +10,7 @@ const stateCache = {} const accountCache = {} const assetCache = {} -const geckoMapping = coreAssets.algorand ?? {} +const geckoMapping = Object.values(coreAssets.algorand) const axiosObj = axios.create({ baseURL: 'https://algoindexer.algoexplorerapi.io', timeout: 300000, @@ -163,10 +163,10 @@ async function getPriceFromAlgoFiLP(lpAssetId, unknownAssetId) { const unknownAssetQuantity = lpInfo.reserveInfo.assets.find(i => i['asset-id'] === '' + unknownAssetId).amount for (const i of lpInfo.reserveInfo.assets) { const id = i['asset-id'] - if (geckoMapping[id]) { + if (geckoMapping.includes(id)) { return { price: i.amount / unknownAssetQuantity, - geckoId: geckoMapping[id], + geckoId: 'algorand:'+id, decimals: 0, } } diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js index 89d130991a..2e35829583 100644 --- a/projects/helper/chain/aptos.js +++ b/projects/helper/chain/aptos.js @@ -7,7 +7,7 @@ const coreTokensAll = require('../coreAssets.json') const { transformBalances } = require('../portedTokens') const { log, getUniqueAddresses } = require('../utils') -const coreTokens = coreTokensAll.aptos +const coreTokens = Object.values(coreTokensAll.aptos) const endpoint = env.APTOS_RPC || "https://aptos-mainnet.pontem.network" diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index fc1b129a89..9acd02c898 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1,1439 +1,1348 @@ { - "ethereum": [ - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x514910771af9ca656af840dff83e8264ecf986ca", - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", - "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0x3aada3e213abf8529606924d8d1c55cbdc70bf74", - "0xc834fa996fa3bec7aad3693af486ae53d8aa8b50", - "0xfeef77d3f69374f66429c91d732a244f074bdf74", - "0xb8c77482e45f1f44de1745f52c74426c631bdd52", - "0xeb637a9ab6be83c7f8c79fdaa62e1043b65534f0", - "0x18084fba666a33d37592fa2633fd49a74dd93a88", - "0xef779cf3d260dbe6177b30ff08b10db591a6dd9c", - "0x42ef9077d8e79689799673ae588e046f8832cb95", - "0xd3d13a578a53685b4ac36a1bab31912d2b2a2f36", - "0x94671a3cee8c7a12ea72602978d1bb84e920efb2", - "0x2fc6e9c1b2c07e18632efe51879415a580ad22e1", - "0xeff721eae19885e17f5b80187d6527aad3ffc8de", - "0xdc0b02849bb8e0f126a216a2840275da829709b0", - "0x15a629f0665a3eb97d7ae9a7ce7abf73aeb79415", - "0x808d3e6b23516967ceae4f17a5f9038383ed5311", - "0xf49764c9c5d644ece6ae2d18ffd9f1e902629777", - "0xd3b5d9a561c293fb42b446fe7e237daa9bf9aa84", - "0xadf15ec41689fc5b6dca0db7c53c9bfe7981e655", - "0xc7d9c108d4e1dd1484d3e2568d7f74bfd763d356", - "0x65f7ba4ec257af7c55fd5854e5f6356bbd0fb8ec", - "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", - "0x2163383c1f4e74fe36c50e6154c7f18d9fd06d6f", - "0xf6b1c627e95bfc3c1b4c9b825a032ff0fbf3e07d", - "0xa80505c408c4defd9522981cd77e026f5a49fe63", - "0x97fe22e7341a0cd8db6f6c021a24dc8f4dad855f", - "0x0f83287ff768d1c1e17a42f44d644d7f22e8ee1d", - "0x9fcf418b971134625cdf38448b949c8640971671", - "0x8751d4196027d4e6da63716fa7786b5174f04c15", - "0xb1c9bc94acd2fae6aabf4ffae4429b93512a81d2", - "0x5067006f830224960fb419d7f25a3a53e9919bb0", - "0x2e9d63788249371f1dfc918a52f8d799f4a38c94", - "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "0x36f8d0d0573ae92326827c4a82fe4ce4c244cab6" - ], - "fantom": [ - "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", - "0x04068da6c83afcfa0e13ba15a6696662335d5b75", - "0x049d68029688eabf473097a2fc38ef61633a3c7a", - "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", - "0x82f0b8b456c1a451378467398982d4834b6829c1", - "0x658b0c7613e890ee50b8c4bc6a3f41ef411208ad", - "0xbf07093ccd6adfc3deb259c557b61e94c1f66945", - "0x0a03d2c1cfca48075992d810cc69bd9fe026384a", - "0x97927abfe1abbe5429cbe79260b290222fc9fbba", - "0x6dfe2aaea9daadadf0865b661b53040e842640f8", - "0x920786cff2a6f601975874bb24c63f0115df7dc8", - "0x49c68edb7aebd968f197121453e41b8704acde0c", - "0x7345a537a975d9ca588ee631befddfef34fd5e8f", - "0xdbf31df14b66535af65aac99c32e9ea844e14501", - "0x4a89338a2079a01edbf5027330eac10b615024e5", - "0xc0d9784fdba39746919bbf236eb73bc015fd351d", - "0xe3a486c1903ea794eed5d5fa0c9473c7d7708f40", - "0x8cc97b50fe87f31770bcdcd6bc8603bc1558380b", - "0x95bf7e307bc1ab0ba38ae10fc27084bc36fcd605", - "0xc5cd01e988cd0794e05ab80f2bcdbdf13ce08bd3", - "0x7f620d7d0b3479b1655cefb1b0bc67fb0ef4e443" - ], - "csc": [ - "0xe6f8988d30614afe4f7124b76477add79c665822", - "0x398dca951cd4fc18264d995dcd171aa5debda129" - ], - "europa": [ - "0x73d22d8a2D1f59Bf5Bcf62cA382481a2073FAF58", - "0xcb011E86DF014a46F4e3AC3F3cbB114A4EB80870", - "0xE0595a049d02b7674572b0d59cd4880Db60EDC50", - "0xD2Aaa00700000000000000000000000000000000", - "0x1c0491E3396AD6a35f061c62387a95d7218FC515", - "0x5F795bb52dAC3085f578f4877D450e2929D2F13d", - "0xD05C4be5f3be302d376518c9492EC0147Fa5A718" - ], - "avax": [ - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", - "0xc7198437980c041c805a1edcba50c1ce5db95118", - "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "0x152b9d0fdc40c096757f570a51e494bd4b943e50", - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", - "0x008e26068b3eb40b443d3ea88c1ff99b789c10f7", - "0xaf2c034c764d53005cc6cbc092518112cbd652bb", - "0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33", - "0x574679ec54972cf6d705e0a71467bb5bb362919d", - "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", - "0x1b156c5c75e9df4caab2a5cc5999ac58ff4f9090", - "0xd795d70ec3c7b990ffed7a725a18be5a9579c3b9", - "0xb6767518b205ea8b312d2ef4d992a2a08c2f2416", - "0xaf9f33df60ca764307b17e62dde86e9f7090426c", - "0x808d5f0a62336917da14fa9a10e9575b1040f71c", - "0x0665ef3556520b21368754fb644ed3ebf1993ad4", - "0x90a424754ad0d72cebd440faba18cdc362bfe70a", - "0x9debca6ea3af87bf422cea9ac955618ceb56efb4" - ], - "bsc": [ - "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", - "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "0x55d398326f99059ff775485246999027b3197955", - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", - "0x23c5d1164662758b3799103effe19cc064d897d6", - "0xaec945e04baf28b135fa7c640f624f8d90f1c3a6", - "0x055dab90880613a556a5ae2903b2682f8a5b8d27", - "0x2d0e75b683e8b56243b429b24f2b08bcc1ffd8da", - "0xd32d01a43c869edcd1117c640fbdcfcfd97d9d65", - "0x702b3f41772e321aaccdea91e1fcef682d21125d", - "0x0feadcc3824e7f3c12f40e324a60c23ca51627fc", - "0x46d502fac9aea7c5bc7b13c8ec9d02378c33d36f", - "0xf83849122f769a0a7386df183e633607c890f6c0", - "0x1f534d2b1ee2933f1fdf8e4b63a44b2249d77eaf", - "0x9a3321e1acd3b9f6debee5e042dd2411a1742002", - "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "0xb7f8cd00c5a06c0537e2abff0b58033d02e5e094", - "0xa35d95872d8eb056eb2cbd67d25124a6add7455e", - "0x0cf8e180350253271f4b917ccfb0accc4862f262", - "0x6ded0f2c886568fb4bb6f04f179093d3d167c9d7", - "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "0xaf6162dc717cfc8818efc8d6f46a41cf7042fcba", - "0x30807d3b851a31d62415b8bb7af7dca59390434a", - "0xce86f7fcd3b40791f63b86c3ea3b8b355ce2685b", - "0xbb9858603b1fb9375f6df972650343e985186ac5", - "0xc5fb6476a6518dd35687e0ad2670cb8ab5a0d4c5", - "0xaed19dab3cd68e4267aec7b2479b1ed2144ad77f", - "0xa6fdea1655910c504e974f7f1b520b74be21857b", - "0x5f7f6cb266737b89f7af86b30f03ae94334b83e9", - "0x532197ec38756b9956190b845d99b4b0a88e4ca9", - "0x6d1b7b59e3fab85b7d3a3d86e505dd8e349ea7f3", - "0x42586ef4495bb512a86cf7496f6ef85ae7d69a64", - "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", - "0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d", - "0xa8bb71facdd46445644c277f9499dd22f6f0a30c", - "0x9cb73f20164e399958261c289eb5f9846f4d1404", - "0x51bd63f240fb13870550423d208452ca87c44444", - "0xaa20e8cb61299df2357561c2ac2e1172bc68bc25", - "0x13ab6739368a4e4abf24695bf52959224367391f", - "0xd7d069493685a581d27824fc46eda46b7efc0063", - "0x7c9e73d4c71dae564d41f78d56439bb4ba87592f", - "0x158da805682bdc8ee32d52833ad41e74bb951e59", - "0x08fc9ba2cac74742177e0afc3dc8aed6961c24e7", - "0xbff4a34a4644a113e8200d7f1d79b3555f723afe", - "0x3282d2a151ca00bfe7ed17aa16e42880248cd3cd", - "0xf1be8ecc990cbcb90e166b71e368299f0116d421", - "0xea7a82e0bc636667ab5c65623cd1438370620c3e", - "0x8b04e56a8cd5f4d465b784ccf564899f30aaf88c", - "0x6a46d878401f46b4c7f665f065e0667580e031ec", - "0xa4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016", - "0x37dfacfaeda801437ff648a1559d73f4c40aacb7", - "0x71be881e9c5d4465b3fff61e89c6f3651e69b5bb", - "0x316622977073bbc3df32e7d2a9b3c77596a0a603", - "0x5b1a9850f55d9282a7c4bf23a2a21b050e3beb2f", - "0xdcecf0664c33321ceca2effce701e710a2d28a3f", - "0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa", - "0x4268b8f0b87b6eae5d897996e6b845ddbd99adf3", - "0x772f317ec695ce20290b56466b3f48501ba81352", - "0x3f847b01d4d498a293e3197b186356039ecd737f", - "0xe85afccdafbe7f2b096f268e31cce3da8da2990a", - "0xbb1aa6e59e5163d8722a122cd66eba614b59df0d" - ], - "polygon": [ - "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", - "0xfd28c7cea3c50a060cb4c0059e453c6d4dd9829d", - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "0x4535e52cdf3ab787b379b7b72b5990767e6747e4", - "0x22a31bd4cb694433b6de19e0acc2899e553e9481", - "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", - "0xaa9654becca45b5bdfa5ac646c939c62b527d394", - "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "0x9fffb2f49adfc231b44ddcff3ffcf0e81b06430a", - "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", - "0x8eb3771a43a8c45aabe6d61ed709ece652281dc9", - "0x613a489785c95afeb3b404cc41565ccff107b6e0", - "0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa", - "0x794baab6b878467f93ef17e2f2851ce04e3e34c8", - "0x282d8efce846a88b159800bd4130ad77443fa1a1", - "0x769434dca303597c8fc4997bf3dab233e961eda2", - "0x6d3cc56dfc016151ee2613bdde0e03af9ba885cc", - "0xe4f7761b541668f88d04fe9f2e9df10ca613aef7", - "0x81a123f10c78216d32f8655eb1a88b5e9a3e9f2f", - "0xc5b57e9a1e7914fda753a88f24e5703e617ee50c", - "0xf826a91e8de52bc1baf40d88203e572dc2551aa3", - "0x28cead9e4ff96806c79f4189ef28fc61418e2216", - "0xfc40a4f89b410a1b855b5e205064a38fc29f5eb5", - "0x4c28f48448720e9000907bc2611f73022fdce1fa", - "0x6cacfaf65b1b1f9979acf463a393a112d0980982", - "0x14743e1c6f812154f7ecc980d890f0f5234103e7", - "0x5c4b7ccbf908e64f32e12c6650ec0c96d717f03f", - "0xb4d09ff3da7f9e9a2ba029cb0a81a989fd7b8f17", - "0x9c9e5fd8bbc25984b178fdce6117defa39d2db39", - "0x6002410dda2fb88b4d0dc3c1d562f7761191ea80" - ], - "xdai": [ - "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d", - "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83", - "0x9c58bacc331c9aa871afd802db6379a98e80cedb", - "0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1", - "0x4ecaba5870353805a9f068101a40e0f32ed605c6", - "0x44fa8e6f47987339850636f88629646662444217", - "0x4537e328bf7e4efa29d05caea260d7fe26af9d74", - "0x7122d7661c4564b7c6cd4878b06766489a6028a2", - "0x8e5bbbb09ed1ebde8674cda39a0c169401db4252", - "0xec3f3e6d7907acda3a7431abd230196cda3fbb19", - "0x678df3415fc31947da4324ec63212874be5a82f8" - ], - "okexchain": [ - "0xc946daf81b08146b1c7a8da2a851ddf2b3eaaf85", - "0x8f8526dbfd6e38e3d8307702ca8469bae6c56c15", - "0x382bb369d343125bfb2117af9c149795c6c65c50", - "0x54e4622dc504176b3bb432dccaf504569699a7ff", - "0xef71ca2ee68f45b9ad6f72fbdb33d707b872315c", - "0xdf54b6c6195ea4d948d03bfd818d365cf175cfc2", - "0xab0d1578216a545532882e420a8c61ea07b00b12", - "0x8179d97eb6488860d816e3ecafe694a4153f216c", - "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c" - ], - "heco": [ - "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f", - "0xb6f4c418514dd4680f76d5caa3bb42db4a893acb", - "0xhecozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", - "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "0x3d760a45d0887dfd89a2f5385a236b29cb46ed2a", - "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", - "0xce0a5ca134fb59402b723412994b30e02f083842", - "0x1ee8382be3007bd9249a89f636506284ddef6cc0", - "0x40280e26a572745b1152a54d1d44f365daa51618", - "0x5ee41ab6edd38cdfb9f6b4e6cf7f75c87e170d98", - "0xa2f3c2446a3e20049708838a779ff8782ce6645a", - "0x843af718ef25708765a8e0942f89edeae1d88df0", - "0x90e8896b12a92d51cd213b681c2cad83a9a6bd49" - ], - "hoo": [ - "0x3eff9d389d13d6352bfb498bcf616ef9b1beac87" - ], - "harmony": [ - "0x72cb10c6bfa5624dd07ef608027e366bd690048f", - "0xd74433b187cf0ba998ad9be3486b929c76815215", - "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", - "0x0dd740db89b9fda3baadf7396ddad702b6e8d6f5", - "0xa9ce83507d872c5e1273e745abcfda849daa654f", - "0xb12c13e66ade1f72f71834f2fc5082db8c091358", - "0xed0b4b0f0e2c17646682fc98ace09feb99af3ade", - "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - "0x799a4202c12ca952cb311598a024c80ed371a41e", - "0xea589e93ff18b1a1f1e9bac7ef3e86ab62addc79" - ], - "optimism": [ - "0x4200000000000000000000000000000000000006", - "0x5029c236320b8f15ef0a657054b84d90bfbeded3", - "0x121ab82b49b2bc4c7901ca46b8277962b4350204", - "0x35d48a789904e9b15705977192e5d95e2af7f1d3", - "0xcb8fa9a76b8e203d8c3797bf438d8fb81ea3326a", - "0x67ccea5bb16181e7b4109c9c2143c24a1c2205be", - "0x2e3d870790dc77a83dd1d18184acc7439a53f475", - "0x0b5740c6b4a97f90ef2f0220651cca420b868ffb", - "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9", - "0xc5db22719a06418028a40a9b5e9a7c02959d0d08", - "0xe405de8f52ba7559f9df3c368500b6e6ae6cee49", - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - "0x298b9b95708152ff6968aafd889c6586e9169f1d" - ], - "moonriver": [ - "0x98878b06940ae243284ca214f92bb71a2b032b8a", - "0xf50225a84382c74cbdea10b0c176f71fc3de0c4d", - "0xb44a9b6905af7c801311e8f4e76932ee959c663c", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", - "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "0xe3c7487eb01c74b73b7184d198c7fbf46b34e5af", - "0xcb4a593ce512d78162c58384f0b2fd6e802c2c47" - ], - "moonbeam": [ - "0xacc15dc74880c9944775448304b263d191c6077f", - "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "0x0e358838ce72d5e61e0018a2ffac4bec5f4c88d2", - "0xa649325aa7c5093d12d6f98eb4378deae68ce23f", - "0xcd3b51d98478d53f4515a306be565c6eebef1d58", - "0x322e86852e492a7ee17f28a78c663da38fb33bfb", - "0x8f552a71efe5eefc207bf75485b356a0b3f01ec9", - "0xdfa46478f9e5ea86d57387849598dbfb2e964b02", - "0x8e70cd5b4ff3f62659049e74b6649c6603a0e594", - "0x30d2a9f5fdf90ace8c17952cbb4ee48a55d916a7", - "0x1dc78acda13a8bc4408b207c9e48cdbc096d95e0", - "0xc234a67a4f840e61ade794be47de455361b52413", - "0x1d4c2a246311bb9f827f4c768e277ff5787b7d7e", - "0x5f6c5c2fb289db2228d159c69621215e354218d7", - "0x931715fee2d06333043d11f658c8ce934ac61d0c", - "0xffffffffea09fb06d082fd1275cd48b191cbcd1d", - "0xab3f0245b83feb11d15aaffefd7ad465a59817ed", - "0xe57ebd2d67b462e9926e04a8e33f01cd0d64346d", - "0x692c57641fc054c2ad6551ccc6566eba599de1ba", - "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", - "0x6a2d262d56735dba19dd70682b39f6be9a931d98", - "0x6959027f7850adf4916ff5fdc898d958819e5375", - "0x4edf8e0778967012d46968ceadb75436d0426f88", - "0xfa36fe1da08c89ec72ea1f0143a35bfd5daea108" - ], - "arbitrum": [ - "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - "0xf97f4df75117a78c1a5a0dbb814af92458539fb4", - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - "0x09ad12552ec45f82be90b38dfe7b06332a680864", - "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", - "0xdbf31df14b66535af65aac99c32e9ea844e14501", - "0x9ef758ac000a354479e538b8b2f01b917b8e89e7", - "0x31635a2a3892daec7c399102676e344f55d20da7", - "0x4a717522566c7a09fd2774ccedc5a8c43c5f9fd2", - "0x2913e812cf0dcca30fb28e6cac3d2dcff4497688", - "0x289ba1701c2f088cf0faf8b3705246331cb8a839", - "0x61a1ff55c5216b636a294a07d77c6f4df10d3b56", - "0x93c15cd7de26f07265f0272e0b831c5d7fab174f", - "0x1addd80e6039594ee970e5872d247bf0414c8903", - "0x4e971a87900b931ff39d1aad67697f49835400b6", - "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a", - "0x5326e71ff593ecc2cf7acae5fe57582d6e74cff1" - ], - "fuse": [ - "0x0be9e53fd7edac9f859882afdda116645287c629", - "0x620fd5fa44be6af63715ef4e65ddfa0387ad13f5", - "0xa722c13135930332eb3d749b2f0906559d2c5b99", - "0x94ba7a27c7a95863d1bdc7645ac2951e0cca06ba", - "0xfadbbf8ce7d5b7041be672561bba99f79c532e10", - "0x43b17749b246fd2a96de25d9e4184e27e09765b0", - "0x0000000000000000000000000000000000000000" - ], - "evmos": [ - "0xd4949664cd82660aae99bedc034a0dea8a0bd517", - "0x51e44ffad5c2b122c8b635671fcc8139dc636e82", - "0x8d395affc1767141387fff45af88a074614e7ccf", - "0xb1a8c961385b01c3aa782fba73e151465445d319", - "0xe46910336479f254723710d57e7b683f3315b22b", - "0x63743acf2c7cfee65a5e356a4c4a005b586fc7aa", - "0x7ff4a56b32ee13d7d4d405887e0ea37d61ed919e", - "0xb72a7567847aba28a2819b855d7fe679d4f59846", - "0x5842c5532b61acf3227679a8b1bd0242a41752f2", - "0xf80699dc594e00ae7ba200c7533a07c1604a106d", - "0x28ec4b29657959f4a5052b41079fe32919ec3bd3", - "0xe03494d0033687543a80c9b1ca7d6237f2ea8bd8", - "0x3f75ceabcdfed1aca03257dc6bdc0408e2b4b026" - ], - "oasis": [ - "0x3223f17957ba502cbe71401d55a0db26e5f7c68f", - "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", - "0xdc19a122e268128b5ee20366299fc7b5b199c8e3", - "0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844", - "0x21c718c22d52d0f3a789b752d4c2fd5908a8a733", - "0x5c78a65ad6d0ec6618788b6e8e211f31729111ca", - "0x9e832cae5d19e7ff2f0d62881d1e33bb16ac9bdc", - "0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8", - "0xe8a638b3b7565ee7c5eb9755e58552afc87b94dd", - "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c" - ], - "kcc": [ - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0x4a81704d8c16d9fb0d7f61b747d0b5a272badf14", - "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", - "0xc9baa8cfdde8e328787e29b4b078abf2dadc2055", - "0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0", - "0xf55af137a98607f7ed2efefa4cd2dfe70e4253b1", - "0x4446fc4eb47f2f6586f9faab68b3498f86c07521", - "0x2ca48b4eea5a731c2b54e7c3944dbdb87c0cfb6f", - "0x0039f574ee5cc39bdd162e9a88e3eb1f111baf48", - "0x980a5afef3d17ad98635f6c5aebcbaeded3c3430", - "0xfa93c12cd345c658bc4644d1d4e1b9615952258c", - "0x00ee2d494258d6c5a30d6b6472a09b27121ef451" - ], - "metis": [ - "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000", - "0x75cb093e4d61d2a2e65d8e0bbb01de8d89b53481", - "0xbb06dca3ae6887fabf931640f67cab3e3a16f4dc", - "0x420000000000000000000000000000000000000a", - "0x5801d0e1c7d977d78e4890880b8e579eb4943276", - "0xea32a96608495e54156ae48931a7c20f0dcc1a21", - "0x2692be44a6e38b698731fddf417d060f0d20a0cb", - "0xa5b55ab1daf0f8e1efc0eb1931a957fd89b918f4", - "0x12d84f1cfe870ca9c9df9785f8954341d7fbb249", - "0xe253e0cea0cdd43d9628567d097052b33f98d611", - "0xa9109271abcf0c4106ab7366b4edb34405947eed", - "0x4651b38e7ec14bb3db731369bfe5b08f2466bd0a", - "0xfe282af5f9eb59c30a3f78789eeffa704188bdd4", - "0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8", - "0x4b9d2923d875edf43980bf5ddddede3fb20fc742", - "0x67c10c397dd0ba417329543c1a40eb48aaa7cd00", - "0x226d8bfb4da78ddc5bd8fd6c1532c58e88f9fd34", - "0x71802e8f394bb9d05a1b8e9d0562917609fd7325", - "0x433e43047b95cb83517abd7c9978bdf7005e9938", - "0xd1f0a4e5444eed0fbcd6624dcef7ef33043e6168" - ], - "celo": [ - "0x471ece3750da237f93b8e339c536989b8978a438", - "0x765de816845861e75a25fca122bb6898b8b1282a", - "0x9995cc8f20db5896943afc8ee0ba463259c931ed", - "0x7d00cd74ff385c955ea3d79e47bf06bd7386387d", - "0x918146359264c492bd6934071c6bd31c854edbc3", - "0xe273ad7ee11dcfaa87383ad5977ee1504ac07568", - "0x37f750b7cc259a2f741af45294f6a16572cf5cad", - "0x2a3684e9dc20b857375ea04235f2f7edbe818fa7", - "0xb70e0a782b058bfdb0d109a3599bec1f19328e36", - "0xcd7d7ff64746c1909e44db8e95331f9316478817", - "0x93db49be12b864019da9cb147ba75cdc0506190e", - "0xcfffe0c89a779c09df3df5624f54cdf7ef5fdd5d", - "0xbaab46e28388d2779e6e31fd00cf0e5ad95e327b", - "0x122013fd7df1c6f636a5bb8f03108e876548b455", - "0xe919f65739c26a42616b7b8eedc6b5524d1e3ac4", - "0xed193c4e69f591e42398ef54dea65aa1bb02835c", - "0x90ca507a5d4458a4c6c6249d186b6dcb02a5bccd", - "0x02de4766c272abc10bc88c220d214a26960a7e92", - "0x32a9fe697a32135bfd313a6ac28792dae4d9979d", - "0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207", - "0x617f3112bf5397d0467d315cc709ef968d9ba546" - ], - "boba": [ - "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000", - "0xa18bf3994c0cc6e3b63ac420308e5383f53120d7", - "0x66a2a913e447d6b4bf33efbec43aaef87890fbbc", - "0x5de1677344d3cb0d7d465c10b72a8f60699c062d", - "0xf74195bb8a5cf652411867c5c2c5b8c2a402be35", - "0x461d52769884ca6235b685ef2040f47d30c94eb5", - "0x7562f525106f5d54e891e005867bf489b5988cd9", - "0xd203de32170130082896b4111edf825a4774c18e", - "0xdc0486f8bf31df57a952bcd3c1d3e166e3d9ec8b", - "0xe1e2ec9a85c607092668789581251115bcbd20de", - "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd" - ], - "findora": [ - "0xabc979788c7089b516b8f2f1b5ceabd2e27fd78b", - "0x008a628826e9470337e0cd9c0c944143a83f32f3", - "0x93edfa31d7ac69999e964dac9c25cd6402c75db3", - "0xda33ef1a7b48bebbf579ee86dfa735a9529c4950", - "0xe80eb4a234f718edc5b76bb442653827d20ebb2d", - "0x07efa82e00e458ca3d53f2cd5b162e520f46d911", - "0x0000000000000000000000000000000000001000", - "0x2e8079e0fe49626af8716fc38adea6799065d7f7", - "0x0632baa26299c9972ed4d9affa3fd057a72252ff" - ], - "milkomeda": [ - "0xae83571000af4499798d1e3b0fa0070eb3a3e3f9", - "0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844", - "0x8d50a024b2f5593605d3ce8183ca8969226fcbf8", - "0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8", - "0x3795c36e7d12a8c252a20c5a7b455f7c57b60283", - "0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52", - "0x5950f9b6ef36f3127ea66799e64d0ea1f5fdb9d1", - "0x41eafc40cd5cb904157a10158f73ff2824dc1339", - "0xab58da63dfdd6b97eaab3c94165ef6f43d951fb2", - "0x5a955fddf055f2de3281d99718f5f1531744b102", - "0x48aeb7584ba26d3791f06fba360db435b3d7a174", - "0x42110a5133f91b49e32b671db86e2c44edc13832", - "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", - "0x8c008bba2dd56b99f4a6ab276be3a478cb075f0c" - ], - "bittorrent": [ - "0xdb28719f7f938507dbfe4f0eae55668903d34a15", - "0x935faa2fcec6ab81265b301a30467bbc804b43d3", - "0x8d193c6efa90bcff940a98785d1ce9d093d3dc8a", - "0x17f235fd5974318e4e2a5e37919a209f7c37a6d1", - "0xae17940943ba9440540940db0f1877f101d39e8b", - "0xedf53026aea60f8f75fca25f8830b7e2d6200662", - "0x1249c65afb11d179ffb3ce7d4eedd1d9b98ad006", - "0xe887512ab8bc60bcc9224e1c3b5be68e26048b8b", - "0xe467f79e9869757dd818dfb8535068120f6bcb97", - "0x9888221fe6b5a2ad4ce7266c7826d2ad74d40ccf", - "0xca424b845497f7204d9301bd13ff87c0e2e86fcf", - "0x9b5f27f6ea9bbd753ce3793a07cba3c74644330d", - "0x23181f21dea5936e24163ffaba4ea3b316b57f3c" - ], - "klaytn": [ - "0xd7a4d10070a4f7bc2a015e78244ea137398c3b74", - "0x5388ce775de8f7a69d17fd5caa9f7dbfee65dfce", - "0x02cbe46fb8a1f579254a9b485788f2d86cad51aa", - "0x078db7827a5531359f6cb63f62cfa20183c4f10c", - "0x6270b58be569a7c0b8f47594f191631ae5b2c86c", - "0x0268dbed3832b87582b1fa508acf5958cbb1cd74", - "0xd6dab4cff47df175349e6e7ee2bf7c40bb8c05a3", - "0x168439b5eebe8c83db9eef44a0d76c6f54767ae4", - "0x4fa62f1f404188ce860c8f0041d6ac3765a72e67", - "0xce40569d65106c32550626822b91565643c07823", - "0x210bc03f49052169d5588a52c317f71cf2078b85", - "0xdcbacf3f7a069922e677912998c8d57423c37dfa", - "0xcd6f29dc9ca217d0973d3d21bf58edd3ca871a86", - "0xe4f05a66ec68b54a58b17c22107b02e0232cc817", - "0x5c74070fdea071359b86082bd9f9b3deaafbe32b", - "0x754288077d0ff82af7a5317c7cb8c444d421d103", - "0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167", - "0x16d0e1fbd024c600ca0380a4c5d57ee7a2ecbf9c", - "0x34d21b1e550d73cee41151c77f3c73359527a396", - "0xff3e7cf0c007f919807b32b30a4a9e7bd7bc4121", - "0xf6f6b8bd0ac500639148f8ca5a590341a97de0de", - "0x9eaefb09fe4aabfbe6b1ca316a3c36afc83a393f", - "0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654", - "0x98a8345bb9d3dda9d808ca1c9142a28f6b0430e1", - "0x981846be8d2d697f4dfef6689a161a25ffbab8f9", - "0x608792deb376cce1c9fa4d0e6b7b44f507cffa6a", - "0x5c13e303a62fc5dedf5b52d66873f2e59fedadc2", - "0xcb2c7998696ef7a582dfd0aafadcd008d03e791a", - "0xac9c1e4787139af4c751b1c0fadfb513c44ed833", - "0xe2765f3721dab5f080cf14ace661529e1ab9ade7", - "0x45830b92443a8f750247da2a76c85c70d0f1ebf3", - "0xfaa03a2ac2d1b8481ec3ff44a0152ea818340e6d", - "0x2b72d65941e657c1305b65fa330ffdde7b397239", - "0x61fbbfd5416c45f297a8e69ba113789c75f8841c", - "0x2eadfda6d830547b5168ba88c13d24156a026ce5", - "0x98aedff55dcc2e7a7d1899b325d1680527dd2742", - "0x2ff5371dad5c6ef76d55213b7c5a519f6654ba17", - "0xe9a88c33abf71c902f7581321d05e6516cbca761", - "0xfd844c2fca5e595004b17615f891620d1cb9bbb2", - "0x57d1a61e4fd09fbf16e35b04959e94dcf2032974", - "0xd2137fdf10bd9e4e850c17539eb24cfe28777753", - "0xe06597d02a2c3aa7a9708de2cfa587b128bd3815" - ], - "nova": [ - "0x657a66332a65b535da6c5d67b8cd1d410c161a08", - "0x1f5396f254ee25377a5c1b9c6bff5f44e9294fff", - "0x0000000000000000000000000000000000000000" - ], - "aurora": [ - "0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb", - "0xb12bfca5a55806aaf64e99521918a4bf0fc40802", - "0x4988a896b1227218e4a686fde5eabdcabd91571f", - "0xc42c30ac6cc15fac9bd938618bcaa1a1fae8501d", - "0x8bec47865ade3b172a928df8f990bc7f2a3b9f79", - "0xda2585430fef327ad8ee44af8f1f989a2a91a3d2", - "0x07379565cd8b0cae7c60dc78e7f601b34af2a21c", - "0x42cc1cbf253f89be6814a0f59f745b40b69b6220", - "0xd5e98caeb396dabe5a102bb9256b552944e3401f", - "0x274d83086c356e0cfc75933fbf838ca10a7e8274" - ], - "dfk": [ - "0xccb93dabd71c8dad03fc4ce5559dc3d89f67a260", - "0x77f2656d04e158f915bc22f07b779d94c1dc47ff", - "0x0ab87046fbb341d058f17cbc4c1133f25a20a52f", - "0x2df041186c844f8a2e2b63f16145bc6ff7d23e25" - ], - "cronos": [ - "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23", - "0xc21223249ca28397b4b6541dffaecc539bff0c59", - "0x062e66477faf219f25d27dced647bf57c3107d52", - "0x654bac3ec77d6db497892478f854cf6e8245dca9", - "0x66e428c3f67a68878562e79a0234c1f83c208770", - "0xe243ccab9e66e6cf1215376980811ddf1eb7f689", - "0x87efb3ec1576dec8ed47e58b832bedcd86ee186e", - "0xca2503482e5d6d762b524978f400f03e38d5f962", - "0x45c135c1cdce8d25a3b729a28659561385c52671", - "0x39a65a74dc5a778ff93d1765ea51f57bc49c81b3", - "0xbed48612bc69fa1cab67052b42a95fb30c1bcfee", - "0xb888d8dd1733d72681b30c00ee76bde93ae7aa93", - "0x02dccaf514c98451320a9365c5b46c61d3246ff3", - "0x065de42e28e42d90c2052a1b49e7f83806af0e1f" - ], - "velas": [ - "0xc579d1f3cf86749e05cd06f7ade17856c2ce3126", - "0xe41c4324dcbd2926481101f8580d13930aff8a75", - "0x85219708c49aa701871ad330a94ea0f41dff24ca", - "0x6ab0b8c1a35f9f4ce107ccbd05049cb1dbd99ec5", - "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", - "0x2b8e9cd44c9e09d936149549a8d207c918ecb5c4", - "0xc9b3aa6e91d70f4ca0988d643ca2bb93851f3de4", - "0xe2c120f188ebd5389f71cf4d9c16d05b62a58993", - "0x01445c31581c354b7338ac35693ab2001b50b9ae", - "0xc111c29a988ae0c0087d97b33c6e6766808a3bd3", - "0x300a8be53b4b5557f48620d578e7461e3b927dd0", - "0x525bd1f949ffa2a0c5820f3b6fe61bb897466ff7", - "0x9b6fbf0ea23faf0d77b94d5699b44062e5e747ac", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0x8d9fb713587174ee97e91866050c383b5cee6209", - "0x3611fbfb06ffbcef9afb210f6ace86742e6c14a4" - ], - "telos": [ - "0xd102ce6a4db07d247fcc28f366a623df0938ca9e", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "0xf390830df829cf22c53c8840554b98eafc5dcbc2", - "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73", - "0xb4b01216a5bc8f1c8a33cd990a1239030e60c905", - "0x017043607270ecbb440e20b0f0bc5e760818b3d8" - ], - "reichain": [ - "0xf8ab4aaf70cef3f3659d3f466e35dc7ea10d4a5d", - "0xdd2bb4e845bd97580020d8f9f58ec95bf549c3d9" - ], - "solana": [ - "So11111111111111111111111111111111111111112", - "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "9EaLkQrbjmbbuZG9Wdpo8qfNUEjHATJFSycEmw6f1rGX", - "6LNeTYMqtNm1pBFN8PfhQaoLyegAH8GD32WmHU9erXKN", - "EjmyN6qEC1Tf1JxiG1ae7UTJhUxSwk1TCWNWqxWV4J6o", - "eqKJTf1Do4MDPyKisMYqVaUFpkEFAs3riGF3ceDH2Ca", - "FCqfQSujuPxy6V42UvafBhsysWtEq1vhjfMN1PUbgaxA", - "DdFPRnccQqLD4zCHrBqdY95D6hvw6PLWp9DEXj1fLCL9", - "8Yv9Jz4z7BUHP68dz8E8m3tMe6NKgpMUKn8KVqrPA6Fr", - "Grk6b4UMRWkgyq4Y6S1BnNRF4hRgtnMFp7Sorkv6Ez4u", - "8XSsNvaKU9FDhYWAv7Yc7qSNwuJSzVrXBNEk7AFiWF69", - "8qJSyQprMC57TWKaYEmetUR3UUiTP2M3hXdcvFhkZdmv", - "E77cpQ4VncGmcAXX16LHFFzNBEBb2U7Ar7LBmZNfCgwL", - "Bn113WT6rbdgwrm12UJtnmNqGqZjY4it2WoUQuQopFVn", - "FwEHs3kJEdMa2qZHv7SgzCiFXUQPEycEXksfBkwmS8gj", - "5RpUwQ8wtdPCZHhu6MERp2RGrpobsbZ6MH5dDHkUjs2", - "PUhuAtMHsKavMTwZsLaDeKy2jb7ciETHJP7rhbKLJGY" - ], - "astar": [ - "0xaeaaf0e2c81af264101b9129c00f4440ccf0f720", - "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", - "0xad543f18cff85c77e140e3e5e3c3392f6ba9d5ca", - "0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52", - "0x75364d4f779d0bd0facd9a218c67f87dd9aff3b4", - "0xdd90e5e87a2081dcf0391920868ebc2ffb81a1af", - "0x6a2d262d56735dba19dd70682b39f6be9a931d98", - "0x3795c36e7d12a8c252a20c5a7b455f7c57b60283", - "0xde2578edec4669ba7f41c5d5d2386300bcea4678", - "0xffffffffffffffffffffffffffffffffffffffff", - "0x6de33698e9e9b787e09d3bd7771ef63557e148bb", - "0xcdb32eed99aa19d39e5d6ec45ba74dc4afec549f", - "0xc5bcac31cf55806646017395ad119af2441aee37", - "0x6df98e5fbff3041105cb986b9d44c572a43fcd22", - "0x29f6e49c6e3397c3a84f715885f9f233a441165c", - "0x257f1a047948f73158dadd03eb84b34498bcdc60", - "0xc4335b1b76fa6d52877b3046eca68f6e708a27dd", - "0x430d50963d9635bbef5a2ff27bd0bddc26ed691f", - "0x19574c3c8fafc875051b665ec131b7e60773d2c9", - "0xe511ed88575c57767bafb72bfd10775413e3f2b0", - "0xecc867de9f5090f55908aaa1352950b9eed390cd", - "0xb361dad0cc1a03404b650a69d9a5adb5af8a531f", - "0xc404e12d3466accb625c67dbab2e1a8a457def3c", - "0x4dd9c468a44f3fef662c35c1e9a6108b70415c2c", - "0xdbd71969ac2583a9a20af3fb81fe9c20547f30f3", - "0x9914bff0437f914549c673b34808af6020e2b453", - "0x347e53263f8fb843ec605a1577ec7c8c0cac7a58", - "0x02dac4898b2c2ca9d50ff8d6a7726166cf7bcfd0", - "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", - "0xb7ab962c42a8bb443e0362f58a5a43814c573ffb", - "0x733ebcc6df85f8266349defd0980f8ced9b45f35", - "0x5271d85ce4241b310c0b34b7c2f1f036686a6d7c", - "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb" - ], - "cardano": [ - "ADA" - ], - "functionx": [ - "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", - "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", - "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", - "0xeceeefcee421d8062ef8d6b4d814efe4dc898265" - ], - "clv": [ - "0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3", - "0x1376c97c5c512d2d6f9173a9a3a016b6140b4536", - "0xa1c3767c93e7b51ecb445fdbae1494dfc654e524", - "0x30bebbc0b6b357945ac30660e025c1532b9c7804", - "0xf91193a62879279d6b8f209f89b6418e3c0e5cbf", - "0x4a52f069cb00905d996a0d7b811d78e60b4cb09e" - ], - "tron": [ - "0x0000000000000000000000000000000000000000", - "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", - "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", - "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", - "TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR", - "TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9", - "TR3DLthpnDdCGabhVDbD3VMsiJoCXY3bZd", - "THbVQp8kMjStKNnf2iCY6NEzThKMK5aBHg", - "THb4CqiFdwNHsWsQCs4JhzwjMWys4aqCbF" - ], - "lachain": [ - "0x3a898d596840c6b6b586d722bfadcc8c4761bf41" - ], - "theta": [ - "0x4dc08b15ea0e10b96c41aec22fab934ba15c983e", - "0x1336739b05c7ab8a526d40dcc0d04a826b5f8b03" - ], - "zyx": [ - "0xc9e1aea009b0bae9141f3dc7523fb42fd48c8656" - ], - "ubiq": [ - "0x1fa6a37c64804c0d797ba6bc1955e50068fbf362" - ], - "cosmos": [ - "uatom" - ], - "terra2": [ - "uluna", - "terra1nsuqsk6kh58ulczatwev87ttq2z6r3pusulg9r24mfj2fvtzd4uq3exn26" - ], - "terra": [ - "uluna", - "uusd" - ], - "crescent": [ - "ubcre", - "ucre" - ], - "orai": [ - "orai", - "orai12hzjxfh77wl572gdzct2fxv2arxcwh6gykc7qh" - ], - "juno": [ - "ujuno" - ], - "osmosis": [ - "uion" - ], - "kujira": [ - "ukuji", - "factory/kujira1qk00h5atutpsv900x202pxx42npjr9thg58dnqpa72f2p7m2luase444a7/uusk" - ], - "injective": [ - "inj", - "ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9", - "factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk" - ], - "comdex": [ - "ucmdx", - "ucmst" - ], - "near": [ - "token.jumbo_exchange.near", - "token.paras.near", - "marmaj.tkn.near", - "linear-protocol.near", - "token.pembrock.near", - "token.burrow.near", - "token.marmaj.near" - ], - "multivac": [ - "0x8e321596267a4727746b2f48bc8736db5da26977", - "0x2f9c74d3c42023c533437c9ee743d4a6329e78df", - "0xea1199d50ee09fa8062fd9da3d55c6f90c1babd2" - ], - "tomochain": [ - "0xb1f66997a5760428d3a87d68b90bfe0ae64121cc" - ], - "ethereumclassic": [ - "0x82a618305706b14e7bcf2592d4b9324a366b6dad", - "0x1953cab0e5bfa6d4a9bad6e05fd46c1cc6527a5a", - "0x35e9a89e43e45904684325970b2e2d258463e072" - ], - "cube": [ - "0x9d3f61338d6eb394e378d28c1fd17d5909ac6591", - "0x57eea49ec1087695274a9c4f341e414eb64328c2", - "0x040ea5c10e6ba4badb6c433a365ccc4968697230", - "0x79f1520268a20c879ef44d169a4e3812d223c6de", - "0x00f0d8595797943c12605cd59bc0d9f63d750ccf", - "0x3a1f6e3e6f26e92bb0d07841eb68f8e84f39751e", - "0xee9801669c6138e84bd50deb500827b776777d28" - ], - "elastos": [ - "0x517e9e5d46c1ea8ab6f78677d6114ef47f71f6c4", - "0x9f1d0ed4e041c503bd487e5dc9fc935ab57f9a57" - ], - "energyweb": [ - "0x6b3bd0478df0ec4984b168db0e12a539cc0c83cd" - ], - "milkomeda_a1": [ - "0xaf86e6c5fd9daf53e5100ed38bab2572609fca27", - "0xbc31960a049fe10297ed8432fb61dd734fead4ea", - "0x32564ae38e5dbf316958ce25a6ad2a2249ebcc2d", - "0x522b61755b5ff8176b2931da7bf1a5f9414eb710", - "0xc9baa8cfdde8e328787e29b4b078abf2dadc2055", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73", - "0x2421db204968a367cc2c866cd057fa754cb84edf", - "0x8dc0dfa2aec0d4410c8c60c5f9cd0cd37b05a06a", - "0x150d2421e09eea31beaa68b7a248700eeceda87a" - ], - "ultron": [ - "0x3a4f06431457de873b588846d139ec0d86275d54", - "0x2318bf5809a72aabadd15a3453a18e50bbd651cd", - "0xd2b86a80a8f30b83843e247a50ecdc8d843d87dd", - "0xc7cac85c1779d2b8ada94effff49a4754865e2e4", - "0x97fdd294024f50c388e39e73f1705a35cfe87656", - "0x3c4e0fded74876295ca36f62da289f69e3929cc4" - ], - "bitgert": [ - "0x0eb9036cbe0f052386f36170c6b07ef0a0e3f710", - "0xc3b730dd10a7e9a69204bdf6cb5a426e4f1f09e3", - "0x11203a00a9134db8586381c4b2fca0816476b3fd" - ], - "echelon": [ - "0xadee5159f4f82a35b9068a6c810bdc6c599ba6a8" - ], - "rei": [ - "0x2545af3d8b11e295bb7aedd5826021ab54f71630", - "0x988a631caf24e14bb77ee0f5ca881e8b5dcfcec7", - "0x8059e671be1e76f8db5155bf4520f86acfdc5561", - "0x5b07f2582d0cc26e400d56266aebb201c93560ed" - ], - "tombchain": [ - "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000", - "0x4200000000000000000000000000000000000108", - "0x4200000000000000000000000000000000000006", - "0x4200000000000000000000000000000000000101", - "0x4200000000000000000000000000000000000100", - "0x4200000000000000000000000000000000000109" - ], - "rsk": [ - "0x542fda317318ebf1d3deaf76e0b632741a7e677d", - "0x967f8799af07df1534d48a95a5c9febe92c53ae0", - "0x1d931bf8656d795e50ef6d639562c5bd8ac2b78f" - ], - "polis": [ - "0x6fc851b8d66116627fb1137b9d5fe4e2e1bea978" - ], - "kekchain": [ - "0x71ec0cb8f7dd4f4c5bd4204015c4c287fbdaa04a", - "0x54bd9d8d758ac3717b37b7dc726877a23aff1b89" - ], - "aptos": [ - "0x1::aptos_coin::AptosCoin", - "0x5e156f1207d0ebfa19a9eeff00d62a282278fb8719f4fab3a586a0a2c0fffbea::coin::T", - "0xa2eda21a58856fda86451436513b867c97eecb4ba099da5775520e0f7492e852::coin::T", - "0xae478ff7d83ed072dbc5e264250e67ef58f57c99d89b447efd8a0a2e8b2be76e::coin::T", - "0xcc8a89c8dce9693d354449f1f73e60e14e347417854f029db5bc8e7454008abb::coin::T", - "0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T", - "0x1000000fa32d122c18a6a31c009ce5e71674f22d06a581bb0a15575e6addadcc::usda::USDA", - "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC", - "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT", - "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::WETH", - "0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T", - "0x84d7aeef42d38a5ffc3ccef853e1b82e4958659d16a7de736a29c55fbbeb0114::staked_aptos_coin::StakedAptosCoin", - "0xd11107bdf0d6d7040c6c0bfbdecb6545191fdf13e8d8d259952f53e1713f61b5::staked_coin::StakedAptos", - "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::BnbCoin", - "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::BusdCoin", - "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::UsdcCoin", - "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::UsdtCoin", - "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::DaiCoin", - "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::WethCoin", - "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::WbtcCoin" - ], - "dogechain": [ - "0xb7ddc6414bf4f5515b52d8bdd69973ae205ff101", - "0x7b4328c127b85369d9f82ca0503b000d09cf9180", - "0x765277eebeca2e31912c9946eae1021199b39c61", - "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", - "0xb44a9b6905af7c801311e8f4e76932ee959c663c", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "0xf27ee99622c3c9b264583dacb2cce056e194494f", - "0x97513e975a7fa9072c72c92d8000b0db90b163c5", - "0x332730a4f6e03d9c55829435f10360e13cfa41ff", - "0xa649325aa7c5093d12d6f98eb4378deae68ce23f", - "0xb12c13e66ade1f72f71834f2fc5082db8c091358", - "0xdc42728b0ea910349ed3c6e1c9dc06b5fb591f98", - "0x85c2d3bebffd83025910985389ab8ad655abc946", - "0xb3306f03595490e5cc3a1b1704a5a158d3436ffc", - "0x9f4614e4ea4a0d7c4b1f946057ec030bee416cbb", - "0x7f8e71dd5a7e445725f0ef94c7f01806299e877a", - "0xd0c6179c43c00221915f1a61f8ec06a5aa32f9ec", - "0x10d70831f9c3c11c5fe683b2f1be334503880db6", - "0x1fc532187b4848d2f9c564531b776a4f8e11201d", - "0x7264610a66eca758a8ce95cf11ff5741e1fd0455", - "0xbfbb7b1d22ff521a541170cafe0c9a7f20d09c3b", - "0x1df5c9b7789bd1416d005c15a42762481c95edc2" - ], - "canto": [ - "0x826551890dc65655a0aceca109ab11abdbd7a07b", - "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", - "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", - "0x4e71a2e537b7f9d9413d3991d37958c0b5e1e503", - "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", - "0xeceeefcee421d8062ef8d6b4d814efe4dc898265", - "0x7264610a66eca758a8ce95cf11ff5741e1fd0455" - ], - "ontology_evm": [ - "0xd8bc24cfd45452ef2c8bc7618e32330b61f2691b" - ], - "algorand": [ - "1", - "163650", - "312769", - "2751733", - "6547014", - "27165954", - "31566704", - "137020565", - "137594422", - "226701642", - "230946361", - "239444645", - "283820866", - "287867876", - "297995609", - "300208676", - "342889824", - "386192725", - "386195940", - "403499324", - "441139422", - "444035862", - "463554836", - "465865291", - "470842789", - "511484048", - "559219992", - "571576867", - "607591690", - "657291910", - "663905154", - "684649988", - "692085161", - "700965019", - "724480511", - "744665252", - "792313023", - "793124631", - "841126810", - "871930188" - ], - "shiden": [ - "0x0f933dc137d21ca519ae4c7e93f87a4c8ef365ef", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "0x735abe48e8782948a37c7765ecb76b98cde97b0f", - "0x722377a047e89ca735f09eb7cccab780943c4cb4", - "0xb4bca5955f26d2fa6b57842655d7acf2380ac854", - "0x765277eebeca2e31912c9946eae1021199b39c61", - "0x332730a4f6e03d9c55829435f10360e13cfa41ff", - "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a" - ], - "tezos": [ - "tezos", - "KT1UpeXdK6AJbX58GJ92pLZVCucn2DR8Nu4b", - "KT1VYsVfmobT7rsMVivvZ4J8i3bPiqz12NaH", - "KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b", - "KT1SjXiUX63QvdNMcM2m492f7kuf8JxXRLp4", - "KT1Ha4yFVeyzw6KRAdkzq6TxDHB97KG4pZe8", - "KT1JkoE42rrMBP9b2oDhbx6EUr26GcySZMUH", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-19", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-17", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-11", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-10", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-1", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-20", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-5", - "KT19DUSZw7mfeEATrbWVPHRrWNVbNnmfFAE6", - "KT1TgmD7kXQzofpuc9VbTRMdZCS2e6JDuTtc", - "KT1TwzD6zV3WeJ39ukuqxcfK2fJCnhvrdN1X", - "KT19at7rQUvyjxnZ2fBv7D9zc8rkyG7gAoU8", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ", - "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-18", - "KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV", - "KT1LN4LPSqTMS7Sd2CJw4bbDGRkMv2t68Fy9", - "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW", - "KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn", - "KT1XRPEPXBZK25R3HTZP2O1X7XDMMMFOCKNW-0", - "KT1Xobej4mc6XgEjDoJoHtTKgbD1ELMvcQuL", - "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW-2", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-0", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-1", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-2", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-3", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-4", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-5", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-6", - "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-7", - "KT1XnTn74bUtxHfDtBmm2bGZAQfhPbvKWR8o", - "KT1F1mn2jbqQCJcsNgYKVAQjvenecNMY2oPK", - "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb", - "KT1ErKVqEhG9jxXgUG2KGLW3bNM7zXHX8SDF", - "KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW", - "KT1XTxpQvo7oRCqp85LikEZgAZ22uDxhbWJv", - "KT1A5P4ejnLix13jtadsfV9GCnXLMNnab8UT", - "KT1LRboPna9yQY9BrjtQYDS1DVxhKESK4VVd", - "KT1REEb5VxWRjcHm5GzDMwErMmNFftsE5Gpf", - "KT1AEfeckNbdEYwaMKkytBwPJPycz7jdSGea", - "KT1BB1uMwVvJ1M3vVHXWALs1RWdgTp1rnXTR", - "KT19y6R8x53uDKiM46ahgguS6Tjqhdj2rSzZ" - ], - "hpb": [ - "0xbe05ac1fb417c9ea435b37a9cecd39bc70359d31" - ], - "godwoken": [ - "0xe934f463d026d97f6ce0a10215d0ac4224f0a930", - "0xc3b946c53e2e62200515d284249f2a91d9df7954", - "0xa21b19d660917c1de263ad040ba552737cfcef50", - "0x07a388453944bb54be709ae505f14aeb5d5cbb2c", - "0x5c30d9396a97f2279737e63b2bf64cc823046591", - "0x7818fa4c71dc3b60049fb0b6066f18ff8c720f33", - "0x3f8d2b24c6fa7b190f368c3701ffcb2bd919af37" - ], - "godwoken_v1": [ - "0xc296f806d15e97243a08334256c705ba5c5754cd", - "0x7538c85cae4e4673253ffd2568c1f1b48a71558a", - "0x9e858a7aaedf9fdb1026ab1f77f627be2791e98a", - "0xbadb9b25150ee75bb794198658a4d0448e43e528", - "0x82455018f2c32943b3f12f4e59d0da2faf2257ef", - "0xef2439e020509259fa603c34b35a81ffe676cfb4", - "0xb66954619363145a05ef835547449eb9050d82f6", - "0x186181e225dc1ad85a4a94164232bd261e351c33", - "0xfa307cfdea89dc197a346c338a98ac85d517af6e", - "0xdff2facdfe47c1d5b51f18231f900949f1d5988f", - "0x53bb26dc8c5efc6c95c37155aca487d1d043436a", - "0x2c9fc6087875646112f66a3c92fef2d158faa76e", - "0x317f8d18fb16e49a958becd0ea72f8e153d25654", - "0x8e019acb11c7d17c26d334901fa2ac41c1f44d50", - "0x3c790b38f466514ffcb4230e7b2334e52b64c942", - "0xcd7bc9fc617a4f82ec1c8359d1c8610b90e3b44c", - "0x1c428a6539a40ec5bb481631266a51cd19b233b1", - "0xb44a9b6905af7c801311e8f4e76932ee959c663c", - "0x765277eebeca2e31912c9946eae1021199b39c61", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f" - ], - "waves": [ - "5UYBPpq4WoU5n4MwpFkgJnW3Fq4B1u3ukpK33ik4QerR", - "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", - "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on", - "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu", - "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ", - "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS", - "WAVES", - "2Fh9m3dNQXycHdnytEaETN3P1gDT7ij5U4HjMqQBeaqN", - "4GZH8rk5vDmMXJ81Xqfm3ovFaczqMnQ11r7aELiNxWBV", - "3KhNcHo4We1G5EWps7b1e5DTdLgWDzctc8S6ynu37KAb", - "GVxGPBtgVWMW1wHiFnfaCakbJ6sKgZgowJgW5Dqrd7JH", - "HcHacFH51pY91zjJa3ZiUVWBww54LnsL4EP3s7hVGo9L", - "4YmM7mj3Av4DPvpNpbtK4jHbpzYDcZuY6UUnYpqTbzLj", - "6QUVF8nVVVvM7do7JT2eJ5o5ehnZgXUg13ysiB9JiQrZ", - "7TMu26hAs7B2oW6c5sfx45KSZT7GQA3TZNYuCav8Dcqt", - "E4rss7qLUcawCvD2uMrbLeTMPGkX15kS3okWCbUhLNKL", - "HLckRcg7hJ3Syf3PrGftFijKqQMJipf81WY3fwvHCJbe", - "8zUYbdB8Q6mDhpcXYv52ji8ycfj4SDX4gJXS7YY3dA4R", - "8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1", - "47cyc68FWJszCWEwMWVsD9CadjS2M1XtgANuRGbEW8UH", - "2bbGhKo5C31iEiB4CwGuqMYwjD7gCA9eXmm51fe2v8vT", - "BLRxWVJWaVuR2CsCoTvTw2bDZ3sQLeTbCofcJv7dP5J4", - "A1uMqYTzBdakuSNDv7CruWXP8mRZ4EkHwmip2RCauyZH", - "2thtesXvnVMcCnih9iZbJL3d2NQZMfzENJo8YFj6r5jU", - "2GBgdhqMjUPqreqPziXvZFSmDiQVrxNuGxR1z7ZVsm4Z", - "Aug9ccbPApb1hxXSue8fHuvbyMf1FV1BYBtLUuS5LZnU", - "ATQdLbehsMrmHZLNFhUm1r6s14NBT5JCFcSJGpaMrkAr", - "8YyrMfuBdZ5gtMWkynLTveRvGb6LJ4Aff9rpz46UUMW", - "EfwRV6MuUCGgAUchdsF4dDFnSpKrDW3UYshdaDy4VBeB", - "5zoDNRdwVXwe7DveruJGxuJnqo7SYhveDeKb8ggAuC34", - "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p", - "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8", - "6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g", - "Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT", - "7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg", - "9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y", - "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J", - "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk", - "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ" - ], - "songbird": [ - "0x02f0826ef6ad107cfc861152b32b52fd11bab9ed", - "0x70ad7172ef0b131a1428d0c1f66457eb041f2176", - "0xc348f894d0e939fe72c467156e6d7dcbd6f16e21" - ], - "energi": [ - "0x7a86173daa4fda903c9a4c0517735a7d34b9ec39", - "0xa55f26319462355474a9f2c8790860776a329aa4" - ], - "nahmii": [ - "0x4200000000000000000000000000000000000006", - "0x595dba438a1bf109953f945437c1584319515d88" - ], - "curio": [ - "0x134ebab7883dfa9d04d20674dd8a8a995fb40ced" - ], - "gochain": [ - "0xcc237fa0a4b80ba47992d102352572db7b96a6b5", - "0x97a19ad887262d7eca45515814cdef75acc4f713", - "0x67bbb47f6942486184f08a671155fcfa6cad8d71" - ], - "smartbch": [ - "0x3743ec0673453e5009310c727ba4eaf7b3a1cc04", - "0x0b00366fbf7037e9d75e4a569ab27dab84759302", - "0x7b2b3c5308ab5b2a1d9a94d20d35ccdf61e05b72", - "0x24d8d5cbc14fa6a740c3375733f0287188f8df3b", - "0xbc2f884680c95a02cea099da2f524b366d9028ba", - "0x265bd28d79400d55a1665707fa14a72978fa6043" - ], - "palm": [ - "0x4c1f6fcbd233241bf2f4d02811e3bf8429bc27b8", - "0x726138359c17f1e56ba8c4f737a7caf724f6010b" - ], - "syscoin": [ - "0xd3e822f3ef011ca5f17d82c956d952d8d7c3a1bb", - "0x2bf9b864cdc97b08b6d79ad4663e71b8ab65c45c", - "0x7c598c96d02398d89fbcb9d41eab3df0c16f227d", - "0x922d641a426dcffaef11680e5358f34d97d112e1" - ], - "vision": [ - "0x1db6cdc620388a0b6046b20cd59503a0839adcff", - "0x4dE4B92C12dD4584873e72447573382C41da5597", - "0x9261Bb697FE632dd4746c78406E955123085Bf4C", - "0xf6515Ce2ab3482C84Daaef961793bdFa3266b8ad", - "0x79ffbc4fff98b821d59dbd7b33f91a2783006b6f" - ], - "kava": [ - "0xc86c7c0efbd6a49b35e8714c5f59d99de09a225b", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "0xb44a9b6905af7c801311e8f4e76932ee959c663c", - "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "0x765277eebeca2e31912c9946eae1021199b39c61", - "0x7c598c96d02398d89fbcb9d41eab3df0c16f227d", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0x332730a4f6e03d9c55829435f10360e13cfa41ff", - "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a", - "0xc13791da84f43525189456cfe2026c60d3b7f706", - "0x472402d47da0587c1cf515dafbafc7bce6223106", - "0xeb466342c4d449bc9f53a865d5cb90586f405215", - "0x7f5373ae26c3e8ffc4c77b7255df7ec1a9af52a6", - "0x5c7e299cf531eb66f2a1df637d37abb78e6200c7", - "0xa0eeda2e3075092d66384fe8c91a1da4bca21788", - "0xdb0e1e86b01c4ad25241b1843e407efc4d615248", - "0xea616011e5ac9a5b91e22cac59b4ec6f562b83f9" - ], - "sx": [ - "0xaa99be3356a11ee92c3f099bd7a038399633566f", - "0xa173954cc4b1810c0dbdb007522adbc182dab380", - "0xe2aa35c2039bd0ff196a6ef99523cc0d3972ae3e", - "0xfa6f64dfbad14e6883321c2f756f5b22ff658f9c", - "0x53813cd4acd7145a716b4686b195511fa93e4cb7", - "0x7dc31a2fcbfbad1ed4519111fd33f78316bcbc81" - ], - "meter": [ - "0x5729cb3716a315d0bde3b5e489163bf8b9659436", - "0x228ebbee999c6a7ad74a6130e81b12f9fe237ba3", - "0x160361ce13ec33c993b5cca8f62b6864943eb083", - "0xd86e243fc0007e6226b07c9a50c9d70d78299eb5", - "0x6abaedab0ba368f1df52d857f24154cc76c8c972", - "0x24aa189dfaa76c671c279262f94434770f557c35", - "0x75fd6f7edcc5e7a8100ead3d29ccd844153ef0f3", - "0x5fa41671c48e3c951afc30816947126ccc8c162e" - ], - "callisto": [ - "0xf5ad6f6edec824c7fd54a66d241a227f6503ad3a", - "0xbf6c50889d3a620eb42c0f188b65ade90de958c4", - "0xccc766f97629a4e14b3af8c91ec54f0b5664a69f", - "0xcc208c32cc6919af5d8026dab7a3ec7a57cd1796", - "0xccde29903e621ca12df33bb0ad9d1add7261ace9", - "0x9fae2529863bd691b4a7171bdfcf33c7ebb10a65" - ], - "thundercore": [ - "0x0000000000000000000000000000000000000000", - "0x413cefea29f2d07b8f2acfa69d92466b9535f717", - "0x4f3c8e20942461e2c3bdd8311ac57b0c222f2b82", - "0x6576bb918709906dcbfdceae4bb1e6df7c8a1077", - "0x22e89898a04eaf43379beb70bf4e38b1faf8a31e", - "0xbeb0131d95ac3f03fd15894d0ade5dbf7451d171" - ], - "conflux": [ - "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b", - "0x1f545487c62e5acfea45dcadd9c627361d1616d8", - "0xa47f43de2f9623acb395ca4905746496d2014d57", - "0x6963efed0ab40f6c3d7bda44a05dcf1437c44372 ", - "0xfe97e85d13abd9c1c33384e796f10b73905637ce" - ], - "muuchain": [ - "0x875358f6194d7c622d6355455f3137cceb2955c4" - ], - "iotex": [ - "0xa00744882684c3e4747faefd68d283ea44099d03", - "0x3fe04320885e6124231254c802004871be681218", - "0xe1ce1c0fa22ec693baca6f5076bcdc4d0183de1c", - "0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1", - "0x3cdb7c48e70b854ed2fa392e21687501d84b3afc", - "0x3b2bf2b523f54c4e454f08aa286d03115aff326c", - "0xc04da3a99d17135857bb937d2fbb321d3b6c6a81", - "0x42c9255d5e522e83b16ea11a3ba04c2d3afca079", - "0x037346e5a5722957ac2cab6ceb8c74fc18cea91d", - "0x84abcb2832be606341a50128aeb1db43aa017449", - "0xacee9b11cd4b3f57e58880277ac72c8c41abe4e4", - "0x62a9d987cbf4c45a550deed5b57b200d7a319632", - "0x1cbad85aa66ff3c12dc84c5881886eeb29c1bb9b", - "0xd6070ae98b8069de6b494332d1a1a81b6179d960", - "0xec690cdd448e3cbb51ed135df72301c3265a8f80", - "0x4d7b88403aa2f502bf289584160db01ca442426c", - "0x0258866edaf84d6081df17660357ab20a07d0c80", - "0xc7b93720f73b037394ce00f954f849ed484a3dea", - "0x17df9fbfc1cdab0f90eddc318c4f6fcada730cf2", - "0x4752456e00def6025c77b55a88a2f8a1701f92f9", - "0x490cfbf9b9c43633ddd1968d062996227ef438a9", - "0x97e6c48867fdc391a8dfe9d169ecd005d1d90283", - "0x86702a7f8898b172de396eb304d7d81207127915", - "0x8e66c0d6b70c0b23d39f4b21a1eac52bba8ed89a", - "0x176cb5113b4885b3a194bd69056ac3fe37a4b95c", - "0x99b2b0efb56e62e36960c20cd5ca8ec6abd5557a" - ], - "ronin": [ - "0xe514d9deb7966c8be0ca922de8a064264ea6bcd4", - "0x97a9107c1793bc407d6f527b77e7fff4d812bece", - "0xa8754b9fa15fc18bb59458815510e40a12cd2014", - "0xc99a6a985ed2cac1ef41640596c5a5f9f4e19ef5", - "0x0b7007c13325c48911f73a2dad5fa5dcbf808adc" - ], - "arbitrum_nova": [ - "0x722e8bdd2ce80a4422e880164f2079488e115365", - "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - "0x52484e1ab2e2b22420a25c20fa49e173a26202cd", - "0x750ba8b76187092b0d1e87e28daaf484d1b5273b" - ], - "ethpow": [ - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0x0c9f28fbdfd79f7c00b805d8c63d053c146d282c", - "0x7bf88d2c0e32de92cdaf2d43ccdc23e8edfd5990", - "0x11bbb41b3e8baf7f75773db7428d5acee25fec75", - "0x8a496486f4c7cb840555bc2be327cba1447027c3", - "0x5df101f56ea643e06066392d266e9f4366b9186d", - "0xaf3ccfd9b59b36628cc2f659a09d6440795b2520", - "0x312b15d6d531ea0fe91ddd212db8c0f37e4cc698", - "0x2ad7868ca212135c6119fd7ad1ce51cfc5702892", - "0x34a9c05b638020a07bb153bf624c8763bf8b4a86", - "0xbd1563046a90f18127fd39f3481fd8d6ab22877f", - "0xf61eb8999f2f222f425d41da4c2ff4b6d8320c87", - "0x4bbd68d8b1f25ae7b460e3347c637fe9e7338e0c", - "0x25de68ef588cb0c2c8f3537861e828ae699cd0db", - "0x0b35d852dcb8b59eb1e8d3182ebad4e96e2df8f0" - ], - "xdc": [ - "0xd4b5f10d61916bd6e0860144a91ac658de8a1437", - "0x951857744785e80e2de051c32ee7b25f9c458c42", - "0x36726235dadbdb4658d33e62a249dca7c4b2bc68", - "0x5d5f074837f5d4618b3916ba74de1bf9662a3fed", - "0xd04275e2fd2875beaade6a80b39a75d4fe267df6", - "0xff7412ea7c8445c46a8254dfb557ac1e48094391" - ], - "kardia": [ - "0xaf984e23eaa3e7967f3c5e007fbe397d8566d23d", - "0x551a5dcac57c66aa010940c2dcff5da9c53aa53b", - "0x92364ec610efa050d296f1eeb131f2139fb8810e" - ], - "empire": [ - "0xc61a71c75ed4742dcae74b8cac27a37d46fc6751" - ], - "boba_bnb": [ - "0x9f98f9f312d23d078061962837042b8918e6aff2", - "0x4200000000000000000000000000000000000006", - "0x4200000000000000000000000000000000000023" - ], - "boba_avax": [ - "0x126969743a6d300bab08f303f104f0f7dbafbe20", - "0x26c319b7b2cf823365414d082698c8ac90cbba63", - "0x4200000000000000000000000000000000000023" - ], - "omax": [ - "0xfebabc6a9b2ec46d6357879b8bf39b593f11a5b9" - ], - "wemix": [ - "0x7d72b22a74a216af4a002a1095c8c707d6ec1c5f", - "0x8e81fcc2d4a3baa0ee9044e0d7e36f59c9bba9c1", - "0x461d52769884ca6235b685ef2040f47d30c94eb5", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d" - ], - "tlchain": [ - "0x422b6cdf97c750a0edcddc39c88f25379e59e96e" - ], - "zeniq": [ - "0x74dc1c4ec10abe9f5c8a3eabf1a90b97cdc3ead8" - ], - "dexit": [ - "0x414b8baf9950c87804cf7e23bb43a58ae7e1e202" - ], - "step": [ - "0xb58a9d5920af6ac1a9522b0b10f55df16686d1b6", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", - "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73" - ], - "flare": [ - "0x1d80c49bbbcd1c0911346656b529df9e5c2f783d" - ], - "ibc": [ - "CA1261224952DF089EFD363D8DBB30A8AB6D8CD181E60EE9E68E432F8DE14FE3", - "5A76568E079A31FA12165E4559BA9F1E9D4C97F9C2060B538C84DCD503815E30", - "6F4968A73F90CF7DE6394BF937D6DF7C7D162D74D839C13F53B41157D315E05F", - "C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9", - "4627AD2524E3E0523047E35BB76CC90E37D9D57ACF14F0FCBCEB2480705F3CB8", - "C950356239AD2A205DE09FDF066B1F9FF19A7CA7145EA48A5B19B76EE47E52F7", - "DBF5FA602C46392DE9F4796A0FC7D02F3A8A3D32CA3FAA50B761D4AA6F619E95", - "CD01034D6749F20AAC5330EF4FD8B8CA7C40F7527AB8C4A302FBD2A070852EE1", - "F1806958CA98757B91C3FA1573ECECD24F6FA3804F074A6977658914A49E65A3", - "BFF0D3805B50D93E2FA5C0B2DDF7E0B30A631076CD80BC12A48C0E95404B4A41", - "11F940BCDFD7CFBFD7EDA13F25DA95D308286D441209D780C9863FD4271514EB", - "295548A78785A1007F232DE286149A6FF512F180AF5657780FC89C009E2C348F", - "27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2", - "961FA3E54F5DCCA639F37A7C45F7BBE41815579EF1513B5AFBEFCFEB8F256352", - "799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098", - "B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395", - "DA59C009A0B3B95E0549E6BF7B075C8239285989FF457A8EDDBB56F10B2A6986", - "0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B", - "47BD209179859CDE4A2806763D7189B6E6FE13A17880FE2B42DE1E6C1E329E23", - "EA7DF7F779C7F14E07172E5713E07356B55F01496CA649DDE46CF8FBF1A8466D", - "F3AA7EF362EC5E791FE78A0F4CCC69FEE1F9A7485EB1A8CAB3F6601C00522F10", - "EFF323CC632EC4F747C61BCE238A758EFDB7699C3226565F7C20DA06509D59A5", - "167E3D88D71B7D2F6308D3EF93FC3DD51932B2D9672D72B71418F61CBC5F5717", - "B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C", - "A358D7F19237777AF6D8AD0E0F53268F8B18AE8A53ED318095C14D6D7F3B2DB5", - "1B38805B1C75352B28169284F96DF56BDEBD9E8FAC005BDCC8CF0378C82AA8E7", - "4F393C3FCA4190C0A6756CE7F6D897D5D1BE57D6CCB80D0BC87393566A7B6602", - "987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4", - "3607EB5B5E64DD1C0E12E07F077FF470D5BC4706AFCBC98FE1BA960E5AE4CE07", - "EA3E1640F9B1532AB129A571203A0B9F789A7F14BB66E350DCBFA18E1A1931F0", - "9EC8A1701813BB7B73BFED2496009ABB2C8BF187E6CDFA788D77F68E08BC05CD", - "F2331645B9683116188EF36FC04A809C28BD36B54555E8705A37146D0182F045", - "CBF67A2BCF6CAE343FDF251E510C8E18C361FC02B23430C121116E0811835DEF", - "B3504E092456BA618CC28AC671A71FB08C6CA0FD0BE7C8A5B5A3E2DD933CC9E4", - "E1616E7C19EA474C565737709A628D6F8A23FF9D3E9A7A6871306CF5E0A5341E", - "903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E", - "C01154C2547F4CB10A985EA78E7CD4BA891C1504360703A37E1D7043F06B5E1F", - "E7807A46C0B7B44B350DA58F51F278881B863EC4DCA94635DAB39E52C30766CB", - "16618B7F7AC551F48C057A13F4CA5503693FBFF507719A85BC6876B8BD75F821", - "B786E7CBBF026F6F15A8DA248E0F18C62A0F7A70CB2DABD9239398C8B5150ABB", - "624BA9DD171915A2B9EA70F69638B2CEA179959850C1A586F6C485498F29EDD4", - "3FDD002A3A4019B05A33D324B2F29748E77AF501BEA5C96D1F28B2D6755F9F25", - "B37E4D9FB5B30F3E1E20A4B2DE2A005E584C5C822C44527546556AE2470B4539", - "EAC38D55372F38F1AFD68DF7FE9EF762DCF69F26520643CF3F9D292A738D8034", - "DADB399E742FCEE71853E98225D13E44E90292852CD0033DF5CABAB96F80B833" - ], - "starknet": [ - "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", - "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", - "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac", - "0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", - "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7" - ], - "ton": [ - "0x0000000000000000000000000000000000000000", - "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c", - "Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF", - "EQDQoc5M3Bh8eWFephi9bClhevelbZZvWhkqdo80XuY_0qXv", - "EQAW42HutyDem98Be1f27PoXobghh81umTQ-cGgaKVmRLS7-", - "EQC61IQRl0_la95t27xhIpjxZt32vl1QQVF2UgTNuvD18W-4", - "EQC_1YoM8RBixN95lz7odcF3Vrkc_N8Ne7gQi7Abtlet_Efi" - ], - "defichain": [ - "DFI", - "DUSD", - "ETH", - "BTC", - "USDC", - "USDT" - ], - "elrond": [ - "0x0000000000000000000000000000000000000000", - "AERO-458bbf", - "RIDE-7d18e9", - "ZPAY-247875", - "UTK-2f80e9", - "KOSON-5dd4fa", - "ASH-a642d1", - "BSK-baa025", - "BHAT-c1fde3", - "CRT-52decf", - "CTP-298075", - "CHECKR-60108b", - "CYC-b4ed61", - "LPAD-84628f", - "EVLD-43f56f", - "FITY-73f8fc", - "ISET-84e55e", - "ITHEUM-df6f26", - "erd1hmfwpvsqn8ktzw3dqd0ltpcyfyasgv8mr9w0qecnmpexyp280y8q47ca9d", - "KRO-df97ec", - "LAND-40f26f", - "QWT-46ac01", - "SUPER-507aa6", - "TLC-1a2357", - "UPARK-982dd6", - "erd1qqqqqqqqqqqqqpgq3ahw8fctzfnwgvq2g4hjsqzkkvgl9ksr2jps646dnj", - "WEGLD-bd4d79", - "MEX-455c57" - ], - "bitindi": [ - "0x15E162205421dc3A47b15A1A740FbF5EAbB77921" - ], - "core": [ - "0x191E94fa59739e188dcE837F7f6978d84727AD01", - "0x900101d06a7426441ae63e9ab3b9b0f63be145f1", - "0xa4151b2b3e269645181dccf2d426ce75fcbdeca9", - "0x40375c92d9faf44d2f9db9bd9ba41a3317a2404f" - ], - "crab": [ - "0x2d2b97ea380b0185e9fdf8271d1afb5d2bf18329" - ], - "lung": [ - "0xf51666bcb4b787df919395258fb1d9556f4e357b" - ], - "loop": [ - "0x3936D20a39eD4b0d44EaBfC91757B182f14A38d5" - ], - "rpg": [ - "0x8bb3887ab4fec66eb9aadd7836b6944215008355", - "0x71d9cfd1b7adb1e8eb4c193ce6ffbe19b4aee0db" - ], - "map": [ - "0x13cb04d4a5dfb6398fc5ab005a6c84337256ee23", - "0x9f722b2cb30093f766221fd0d37964949ed66918", - "0x05ab928d446d8ce6761e368c8e7be03c3168a9ec", - "0x35bf4004c3fc9f509259d4942da6bae3669e1db1" - ], - "bone": [ - "0xcda1fa23ff3b9b7172be82237bf662efb69437e9" - ], - "era": [ - "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", - "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4" - ], - "polygon_zkevm": [ - "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9", - "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035" - ], - "eos_evm": [ - "0xc00592aA41D32D137dC480d9f6d0Df19b860104F", - "0x922d641a426dcffaef11680e5358f34d97d112e1", - "0x765277eebeca2e31912c9946eae1021199b39c61", - "0xfa9343c3897324496a05fc75abed6bac29f8a40f", - "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73" - ], - "oas": [ - "0x5200000000000000000000000000000000000001" - ], - "enuls": [ - "0x217dffF57E3b855803CE88a1374C90759Ea071bD" - ] -} + "ethereum": { + "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "USDC": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "LINK": "0x514910771af9ca656af840dff83e8264ecf986ca", + "UNI": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "AAVE": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", + "WBTC": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "SNX": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + "YFI": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", + "DAI": "0x6b175474e89094c44da98b954eedeac495271d0f", + "XMON": "0x3aada3e213abf8529606924d8d1c55cbdc70bf74", + "CONV": "0xc834fa996fa3bec7aad3693af486ae53d8aa8b50", + "cvxFXS": "0xfeef77d3f69374f66429c91d732a244f074bdf74", + "BNB": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", + "BXH": "0xeb637a9ab6be83c7f8c79fdaa62e1043b65534f0", + "tBTC": "0x18084fba666a33d37592fa2633fd49a74dd93a88", + "kUSD": "0xef779cf3d260dbe6177b30ff08b10db591a6dd9c", + "fUSD": "0x42ef9077d8e79689799673ae588e046f8832cb95", + "tWETH": "0xd3d13a578a53685b4ac36a1bab31912d2b2a2f36", + "tFRAX": "0x94671a3cee8c7a12ea72602978d1bb84e920efb2", + "tGAMMA": "0x2fc6e9c1b2c07e18632efe51879415a580ad22e1", + "tSNX": "0xeff721eae19885e17f5b80187d6527aad3ffc8de", + "tAPW": "0xdc0b02849bb8e0f126a216a2840275da829709b0", + "tTCR": "0x15a629f0665a3eb97d7ae9a7ce7abf73aeb79415", + "tFOX": "0x808d3e6b23516967ceae4f17a5f9038383ed5311", + "tSUSHI": "0xf49764c9c5d644ece6ae2d18ffd9f1e902629777", + "tALCX": "0xd3b5d9a561c293fb42b446fe7e237daa9bf9aa84", + "tFXS": "0xadf15ec41689fc5b6dca0db7c53c9bfe7981e655", + "XSTUSD": "0xc7d9c108d4e1dd1484d3e2568d7f74bfd763d356", + "stkDYDX": "0x65f7ba4ec257af7c55fd5854e5f6356bbd0fb8ec", + "USX": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + "TIC": "0x2163383c1f4e74fe36c50e6154c7f18d9fd06d6f", + "sJPY": "0xf6b1c627e95bfc3c1b4c9b825a032ff0fbf3e07d", + "NEUY": "0xa80505c408c4defd9522981cd77e026f5a49fe63", + "sGBP": "0x97fe22e7341a0cd8db6f6c021a24dc8f4dad855f", + "sCHF": "0x0f83287ff768d1c1e17a42f44d644d7f22e8ee1d", + "EURN": "0x9fcf418b971134625cdf38448b949c8640971671", + "wibBTC": "0x8751d4196027d4e6da63716fa7786b5174f04c15", + "ARDN": "0xb1c9bc94acd2fae6aabf4ffae4429b93512a81d2", + "PAD": "0x5067006f830224960fb419d7f25a3a53e9919bb0", + "TOKE": "0x2e9d63788249371f1dfc918a52f8d799f4a38c94", + "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", + "maDAI": "0x36f8d0d0573ae92326827c4a82fe4ce4c244cab6" + }, + "fantom": { + "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", + "USDC": "0x04068da6c83afcfa0e13ba15a6696662335d5b75", + "fUSDT": "0x049d68029688eabf473097a2fc38ef61633a3c7a", + "DAI": "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", + "MIM": "0x82f0b8b456c1a451378467398982d4834b6829c1", + "FETH": "0x658b0c7613e890ee50b8c4bc6a3f41ef411208ad", + "mooFantomBIFI": "0xbf07093ccd6adfc3deb259c557b61e94c1f66945", + "mooScreamETH": "0x0a03d2c1cfca48075992d810cc69bd9fe026384a", + "mooScreamWBTC": "0x97927abfe1abbe5429cbe79260b290222fc9fbba", + "mooScreamLINK": "0x6dfe2aaea9daadadf0865b661b53040e842640f8", + "mooScreamDAI": "0x920786cff2a6f601975874bb24c63f0115df7dc8", + "mooScreamFTM": "0x49c68edb7aebd968f197121453e41b8704acde0c", + "mooBinSPIRIT": "0x7345a537a975d9ca588ee631befddfef34fd5e8f", + "renBTC": "0xdbf31df14b66535af65aac99c32e9ea844e14501", + "USDL_Stablecoin": "0x4a89338a2079a01edbf5027330eac10b615024e5", + "Fantom_L": "0xc0d9784fdba39746919bbf236eb73bc015fd351d", + "cUSD": "0xe3a486c1903ea794eed5d5fa0c9473c7d7708f40", + "SINGLE": "0x8cc97b50fe87f31770bcdcd6bc8603bc1558380b", + "anyUSDC": "0x95bf7e307bc1ab0ba38ae10fc27084bc36fcd605", + "nUSD": "0xc5cd01e988cd0794e05ab80f2bcdbdf13ce08bd3", + "nICE": "0x7f620d7d0b3479b1655cefb1b0bc67fb0ef4e443" + }, + "csc": { + "WCET": "0xe6f8988d30614afe4f7124b76477add79c665822", + "USDT": "0x398dca951cd4fc18264d995dcd171aa5debda129" + }, + "europa": { + "USDP": "0x73d22d8a2D1f59Bf5Bcf62cA382481a2073FAF58", + "WBTC": "0xcb011E86DF014a46F4e3AC3F3cbB114A4EB80870", + "SKL": "0xE0595a049d02b7674572b0d59cd4880Db60EDC50", + "ETHC": "0xD2Aaa00700000000000000000000000000000000", + "USDT": "0x1c0491E3396AD6a35f061c62387a95d7218FC515", + "USDC": "0x5F795bb52dAC3085f578f4877D450e2929D2F13d", + "DAI": "0xD05C4be5f3be302d376518c9492EC0147Fa5A718" + }, + "avax": { + "WAVAX": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + "USDC": "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", + "USDT_e": "0xc7198437980c041c805a1edcba50c1ce5db95118", + "USDt": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", + "BTC_b": "0x152b9d0fdc40c096757f570a51e494bd4b943e50", + "USDC_e": "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", + "WETH_e": "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", + "JOE": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", + "ZERO": "0x008e26068b3eb40b443d3ea88c1ff99b789c10f7", + "qiAVAX": "0xaf2c034c764d53005cc6cbc092518112cbd652bb", + "xJOE": "0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33", + "LVTX": "0x574679ec54972cf6d705e0a71467bb5bb362919d", + "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", + "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", + "mooAaveAVAX": "0x1b156c5c75e9df4caab2a5cc5999ac58ff4f9090", + "mooAaveUSDC_e": "0xd795d70ec3c7b990ffed7a725a18be5a9579c3b9", + "mooAaveUSDT_e": "0xb6767518b205ea8b312d2ef4d992a2a08c2f2416", + "mooAaveDAI_e": "0xaf9f33df60ca764307b17e62dde86e9f7090426c", + "mooPangolinV2PNG": "0x808d5f0a62336917da14fa9a10e9575b1040f71c", + "sdav3CRV": "0x0665ef3556520b21368754fb644ed3ebf1993ad4", + "BXH": "0x90a424754ad0d72cebd440faba18cdc362bfe70a", + "mDAI": "0x9debca6ea3af87bf422cea9ac955618ceb56efb4" + }, + "bsc": { + "WBNB": "0xea7a82e0bc636667ab5c65623cd1438370620c3e", + "BUSD": "0xe9e7cea3dedca5984780bafc599bd69add087d56", + "USDC": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + "USDT": "0x55d398326f99059ff775485246999027b3197955", + "ETH": "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + "AURA": "0x23c5d1164662758b3799103effe19cc064d897d6", + "C98": "0xaec945e04baf28b135fa7c640f624f8d90f1c3a6", + "MOCHI": "0x055dab90880613a556a5ae2903b2682f8a5b8d27", + "bMOCHI": "0x2d0e75b683e8b56243b429b24f2b08bcc1ffd8da", + "NMX": "0xd32d01a43c869edcd1117c640fbdcfcfd97d9d65", + "PinkS": "0x702b3f41772e321aaccdea91e1fcef682d21125d", + "Warden": "0x0feadcc3824e7f3c12f40e324a60c23ca51627fc", + "WSPP": "0x46d502fac9aea7c5bc7b13c8ec9d02378c33d36f", + "ABS": "0xf83849122f769a0a7386df183e633607c890f6c0", + "ZERO": "0x1f534d2b1ee2933f1fdf8e4b63a44b2249d77eaf", + "AFP": "0x9a3321e1acd3b9f6debee5e042dd2411a1742002", + "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", + "PAX": "0xb7f8cd00c5a06c0537e2abff0b58033d02e5e094", + "2030Floki": "0xa35d95872d8eb056eb2cbd67d25124a6add7455e", + "BTCBR": "0x0cf8e180350253271f4b917ccfb0accc4862f262", + "DFL": "0x6ded0f2c886568fb4bb6f04f179093d3d167c9d7", + "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", + "USV": "0xaf6162dc717cfc8818efc8d6f46a41cf7042fcba", + "RADIO": "0x30807d3b851a31d62415b8bb7af7dca59390434a", + "MAHA": "0xce86f7fcd3b40791f63b86c3ea3b8b355ce2685b", + "BUSDUSDC_APE_LP_S": "0xbb9858603b1fb9375f6df972650343e985186ac5", + "BUSDUSDT_APE_LP_S": "0xc5fb6476a6518dd35687e0ad2670cb8ab5a0d4c5", + "valBUSD": "0xaed19dab3cd68e4267aec7b2479b1ed2144ad77f", + "valUSDC": "0xa6fdea1655910c504e974f7f1b520b74be21857b", + "valUSDT": "0x5f7f6cb266737b89f7af86b30f03ae94334b83e9", + "PAID": "0x532197ec38756b9956190b845d99b4b0a88e4ca9", + "BXH": "0x6d1b7b59e3fab85b7d3a3d86e505dd8e349ea7f3", + "SPICE": "0x42586ef4495bb512a86cf7496f6ef85ae7d69a64", + "iZi": "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", + "iUSD": "0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d", + "beltBNB": "0xa8bb71facdd46445644c277f9499dd22f6f0a30c", + "4Belt": "0x9cb73f20164e399958261c289eb5f9846f4d1404", + "beltBTC": "0x51bd63f240fb13870550423d208452ca87c44444", + "beltETH": "0xaa20e8cb61299df2357561c2ac2e1172bc68bc25", + "YGG": "0x13ab6739368a4e4abf24695bf52959224367391f", + "ibBNB": "0xd7d069493685a581d27824fc46eda46b7efc0063", + "ibBUSD": "0x7c9e73d4c71dae564d41f78d56439bb4ba87592f", + "ibUSDT": "0x158da805682bdc8ee32d52833ad41e74bb951e59", + "ibBTCB": "0x08fc9ba2cac74742177e0afc3dc8aed6961c24e7", + "ibETH": "0xbff4a34a4644a113e8200d7f1d79b3555f723afe", + "ibTUSD": "0x3282d2a151ca00bfe7ed17aa16e42880248cd3cd", + "ibALPACA": "0xf1be8ecc990cbcb90e166b71e368299f0116d421", + "aUST": "0x8b04e56a8cd5f4d465b784ccf564899f30aaf88c", + "IVN": "0x6a46d878401f46b4c7f665f065e0667580e031ec", + "1MIL": "0xa4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016", + "APYS": "0x37dfacfaeda801437ff648a1559d73f4c40aacb7", + "BRZ": "0x5b1a9850f55d9282a7c4bf23a2a21b050e3beb2f", + "jBRL": "0x316622977073bbc3df32e7d2a9b3c77596a0a603", + "AUSD": "0xdcecf0664c33321ceca2effce701e710a2d28a3f", + "deUSDC": "0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa", + "axlUSDC": "0x4268b8f0b87b6eae5d897996e6b845ddbd99adf3", + "dEPX": "0x772f317ec695ce20290b56466b3f48501ba81352", + "RAILBSC": "0x3f847b01d4d498a293e3197b186356039ecd737f", + "ankrBNB": "0xe85afccdafbe7f2b096f268e31cce3da8da2990a", + "aBNBb": "0xbb1aa6e59e5163d8722a122cd66eba614b59df0d" + }, + "polygon": { + "WMATIC": "0xfd28c7cea3c50a060cb4c0059e453c6d4dd9829d", + "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + "USDT": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + "DAI": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + "WETH": "0x6cacfaf65b1b1f9979acf463a393a112d0980982", + "MYT": "0x4535e52cdf3ab787b379b7b72b5990767e6747e4", + "MMF": "0x22a31bd4cb694433b6de19e0acc2899e553e9481", + "iZi": "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", + "DINO": "0xaa9654becca45b5bdfa5ac646c939c62b527d394", + "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", + "moUSD": "0x9fffb2f49adfc231b44ddcff3ffcf0e81b06430a", + "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", + "sUSDC_e": "0x8eb3771a43a8c45aabe6d61ed709ece652281dc9", + "RADIO": "0x613a489785c95afeb3b404cc41565ccff107b6e0", + "deUSDC": "0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa", + "YIN": "0x794baab6b878467f93ef17e2f2851ce04e3e34c8", + "mOCEAN": "0x282d8efce846a88b159800bd4130ad77443fa1a1", + "XSGD": "0x769434dca303597c8fc4997bf3dab233e961eda2", + "wTCAD": "0x6d3cc56dfc016151ee2613bdde0e03af9ba885cc", + "wTAUD": "0xe4f7761b541668f88d04fe9f2e9df10ca613aef7", + "wTGBP": "0x81a123f10c78216d32f8655eb1a88b5e9a3e9f2f", + "POP": "0xc5b57e9a1e7914fda753a88f24e5703e617ee50c", + "pLEO": "0xf826a91e8de52bc1baf40d88203e572dc2551aa3", + "pSPS": "0x28cead9e4ff96806c79f4189ef28fc61418e2216", + "rUSD": "0xfc40a4f89b410a1b855b5e205064a38fc29f5eb5", + "APYS": "0x14743e1c6f812154f7ecc980d890f0f5234103e7", + "BNB": "0x5c4b7ccbf908e64f32e12c6650ec0c96d717f03f", + "IS3USD": "0xb4d09ff3da7f9e9a2ba029cb0a81a989fd7b8f17", + "BUSD": "0x9c9e5fd8bbc25984b178fdce6117defa39d2db39", + "WORK": "0x6002410dda2fb88b4d0dc3c1d562f7761191ea80" + }, + "xdai": { + "WXDAI": "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d", + "USDC": "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83", + "GNO": "0x9c58bacc331c9aa871afd802db6379a98e80cedb", + "WETH": "0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1", + "USDT": "0x4ecaba5870353805a9f068101a40e0f32ed605c6", + "DAI": "0x44fa8e6f47987339850636f88629646662444217", + "UNI": "0x4537e328bf7e4efa29d05caea260d7fe26af9d74", + "MATIC": "0x7122d7661c4564b7c6cd4878b06766489a6028a2", + "WBTC": "0x8e5bbbb09ed1ebde8674cda39a0c169401db4252", + "ETHIX": "0xec3f3e6d7907acda3a7431abd230196cda3fbb19", + "DAI_1": "0x678df3415fc31947da4324ec63212874be5a82f8" + }, + "okexchain": { + "USDC": "0xc946daf81b08146b1c7a8da2a851ddf2b3eaaf85", + "WOKT": "0x8f8526dbfd6e38e3d8307702ca8469bae6c56c15", + "USDT": "0x382bb369d343125bfb2117af9c149795c6c65c50", + "BTCK": "0x54e4622dc504176b3bb432dccaf504569699a7ff", + "ETHK": "0xef71ca2ee68f45b9ad6f72fbdb33d707b872315c", + "OKB": "0xdf54b6c6195ea4d948d03bfd818d365cf175cfc2", + "KST": "0xab0d1578216a545532882e420a8c61ea07b00b12", + "CHE": "0x8179d97eb6488860d816e3ecafe694a4153f216c", + "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c" + }, + "heco": { + "WHT": "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f", + "BETH": "0xb6f4c418514dd4680f76d5caa3bb42db4a893acb", + "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", + "DAI_HECO": "0x3d760a45d0887dfd89a2f5385a236b29cb46ed2a", + "USDC_HECO": "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", + "COMP": "0xce0a5ca134fb59402b723412994b30e02f083842", + "lDOGE": "0x1ee8382be3007bd9249a89f636506284ddef6cc0", + "DOGE": "0x40280e26a572745b1152a54d1d44f365daa51618", + "TUSD": "0x5ee41ab6edd38cdfb9f6b4e6cf7f75c87e170d98", + "XRP": "0xa2f3c2446a3e20049708838a779ff8782ce6645a", + "ADA": "0x843af718ef25708765a8e0942f89edeae1d88df0", + "APYS": "0x90e8896b12a92d51cd213b681c2cad83a9a6bd49" + }, + "hoo": { + "wHOO": "0x3eff9d389d13d6352bfb498bcf616ef9b1beac87" + }, + "harmony": { + "JEWEL": "0x72cb10c6bfa5624dd07ef608027e366bd690048f", + "MIS": "0xd74433b187cf0ba998ad9be3486b929c76815215", + "WONE": "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", + "hMOCHI": "0x0dd740db89b9fda3baadf7396ddad702b6e8d6f5", + "xJEWEL": "0xa9ce83507d872c5e1273e745abcfda849daa654f", + "AVAX": "0xb12c13e66ade1f72f71834f2fc5082db8c091358", + "RVRS": "0xed0b4b0f0e2c17646682fc98ace09feb99af3ade", + "VIPER": "0xea589e93ff18b1a1f1e9bac7ef3e86ab62addc79" + }, + "optimism": { + "WETH": "0x121ab82b49b2bc4c7901ca46b8277962b4350204", + "BitANT": "0x5029c236320b8f15ef0a657054b84d90bfbeded3", + "FEI": "0x35d48a789904e9b15705977192e5d95e2af7f1d3", + "alUSD": "0xcb8fa9a76b8e203d8c3797bf438d8fb81ea3326a", + "FXS": "0x67ccea5bb16181e7b4109c9c2143c24a1c2205be", + "FRAX": "0x2e3d870790dc77a83dd1d18184acc7439a53f475", + "gOHM": "0x0b5740c6b4a97f90ef2f0220651cca420b868ffb", + "sUSD": "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9", + "sLINK": "0xc5db22719a06418028a40a9b5e9a7c02959d0d08", + "sETH": "0xe405de8f52ba7559f9df3c368500b6e6ae6cee49", + "USDT": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + "sBTC": "0x298b9b95708152ff6968aafd889c6586e9169f1d" + }, + "moonriver": { + "WMOVR": "0xe3c7487eb01c74b73b7184d198c7fbf46b34e5af", + "USDT": "0xb44a9b6905af7c801311e8f4e76932ee959c663c", + "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "ETH": "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", + "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", + "BEPRO": "0xcb4a593ce512d78162c58384f0b2fd6e802c2c47" + }, + "moonbeam": { + "WGLMR": "0x5f6c5c2fb289db2228d159c69621215e354218d7", + "USDC": "0x6a2d262d56735dba19dd70682b39f6be9a931d98", + "STELLA": "0x0e358838ce72d5e61e0018a2ffac4bec5f4c88d2", + "BUSD": "0x692c57641fc054c2ad6551ccc6566eba599de1ba", + "GLINT": "0xcd3b51d98478d53f4515a306be565c6eebef1d58", + "FRAX": "0x322e86852e492a7ee17f28a78c663da38fb33bfb", + "MAI": "0xdfa46478f9e5ea86d57387849598dbfb2e964b02", + "USDT": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", + "WETH": "0x6959027f7850adf4916ff5fdc898d958819e5375", + "WBTC": "0xe57ebd2d67b462e9926e04a8e33f01cd0d64346d", + "DAI": "0xc234a67a4f840e61ade794be47de455361b52413", + "MOVR": "0x1d4c2a246311bb9f827f4c768e277ff5787b7d7e", + "xcUSDT": "0xffffffffea09fb06d082fd1275cd48b191cbcd1d", + "BEPRO": "0x4edf8e0778967012d46968ceadb75436d0426f88", + "stDOT": "0xfa36fe1da08c89ec72ea1f0143a35bfd5daea108" + }, + "arbitrum": { + "WETH": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + "WBTC": "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + "DAI": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + "USDC": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + "LINK": "0xf97f4df75117a78c1a5a0dbb814af92458539fb4", + "USDT": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + "ARBY": "0x09ad12552ec45f82be90b38dfe7b06332a680864", + "MIM": "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", + "renBTC": "0xdbf31df14b66535af65aac99c32e9ea844e14501", + "XDO": "0x9ef758ac000a354479e538b8b2f01b917b8e89e7", + "DFL": "0x31635a2a3892daec7c399102676e344f55d20da7", + "FEI": "0x4a717522566c7a09fd2774ccedc5a8c43c5f9fd2", + "nUSD": "0x2913e812cf0dcca30fb28e6cac3d2dcff4497688", + "LPT": "0x289ba1701c2f088cf0faf8b3705246331cb8a839", + "APEX": "0x61a1ff55c5216b636a294a07d77c6f4df10d3b56", + "LIQD": "0x93c15cd7de26f07265f0272e0b831c5d7fab174f", + "fsGLP": "0x1addd80e6039594ee970e5872d247bf0414c8903", + "fGLP": "0x4e971a87900b931ff39d1aad67697f49835400b6", + "GMX": "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a", + "plvGLP": "0x5326e71ff593ecc2cf7acae5fe57582d6e74cff1" + }, + "fuse": { + "WFUSE": "0x0be9e53fd7edac9f859882afdda116645287c629", + "USDC": "0x620fd5fa44be6af63715ef4e65ddfa0387ad13f5", + "WETH": "0xa722c13135930332eb3d749b2f0906559d2c5b99", + "DAI": "0x94ba7a27c7a95863d1bdc7645ac2951e0cca06ba", + "USDT": "0xfadbbf8ce7d5b7041be672561bba99f79c532e10", + "KNC": "0x43b17749b246fd2a96de25d9e4184e27e09765b0", + "null": "0x0000000000000000000000000000000000000000" + }, + "evmos": { + "WEVMOS": "0xd4949664cd82660aae99bedc034a0dea8a0bd517", + "USDC": "0x51e44ffad5c2b122c8b635671fcc8139dc636e82", + "tBTC": "0x8d395affc1767141387fff45af88a074614e7ccf", + "renBTC": "0xb1a8c961385b01c3aa782fba73e151465445d319", + "ceUSDC": "0xe46910336479f254723710d57e7b683f3315b22b", + "DAI": "0x63743acf2c7cfee65a5e356a4c4a005b586fc7aa", + "USDT": "0x7ff4a56b32ee13d7d4d405887e0ea37d61ed919e", + "ceUSDT": "0xb72a7567847aba28a2819b855d7fe679d4f59846", + "WETH": "0x5842c5532b61acf3227679a8b1bd0242a41752f2", + "WBTC": "0xf80699dc594e00ae7ba200c7533a07c1604a106d", + "FRAX": "0xe03494d0033687543a80c9b1ca7d6237f2ea8bd8", + "DIFF": "0x3f75ceabcdfed1aca03257dc6bdc0408e2b4b026" + }, + "oasis": { + "WETH": "0x3223f17957ba502cbe71401d55a0db26e5f7c68f", + "ceUSDT": "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", + "USDT": "0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8", + "USDC": "0xe8a638b3b7565ee7c5eb9755e58552afc87b94dd", + "wROSE": "0x21c718c22d52d0f3a789b752d4c2fd5908a8a733", + "WROSE": "0x5c78a65ad6d0ec6618788b6e8e211f31729111ca", + "TULIP": "0x9e832cae5d19e7ff2f0d62881d1e33bb16ac9bdc", + "ceUSDC": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c" + }, + "kcc": { + "BUSD": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "KUS": "0x4a81704d8c16d9fb0d7f61b747d0b5a272badf14", + "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", + "BNB": "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", + "DAI": "0xc9baa8cfdde8e328787e29b4b078abf2dadc2055", + "WBTC": "0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0", + "ETH": "0xf55af137a98607f7ed2efefa4cd2dfe70e4253b1", + "WKCS": "0x4446fc4eb47f2f6586f9faab68b3498f86c07521", + "MJT": "0x2ca48b4eea5a731c2b54e7c3944dbdb87c0cfb6f", + "USDT": "0x0039f574ee5cc39bdd162e9a88e3eb1f111baf48", + "USDC": "0x980a5afef3d17ad98635f6c5aebcbaeded3c3430", + "BTCK": "0xfa93c12cd345c658bc4644d1d4e1b9615952258c", + "sKCS": "0x00ee2d494258d6c5a30d6b6472a09b27121ef451" + }, + "metis": { + "Metis": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000", + "WMETIS": "0x71802e8f394bb9d05a1b8e9d0562917609fd7325", + "m_USDT": "0xbb06dca3ae6887fabf931640f67cab3e3a16f4dc", + "WETH": "0x420000000000000000000000000000000000000a", + "USDO": "0x5801d0e1c7d977d78e4890880b8e579eb4943276", + "m_USDC": "0xea32a96608495e54156ae48931a7c20f0dcc1a21", + "BNB": "0x2692be44a6e38b698731fddf417d060f0d20a0cb", + "WBTC": "0xa5b55ab1daf0f8e1efc0eb1931a957fd89b918f4", + "BUSD": "0x12d84f1cfe870ca9c9df9785f8954341d7fbb249", + "rAVAX": "0xe253e0cea0cdd43d9628567d097052b33f98d611", + "rFTM": "0xa9109271abcf0c4106ab7366b4edb34405947eed", + "DAI": "0x4651b38e7ec14bb3db731369bfe5b08f2466bd0a", + "RELAY": "0xfe282af5f9eb59c30a3f78789eeffa704188bdd4", + "FTM": "0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8", + "MATIC": "0x4b9d2923d875edf43980bf5ddddede3fb20fc742", + "SYN": "0x67c10c397dd0ba417329543c1a40eb48aaa7cd00", + "BORING": "0x226d8bfb4da78ddc5bd8fd6c1532c58e88f9fd34", + "m_WBTC": "0x433e43047b95cb83517abd7c9978bdf7005e9938", + "m_AAVE": "0xd1f0a4e5444eed0fbcd6624dcef7ef33043e6168" + }, + "celo": { + "CELO": "0x471ece3750da237f93b8e339c536989b8978a438", + "cUSD": "0x765de816845861e75a25fca122bb6898b8b1282a", + "ETHIX": "0x9995cc8f20db5896943afc8ee0ba463259c931ed", + "mCELO": "0x7d00cd74ff385c955ea3d79e47bf06bd7386387d", + "mcUSD": "0x918146359264c492bd6934071c6bd31c854edbc3", + "mCEUR": "0xe273ad7ee11dcfaa87383ad5977ee1504ac07568", + "USDC": "0x2a3684e9dc20b857375ea04235f2f7edbe818fa7", + "aaUSDC": "0xb70e0a782b058bfdb0d109a3599bec1f19328e36", + "asUSDC": "0xcd7d7ff64746c1909e44db8e95331f9316478817", + "cUSDC": "0x93db49be12b864019da9cb147ba75cdc0506190e", + "cUSDT": "0xcfffe0c89a779c09df3df5624f54cdf7ef5fdd5d", + "WBTC": "0xbaab46e28388d2779e6e31fd00cf0e5ad95e327b", + "WETH": "0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207", + "atUST": "0xed193c4e69f591e42398ef54dea65aa1bb02835c", + "DAI": "0x90ca507a5d4458a4c6c6249d186b6dcb02a5bccd", + "NCT": "0x02de4766c272abc10bc88c220d214a26960a7e92", + "cMCO2": "0x32a9fe697a32135bfd313a6ac28792dae4d9979d", + "USDT": "0x617f3112bf5397d0467d315cc709ef968d9ba546" + }, + "boba": { + "WETH": "0xd203de32170130082896b4111edf825a4774c18e", + "BOBA": "0xa18bf3994c0cc6e3b63ac420308e5383f53120d7", + "USDC": "0x66a2a913e447d6b4bf33efbec43aaef87890fbbc", + "USDT": "0x5de1677344d3cb0d7d465c10b72a8f60699c062d", + "DAI": "0xf74195bb8a5cf652411867c5c2c5b8c2a402be35", + "BUSD": "0x461d52769884ca6235b685ef2040f47d30c94eb5", + "FRAX": "0x7562f525106f5d54e891e005867bf489b5988cd9", + "WBTC": "0xdc0486f8bf31df57a952bcd3c1d3e166e3d9ec8b", + "OMG": "0xe1e2ec9a85c607092668789581251115bcbd20de", + "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", + "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd" + }, + "findora": { + "WBNB_b": "0xabc979788c7089b516b8f2f1b5ceabd2e27fd78b", + "WETH_b": "0x008a628826e9470337e0cd9c0c944143a83f32f3", + "USDT_b": "0x93edfa31d7ac69999e964dac9c25cd6402c75db3", + "USDC_b": "0xda33ef1a7b48bebbf579ee86dfa735a9529c4950", + "BUSD_b": "0xe80eb4a234f718edc5b76bb442653827d20ebb2d", + "WBTC_b": "0x07efa82e00e458ca3d53f2cd5b162e520f46d911", + "FRA": "0x0000000000000000000000000000000000001000", + "USDC_e": "0x2e8079e0fe49626af8716fc38adea6799065d7f7", + "USDT_e": "0x0632baa26299c9972ed4d9affa3fd057a72252ff" + }, + "milkomeda": { + "WADA": "0xae83571000af4499798d1e3b0fa0070eb3a3e3f9", + "USDT": "0xab58da63dfdd6b97eaab3c94165ef6f43d951fb2", + "WBTC": "0x48aeb7584ba26d3791f06fba360db435b3d7a174", + "BNB": "0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52", + "WETH": "0x5950f9b6ef36f3127ea66799e64d0ea1f5fdb9d1", + "DAI": "0x41eafc40cd5cb904157a10158f73ff2824dc1339", + "USDC": "0x5a955fddf055f2de3281d99718f5f1531744b102", + "sUSDC": "0x42110a5133f91b49e32b671db86e2c44edc13832", + "BUSD": "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", + "BLUES": "0x8c008bba2dd56b99f4a6ab276be3a478cb075f0c" + }, + "bittorrent": { + "USDT_t": "0xdb28719f7f938507dbfe4f0eae55668903d34a15", + "USDC_t": "0x935faa2fcec6ab81265b301a30467bbc804b43d3", + "WBTT": "0x23181f21dea5936e24163ffaba4ea3b316b57f3c", + "USDD_t": "0x17f235fd5974318e4e2a5e37919a209f7c37a6d1", + "USDC_e": "0xae17940943ba9440540940db0f1877f101d39e8b", + "TRX": "0xedf53026aea60f8f75fca25f8830b7e2d6200662", + "ETH": "0x1249c65afb11d179ffb3ce7d4eedd1d9b98ad006", + "USDT_e": "0xe887512ab8bc60bcc9224e1c3b5be68e26048b8b", + "KNC_e": "0xe467f79e9869757dd818dfb8535068120f6bcb97", + "WBTC_e": "0x9888221fe6b5a2ad4ce7266c7826d2ad74d40ccf", + "USDC_b": "0xca424b845497f7204d9301bd13ff87c0e2e86fcf", + "USDT_b": "0x9b5f27f6ea9bbd753ce3793a07cba3c74644330d" + }, + "klaytn": { + "WKLAY": "0x57d1a61e4fd09fbf16e35b04959e94dcf2032974", + "oDON": "0x5388ce775de8f7a69d17fd5caa9f7dbfee65dfce", + "BORA": "0x02cbe46fb8a1f579254a9b485788f2d86cad51aa", + "DAI": "0xcb2c7998696ef7a582dfd0aafadcd008d03e791a", + "USDC": "0x608792deb376cce1c9fa4d0e6b7b44f507cffa6a", + "IJM": "0x0268dbed3832b87582b1fa508acf5958cbb1cd74", + "USDT": "0x5c13e303a62fc5dedf5b52d66873f2e59fedadc2", + "pUSD": "0x168439b5eebe8c83db9eef44a0d76c6f54767ae4", + "KSD": "0x4fa62f1f404188ce860c8f0041d6ac3765a72e67", + "KASH": "0xce40569d65106c32550626822b91565643c07823", + "oBUSD": "0x210bc03f49052169d5588a52c317f71cf2078b85", + "WBTC": "0x981846be8d2d697f4dfef6689a161a25ffbab8f9", + "WETH": "0x98a8345bb9d3dda9d808ca1c9142a28f6b0430e1", + "KDAI": "0x5c74070fdea071359b86082bd9f9b3deaafbe32b", + "oUSDC": "0x754288077d0ff82af7a5317c7cb8c444d421d103", + "oUSDT": "0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167", + "oWBTC": "0x16d0e1fbd024c600ca0380a4c5d57ee7a2ecbf9c", + "oETH": "0x34d21b1e550d73cee41151c77f3c73359527a396", + "oXRP": "0x9eaefb09fe4aabfbe6b1ca316a3c36afc83a393f", + "KSP": "0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654", + "WBNB": "0xac9c1e4787139af4c751b1c0fadfb513c44ed833", + "BUSD": "0xe2765f3721dab5f080cf14ace661529e1ab9ade7", + "WAVAX": "0x45830b92443a8f750247da2a76c85c70d0f1ebf3", + "SOL": "0xfaa03a2ac2d1b8481ec3ff44a0152ea818340e6d", + "aUSDC_Wormhole_": "0x2b72d65941e657c1305b65fa330ffdde7b397239", + "aUSDC": "0x61fbbfd5416c45f297a8e69ba113789c75f8841c", + "aUSDT": "0x2eadfda6d830547b5168ba88c13d24156a026ce5", + "aUSDT_Wormhole_": "0x98aedff55dcc2e7a7d1899b325d1680527dd2742", + "aDAI": "0x2ff5371dad5c6ef76d55213b7c5a519f6654ba17", + "aDAI_Wormhole_": "0xe9a88c33abf71c902f7581321d05e6516cbca761", + "USDK": "0xd2137fdf10bd9e4e850c17539eb24cfe28777753", + "NPT": "0xe06597d02a2c3aa7a9708de2cfa587b128bd3815" + }, + "nova": { + "WSNT": "0x657a66332a65b535da6c5d67b8cd1d410c161a08", + "NUSD": "0x1f5396f254ee25377a5c1b9c6bff5f44e9294fff", + "null": "0x0000000000000000000000000000000000000000" + }, + "aurora": { + "WETH": "0x274d83086c356e0cfc75933fbf838ca10a7e8274", + "USDC_e": "0xb12bfca5a55806aaf64e99521918a4bf0fc40802", + "USDT_e": "0x4988a896b1227218e4a686fde5eabdcabd91571f", + "NEAR": "0xc42c30ac6cc15fac9bd938618bcaa1a1fae8501d", + "AURORA": "0x8bec47865ade3b172a928df8f990bc7f2a3b9f79", + "FRAX": "0xda2585430fef327ad8ee44af8f1f989a2a91a3d2", + "nUSD": "0x07379565cd8b0cae7c60dc78e7f601b34af2a21c", + "sUSDC": "0x42cc1cbf253f89be6814a0f59f745b40b69b6220", + "sBUSD": "0xd5e98caeb396dabe5a102bb9256b552944e3401f" + }, + "dfk": { + "WJEWEL": "0xccb93dabd71c8dad03fc4ce5559dc3d89f67a260", + "xJEWEL": "0x77f2656d04e158f915bc22f07b779d94c1dc47ff", + "FTM": "0x2df041186c844f8a2e2b63f16145bc6ff7d23e25" + }, + "cronos": { + "WCRO": "0xca2503482e5d6d762b524978f400f03e38d5f962", + "USDC": "0xc21223249ca28397b4b6541dffaecc539bff0c59", + "WBTC": "0x062e66477faf219f25d27dced647bf57c3107d52", + "SVN": "0x654bac3ec77d6db497892478f854cf6e8245dca9", + "USDT": "0x66e428c3f67a68878562e79a0234c1f83c208770", + "CRX": "0xe243ccab9e66e6cf1215376980811ddf1eb7f689", + "TUSD": "0x87efb3ec1576dec8ed47e58b832bedcd86ee186e", + "ALI": "0x45c135c1cdce8d25a3b729a28659561385c52671", + "AKT": "0x39a65a74dc5a778ff93d1765ea51f57bc49c81b3", + "SHIB": "0xbed48612bc69fa1cab67052b42a95fb30c1bcfee", + "ATOM": "0xb888d8dd1733d72681b30c00ee76bde93ae7aa93", + "ELON": "0x02dccaf514c98451320a9365c5b46c61d3246ff3", + "CRK": "0x065de42e28e42d90c2052a1b49e7f83806af0e1f" + }, + "velas": { + "WVLX": "0xe41c4324dcbd2926481101f8580d13930aff8a75", + "ETH": "0x85219708c49aa701871ad330a94ea0f41dff24ca", + "_MATIC": "0x6ab0b8c1a35f9f4ce107ccbd05049cb1dbd99ec5", + "WBTC": "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", + "_BNB": "0x2b8e9cd44c9e09d936149549a8d207c918ecb5c4", + "FTM": "0xc9b3aa6e91d70f4ca0988d643ca2bb93851f3de4", + "USDC": "0xe2c120f188ebd5389f71cf4d9c16d05b62a58993", + "USDT": "0x01445c31581c354b7338ac35693ab2001b50b9ae", + "BUSD": "0xc111c29a988ae0c0087d97b33c6e6766808a3bd3", + "BAMBOO": "0x300a8be53b4b5557f48620d578e7461e3b927dd0", + "_AVAX": "0x525bd1f949ffa2a0c5820f3b6fe61bb897466ff7", + "SWAPZ": "0x9b6fbf0ea23faf0d77b94d5699b44062e5e747ac", + "DAI": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "SCAR": "0x8d9fb713587174ee97e91866050c383b5cee6209", + "ADA": "0x3611fbfb06ffbcef9afb210f6ace86742e6c14a4" + }, + "telos": { + "WTLOS": "0xd102ce6a4db07d247fcc28f366a623df0938ca9e", + "ETH": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", + "WBTC": "0xf390830df829cf22c53c8840554b98eafc5dcbc2", + "USDC": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", + "USDT": "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73", + "STLOS": "0xb4b01216a5bc8f1c8a33cd990a1239030e60c905", + "sBUSD": "0x017043607270ecbb440e20b0f0bc5e760818b3d8" + }, + "reichain": { + "BNB": "0xf8ab4aaf70cef3f3659d3f466e35dc7ea10d4a5d", + "kBUSD": "0xdd2bb4e845bd97580020d8f9f58ec95bf549c3d9" + }, + "solana": { + "SOL": "So11111111111111111111111111111111111111112", + "BONK": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + "USDC": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "pSOL": "9EaLkQrbjmbbuZG9Wdpo8qfNUEjHATJFSycEmw6f1rGX", + "APT": "6LNeTYMqtNm1pBFN8PfhQaoLyegAH8GD32WmHU9erXKN", + "DAI": "EjmyN6qEC1Tf1JxiG1ae7UTJhUxSwk1TCWNWqxWV4J6o", + "apUSDC": "eqKJTf1Do4MDPyKisMYqVaUFpkEFAs3riGF3ceDH2Ca", + "USDCbs": "FCqfQSujuPxy6V42UvafBhsysWtEq1vhjfMN1PUbgaxA", + "aeUSDC": "DdFPRnccQqLD4zCHrBqdY95D6hvw6PLWp9DEXj1fLCL9", + "aaUSDC": "8Yv9Jz4z7BUHP68dz8E8m3tMe6NKgpMUKn8KVqrPA6Fr", + "afUSDC": "Grk6b4UMRWkgyq4Y6S1BnNRF4hRgtnMFp7Sorkv6Ez4u", + "abUSDC": "8XSsNvaKU9FDhYWAv7Yc7qSNwuJSzVrXBNEk7AFiWF69", + "USDTbs": "8qJSyQprMC57TWKaYEmetUR3UUiTP2M3hXdcvFhkZdmv", + "abUSDT": "E77cpQ4VncGmcAXX16LHFFzNBEBb2U7Ar7LBmZNfCgwL", + "aeUSDT": "Bn113WT6rbdgwrm12UJtnmNqGqZjY4it2WoUQuQopFVn", + "aaUSDT": "FwEHs3kJEdMa2qZHv7SgzCiFXUQPEycEXksfBkwmS8gj", + "BUSDbs": "5RpUwQ8wtdPCZHhu6MERp2RGrpobsbZ6MH5dDHkUjs2" + }, + "astar": { + "WASTR": "0xecc867de9f5090f55908aaa1352950b9eed390cd", + "WETH": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", + "WBTC": "0xad543f18cff85c77e140e3e5e3c3392f6ba9d5ca", + "BNB": "0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52", + "SDN": "0x75364d4f779d0bd0facd9a218c67f87dd9aff3b4", + "MATIC": "0xdd90e5e87a2081dcf0391920868ebc2ffb81a1af", + "USDC": "0x6a2d262d56735dba19dd70682b39f6be9a931d98", + "USDT": "0x3795c36e7d12a8c252a20c5a7b455f7c57b60283", + "ARSW": "0xde2578edec4669ba7f41c5d5d2386300bcea4678", + "DOT": "0xffffffffffffffffffffffffffffffffffffffff", + "DAI": "0x6de33698e9e9b787e09d3bd7771ef63557e148bb", + "ORU": "0xcdb32eed99aa19d39e5d6ec45ba74dc4afec549f", + "MUUU": "0xc5bcac31cf55806646017395ad119af2441aee37", + "NIKA": "0x6df98e5fbff3041105cb986b9d44c572a43fcd22", + "oUSD": "0x29f6e49c6e3397c3a84f715885f9f233a441165c", + "KGL": "0x257f1a047948f73158dadd03eb84b34498bcdc60", + "LAY": "0xc4335b1b76fa6d52877b3046eca68f6e708a27dd", + "lUSDT": "0x430d50963d9635bbef5a2ff27bd0bddc26ed691f", + "nASTR": "0xe511ed88575c57767bafb72bfd10775413e3f2b0", + "ESW": "0xb361dad0cc1a03404b650a69d9a5adb5af8a531f", + "lUSDC": "0xc404e12d3466accb625c67dbab2e1a8a457def3c", + "lDAI": "0x4dd9c468a44f3fef662c35c1e9a6108b70415c2c", + "aBaiUsdc": "0xdbd71969ac2583a9a20af3fb81fe9c20547f30f3", + "aDaiUsdc": "0x9914bff0437f914549c673b34808af6020e2b453", + "aBusdUsdc": "0x347e53263f8fb843ec605a1577ec7c8c0cac7a58", + "aUsdtUsdc": "0x02dac4898b2c2ca9d50ff8d6a7726166cf7bcfd0", + "BUSD": "0x4bf769b05e832fcdc9053fffbc78ca889acb5e1e", + "lBUSD": "0xb7ab962c42a8bb443e0362f58a5a43814c573ffb", + "BAI": "0x733ebcc6df85f8266349defd0980f8ced9b45f35", + "ATID": "0x5271d85ce4241b310c0b34b7c2f1f036686a6d7c", + "JPYC": "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb" + }, + "cardano": { + "ADA": "ADA" + }, + "functionx": { + "WFX": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", + "PUNDIX": "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", + "PURSE": "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", + "USDT": "0xeceeefcee421d8062ef8d6b4d814efe4dc898265" + }, + "clv": { + "WCLV": "0x1376c97c5c512d2d6f9173a9a3a016b6140b4536", + "WETH": "0xa1c3767c93e7b51ecb445fdbae1494dfc654e524", + "WBTC": "0x30bebbc0b6b357945ac30660e025c1532b9c7804", + "USDT": "0xf91193a62879279d6b8f209f89b6418e3c0e5cbf", + "USDC": "0x4a52f069cb00905d996a0d7b811d78e60b4cb09e" + }, + "tron": { + "null": "0x0000000000000000000000000000000000000000", + "USDT": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", + "USDC": "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", + "USDD": "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", + "JM": "TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR", + "BTC": "TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9", + "LTC": "TR3DLthpnDdCGabhVDbD3VMsiJoCXY3bZd", + "DOGE": "THbVQp8kMjStKNnf2iCY6NEzThKMK5aBHg", + "ETH": "THb4CqiFdwNHsWsQCs4JhzwjMWys4aqCbF" + }, + "lachain": { + "wLA": "0x3a898d596840c6b6b586d722bfadcc8c4761bf41" + }, + "theta": { + "WTFUEL": "0x4dc08b15ea0e10b96c41aec22fab934ba15c983e", + "TDROP": "0x1336739b05c7ab8a526d40dcc0d04a826b5f8b03" + }, + "zyx": { + "WZYX": "0xc9e1aea009b0bae9141f3dc7523fb42fd48c8656" + }, + "ubiq": { + "WUBQ": "0x1fa6a37c64804c0d797ba6bc1955e50068fbf362" + }, + "cosmos": { + "ATOM": "uatom" + }, + "terra2": { + "LUNA": "uluna", + "ASTRO": "terra1nsuqsk6kh58ulczatwev87ttq2z6r3pusulg9r24mfj2fvtzd4uq3exn26" + }, + "terra": { + "LUNA": "uluna", + "UST": "uusd" + }, + "crescent": { + "BCRE": "ubcre", + "CRE": "ucre" + }, + "orai": { + "ORAI": "orai", + "USDT": "orai12hzjxfh77wl572gdzct2fxv2arxcwh6gykc7qh" + }, + "juno": { + "JUNO": "ujuno" + }, + "osmosis": { + "ION": "uion" + }, + "kujira": { + "KUJI": "ukuji", + "USK": "factory/kujira1qk00h5atutpsv900x202pxx42npjr9thg58dnqpa72f2p7m2luase444a7/uusk" + }, + "injective": { + "INJ": "inj", + "ATOM": "ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9", + "USDT": "factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk" + }, + "comdex": { + "CMDX": "ucmdx", + "CMST": "ucmst" + }, + "near": { + "JUMBO": "token.jumbo_exchange.near", + "PARAS": "token.paras.near", + "MARMAJ": "marmaj.tkn.near", + "LINA": "linear-protocol.near", + "PEMBROCK": "token.pembrock.near", + "BURROW": "token.burrow.near", + "MMRJ": "token.marmaj.near" + }, + "multivac": { + "WMTV": "0x8e321596267a4727746b2f48bc8736db5da26977", + "USDT": "0x2f9c74d3c42023c533437c9ee743d4a6329e78df", + "USDC": "0xea1199d50ee09fa8062fd9da3d55c6f90c1babd2" + }, + "tomochain": { + "WTOMO": "0xb1f66997a5760428d3a87d68b90bfe0ae64121cc" + }, + "ethereumclassic": { + "WETC": "0x35e9a89e43e45904684325970b2e2d258463e072" + }, + "cube": { + "WCUBE": "0x9d3f61338d6eb394e378d28c1fd17d5909ac6591", + "ETH": "0x57eea49ec1087695274a9c4f341e414eb64328c2", + "BTC": "0x040ea5c10e6ba4badb6c433a365ccc4968697230", + "USDT": "0x79f1520268a20c879ef44d169a4e3812d223c6de", + "USDC": "0x00f0d8595797943c12605cd59bc0d9f63d750ccf", + "DAI": "0x3a1f6e3e6f26e92bb0d07841eb68f8e84f39751e", + "O3": "0xee9801669c6138e84bd50deb500827b776777d28" + }, + "elastos": { + "WELA": "0x517e9e5d46c1ea8ab6f78677d6114ef47f71f6c4", + "bnbBUSD": "0x9f1d0ed4e041c503bd487e5dc9fc935ab57f9a57" + }, + "energyweb": { + "WEWT": "0x6b3bd0478df0ec4984b168db0e12a539cc0c83cd" + }, + "milkomeda_a1": { + "WALGO": "0xaf86e6c5fd9daf53e5100ed38bab2572609fca27", + "USDC": "0x2421db204968a367cc2c866cd057fa754cb84edf", + "USDt": "0x32564ae38e5dbf316958ce25a6ad2a2249ebcc2d", + "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", + "BLUES": "0xc9baa8cfdde8e328787e29b4b078abf2dadc2055", + "BUSD": "0x8dc0dfa2aec0d4410c8c60c5f9cd0cd37b05a06a", + "DAI": "0x150d2421e09eea31beaa68b7a248700eeceda87a" + }, + "ultron": { + "wULX": "0x3a4f06431457de873b588846d139ec0d86275d54", + "wETH": "0x2318bf5809a72aabadd15a3453a18e50bbd651cd", + "wBTC": "0xd2b86a80a8f30b83843e247a50ecdc8d843d87dd", + "BUSD": "0xc7cac85c1779d2b8ada94effff49a4754865e2e4", + "uUSDT": "0x97fdd294024f50c388e39e73f1705a35cfe87656", + "uUSDC": "0x3c4e0fded74876295ca36f62da289f69e3929cc4" + }, + "bitgert": { + "WBRISE": "0x0eb9036cbe0f052386f36170c6b07ef0a0e3f710", + "LUNG": "0xc3b730dd10a7e9a69204bdf6cb5a426e4f1f09e3", + "YPC": "0x11203a00a9134db8586381c4b2fca0816476b3fd" + }, + "echelon": { + "WECH": "0xadee5159f4f82a35b9068a6c810bdc6c599ba6a8" + }, + "rei": { + "WREI": "0x2545af3d8b11e295bb7aedd5826021ab54f71630", + "USDT": "0x988a631caf24e14bb77ee0f5ca881e8b5dcfcec7", + "WBTC": "0x8059e671be1e76f8db5155bf4520f86acfdc5561", + "fWETH": "0x5b07f2582d0cc26e400d56266aebb201c93560ed" + }, + "tombchain": { + "TOMB": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000", + "LIF3": "0x4200000000000000000000000000000000000108", + "FTM": "0x4200000000000000000000000000000000000006", + "TSHARE": "0x4200000000000000000000000000000000000101", + "USDC": "0x4200000000000000000000000000000000000100", + "LSHARE": "0x4200000000000000000000000000000000000109" + }, + "rsk": { + "WRBTC": "0x967f8799af07df1534d48a95a5c9febe92c53ae0", + "ETHs": "0x1d931bf8656d795e50ef6d639562c5bd8ac2b78f" + }, + "polis": { + "WPOLIS": "0x6fc851b8d66116627fb1137b9d5fe4e2e1bea978" + }, + "kekchain": { + "wKEK": "0x54bd9d8d758ac3717b37b7dc726877a23aff1b89" + }, + "aptos": { + "APT": "0x1::aptos_coin::AptosCoin", + "USDC": "0x5e156f1207d0ebfa19a9eeff00d62a282278fb8719f4fab3a586a0a2c0fffbea::coin::T", + "USDT": "0xa2eda21a58856fda86451436513b867c97eecb4ba099da5775520e0f7492e852::coin::T", + "WBTC": "0xae478ff7d83ed072dbc5e264250e67ef58f57c99d89b447efd8a0a2e8b2be76e::coin::T", + "ETH": "0xcc8a89c8dce9693d354449f1f73e60e14e347417854f029db5bc8e7454008abb::coin::T", + "USDC_1": "0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T", + "USDA": "0x1000000fa32d122c18a6a31c009ce5e71674f22d06a581bb0a15575e6addadcc::usda::USDA", + "USDC_2": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC", + "USDT_2": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT", + "WETH": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::WETH", + "SOL": "0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T", + "ST_APT": "0x84d7aeef42d38a5ffc3ccef853e1b82e4958659d16a7de736a29c55fbbeb0114::staked_aptos_coin::StakedAptosCoin", + "ST_APT2": "0xd11107bdf0d6d7040c6c0bfbdecb6545191fdf13e8d8d259952f53e1713f61b5::staked_coin::StakedAptos", + "CELER_BNB": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::BnbCoin", + "CELER_BUSD": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::BusdCoin", + "CELER_USDC": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::UsdcCoin", + "CELER_USDT": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::UsdtCoin", + "CELER_DAI": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::DaiCoin", + "CELER_ETH": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::WethCoin", + "CELER_WBTC": "0x8d87a65ba30e09357fa2edea2c80dbac296e5dec2b18287113500b902942929d::celer_coin_manager::WbtcCoin" + }, + "dogechain": { + "WWDOGE": "0xb7ddc6414bf4f5515b52d8bdd69973ae205ff101", + "DC": "0x7b4328c127b85369d9f82ca0503b000d09cf9180", + "USDC": "0x85c2d3bebffd83025910985389ab8ad655abc946", + "DAI": "0xb3306f03595490e5cc3a1b1704a5a158d3436ffc", + "ETH": "0xb44a9b6905af7c801311e8f4e76932ee959c663c", + "USDT": "0x7f8e71dd5a7e445725f0ef94c7f01806299e877a", + "WBTC": "0xd0c6179c43c00221915f1a61f8ec06a5aa32f9ec", + "FRAX": "0x10d70831f9c3c11c5fe683b2f1be334503880db6", + "FXS": "0x97513e975a7fa9072c72c92d8000b0db90b163c5", + "BUSD": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", + "BNB": "0x1fc532187b4848d2f9c564531b776a4f8e11201d", + "QUICK": "0xb12c13e66ade1f72f71834f2fc5082db8c091358", + "MATIC": "0xdc42728b0ea910349ed3c6e1c9dc06b5fb591f98", + "WETH": "0x9f4614e4ea4a0d7c4b1f946057ec030bee416cbb", + "_SAVIOR": "0xbfbb7b1d22ff521a541170cafe0c9a7f20d09c3b", + "DTools": "0x1df5c9b7789bd1416d005c15a42762481c95edc2" + }, + "canto": { + "WCANTO": "0x826551890dc65655a0aceca109ab11abdbd7a07b", + "USDC": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", + "USDT": "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", + "NOTE": "0x4e71a2e537b7f9d9413d3991d37958c0b5e1e503", + "ETH": "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", + "ATOM": "0xeceeefcee421d8062ef8d6b4d814efe4dc898265", + "cINU": "0x7264610a66eca758a8ce95cf11ff5741e1fd0455" + }, + "ontology_evm": { + "WONG": "0xd8bc24cfd45452ef2c8bc7618e32330b61f2691b" + }, + "algorand": { + "XET": "283820866", + "SMILE": "300208676", + "ALGF": "463554836", + "GOMINT": "441139422", + "STKE": "511484048", + "YLDY": "226701642", + "COSG": "571576867", + "PBTC": "744665252", + "USDC": "31566704", + "HDL": "137594422", + "VEST": "700965019", + "CCT": "657291910", + "BUY": "137020565", + "STBL": "841126810", + "STBL_1": "465865291", + "GOBTC": "386192725", + "ARCC": "163650", + "ZONE": "444035862", + "PLANETS": "27165954", + "GALGO": "793124631", + "GOETH": "386195940", + "OPUL": "287867876", + "B3X": "663905154", + "OCTO": "559219992", + "MCAU": "6547014", + "RIO": "2751733", + "BOARD": "342889824", + "ALGO": "1", + "XGLI": "607591690", + "NXS": "403499324", + "ADAO": "692085161", + "DEFLY": "470842789", + "CHOICE": "297995609", + "USDT": "312769", + "GARD": "684649988" + }, + "shiden": { + "WSDN": "0x0f933dc137d21ca519ae4c7e93f87a4c8ef365ef", + "USDC": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", + "USDT": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", + "JPYC": "0x735abe48e8782948a37c7765ecb76b98cde97b0f", + "STND": "0x722377a047e89ca735f09eb7cccab780943c4cb4", + "ESW": "0xb4bca5955f26d2fa6b57842655d7acf2380ac854", + "ETH": "0x765277eebeca2e31912c9946eae1021199b39c61", + "BNB": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", + "BUSD": "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a" + }, + "tezos": { + "USDtz": "KT1LN4LPSqTMS7Sd2CJw4bbDGRkMv2t68Fy9", + "CTez": "KT1SjXiUX63QvdNMcM2m492f7kuf8JxXRLp4", + "UP": "KT1TgmD7kXQzofpuc9VbTRMdZCS2e6JDuTtc", + "KALAM": "KT1A5P4ejnLix13jtadsfV9GCnXLMNnab8UT", + "wWBTC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-19", + "wMATIC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-11", + "MYH": "KT1BB1uMwVvJ1M3vVHXWALs1RWdgTp1rnXTR", + "kUSD": "KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV", + "USDT.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-3", + "PXL": "KT1F1mn2jbqQCJcsNgYKVAQjvenecNMY2oPK", + "WBTC.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-1", + "kDAO": "KT1JkoE42rrMBP9b2oDhbx6EUr26GcySZMUH", + "STKR": "KT1AEfeckNbdEYwaMKkytBwPJPycz7jdSGea", + "wXTZ": "KT1VYsVfmobT7rsMVivvZ4J8i3bPiqz12NaH", + "MATIC.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-4", + "hDAO": "KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW", + "WRAP": "KT1LRboPna9yQY9BrjtQYDS1DVxhKESK4VVd", + "wBUSD": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-1", + "USDt": "KT1XnTn74bUtxHfDtBmm2bGZAQfhPbvKWR8o", + "ETHtz": "KT19at7rQUvyjxnZ2fBv7D9zc8rkyG7gAoU8", + "wUSDC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-17", + "QUIPU": "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb", + "wWETH": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-20", + "USDC.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-2", + "PLENTY": "KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b", + "wUSDT": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-18", + "wDAI": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-5", + "SMAK": "KT1TwzD6zV3WeJ39ukuqxcfK2fJCnhvrdN1X", + "LINK.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-5", + "DOGA": "KT1Ha4yFVeyzw6KRAdkzq6TxDHB97KG4pZe8", + "WETH.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY", + "INSTA": "KT19y6R8x53uDKiM46ahgguS6Tjqhdj2rSzZ", + "GIF": "KT1XTxpQvo7oRCqp85LikEZgAZ22uDxhbWJv", + "UNO": "KT1ErKVqEhG9jxXgUG2KGLW3bNM7zXHX8SDF", + "uUSD": "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW", + "YOU": "KT1Xobej4mc6XgEjDoJoHtTKgbD1ELMvcQuL", + "USDS": "KT1REEb5VxWRjcHm5GzDMwErMmNFftsE5Gpf", + "tzBTC": "KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn", + "BUSD": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-7", + "DAI": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-6", + "PAUL": "KT19DUSZw7mfeEATrbWVPHRrWNVbNnmfFAE6", + "XTZ": "tezos", + "XTZ_1": "KT1UpeXdK6AJbX58GJ92pLZVCucn2DR8Nu4b", + "LINK": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-10", + "AAVE": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ", + "WBTC": "KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW-2", + "UUSD": "KT1XRPEPXBZK25R3HTZP2O1X7XDMMMFOCKNW-0", + "ETH": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-0" + }, + "hpb": { + "WHPB": "0xbe05ac1fb417c9ea435b37a9cecd39bc70359d31" + }, + "godwoken": { + "WCKB": "0xe934f463d026d97f6ce0a10215d0ac4224f0a930", + "USDC": "0xc3b946c53e2e62200515d284249f2a91d9df7954", + "USDC_bsc": "0xa21b19d660917c1de263ad040ba552737cfcef50", + "USDT": "0x07a388453944bb54be709ae505f14aeb5d5cbb2c", + "USDT_bsc": "0x5c30d9396a97f2279737e63b2bf64cc823046591", + "WBTC_eth": "0x7818fa4c71dc3b60049fb0b6066f18ff8c720f33", + "BTCB_bsc": "0x3f8d2b24c6fa7b190f368c3701ffcb2bd919af37" + }, + "godwoken_v1": { + "WCKB": "0xc296f806d15e97243a08334256c705ba5c5754cd", + "pCKB": "0x7538c85cae4e4673253ffd2568c1f1b48a71558a", + "ETH": "0x9e858a7aaedf9fdb1026ab1f77f627be2791e98a", + "BNB_bsc": "0xbadb9b25150ee75bb794198658a4d0448e43e528", + "WBTC_eth": "0x82455018f2c32943b3f12f4e59d0da2faf2257ef", + "BTCB_bsc": "0xef2439e020509259fa603c34b35a81ffe676cfb4", + "WETH": "0xb66954619363145a05ef835547449eb9050d82f6", + "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "USDC_bsc": "0xfa307cfdea89dc197a346c338a98ac85d517af6e", + "USDT_bsc": "0xdff2facdfe47c1d5b51f18231f900949f1d5988f", + "DAI": "0x765277eebeca2e31912c9946eae1021199b39c61", + "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", + "BUSD": "0xcd7bc9fc617a4f82ec1c8359d1c8610b90e3b44c", + "WBTC": "0xb44a9b6905af7c801311e8f4e76932ee959c663c" + }, + "waves": { + "BNB": "5UYBPpq4WoU5n4MwpFkgJnW3Fq4B1u3ukpK33ik4QerR", + "BUSD": "8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1", + "SWOP": "Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT", + "MKR": "E4rss7qLUcawCvD2uMrbLeTMPGkX15kS3okWCbUhLNKL", + "VIRES": "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p", + "ENJ": "EfwRV6MuUCGgAUchdsF4dDFnSpKrDW3UYshdaDy4VBeB", + "BTC": "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS", + "DAI": "8zUYbdB8Q6mDhpcXYv52ji8ycfj4SDX4gJXS7YY3dA4R", + "WEST": "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8", + "FTM": "4GZH8rk5vDmMXJ81Xqfm3ovFaczqMnQ11r7aELiNxWBV", + "ATOM": "47cyc68FWJszCWEwMWVsD9CadjS2M1XtgANuRGbEW8UH", + "CRO": "HLckRcg7hJ3Syf3PrGftFijKqQMJipf81WY3fwvHCJbe", + "YFI": "BLRxWVJWaVuR2CsCoTvTw2bDZ3sQLeTbCofcJv7dP5J4", + "APE": "2GBgdhqMjUPqreqPziXvZFSmDiQVrxNuGxR1z7ZVsm4Z", + "CRV": "3KhNcHo4We1G5EWps7b1e5DTdLgWDzctc8S6ynu37KAb", + "USDC": "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ", + "LINK": "2bbGhKo5C31iEiB4CwGuqMYwjD7gCA9eXmm51fe2v8vT", + "AAVE": "7TMu26hAs7B2oW6c5sfx45KSZT7GQA3TZNYuCav8Dcqt", + "NSBT": "6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g", + "WBTC": "5zoDNRdwVXwe7DveruJGxuJnqo7SYhveDeKb8ggAuC34", + "MANA": "Aug9ccbPApb1hxXSue8fHuvbyMf1FV1BYBtLUuS5LZnU", + "SHIB": "GVxGPBtgVWMW1wHiFnfaCakbJ6sKgZgowJgW5Dqrd7JH", + "FTT": "2Fh9m3dNQXycHdnytEaETN3P1gDT7ij5U4HjMqQBeaqN", + "UNI": "4YmM7mj3Av4DPvpNpbtK4jHbpzYDcZuY6UUnYpqTbzLj", + "SAND": "8YyrMfuBdZ5gtMWkynLTveRvGb6LJ4Aff9rpz46UUMW", + "MATIC": "HcHacFH51pY91zjJa3ZiUVWBww54LnsL4EP3s7hVGo9L", + "GRT": "A1uMqYTzBdakuSNDv7CruWXP8mRZ4EkHwmip2RCauyZH", + "ENNO": "7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg", + "ETH": "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu", + "LTC": "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk", + "WX": "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on", + "AXS": "ATQdLbehsMrmHZLNFhUm1r6s14NBT5JCFcSJGpaMrkAr", + "USDN": "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", + "UST": "2thtesXvnVMcCnih9iZbJL3d2NQZMfzENJo8YFj6r5jU", + "LUNA": "6QUVF8nVVVvM7do7JT2eJ5o5ehnZgXUg13ysiB9JiQrZ", + "USDT": "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ", + "WAVES": "WAVES" + }, + "songbird": { + "WSGB": "0x02f0826ef6ad107cfc861152b32b52fd11bab9ed", + "CAND": "0x70ad7172ef0b131a1428d0c1f66457eb041f2176", + "EXFI": "0xc348f894d0e939fe72c467156e6d7dcbd6f16e21" + }, + "energi": { + "WNRG": "0xa55f26319462355474a9f2c8790860776a329aa4" + }, + "nahmii": { + "ETH": "0x4200000000000000000000000000000000000006", + "NII": "0x595dba438a1bf109953f945437c1584319515d88" + }, + "curio": { + "CGT": "0x134ebab7883dfa9d04d20674dd8a8a995fb40ced" + }, + "gochain": { + "WGO": "0xcc237fa0a4b80ba47992d102352572db7b96a6b5", + "USDC": "0x97a19ad887262d7eca45515814cdef75acc4f713", + "FAST": "0x67bbb47f6942486184f08a671155fcfa6cad8d71" + }, + "smartbch": { + "WBCH": "0x3743ec0673453e5009310c727ba4eaf7b3a1cc04", + "LAW": "0x0b00366fbf7037e9d75e4a569ab27dab84759302", + "flexUSD": "0x7b2b3c5308ab5b2a1d9a94d20d35ccdf61e05b72", + "DAIQUIRI": "0x24d8d5cbc14fa6a740c3375733f0287188f8df3b", + "bcUSDT": "0xbc2f884680c95a02cea099da2f524b366d9028ba", + "_CATS": "0x265bd28d79400d55a1665707fa14a72978fa6043" + }, + "palm": { + "DAI": "0x4c1f6fcbd233241bf2f4d02811e3bf8429bc27b8", + "WETH": "0x726138359c17f1e56ba8c4f737a7caf724f6010b" + }, + "syscoin": { + "WSYS": "0xd3e822f3ef011ca5f17d82c956d952d8d7c3a1bb", + "USDC": "0x2bf9b864cdc97b08b6d79ad4663e71b8ab65c45c", + "ETH": "0x7c598c96d02398d89fbcb9d41eab3df0c16f227d", + "USDT": "0x922d641a426dcffaef11680e5358f34d97d112e1" + }, + "vision": { + "USDT": "0x1db6cdc620388a0b6046b20cd59503a0839adcff", + "VBTC": "0x4dE4B92C12dD4584873e72447573382C41da5597", + "VETH": "0x9261Bb697FE632dd4746c78406E955123085Bf4C", + "VBNB": "0xf6515Ce2ab3482C84Daaef961793bdFa3266b8ad", + "WVS": "0x79ffbc4fff98b821d59dbd7b33f91a2783006b6f" + }, + "kava": { + "WKAVA": "0xc86c7c0efbd6a49b35e8714c5f59d99de09a225b", + "USDC": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", + "USDT": "0xb44a9b6905af7c801311e8f4e76932ee959c663c", + "WBTC": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", + "DAI": "0x765277eebeca2e31912c9946eae1021199b39c61", + "SUSHI": "0x7c598c96d02398d89fbcb9d41eab3df0c16f227d", + "ETH": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "BUSD": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", + "BNB": "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a", + "WETH": "0xc13791da84f43525189456cfe2026c60d3b7f706", + "USDk": "0x472402d47da0587c1cf515dafbafc7bce6223106", + "axlUSDC": "0xeb466342c4d449bc9f53a865d5cb90586f405215", + "axlUSDT": "0x7f5373ae26c3e8ffc4c77b7255df7ec1a9af52a6", + "axlDAI": "0x5c7e299cf531eb66f2a1df637d37abb78e6200c7", + "KFT": "0xa0eeda2e3075092d66384fe8c91a1da4bca21788", + "USX": "0xdb0e1e86b01c4ad25241b1843e407efc4d615248", + "kBRISE": "0xea616011e5ac9a5b91e22cac59b4ec6f562b83f9" + }, + "sx": { + "WSX": "0xaa99be3356a11ee92c3f099bd7a038399633566f", + "WETH": "0xa173954cc4b1810c0dbdb007522adbc182dab380", + "USDC": "0xe2aa35c2039bd0ff196a6ef99523cc0d3972ae3e", + "WMATIC": "0xfa6f64dfbad14e6883321c2f756f5b22ff658f9c", + "DAI": "0x53813cd4acd7145a716b4686b195511fa93e4cb7", + "SHARK": "0x7dc31a2fcbfbad1ed4519111fd33f78316bcbc81" + }, + "meter": { + "MTRG": "0x228ebbee999c6a7ad74a6130e81b12f9fe237ba3", + "WMTR": "0x160361ce13ec33c993b5cca8f62b6864943eb083", + "USDC_eth": "0xd86e243fc0007e6226b07c9a50c9d70d78299eb5", + "MTR": "0x6abaedab0ba368f1df52d857f24154cc76c8c972", + "BUSD_bsc": "0x24aa189dfaa76c671c279262f94434770f557c35", + "TFUEL": "0x75fd6f7edcc5e7a8100ead3d29ccd844153ef0f3", + "USDT_eth": "0x5fa41671c48e3c951afc30816947126ccc8c162e" + }, + "callisto": { + "WCLO": "0xf5ad6f6edec824c7fd54a66d241a227f6503ad3a", + "BUSDT": "0xbf6c50889d3a620eb42c0f188b65ade90de958c4", + "ccETC": "0xccc766f97629a4e14b3af8c91ec54f0b5664a69f", + "ccETH": "0xcc208c32cc6919af5d8026dab7a3ec7a57cd1796", + "ccBNB": "0xccde29903e621ca12df33bb0ad9d1add7261ace9", + "SOY": "0x9fae2529863bd691b4a7171bdfcf33c7ebb10a65" + }, + "thundercore": { + "null": "0x0000000000000000000000000000000000000000", + "WTT": "0x413cefea29f2d07b8f2acfa69d92466b9535f717", + "TT_USDT": "0x4f3c8e20942461e2c3bdd8311ac57b0c222f2b82", + "TT_ETH": "0x6576bb918709906dcbfdceae4bb1e6df7c8a1077", + "TT_USDC": "0x22e89898a04eaf43379beb70bf4e38b1faf8a31e", + "TT_BUSD": "0xbeb0131d95ac3f03fd15894d0ade5dbf7451d171" + }, + "conflux": { + "WCFX": "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b", + "USDC": "0x6963efed0ab40f6c3d7bda44a05dcf1437c44372", + "USDT": "0xfe97e85d13abd9c1c33384e796f10b73905637ce", + "WBTC": "0x1f545487c62e5acfea45dcadd9c627361d1616d8", + "ETH": "0xa47f43de2f9623acb395ca4905746496d2014d57" + }, + "muuchain": { + "WMUU": "0x875358f6194d7c622d6355455f3137cceb2955c4" + }, + "iotex": { + "WIOTX": "0xa00744882684c3e4747faefd68d283ea44099d03", + "MCN": "0x3fe04320885e6124231254c802004871be681218", + "ELK": "0xe1ce1c0fa22ec693baca6f5076bcdc4d0183de1c", + "ioUSDT": "0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1", + "USDT_matic": "0x3cdb7c48e70b854ed2fa392e21687501d84b3afc", + "ioUSDC": "0x3b2bf2b523f54c4e454f08aa286d03115aff326c", + "USDC_matic": "0xc04da3a99d17135857bb937d2fbb321d3b6c6a81", + "USDT_b": "0x42c9255d5e522e83b16ea11a3ba04c2d3afca079", + "USDC_b": "0x037346e5a5722957ac2cab6ceb8c74fc18cea91d", + "BUSD_bsc": "0x84abcb2832be606341a50128aeb1db43aa017449", + "ioBUSD": "0xacee9b11cd4b3f57e58880277ac72c8c41abe4e4", + "DAI_matic": "0x62a9d987cbf4c45a550deed5b57b200d7a319632", + "ioDAI": "0x1cbad85aa66ff3c12dc84c5881886eeb29c1bb9b", + "anyXIM": "0xd6070ae98b8069de6b494332d1a1a81b6179d960", + "XIM": "0xec690cdd448e3cbb51ed135df72301c3265a8f80", + "CYC": "0x4d7b88403aa2f502bf289584160db01ca442426c", + "ioETH": "0x0258866edaf84d6081df17660357ab20a07d0c80", + "ioWBTC": "0xc7b93720f73b037394ce00f954f849ed484a3dea", + "GFT": "0x17df9fbfc1cdab0f90eddc318c4f6fcada730cf2", + "METX": "0x4752456e00def6025c77b55a88a2f8a1701f92f9", + "iMAGIC": "0x490cfbf9b9c43633ddd1968d062996227ef438a9", + "BNB_bsc": "0x97e6c48867fdc391a8dfe9d169ecd005d1d90283", + "ZOOM": "0x86702a7f8898b172de396eb304d7d81207127915", + "WMATIC": "0x8e66c0d6b70c0b23d39f4b21a1eac52bba8ed89a", + "iPEGG": "0x176cb5113b4885b3a194bd69056ac3fe37a4b95c", + "CIOTX": "0x99b2b0efb56e62e36960c20cd5ca8ec6abd5557a" + }, + "ronin": { + "WRON": "0xe514d9deb7966c8be0ca922de8a064264ea6bcd4", + "AXS": "0x97a9107c1793bc407d6f527b77e7fff4d812bece", + "SLP": "0xa8754b9fa15fc18bb59458815510e40a12cd2014", + "WETH": "0xc99a6a985ed2cac1ef41640596c5a5f9f4e19ef5", + "USDC": "0x0b7007c13325c48911f73a2dad5fa5dcbf808adc" + }, + "arbitrum_nova": { + "WETH": "0x722e8bdd2ce80a4422e880164f2079488e115365", + "DAI": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + "USDT": "0x52484e1ab2e2b22420a25c20fa49e173a26202cd", + "USDC": "0x750ba8b76187092b0d1e87e28daaf484d1b5273b" + }, + "ethpow": { + "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "BHC": "0x0c9f28fbdfd79f7c00b805d8c63d053c146d282c", + "WETHW": "0x7bf88d2c0e32de92cdaf2d43ccdc23e8edfd5990", + "USDC": "0x25de68ef588cb0c2c8f3537861e828ae699cd0db", + "USDT": "0x2ad7868ca212135c6119fd7ad1ce51cfc5702892", + "WBTC": "0x4bbd68d8b1f25ae7b460e3347c637fe9e7338e0c", + "ETH": "0x34a9c05b638020a07bb153bf624c8763bf8b4a86", + "DAI": "0x0b35d852dcb8b59eb1e8d3182ebad4e96e2df8f0", + "BNB": "0xbd1563046a90f18127fd39f3481fd8d6ab22877f", + "BUSD": "0xf61eb8999f2f222f425d41da4c2ff4b6d8320c87" + }, + "xdc": { + "xUSDT": "0xd4b5f10d61916bd6e0860144a91ac658de8a1437", + "WXDC": "0x951857744785e80e2de051c32ee7b25f9c458c42", + "XSP": "0x36726235dadbdb4658d33e62a249dca7c4b2bc68", + "SRX": "0x5d5f074837f5d4618b3916ba74de1bf9662a3fed", + "USNOTA": "0xd04275e2fd2875beaade6a80b39a75d4fe267df6", + "PLI": "0xff7412ea7c8445c46a8254dfb557ac1e48094391" + }, + "kardia": { + "WKAI": "0xaf984e23eaa3e7967f3c5e007fbe397d8566d23d", + "USDT": "0x551a5dcac57c66aa010940c2dcff5da9c53aa53b", + "KUSD_T": "0x92364ec610efa050d296f1eeb131f2139fb8810e" + }, + "empire": { + "USDC": "0xc61a71c75ed4742dcae74b8cac27a37d46fc6751" + }, + "boba_bnb": { + "USDC": "0x9f98f9f312d23d078061962837042b8918e6aff2", + "BOBA": "0x4200000000000000000000000000000000000006", + "BNB": "0x4200000000000000000000000000000000000023" + }, + "boba_avax": { + "USDC_e": "0x126969743a6d300bab08f303f104f0f7dbafbe20", + "WBOBA": "0x26c319b7b2cf823365414d082698c8ac90cbba63", + "AVAX": "0x4200000000000000000000000000000000000023" + }, + "omax": { + "WOMAX": "0xfebabc6a9b2ec46d6357879b8bf39b593f11a5b9" + }, + "wemix": { + "WWEMIX": "0x7d72b22a74a216af4a002a1095c8c707d6ec1c5f", + "WEMIX_": "0x8e81fcc2d4a3baa0ee9044e0d7e36f59c9bba9c1", + "KLAY": "0x461d52769884ca6235b685ef2040f47d30c94eb5", + "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d" + }, + "tlchain": { + "WTLC": "0x422b6cdf97c750a0edcddc39c88f25379e59e96e" + }, + "zeniq": { + "WZENIQ": "0x74dc1c4ec10abe9f5c8a3eabf1a90b97cdc3ead8" + }, + "dexit": { + "WDXT": "0x414b8baf9950c87804cf7e23bb43a58ae7e1e202" + }, + "step": { + "WFITFI": "0xb58a9d5920af6ac1a9522b0b10f55df16686d1b6", + "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", + "ETH": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", + "BNB": "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73" + }, + "flare": { + "WFLR": "0x1d80c49bbbcd1c0911346656b529df9e5c2f783d" + }, + "ibc": { + "JUNO": "EFF323CC632EC4F747C61BCE238A758EFDB7699C3226565F7C20DA06509D59A5", + "JUNO_1": "167E3D88D71B7D2F6308D3EF93FC3DD51932B2D9672D72B71418F61CBC5F5717", + "STRD": "3FDD002A3A4019B05A33D324B2F29748E77AF501BEA5C96D1F28B2D6755F9F25", + "BNB": "DADB399E742FCEE71853E98225D13E44E90292852CD0033DF5CABAB96F80B833", + "AXLWETH": "F1806958CA98757B91C3FA1573ECECD24F6FA3804F074A6977658914A49E65A3", + "AKT": "799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098", + "HUA": "E7807A46C0B7B44B350DA58F51F278881B863EC4DCA94635DAB39E52C30766CB", + "ATOM": "961FA3E54F5DCCA639F37A7C45F7BBE41815579EF1513B5AFBEFCFEB8F256352", + "ATOM_1": "C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9", + "ATOM_2": "27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2", + "USDC": "B3504E092456BA618CC28AC671A71FB08C6CA0FD0BE7C8A5B5A3E2DD933CC9E4", + "USDC_1": "E1616E7C19EA474C565737709A628D6F8A23FF9D3E9A7A6871306CF5E0A5341E", + "GRAV": "C950356239AD2A205DE09FDF066B1F9FF19A7CA7145EA48A5B19B76EE47E52F7", + "SCRT": "A358D7F19237777AF6D8AD0E0F53268F8B18AE8A53ED318095C14D6D7F3B2DB5", + "AXL": "903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E", + "AXL_1": "C01154C2547F4CB10A985EA78E7CD4BA891C1504360703A37E1D7043F06B5E1F", + "DOT": "624BA9DD171915A2B9EA70F69638B2CEA179959850C1A586F6C485498F29EDD4", + "DOT_1": "B37E4D9FB5B30F3E1E20A4B2DE2A005E584C5C822C44527546556AE2470B4539", + "ETH": "1B38805B1C75352B28169284F96DF56BDEBD9E8FAC005BDCC8CF0378C82AA8E7", + "CMST": "9EC8A1701813BB7B73BFED2496009ABB2C8BF187E6CDFA788D77F68E08BC05CD", + "OSMO": "EA7DF7F779C7F14E07172E5713E07356B55F01496CA649DDE46CF8FBF1A8466D", + "OSMO_1": "47BD209179859CDE4A2806763D7189B6E6FE13A17880FE2B42DE1E6C1E329E23", + "OSMO_2": "0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B", + "INJ": "5A76568E079A31FA12165E4559BA9F1E9D4C97F9C2060B538C84DCD503815E30", + "XPRT": "B786E7CBBF026F6F15A8DA248E0F18C62A0F7A70CB2DABD9239398C8B5150ABB", + "G-USDC": "CD01034D6749F20AAC5330EF4FD8B8CA7C40F7527AB8C4A302FBD2A070852EE1", + "STARS": "987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4", + "STARS_1": "4F393C3FCA4190C0A6756CE7F6D897D5D1BE57D6CCB80D0BC87393566A7B6602", + "CMDX": "3607EB5B5E64DD1C0E12E07F077FF470D5BC4706AFCBC98FE1BA960E5AE4CE07", + "CMDX_1": "EA3E1640F9B1532AB129A571203A0B9F789A7F14BB66E350DCBFA18E1A1931F0", + "EVMOS": "F3AA7EF362EC5E791FE78A0F4CCC69FEE1F9A7485EB1A8CAB3F6601C00522F10", + "EVMOS_1": "16618B7F7AC551F48C057A13F4CA5503693FBFF507719A85BC6876B8BD75F821", + "LUNA": "DA59C009A0B3B95E0549E6BF7B075C8239285989FF457A8EDDBB56F10B2A6986", + "AXLUSDC": "BFF0D3805B50D93E2FA5C0B2DDF7E0B30A631076CD80BC12A48C0E95404B4A41", + "AXLUSDC_1": "EAC38D55372F38F1AFD68DF7FE9EF762DCF69F26520643CF3F9D292A738D8034", + "AXLUSDC_2": "295548A78785A1007F232DE286149A6FF512F180AF5657780FC89C009E2C348F", + "UST": "B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C", + "UST_1": "6F4968A73F90CF7DE6394BF937D6DF7C7D162D74D839C13F53B41157D315E05F", + "G-WETH": "DBF5FA602C46392DE9F4796A0FC7D02F3A8A3D32CA3FAA50B761D4AA6F619E95", + "LUNA_1": "4627AD2524E3E0523047E35BB76CC90E37D9D57ACF14F0FCBCEB2480705F3CB8", + "LUNC": "B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395", + "IST": "CA1261224952DF089EFD363D8DBB30A8AB6D8CD181E60EE9E68E432F8DE14FE3", + "USDT": "CBF67A2BCF6CAE343FDF251E510C8E18C361FC02B23430C121116E0811835DEF", + "USDT_1": "F2331645B9683116188EF36FC04A809C28BD36B54555E8705A37146D0182F045", + "BLD": "11F940BCDFD7CFBFD7EDA13F25DA95D308286D441209D780C9863FD4271514EB" + }, + "starknet": { + "DAI": "0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", + "USDC": "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", + "USDT": "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", + "WBTC": "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac", + "ETH": "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7" + }, + "ton": { + "TON": "0x0000000000000000000000000000000000000000", + "TON_1": "EQDQoc5M3Bh8eWFephi9bClhevelbZZvWhkqdo80XuY_0qXv", + "TON_2": "Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF", + "TON_3": "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c", + "USDC": "EQC61IQRl0_la95t27xhIpjxZt32vl1QQVF2UgTNuvD18W-4", + "USDT": "EQC_1YoM8RBixN95lz7odcF3Vrkc_N8Ne7gQi7Abtlet_Efi", + "ETH": "EQAW42HutyDem98Be1f27PoXobghh81umTQ-cGgaKVmRLS7-" + }, + "defichain": { + "DFI": "DFI", + "DUSD": "DUSD", + "ETH": "ETH", + "BTC": "BTC", + "USDC": "USDC", + "USDT": "USDT" + }, + "elrond": { + "temp_12": "CYC-b4ed61", + "temp_13": "LPAD-84628f", + "temp_14": "EVLD-43f56f", + "temp_15": "FITY-73f8fc", + "temp_18": "erd1hmfwpvsqn8ktzw3dqd0ltpcyfyasgv8mr9w0qecnmpexyp280y8q47ca9d", + "temp_24": "UPARK-982dd6", + "SUPER": "SUPER-507aa6", + "WEGLD": "WEGLD-bd4d79", + "LAND": "LAND-40f26f", + "CHECKR": "CHECKR-60108b", + "ITHEUM": "ITHEUM-df6f26", + "ISET": "ISET-84e55e", + "MEX": "MEX-455c57", + "ASH": "ASH-a642d1", + "RIDE": "RIDE-7d18e9", + "QWT": "QWT-46ac01", + "AERO": "AERO-458bbf", + "VITAL": "erd1qqqqqqqqqqqqqpgq3ahw8fctzfnwgvq2g4hjsqzkkvgl9ksr2jps646dnj", + "TLC": "TLC-1a2357", + "BHAT": "BHAT-c1fde3", + "CRT": "CRT-52decf", + "BSK": "BSK-baa025", + "UTK": "UTK-2f80e9", + "ZPAY": "ZPAY-247875", + "KRO": "KRO-df97ec", + "EGLD": "0x0000000000000000000000000000000000000000", + "KOSON": "KOSON-5dd4fa", + "CTP": "CTP-298075" + }, + "bitindi": { + "WBNI": "0x15E162205421dc3A47b15A1A740FbF5EAbB77921" + }, + "core": { + "WCORE": "0x40375c92d9faf44d2f9db9bd9ba41a3317a2404f", + "USDT": "0x900101d06a7426441ae63e9ab3b9b0f63be145f1", + "USDC": "0xa4151b2b3e269645181dccf2d426ce75fcbdeca9" + }, + "crab": { + "WCRAB": "0x2d2b97ea380b0185e9fdf8271d1afb5d2bf18329" + }, + "lung": { + "WLUNG": "0xf51666bcb4b787df919395258fb1d9556f4e357b" + }, + "loop": { + "WLOOP": "0x3936D20a39eD4b0d44EaBfC91757B182f14A38d5" + }, + "rpg": { + "WRPG": "0x71d9cfd1b7adb1e8eb4c193ce6ffbe19b4aee0db" + }, + "map": { + "BUSD": "0x35bf4004c3fc9f509259d4942da6bae3669e1db1", + "WMAPO": "0x13cb04d4a5dfb6398fc5ab005a6c84337256ee23", + "USDC": "0x9f722b2cb30093f766221fd0d37964949ed66918", + "ETH": "0x05ab928d446d8ce6761e368c8e7be03c3168a9ec" + }, + "bone": { + "WBONE": "0xcda1fa23ff3b9b7172be82237bf662efb69437e9" + }, + "era": { + "WETH": "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", + "USDC": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4" + }, + "polygon_zkevm": { + "WETH": "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9", + "USDC": "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035" + }, + "eos_evm": { + "WEOS": "0xc00592aA41D32D137dC480d9f6d0Df19b860104F", + "ETH": "0x922d641a426dcffaef11680e5358f34d97d112e1", + "USDC": "0x765277eebeca2e31912c9946eae1021199b39c61", + "USDT": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", + "WBTC": "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73" + }, + "oas": { + "WOAS": "0x5200000000000000000000000000000000000001" + }, + "enuls": { + "WNULS": "0x217dffF57E3b855803CE88a1374C90759Ea071bD" + } +} \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f71239c23e..68f1a3af1a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -93,7 +93,7 @@ for (const [chain, mapping] of Object.entries(fixBalancesTokens)) normalizeMapping(mapping, chain) for (const [chain, mapping] of Object.entries(coreAssets)) - coreAssets[chain] = mapping.map(i => stripTokenHeader(i, chain)) + coreAssets[chain] = Object.values(mapping).map(i => stripTokenHeader(i, chain)) function getCoreAssets(chain = 'ethereum') { const tokens = [ diff --git a/utils/scripts/changeCoreAssetsFormat.js b/utils/scripts/changeCoreAssetsFormat.js new file mode 100644 index 0000000000..0ce1483633 --- /dev/null +++ b/utils/scripts/changeCoreAssetsFormat.js @@ -0,0 +1,44 @@ +const assets = require("../../projects/helper/coreAssets.json"); +const fs = require('fs') + +const sdk = require('@defillama/sdk') +const newJson = {} + +async function run() { + const entries = Object.entries(assets) + for (const entry of entries) { + console.log('for ', entry[0]) + await updateNames(entry) + fs.writeFileSync('./coreAssets.json', JSON.stringify(newJson, null, 2)) + } +} + +async function updateNames([chain, addresses]) { + const api = new sdk.ChainApi({ chain }) + if (!addresses.length) return; + const chainObj = {} + newJson[chain] = chainObj + if (!addresses[addresses.length -1].startsWith('0x') || ['starknet', 'aptos'].includes(chain)) { + addresses.forEach((v, i) => { + const key = 'temp_' + i + chainObj[key] = v + }) + console.log('------- non-evm chain: ', chain) + return; + } + const symbols = await api.multiCall({ abi: 'string:symbol', calls: addresses, permitFailure: true}) + addresses.forEach((v, i) => { + let key = symbols[i] + if (!key) { + key = v === '0x0000000000000000000000000000000000000000' ? 'null' : 'temp_' + i + } + key = key.replace(/\W+/g, '_') + chainObj[key] = v + }) +} + + +run().then(() => { + console.log('done') + process.exit(0) +}) \ No newline at end of file diff --git a/utils/scripts/changeCoreAssetsFormat2.js b/utils/scripts/changeCoreAssetsFormat2.js new file mode 100644 index 0000000000..f16407d771 --- /dev/null +++ b/utils/scripts/changeCoreAssetsFormat2.js @@ -0,0 +1,74 @@ +const assets = require("../../projects/helper/coreAssets.json"); +const fs = require('fs') +const axios = require('axios') + +const sdk = require('@defillama/sdk') +const newJson = {} + +async function run() { + const entries = Object.entries(assets) + for (const entry of entries) { + await getSymbols(entry) + fs.writeFileSync('./projects/helper/coreAssets.json', JSON.stringify(newJson, null, 2)) + } +} + +async function updateNames([chain, addresses]) { + if (!addresses.length) return; + const chainObj = {} + newJson[chain] = chainObj + if (!addresses[addresses.length -1].startsWith('0x') || ['starknet', 'aptos'].includes(chain)) { + addresses.forEach((v, i) => { + const key = 'temp_' + i + chainObj[key] = v + }) + console.log('------- non-evm chain: ', chain) + return; + } + const symbols = await api.multiCall({ abi: 'string:symbol', calls: addresses, permitFailure: true}) + addresses.forEach((v, i) => { + let key = symbols[i] + if (!key) { + key = v === '0x0000000000000000000000000000000000000000' ? 'null' : 'temp_' + i + } + key = key.replace(/\W+/g, '_') + chainObj[key] = v + }) +} + +async function getSymbols([chain, mapping]) { + newJson[chain] = mapping + let reverseMapping = {} + const tokens = Object.entries(mapping).map(([key, value]) => { + if (!key.startsWith('temp_')) return; + const key2 = chain + ':'+value + reverseMapping[key2] = key + return key2 + }).filter(i => i) + if (!tokens.length) return; + console.log('for ', chain, tokens) + const { data: { coins }} = await axios.get('https://coins.llama.fi/prices/current/'+tokens.join(',')) + const symbolSet = new Set() + Object.entries(coins).forEach(([key, { symbol }]) => { + const key2 = reverseMapping[key] + if (!key2) { + console.log('Bug: ',key, chain) + throw new Error('Fix this') + } + const value = mapping[key2] + delete mapping[key2] + let iterator = 0 + let label = symbol + while (symbolSet.has(label)) { + label = symbol + '_'+ ++iterator + } + symbolSet.add(label) + mapping[label] = value + }) + +} + +run().then(() => { + console.log('done') + process.exit(0) +}) \ No newline at end of file diff --git a/utils/scripts/formatAllAbis.js b/utils/scripts/formatAllAbis.js new file mode 100644 index 0000000000..de1b736f85 --- /dev/null +++ b/utils/scripts/formatAllAbis.js @@ -0,0 +1,76 @@ +const ethers = require('ethers') +const glob = require('glob') +const jsonfile = require('jsonfile') +const fs = require('fs') + +const rootFolder = '../../projects' + +// https://docs.soliditylang.org/en/latest/abi-spec.html +let knownTypes = [ + 'string', 'address', 'bool', + 'int', 'int8', 'int16', 'int32', 'int64', 'int128', 'int256', + 'uint', 'uint8', 'uint16', 'uint32', 'uint64', 'uint128', 'uint256', +]; + +([...knownTypes]).forEach(i => knownTypes.push(i + '[]')) // support array type for all known types +knownTypes = new Set(knownTypes) + +function run() { + glob(rootFolder + '/**/*.json', {}, async (e, files) => { + if (e) throw e + console.log('JSON file count', files.length) + const objs = files.map(file => ({ + file, + data: jsonfile.readFileSync(file) + })) + const isTransformables = objs.filter(i => isTransformable(i.data, i.file)) + const isNotTransformables = objs.filter(i => !isTransformable(i.data, i.file)).filter(i => Object.values(i.data).some(i => typeof i !== 'string')) + console.log(isNotTransformables.length) + const files2 = isNotTransformables.map(i => i.file) + console.log(JSON.stringify(files2, null, 2)) + // console.log(isTransformables.length) + const fileWriteOptions = { spaces: 2, finalEOL: false } + isTransformables.forEach(i => i.newData = transform(i.data, i.file)) + isTransformables.forEach(i => jsonfile.writeFile(i.file, i.newData, fileWriteOptions)) + }) +} + +const validStates = new Set(['view', 'pure', 'nonpayable']) +const isValidState = i => validStates.has(i.stateMutability) || i.constant === true + +function isTransformable(obj, file) { + if (typeof obj !== 'object' || Array.isArray(obj)) return false; + const values = Object.values(obj) + const isAbi0 = i => isValidState(i) + const isAbi = i => (i.stateMutability === 'view' || i.stateMutability === 'pure' || i.stateMutability === 'nonpayable') && i.type === 'function' + const i = values[0] + if (!isAbi0(i)) return false + const edgeCase = values.find(i => !isAbi(i)) + if (edgeCase) { + const first = Object.values(edgeCase).pop() + if (!Array.isArray(edgeCase) && !isAbi(first)) + console.log('edge case: ', file, edgeCase) + } + return !edgeCase +} + +function transform(obj, file) { + const res = {} + for (const [key, value] of Object.entries(obj)) { + if (!value.inputs) console.log('inputs missing', file) + const iLen = value.inputs.length === 0 + const oLen = value.outputs?.length === 1 + const oType = oLen && value.outputs[0].type + if (iLen && oLen && knownTypes.has(oType)) { + res[key] = `${oType}:${value.name}` + } else { + const iface = new ethers.utils.Interface([value]) + res[key] = iface.format(ethers.utils.FormatTypes.full)[0] + } + } + + return res +} + +run() + diff --git a/utils/scripts/tokenMapping.js b/utils/scripts/tokenMapping.js index 40fc7f253d..5436592c0a 100644 --- a/utils/scripts/tokenMapping.js +++ b/utils/scripts/tokenMapping.js @@ -1,6 +1,5 @@ const fs = require('fs') const { getUniqueAddresses, } = require('../../projects/helper/utils') -const { tokens, tokensBare, } = require('../../projects/helper/tokenMapping') const cacheFile = '../../../server/coins/src/adapters/tokenMapping.json' const coreAssetsFile = '../../projects/helper/coreAssets.json' const sdk = require('@defillama/sdk') @@ -23,12 +22,12 @@ const ibcMappings = {} const fixBalancesTokens = {} -run() +// run() -function writeToCache() { - fs.writeFileSync(cacheFile, JSON.stringify(cache, null, 2)) - fs.writeFileSync(coreAssetsFile, JSON.stringify(coreAssets, null, 2)) -} +// function writeToCache() { +// fs.writeFileSync(cacheFile, JSON.stringify(cache, null, 2)) +// fs.writeFileSync(coreAssetsFile, JSON.stringify(coreAssets, null, 2)) +// } function transformTo(address) { if (address.startsWith('0x')) return 'ethereum:' + address From a1a5768f3c2c32510566bc866a5fcaf9d6f7ddf5 Mon Sep 17 00:00:00 2001 From: slsdbuild Date: Sat, 29 Apr 2023 22:39:54 +0800 Subject: [PATCH 0144/1354] Add Adapter for SLSD Finance --- projects/slsd/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/slsd/index.js diff --git a/projects/slsd/index.js b/projects/slsd/index.js new file mode 100644 index 0000000000..b5373d24fc --- /dev/null +++ b/projects/slsd/index.js @@ -0,0 +1,29 @@ +const { staking } = require("../helper/staking"); +const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); +const FACTORY_CONTRACT = "0x253924C4D0806Fd6A81f72e0bEa400CD97c64700"; + +const SLSD_LP = '0x712Ed536645e66d0d8605d3cB22d1ed3b2Dc255B'; +const abis = { + "getStakingTokens": "function getStakingTokens() view returns (address[])", + "getStakingPoolAddress": "function getStakingPoolAddress(address) view returns (address)", +} + +async function tvl(_, _1, _2, { api }) { + const tokens = await api.call({ abi: abis.getStakingTokens, target: FACTORY_CONTRACT, }) + const owners = await api.multiCall({ abi: abis.getStakingPoolAddress, target: FACTORY_CONTRACT, calls: tokens }) + tokens.forEach((v, i) => { + if (v === nullAddress) { + tokens.push('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2') + owners.push(owners[i]) + } + }) + return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens: [SLSD_LP] }) +} + +module.exports = { + start: 17142918, + ethereum: { + tvl, + staking: staking('0xBE13DC5235a64d090E9c62952654DBF3c65199d9', SLSD_LP) + } +}; From 426665edd513d85bd0baee77a18416bc471e9f82 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 29 Apr 2023 16:09:42 +0100 Subject: [PATCH 0145/1354] fix comp event --- projects/compound-onchain/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/compound-onchain/index.js b/projects/compound-onchain/index.js index 3f88b0b7f0..b773c71d65 100644 --- a/projects/compound-onchain/index.js +++ b/projects/compound-onchain/index.js @@ -170,7 +170,7 @@ async function tvl(timestamp, block) { module.exports = { hallmarks: [ [1632873600, "Comptroller vulnerability exploit"], - [1623715200, "Liquidity mining begins"] + [1592226000, "COMP distribution begins"] ], timetravel: true, ethereum: { From 8ee07671ef4942896882ac343deb7f4be74fae3f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 29 Apr 2023 19:18:42 +0100 Subject: [PATCH 0146/1354] add binance lsd --- projects/binance-staked-eth/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/binance-staked-eth/index.js diff --git a/projects/binance-staked-eth/index.js b/projects/binance-staked-eth/index.js new file mode 100644 index 0000000000..e457a249cc --- /dev/null +++ b/projects/binance-staked-eth/index.js @@ -0,0 +1,10 @@ +const sdk = require("@defillama/sdk") +const token = '0xa2E3356610840701BDf5611a53974510Ae27E2e1' + +module.exports = { + ethereum: { + tvl: async (_, block) => ({ + "ethereum:0x0000000000000000000000000000000000000000": (await sdk.api.erc20.totalSupply({ target: token, block})).output + }) + } +} From 11b3d0e98cb1cc374e447aa52f4934af7685bed4 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 29 Apr 2023 19:22:09 +0100 Subject: [PATCH 0147/1354] add bsc lsd --- projects/binance-staked-eth/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/binance-staked-eth/index.js b/projects/binance-staked-eth/index.js index e457a249cc..4f193bb0bf 100644 --- a/projects/binance-staked-eth/index.js +++ b/projects/binance-staked-eth/index.js @@ -6,5 +6,10 @@ module.exports = { tvl: async (_, block) => ({ "ethereum:0x0000000000000000000000000000000000000000": (await sdk.api.erc20.totalSupply({ target: token, block})).output }) + }, + bsc: { + tvl: async (_, block, chainBlocks) => ({ + "ethereum:0x0000000000000000000000000000000000000000": (await sdk.api.erc20.totalSupply({ target: token, chain:"bsc", block: chainBlocks.bsc})).output + }) } } From 4da6bcdd229d32648444b3ba61955acf315accf1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Apr 2023 20:49:26 +0200 Subject: [PATCH 0148/1354] remove usage of existing token labels --- projects/cat-in-a-box/index.js | 3 +- projects/citrus/index.js | 6 +- projects/defisaver.js | 18 +-- projects/ether-fi/index.js | 4 +- projects/frakt/index.js | 6 +- projects/helper/cex.js | 11 +- projects/helper/chain/elrond.js | 11 +- projects/helper/coreAssets.json | 184 +++++------------------ projects/helper/solana.js | 7 +- projects/helper/tokenMapping.js | 26 ---- projects/injective/index.js | 49 +++--- projects/proteo-farms/index.js | 5 +- projects/treasury/gearbox.js | 19 ++- projects/unamano/index.js | 3 +- projects/zharta/index.js | 3 +- utils/scripts/changeCoreAssetsFormat2.js | 65 ++++---- utils/scripts/tokenMapping.js | 2 +- 17 files changed, 140 insertions(+), 282 deletions(-) diff --git a/projects/cat-in-a-box/index.js b/projects/cat-in-a-box/index.js index d23efa2025..d2f80c6dfd 100644 --- a/projects/cat-in-a-box/index.js +++ b/projects/cat-in-a-box/index.js @@ -1,11 +1,10 @@ const { sumTokensExport } = require('../helper/unwrapLPs') -const { tokensBare } = require('../helper/tokenMapping') module.exports = { ethereum: { tvl: sumTokensExport({ owners: [ '0x7f0A0C7149a46Bf943cCd412da687144b49C6014', '0x24146D1B3339Cf76b455dC42e71Ea5Cdff4aE0d7', - ], tokens: [tokensBare.steth]}) + ], tokens: ['0xae7ab96520de3a18e5e111b5eaab095312d7fe84']}) } } \ No newline at end of file diff --git a/projects/citrus/index.js b/projects/citrus/index.js index 5049d854d3..2f6583c0f9 100644 --- a/projects/citrus/index.js +++ b/projects/citrus/index.js @@ -1,4 +1,4 @@ -const { getProvider, tokens, } = require('../helper/solana'); +const { getProvider, } = require('../helper/solana'); const { Program } = require("@project-serum/anchor"); const { getConfig } = require('../helper/cache'); const axios = require("axios"); @@ -38,11 +38,11 @@ async function getStats() { } const tvl = async () => { - return { [tokens.solana]: (await getStats()).tvl } + return { ['solana:So11111111111111111111111111111111111111112']: (await getStats()).tvl } }; const borrowed = async () => { - return { [tokens.solana]: (await getStats()).borrowed } + return { ['solana:So11111111111111111111111111111111111111112']: (await getStats()).borrowed } } module.exports = { diff --git a/projects/defisaver.js b/projects/defisaver.js index 7b5c302523..37cf2eadb5 100644 --- a/projects/defisaver.js +++ b/projects/defisaver.js @@ -1,9 +1,9 @@ const defisaverABIs = require("./config/defisaver/abis"); const utils = require("./helper/utils"); -const { tokensBare, nullAddress, } = require("./helper/tokenMapping"); +const { nullAddress, } = require("./helper/tokenMapping"); const sdk = require('@defillama/sdk') -const dai = tokensBare.dai +const dai = '0x6b175474e89094c44da98b954eedeac495271d0f' const { CompoundSubscriptions, @@ -133,13 +133,13 @@ async function tvl(ts, block, _, { api }) { const assetMapping = { ETH: nullAddress, - DAI: tokensBare.dai, - BAT: tokensBare.BAT, - RETH: tokensBare.reth, - LINK: tokensBare.link, - WBTC: tokensBare.wbtc, - MATIC: tokensBare.matic, - WSTETH: tokensBare.wsteth, + DAI: '0x6b175474e89094c44da98b954eedeac495271d0f', + BAT: '0x0d8775f648430679a709e98d2b0cb6250d2887ef', + RETH: '0xae78736cd615f374d3085123a210448e74fc6393', + LINK: '0x514910771af9ca656af840dff83e8264ecf986ca', + WBTC: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + MATIC: '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', + WSTETH: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0' } module.exports = { diff --git a/projects/ether-fi/index.js b/projects/ether-fi/index.js index ee7430aa68..69385e9de0 100644 --- a/projects/ether-fi/index.js +++ b/projects/ether-fi/index.js @@ -1,12 +1,10 @@ -const { tokens } = require('../helper/tokenMapping') - module.exports = { misrepresentedTokens: true, ethereum: { tvl: async (_, _1, _2, { api }) => { const tvl = await api.call({ abi: 'uint256:getContractTVL', target: '0x7623e9DC0DA6FF821ddb9EbABA794054E078f8c4'}) return { - [tokens.ethereum]: tvl + 'ethereum:0x0000000000000000000000000000000000000000': tvl } } } diff --git a/projects/frakt/index.js b/projects/frakt/index.js index 243f10a66d..093832629d 100644 --- a/projects/frakt/index.js +++ b/projects/frakt/index.js @@ -1,4 +1,4 @@ -const { getProvider, getSolBalances, tokens, } = require('../helper/solana') +const { getProvider, getSolBalances, } = require('../helper/solana') const { Program, } = require("@project-serum/anchor"); const { getConfig } = require('../helper/cache') @@ -31,11 +31,11 @@ async function getData() { } const tvl = async () => { - return { [tokens.solana]: (await getData()).tvl } + return { ['solana:So11111111111111111111111111111111111111112']: (await getData()).tvl } }; const borrowed = async () => { - return { [tokens.solana]: (await getData()).borrowed } + return { ['solana:So11111111111111111111111111111111111111112']: (await getData()).borrowed } } module.exports = { diff --git a/projects/helper/cex.js b/projects/helper/cex.js index ef97cee71b..9bf6d6194f 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -1,4 +1,3 @@ -const { tokensBare, } = require('./tokenMapping') const { nullAddress } = require('./unwrapLPs') const { sumTokensExport } = require('../helper/sumTokens') const sdk = require('@defillama/sdk') @@ -6,11 +5,11 @@ const sdk = require('@defillama/sdk') const defaultTokens = { ethereum: [ nullAddress, - tokensBare.usdt, - tokensBare.usdc, - tokensBare.link, - tokensBare.dai, - tokensBare.wbtc, + '0xdac17f958d2ee523a2206206994597c13d831ec7', + '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + '0x514910771af9ca656af840dff83e8264ecf986ca', + '0x6b175474e89094c44da98b954eedeac495271d0f', + '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', '0x0000000000085d4780B73119b644AE5ecd22b376', // TUSD '0x4fabb145d64652a948d72533023f6e7a623c7c53', // BUSD '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', // MATIC diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index ea8bd03068..c9fb46e3cd 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -1,5 +1,5 @@ const { get, graphQuery } = require('../http') -const { getCoreAssets, tokens: TOKENS } = require('../tokenMapping') +const { getCoreAssets, } = require('../tokenMapping') const { transformBalances } = require('../portedTokens') const sdk = require('@defillama/sdk') const chain = 'elrond' @@ -33,6 +33,7 @@ async function getElrondBalance(address) { const { data: { account: { balance } } } = await get(`${API_HOST}/address/${address}`) return balance } +const nullAddress = '0x0000000000000000000000000000000000000000' async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [] }) { const prices = await getTokenPrices() @@ -45,10 +46,10 @@ async function getTokens({ address, balances = {}, tokens = [], blacklistedToken if (blacklistedTokens.includes(token)) return; // skip blacklisted tokens if (!coreAssets.has(token)) { if (i.valueUsd) - return sdk.util.sumSingleBalance(balances, TOKENS.usdt, i.valueUsd * 1e6) + return sdk.util.sumSingleBalance(balances, 'ethereum:0xdac17f958d2ee523a2206206994597c13d831ec7', i.valueUsd * 1e6) if (prices[token]) - return sdk.util.sumSingleBalance(balances, TOKENS.null, (prices[token] * i.balance).toFixed(0), chain) + return sdk.util.sumSingleBalance(balances, nullAddress, (prices[token] * i.balance).toFixed(0), chain) } return sdk.util.sumSingleBalance(balances, token, i.balance / (10 ** i.decimals), chain) }) @@ -62,10 +63,10 @@ async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedT } await Promise.all(owners.map(i => getTokens({ address: i, balances, tokens, blacklistedTokens, }))) - if (!tokens.length || tokens.includes(TOKENS.null)) + if (!tokens.length || tokens.includes(nullAddress)) await Promise.all(owners.map(async i => { const bal = await getElrondBalance(i) - sdk.util.sumSingleBalance(balances, TOKENS.null, bal, chain) + sdk.util.sumSingleBalance(balances, nullAddress, bal, chain) })) return transformBalances(chain, balances) } diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 9acd02c898..f727f5d95d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1,47 +1,34 @@ { + "null": "0x0000000000000000000000000000000000000000", "ethereum": { "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "WSTETH": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + "STETH": "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", "USDC": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "LINK": "0x514910771af9ca656af840dff83e8264ecf986ca", + "MATIC": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", + "BAT": "0x0d8775f648430679a709e98d2b0cb6250d2887ef", + "RETH": "0xae78736cd615f374d3085123a210448e74fc6393", + "USDT": "0xdac17f958d2ee523a2206206994597c13d831ec7", "UNI": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", "AAVE": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", "WBTC": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", "SNX": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", "YFI": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", "DAI": "0x6b175474e89094c44da98b954eedeac495271d0f", - "XMON": "0x3aada3e213abf8529606924d8d1c55cbdc70bf74", - "CONV": "0xc834fa996fa3bec7aad3693af486ae53d8aa8b50", "cvxFXS": "0xfeef77d3f69374f66429c91d732a244f074bdf74", "BNB": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", - "BXH": "0xeb637a9ab6be83c7f8c79fdaa62e1043b65534f0", "tBTC": "0x18084fba666a33d37592fa2633fd49a74dd93a88", - "kUSD": "0xef779cf3d260dbe6177b30ff08b10db591a6dd9c", - "fUSD": "0x42ef9077d8e79689799673ae588e046f8832cb95", - "tWETH": "0xd3d13a578a53685b4ac36a1bab31912d2b2a2f36", - "tFRAX": "0x94671a3cee8c7a12ea72602978d1bb84e920efb2", - "tGAMMA": "0x2fc6e9c1b2c07e18632efe51879415a580ad22e1", - "tSNX": "0xeff721eae19885e17f5b80187d6527aad3ffc8de", - "tAPW": "0xdc0b02849bb8e0f126a216a2840275da829709b0", - "tTCR": "0x15a629f0665a3eb97d7ae9a7ce7abf73aeb79415", - "tFOX": "0x808d3e6b23516967ceae4f17a5f9038383ed5311", - "tSUSHI": "0xf49764c9c5d644ece6ae2d18ffd9f1e902629777", - "tALCX": "0xd3b5d9a561c293fb42b446fe7e237daa9bf9aa84", - "tFXS": "0xadf15ec41689fc5b6dca0db7c53c9bfe7981e655", - "XSTUSD": "0xc7d9c108d4e1dd1484d3e2568d7f74bfd763d356", - "stkDYDX": "0x65f7ba4ec257af7c55fd5854e5f6356bbd0fb8ec", "USX": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", - "TIC": "0x2163383c1f4e74fe36c50e6154c7f18d9fd06d6f", - "sJPY": "0xf6b1c627e95bfc3c1b4c9b825a032ff0fbf3e07d", - "NEUY": "0xa80505c408c4defd9522981cd77e026f5a49fe63", - "sGBP": "0x97fe22e7341a0cd8db6f6c021a24dc8f4dad855f", - "sCHF": "0x0f83287ff768d1c1e17a42f44d644d7f22e8ee1d", - "EURN": "0x9fcf418b971134625cdf38448b949c8640971671", - "wibBTC": "0x8751d4196027d4e6da63716fa7786b5174f04c15", - "ARDN": "0xb1c9bc94acd2fae6aabf4ffae4429b93512a81d2", - "PAD": "0x5067006f830224960fb419d7f25a3a53e9919bb0", "TOKE": "0x2e9d63788249371f1dfc918a52f8d799f4a38c94", - "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "maDAI": "0x36f8d0d0573ae92326827c4a82fe4ce4c244cab6" + "TUSD": "0x0000000000085d4780B73119b644AE5ecd22b376", + "BUSD": "0x4fabb145d64652a948d72533023f6e7a623c7c53", + "INU": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "LIDO": "0x5a98fcbea516cf06857215779fd812ca3bef1b32", + "MKR": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", + "CRV": "0xd533a949740bb3306d119cc777fa900ba034cd52", + "FTM": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", + "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" }, "fantom": { "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", @@ -49,19 +36,8 @@ "fUSDT": "0x049d68029688eabf473097a2fc38ef61633a3c7a", "DAI": "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", "MIM": "0x82f0b8b456c1a451378467398982d4834b6829c1", - "FETH": "0x658b0c7613e890ee50b8c4bc6a3f41ef411208ad", - "mooFantomBIFI": "0xbf07093ccd6adfc3deb259c557b61e94c1f66945", - "mooScreamETH": "0x0a03d2c1cfca48075992d810cc69bd9fe026384a", - "mooScreamWBTC": "0x97927abfe1abbe5429cbe79260b290222fc9fbba", - "mooScreamLINK": "0x6dfe2aaea9daadadf0865b661b53040e842640f8", - "mooScreamDAI": "0x920786cff2a6f601975874bb24c63f0115df7dc8", - "mooScreamFTM": "0x49c68edb7aebd968f197121453e41b8704acde0c", - "mooBinSPIRIT": "0x7345a537a975d9ca588ee631befddfef34fd5e8f", "renBTC": "0xdbf31df14b66535af65aac99c32e9ea844e14501", - "USDL_Stablecoin": "0x4a89338a2079a01edbf5027330eac10b615024e5", - "Fantom_L": "0xc0d9784fdba39746919bbf236eb73bc015fd351d", "cUSD": "0xe3a486c1903ea794eed5d5fa0c9473c7d7708f40", - "SINGLE": "0x8cc97b50fe87f31770bcdcd6bc8603bc1558380b", "anyUSDC": "0x95bf7e307bc1ab0ba38ae10fc27084bc36fcd605", "nUSD": "0xc5cd01e988cd0794e05ab80f2bcdbdf13ce08bd3", "nICE": "0x7f620d7d0b3479b1655cefb1b0bc67fb0ef4e443" @@ -82,6 +58,7 @@ "avax": { "WAVAX": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", "USDC": "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", + "DAI": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", "USDT_e": "0xc7198437980c041c805a1edcba50c1ce5db95118", "USDt": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", "BTC_b": "0x152b9d0fdc40c096757f570a51e494bd4b943e50", @@ -93,49 +70,25 @@ "xJOE": "0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33", "LVTX": "0x574679ec54972cf6d705e0a71467bb5bb362919d", "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", - "mooAaveAVAX": "0x1b156c5c75e9df4caab2a5cc5999ac58ff4f9090", - "mooAaveUSDC_e": "0xd795d70ec3c7b990ffed7a725a18be5a9579c3b9", - "mooAaveUSDT_e": "0xb6767518b205ea8b312d2ef4d992a2a08c2f2416", - "mooAaveDAI_e": "0xaf9f33df60ca764307b17e62dde86e9f7090426c", - "mooPangolinV2PNG": "0x808d5f0a62336917da14fa9a10e9575b1040f71c", - "sdav3CRV": "0x0665ef3556520b21368754fb644ed3ebf1993ad4", - "BXH": "0x90a424754ad0d72cebd440faba18cdc362bfe70a", - "mDAI": "0x9debca6ea3af87bf422cea9ac955618ceb56efb4" + "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd" }, "bsc": { - "WBNB": "0xea7a82e0bc636667ab5c65623cd1438370620c3e", + "WBNB": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + "BTCB": "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", + "BETH": "0x250632378e573c6be1ac2f97fcdf00515d0aa91b", "BUSD": "0xe9e7cea3dedca5984780bafc599bd69add087d56", + "BTUSD": "0x14016e85a25aeb13065688cafb43044c2ef86784", "USDC": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", "USDT": "0x55d398326f99059ff775485246999027b3197955", "ETH": "0x2170ed0880ac9a755fd29b2688956bd959f933f8", "AURA": "0x23c5d1164662758b3799103effe19cc064d897d6", "C98": "0xaec945e04baf28b135fa7c640f624f8d90f1c3a6", - "MOCHI": "0x055dab90880613a556a5ae2903b2682f8a5b8d27", - "bMOCHI": "0x2d0e75b683e8b56243b429b24f2b08bcc1ffd8da", "NMX": "0xd32d01a43c869edcd1117c640fbdcfcfd97d9d65", - "PinkS": "0x702b3f41772e321aaccdea91e1fcef682d21125d", - "Warden": "0x0feadcc3824e7f3c12f40e324a60c23ca51627fc", - "WSPP": "0x46d502fac9aea7c5bc7b13c8ec9d02378c33d36f", - "ABS": "0xf83849122f769a0a7386df183e633607c890f6c0", - "ZERO": "0x1f534d2b1ee2933f1fdf8e4b63a44b2249d77eaf", - "AFP": "0x9a3321e1acd3b9f6debee5e042dd2411a1742002", - "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "PAX": "0xb7f8cd00c5a06c0537e2abff0b58033d02e5e094", - "2030Floki": "0xa35d95872d8eb056eb2cbd67d25124a6add7455e", - "BTCBR": "0x0cf8e180350253271f4b917ccfb0accc4862f262", - "DFL": "0x6ded0f2c886568fb4bb6f04f179093d3d167c9d7", "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "USV": "0xaf6162dc717cfc8818efc8d6f46a41cf7042fcba", - "RADIO": "0x30807d3b851a31d62415b8bb7af7dca59390434a", "MAHA": "0xce86f7fcd3b40791f63b86c3ea3b8b355ce2685b", - "BUSDUSDC_APE_LP_S": "0xbb9858603b1fb9375f6df972650343e985186ac5", - "BUSDUSDT_APE_LP_S": "0xc5fb6476a6518dd35687e0ad2670cb8ab5a0d4c5", "valBUSD": "0xaed19dab3cd68e4267aec7b2479b1ed2144ad77f", "valUSDC": "0xa6fdea1655910c504e974f7f1b520b74be21857b", "valUSDT": "0x5f7f6cb266737b89f7af86b30f03ae94334b83e9", - "PAID": "0x532197ec38756b9956190b845d99b4b0a88e4ca9", - "BXH": "0x6d1b7b59e3fab85b7d3a3d86e505dd8e349ea7f3", "SPICE": "0x42586ef4495bb512a86cf7496f6ef85ae7d69a64", "iZi": "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", "iUSD": "0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d", @@ -144,56 +97,26 @@ "beltBTC": "0x51bd63f240fb13870550423d208452ca87c44444", "beltETH": "0xaa20e8cb61299df2357561c2ac2e1172bc68bc25", "YGG": "0x13ab6739368a4e4abf24695bf52959224367391f", - "ibBNB": "0xd7d069493685a581d27824fc46eda46b7efc0063", - "ibBUSD": "0x7c9e73d4c71dae564d41f78d56439bb4ba87592f", - "ibUSDT": "0x158da805682bdc8ee32d52833ad41e74bb951e59", - "ibBTCB": "0x08fc9ba2cac74742177e0afc3dc8aed6961c24e7", - "ibETH": "0xbff4a34a4644a113e8200d7f1d79b3555f723afe", - "ibTUSD": "0x3282d2a151ca00bfe7ed17aa16e42880248cd3cd", - "ibALPACA": "0xf1be8ecc990cbcb90e166b71e368299f0116d421", - "aUST": "0x8b04e56a8cd5f4d465b784ccf564899f30aaf88c", "IVN": "0x6a46d878401f46b4c7f665f065e0667580e031ec", - "1MIL": "0xa4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016", - "APYS": "0x37dfacfaeda801437ff648a1559d73f4c40aacb7", - "BRZ": "0x5b1a9850f55d9282a7c4bf23a2a21b050e3beb2f", - "jBRL": "0x316622977073bbc3df32e7d2a9b3c77596a0a603", - "AUSD": "0xdcecf0664c33321ceca2effce701e710a2d28a3f", - "deUSDC": "0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa", - "axlUSDC": "0x4268b8f0b87b6eae5d897996e6b845ddbd99adf3", - "dEPX": "0x772f317ec695ce20290b56466b3f48501ba81352", - "RAILBSC": "0x3f847b01d4d498a293e3197b186356039ecd737f", "ankrBNB": "0xe85afccdafbe7f2b096f268e31cce3da8da2990a", "aBNBb": "0xbb1aa6e59e5163d8722a122cd66eba614b59df0d" }, "polygon": { "WMATIC": "0xfd28c7cea3c50a060cb4c0059e453c6d4dd9829d", + "WMATIC_1": "0x0000000000000000000000000000000000001010", "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + "QUICK": "0xb5c064f955d8e7f38fe0460c556a72987494ee17", + "WBTC": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", "USDT": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", "DAI": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "WETH": "0x6cacfaf65b1b1f9979acf463a393a112d0980982", - "MYT": "0x4535e52cdf3ab787b379b7b72b5990767e6747e4", - "MMF": "0x22a31bd4cb694433b6de19e0acc2899e553e9481", - "iZi": "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", + "WETH_1": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", "DINO": "0xaa9654becca45b5bdfa5ac646c939c62b527d394", "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", - "moUSD": "0x9fffb2f49adfc231b44ddcff3ffcf0e81b06430a", "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", - "sUSDC_e": "0x8eb3771a43a8c45aabe6d61ed709ece652281dc9", "RADIO": "0x613a489785c95afeb3b404cc41565ccff107b6e0", - "deUSDC": "0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa", "YIN": "0x794baab6b878467f93ef17e2f2851ce04e3e34c8", - "mOCEAN": "0x282d8efce846a88b159800bd4130ad77443fa1a1", - "XSGD": "0x769434dca303597c8fc4997bf3dab233e961eda2", - "wTCAD": "0x6d3cc56dfc016151ee2613bdde0e03af9ba885cc", - "wTAUD": "0xe4f7761b541668f88d04fe9f2e9df10ca613aef7", - "wTGBP": "0x81a123f10c78216d32f8655eb1a88b5e9a3e9f2f", - "POP": "0xc5b57e9a1e7914fda753a88f24e5703e617ee50c", - "pLEO": "0xf826a91e8de52bc1baf40d88203e572dc2551aa3", - "pSPS": "0x28cead9e4ff96806c79f4189ef28fc61418e2216", - "rUSD": "0xfc40a4f89b410a1b855b5e205064a38fc29f5eb5", - "APYS": "0x14743e1c6f812154f7ecc980d890f0f5234103e7", "BNB": "0x5c4b7ccbf908e64f32e12c6650ec0c96d717f03f", - "IS3USD": "0xb4d09ff3da7f9e9a2ba029cb0a81a989fd7b8f17", "BUSD": "0x9c9e5fd8bbc25984b178fdce6117defa39d2db39", "WORK": "0x6002410dda2fb88b4d0dc3c1d562f7761191ea80" }, @@ -217,7 +140,6 @@ "BTCK": "0x54e4622dc504176b3bb432dccaf504569699a7ff", "ETHK": "0xef71ca2ee68f45b9ad6f72fbdb33d707b872315c", "OKB": "0xdf54b6c6195ea4d948d03bfd818d365cf175cfc2", - "KST": "0xab0d1578216a545532882e420a8c61ea07b00b12", "CHE": "0x8179d97eb6488860d816e3ecafe694a4153f216c", "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c" }, @@ -228,12 +150,10 @@ "DAI_HECO": "0x3d760a45d0887dfd89a2f5385a236b29cb46ed2a", "USDC_HECO": "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", "COMP": "0xce0a5ca134fb59402b723412994b30e02f083842", - "lDOGE": "0x1ee8382be3007bd9249a89f636506284ddef6cc0", "DOGE": "0x40280e26a572745b1152a54d1d44f365daa51618", "TUSD": "0x5ee41ab6edd38cdfb9f6b4e6cf7f75c87e170d98", "XRP": "0xa2f3c2446a3e20049708838a779ff8782ce6645a", - "ADA": "0x843af718ef25708765a8e0942f89edeae1d88df0", - "APYS": "0x90e8896b12a92d51cd213b681c2cad83a9a6bd49" + "ADA": "0x843af718ef25708765a8e0942f89edeae1d88df0" }, "hoo": { "wHOO": "0x3eff9d389d13d6352bfb498bcf616ef9b1beac87" @@ -242,13 +162,12 @@ "JEWEL": "0x72cb10c6bfa5624dd07ef608027e366bd690048f", "MIS": "0xd74433b187cf0ba998ad9be3486b929c76815215", "WONE": "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", - "hMOCHI": "0x0dd740db89b9fda3baadf7396ddad702b6e8d6f5", "xJEWEL": "0xa9ce83507d872c5e1273e745abcfda849daa654f", "AVAX": "0xb12c13e66ade1f72f71834f2fc5082db8c091358", - "RVRS": "0xed0b4b0f0e2c17646682fc98ace09feb99af3ade", "VIPER": "0xea589e93ff18b1a1f1e9bac7ef3e86ab62addc79" }, "optimism": { + "OP": "0x4200000000000000000000000000000000000042", "WETH": "0x121ab82b49b2bc4c7901ca46b8277962b4350204", "BitANT": "0x5029c236320b8f15ef0a657054b84d90bfbeded3", "FEI": "0x35d48a789904e9b15705977192e5d95e2af7f1d3", @@ -257,10 +176,10 @@ "FRAX": "0x2e3d870790dc77a83dd1d18184acc7439a53f475", "gOHM": "0x0b5740c6b4a97f90ef2f0220651cca420b868ffb", "sUSD": "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9", - "sLINK": "0xc5db22719a06418028a40a9b5e9a7c02959d0d08", "sETH": "0xe405de8f52ba7559f9df3c368500b6e6ae6cee49", "USDT": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - "sBTC": "0x298b9b95708152ff6968aafd889c6586e9169f1d" + "USDC": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "DAI": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" }, "moonriver": { "WMOVR": "0xe3c7487eb01c74b73b7184d198c7fbf46b34e5af", @@ -281,7 +200,6 @@ "USDT": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", "WETH": "0x6959027f7850adf4916ff5fdc898d958819e5375", "WBTC": "0xe57ebd2d67b462e9926e04a8e33f01cd0d64346d", - "DAI": "0xc234a67a4f840e61ade794be47de455361b52413", "MOVR": "0x1d4c2a246311bb9f827f4c768e277ff5787b7d7e", "xcUSDT": "0xffffffffea09fb06d082fd1275cd48b191cbcd1d", "BEPRO": "0x4edf8e0778967012d46968ceadb75436d0426f88", @@ -297,7 +215,6 @@ "ARBY": "0x09ad12552ec45f82be90b38dfe7b06332a680864", "MIM": "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", "renBTC": "0xdbf31df14b66535af65aac99c32e9ea844e14501", - "XDO": "0x9ef758ac000a354479e538b8b2f01b917b8e89e7", "DFL": "0x31635a2a3892daec7c399102676e344f55d20da7", "FEI": "0x4a717522566c7a09fd2774ccedc5a8c43c5f9fd2", "nUSD": "0x2913e812cf0dcca30fb28e6cac3d2dcff4497688", @@ -362,7 +279,6 @@ "WMETIS": "0x71802e8f394bb9d05a1b8e9d0562917609fd7325", "m_USDT": "0xbb06dca3ae6887fabf931640f67cab3e3a16f4dc", "WETH": "0x420000000000000000000000000000000000000a", - "USDO": "0x5801d0e1c7d977d78e4890880b8e579eb4943276", "m_USDC": "0xea32a96608495e54156ae48931a7c20f0dcc1a21", "BNB": "0x2692be44a6e38b698731fddf417d060f0d20a0cb", "WBTC": "0xa5b55ab1daf0f8e1efc0eb1931a957fd89b918f4", @@ -450,11 +366,9 @@ }, "klaytn": { "WKLAY": "0x57d1a61e4fd09fbf16e35b04959e94dcf2032974", - "oDON": "0x5388ce775de8f7a69d17fd5caa9f7dbfee65dfce", "BORA": "0x02cbe46fb8a1f579254a9b485788f2d86cad51aa", "DAI": "0xcb2c7998696ef7a582dfd0aafadcd008d03e791a", "USDC": "0x608792deb376cce1c9fa4d0e6b7b44f507cffa6a", - "IJM": "0x0268dbed3832b87582b1fa508acf5958cbb1cd74", "USDT": "0x5c13e303a62fc5dedf5b52d66873f2e59fedadc2", "pUSD": "0x168439b5eebe8c83db9eef44a0d76c6f54767ae4", "KSD": "0x4fa62f1f404188ce860c8f0041d6ac3765a72e67", @@ -483,9 +397,7 @@ "NPT": "0xe06597d02a2c3aa7a9708de2cfa587b128bd3815" }, "nova": { - "WSNT": "0x657a66332a65b535da6c5d67b8cd1d410c161a08", - "NUSD": "0x1f5396f254ee25377a5c1b9c6bff5f44e9294fff", - "null": "0x0000000000000000000000000000000000000000" + "NUSD": "0x1f5396f254ee25377a5c1b9c6bff5f44e9294fff" }, "aurora": { "WETH": "0x274d83086c356e0cfc75933fbf838ca10a7e8274", @@ -515,8 +427,7 @@ "AKT": "0x39a65a74dc5a778ff93d1765ea51f57bc49c81b3", "SHIB": "0xbed48612bc69fa1cab67052b42a95fb30c1bcfee", "ATOM": "0xb888d8dd1733d72681b30c00ee76bde93ae7aa93", - "ELON": "0x02dccaf514c98451320a9365c5b46c61d3246ff3", - "CRK": "0x065de42e28e42d90c2052a1b49e7f83806af0e1f" + "ELON": "0x02dccaf514c98451320a9365c5b46c61d3246ff3" }, "velas": { "WVLX": "0xe41c4324dcbd2926481101f8580d13930aff8a75", @@ -552,6 +463,7 @@ "SOL": "So11111111111111111111111111111111111111112", "BONK": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", "USDC": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "USDT": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", "pSOL": "9EaLkQrbjmbbuZG9Wdpo8qfNUEjHATJFSycEmw6f1rGX", "APT": "6LNeTYMqtNm1pBFN8PfhQaoLyegAH8GD32WmHU9erXKN", "DAI": "EjmyN6qEC1Tf1JxiG1ae7UTJhUxSwk1TCWNWqxWV4J6o", @@ -579,7 +491,6 @@ "ARSW": "0xde2578edec4669ba7f41c5d5d2386300bcea4678", "DOT": "0xffffffffffffffffffffffffffffffffffffffff", "DAI": "0x6de33698e9e9b787e09d3bd7771ef63557e148bb", - "ORU": "0xcdb32eed99aa19d39e5d6ec45ba74dc4afec549f", "MUUU": "0xc5bcac31cf55806646017395ad119af2441aee37", "NIKA": "0x6df98e5fbff3041105cb986b9d44c572a43fcd22", "oUSD": "0x29f6e49c6e3397c3a84f715885f9f233a441165c", @@ -587,7 +498,6 @@ "LAY": "0xc4335b1b76fa6d52877b3046eca68f6e708a27dd", "lUSDT": "0x430d50963d9635bbef5a2ff27bd0bddc26ed691f", "nASTR": "0xe511ed88575c57767bafb72bfd10775413e3f2b0", - "ESW": "0xb361dad0cc1a03404b650a69d9a5adb5af8a531f", "lUSDC": "0xc404e12d3466accb625c67dbab2e1a8a457def3c", "lDAI": "0x4dd9c468a44f3fef662c35c1e9a6108b70415c2c", "aBaiUsdc": "0xdbd71969ac2583a9a20af3fb81fe9c20547f30f3", @@ -681,11 +591,9 @@ "near": { "JUMBO": "token.jumbo_exchange.near", "PARAS": "token.paras.near", - "MARMAJ": "marmaj.tkn.near", "LINA": "linear-protocol.near", "PEMBROCK": "token.pembrock.near", - "BURROW": "token.burrow.near", - "MMRJ": "token.marmaj.near" + "BURROW": "token.burrow.near" }, "multivac": { "WMTV": "0x8e321596267a4727746b2f48bc8736db5da26977", @@ -794,14 +702,11 @@ "USDT": "0x7f8e71dd5a7e445725f0ef94c7f01806299e877a", "WBTC": "0xd0c6179c43c00221915f1a61f8ec06a5aa32f9ec", "FRAX": "0x10d70831f9c3c11c5fe683b2f1be334503880db6", - "FXS": "0x97513e975a7fa9072c72c92d8000b0db90b163c5", "BUSD": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", "BNB": "0x1fc532187b4848d2f9c564531b776a4f8e11201d", "QUICK": "0xb12c13e66ade1f72f71834f2fc5082db8c091358", "MATIC": "0xdc42728b0ea910349ed3c6e1c9dc06b5fb591f98", - "WETH": "0x9f4614e4ea4a0d7c4b1f946057ec030bee416cbb", - "_SAVIOR": "0xbfbb7b1d22ff521a541170cafe0c9a7f20d09c3b", - "DTools": "0x1df5c9b7789bd1416d005c15a42762481c95edc2" + "WETH": "0x9f4614e4ea4a0d7c4b1f946057ec030bee416cbb" }, "canto": { "WCANTO": "0x826551890dc65655a0aceca109ab11abdbd7a07b", @@ -858,7 +763,6 @@ "USDT": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", "JPYC": "0x735abe48e8782948a37c7765ecb76b98cde97b0f", "STND": "0x722377a047e89ca735f09eb7cccab780943c4cb4", - "ESW": "0xb4bca5955f26d2fa6b57842655d7acf2380ac854", "ETH": "0x765277eebeca2e31912c9946eae1021199b39c61", "BNB": "0x332730a4f6e03d9c55829435f10360e13cfa41ff", "BUSD": "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a" @@ -872,13 +776,13 @@ "wMATIC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-11", "MYH": "KT1BB1uMwVvJ1M3vVHXWALs1RWdgTp1rnXTR", "kUSD": "KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV", - "USDT.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-3", + "USDT_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-3", "PXL": "KT1F1mn2jbqQCJcsNgYKVAQjvenecNMY2oPK", - "WBTC.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-1", + "WBTC_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-1", "kDAO": "KT1JkoE42rrMBP9b2oDhbx6EUr26GcySZMUH", "STKR": "KT1AEfeckNbdEYwaMKkytBwPJPycz7jdSGea", "wXTZ": "KT1VYsVfmobT7rsMVivvZ4J8i3bPiqz12NaH", - "MATIC.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-4", + "MATIC_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-4", "hDAO": "KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW", "WRAP": "KT1LRboPna9yQY9BrjtQYDS1DVxhKESK4VVd", "wBUSD": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-1", @@ -887,14 +791,14 @@ "wUSDC": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-17", "QUIPU": "KT193D4vozYnhGJQVtw7CoxxqphqUEEwK6Vb", "wWETH": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-20", - "USDC.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-2", + "USDC_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-2", "PLENTY": "KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b", "wUSDT": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-18", "wDAI": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-5", "SMAK": "KT1TwzD6zV3WeJ39ukuqxcfK2fJCnhvrdN1X", - "LINK.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-5", + "LINK_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY-5", "DOGA": "KT1Ha4yFVeyzw6KRAdkzq6TxDHB97KG4pZe8", - "WETH.e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY", + "WETH_e": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY", "INSTA": "KT19y6R8x53uDKiM46ahgguS6Tjqhdj2rSzZ", "GIF": "KT1XTxpQvo7oRCqp85LikEZgAZ22uDxhbWJv", "UNO": "KT1ErKVqEhG9jxXgUG2KGLW3bNM7zXHX8SDF", @@ -1089,7 +993,6 @@ }, "iotex": { "WIOTX": "0xa00744882684c3e4747faefd68d283ea44099d03", - "MCN": "0x3fe04320885e6124231254c802004871be681218", "ELK": "0xe1ce1c0fa22ec693baca6f5076bcdc4d0183de1c", "ioUSDT": "0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1", "USDT_matic": "0x3cdb7c48e70b854ed2fa392e21687501d84b3afc", @@ -1112,7 +1015,6 @@ "BNB_bsc": "0x97e6c48867fdc391a8dfe9d169ecd005d1d90283", "ZOOM": "0x86702a7f8898b172de396eb304d7d81207127915", "WMATIC": "0x8e66c0d6b70c0b23d39f4b21a1eac52bba8ed89a", - "iPEGG": "0x176cb5113b4885b3a194bd69056ac3fe37a4b95c", "CIOTX": "0x99b2b0efb56e62e36960c20cd5ca8ec6abd5557a" }, "ronin": { @@ -1266,12 +1168,6 @@ "USDT": "USDT" }, "elrond": { - "temp_12": "CYC-b4ed61", - "temp_13": "LPAD-84628f", - "temp_14": "EVLD-43f56f", - "temp_15": "FITY-73f8fc", - "temp_18": "erd1hmfwpvsqn8ktzw3dqd0ltpcyfyasgv8mr9w0qecnmpexyp280y8q47ca9d", - "temp_24": "UPARK-982dd6", "SUPER": "SUPER-507aa6", "WEGLD": "WEGLD-bd4d79", "LAND": "LAND-40f26f", diff --git a/projects/helper/solana.js b/projects/helper/solana.js index 90614de900..cbd48d06ec 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -1,16 +1,14 @@ const axios = require("axios"); const http = require('./http') -const cache = require('./cache') const env = require('./env') const { transformBalances: transformBalancesOrig, transformDexBalances, } = require('./portedTokens.js') -const { tokens, getUniqueAddresses } = require('./tokenMapping') +const { getUniqueAddresses } = require('./tokenMapping') const { Connection, PublicKey, Keypair } = require("@solana/web3.js") const { AnchorProvider: Provider, Wallet, } = require("@project-serum/anchor"); const { sleep, sliceIntoChunks, log, } = require('./utils') const { decodeAccount } = require('./utils/solana/layout') const sdk = require('@defillama/sdk') -const tokenMapping = tokens const blacklistedTokens = [ 'CowKesoLUaHSbAMaUxJUj7eodHHsaLsS65cy8NFyRDGP', @@ -335,7 +333,7 @@ async function sumTokens2({ if (solOwners.length) { const solBalance = await getSolBalances(solOwners) - sdk.util.sumSingleBalance(balances, tokenMapping.solana, solBalance) + sdk.util.sumSingleBalance(balances, 'solana:So11111111111111111111111111111111111111112', solBalance) } blacklistedTokens.forEach(i => delete balances['solana:'+i]) @@ -368,7 +366,6 @@ function readBigUInt64LE(buffer, offset) { module.exports = { endpoint, - tokens, getTokenSupply, getTokenBalance, getTokenAccountBalance, diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 68f1a3af1a..2ea1f3ae80 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -16,30 +16,6 @@ const nullAddress = '0x0000000000000000000000000000000000000000' const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', ] const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks'] -const tokens = { - null: nullAddress, - aave: 'ethereum:0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', - matic: 'ethereum:0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', - bat: 'ethereum:0x0d8775f648430679a709e98d2b0cb6250d2887ef', - reth: 'ethereum:0xae78736cd615f374d3085123a210448e74fc6393', - steth: 'ethereum:0xae7ab96520de3a18e5e111b5eaab095312d7fe84', - solana: 'solana:So11111111111111111111111111111111111111112', - dai: 'ethereum:0x6b175474e89094c44da98b954eedeac495271d0f', - usdt: 'ethereum:0xdac17f958d2ee523a2206206994597c13d831ec7', - usdc: 'ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - ethereum: 'ethereum:' + nullAddress, - weth: 'ethereum:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - busd: 'bsc:0xe9e7cea3dedca5984780bafc599bd69add087d56', - bsc: 'bsc:' + nullAddress, - bnb: 'bsc:0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', - link: 'ethereum:0x514910771af9ca656af840dff83e8264ecf986ca', - wbtc: 'ethereum:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - wsteth: 'ethereum:0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0', -} -const tokensBare = {} -for (const [label, value] of Object.entries(tokens)) - tokensBare[label] = value.split(':')[1] - const distressedAssts = new Set(Object.values({ CRK: '0x065de42e28e42d90c2052a1b49e7f83806af0e1f', aBNBc: '0xe85afccdafbe7f2b096f268e31cce3da8da2990a', @@ -135,8 +111,6 @@ const eulerTokens = [ module.exports = { nullAddress, - tokens, - tokensBare, caseSensitiveChains, transformTokens, fixBalancesTokens, diff --git a/projects/injective/index.js b/projects/injective/index.js index 4db5e76921..37d5b1c0aa 100644 --- a/projects/injective/index.js +++ b/projects/injective/index.js @@ -1,30 +1,31 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const { tokensBare: tokens } = require('../helper/tokenMapping') +const { sumTokensExport } = require('../helper/unwrapLPs') const newHolder = '0xf955c57f9ea9dc8781965feae0b6a2ace2bad6f3' module.exports = { ethereum: { - tvl: sumTokensExport({ owner: newHolder, tokens: [ - tokens.weth, - tokens.dai, - tokens.usdc, - tokens.usdt, - tokens.link, - tokens.wbtc , - '0xaaef88cea01475125522e117bfe45cf32044e238', - '0x4a220e6096b25eadb88358cb44068a3248254675', - '0xde4c5a791913838027a2185709e98c5c6027ea63', - '0x92d6c1e31e14520e676a687f0a93788b716beff5', - '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', - '0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b', - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', - '0x4d224452801ACEd8B2F0aebE155379bb5D594381', - '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', - '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', - '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F', - '0x45804880De22913dAFE09f4980848ECE6EcbAf78', - '0x6B3595068778DD592e39A122f4f5a5cF09C90fE2', - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7', - ]}) + tvl: sumTokensExport({ + owner: newHolder, tokens: [ + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + '0x6b175474e89094c44da98b954eedeac495271d0f', + '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + '0xdac17f958d2ee523a2206206994597c13d831ec7', + '0x514910771af9ca656af840dff83e8264ecf986ca', + '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + '0xaaef88cea01475125522e117bfe45cf32044e238', + '0x4a220e6096b25eadb88358cb44068a3248254675', + '0xde4c5a791913838027a2185709e98c5c6027ea63', + '0x92d6c1e31e14520e676a687f0a93788b716beff5', + '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', + '0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b', + '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', + '0x4d224452801ACEd8B2F0aebE155379bb5D594381', + '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', + '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', + '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F', + '0x45804880De22913dAFE09f4980848ECE6EcbAf78', + '0x6B3595068778DD592e39A122f4f5a5cF09C90fE2', + '0xc944E90C64B2c07662A292be6244BDf05Cda44a7' + ] + }) } } diff --git a/projects/proteo-farms/index.js b/projects/proteo-farms/index.js index f4aa84cbe0..cb1668185a 100644 --- a/projects/proteo-farms/index.js +++ b/projects/proteo-farms/index.js @@ -1,5 +1,4 @@ const { sumTokens } = require('../helper/chain/elrond') -const { tokens } = require('../helper/tokenMapping') const { get } = require('../helper/http') const sdk = require('@defillama/sdk') @@ -30,8 +29,8 @@ async function getPrices() { async function tvl() { const tokensAndOwners = [ - [tokens.null, 'erd1qqqqqqqqqqqqqpgqwqxfv48h9ssns5cc69yudvph297veqeeznyqr4l930'], - [tokens.null, 'erd1qqqqqqqqqqqqqpgqyhj3hk6kkw7405j42g20th3g2h5s8076znyqrpe2pr'], + ['0x0000000000000000000000000000000000000000', 'erd1qqqqqqqqqqqqqpgqwqxfv48h9ssns5cc69yudvph297veqeeznyqr4l930'], + ['0x0000000000000000000000000000000000000000', 'erd1qqqqqqqqqqqqqpgqyhj3hk6kkw7405j42g20th3g2h5s8076znyqrpe2pr'], ['USDC-c76f1f', 'erd1qqqqqqqqqqqqqpgq3lh80a92d49am3t2pfzheapdxtykzt5kznyqsjhfrx'], ['USDC-c76f1f', 'erd1qqqqqqqqqqqqqpgq25l7fgjdecaanxuuzxnquzs7k80q6mqaznyqzjclf5'], ['ZPAYWEGLD-34e5c1', 'erd1qqqqqqqqqqqqqpgqrpa6ezy0q4xuj6y9plgv85va43x7wy3dznyqr2rwcz'], diff --git a/projects/treasury/gearbox.js b/projects/treasury/gearbox.js index 75c3ff7967..ac56fe5503 100644 --- a/projects/treasury/gearbox.js +++ b/projects/treasury/gearbox.js @@ -1,5 +1,4 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); -const { tokensBare: tokens } = require("../helper/tokenMapping"); // Treasury const treasury = "0x7b065Fcb0760dF0CEA8CFd144e08554F3CeA73D1"; @@ -8,15 +7,15 @@ const GEAR = "0xBa3335588D9403515223F109EdC4eB7269a9Ab5D"; module.exports = treasuryExports({ ethereum: { - tokens: [ - // Ethereum Assets - nullAddress, - tokens.weth, - tokens.wbtc, - tokens.usdc, - tokens.dai, - "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",//wsteth - ], + tokens: [ + // Ethereum Assets + nullAddress, + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + '0x6b175474e89094c44da98b954eedeac495271d0f', + "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",//wsteth + ], owners: [treasury], ownTokens: [GEAR] }, diff --git a/projects/unamano/index.js b/projects/unamano/index.js index c6aa1b2c7e..397994c351 100644 --- a/projects/unamano/index.js +++ b/projects/unamano/index.js @@ -1,5 +1,4 @@ const { sumTokens2 } = require('../helper/unwrapLPs') -const { tokensBare } = require('../helper/tokenMapping') const abis = { poolInfo: "function poolInfo(uint256) view returns (address candyToken, uint256 startBlock, uint256 endBlock, uint256 lastRewardBlock, uint256 accPerShare, uint256 candyPerBlock, uint256 lpSupply, uint256 candyBalance, uint256 le12, tuple(address creator, uint256 unlockTime, uint256 maximumStaking, uint8 status, address multisignatureWallet, address assetManagementAddr) una)", @@ -10,7 +9,7 @@ module.exports = { ethereum:{ tvl: async (_, b, cb, { api }) => { const info = await api.fetchList({ lengthAbi: abis.poolLength, itemAbi: abis.poolInfo, target: '0x078aadff42c94b01f135b0ab1d4b794902c67c3f'}) - return sumTokens2({ api, tokens: [tokensBare.steth], owners: info.map(i => i.una.assetManagementAddr)}) + return sumTokens2({ api, tokens: ['0xae7ab96520de3a18e5e111b5eaab095312d7fe84'], owners: info.map(i => i.una.assetManagementAddr)}) }, }, } diff --git a/projects/zharta/index.js b/projects/zharta/index.js index 8f37d19609..b8b99b50ec 100644 --- a/projects/zharta/index.js +++ b/projects/zharta/index.js @@ -1,4 +1,3 @@ -const { tokensBare } = require('../helper/tokenMapping'); const { sumTokensExport, } = require('../helper/unwrapLPs') // Vaults @@ -12,7 +11,7 @@ module.exports = { ethereum: { tvl: sumTokensExport({ owners: [collateralVault, punkVault, appraisalVault, LP_CORE], - tokens: [tokensBare.weth], + tokens: ['0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'], resolveNFTs: true, }), } diff --git a/utils/scripts/changeCoreAssetsFormat2.js b/utils/scripts/changeCoreAssetsFormat2.js index f16407d771..a9d5c7dbe4 100644 --- a/utils/scripts/changeCoreAssetsFormat2.js +++ b/utils/scripts/changeCoreAssetsFormat2.js @@ -2,38 +2,18 @@ const assets = require("../../projects/helper/coreAssets.json"); const fs = require('fs') const axios = require('axios') -const sdk = require('@defillama/sdk') const newJson = {} async function run() { const entries = Object.entries(assets) - for (const entry of entries) { - await getSymbols(entry) - fs.writeFileSync('./projects/helper/coreAssets.json', JSON.stringify(newJson, null, 2)) - } -} - -async function updateNames([chain, addresses]) { - if (!addresses.length) return; - const chainObj = {} - newJson[chain] = chainObj - if (!addresses[addresses.length -1].startsWith('0x') || ['starknet', 'aptos'].includes(chain)) { - addresses.forEach((v, i) => { - const key = 'temp_' + i - chainObj[key] = v - }) - console.log('------- non-evm chain: ', chain) - return; - } - const symbols = await api.multiCall({ abi: 'string:symbol', calls: addresses, permitFailure: true}) - addresses.forEach((v, i) => { - let key = symbols[i] - if (!key) { - key = v === '0x0000000000000000000000000000000000000000' ? 'null' : 'temp_' + i - } - key = key.replace(/\W+/g, '_') - chainObj[key] = v - }) + await Promise.all(entries.map(checkSymbols)) + // for (const entry of entries) { + // await getSymbols(entry) + // fs.writeFileSync('./projects/helper/coreAssets.json', JSON.stringify(newJson, null, 2)) + // } + // for (const entry of entries) { + // await checkSymbols(entry) + // } } async function getSymbols([chain, mapping]) { @@ -41,18 +21,17 @@ async function getSymbols([chain, mapping]) { let reverseMapping = {} const tokens = Object.entries(mapping).map(([key, value]) => { if (!key.startsWith('temp_')) return; - const key2 = chain + ':'+value + const key2 = chain + ':' + value reverseMapping[key2] = key return key2 }).filter(i => i) if (!tokens.length) return; - console.log('for ', chain, tokens) - const { data: { coins }} = await axios.get('https://coins.llama.fi/prices/current/'+tokens.join(',')) + const { data: { coins } } = await axios.get('https://coins.llama.fi/prices/current/' + tokens.join(',')) const symbolSet = new Set() Object.entries(coins).forEach(([key, { symbol }]) => { const key2 = reverseMapping[key] if (!key2) { - console.log('Bug: ',key, chain) + console.log('Bug: ', key, chain) throw new Error('Fix this') } const value = mapping[key2] @@ -60,12 +39,30 @@ async function getSymbols([chain, mapping]) { let iterator = 0 let label = symbol while (symbolSet.has(label)) { - label = symbol + '_'+ ++iterator + label = symbol + '_' + ++iterator } symbolSet.add(label) mapping[label] = value }) - + +} + +async function checkSymbols([chain, mapping]) { + try { + if (chain === 'null') return; + newJson[chain] = mapping + let tokens = Object.entries(mapping).map(([key, value]) => { + return chain + ':' + value + }) + if (!tokens.length) return; + const { data: { coins } } = await axios.get('https://coins.llama.fi/prices/current/' + tokens.join(',')) + Object.entries(coins).forEach(([key, { symbol }]) => { + tokens = tokens.filter(i => i !== key) + }) + if (tokens.length) console.log('failed to find price:', chain, tokens) + } catch (e) { + console.log('error in ', chain) + } } run().then(() => { diff --git a/utils/scripts/tokenMapping.js b/utils/scripts/tokenMapping.js index 5436592c0a..0469ddd44c 100644 --- a/utils/scripts/tokenMapping.js +++ b/utils/scripts/tokenMapping.js @@ -128,5 +128,5 @@ async function run() { }) await Promise.all(promises) - writeToCache() + // writeToCache() } From b9364b23d225bfba237a3e131bd1b4e1c44849de Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Apr 2023 23:03:33 +0200 Subject: [PATCH 0149/1354] add script to auto-update token labels --- projects/helper/chain/algorand.js | 1 + projects/helper/chain/aptos.js | 1 + projects/helper/tokenMapping.js | 5 ++- utils/scripts/useTokenLabels.js | 70 +++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 utils/scripts/useTokenLabels.js diff --git a/projects/helper/chain/algorand.js b/projects/helper/chain/algorand.js index 4b22fe96fb..155d426fd3 100644 --- a/projects/helper/chain/algorand.js +++ b/projects/helper/chain/algorand.js @@ -4,6 +4,7 @@ const axios = require('axios') const { getApplicationAddress } = require('./algorandUtils/address') const { RateLimiter } = require("limiter"); const coreAssets = require('../coreAssets.json') +const ADDRESSES = coreAssets const sdk = require('@defillama/sdk'); const { default: BigNumber } = require('bignumber.js'); const stateCache = {} diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js index 2e35829583..14c4d63c74 100644 --- a/projects/helper/chain/aptos.js +++ b/projects/helper/chain/aptos.js @@ -4,6 +4,7 @@ const sdk = require('@defillama/sdk') const http = require('../http') const env = require('../env') const coreTokensAll = require('../coreAssets.json') +const ADDRESSES = coreAssetsAll const { transformBalances } = require('../portedTokens') const { log, getUniqueAddresses } = require('../utils') diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 2ea1f3ae80..749dc45fd1 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -1,6 +1,9 @@ -const coreAssets = require('./coreAssets.json') +let coreAssets = require('./coreAssets.json') +const ADDRESSES = coreAssets const nullAddress = '0x0000000000000000000000000000000000000000' +coreAssets = JSON.parse(JSON.stringify(coreAssets)) + // Multichain bridge info: https://bridgeapi.anyswap.exchange/v2/serverInfo/all // IBC info - https://github.com/PulsarDefi/IBC-Cosmos/blob/main/ibc_data.json // O3swap - https://agg.o3swap.com/v1/tokens_all diff --git a/utils/scripts/useTokenLabels.js b/utils/scripts/useTokenLabels.js new file mode 100644 index 0000000000..78a74153a0 --- /dev/null +++ b/utils/scripts/useTokenLabels.js @@ -0,0 +1,70 @@ +const glob = require('glob') +const projectsDir = __dirname + '/../../projects' +const allLabelsFile = projectsDir + '/helper/coreAssets.json' +const allLabels = require(allLabelsFile) +const fs = require('fs') +const path = require('path') +const { ibcChains } = require('../../projects/helper/tokenMapping') + +// const rootFolder = '../../projects' +// const projectsDir = '../../projects/zharta' +// const rootFolder = projectsDir + '/zharta' +const rootFolder = projectsDir + +const ignoredChains = ['tezos', 'waves', 'algorand', 'defichain', ...ibcChains] + +function run() { + ignoredChains.forEach(i => delete allLabels[i]) + console.table(Object.entries(allLabels).map(([c, mapping]) => { + return [c, Object.values(mapping).length] + }).sort((a, b) => b[1] - a[1])) + + // return; + + glob(rootFolder + '/**/*.js', {}, async (e, files) => { + console.log('JSON file count', files.length) + // console.log(files) + files.forEach(updateFile) + }) +} + +run() + +function updateFile(file) { + const relativePath = path.relative(file + '/..', allLabelsFile) + const requireStr = `const ADDRESSES = require('${relativePath}')\n` + let fileStr = fs.readFileSync(file, 'utf-8') + const importedAddresses = fileStr.includes('coreAssets.json') + let updateFile = false + + Object.entries(allLabels).forEach(([chain, mapping]) => { + const label = ['ADDRESSES', chain] + if (chain === 'null') { + updateFileStr([...label].join('.'), mapping, file) + } else { + Object.entries(mapping).forEach(([symbol, addr]) => { + updateFileStr([...label, symbol].join('.'), addr, file) + }) + } + }) + if (updateFile) + fileStr = requireStr + fileStr + fs.writeFileSync(file, fileStr, { encoding: 'utf-8' }) + + function updateFileStr(label, address, file) { + if (!importedAddresses && !updateFile) { + updateFile = (new RegExp(address, 'i')).test(fileStr) + // if (updateFile) + // console.log(updateFile, address, new RegExp(address, 'i'), file) + } + if (!updateFile) return; + const tokensBareRegex = new RegExp('["\']' + address + '["\']\\s*:', 'gi') + const tokensBareRegex2 = new RegExp('["\']' + address + '["\']', 'gi') + const tokensRegex = new RegExp('(["\'])(\\w+:)' + address + '["\']\\s*:', 'gi') + const tokensRegex2 = new RegExp('(["\'])(\\w+:)' + address + '["\']', 'gi') + fileStr = fileStr.replace(tokensBareRegex, `[${label}]:`) + fileStr = fileStr.replace(tokensBareRegex2, label) + fileStr = fileStr.replace(tokensRegex, `[$1$2$1 + ${label}]:`) + fileStr = fileStr.replace(tokensRegex2, `$1$2$1 + ${label}`) + } +} From 351aa80e586a82c46da2ad29f20f46e05eea1bc1 Mon Sep 17 00:00:00 2001 From: Seagram Date: Sun, 30 Apr 2023 06:18:49 +0900 Subject: [PATCH 0150/1354] Add TVL adapters for Tonic --- projects/tonic-cash/config.js | 62 +++++++++++++++++++++++++++++++++++ projects/tonic-cash/index.js | 13 ++++++++ 2 files changed, 75 insertions(+) create mode 100644 projects/tonic-cash/config.js create mode 100644 projects/tonic-cash/index.js diff --git a/projects/tonic-cash/config.js b/projects/tonic-cash/config.js new file mode 100644 index 0000000000..ac5fffae81 --- /dev/null +++ b/projects/tonic-cash/config.js @@ -0,0 +1,62 @@ +const { nullAddress } = require('../helper/unwrapLPs'); + +module.exports = { + klaytn: [ + { + tokens: [nullAddress], // KLAY + holders: [ + '0x033237b3d6ABCb7d48C5A40Ec3038A53aEc1b77e', + '0x7b853e8387FC6bcFCAa9BDab8d0479E6c9E6782b', + '0x457Caf470fB1031530E8cdD06703da7B1BbCCe04', + '0x9694ea20de96D5E46C8FE1E7975D7a2C7C79Bf2c', + ], + }, + { + tokens: ['0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167'], // oUSDT + holders: [ + '0x528AE79DAe416bf9623B94fA6Baef0FC3dd12ef8', + '0xc69C9bBabEDE59562Cd8a6F92Fa50aFf10D8310e', + '0x503d6D4E14A2A4f78f4c3E51c94F1F53C6bd6D96', + '0x804aA592f7bF0B7EB98db08825D1106eC4822fb3', + ], + }, + { + tokens: ['0x34d21b1e550d73cee41151c77f3c73359527a396'], // oETH + holders: [ + '0x70D8D865d556f7D03c463e296ac706CE11B73d4B', + '0x402f2297f15b6fc9415D6F193ae882a3879b5F09', + '0xCFa2494dddB338c2fd15224B4Eb9668a5C4de695', + '0xD10aaD96548CAa7874e435Db0d9676b64554092b', + ], + }, + ], + wemix: [ + { + tokens: [nullAddress], // WEMIX + holders: [ + '0x033237b3d6ABCb7d48C5A40Ec3038A53aEc1b77e', + '0x7b853e8387FC6bcFCAa9BDab8d0479E6c9E6782b', + '0x457Caf470fB1031530E8cdD06703da7B1BbCCe04', + '0x9694ea20de96D5E46C8FE1E7975D7a2C7C79Bf2c', + ], + }, + { + tokens: ['0x8E81fCc2d4A3bAa0eE9044E0D7E36F59C9BbA9c1'], // WEMIXDollar + holders: [ + '0x144120Ef18d4223Ab3f4695653a5755C23FBF469', + '0xc978f195C838d3344f74DDBA84235130B3091847', + '0xeD4a38cC990a6E5D817C9d89677c886994803d38', + '0xAc04FDbADd7CF8d4BaD0F957d37e3fd0c093A9B6', + ], + }, + { + tokens: ['0x765277EebeCA2e31912C9946eAe1021199B39C61'], // ETH + holders: [ + '0x2D3bAeBa85D78D202887D34f5618380e90F3c272', + '0xD2510D275dbca0fe333dAff8Eb51b9105f6aC212', + '0xE1d1c5094d5eEF16E0207834b2E5FDf634278217', + '0xfF30E4d7ec19a45710049033d1E51C1a6848E1FA', + ], + }, + ], +}; diff --git a/projects/tonic-cash/index.js b/projects/tonic-cash/index.js new file mode 100644 index 0000000000..d0495bc076 --- /dev/null +++ b/projects/tonic-cash/index.js @@ -0,0 +1,13 @@ +const { sumTokensExport } = require('../helper/unwrapLPs'); +const config = require('./config.js'); + +Object.keys(config).forEach((chain) => { + const tokensAndOwners = config[chain] + .map(({ tokens, holders }) => + holders.map((o) => tokens.map((t) => [t, o])).flat() + ) + .flat(); + module.exports[chain] = { + tvl: sumTokensExport({ tokensAndOwners }), + }; +}); From 9c035d36daf2b1f175fb4b63e514371b9812460c Mon Sep 17 00:00:00 2001 From: Seagram Date: Sun, 30 Apr 2023 06:34:31 +0900 Subject: [PATCH 0151/1354] Add ETH(`0x765277EebeCA2e31912C9946eAe1021199B39C61`) to WEMIX coreAssets https://docs.wemix.com/v/wemixfi-en/guides/getting-started/how-to-add-tokens#information-on-other-tokens --- projects/helper/coreAssets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index fc1b129a89..487ba272ae 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1262,7 +1262,8 @@ "0x7d72b22a74a216af4a002a1095c8c707d6ec1c5f", "0x8e81fcc2d4a3baa0ee9044e0d7e36f59c9bba9c1", "0x461d52769884ca6235b685ef2040f47d30c94eb5", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d" + "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "0x765277EebeCA2e31912C9946eAe1021199B39C61" ], "tlchain": [ "0x422b6cdf97c750a0edcddc39c88f25379e59e96e" From b27ca776628899e8768fad61436a56d9d1a2768a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Apr 2023 23:38:13 +0200 Subject: [PATCH 0152/1354] minor update --- projects/helper/coreAssets.json | 2 +- projects/popcorn/constants.js | 4 ++-- utils/scripts/useTokenLabels.js | 9 +++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index f727f5d95d..9551efeb01 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -93,7 +93,7 @@ "iZi": "0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", "iUSD": "0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d", "beltBNB": "0xa8bb71facdd46445644c277f9499dd22f6f0a30c", - "4Belt": "0x9cb73f20164e399958261c289eb5f9846f4d1404", + "Belt4": "0x9cb73f20164e399958261c289eb5f9846f4d1404", "beltBTC": "0x51bd63f240fb13870550423d208452ca87c44444", "beltETH": "0xaa20e8cb61299df2357561c2ac2e1172bc68bc25", "YGG": "0x13ab6739368a4e4abf24695bf52959224367391f", diff --git a/projects/popcorn/constants.js b/projects/popcorn/constants.js index 2b0fdd1b72..510c1a94eb 100644 --- a/projects/popcorn/constants.js +++ b/projects/popcorn/constants.js @@ -1,4 +1,4 @@ -const ADDRESSES = { +const ADDRESSES_ = { ethereum: { popLocker: "0xeEE1d31297B042820349B03027aB3b13a9406184", // done @@ -67,5 +67,5 @@ const ADDRESSES = { } module.exports = { - ADDRESSES + ADDRESSES:ADDRESSES_ } \ No newline at end of file diff --git a/utils/scripts/useTokenLabels.js b/utils/scripts/useTokenLabels.js index 78a74153a0..fd560c4369 100644 --- a/utils/scripts/useTokenLabels.js +++ b/utils/scripts/useTokenLabels.js @@ -11,7 +11,7 @@ const { ibcChains } = require('../../projects/helper/tokenMapping') // const rootFolder = projectsDir + '/zharta' const rootFolder = projectsDir -const ignoredChains = ['tezos', 'waves', 'algorand', 'defichain', ...ibcChains] +const ignoredChains = ['algorand', 'defichain', ...ibcChains] function run() { ignoredChains.forEach(i => delete allLabels[i]) @@ -31,7 +31,8 @@ function run() { run() function updateFile(file) { - const relativePath = path.relative(file + '/..', allLabelsFile) + let relativePath = path.relative(file + '/..', allLabelsFile) + if (relativePath.startsWith('coreAssets')) relativePath = './' + relativePath const requireStr = `const ADDRESSES = require('${relativePath}')\n` let fileStr = fs.readFileSync(file, 'utf-8') const importedAddresses = fileStr.includes('coreAssets.json') @@ -54,8 +55,8 @@ function updateFile(file) { function updateFileStr(label, address, file) { if (!importedAddresses && !updateFile) { updateFile = (new RegExp(address, 'i')).test(fileStr) - // if (updateFile) - // console.log(updateFile, address, new RegExp(address, 'i'), file) + if (updateFile) + console.log(updateFile, address, new RegExp(address, 'i'), file) } if (!updateFile) return; const tokensBareRegex = new RegExp('["\']' + address + '["\']\\s*:', 'gi') From 8616e3aee8511a66f5bd611e3bc1311a95c22c95 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Apr 2023 23:38:26 +0200 Subject: [PATCH 0153/1354] replace token labels --- projects/01/index.js | 7 +- projects/0vix/index.js | 3 +- projects/0x_nodes/index.js | 7 +- projects/1bch/index.js | 3 +- projects/1beam/utils.js | 7 +- projects/1inch/config.js | 15 ++- projects/1swap/index.js | 5 +- projects/BankOfCronos/index.js | 3 +- projects/KungFuu-Finance/index.js | 5 +- projects/MantisSwap/index.js | 7 +- projects/OCTOplace/index.js | 5 +- projects/Paraluni/index.js | 11 +- projects/SharpeLabs/index.js | 3 +- projects/aave/index.js | 3 +- projects/aave/v1.js | 5 +- projects/aavegotchi/index.js | 3 +- projects/aboard-exchange/index.js | 19 +-- projects/acoconut/index.js | 5 +- projects/across/index.js | 9 +- projects/ad-astra/index.js | 3 +- projects/adamantfinance/index.js | 5 +- projects/aevo-xyz/index.js | 3 +- projects/agarthadao/index.js | 3 +- projects/agilitylsd/index.js | 3 +- projects/agora/index.js | 9 +- projects/akiba/index.js | 3 +- projects/alkemi/index.js | 9 +- projects/allbridge/index.js | 49 +++---- projects/allchainbridge/index.js | 43 ++++--- projects/alpacafinance-gmx/index.js | 11 +- projects/alpha-homora/index.js | 3 +- projects/alpha-homora/v1.js | 3 +- projects/alpha-homora/v2.js | 3 +- projects/ampere/index.js | 3 +- projects/amyfinance/index.js | 15 ++- projects/angle/index.js | 7 +- projects/annex.js | 5 +- projects/ante/index.js | 13 +- projects/antimatter/index.js | 3 +- projects/antimatterDAO/index.js | 19 +-- projects/apex/index.js | 3 +- projects/apollox/index.js | 17 +-- projects/apricot.js | 7 +- projects/apwine/index.js | 7 +- projects/aquarius/index.js | 3 +- projects/arbicheems/index.js | 5 +- projects/arbinyan/index.js | 5 +- projects/archly-finance/index.js | 15 ++- projects/arctic/index.js | 3 +- projects/argano/index.js | 5 +- projects/armorfinance/index.js | 5 +- projects/artemis/index.js | 3 +- projects/arthswap/index.js | 3 +- projects/asgard-dao/index.js | 7 +- projects/asgardfinance/index.js | 3 +- projects/astriddao/index.js | 29 +++-- projects/asymetrix/index.js | 3 +- projects/atlantisloans/index.js | 7 +- projects/atlas-fi/index.js | 3 +- projects/atlas-usv/index.js | 3 +- projects/atmossoft.js | 7 +- projects/auctus/index.js | 3 +- projects/augur/index.js | 5 +- projects/aurora-plus/index.js | 3 +- projects/avatr/index.js | 3 +- projects/axe/index.js | 5 +- projects/axion/index.js | 3 +- projects/azuro/index.js | 5 +- projects/bagel-finance/index.js | 17 +-- projects/baker-guild-finance/index.js | 9 +- projects/baksdao/index.js | 9 +- projects/bancor/index.js | 3 +- projects/bancor/v3.js | 3 +- projects/bank-of-chain/index.js | 5 +- projects/bao-usd/index.js | 3 +- projects/based-finance/basedV2.js | 5 +- projects/based-finance/index.js | 7 +- projects/basis-cash.js | 7 +- projects/basketdao/index.js | 5 +- projects/bchpad/index.js | 3 +- projects/beamer/index.js | 9 +- projects/beamswap/index.js | 3 +- projects/bearfinance/index.js | 3 +- projects/bearnfi/index.js | 3 +- projects/beekava/index.js | 3 +- projects/belt/index.js | 7 +- projects/beluga-protocol/index.js | 5 +- projects/benddao/helper/address.js | 3 +- projects/benqi-staked-avax/index.js | 3 +- projects/benswap/index.js | 5 +- projects/bent/constants.js | 7 +- projects/bepro/index.js | 5 +- projects/betafinance/index.js | 19 +-- projects/biconomy/index.js | 33 ++--- projects/bifi/index.js | 43 ++++--- projects/billion-happiness/index.js | 5 +- projects/binance-beth/index.js | 3 +- projects/binance/config.js | 5 +- projects/bishares/config.js | 23 ++-- projects/bitBTC.js | 3 +- projects/bitindi/index.js | 3 +- projects/bitlend/index.js | 7 +- projects/blackbird-finance/index.js | 9 +- projects/blindex/index.js | 3 +- projects/blockng/index.js | 13 +- projects/blockswap/index.js | 3 +- projects/bluebit/index.js | 3 +- projects/bluefin/index.js | 3 +- projects/blur-finance/index.js | 5 +- projects/blur/index.js | 3 +- projects/bobagateway/index.js | 5 +- projects/bodhfinance/index.js | 3 +- projects/bonqdao/index.js | 7 +- projects/bonsai-strike/index.js | 3 +- projects/boofinance/index.js | 9 +- projects/bourbon-dao/index.js | 7 +- projects/bprotocol/index.js | 23 ++-- projects/brainiac/index.js | 3 +- projects/bridge-mutual/index.js | 7 +- projects/bright-union/index.js | 3 +- projects/brinc/index.js | 3 +- projects/brokkr/index.js | 3 +- projects/btcst/index.js | 3 +- projects/buffer/index.js | 5 +- projects/bumper/index.js | 3 +- projects/burgerswap/index.js | 3 +- projects/butternetwork/index.js | 29 +++-- projects/cakedao/index.js | 7 +- projects/camel-farm/index.js | 3 +- projects/canto-lending/index.js | 13 +- projects/cantohm/index.js | 5 +- projects/cap-v4/index.js | 3 +- projects/cap/index.js | 3 +- projects/carbon/index.js | 5 +- projects/cashcow/index.js | 3 +- projects/cashio/index.js | 5 +- projects/cat-in-a-box/index.js | 3 +- projects/catsapes/index.js | 7 +- projects/cega/index.js | 5 +- projects/celerbridge/index.js | 117 ++++++++--------- projects/cennz-bridge.js | 3 +- projects/cerberusdao/index.js | 5 +- projects/cesta/index.js | 3 +- projects/cexdex-stacking/index.js | 5 +- projects/channels/index.js | 5 +- projects/charmfinance/index.js | 7 +- projects/chee-finance/index.js | 7 +- projects/cherryswap/index.js | 3 +- projects/chest-finance/index.js | 3 +- projects/chfry/index.js | 7 +- projects/chocodoge/index.js | 7 +- projects/citrus/index.js | 5 +- projects/claystack/index.js | 3 +- projects/cleopatradao.js | 3 +- projects/clipper/index.js | 3 +- projects/coffin/index.js | 3 +- projects/cofix.js | 7 +- projects/component/index.js | 41 +++--- projects/composable/index.js | 13 +- projects/compound-onchain/index.js | 15 ++- projects/compound-v3/index.js | 7 +- projects/concave/index.js | 7 +- projects/concentrator/index.js | 3 +- projects/config/hodltree/addresses.js | 19 +-- projects/config/keys.js | 35 ++--- .../contracts/lp-staking-contracts.js | 41 +++--- projects/config/onx/constant.js | 7 +- projects/config/onx/ethereum/farms.js | 3 +- projects/config/smoothy/abis.js | 11 +- projects/connext/old.js | 17 +-- projects/convex/index.js | 3 +- projects/convex/pools-crv.js | 5 +- projects/core/index.js | 11 +- projects/cover.js | 3 +- projects/covo-v2/index.js | 3 +- projects/cozy/index.js | 3 +- projects/crafting/index.js | 11 +- projects/cream/index.js | 13 +- projects/creamswap/index.js | 7 +- projects/creditum/index.js | 9 +- projects/credix/index.js | 3 +- projects/crosschainbridge/index.js | 39 +++--- projects/cryptex-finance/index.js | 17 +-- projects/curve/index.js | 3 +- projects/cvi/index.js | 11 +- projects/cyclone/index.js | 9 +- projects/dam-finance/index.js | 3 +- projects/damm-finance/index.js | 3 +- projects/darkness/index.js | 7 +- projects/darumadao/index.js | 3 +- projects/debets/index.js | 13 +- projects/defifranc/index.js | 7 +- projects/defikingdoms/index.js | 3 +- projects/defilyio/index.js | 3 +- projects/definer/index.js | 3 +- projects/defirex/index.js | 5 +- projects/defisaver.js | 17 +-- projects/defyswap/index.js | 5 +- projects/degenerative/index.js | 5 +- projects/dehive/assetsInfo.js | 51 ++++---- projects/delta/index.js | 3 +- projects/deltaprime/index.js | 3 +- projects/demeter.js | 13 +- projects/demodyfi/index.js | 7 +- projects/depth/index.js | 3 +- projects/deri/index.js | 21 +-- projects/derify/index.js | 3 +- projects/derivadex/index.js | 9 +- projects/deversifi/index.js | 51 ++++---- projects/dexfinance/index.js | 3 +- projects/dforce/index.js | 19 +-- projects/diamond-unibot-v2/index.js | 15 ++- projects/diamond/index.js | 9 +- projects/diffusionfi/index.js | 3 +- projects/dinoswap/index.js | 3 +- projects/diosfinance/index.js | 3 +- projects/dnadollar/index.js | 5 +- projects/dokidoki/index.js | 5 +- projects/domfi/registry.js | 9 +- projects/donkey/index.js | 3 +- projects/dopex/index.js | 11 +- projects/dopplefinance/index.js | 21 +-- projects/dotdot/index.js | 9 +- projects/dotoracle/index.js | 13 +- projects/dsu-money/index.js | 7 +- projects/dydx/index.js | 7 +- projects/dyson-money/index.js | 3 +- projects/ecodefi/index.js | 3 +- projects/eklipse/index.js | 19 +-- projects/elephantmoney/index.js | 3 +- projects/ellipsis/onchain.js | 5 +- projects/elysia/index.js | 11 +- projects/emberswap/index.js | 3 +- projects/emdx/index.js | 3 +- projects/empyrean/index.js | 3 +- projects/ensuro/index.js | 3 +- projects/enterdao/index.js | 3 +- projects/epsylon/index.js | 5 +- projects/erasure/index.js | 3 +- projects/ether-fi/index.js | 3 +- projects/ethichub/index.js | 3 +- projects/everrise/index.js | 31 ++--- projects/evmoswap/index.js | 11 +- projects/evolutionland/index.js | 7 +- projects/exodia/index.js | 5 +- projects/fantOHM/index.js | 35 ++--- projects/fantasm/index.js | 5 +- projects/fantom.js | 3 +- projects/fei/index.js | 5 +- projects/fenrirfinance/index.js | 7 +- projects/fiatdao/index.js | 7 +- projects/filda/index.js | 13 +- projects/finext-finance/index.js | 5 +- projects/finnexus/index.js | 9 +- projects/firebird/index.js | 3 +- projects/flare-loans/index.js | 3 +- projects/flarefarm/index.js | 7 +- projects/flatcoin/index.js | 3 +- projects/float-capital/index.js | 9 +- projects/floor-dao/index.js | 3 +- projects/fluity/index.js | 3 +- projects/forgesx/index.js | 3 +- projects/fortress-lending/index.js | 3 +- projects/fortress/index.js | 3 +- projects/fortunedao.js | 3 +- projects/fountain.js | 3 +- projects/fractal-protocol/index.js | 3 +- projects/fractional-art.js | 5 +- projects/frakt/index.js | 5 +- projects/fraxfinance/index.js | 7 +- projects/ftmguru/index.js | 3 +- projects/fujidao/index.js | 11 +- projects/fusion/index.js | 7 +- projects/future-swap/index.js | 9 +- projects/futureswap/index.js | 17 +-- projects/gaia-dao/index.js | 7 +- projects/gainsNetwork.js | 5 +- projects/galaxygoggle/index.js | 7 +- projects/gale/index.js | 3 +- projects/garble-money/index.js | 7 +- projects/gdao.js | 17 +-- projects/genesys/index.js | 5 +- projects/genius/index.js | 9 +- projects/geode/index.js | 3 +- projects/gfs/index.js | 3 +- projects/gft/index.js | 3 +- projects/gizadao/index.js | 5 +- projects/gmx/index.js | 3 +- projects/gnosis/index.js | 19 +-- projects/goblinscash/index.js | 3 +- projects/gogocoin/index.js | 3 +- projects/goldfinch/index.js | 3 +- projects/gooddollar/index.js | 3 +- projects/grave/index.js | 7 +- projects/grizzlyfi/index.js | 13 +- projects/groprotocol/index.js | 13 +- projects/growthdefi/index.js | 9 +- projects/gton.js | 7 +- projects/gyro.js | 5 +- projects/gysr/index.js | 3 +- projects/hakka.js | 9 +- projects/halodao/index.js | 27 ++-- projects/handlefi/index.js | 3 +- projects/hashflow/index.js | 3 +- projects/hectagon/index.js | 3 +- projects/hedgehog/index.js | 5 +- projects/hegic/index.js | 11 +- projects/heliosprime/index.js | 3 +- projects/helmetinsure/index.js | 3 +- projects/helper/aave.js | 3 +- projects/helper/ankr/chainAddresses.js | 9 +- projects/helper/balances.js | 3 +- projects/helper/cex.js | 95 +++++++------- projects/helper/chain/aptos.js | 1 - projects/helper/chain/elrond.js | 5 +- projects/helper/chain/near.js | 11 +- projects/helper/chain/tezos.js | 3 +- projects/helper/chain/tron.js | 5 +- projects/helper/compound.js | 7 +- projects/helper/curvePools.js | 85 ++++++------ projects/helper/dexpad.js | 3 +- projects/helper/solana.js | 3 +- projects/helper/streamingHelper.js | 65 +++++----- projects/helper/tokenMapping.js | 14 +- projects/helper/unwrapLPs.js | 3 +- projects/helper/utils.js | 3 +- projects/helper/yieldHelper.js | 3 +- projects/hexal/index.js | 9 +- projects/homecoin/index.js | 3 +- projects/honkswap/index.js | 3 +- projects/hotfries/index.js | 3 +- projects/hubble-exchange/index.js | 7 +- projects/hubble/index.js | 5 +- projects/hummus/constants.js | 9 +- projects/hundredfinance/index.js | 27 ++-- projects/hunnyfinance/index.js | 7 +- projects/hurricaneswap.js | 3 +- projects/hyperliquid/index.js | 3 +- projects/iTrustfinance/index.js | 3 +- projects/ice-dao/index.js | 3 +- projects/ichifarm/index.js | 3 +- projects/ideamarket/index.js | 3 +- projects/idex/index.js | 3 +- projects/ifpool/index.js | 3 +- projects/immortal/index.js | 3 +- projects/impact-market/index.js | 3 +- projects/inbuilt-finance/index.js | 7 +- projects/indexcoop/index.js | 3 +- projects/infy/index.js | 17 +-- projects/injective/index.js | 25 ++-- projects/insurace/index.js | 7 +- projects/insuredao/index.js | 3 +- projects/invar-finance/index.js | 3 +- projects/inverse/index.js | 5 +- projects/invictus/index.js | 3 +- projects/iotube/index.js | 67 +++++----- projects/ip/index.js | 13 +- projects/ironfinance/index.js | 5 +- projects/izumi-iziswap/index.js | 5 +- projects/jbc/index.js | 7 +- projects/jelly/index.js | 3 +- projects/jetfuelfinance/index.js | 9 +- projects/jetprotocol.js | 5 +- projects/jojo/index.js | 3 +- projects/jones-dao/index.js | 5 +- projects/jpeg-d/helper/index.js | 3 +- projects/juicebox-v1/index.js | 3 +- projects/juicebox-v2/index.js | 3 +- projects/juicebox-v3/index.js | 3 +- projects/justmoney/index.js | 7 +- projects/kaDefi/index.js | 3 +- projects/kaco/index.js | 3 +- projects/kagla/addresses.js | 25 ++-- projects/kalata/index.js | 13 +- projects/kanvas/index.js | 3 +- projects/kavastarter/index.js | 3 +- projects/kccguru/index.js | 3 +- projects/keep3r/registry.js | 11 +- projects/keeper-dao/index.js | 3 +- projects/kefirswap/index.js | 3 +- projects/kinefinance/index.js | 9 +- projects/kinesis/index.js | 17 +-- projects/klayswap/index.js | 5 +- projects/klend/index.js | 5 +- projects/klima-dao/index.js | 3 +- projects/know-to-earn.js | 3 +- projects/kogefarm/helper.js | 13 +- projects/koyo/constants.js | 13 +- projects/kronos/index.js | 7 +- projects/kuufinance/index.js | 7 +- projects/l2finance/index.js | 9 +- projects/lachainBridge.js | 15 ++- projects/ladao-xocolatl/index.js | 11 +- projects/lagobridge/index.js | 5 +- projects/lanternswap/index.js | 7 +- projects/leaguedao/index.js | 7 +- projects/lemma/index.js | 5 +- projects/lendexe/index.js | 7 +- projects/lendhub/index.js | 3 +- projects/lenlen/index.js | 3 +- projects/level/index.js | 11 +- projects/lido/index.js | 9 +- projects/lien/index.js | 3 +- projects/lifedao/index.js | 3 +- projects/linear.js | 3 +- projects/linear/index.js | 3 +- projects/liondex/index.js | 5 +- projects/liquid-finance/index.js | 5 +- projects/liquiddriver/index.js | 9 +- projects/liquidity-book/index.js | 5 +- projects/liquidrium/vaults.js | 21 +-- projects/liquity/index.js | 3 +- projects/lobis.js | 3 +- projects/logium/index.js | 3 +- projects/loopring/index.js | 15 ++- projects/lsdx/index.js | 3 +- projects/luchadores/index.js | 5 +- projects/luckychip/index.js | 5 +- projects/lunafi/index.js | 7 +- projects/luxor/index.js | 9 +- projects/lybra/index.js | 3 +- projects/lyra/index.js | 13 +- projects/macaron/config.js | 3 +- .../magik-farm/config/vault/aurora_pools.js | 1 + .../config/vault/avalanche_pools.js | 1 + projects/magik-farm/config/vault/bsc_pools.js | 1 + .../magik-farm/config/vault/fantom_pools.js | 1 + projects/magpiexyz/config.js | 3 +- projects/magpiexyz/index.js | 3 +- projects/mahadao/bsc.js | 3 +- projects/mahadao/ethereum.js | 7 +- projects/mahadao/polygon.js | 3 +- projects/maia-dao/index.js | 3 +- projects/maker/abis/maker-mcd.js | 3 +- projects/maker/abis/makerdao.js | 3 +- projects/maker/index.js | 3 +- projects/mama-dao/index.js | 3 +- projects/mango-farmers-club/index.js | 3 +- projects/manifest/index.js | 3 +- projects/manifesto/index.js | 9 +- projects/mantradao.js | 3 +- projects/maple/index.js | 5 +- projects/market.xyz/index.js | 3 +- projects/maximizer/index.js | 13 +- projects/mdex/subgraphs.js | 3 +- projects/meanfinance/addresses.js | 41 +++--- projects/megatonfi/index.js | 3 +- projects/mensa/index.js | 3 +- projects/mento/index.js | 3 +- projects/meowfinance/index.js | 9 +- projects/mercurial.js | 71 +++++----- projects/metaid/index.js | 5 +- projects/metalswap/index.js | 9 +- projects/metareserve/index.js | 3 +- projects/metavault-bo/index.js | 3 +- projects/metavault/index.js | 7 +- projects/metaversepro/index.js | 7 +- projects/metronome-synth/index.js | 9 +- projects/midasdao.js | 3 +- projects/mimo/index.js | 17 +-- projects/mindgames/index.js | 3 +- projects/miningtycoon/index.js | 3 +- projects/minipanther/index.js | 7 +- projects/minmax-finance/index.js | 23 ++-- projects/minotaur-money/index.js | 5 +- projects/mirrosset/index.js | 3 +- projects/mm-stableswap-polygon/index.js | 7 +- projects/mm-stableswap/index.js | 5 +- projects/mobius/index.js | 51 ++++---- projects/mobiusfinance/index.js | 3 +- projects/mojitoswap/index.js | 3 +- projects/monox/index.js | 17 +-- projects/moola/index.js | 3 +- projects/moondao/index.js | 3 +- projects/moonswap/onchain.js | 7 +- projects/moremoney/StakingMetadata.js | 3 +- projects/moremoney/StrategyMetadata.js | 21 +-- projects/moret/index.js | 7 +- projects/morpho/addresses.js | 3 +- projects/mosquitos-finance/index.js | 1 + projects/mover/index.js | 5 +- projects/mtgo/index.js | 3 +- projects/multialt-stacking/index.js | 5 +- projects/multichainMiner.js | 11 +- projects/muuu/tvl.js | 41 +++--- projects/mymetatrader/index.js | 3 +- projects/naos/index.js | 5 +- projects/nava-finance/index.js | 3 +- projects/nearpad/index.js | 11 +- projects/nemesis-dao/index.js | 3 +- projects/neopin-staking/index.js | 3 +- projects/nereus/index.js | 11 +- projects/nerve/index.js | 13 +- projects/neutra-finance/index.js | 3 +- projects/nft20.js | 7 +- projects/nft360/index.js | 5 +- projects/nftx/index.js | 5 +- projects/noaharkdao/index.js | 3 +- projects/nomad/index.js | 11 +- projects/nomiswap/index.js | 3 +- projects/nord-finance/config.js | 39 +++--- projects/northpole/index.js | 3 +- projects/nsure/index.js | 5 +- projects/nucleon/index.js | 3 +- projects/nuon/index.js | 3 +- projects/octane/index.js | 3 +- projects/oddz/index.js | 17 +-- projects/ohmw/index.js | 3 +- projects/oin-finance/index.js | 3 +- projects/olivedao/index.js | 5 +- projects/omicron/index.js | 5 +- projects/onc/index.js | 23 ++-- projects/ondofinance-v1/index.js | 5 +- projects/one-ring/index.js | 5 +- projects/onedaofinance/index.js | 3 +- projects/optidoge/index.js | 3 +- projects/optifi/index.js | 3 +- projects/optinyan/index.js | 3 +- projects/opyn-gamma/gamma_avax.js | 3 +- projects/opyn-gamma/gamma_polygon.js | 7 +- projects/opyn-squeeth/index.js | 5 +- projects/oraichain.js | 3 +- projects/orbitbridge/index.js | 19 +-- projects/orcadao/index.js | 21 +-- projects/orcus/index.js | 5 +- projects/ordernchaos/index.js | 7 +- projects/oreoswap/index.js | 3 +- projects/orio/index.js | 9 +- projects/orion-money/index.js | 9 +- projects/overnight-daiPlus/index.js | 5 +- projects/overnight-usdPlus/index.js | 11 +- projects/overnight-usdtPlus/index.js | 3 +- projects/oxygen/index.js | 7 +- projects/paladin-dao/index.js | 3 +- projects/paladinfinance/index.js | 3 +- projects/palmaswap/index.js | 3 +- projects/papa-dao/index.js | 5 +- projects/paperdao/index.js | 3 +- projects/parasset/index.js | 5 +- projects/peakdefi/index.js | 3 +- projects/peardao/index.js | 11 +- projects/pegasusdao.js | 3 +- projects/pegasusdao/index.js | 3 +- projects/pegasusfinance/index.js | 3 +- projects/pembrock/index.js | 3 +- projects/pepe-bridge/index.js | 7 +- projects/percent/index.js | 3 +- projects/perp/index.js | 5 +- projects/perp88/index.js | 11 +- projects/phezzan/index.js | 5 +- projects/phission-finance/index.js | 3 +- projects/phoenix-bonds/index.js | 3 +- projects/phoenix/index.js | 3 +- projects/photon-protocol/index.js | 3 +- projects/pidao-finance/index.js | 7 +- projects/piggy/index.js | 3 +- projects/pika.js | 3 +- projects/pinkpea/index.js | 5 +- projects/pirex/index.js | 3 +- projects/planet-finance/index.js | 17 +-- projects/planet-green/index.js | 5 +- projects/plutusDAO/index.js | 3 +- projects/pods-yield/constants.js | 3 +- projects/podsfinance/constants.js | 3 +- projects/polkaex/index.js | 35 ++--- projects/polygon/index.js | 27 ++-- projects/polymarket.js | 3 +- projects/polynomial-earn/index.js | 5 +- projects/polyo-exchange/index.js | 7 +- projects/polyquity/index.js | 5 +- projects/polyroll.js | 5 +- projects/poofcash/index.js | 13 +- projects/pooltogether/index.js | 5 +- projects/popcorn/constants.js | 7 +- projects/popsicle/index.js | 3 +- projects/portfinance/index.js | 19 +-- projects/prdt/index.js | 5 +- projects/predy/index.js | 5 +- projects/premia/index.js | 5 +- projects/premia/v1.js | 5 +- projects/primitive/v1.js | 3 +- projects/privcash/config.js | 3 +- projects/proteo-farms/index.js | 13 +- projects/prxy/index.js | 7 +- projects/pumpkin-dao/index.js | 7 +- projects/pxswap/index.js | 3 +- projects/qidao/index.js | 7 +- projects/qilin/index.js | 3 +- projects/quasar-swap/index.js | 3 +- projects/qubit/index.js | 3 +- projects/quoll/index.js | 3 +- projects/rabbitfinance/index.js | 9 +- projects/rabbitx/index.js | 3 +- projects/radao/index.js | 3 +- projects/radioshack/index.js | 3 +- projects/ragnarokdao/index.js | 3 +- projects/ram.js | 3 +- projects/rari/index.js | 15 ++- projects/ray/index.js | 9 +- projects/realt.js | 3 +- projects/redacted/index.js | 5 +- projects/reflexer/index.js | 3 +- projects/relayChain/index.js | 113 ++++++++-------- projects/ren/index.js | 3 +- projects/reserve/index.js | 7 +- projects/rhea/index.js | 3 +- projects/ribbon-earn/index.js | 5 +- projects/ribbon/evm.js | 25 ++-- projects/rikkei-finance/index.js | 3 +- projects/rising-undead/index.js | 9 +- projects/risk-harbor/index.js | 29 +++-- projects/risq.js | 7 +- projects/rocifiv1/index.js | 5 +- projects/rocketpool/index.js | 3 +- projects/rose-finance/index.js | 3 +- projects/rose/index.js | 11 +- projects/routerprotocol/index.js | 57 +++++---- projects/rubic/index.js | 21 +-- projects/rubicon/index.js | 11 +- projects/ruby-exchange-stable/index.js | 9 +- projects/rubydex/index.js | 3 +- projects/rubyfinance/index.js | 3 +- projects/rugdao/index.js | 5 +- projects/ryoshi/index.js | 5 +- projects/rysk/index.js | 7 +- projects/safedollar/index.js | 3 +- projects/safeohm/index.js | 3 +- projects/sakeperp/index.js | 3 +- projects/salem/index.js | 5 +- projects/samodao/index.js | 3 +- projects/sashimiswap/index.js | 7 +- projects/scientixfinance/index.js | 3 +- projects/scion-finance/addresses.js | 3 +- projects/scream/index.js | 3 +- projects/securedao/index.js | 3 +- projects/seeder/index.js | 3 +- projects/senpai/index.js | 9 +- projects/sentiment/index.js | 3 +- projects/set-protocol/v1.js | 15 ++- projects/sft-protocol/index.js | 3 +- projects/shadecash/index.js | 9 +- projects/sharedstake/index.js | 3 +- projects/sheesha.js | 3 +- projects/shell/index.js | 9 +- projects/sherlock/index.js | 3 +- projects/shibance-bsc/constants/bsc/tokens.js | 7 +- projects/shibance-bsc/constants/kcc/tokens.js | 7 +- projects/shibance-bsc/index.js | 3 +- projects/shibui/index.js | 5 +- projects/shield/index.js | 3 +- projects/shiftdollar/index.js | 3 +- projects/singularityDAO/index.js | 9 +- projects/sio2/constants.js | 27 ++-- projects/sio2/sio2.js | 3 +- projects/sirius-finance/constants.js | 39 +++--- projects/skeleton/index.js | 3 +- projects/smartcredit.js | 3 +- projects/smurfmoney/index.js | 5 +- projects/snowdogdao/index.js | 7 +- projects/snowflake/constants.js | 7 +- projects/snowswap.js | 13 +- projects/soda-protocol/index.js | 7 +- projects/solace-finance/config.js | 31 ++--- projects/solarbeam/index.js | 13 +- projects/solhero/index.js | 13 +- projects/solo/index.js | 7 +- projects/soulswap/index.js | 11 +- projects/soyfinance/index.js | 3 +- projects/spartacus/index.js | 5 +- projects/spiral-fi-mixer/index.js | 3 +- projects/squid-dao/index.js | 3 +- projects/squidstake/index.js | 3 +- projects/stabilizefi/index.js | 7 +- projects/stabl/index.js | 3 +- projects/stablekoi/index.js | 9 +- projects/stablz/index.js | 3 +- projects/stacker/index.js | 7 +- projects/stafi/index.js | 3 +- projects/stakedao/index.js | 5 +- projects/stakedotlink/index.js | 3 +- projects/stakehound/index.js | 3 +- projects/stakesteak/index.js | 3 +- projects/stakewise/index.js | 3 +- projects/standcash/index.js | 7 +- projects/starbank/index.js | 11 +- projects/starfish-finance/index.js | 13 +- projects/starfish-liq-staking/index.js | 3 +- projects/stargate-finance/index.js | 5 +- projects/stargatefinance/index.js | 3 +- projects/starlay/constanrs.js | 33 ++--- projects/starlay/starlay.js | 3 +- projects/steakbank/index.js | 3 +- projects/stellaswap.js | 3 +- projects/steth-win/index.js | 3 +- projects/stfil/index.js | 3 +- projects/stipend.js | 3 +- projects/stlos-liquid-staking/index.js | 3 +- projects/stonedefi/index.js | 3 +- projects/strike/index.js | 3 +- projects/strips/index.js | 3 +- projects/sturdy/index.js | 3 +- projects/sugarswap/index.js | 3 +- projects/summitdefi/index.js | 3 +- projects/sun/index.js | 29 +++-- projects/superbots/index.js | 9 +- projects/sushiswap-kashi/kashi-lending.js | 5 +- projects/sushiswap/historical.js | 3 +- projects/sushiswap/index.js | 3 +- projects/suter-shield/index.js | 13 +- projects/svn/index.js | 5 +- projects/swampfinance/index.js | 3 +- projects/swapmatic/index.js | 3 +- projects/swapsicle/index.js | 15 ++- projects/swerve.js | 15 ++- projects/swim/config.js | 9 +- projects/swivel/index.js | 9 +- projects/symbiosis-finance/config.js | 27 ++-- projects/symphony/index.js | 3 +- projects/synapse/config.js | 121 +++++++++--------- projects/synapse/index.js | 3 +- projects/syncdex-finance/index.js | 7 +- projects/synlev.js | 3 +- projects/synthetix/api.js | 5 +- projects/synthetix/apiCache.js | 5 +- projects/taichi/index.js | 5 +- projects/talentprotocol/index.js | 3 +- projects/tbill.js | 3 +- projects/tbtc/index.js | 3 +- projects/teddy/index.js | 3 +- projects/tegro/index.js | 3 +- projects/templar/index.js | 7 +- projects/templedao/index.js | 3 +- projects/tempodao/index.js | 3 +- projects/tempus.js | 11 +- projects/tender-finance/index.js | 3 +- projects/tezos-baking/index.js | 3 +- projects/thales/index.js | 17 +-- projects/the-idols/index.js | 3 +- projects/thetanuts/index.js | 29 +++-- projects/thorusfi/index.js | 3 +- projects/tidalfinance/index.js | 3 +- projects/tinlake/index.js | 3 +- projects/tipidao/index.js | 5 +- projects/tokemak/index.js | 15 ++- projects/tokenlon/index.js | 3 +- projects/tomb/index.js | 9 +- projects/topshelf/index.js | 13 +- projects/tornadao/index.js | 3 +- projects/tornado/config.js | 9 +- projects/toros/config.js | 5 +- projects/tortuga/index.js | 1 + projects/toucan-protocol/config.js | 3 +- projects/tracerdao/index.js | 3 +- projects/traddify/index.js | 3 +- projects/traderjoe-lend/index.js | 5 +- projects/traderjoe/index.js | 5 +- projects/trainswap/index.js | 3 +- projects/tranche/index.js | 3 +- projects/tranquil/index.js | 3 +- projects/trapeza-protocol/index.js | 3 +- projects/trava/index.js | 11 +- projects/traverse/index.js | 3 +- projects/treasury/1inch.js | 11 +- projects/treasury/aave.js | 81 ++++++------ projects/treasury/aavegotchi.js | 3 +- projects/treasury/abracadabra.js | 17 +-- projects/treasury/alchemix.js | 9 +- projects/treasury/alyx.js | 5 +- projects/treasury/apollox.js | 3 +- projects/treasury/aragon.js | 11 +- projects/treasury/archimedes.js | 5 +- projects/treasury/atlas-usv.js | 9 +- projects/treasury/augury.js | 3 +- projects/treasury/aura.js | 5 +- projects/treasury/badger-dao.js | 13 +- projects/treasury/balancer.js | 15 ++- projects/treasury/banklessdao.js | 13 +- projects/treasury/bankofcronos.js | 5 +- projects/treasury/battlefly.js | 9 +- projects/treasury/beanstalk.js | 3 +- projects/treasury/beethovenx.js | 7 +- projects/treasury/benddao.js | 3 +- projects/treasury/bitdao.js | 9 +- projects/treasury/cap.js | 3 +- projects/treasury/convex.js | 9 +- projects/treasury/crabada.js | 3 +- projects/treasury/cubo.js | 3 +- projects/treasury/defender.js | 3 +- projects/treasury/dex.js | 5 +- projects/treasury/dfyn.js | 3 +- projects/treasury/dodo.js | 13 +- projects/treasury/dopex.js | 3 +- projects/treasury/dxdao.js | 11 +- projects/treasury/dydx.js | 3 +- projects/treasury/empyreal.js | 3 +- projects/treasury/ens.js | 3 +- projects/treasury/eth-foundation.js | 9 +- projects/treasury/euler.js | 5 +- projects/treasury/fantohm-dao.js | 7 +- projects/treasury/flair-dex.js | 13 +- projects/treasury/floor-dao.js | 5 +- projects/treasury/friendswithbenefits.js | 5 +- projects/treasury/gale.js | 3 +- projects/treasury/gearbox.js | 11 +- projects/treasury/gitcoin.js | 3 +- projects/treasury/gnosis-dao.js | 11 +- projects/treasury/gooddollar.js | 3 +- projects/treasury/gyro.js | 5 +- projects/treasury/idle-dao.js | 23 ++-- projects/treasury/india-covid-relief-fund.js | 19 +-- projects/treasury/instadapp.js | 5 +- projects/treasury/inverse.js | 19 +-- projects/treasury/ipor.js | 3 +- projects/treasury/jade-protocol.js | 15 ++- projects/treasury/jonesdao.js | 5 +- projects/treasury/jpegd.js | 13 +- projects/treasury/just-yield.js | 3 +- projects/treasury/keeperdao.js | 13 +- projects/treasury/king-finance.js | 5 +- projects/treasury/klima-dao.js | 3 +- projects/treasury/kromatika.js | 3 +- projects/treasury/lido.js | 11 +- projects/treasury/liondex.js | 3 +- projects/treasury/liquity-treasury.js | 7 +- projects/treasury/looksrare.js | 3 +- projects/treasury/lsdx-finance.js | 7 +- projects/treasury/mahadao.js | 3 +- projects/treasury/maker.js | 7 +- projects/treasury/maple.js | 3 +- projects/treasury/metacartel.js | 7 +- projects/treasury/metronome.js | 7 +- projects/treasury/mimo-protocol.js | 11 +- projects/treasury/moret.js | 5 +- projects/treasury/mstable.js | 13 +- projects/treasury/mycelium.js | 3 +- projects/treasury/nemesis.js | 3 +- projects/treasury/nexus-mutual.js | 5 +- projects/treasury/nftx.js | 3 +- projects/treasury/nouns.js | 5 +- projects/treasury/oasisswapdex.js | 3 +- projects/treasury/ovr.js | 3 +- projects/treasury/paladin-finance.js | 9 +- projects/treasury/parrot-protocol.js | 7 +- projects/treasury/peardao.js | 11 +- projects/treasury/pegasusfinance.js | 3 +- projects/treasury/perion.js | 5 +- projects/treasury/perpetual-protocol.js | 5 +- projects/treasury/piedao.js | 9 +- projects/treasury/platypus.js | 17 +-- projects/treasury/pleasrdao.js | 3 +- projects/treasury/pooltogether.js | 13 +- projects/treasury/premia.js | 13 +- projects/treasury/puli.js | 9 +- projects/treasury/railgun.js | 59 ++++----- projects/treasury/rarible.js | 9 +- projects/treasury/revoluzion.js | 3 +- projects/treasury/ribbon.js | 17 +-- projects/treasury/saddle.js | 3 +- projects/treasury/sakai-vault.js | 3 +- projects/treasury/shapeshift.js | 11 +- projects/treasury/shibui.js | 5 +- projects/treasury/spartacus.js | 5 +- projects/treasury/spookyswap.js | 7 +- projects/treasury/stakedao.js | 11 +- projects/treasury/stargate.js | 21 +-- projects/treasury/sushiswap.js | 5 +- projects/treasury/synthetix.js | 13 +- projects/treasury/thales.js | 3 +- projects/treasury/tokemak.js | 9 +- projects/treasury/tokenIon.js | 29 +++-- projects/treasury/traderjoe.js | 5 +- projects/treasury/treasure-dao.js | 5 +- projects/treasury/umamifinance.js | 11 +- projects/treasury/uniswap.js | 11 +- projects/treasury/uwulend.js | 7 +- projects/treasury/velodrome.js | 15 ++- projects/treasury/venus.js | 9 +- projects/treasury/void.js | 3 +- projects/treasury/volta.js | 9 +- projects/treasury/wonderland.js | 15 ++- projects/treasury/y2k.js | 9 +- projects/treasury/yearn.js | 15 ++- projects/trickortreat/index.js | 5 +- projects/trisolaris.js | 11 +- projects/tropicalfinance/index.js | 9 +- projects/trufin/index.js | 3 +- projects/trustswap/index.js | 7 +- projects/typhoon.js | 3 +- projects/tzwrap/tokens.js | 67 +++++----- projects/ubiquitydao/index.js | 3 +- projects/ultronStakingHub/index.js | 3 +- projects/ultronSwap/index.js | 3 +- projects/umamifinance/index.js | 3 +- projects/unamano/index.js | 3 +- projects/unbk/fantom-yields.js | 11 +- projects/unfederalreserve/index.js | 3 +- projects/unicrypt/config.js | 3 +- projects/unidex/index.js | 13 +- projects/unifi-protocol/index.js | 3 +- projects/union-finance/index.js | 5 +- projects/unipower/index.js | 3 +- projects/uniswap/v1.js | 3 +- projects/unit.js | 19 +-- projects/unitrade/index.js | 3 +- projects/universe/index.js | 11 +- projects/uniwhale/index.js | 3 +- projects/unore/index.js | 17 +-- projects/unusdao/index.js | 5 +- projects/v3s-finance/index.js | 3 +- projects/vee-finance/index.js | 7 +- projects/vela-exchange/index.js | 3 +- projects/velaro/index.js | 13 +- projects/velhalla.js | 3 +- projects/venus.js | 7 +- projects/versedex/index.js | 9 +- projects/vertex/index.js | 3 +- projects/vesq/index.js | 3 +- projects/vesta/index.js | 7 +- projects/viperswap/index.js | 3 +- projects/visor/index.js | 3 +- projects/volmex/index.js | 13 +- projects/volta-dao/index.js | 13 +- projects/warpbond/index.js | 3 +- projects/wasabix/index.js | 17 +-- projects/waterloan/index.js | 15 ++- projects/wbtc.js | 3 +- projects/weldfinance/index.js | 13 +- projects/welnance/index.js | 3 +- projects/westater/index.js | 3 +- projects/whaleloans/index.js | 7 +- projects/whiteheart/index.js | 7 +- projects/wonderland/index.js | 18 +-- projects/wonderly/index.js | 5 +- projects/woofi.js | 45 +++---- projects/wowswap/constants.js | 7 +- projects/wowswap/protocol.js | 3 +- projects/xWeowns/index.js | 3 +- projects/xdai/index.js | 3 +- projects/xdefi/index.js | 9 +- projects/xdollar-finance/index.js | 27 ++-- projects/xenophon/index.js | 3 +- projects/xensa/index.js | 3 +- projects/xeus/index.js | 3 +- projects/xsigma/index.js | 7 +- projects/xtoken/constants.js | 21 +-- projects/xusdmoney/index.js | 7 +- projects/xy-finance/index.js | 59 ++++----- projects/yama-finance/index.js | 3 +- projects/yaxis/index.js | 3 +- projects/yetiFinance/index.js | 7 +- projects/yfdai/index.js | 5 +- projects/yieldyak-staked-avax/index.js | 3 +- projects/youves/data.js | 23 ++-- projects/youves/index.js | 5 +- projects/ysmart/index.js | 5 +- projects/zencha/index.js | 13 +- projects/zeroshift/index.js | 3 +- projects/zerotwohm/index.js | 7 +- projects/zest-protocol/index.js | 5 +- projects/zeus-finance/index.js | 3 +- projects/zharta/index.js | 3 +- projects/zigzag/index.js | 11 +- projects/zkasino/index.js | 9 +- projects/zkswap/v1.js | 3 +- projects/zkswap/v2.js | 3 +- projects/zodiac/index.js | 3 +- projects/zomb2/index.js | 3 +- projects/zombi/index.js | 3 +- projects/zoomswap/index.js | 3 +- projects/zootopia-finance/index.js | 7 +- projects/zunami/index.js | 3 +- utils/scripts/useTokenLabels.js | 14 +- 972 files changed, 4468 insertions(+), 3503 deletions(-) diff --git a/projects/01/index.js b/projects/01/index.js index f209a3bc4c..d7c4101cef 100644 --- a/projects/01/index.js +++ b/projects/01/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/solana') async function tvl() { const tokens = [ - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "So11111111111111111111111111111111111111112", - "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", + ADDRESSES.solana.USDC, + ADDRESSES.solana.SOL, + ADDRESSES.solana.USDT, "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E", "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", diff --git a/projects/0vix/index.js b/projects/0vix/index.js index 47597b9089..11aad6127c 100644 --- a/projects/0vix/index.js +++ b/projects/0vix/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {compoundExports} = require('../helper/compound') const master0vix = "0x8849f1a0cB6b5D6076aB150546EddEe193754F1C"; @@ -10,7 +11,7 @@ module.exports = { [Math.floor(new Date('2023-04-28')/1e3), 'Protocol was hacked!'], ], polygon: compoundExports(master0vix, chain, oMATIC, matic), - polygon_zkevm: compoundExports("0x6EA32f626e3A5c41547235ebBdf861526e11f482", "polygon_zkevm", "0xee1727f5074e747716637e1776b7f7c7133f16b1", "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9"), + polygon_zkevm: compoundExports("0x6EA32f626e3A5c41547235ebBdf861526e11f482", "polygon_zkevm", "0xee1727f5074e747716637e1776b7f7c7133f16b1", ADDRESSES.polygon_zkevm.WETH), }; delete module.exports.polygon.borrowed \ No newline at end of file diff --git a/projects/0x_nodes/index.js b/projects/0x_nodes/index.js index f72096642a..3184233400 100644 --- a/projects/0x_nodes/index.js +++ b/projects/0x_nodes/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { GraphQLClient, gql } = require('graphql-request') const { getBlock } = require('../helper/http') const { staking } = require('../helper/staking') @@ -6,7 +7,7 @@ const sdk = require('@defillama/sdk') const CONFIG = { ethereum: { uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11', - strategy_token: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', //wETH + strategy_token: ADDRESSES.ethereum.WETH, //wETH bios_token: '0xAACa86B876ca011844b5798ECA7a67591A9743C8', kernel_addr: '0xcfcff4eb4799cda732e5b27c3a36a9ce82dbabe0' }, @@ -18,13 +19,13 @@ const CONFIG = { }, polygon: { uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11-polygon', - strategy_token: '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', //wMATIC + strategy_token: ADDRESSES.ethereum.MATIC, //wMATIC bios_token: '0xe20d2df5041f8ed06976846470f727295cdd4d23', kernel_addr: '0x267720b5d8dcbdb847fc333ccc68cb284648b816' }, fantom: { uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11-fantom', - strategy_token: '0x4e15361fd6b4bb609fa63c81a2be19d873717870', //wFTM + strategy_token: ADDRESSES.ethereum.FTM, //wFTM bios_token: '0x75e0eb8e6d92ab832bb11e46c041d06a89ac5f0d', kernel_addr: '0x9db0e84ea53c5a3c000a721bb4295a6053b3de78' }, diff --git a/projects/1bch/index.js b/projects/1bch/index.js index adae18cd02..fb161a5bc0 100644 --- a/projects/1bch/index.js +++ b/projects/1bch/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getUniTVL } = require('../helper/unknownTokens') const { stakingPricedLP } = require('../helper/staking') -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04"; +const WBCH = ADDRESSES.smartbch.WBCH; const rBCH = "0xb4602588E5F1F9653B6F234206c91552E457fAcB"; const FACTORY = "0x3dC4e6aC26df957a908cfE1C0E6019545D08319b"; const MASTERBREEDER = "0xeC0A7496e66a206181034F86B261DDDC1A2c406E"; diff --git a/projects/1beam/utils.js b/projects/1beam/utils.js index 51c15add81..47d6cbbeef 100644 --- a/projects/1beam/utils.js +++ b/projects/1beam/utils.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const TokenMaps = { - '0x765277eebeca2e31912c9946eae1021199b39c61': ['dai', 18], - '0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b': ['usd-coin', 6], - '0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73': ['tether', 6], + [ADDRESSES.shiden.ETH]: ['dai', 18], + [ADDRESSES.telos.USDC]: ['usd-coin', 6], + [ADDRESSES.telos.USDT]: ['tether', 6], '0xa649325aa7c5093d12d6f98eb4378deae68ce23f': ['binance-usd', 18] } diff --git a/projects/1inch/config.js b/projects/1inch/config.js index d8027e2a11..1b90262e01 100644 --- a/projects/1inch/config.js +++ b/projects/1inch/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { ethereum: { @@ -7,21 +8,21 @@ module.exports = { bsc: { MooniswapFactory: '0xd41b24bba51fac0e4827b6f94c0d6ddeb183cd64', blacklistedTokens: [ - '0x6b175474e89094c44da98b954eedeac495271d0f', - '0xae7ab96520de3a18e5e111b5eaab095312d7fe84', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.WETH, '0x220b71671b649c03714da9c621285943f3cbcdc6', '0x875773784af8135ea0ef43b5a374aad105c5d39e', '0x1b40183efb4dd766f11bda7a7c3ad8982e998421', '0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f', - '0xdac17f958d2ee523a2206206994597c13d831ec7', + ADDRESSES.ethereum.USDT, '0xaea46a60368a7bd060eec7df8cba43b7ef41ad85', '0x888888888889c00c67689029d7856aac1065ec11', '0xe796d6ca1ceb1b022ece5296226bf784110031cd', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + ADDRESSES.ethereum.USDC, '0xbb9284484cb9a2bc7950a1276edba2f6358ea677', - '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', + ADDRESSES.ethereum.AAVE, '0x9dcae4a9e65bf7925eb7809142f848d3cf8e96ac', '0x3fa729b4548becbad4eab6ef18413470e6d5324c', '0xcd62b1c403fa761baadfc74c525ce2b51780b184', diff --git a/projects/1swap/index.js b/projects/1swap/index.js index 22d711250f..06de58b16c 100644 --- a/projects/1swap/index.js +++ b/projects/1swap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { default: BigNumber } = require('bignumber.js'); const abiMoonriver = require('./abi-moonriver.json'); @@ -70,9 +71,9 @@ const moonriverTvl = async (timestamp, ethBlock, chainBlocks) => { function getTokenId(address) { switch(address) { - case '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d': + case [ADDRESSES.moonriver.USDC]: return ['usd-coin', 6] - case '0xb44a9b6905af7c801311e8f4e76932ee959c663c': + case [ADDRESSES.moonriver.USDT]: return ['tether', 6] case '0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844': return ['dai', 18] diff --git a/projects/BankOfCronos/index.js b/projects/BankOfCronos/index.js index 9359ab82dc..5cbc0620f7 100644 --- a/projects/BankOfCronos/index.js +++ b/projects/BankOfCronos/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const BOC_TREASURY_ADDRESS = "0xBacF28BF21B374459C738289559EF89978D08102"; const CUSD_ADDRESS = "0x26043Aaa4D982BeEd7750e2D424547F5D76951d4"; -const USDC_ADDRESS = "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59"; +const USDC_ADDRESS = ADDRESSES.cronos.USDC; module.exports = { start: 6949784, diff --git a/projects/KungFuu-Finance/index.js b/projects/KungFuu-Finance/index.js index f28f58110d..87f256fc68 100644 --- a/projects/KungFuu-Finance/index.js +++ b/projects/KungFuu-Finance/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/unwrapLPs') const { getChainTransform } = require('../helper/portedTokens') const sdk = require("@defillama/sdk") -const wFTM = '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83' +const wFTM = ADDRESSES.fantom.WFTM const kngfuu_token = "0x89b61Ab033584918103698953870F07D6db412A3".toLowerCase() async function tvl(ts, _block, { fantom: block }) { @@ -12,7 +13,7 @@ async function tvl(ts, _block, { fantom: block }) { const owners = ["0x29187b10a04B269Cf067AE013B3ab58d4affaC03", "0xaaef45e31e2d2865a4722c1591ba4cd8f6e83bad", "0xfeAFAF0610fe2c73bB6345080056066aE109B31F"] const treasuryTokens = [ wFTM, // WFTM - "0x04068da6c83afcfa0e13ba15a6696662335d5b75", // USDC + ADDRESSES.fantom.USDC, // USDC "0xf704f5ac5edf152168e07e6f5f108366911250ac", // WFTM/KNGFUU, needs to account only half of it ] diff --git a/projects/MantisSwap/index.js b/projects/MantisSwap/index.js index 0af6523226..4a2e75be5f 100644 --- a/projects/MantisSwap/index.js +++ b/projects/MantisSwap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const tokenDict = { "0x62Ba5e1AB1fa304687f132f67E35bFC5247166aD": [ - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.DAI, ], }; diff --git a/projects/OCTOplace/index.js b/projects/OCTOplace/index.js index 9dd8a88ba5..dd09f3c7b9 100644 --- a/projects/OCTOplace/index.js +++ b/projects/OCTOplace/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokensExport } = require("../helper/unwrapLPs"); const contractKAVA = "0x61F91266F6abEA61447E00EB781A3c38a3D1b925"; const contractTHETA = "0x6e4c614da85DD861e08f84706742239dBA892Df1"; -const KAVA_TFUEL = "0x0000000000000000000000000000000000000000"; // Native coin -const USDC = "0xfa9343c3897324496a05fc75abed6bac29f8a40f"; +const KAVA_TFUEL = ADDRESSES.null; // Native coin +const USDC = ADDRESSES.telos.ETH; module.exports = { kava: { tvl: sumTokensExport({ owner: contractKAVA, tokens: [KAVA_TFUEL, USDC] }) }, diff --git a/projects/Paraluni/index.js b/projects/Paraluni/index.js index 8bd2c7f962..fabadc573d 100644 --- a/projects/Paraluni/index.js +++ b/projects/Paraluni/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const paraChef = "0x77341bF31472E9c896f36F4a448fdf573A0D9B60"; const prehackChef = '0x633fa755a83b015cccdc451f82c57ea0bd32b4b4' @@ -7,11 +8,11 @@ module.exports = { tvl: sumTokensExport({ owner: paraChef, tokens: [ - '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', - '0x2170ed0880ac9a755fd29b2688956bd959f933f8', - '0x55d398326f99059ff775485246999027b3197955', - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', - '0xe9e7cea3dedca5984780bafc599bd69add087d56', + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.ETH, + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.BUSD, '0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd', '0x965f527d9159dce6288a2219db51fc6eef120dd1', '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', diff --git a/projects/SharpeLabs/index.js b/projects/SharpeLabs/index.js index 6f829f46b0..43097a1a4a 100644 --- a/projects/SharpeLabs/index.js +++ b/projects/SharpeLabs/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const StEthVaultContract = '0xfc85db895e070017ab9c84cb65b911d56b729ee9'; @@ -12,7 +13,7 @@ async function tvl(_, _1, _2, { api }) { }); return { - 'ethereum:0x0000000000000000000000000000000000000000': EthBalance + ['ethereum:' + ADDRESSES.null]: EthBalance }; } diff --git a/projects/aave/index.js b/projects/aave/index.js index ee279d600d..1f1aed2a4b 100644 --- a/projects/aave/index.js +++ b/projects/aave/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getV2Reserves, getTvl, getBorrowed, aaveChainTvl } = require('../helper/aave'); const { staking } = require('../helper/staking'); @@ -28,7 +29,7 @@ function ethereum(borrowed) { } } -const aaveTokenAddress = "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9"; +const aaveTokenAddress = ADDRESSES.ethereum.AAVE; async function stakingBalancerTvl(timestamp, block) { return unwrapBalancerToken({ block, owner: '0xa1116930326d21fb917d5a27f1e9943a9595fb47', balancerToken: '0x41a08648c3766f9f9d85598ff102a08f4ef84f84' }) diff --git a/projects/aave/v1.js b/projects/aave/v1.js index d22d548777..1c00170dcc 100644 --- a/projects/aave/v1.js +++ b/projects/aave/v1.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require("bignumber.js"); const abi = require('../helper/abis/aave.json'); @@ -57,7 +58,7 @@ async function depositMultiMarketV1Tvl(balances, lendingPoolCore, block, chain, return balances; } -function multiMarketV1Tvl(balances, lendingPoolCore, block, borrowed, chain="ethereum", eth = "0x0000000000000000000000000000000000000000") { +function multiMarketV1Tvl(balances, lendingPoolCore, block, borrowed, chain="ethereum", eth = ADDRESSES.null) { return (borrowed?multiMarketV1TvlBorrowed:depositMultiMarketV1Tvl)(balances, lendingPoolCore, block, chain, eth) } @@ -65,7 +66,7 @@ async function singleAssetV1Market(balances, lendingPoolCore, block, borrowed, c return multiMarketV1Tvl(balances, lendingPoolCore, block, borrowed, chain, eth); } -async function uniswapV1Market(balances, uniswapLendingPoolCore, block, borrowed, eth = "0x0000000000000000000000000000000000000000"){ +async function uniswapV1Market(balances, uniswapLendingPoolCore, block, borrowed, eth = ADDRESSES.null){ const uniswapMarketTvlBalances = {} await multiMarketV1Tvl( uniswapMarketTvlBalances, diff --git a/projects/aavegotchi/index.js b/projects/aavegotchi/index.js index 38847ace3c..8b7b6879ea 100644 --- a/projects/aavegotchi/index.js +++ b/projects/aavegotchi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { transformPolygonAddress } = require("../helper/portedTokens"); @@ -8,7 +9,7 @@ const { getBlock } = require('../helper/http') const vaultContractETH = "0xFFE6280ae4E864D9aF836B562359FD828EcE8020"; const tokensETH = [ "0x3F382DbD960E3a9bbCeaE22651E88158d2791550", // GHST - "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI + ADDRESSES.ethereum.DAI, // DAI ]; const vaultContractsPolygon = [ diff --git a/projects/aboard-exchange/index.js b/projects/aboard-exchange/index.js index 95b84bafe0..e30206d2bf 100644 --- a/projects/aboard-exchange/index.js +++ b/projects/aboard-exchange/index.js @@ -1,21 +1,22 @@ +const ADDRESSES = require('../helper/coreAssets.json') //20230428 initial release: simple and clear const { sumTokensExport } = require('../helper/unwrapLPs'); const ownerArbitrum = '0x7a08b29A7Ad4A19A5ECa0c82F5F082872488D135'; // contract address const tokensArbitrum = [ - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC - '0x0000000000000000000000000000000000000000', // ETH - '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', // USDT - '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', // WBTC + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.null, // ETH + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.arbitrum.WBTC, // WBTC ]; const ownerAvalanche = '0xd8b0D18faE7eA29F2AD95d01FFb479E0021a9A5e'; // contract address const tokensAvalanche = [ - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', // USDC - '0x0000000000000000000000000000000000000000', // AVAX - '0x152b9d0FdC40C096757F570A51E494bd4b943E50', // BTC.b - '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', // WETH.e - '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', // USDt + ADDRESSES.avax.USDC, // USDC + ADDRESSES.null, // AVAX + ADDRESSES.avax.BTC_b, // BTC.b + ADDRESSES.avax.WETH_e, // WETH.e + ADDRESSES.avax.USDt, // USDt ]; module.exports = { diff --git a/projects/acoconut/index.js b/projects/acoconut/index.js index 0e8584094e..65fdc8aeac 100644 --- a/projects/acoconut/index.js +++ b/projects/acoconut/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const singlePlusAbi = require('./abis/singlePlus'); const { sumTokens2 } = require('../helper/unwrapLPs') const tokensInacBTC = [ - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + ADDRESSES.ethereum.WBTC, '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D' ] @@ -16,7 +17,7 @@ const bscSingleTokens = [ '0x02827D495B2bBe37e1C021eB91BCdCc92cD3b604', //autoBTC+ ] -const btcb = 'bsc:0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c' +const btcb = 'bsc:' + ADDRESSES.bsc.BTCB async function eth(timestamp, block) { return sumTokens2({ block, owner: acBTCTokenHolder, tokens: tokensInacBTC}) diff --git a/projects/across/index.js b/projects/across/index.js index 91bb773e81..0544de93ad 100644 --- a/projects/across/index.js +++ b/projects/across/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getLogs } = require('../helper/cache/getLogs') @@ -6,13 +7,13 @@ const hubPoolAddress = "0xc186fA914353c44b2E33eBE05f21846F1048bEda" let pools = [ // bridge pools - ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "0x256c8919ce1ab0e33974cf6aa9c71561ef3017b6"], - ["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x7355efc63ae731f584380a9838292c7046c1e433"], + [ADDRESSES.ethereum.USDC, "0x256c8919ce1ab0e33974cf6aa9c71561ef3017b6"], + [ADDRESSES.ethereum.WETH, "0x7355efc63ae731f584380a9838292c7046c1e433"], ["0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", "0xdfe0ec39291e3b60aca122908f86809c9ee64e90"], ["0x3472A5A71965499acd81997a54BBA8D852C6E53d", "0x43298f9f91a4545df64748e78a2c777c580573d6"], - ["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", "0x02fbb64517e1c6ed69a6faa3abf37db0482f1152"], + [ADDRESSES.ethereum.WBTC, "0x02fbb64517e1c6ed69a6faa3abf37db0482f1152"], ["0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc", "0x4841572daa1f8e4ce0f62570877c2d0cc18c9535"], - ["0x6B175474E89094C44Da98b954EedeAC495271d0F", "0x43f133fe6fdfa17c417695c476447dc2a449ba5b"], + [ADDRESSES.ethereum.DAI, "0x43f133fe6fdfa17c417695c476447dc2a449ba5b"], ] async function tvl(_, block, _1, { api }) { diff --git a/projects/ad-astra/index.js b/projects/ad-astra/index.js index 44aea610e9..5eb4b8e040 100644 --- a/projects/ad-astra/index.js +++ b/projects/ad-astra/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/sumTokens') module.exports={ ethereum:{ tvl: sumTokensExport({ owner: '0x92a26975433a61cf1134802586aa669bab8b69f3', - tokens: ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xdac17f958d2ee523a2206206994597c13d831ec7', '0x4fabb145d64652a948d72533023f6e7a623c7c53', '0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c', ], + tokens: [ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.BUSD, '0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c', ], }) } } \ No newline at end of file diff --git a/projects/adamantfinance/index.js b/projects/adamantfinance/index.js index 5dcdfc3f4d..20226bf624 100644 --- a/projects/adamantfinance/index.js +++ b/projects/adamantfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { stakings } = require("../helper/staking"); @@ -38,7 +39,7 @@ const stakingContracts_Arbitrum = [ ]; const lpAddresses_arbitrum = []; -const ARBY = "0x09ad12552ec45f82bE90B38dFE7b06332A680864" +const ARBY = ADDRESSES.arbitrum.ARBY /*** Cronos Addresses ***/ const stakingContracts_cronos = [ @@ -46,7 +47,7 @@ const stakingContracts_cronos = [ "0xD4bcCf04a7CA546D3cfC46205AA7C58EB98c7495", "0x323663B759567BAf744C182634585F7164c3c442", ]; -const CADDY = "0x09ad12552ec45f82be90b38dfe7b06332a680864"; +const CADDY = ADDRESSES.arbitrum.ARBY; const vaultAddresses_cronos = [ "0x3a9645ee664DCE6529Af678aaB4fE3AD9d68323f", diff --git a/projects/aevo-xyz/index.js b/projects/aevo-xyz/index.js index ea0807498c..3d2e14f5a6 100644 --- a/projects/aevo-xyz/index.js +++ b/projects/aevo-xyz/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: sumTokensExport({ owner: '0x4082C9647c098a6493fb499EaE63b5ce3259c574', tokens: ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48']}) + tvl: sumTokensExport({ owner: '0x4082C9647c098a6493fb499EaE63b5ce3259c574', tokens: [ADDRESSES.ethereum.USDC]}) } } \ No newline at end of file diff --git a/projects/agarthadao/index.js b/projects/agarthadao/index.js index 113b72a73e..011f735822 100644 --- a/projects/agarthadao/index.js +++ b/projects/agarthadao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {ohmTvl} = require("../helper/ohm"); const clavis = "0xa5b0f5ef809fd04c9d4320211c711cb34ef812dd"; @@ -6,7 +7,7 @@ const stakingContract = "0x7e4939ca7847ae3ff9501b27470dcd0a69f54fa6"; const treasury = "0x2c5bb99df3d43efd98ff1d7aa34d4207c83638e4" const treasuryTokens = [ ["0x130966628846bfd36ff31a822705796e8cb8c18d", false],// MIM - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], // WAVAX + [ADDRESSES.avax.WAVAX, false], // WAVAX ["0x72f95Da8d7a9b405191cAE0Fc31711d575044eFb", true], // CLAVIS-MIM JLP ["0x7d5b42704bb34c5bbbcd3be4f5762a663b38a2df", true] // CLAVIS-WAVAX JLP ] diff --git a/projects/agilitylsd/index.js b/projects/agilitylsd/index.js index 94ad5733c1..55392b9089 100644 --- a/projects/agilitylsd/index.js +++ b/projects/agilitylsd/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const { getLogs } = require("../helper/cache/getLogs"); const { staking } = require("../helper/staking"); const FACTORY_CONTRACT = "0xe4a51ec59233ba1f62b71f84554622a532b584ed"; -const WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH_ADDRESS = ADDRESSES.ethereum.WETH; const AGI_ETH_LP_ADDRESS = "0x498c00E1ccC2AFFf80F6Cc6144EAEB95c46cc3B5"; const AGI_ETH_STAKING_POOL = "0xC8187048f7Ab0db0774b674fEf3f4F4285A01bF4"; diff --git a/projects/agora/index.js b/projects/agora/index.js index 45e49512c4..79f5f2d85b 100644 --- a/projects/agora/index.js +++ b/projects/agora/index.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { compoundExports } = require("../helper/compound"); const { getUniTVL } = require('../helper/unknownTokens') const factory = '0x3c4063B964B1b3bF229315fCc4df61a694B0aE84' -const metis = '0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000' +const metis = ADDRESSES.metis.Metis const agora = '0x0Ed0Ca6872073E02cd3aE005BaF04bA43BE947fA' const whitelist = [ agora, // AGORA - '0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', // USDC - '0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', // USDT - '0x420000000000000000000000000000000000000A', // WETH + ADDRESSES.metis.m_USDC, // USDC + ADDRESSES.metis.m_USDT, // USDT + ADDRESSES.metis.WETH, // WETH '0x94e56c0c59433599ba857a9a7243b2826745cf91', //kWBTC '0x6d11f074131e3fc61c983cce538f5d0ca3553c0f', //kUSDC '0xcfd482dce13ca1d27834d381af1b570e9e6c6810', //kmetis diff --git a/projects/akiba/index.js b/projects/akiba/index.js index 545d902a94..64aaf634f8 100644 --- a/projects/akiba/index.js +++ b/projects/akiba/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/unknownTokens') const Contracts = { kava: { - wkava: "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b", + wkava: ADDRESSES.kava.WKAVA, akiba: "0x8f5af8d2E06c976970752b5596BE05Cd518Adcdd", bank: "0x0CA1088C075E5C9447D5C07984aCCc48c816D01D", // Pool multiFeeDistribution: "0xa41045953C7fa32CCea9132997b2E7460db5ae3F", // Staking diff --git a/projects/alkemi/index.js b/projects/alkemi/index.js index c8100328c7..dda8ab3dd4 100644 --- a/projects/alkemi/index.js +++ b/projects/alkemi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -12,7 +13,7 @@ const BigNumber = require('bignumber.js'); ==================================================*/ -const etherAddress = '0x0000000000000000000000000000000000000000'; +const etherAddress = ADDRESSES.null; const alkPools = [ '0x397c315d64D74d82A731d656f9C4D586D200F90A', // Alkemi Earn '0x4822D9172e5b76b9Db37B75f5552F9988F98a888', // Alkemi Earn Open @@ -20,9 +21,9 @@ const alkPools = [ const alkTokens = [ '0x8125afd067094cD573255f82795339b9fe2A40ab', // WETH, Alkemi Earn Open '0x1f52453B32BFab737247114D56d756A6c37dd9Ef', // WETH, Alkemi Earn - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI + ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.DAI, // DAI ]; async function tvl(timestamp, block) { diff --git a/projects/allbridge/index.js b/projects/allbridge/index.js index a5f56d0e0b..b6f03feead 100644 --- a/projects/allbridge/index.js +++ b/projects/allbridge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const solana = require('../helper/solana') @@ -17,8 +18,8 @@ const data = { decimals: 18 }, tokens: [ - {name: "celo-dollar", address: "0x765DE816845861e75A25fCA122bb6898B8B1282a", decimals: 18}, - {name: "usd-coin", address: "0x2A3684e9Dc20B857375EA04235F2F7edBe818FA7", decimals: 6}, + {name: "celo-dollar", address: ADDRESSES.celo.cUSD, decimals: 18}, + {name: "usd-coin", address: ADDRESSES.celo.USDC, decimals: 6}, {name: "poofcash", address: "0x00400FcbF0816bebB94654259de7273f4A05c762", decimals: 18}, {name: "celo-euro", address: "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73", decimals: 18}, {name: "celo", address: NATIVE_ADDRESS, decimals: 18}, @@ -33,10 +34,10 @@ const data = { }, tokens: [ {name: "avalanche-2", address: NATIVE_ADDRESS, decimals: 18}, - {name: "usd-coin", address: "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", decimals: 6}, - {name: "tether", address: "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", decimals: 6}, + {name: "usd-coin", address: ADDRESSES.avax.USDC_e, decimals: 6}, + {name: "tether", address: ADDRESSES.avax.USDT_e, decimals: 6}, {name: "bitcoin", address: "0x50b7545627a5162F82A992c33b87aDc75187B218", decimals: 8}, - {name: "dai", address: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", decimals: 18} + {name: "dai", address: ADDRESSES.avax.DAI, decimals: 18} ] }, fantom: { @@ -49,8 +50,8 @@ const data = { tokens: [ {name: "bitcoin", address: "0x321162Cd933E2Be498Cd2267a90534A804051b11", decimals: 8}, {name: "ethereum", address: "0x74b23882a30290451A17c44f4F05243b6b58C76d", decimals: 18}, - {name: "usd-coin", address: "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", decimals: 6}, - {name: "dai", address: "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", decimals: 18}, + {name: "usd-coin", address: ADDRESSES.fantom.USDC, decimals: 6}, + {name: "dai", address: ADDRESSES.fantom.DAI, decimals: 18}, {name: "chainlink", address: "0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8", decimals: 18}, {name: "fantom", address: NATIVE_ADDRESS, decimals: 18}, ] @@ -78,12 +79,12 @@ const data = { }, tokens: [ {name: "mimatic", address: "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1", decimals: 18}, - {name: "usd-coin", address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", decimals: 6}, - {name: "tether", address: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", decimals: 6}, + {name: "usd-coin", address: ADDRESSES.polygon.USDC, decimals: 6}, + {name: "tether", address: ADDRESSES.polygon.USDT, decimals: 6}, {name: "matic-network", address: NATIVE_ADDRESS, decimals: 18}, - {name: "ethereum", address: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", decimals: 18}, - {name: "bitcoin", address: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", decimals: 8}, - {name: "dai", address: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", decimals: 18}, + {name: "ethereum", address: ADDRESSES.polygon.WETH_1, decimals: 18}, + {name: "bitcoin", address: ADDRESSES.polygon.WBTC, decimals: 8}, + {name: "dai", address: ADDRESSES.polygon.DAI, decimals: 18}, {name: "apyswap", address: "0x14743E1c6f812154F7ecc980D890F0F5234103e7", decimals: 18}, ] }, @@ -97,12 +98,12 @@ const data = { tokens: [ {name: "impossible-finance", address: "0xB0e1fc65C1a741b4662B813eB787d369b8614Af1", decimals: 18}, {name: "krown", address: "0x1446f3CEdf4d86a9399E49f7937766E6De2A3AAB", decimals: 18}, - {name: "binance-usd", address: "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", decimals: 18}, - {name: "investin", address: "0x6A46d878401F46B4C7f665f065E0667580e031ec", decimals: 18}, - {name: "tether", address: "0x55d398326f99059fF775485246999027B3197955", decimals: 18}, - {name: "usd-coin", address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18}, - {name: "bitcoin", address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", decimals: 18}, - {name: "ethereum", address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", decimals: 18}, + {name: "binance-usd", address: ADDRESSES.bsc.BUSD, decimals: 18}, + {name: "investin", address: ADDRESSES.bsc.IVN, decimals: 18}, + {name: "tether", address: ADDRESSES.bsc.USDT, decimals: 18}, + {name: "usd-coin", address: ADDRESSES.bsc.USDC, decimals: 18}, + {name: "bitcoin", address: ADDRESSES.bsc.BTCB, decimals: 18}, + {name: "ethereum", address: ADDRESSES.bsc.ETH, decimals: 18}, {name: "binancecoin", address: NATIVE_ADDRESS, decimals: 18}, {name: "uniswap", address: "0xBf5140A22578168FD562DCcF235E5D43A02ce9B1", decimals: 18}, {name: "chainlink", address: "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", decimals: 18}, @@ -124,16 +125,16 @@ const data = { {name: "ariadne", address: "0xb1c9bc94aCd2fAE6aABf4ffae4429B93512a81D2", decimals: 18}, {name: "cyberfi", address: "0x63b4f3e3fa4e438698CE330e365E831F7cCD1eF4", decimals: 18}, {name: "ethereum", address: NATIVE_ADDRESS, decimals: 18}, - {name: "usd-coin", address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", decimals: 6}, - {name: "tether", address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", decimals: 6}, + {name: "usd-coin", address: ADDRESSES.ethereum.USDC, decimals: 6}, + {name: "tether", address: ADDRESSES.ethereum.USDT, decimals: 6}, {name: "ftx-token", address: "0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9", decimals: 18}, - {name: "dai", address: "0x6B175474E89094C44Da98b954EedeAC495271d0F", decimals: 18}, - {name: "bitcoin", address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", decimals: 8}, + {name: "dai", address: ADDRESSES.ethereum.DAI, decimals: 18}, + {name: "bitcoin", address: ADDRESSES.ethereum.WBTC, decimals: 8}, {name: "magic-internet-money", address: "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", decimals: 18}, {name: "fei-usd", address: "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", decimals: 18}, {name: "thorstarter", address: "0x69fa0feE221AD11012BAb0FdB45d444D3D2Ce71c", decimals: 18}, - {name: "uniswap", address: "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", decimals: 18}, - {name: "chainlink", address: "0x514910771AF9Ca656af840dff83E8264EcF986CA", decimals: 18}, + {name: "uniswap", address: ADDRESSES.ethereum.UNI, decimals: 18}, + {name: "chainlink", address: ADDRESSES.ethereum.LINK, decimals: 18}, {name: "smartpad", address: "0x5067006f830224960fb419d7f25a3a53e9919bb0", decimals: 18}, ] }, diff --git a/projects/allchainbridge/index.js b/projects/allchainbridge/index.js index aa9053200a..36812cde96 100644 --- a/projects/allchainbridge/index.js +++ b/projects/allchainbridge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') const getBridgeContract = (chain) => { @@ -29,30 +30,30 @@ const getBridgeContract = (chain) => { const tokensConf = { ethereum: { ETH: nullAddress, - BUSD: "0x4Fabb145d64652a948d72533023f6E7A623C7C53", - USDC: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - USDT: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", + BUSD: ADDRESSES.ethereum.BUSD, + USDC: ADDRESSES.ethereum.USDC, + USDT: ADDRESSES.ethereum.USDT, + DAI: ADDRESSES.ethereum.DAI, HBTC: "0x0316EB71485b0Ab14103307bf65a021042c6d380", - WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + WETH: ADDRESSES.ethereum.WETH, SWFTC: "0x0bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e", HT: "0x6f259637dcd74c767781e37bc6133cd6a68aa161", }, bsc: { BNB: nullAddress, - BUSD: "0xe9e7cea3dedca5984780bafc599bd69add087d56", - USDC: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - USDT: "0x55d398326f99059fF775485246999027B3197955", + BUSD: ADDRESSES.bsc.BUSD, + USDC: ADDRESSES.bsc.USDC, + USDT: ADDRESSES.bsc.USDT, DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - WBNB: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - BTCB: "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", - ETH: "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + WBNB: ADDRESSES.bsc.WBNB, + BTCB: ADDRESSES.bsc.BTCB, + ETH: ADDRESSES.bsc.ETH, SWFTC: "0xe64e30276c2f826febd3784958d6da7b55dfbad3", DOGE: "0xba2ae424d960c26247dd6c32edc70b295c744c43", }, heco: { HT: nullAddress, - USDC: "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", + USDC: ADDRESSES.heco.USDC_HECO, USDT: "0xa71edc38d189767582c38a3145b5873052c3e47a", HUSD: "0x0298c2b32eae4da002a15f36fdf7615bea3da047", ETH: "0x64ff637fb478863b7468bc97d30a5bf3a428a1fd", @@ -60,22 +61,22 @@ const tokensConf = { }, okexchain: { OKT: nullAddress, - USDC: "0xc946daf81b08146b1c7a8da2a851ddf2b3eaaf85", - USDT: "0x382bb369d343125bfb2117af9c149795c6c65c50", - ETH: "0xef71ca2ee68f45b9ad6f72fbdb33d707b872315c", - OKB: "0xdf54b6c6195ea4d948d03bfd818d365cf175cfc2", + USDC: ADDRESSES.okexchain.USDC, + USDT: ADDRESSES.okexchain.USDT, + ETH: ADDRESSES.okexchain.ETHK, + OKB: ADDRESSES.okexchain.OKB, }, polygon: { MATIC: nullAddress, - USDC: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - USDT: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + USDC: ADDRESSES.polygon.USDC, + USDT: ADDRESSES.polygon.USDT, WMATIC: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", }, fantom: { FTM: nullAddress, - USDC: "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", - USDT: "0x049d68029688eabf473097a2fc38ef61633a3c7a", - DAI: "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", + USDC: ADDRESSES.fantom.USDC, + USDT: ADDRESSES.fantom.fUSDT, + DAI: ADDRESSES.fantom.DAI, WETH: "0x74b23882a30290451A17c44f4F05243b6b58C76d", }, kava: { diff --git a/projects/alpacafinance-gmx/index.js b/projects/alpacafinance-gmx/index.js index 2156f16c16..94cbf1351f 100644 --- a/projects/alpacafinance-gmx/index.js +++ b/projects/alpacafinance-gmx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { gmxExports } = require('../helper/gmx') const { sumTokensExport } = require('../helper/unwrapLPs') @@ -6,11 +7,11 @@ module.exports = { tvl: sumTokensExport({ owner: '0x18A15bF2Aa1E514dc660Cc4B08d05f9f6f0FdC4e', tokens: [ - '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', - '0x55d398326f99059ff775485246999027b3197955', - '0x2170ed0880ac9a755fd29b2688956bd959f933f8', - '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.ETH, + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.WBNB, ], }) } diff --git a/projects/alpha-homora/index.js b/projects/alpha-homora/index.js index 90295747e5..d512fa9997 100644 --- a/projects/alpha-homora/index.js +++ b/projects/alpha-homora/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require("bignumber.js"); const {tvlV1Eth, tvlV1Bsc} = require('./v1.js') const {tvlV2, tvlV2Onchain} = require('./v2.js') async function ethTvl(timestamp, block) { - const ethAddress = "0x0000000000000000000000000000000000000000"; + const ethAddress = ADDRESSES.null; const balances = {}; const tvls = await Promise.all([ diff --git a/projects/alpha-homora/v1.js b/projects/alpha-homora/v1.js index 3c89e8e9ab..0715bfe4d1 100644 --- a/projects/alpha-homora/v1.js +++ b/projects/alpha-homora/v1.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { getConfig } = require('../helper/cache') @@ -18,7 +19,7 @@ async function tvlV1Eth(timestamp, block) { return tvlV1("ethereum", block, "https://homora.alphafinance.io/static/contracts.json", "WETHAddress", "totalETH") } -const wBNB = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c' +const wBNB = ADDRESSES.bsc.WBNB async function tvlV1Bsc(timestamp, block, chainBlocks) { const tvlBNB = await tvlV1("bsc", chainBlocks.bsc, "https://homora-bsc.alphafinance.io/static/contracts.json", "WBNBAddress", "totalBNB") return { diff --git a/projects/alpha-homora/v2.js b/projects/alpha-homora/v2.js index b3a285f840..7b42a6d8cf 100644 --- a/projects/alpha-homora/v2.js +++ b/projects/alpha-homora/v2.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const BigNumber = require("bignumber.js"); @@ -121,7 +122,7 @@ async function tvlV2Onchain(block, chain) { const balances = {} const transform = addr => { if (addr.toLowerCase() === '0x260bbf5698121eb85e7a74f2e45e16ce762ebe11') - return 'avax:0xc7198437980c041c805a1edcba50c1ce5db95118' // Axelar wrapped UST -> USDT + return 'avax:' + ADDRESSES.avax.USDT_e // Axelar wrapped UST -> USDT if (addr.toLowerCase() === '0x2147efff675e4a4ee1c2f918d181cdbd7a8e208f') return '0xa1faa113cbe53436df28ff0aee54275c13b40975' // Wrapped Alpha Finance -> ALPHA (erc20) return `${chain}:${addr}` diff --git a/projects/ampere/index.js b/projects/ampere/index.js index c66b7646cf..cda18f15d6 100644 --- a/projects/ampere/index.js +++ b/projects/ampere/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { tombTvl } = require("../helper/tomb"); const FUSE_ON_ETH = "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d"; -const FUSE_ON_FUSE = "0x0be9e53fd7edac9f859882afdda116645287c629"; +const FUSE_ON_FUSE = ADDRESSES.fuse.WFUSE; const AMP = "0x2b09179D26FdDB27a24ee25328890791c7A984c2".toLowerCase(); const CURRENT = "0x3B1292FEf70C3F9Fb933DD2e2F4B734DcB35648d".toLowerCase(); diff --git a/projects/amyfinance/index.js b/projects/amyfinance/index.js index 5c4db3a81b..421728d03d 100644 --- a/projects/amyfinance/index.js +++ b/projects/amyfinance/index.js @@ -1,15 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs'); const { transformArbitrumAddress } = require('../helper/portedTokens'); const tokens = [ - ["0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", false], //USDC - ["0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", false], //USDT - ["0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", false], //DAI - ["0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", false], //WBTC - ["0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", false], //WETH + [ADDRESSES.arbitrum.USDC, false], //USDC + [ADDRESSES.arbitrum.USDT, false], //USDT + [ADDRESSES.optimism.DAI, false], //DAI + [ADDRESSES.arbitrum.WBTC, false], //WBTC + [ADDRESSES.arbitrum.WETH, false], //WETH ["0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0", false], //UNI - ["0xf97f4df75117a78c1A5a0DBb814Af92458539FB4", false], //LINK - ["0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A", false], //MIM + [ADDRESSES.arbitrum.LINK, false], //LINK + [ADDRESSES.arbitrum.MIM, false], //MIM ["0xd4d42F0b6DEF4CE0383636770eF773390d85c61A", false], //SUSHI ]; const aibContracts = [ diff --git a/projects/angle/index.js b/projects/angle/index.js index 9dc6442b12..d11e04c8ee 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { getConfig } = require("../helper/cache"); @@ -41,11 +42,11 @@ async function tvl(chain, block) { if (chain === "ethereum") { // Registry will be released in next sdk of Angle + graphql endpoint to come const collaterals = { - dai: "0x6b175474e89094c44da98b954eedeac495271d0f", - usdc: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + dai: ADDRESSES.ethereum.DAI, + usdc: ADDRESSES.ethereum.USDC, frax: "0x853d955acef822db058eb8505911ed77f175b99e", fei: "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", - weth: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + weth: ADDRESSES.ethereum.WETH, }; const agEUR = { diff --git a/projects/annex.js b/projects/annex.js index b582d16f47..140683c71b 100644 --- a/projects/annex.js +++ b/projects/annex.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { compoundExports } = require('./helper/compound') -const wBNB = "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c"; +const wBNB = ADDRESSES.bsc.WBNB; const cBNB = "0xC5a83aD9f3586e143D2C718E8999206887eF9dDc"; const wCRO = "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23"; const cCRO = "0x61FCA31c51aCc4CC683291Be936E6799AeAAFe41"; -const wKAVA = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b"; +const wKAVA = ADDRESSES.kava.WKAVA; const cKAVA = "0x5642Aa2fC7028a203C689Bf21c1a92861D8C449B"; module.exports = { diff --git a/projects/ante/index.js b/projects/ante/index.js index d87d385f0c..b043dd292b 100644 --- a/projects/ante/index.js +++ b/projects/ante/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); const { createIncrementArray } = require('../helper/utils'); @@ -15,7 +16,7 @@ const CONFIG = { }, ], startBlock: 13234803, - gasToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + gasToken: ADDRESSES.ethereum.WETH, }, avax: { factories: [ @@ -25,7 +26,7 @@ const CONFIG = { }, ], startBlock: 16037331, - gasToken: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + gasToken: ADDRESSES.avax.WAVAX, }, polygon: { factories: [ @@ -45,7 +46,7 @@ const CONFIG = { }, ], startBlock: 20928838, - gasToken: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + gasToken: ADDRESSES.bsc.WBNB, }, fantom: { factories: [ @@ -55,7 +56,7 @@ const CONFIG = { }, ], startBlock: 46604874, - gasToken: '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + gasToken: ADDRESSES.fantom.WFTM, }, optimism: { factories: [ @@ -69,7 +70,7 @@ const CONFIG = { }, ], startBlock: 39240199, - gasToken: '0x4200000000000000000000000000000000000006', + gasToken: ADDRESSES.tombchain.FTM, }, arbitrum: { factories: [ @@ -79,7 +80,7 @@ const CONFIG = { }, ], startBlock: 33495774, - gasToken: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + gasToken: ADDRESSES.arbitrum.WETH, }, aurora: { factories: [ diff --git a/projects/antimatter/index.js b/projects/antimatter/index.js index b635a79007..c1ec7e1ca0 100644 --- a/projects/antimatter/index.js +++ b/projects/antimatter/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abi.json') const factory = "0x60d0769c4940cA58648C0AA34ecdf390a10F272e" -const usdt = "0xdac17f958d2ee523a2206206994597c13d831ec7" +const usdt = ADDRESSES.ethereum.USDT async function tvl(timestamp, ethBlock) { const balances = {}; const contractsLength = await sdk.api.abi.call({ diff --git a/projects/antimatterDAO/index.js b/projects/antimatterDAO/index.js index 97b6bade80..62468dc7f7 100644 --- a/projects/antimatterDAO/index.js +++ b/projects/antimatterDAO/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking') @@ -5,20 +6,20 @@ const { staking } = require('../helper/staking') const antimatterStakingContract = "0xCB8429f22541E8F5cd8ea6c20BFFdcE7cDA65227"; const dualInvestContract = "0x7E45149820Fa33B66DCD3fd57158A0E755A67a16"; const dualInvestManagerAddress = "0x32275702f5A47Dcd89705c1ea4d47E99517b0e1a"; -const bscBTCContract = "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c"; -const bscUSDTContract = "0x55d398326f99059fF775485246999027B3197955"; -const bscETHContract = "0x2170Ed0880ac9A755fd29B2688956BD959F933F8"; -const kavaUSDTContract = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; -const kavaBTCContract = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; +const bscBTCContract = ADDRESSES.bsc.BTCB; +const bscUSDTContract = ADDRESSES.bsc.USDT; +const bscETHContract = ADDRESSES.bsc.ETH; +const kavaUSDTContract = ADDRESSES.moonriver.USDT; +const kavaBTCContract = ADDRESSES.moonriver.USDT; const kavaDualinvertContract = "0x626B5c394542960faa9495e64E812d17D5B605F9"; const factory = "0x90183C741CC13195884B6E332Aa0ac1F7c1E67Fa"; const usdTokens = { - bsc: '0xe9e7cea3dedca5984780bafc599bd69add087d56', - ethereum: '0xdac17f958d2ee523a2206206994597c13d831ec7', - arbitrum: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', - avax: '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', + bsc: ADDRESSES.bsc.BUSD, + ethereum: ADDRESSES.ethereum.USDT, + arbitrum: ADDRESSES.arbitrum.USDT, + avax: ADDRESSES.avax.USDC_e, } const dualInvest = { diff --git a/projects/apex/index.js b/projects/apex/index.js index c4985994bb..b07ea7615c 100644 --- a/projects/apex/index.js +++ b/projects/apex/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const tokens = [ - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + ADDRESSES.ethereum.USDC, ]; const owners = [ diff --git a/projects/apollox/index.js b/projects/apollox/index.js index 9caa8a31d1..1090f5c169 100644 --- a/projects/apollox/index.js +++ b/projects/apollox/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { pool2s } = require("../helper/pool2"); const { stakings } = require("../helper/staking"); const { sumTokens, sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); @@ -12,12 +13,12 @@ const daoContract = "0x7f878994507F5B0588cF0EBEE07128d9A742ad9d"; const ALPContract = "0x1b6F2d3844C6ae7D56ceb3C3643b9060ba28FEb0"; const TOKEN_APX = "0x78f5d389f5cdccfc41594abab4b0ed02f31398b3"; -const TOKEN_BSC_USD = "0x55d398326f99059fF775485246999027B3197955"; -const TOKEN_BUSD = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; +const TOKEN_BSC_USD = ADDRESSES.bsc.USDT; +const TOKEN_BUSD = ADDRESSES.bsc.BUSD; const TOKEN_CAKE = "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82"; const TOKEN_BABY = "0x53e562b9b7e5e94b81f10e96ee70ad06df3d2657"; const TOKEN_LEOS = "0x2c8368f8f474ed9af49b87eac77061beb986c2f1"; -const TOKEN_USDC = "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d"; +const TOKEN_USDC = ADDRESSES.bsc.USDC; const TOKEN_VUSDT = "0xfD5840Cd36d94D7229439859C0112a4185BC0255"; const TOKEN_BANANA = "0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95"; const TOKEN_MDX = "0x9c65ab58d8d978db963e63f2bfb7121627e3a739"; @@ -56,17 +57,17 @@ module.exports = { ethereum: { tvl: sumTokensExport({ owner: '0xb40EEd68d7d6B3b6d6f4E93DE6239B7C53EFc786', tokens: [ nullAddress, - '0xdac17f958d2ee523a2206206994597c13d831ec7', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - '0x4fabb145d64652a948d72533023f6e7a623c7c53', + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.BUSD, '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', ]}) }, arbitrum: { tvl: sumTokensExport({ owner: '0xbad4ccc91ef0dfffbcab1402c519601fbaf244ef', tokens: [ nullAddress, - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDT, ]}) }, }; diff --git a/projects/apricot.js b/projects/apricot.js index c999ac7641..af44d6dcff 100644 --- a/projects/apricot.js +++ b/projects/apricot.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens2, sumOrcaLPs } = require('./helper/solana') async function tvl() { @@ -28,13 +29,13 @@ async function tvl() { } const owner = '7Ne6h2w3LpTNTa7CNYcUs7UkjeJT3oW7jcrXWfVScTXW' const tokens = [ - 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', + ADDRESSES.solana.USDC, '9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E', '2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk', 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', - 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', + ADDRESSES.solana.USDT, '4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R', - 'So11111111111111111111111111111111111111112', + ADDRESSES.solana.SOL, '9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i', 'orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE', ] diff --git a/projects/apwine/index.js b/projects/apwine/index.js index 425343c45a..5b46bc7518 100644 --- a/projects/apwine/index.js +++ b/projects/apwine/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const abi = require("./abi.json") const {sumTokens} = require("../helper/unwrapLPs.js") @@ -12,8 +13,8 @@ const AMMregistry = '0x6646A35e74e35585B0B02e5190445A324E5D4D01' const transformMapping_ethereum = { '0xaC14864ce5A98aF3248Ffbf549441b04421247D3': '0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f', // xSDT -> SDT '0x6b1D394Ca67fDB9C90BBd26FE692DdA4F4f53ECD': '0xcafe001067cdef266afb7eb5a286dcfd277f3de5', // sPSP_PP4 -> PSP - '0xA991356d261fbaF194463aF6DF8f0464F8f1c742': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // tfUSDC -> USDC - '0x24E79e946dEa5482212c38aaB2D0782F04cdB0E0': '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', // palStkAave -> AAVE + '0xA991356d261fbaF194463aF6DF8f0464F8f1c742': ADDRESSES.ethereum.USDC, // tfUSDC -> USDC + '0x24E79e946dEa5482212c38aaB2D0782F04cdB0E0': ADDRESSES.ethereum.AAVE, // palStkAave -> AAVE } const transformMapping_polygon = { } @@ -85,7 +86,7 @@ const tvl_from_registry = (chain) => { })), block, chain, - })).output.filter(v=>v.output !== "0x0000000000000000000000000000000000000000") + })).output.filter(v=>v.output !== ADDRESSES.null) const {output: underlyingOfIBTAddresses} = await sdk.api.abi.multiCall({ abi: abi['ammPool_getUnderlyingOfIBTAddress'], calls: ammPools.map((vault) => ({ diff --git a/projects/aquarius/index.js b/projects/aquarius/index.js index 0fcc342ec3..9b6d3c1935 100644 --- a/projects/aquarius/index.js +++ b/projects/aquarius/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {getLiquityTvl} = require('../helper/liquity') -const FTM_ADDRESS = '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83'; +const FTM_ADDRESS = ADDRESSES.fantom.WFTM; const TROVE_MANAGER_ADDRESS = "0xC87D230B3239d1A90463463d8adDFD70709D391b"; module.exports = { diff --git a/projects/arbicheems/index.js b/projects/arbicheems/index.js index bded1bd93a..b1e6962476 100644 --- a/projects/arbicheems/index.js +++ b/projects/arbicheems/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakingUnknownPricedLP } = require("../helper/staking"); const { pool2Exports } = require("../helper/pool2"); @@ -5,7 +6,7 @@ const { pool2Exports } = require("../helper/pool2"); const cheems = "0x75a2f30929C539E7d4eE033c9331b89F879c0cf7"; const stakingContract = "0xaaCcB989FE1084c6935f09aE4BBD49AfF58Bdb94"; -const mim = "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a"; +const mim = ADDRESSES.arbitrum.MIM; const mimPool = "0x79F12596B78F9E982bDaB6e2d83D4bc155672372"; const ethPool = "0xd495Beb0011e3DFEC0C93376f5216C1C3dD01C23"; @@ -24,7 +25,7 @@ async function tvl(timestamp, block, chainBlocks) { ).output; sdk.util.sumSingleBalance( balances, - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + ADDRESSES.ethereum.WETH, ethBal ); diff --git a/projects/arbinyan/index.js b/projects/arbinyan/index.js index 3ae47dfde2..f977cef403 100644 --- a/projects/arbinyan/index.js +++ b/projects/arbinyan/index.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const BigNumber = require("bignumber.js"); const stakingETHContract = "0x9F7968de728aC7A6769141F63dCA03FD8b03A76F"; -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH = ADDRESSES.ethereum.WETH; const stakingNYANContract = "0x32e5594F14de658b0d577D6560fA0d9C6F1aa724"; const NYAN = "0xed3fb761414da74b74f33e5c5a1f78104b188dfc"; const stakingPool2Contract = "0x62FF5Be795262999fc1EbaC29277575031d2dA2C"; const NYAN_WETH_SLP = "0x70Df9Dd83be2a9F9Fcc58Dd7C00d032d007b7859"; -const WETH_arb = "0x82af49447d8a07e3bd95bd0d56f35241523fbab1"; +const WETH_arb = ADDRESSES.arbitrum.WETH; async function pool2(time, ethBlock, chainBlocks) { const balances = {}; diff --git a/projects/archly-finance/index.js b/projects/archly-finance/index.js index 070bfe879c..f3b1aab567 100644 --- a/projects/archly-finance/index.js +++ b/projects/archly-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') const ARCHLY_FACTORY_OTHER = "0xBa06043a777652BAF540CcC785EDaFd94eE05b37" @@ -11,7 +12,7 @@ module.exports = { owner: '0x5680b3059b860d07A33B7A43d03D2E4dEdb226BB', tokens: ['0xa84df7aFbcbCC1106834a5feD9453bd1219B1fb5'], lps: ['0x34480A4C917caDbE41cb805f3e3baDb93bD9068C'], - coreAssets: ['0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E'], + coreAssets: [ADDRESSES.telos.WTLOS], restrictTokenRatio: 100, }) }, @@ -21,7 +22,7 @@ module.exports = { owner: '0x4c01dF6B9be381BA2a687D0ED5c40039dEEaf0a9', tokens: ['0x9435Ffb33Ce0180F55E08490C606eC3BD07da929'], lps: ['0x6083E6F4c0f9826e60D0180A00203F7A70C1aC25'], - coreAssets: ['0x82af49447d8a07e3bd95bd0d56f35241523fbab1'], + coreAssets: [ADDRESSES.arbitrum.WETH], restrictTokenRatio: 100, }) }, @@ -31,7 +32,7 @@ module.exports = { owner: ARCHLY_VE_TOKEN_OTHER, tokens: [ARCHLY_ARC_TOKEN_OTHER], lps: ['0xC8Cb0012BBBEFE6E04d9A58fFb5b9A623f4EC40c'], - coreAssets: ['0x722e8bdd2ce80a4422e880164f2079488e115365'], + coreAssets: [ADDRESSES.arbitrum_nova.WETH], restrictTokenRatio: 100, }) }, @@ -41,7 +42,7 @@ module.exports = { owner: ARCHLY_VE_TOKEN_OTHER, tokens: [ARCHLY_ARC_TOKEN_OTHER], lps: ['0x3a1c6C7Ced1c14e07385582c5bB82eFBA4df4f19'], - coreAssets: ['0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c'], + coreAssets: [ADDRESSES.bsc.WBNB], restrictTokenRatio: 100, }) }, @@ -51,7 +52,7 @@ module.exports = { owner: ARCHLY_VE_TOKEN_OTHER, tokens: [ARCHLY_ARC_TOKEN_OTHER], lps: ['0xe962fEF0e7cE6D666359Dab6127f6f8d814aC1a9'], - coreAssets: ['0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83'], + coreAssets: [ADDRESSES.fantom.WFTM], restrictTokenRatio: 100, }) }, @@ -61,7 +62,7 @@ module.exports = { owner: ARCHLY_VE_TOKEN_OTHER, tokens: [ARCHLY_ARC_TOKEN_OTHER], lps: ['0x008C71505A2e110d1FFAA402B01aeb202fb107dB'], - coreAssets: ['0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b'], + coreAssets: [ADDRESSES.kava.WKAVA], restrictTokenRatio: 100, }) }, @@ -71,7 +72,7 @@ module.exports = { owner: ARCHLY_VE_TOKEN_OTHER, tokens: [ARCHLY_ARC_TOKEN_OTHER], lps: ['0xc492BCa6777818256C2e2e5FC8e180BC8697DfF5'], - coreAssets: ['0x4200000000000000000000000000000000000006'], + coreAssets: [ADDRESSES.tombchain.FTM], restrictTokenRatio: 100, }) }, diff --git a/projects/arctic/index.js b/projects/arctic/index.js index 37df6a205f..7fa52d14ea 100644 --- a/projects/arctic/index.js +++ b/projects/arctic/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') let abi = require('./abi') const { sumTokens2, } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null const poolHelper = '0xE78e7447223aaED59301b44513D1d3A892ECF212' module.exports = { diff --git a/projects/argano/index.js b/projects/argano/index.js index d1ed996050..05a6acc78f 100644 --- a/projects/argano/index.js +++ b/projects/argano/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { sumTokensExport } = require('../helper/unwrapLPs') const { getUniTVL } = require('../helper/unknownTokens') @@ -5,9 +6,9 @@ const { getUniTVL } = require('../helper/unknownTokens') const contracts = { factory: '0xdAc31E70c2C4Fea0629e85e7B67222127A8672d8', usdtPool: '0x250EFcd45D9f83036f2D403223c7cCb2E1e9D00b', - usdt: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', + usdt: ADDRESSES.polygon.USDT, wbtcPool: '0x610094adF401626D6B62df62bF6E67A7A6E22043', - wbtc: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6' + wbtc: ADDRESSES.polygon.WBTC }; module.exports = { diff --git a/projects/armorfinance/index.js b/projects/armorfinance/index.js index f559dc1577..d30679b7ed 100644 --- a/projects/armorfinance/index.js +++ b/projects/armorfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); @@ -6,9 +7,9 @@ const { staking } = require("../helper/staking"); const POOL_BUYCOVER_ACTION = "0xcafea35cE5a2fc4CED4464DA4349f81A122fd12b"; const NXM_VAULT = "0x1337DEF1FC06783D4b03CB8C1Bf3EBf7D0593FC4"; -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f"; +const DAI = ADDRESSES.ethereum.DAI; const NXM = "0xd7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b"; -const stETH = "0xae7ab96520de3a18e5e111b5eaab095312d7fe84"; +const stETH = ADDRESSES.ethereum.STETH; const ethTvl = async (timestamp, block) => { let balances = {}; diff --git a/projects/artemis/index.js b/projects/artemis/index.js index 54d33d28a0..1d598524d1 100644 --- a/projects/artemis/index.js +++ b/projects/artemis/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { masterchefExports, } = require("../helper/unknownTokens") -const token = "0xd74433b187cf0ba998ad9be3486b929c76815215"; +const token = ADDRESSES.harmony.MIS; const masterchef = "0x59c777cd749b307be910f15c54a3116ff88f9706"; module.exports = masterchefExports({ diff --git a/projects/arthswap/index.js b/projects/arthswap/index.js index 4b4d3fd40c..c490dbbd60 100644 --- a/projects/arthswap/index.js +++ b/projects/arthswap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require("../helper/unknownTokens"); const { stakingPricedLP } = require("../helper/staking"); const FACTORIES = "0xA9473608514457b4bF083f9045fA63ae5810A03E"; const TOKENS = { - ARSW: "0xDe2578Edec4669BA7F41c5d5D2386300bcEA4678", + ARSW: ADDRESSES.astar.ARSW, }; const STAKING_CONTRACTS = { diff --git a/projects/asgard-dao/index.js b/projects/asgard-dao/index.js index f4269fa8c9..797b36f78b 100644 --- a/projects/asgard-dao/index.js +++ b/projects/asgard-dao/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {ohmTvl} = require("../helper/ohm"); const treasury = "0xFb445ce1CFE11B86505dD293f1bE438fFaa4fF8c"; const treasuryTokens = [ ["0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", false], // DAI - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], // WBNB + [ADDRESSES.bsc.BUSD, false], // BUSD + [ADDRESSES.bsc.WBNB, false], // WBNB ["0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", false], // CAKE - ["0x55d398326f99059ff775485246999027b3197955", false], // USDT + [ADDRESSES.bsc.USDT, false], // USDT ["0xE119c951b68555d50eB6Aa54b5Cf0b854715CB2c", true], // ASGARD-WBNB CAKE LP ["0x11ceddd7a64ec79212d8ae9c8b46d23b8b750db0", true], // ASGARD-BUSD CAKE LP ["0xE5E926c8Ca7A44F7FFD900F5a88eA33E2B07162D", true] // ASGARD-DAI CAKE LP diff --git a/projects/asgardfinance/index.js b/projects/asgardfinance/index.js index af74f4378b..d33dbb92f1 100644 --- a/projects/asgardfinance/index.js +++ b/projects/asgardfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -6,7 +7,7 @@ const ASG = "0x0DC5189Ec8CDe5732a01F0F592e927B304370551"; const AsgardTreasury = "0x9D5818af130705F95444d78A55B4F3d85cBfCC13"; -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f"; +const DAI = ADDRESSES.ethereum.DAI; const ASG_DAI_SLP = "0x024cc95611d478dd367240e72c82662d9e390a6a"; const FRAX = "0x853d955acef822db058eb8505911ed77f175b99e"; const ASG_FRAX_SLP = "0x5696cd9054ce11625141f5ee2c65fc4d57c2a5ca"; diff --git a/projects/astriddao/index.js b/projects/astriddao/index.js index 7c1b8c9dfe..6e1bb69e27 100644 --- a/projects/astriddao/index.js +++ b/projects/astriddao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/unwrapLPs') const { getFixBalances } = require('../helper/portedTokens') @@ -12,54 +13,54 @@ const COLLATERALS = { } }, BUSD: { - tokenAddress: "0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E", - bridgeTokenMapping: "0x4fabb145d64652a948d72533023f6e7a623c7c53", + tokenAddress: ADDRESSES.oasis.ceUSDT, + bridgeTokenMapping: ADDRESSES.ethereum.BUSD, contracts: { activePool: "0x892af684Afd5fCee1023f7811C35fd695Bf0cd6f", defaultPool: "0xe487b9066A8fFde840b29892f1052CBEdccc3073", } }, DAI: { - tokenAddress: "0x6De33698e9e9b787e09d3Bd7771ef63557E148bb", - bridgeTokenMapping: "0x6b175474e89094c44da98b954eedeac495271d0f", + tokenAddress: ADDRESSES.astar.DAI, + bridgeTokenMapping: ADDRESSES.ethereum.DAI, contracts: { activePool: "0xCE90059FbCEc696634981945600d642A79e262aD", defaultPool: "0x3aD8FE12674B4c9481d5C7585ed5bDC4E35025b9", } }, DOT: { - tokenAddress: "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF", + tokenAddress: ADDRESSES.astar.DOT, contracts: { activePool: "0x8cd0b101838b082133e25eEb76C916Ae2AC56f36", defaultPool: "0x4e8B4867899A69bB05EFa6A16e68363C2BBeB02f", } }, USDC: { - tokenAddress: "0x6a2d262d56735dba19dd70682b39f6be9a931d98", - bridgeTokenMapping: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + tokenAddress: ADDRESSES.moonbeam.USDC, + bridgeTokenMapping: ADDRESSES.ethereum.USDC, contracts: { activePool: "0x5070d543654D866964C44E610a3b7f85fcAf2859", defaultPool: "0xEb80f1a9ede36412cF26E1e35ae74dbA30cCfF02", } }, WETH: { - tokenAddress: "0x81ECac0D6Be0550A00FF064a4f9dd2400585FE9c", + tokenAddress: ADDRESSES.moonbeam.USDT, contracts: { activePool: "0x5Ec419F08602caE5e4C591dE65bD640d66673035", defaultPool: "0x2eE0F3daa042af6Fdd56f0194d5aBfdA0A723D95", } }, WBTC: { - tokenAddress: "0xad543f18cFf85c77E140E3E5E3c3392f6Ba9d5CA", - bridgeTokenMapping: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + tokenAddress: ADDRESSES.astar.WBTC, + bridgeTokenMapping: ADDRESSES.ethereum.WBTC, contracts: { activePool: "0x1685E4f68FD9A50246ce92F0eb07a977591F5Ba2", defaultPool: "0xD69eB04d9ff456A31Da6D2a20538512C433ac1Ca", } }, USDT: { - tokenAddress: "0x3795c36e7d12a8c252a20c5a7b455f7c57b60283", - bridgeTokenMapping: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + tokenAddress: ADDRESSES.astar.USDT, + bridgeTokenMapping: ADDRESSES.ethereum.USDT, contracts: { activePool: "0x74dFF63491B39E5fFE0Be44Ee3B23F674C27DB7c", defaultPool: "0x8EE2f5403246b86d7493ddCeED19f9347bc4DF1D", @@ -67,7 +68,7 @@ const COLLATERALS = { }, } -const BAI_TOKEN_ADDRESS = "0x733ebcC6DF85f8266349DEFD0980f8Ced9B45f35" +const BAI_TOKEN_ADDRESS = ADDRESSES.astar.BAI const STAKES = { WASTAR: { contracts: { @@ -111,7 +112,7 @@ const STAKES = { }, } -const ATID_TOKEN_ADDRESS = "0x5271D85CE4241b310C0B34b7C2f1f036686A6d7C"; +const ATID_TOKEN_ADDRESS = ADDRESSES.astar.ATID; const ATID_STAKES = { WASTAR: { contracts: { diff --git a/projects/asymetrix/index.js b/projects/asymetrix/index.js index cfe62ab370..fb3e87041b 100644 --- a/projects/asymetrix/index.js +++ b/projects/asymetrix/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const STAKE_PRIZE_POOL_CONTRACT = "0x82D24dD5041A3Eb942ccA68B319F1fDa9EB0c604"; -const ST_ETH_TOKEN_CONTRACT = "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"; +const ST_ETH_TOKEN_CONTRACT = ADDRESSES.ethereum.STETH; module.exports = { methodology: diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js index d0c09348d3..cc9fc0491c 100644 --- a/projects/atlantisloans/index.js +++ b/projects/atlantisloans/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); const { compoundExports } = require("../helper/compound"); @@ -23,7 +24,7 @@ module.exports = { ...compoundExports(comptroller, "bsc", "0x5A9A90983A369b6bB8F062f0AFe6219Ac01caF63", - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" + ADDRESSES.bsc.WBNB ), }, polygon: compoundExports(polygonComptroller, @@ -34,12 +35,12 @@ module.exports = { avax: compoundExports(avaxComptroller, "avax", "0x6bd2154fbc086cb43411966e0e72584196ccd065", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" + ADDRESSES.avax.WAVAX ), dogechain: compoundExports(dcComptroller, "dogechain", "0xbc46Dc817ce983CfD1B36cBc599031aCBEc2FDfe", - "0xb7ddc6414bf4f5515b52d8bdd69973ae205ff101" + ADDRESSES.dogechain.WWDOGE ), methodology: "TVL is comprised of tokens deposited to the protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.", diff --git a/projects/atlas-fi/index.js b/projects/atlas-fi/index.js index ce6cb2af9c..faad277373 100644 --- a/projects/atlas-fi/index.js +++ b/projects/atlas-fi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs") const { sumTokensExport } = require("../helper/unknownTokens") const VAULT = '0x3A93FCCcD2769579eFE03d6DeF2C4468F5F0bd38' @@ -8,7 +9,7 @@ async function tvl(_, _b, _cb, { api, }) { api, ownerTokens: [ [[ - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', + ADDRESSES.arbitrum.USDT, '0xf6995955e4b0e5b287693c221f456951d612b628', '0xee338313f022caee84034253174fa562495dcc15', '0x8dc3312c68125a94916d62b97bb5d925f84d4ae0', diff --git a/projects/atlas-usv/index.js b/projects/atlas-usv/index.js index 27925f7dff..dea985804e 100644 --- a/projects/atlas-usv/index.js +++ b/projects/atlas-usv/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0x71EF2894E23D7ea7Fd73a3558B3a0bA25689bC86"; module.exports = ohmTvl(treasuryAddress, [ //DAI - ["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", false], + [ADDRESSES.polygon.DAI, false], //FRAX ["0x104592a158490a9228070e0a8e5343b499e125d0", false], //SSX diff --git a/projects/atmossoft.js b/projects/atmossoft.js index 433101a3f4..9461ed5bae 100644 --- a/projects/atmossoft.js +++ b/projects/atmossoft.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumUnknownTokens } = require('./helper/unknownTokens') async function bsc(timestamp, ethBlock, chainBlocks) { const pools = [{ 'pool2Address': '0xaF18cde26fdd22561df2a02958CbA092f41875d8', - 'pairToken': 'bsc:0x55d398326f99059ff775485246999027b3197955', + 'pairToken': 'bsc:' + ADDRESSES.bsc.USDT, 'stakingContract': '0x282FFbE782F903340A14955649032302e8020b9C' }, { 'pool2Address': '0xdf825e486d9d15848a36c113b7725d7923e886a4', - 'pairToken': '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + 'pairToken': ADDRESSES.bsc.WBNB, 'stakingContract': '0xa65d60e8a71dBDbb14B6eE7073522546FE73CFE4' }]; @@ -20,7 +21,7 @@ async function bsc(timestamp, ethBlock, chainBlocks) { async function ftm(timestamp, ethBlock, chainBlocks) { const pools = [{ 'pool2Address': '0x662db0c6fa77041fe4901149558cc70ca1c8e874', - 'pairToken': '0x4e15361fd6b4bb609fa63c81a2be19d873717870', + 'pairToken': ADDRESSES.ethereum.FTM, 'stakingContract': 'f043f876d3d220acce029ca76c9572f0449e5e71' }]; const tokensAndOwners = pools.map(i => ([i.pool2Address, i.stakingContract])) diff --git a/projects/auctus/index.js b/projects/auctus/index.js index 4087947ab2..300b5f3d75 100644 --- a/projects/auctus/index.js +++ b/projects/auctus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -12,7 +13,7 @@ const FACTORY = '0x176b98ab38d1aE8fF3F30bF07f9B93E26F559C17'; const POOLS_FACTORY = '0xe28520DDB1b419Ac37eCDBB2c0F97c8Cf079CCC3'; const VAULTS = '0x2Ce43b4570Ad9DEAb8CFE6258B42DB7301e3b6C0'; - const ETHER_ADDRESS = '0x0000000000000000000000000000000000000000'; + const ETHER_ADDRESS = ADDRESSES.null; /*================================================== TVL diff --git a/projects/augur/index.js b/projects/augur/index.js index c50490c14e..b04181bee3 100644 --- a/projects/augur/index.js +++ b/projects/augur/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); -const dai = '0x6b175474e89094c44da98b954eedeac495271d0f' +const dai = ADDRESSES.ethereum.DAI const universe = '0x49244bd018ca9fd1f06ecc07b9e9de773246e5aa' const delegator = '0xd5524179cB7AE012f5B642C1D6D700Bbaa76B96b' @@ -16,7 +17,7 @@ async function tvl(timestamp, block) { }) return { - '0x0000000000000000000000000000000000000000': ethBalance.output, + [ADDRESSES.null]: ethBalance.output, [dai]: daiBalance.output } } diff --git a/projects/aurora-plus/index.js b/projects/aurora-plus/index.js index 01573ac9f4..394fc0166c 100644 --- a/projects/aurora-plus/index.js +++ b/projects/aurora-plus/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); -const AURORA = "0x8bec47865ade3b172a928df8f990bc7f2a3b9f79"; +const AURORA = ADDRESSES.aurora.AURORA; const stakingContract = "0xf075c896cbbb625e7911e284cd23ee19bdccf299"; module.exports = { diff --git a/projects/avatr/index.js b/projects/avatr/index.js index 27547dd378..5b0fd50509 100644 --- a/projects/avatr/index.js +++ b/projects/avatr/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const { getLogs } = require("../helper/cache/getLogs"); const { staking } = require("../helper/staking"); const FACTORY_CONTRACT = "0x498B8f1E767E2A32ab68C1301F1e98b59a34dA94"; -const WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH_ADDRESS = ADDRESSES.ethereum.WETH; async function tvl(timestamp, block, chainBlocks, { api }) { const logs = await getLogs({ diff --git a/projects/axe/index.js b/projects/axe/index.js index 1f19c1a596..b7e7797f61 100644 --- a/projects/axe/index.js +++ b/projects/axe/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking.js"); const treasuryAddresses = ["0xa2039621Cc042567092fAaee89B03Ef959F89712"]; -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const DAI = ADDRESSES.ethereum.DAI; +const USDC = ADDRESSES.ethereum.USDC; const AXEStaking = "0x7f4d186b76a39a2da32804a8c35b3d04e0e174fd"; const AXE = "0x30AC8317DfB0ab4263CD8dB1C4F10749911B126C"; diff --git a/projects/axion/index.js b/projects/axion/index.js index a10d9fe664..f4d47f5d8f 100644 --- a/projects/axion/index.js +++ b/projects/axion/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -17,7 +18,7 @@ async function staking(timestamp, block, chainBlocks) { }; } -const BTC = "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6"; +const BTC = ADDRESSES.polygon.WBTC; const VC = "0x660B71C03C15B24EFa800F2454540CD9011E40cB"; async function tvl(timestamp, block, chainBlocks) { const stats = await sdk.api.abi.call({ diff --git a/projects/azuro/index.js b/projects/azuro/index.js index d4f07cf261..e874c8e7f5 100644 --- a/projects/azuro/index.js +++ b/projects/azuro/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { @@ -6,7 +7,7 @@ const config = { '0x2a838ab9b037db117576db8d0dcc3b686748ef7c', ], tokens: [ - '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC + ADDRESSES.polygon.USDC, // USDC ], }, xdai: { @@ -15,7 +16,7 @@ const config = { '0x204e7371Ade792c5C006fb52711c50a7efC843ed', // v2 ], tokens: [ - '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', // WXDAI + ADDRESSES.xdai.WXDAI, // WXDAI ], }, } diff --git a/projects/bagel-finance/index.js b/projects/bagel-finance/index.js index 8cf1bcaa60..78510c9e78 100644 --- a/projects/bagel-finance/index.js +++ b/projects/bagel-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const BigNumber = require("bignumber.js"); @@ -5,13 +6,13 @@ const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); const bankAddress = "0x18C32E273D0F13D5b8268B3Bc5acD30f26A8F91a"; const tokens = [ - "0x55d398326f99059ff775485246999027b3197955", - "0xe9e7cea3dedca5984780bafc599bd69add087d56", - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.ETH, "0x9c65ab58d8d978db963e63f2bfb7121627e3a739", "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + ADDRESSES.bsc.USDC, "0xbb238fce6e2ee90781cd160c9c6eaf3a4cfad801", ]; @@ -135,7 +136,7 @@ const lps = [ ]; async function bnbTvl(bankAddress, block) { let balances = { - "0x0000000000000000000000000000000000000000": ( + [ADDRESSES.null]: ( await sdk.api.eth.getBalance({ target: bankAddress, block, chain: "bsc" }) ).output, }; @@ -186,8 +187,8 @@ async function tvl(timestamp, ethBlock, chainBlocks) { /// @dev bnb const bnbBalance = await bnbTvl(bankAddress, block); - balances[getBSCAddress("0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c")] = - BigNumber(bnbBalance["0x0000000000000000000000000000000000000000"]); + balances[getBSCAddress(ADDRESSES.bsc.WBNB)] = + BigNumber(bnbBalance[ADDRESSES.null]); const lpTotalSupplys = ( await sdk.api.abi.multiCall({ diff --git a/projects/baker-guild-finance/index.js b/projects/baker-guild-finance/index.js index f5d19f8134..a1e3eb4c5a 100644 --- a/projects/baker-guild-finance/index.js +++ b/projects/baker-guild-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const {addFundsInMasterChef} = require("../helper/masterchef"); const {pool2BalanceFromMasterChefExports} = require("../helper/pool2"); @@ -13,10 +14,10 @@ const wsSPA= "0x89346b51a54263cf2e92da79b1863759efa68692"; const spa = "fantom:0x5602df4a94eb6c680190accfa2a475621e0ddbdc"; const translate = { - "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e":"0x6b175474e89094c44da98b954eedeac495271d0f", - "0x9879abdea01a879644185341f7af7d8343556b7a":"0x0000000000085d4780b73119b644ae5ecd22b376", - "0x9f47f313acfd4bdc52f4373b493eae7d5ac5b765":"avax:0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", - "0x511d35c52a3c244e7b8bd92c0c297755fbd89212":"avax:0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" + [ADDRESSES.fantom.DAI]:ADDRESSES.ethereum.DAI, + "0x9879abdea01a879644185341f7af7d8343556b7a":ADDRESSES.ethereum.TUSD, + "0x9f47f313acfd4bdc52f4373b493eae7d5ac5b765":"avax:" + ADDRESSES.avax.JOE, + "0x511d35c52a3c244e7b8bd92c0c297755fbd89212":"avax:" + ADDRESSES.avax.WAVAX } async function tvl(timestamp, block, chainBlocks) { diff --git a/projects/baksdao/index.js b/projects/baksdao/index.js index 8faf4638ab..7cfcef7460 100644 --- a/projects/baksdao/index.js +++ b/projects/baksdao/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens, } = require('../helper/unwrapLPs') const { transformBscAddress, } = require('../helper/portedTokens'); const chain = 'bsc' const DEPOSIT_TOKENS = [ - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // wBnB - '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', //ETH, - '0x55d398326f99059fF775485246999027B3197955', // USDT - '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', // BTC + ADDRESSES.bsc.WBNB, // wBnB + ADDRESSES.bsc.ETH, //ETH, + ADDRESSES.bsc.USDT, // USDT + ADDRESSES.bsc.BTCB, // BTC ] const DEPOSIT_CONTRACT = '0xe94286A3e83D66aB3bAF9840184a2E5680e9A7eC' diff --git a/projects/bancor/index.js b/projects/bancor/index.js index 499ad191f5..d73bdfdd7e 100644 --- a/projects/bancor/index.js +++ b/projects/bancor/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require('./abi.json'); const sdk = require('@defillama/sdk'); const { sumTokens } = require('../helper/unwrapLPs'); -const ethAddress = '0x0000000000000000000000000000000000000000'; +const ethAddress = ADDRESSES.null; const ethReserveAddresses = ['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee']; async function generateCallsByBlockchain(block) { diff --git a/projects/bancor/v3.js b/projects/bancor/v3.js index 8cb6722c6b..37fbea3109 100644 --- a/projects/bancor/v3.js +++ b/projects/bancor/v3.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require('./abi.json'); const sdk = require('@defillama/sdk'); const { sumTokens } = require('../helper/unwrapLPs'); -const ethAddress = '0x0000000000000000000000000000000000000000'; +const ethAddress = ADDRESSES.null; const ethReserveAddresses = ['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee']; const bancor = '0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' diff --git a/projects/bank-of-chain/index.js b/projects/bank-of-chain/index.js index 48c2ee5ab9..c59769e96c 100644 --- a/projects/bank-of-chain/index.js +++ b/projects/bank-of-chain/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // const BigNumber = require("bignumber.js"); // const utils = require('../helper/utils'); // const { toUSDTBalances } = require('../helper/balances'); @@ -7,8 +8,8 @@ const risk_off_abi = require("./risk_off_vault_abi.json"); const RISK_OFF_USD_VAULT = "0x30D120f80D60E7b58CA9fFaf1aaB1815f000B7c3" const RISK_OFF_ETH_VAULT = "0x8f0Cb368C63fbEDF7a90E43fE50F7eb8B9411746" -const usdtAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"; -const ethAddress = '0x0000000000000000000000000000000000000000'; +const usdtAddress = ADDRESSES.ethereum.USDT; +const ethAddress = ADDRESSES.null; const chains = { ethereum: 1, diff --git a/projects/bao-usd/index.js b/projects/bao-usd/index.js index 95090dd61a..5c711a5b08 100644 --- a/projects/bao-usd/index.js +++ b/projects/bao-usd/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: sumTokensExport({ tokens: ['0x6b175474e89094c44da98b954eedeac495271d0f'], owner: '0x720282bb7e721634c95f0933636de3171dc405de'}), + tvl: sumTokensExport({ tokens: [ADDRESSES.ethereum.DAI], owner: '0x720282bb7e721634c95f0933636de3171dc405de'}), } }; \ No newline at end of file diff --git a/projects/based-finance/basedV2.js b/projects/based-finance/basedV2.js index 82f1e433b4..5b4b8b2f73 100644 --- a/projects/based-finance/basedV2.js +++ b/projects/based-finance/basedV2.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); const { stakings } = require("../helper/staking"); const chain = 'fantom' @@ -5,8 +6,8 @@ const chain = 'fantom' //BASED V2 const smelt = "0x141FaA507855E56396EAdBD25EC82656755CD61e"; const BoardroomV2 = "0x8ff9eFB99D522fAC6a21363b7Ca54d25477637F6"; -const usdc = "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75"; -const wftm = "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"; +const usdc = ADDRESSES.fantom.USDC; +const wftm = ADDRESSES.fantom.WFTM; const treasuryAddress = '0x0A10daD90b9C6FB8B87BFf3857A4B012890C53A5'; //BASED V2 Twisted Nodes diff --git a/projects/based-finance/index.js b/projects/based-finance/index.js index 4f02d7d355..ad339d396b 100644 --- a/projects/based-finance/index.js +++ b/projects/based-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); const { getUniTVL } = require("../helper/unknownTokens") @@ -9,10 +10,10 @@ const treasuryAddress = "0xa0e0f462d66de459711bc721ce1fdcc3d9405831"; // Token Addresses const basedTokenAddress = "0x8d7d3409881b51466b483b11ea1b8a03cded89ae"; const bshareTokenAddress = "0x49c290ff692149a4e16611c694fded42c954ab7a"; -const usdcAddress = "0x04068da6c83afcfa0e13ba15a6696662335d5b75"; -const usdtAddress = "0x049d68029688eAbF473097a2fC38ef61633A3C7A"; +const usdcAddress = ADDRESSES.fantom.USDC; +const usdtAddress = ADDRESSES.fantom.fUSDT; const maiAddress = "0xfB98B335551a418cD0737375a2ea0ded62Ea213b"; -const wftmAddress = "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"; +const wftmAddress = ADDRESSES.fantom.WFTM; const treasuryTokens = [ usdcAddress, diff --git a/projects/basis-cash.js b/projects/basis-cash.js index 180e00b7ba..4a3addb6eb 100644 --- a/projects/basis-cash.js +++ b/projects/basis-cash.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens } = require('./helper/unwrapLPs') async function tvl(ts, block) { const toa = [ - ['0x6b175474e89094c44da98b954eedeac495271d0f', '0xEBd12620E29Dc6c452dB7B96E1F190F3Ee02BDE8'], + [ADDRESSES.ethereum.DAI, '0xEBd12620E29Dc6c452dB7B96E1F190F3Ee02BDE8'], ['0x57ab1ec28d129707052df4df418d58a2d46d5f51', '0xdc42a21e38c3b8028b01a6b00d8dbc648f93305c'], - ['0xdac17f958d2ee523a2206206994597c13d831ec7', '0x2833bdc5B31269D356BDf92d0fD8f3674E877E44'], - ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0x51882184b7F9BEEd6Db9c617846140DA1d429fD4'], + [ADDRESSES.ethereum.USDT, '0x2833bdc5B31269D356BDf92d0fD8f3674E877E44'], + [ADDRESSES.ethereum.USDC, '0x51882184b7F9BEEd6Db9c617846140DA1d429fD4'], ['0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8', '0xC462d8ee54953E7d7bF276612b75387Ea114c3bf'], ] diff --git a/projects/basketdao/index.js b/projects/basketdao/index.js index 8ac0f53601..d249a096c6 100644 --- a/projects/basketdao/index.js +++ b/projects/basketdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const {unwrapUniswapLPs} = require('../helper/unwrapLPs') const BigNumber = require('bignumber.js') @@ -7,11 +8,11 @@ const dpiEthToken = '0x4d5ef58aAc27d99935E5b6B4A6778ff292059991' const bDPISLP = '0x8d782C5806607E9AAFB2AC38c1DA3838Edf8BD03' const bDPIToken = '0x0309c98B1bffA350bcb3F9fB9780970CA32a5060' const masterChef = '0xDB9daa0a50B33e4fe9d0ac16a1Df1d335F96595e' -const weth = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' +const weth = ADDRESSES.ethereum.WETH const continuousMigrator = '0x3f436dE9ef3f07b770c4DB45F60f9f1d323Bbf36' const bmiToken = "0x0aC00355F80E289f53BF368C9Bdb70f5c114C44B"; -const daiToken = '0x6b175474e89094c44da98b954eedeac495271d0f' +const daiToken = ADDRESSES.ethereum.DAI async function tvl(timestamp, block) { let balances = {}; diff --git a/projects/bchpad/index.js b/projects/bchpad/index.js index b1891fe007..b1c5f67a59 100644 --- a/projects/bchpad/index.js +++ b/projects/bchpad/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const chain = "smartbch" // token contracts const BPAD = "0x9192940099fDB2338B928DE2cad9Cd1525fEa881" -const CATS = "0x265bD28d79400D55a1665707Fa14A72978FA6043" +const CATS = ADDRESSES.smartbch._CATS // tvl pools const BPAD_POOL = "0xc39f046a0E2d081e2D01558269D1e3720D2D2EA1" // BPAD single asset pool, ended diff --git a/projects/beamer/index.js b/projects/beamer/index.js index 59837ca231..b4947a3361 100644 --- a/projects/beamer/index.js +++ b/projects/beamer/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') const config = { @@ -5,16 +6,16 @@ const config = { owner: '0x6d00f6994f36ec1a3bd008dbbc84dfa46a939001', tokens: [ nullAddress, - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', + ADDRESSES.arbitrum.USDC, + ADDRESSES.optimism.DAI, ] }, optimism: { owner: '0x0b3c3dcf4c9db39b810f306e55cd14aed5c19c0b', tokens: [ nullAddress, - '0x7f5c764cbc14f9669b88837ca1490cca17c31607', - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', + ADDRESSES.optimism.USDC, + ADDRESSES.optimism.DAI, ] } } diff --git a/projects/beamswap/index.js b/projects/beamswap/index.js index 8aa14118c5..f95ebffcd9 100644 --- a/projects/beamswap/index.js +++ b/projects/beamswap/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { staking } = require('../helper/staking') -const GLINT_TOKEN = "0xcd3B51D98478D53F4515A306bE565c6EebeF1D58" +const GLINT_TOKEN = ADDRESSES.moonbeam.GLINT const SHARE_CONTRACT = "0x4204cAd97732282d261FbB7088e07557810A6408" const dexTVL = getUniTVL({ diff --git a/projects/bearfinance/index.js b/projects/bearfinance/index.js index 4f010a13f3..b1f1a185fd 100644 --- a/projects/bearfinance/index.js +++ b/projects/bearfinance/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { masterchefExports } = require('../helper/unknownTokens') const BEAR_DAI_LP = "0x9e5719236e2ce62dc286ac89ae5a0fa142ae3aa8" -const DAI = '0x6b175474e89094c44da98b954eedeac495271d0f'; +const DAI = ADDRESSES.ethereum.DAI; module.exports = masterchefExports({ diff --git a/projects/bearnfi/index.js b/projects/bearnfi/index.js index c5edb8336b..1ab8a3cae2 100644 --- a/projects/bearnfi/index.js +++ b/projects/bearnfi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getUniTVL } = require('../helper/unknownTokens') const { compoundExports } = require('../helper/compound') @@ -12,7 +13,7 @@ const url = "https://api.bdollar.fi/api/bvault/get-vaults"; const BDEX_FACTORY = "0x2C358A7C62cdb9D554A65A86EEa034bc55D1E715"; const COMPTROLLER = "0xEEea0D4aAd990c4ede8e064A8Cb0A627B432EDa0"; -const wBNB = "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c"; +const wBNB = ADDRESSES.bsc.WBNB; const cBNB = "0xa3948b027f94ca195eac645746435aaa7eb555a7"; const chain = 'bsc' diff --git a/projects/beekava/index.js b/projects/beekava/index.js index 9c9381c7af..2cb09480f2 100644 --- a/projects/beekava/index.js +++ b/projects/beekava/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unknownTokens') const WkavaBeekLpAddress = "0x6F95ff58Cdbf17594882E7EF948687aC81c2fEE0"; -const ERC20ContractWkavaAddress = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b"; +const ERC20ContractWkavaAddress = ADDRESSES.kava.WKAVA; const ERC20ContractBeekAddress = "0xb520e9C5123A450828c190cb6073583a5ecd0d74"; const POL_Pool_One = "0x00635507895D30801f60a2859990420013068ee0"; diff --git a/projects/belt/index.js b/projects/belt/index.js index d4ddcf0224..b9e351d07a 100644 --- a/projects/belt/index.js +++ b/projects/belt/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const abi = require('./abi.json') const { get } = require('../helper/http') @@ -6,9 +7,9 @@ const { toUSDTBalances } = require('../helper/balances'); // https://docs.belt.fi/contracts/contract-deployed-info const bscVaults = [ - '0x51bd63F240fB13870550423D208452cA87c44444', - '0xAA20E8Cb61299df2357561C2AC2e1172bC68bc25', - '0xa8Bb71facdd46445644C277F9499Dd22f6F0A30C', + ADDRESSES.bsc.beltBTC, + ADDRESSES.bsc.beltETH, + ADDRESSES.bsc.beltBNB, '0x9171Bf7c050aC8B4cf7835e51F7b4841DFB2cCD0', '0x55E1B1e49B969C018F2722445Cd2dD9818dDCC25', '0x7a59bf07D529A5FdBab67D597d63d7D5a83E61E5', diff --git a/projects/beluga-protocol/index.js b/projects/beluga-protocol/index.js index 1d9263cc29..7585ba8932 100644 --- a/projects/beluga-protocol/index.js +++ b/projects/beluga-protocol/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, } = require('../helper/solana') const tokens = { - usdt: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', - usdc: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', + usdt: ADDRESSES.solana.USDT, + usdc: ADDRESSES.solana.USDC, } const pools = { diff --git a/projects/benddao/helper/address.js b/projects/benddao/helper/address.js index 5bb59f50d4..5196abd028 100644 --- a/projects/benddao/helper/address.js +++ b/projects/benddao/helper/address.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') module.exports = { ethereum: { UiPoolDataProvider: "0x5250cCE48E43AB930e45Cc8E71C87Ca4B51244cf", @@ -8,7 +9,7 @@ module.exports = { UniswapV2PairWETH: "0x336ef4e633b1117dca08c1a57f4139c62c32c935", StakedBUNI: "0x647C509AF2A2b2294bB79fCE12DaEc8e7cf938f7", Treasury: "0x472FcC65Fab565f75B1e0E861864A86FE5bcEd7B", - USDC: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + USDC: ADDRESSES.ethereum.USDC, ApeCoin: "0x4d224452801ACEd8B2F0aebE155379bb5D594381", BNFTRegistry: "0x79d922DD382E42A156bC0A354861cDBC4F09110d", }, diff --git a/projects/benqi-staked-avax/index.js b/projects/benqi-staked-avax/index.js index 92076aaef7..fd2468f223 100644 --- a/projects/benqi-staked-avax/index.js +++ b/projects/benqi-staked-avax/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const savaxAbi = require("./savax.json"); const SAVAX = "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"; -const WAVAX = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"; +const WAVAX = ADDRESSES.avax.WAVAX; const transformAddress = (addr) => `avax:${addr}`; diff --git a/projects/benswap/index.js b/projects/benswap/index.js index 5c47b63172..19568bc976 100644 --- a/projects/benswap/index.js +++ b/projects/benswap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getUniTVL } = require('../helper/unknownTokens') const { stakingPricedLP } = require('../helper/staking') -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04"; +const WBCH = ADDRESSES.smartbch.WBCH; const EBEN = "0x77CB87b57F54667978Eb1B199b28a0db8C8E1c0B"; -const FLEXUSD = "0x7b2B3C5308ab5b2a1d9a94d20D35CCDf61e05b72"; +const FLEXUSD = ADDRESSES.smartbch.flexUSD; const FACTORY = "0x8d973bAD782c1FFfd8FcC9d7579542BA7Dd0998D"; const MASTERBREEDER = "0xDEa721EFe7cBC0fCAb7C8d65c598b21B6373A2b6"; const EBEN_WBCH_LP = "0x0D4372aCc0503Fbcc7EB129e0De3283c348B82c3"; diff --git a/projects/bent/constants.js b/projects/bent/constants.js index 5c5591cc7c..adfb12447f 100644 --- a/projects/bent/constants.js +++ b/projects/bent/constants.js @@ -1,12 +1,13 @@ -const addressZero = "0x0000000000000000000000000000000000000000"; +const ADDRESSES = require('../helper/coreAssets.json') +const addressZero = ADDRESSES.null; const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; -const wethAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const wethAddress = ADDRESSES.ethereum.WETH; const bentCVXAddress = "0x9E0441E084F5dB0606565737158aa6Ab6B970fE0"; const CVXAddress = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; const pool2Address = "0xd564b2feec19df8f4d6cb52c0a4386d05a993583"; const sushiLpAddress = "0x5fa4370164a2fabeef159b893299d59ff5dc1e6d"; const bentAddress = "0x01597e397605bf280674bf292623460b4204c375"; -const daiAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"; +const daiAddress = ADDRESSES.ethereum.DAI; const weBent = "0x04637d61F538911929ff96E755B589C014fD9ce2"; const bentPools = { diff --git a/projects/bepro/index.js b/projects/bepro/index.js index 847690a766..d05e900a42 100644 --- a/projects/bepro/index.js +++ b/projects/bepro/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') /** BEPRO Protocol is available on Moonbeam and Moonriver */ @@ -7,11 +8,11 @@ const config = { bountyNetworks: [] }, "moonriver": { - token: "0xCb4a593ce512D78162C58384f0b2Fd6e802c2c47", + token: ADDRESSES.moonriver.BEPRO, bountyNetworks: ["0x85dE589aDc4bC5F17075fcd603E8A0f7561d90C9"] }, "moonbeam": { - token: "0x4EdF8E0778967012D46968ceadb75436d0426f88", + token: ADDRESSES.moonbeam.BEPRO, registry: "0x34DD5F63437FdC20557a8C6dDAeA056d3661c5e0", bountyNetworks: ["0xa9938c8712552Fe0b5312547fA96Ad9f14d58d3C"] } diff --git a/projects/betafinance/index.js b/projects/betafinance/index.js index b9ad6ce946..78cd314a2d 100644 --- a/projects/betafinance/index.js +++ b/projects/betafinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getConfig } = require('../helper/cache') const { sumTokens } = require("../helper/unwrapLPs"); @@ -6,21 +7,21 @@ const config = { ethereum: { bank: '0x972a785b390D05123497169a04c72dE652493BE1', collaterals: [ - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0x6b175474e89094c44da98b954eedeac495271d0f", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WETH, ], poolURL: 'https://beta-reward-xvn33y7hlq-uc.a.run.app/beta_active_eth/reward_infos' }, avax: { bank: '0xf3a82ddd4fbf49a35eccf264997f82d40510f36b', collaterals: [ - "0xc7198437980c041c805a1edcba50c1ce5db95118", - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0xd586e7f844cea2f87f50152665bcbc2c279d8d70", - "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + ADDRESSES.avax.USDT_e, + ADDRESSES.avax.USDC_e, + ADDRESSES.avax.DAI, + ADDRESSES.avax.WETH_e, + ADDRESSES.avax.WAVAX, ], poolURL: 'https://beta-reward-xvn33y7hlq-uc.a.run.app/beta_active_avax/reward_infos' } diff --git a/projects/biconomy/index.js b/projects/biconomy/index.js index 896d9b4142..9992332667 100644 --- a/projects/biconomy/index.js +++ b/projects/biconomy/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokens2 } = require("../helper/unwrapLPs"); const { returnEthBalance } = require("../helper/utils") @@ -12,9 +13,9 @@ const config = { ], tokens: [ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - '0x6b175474e89094c44da98b954eedeac495271d0f', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - '0xdac17f958d2ee523a2206206994597c13d831ec7', + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, ] }, polygon: { @@ -23,10 +24,10 @@ const config = { '0x2A5c2568b10A0E826BfA892Cf21BA7218310180b', ], tokens: [ - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.WETH_1, ] }, avax: { @@ -35,10 +36,10 @@ const config = { '0x2A5c2568b10A0E826BfA892Cf21BA7218310180b', ], tokens: [ - '0xc7198437980c041c805a1edcba50c1ce5db95118', - '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', - '0xd586e7f844cea2f87f50152665bcbc2c279d8d70', - '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab', + ADDRESSES.avax.USDT_e, + ADDRESSES.avax.USDC_e, + ADDRESSES.avax.DAI, + ADDRESSES.avax.WETH_e, ] }, bsc: { @@ -47,9 +48,9 @@ const config = { '0x94D3E62151B12A12A4976F60EdC18459538FaF08', ], tokens: [ - '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', - '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', - '0x55d398326f99059ff775485246999027b3197955', + ADDRESSES.bsc.ETH, + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.USDT, ] }, optimism: { @@ -59,7 +60,7 @@ const config = { ], tokens: [ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - '0x7f5c764cbc14f9669b88837ca1490cca17c31607', + ADDRESSES.optimism.USDC, ] }, arbitrum: { @@ -69,7 +70,7 @@ const config = { ], tokens: [ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + ADDRESSES.arbitrum.USDC, ] }, } diff --git a/projects/bifi/index.js b/projects/bifi/index.js index df6f9c2d5f..79096df090 100644 --- a/projects/bifi/index.js +++ b/projects/bifi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakings } = require("../helper/staking"); const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') @@ -9,23 +10,23 @@ const ethPool = '0x13000c4a215efe7e414bb329b2f11c39bcf92d78'; const ethTokenPools = { 'usdt': { 'pool': '0x808c3ba97268dbf9695b1ec10729e09c7e67a9e3', - 'token': '0xdac17f958d2ee523a2206206994597c13d831ec7' + 'token': ADDRESSES.ethereum.USDT }, 'dai': { 'pool': '0xd76b7060f1b646fa14740ff6ac670a4f0a6fc5e3', - 'token': '0x6b175474e89094c44da98b954eedeac495271d0f' + 'token': ADDRESSES.ethereum.DAI }, 'link': { 'pool': '0x25567603eb61a4a49f27e433652b5b8940d10682', - 'token': '0x514910771af9ca656af840dff83e8264ecf986ca' + 'token': ADDRESSES.ethereum.LINK }, 'usdc': { 'pool': '0x128647690C7733593aA3Dd149EeBC5e256E79217', - 'token': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' + 'token': ADDRESSES.ethereum.USDC }, 'wbtc': { 'pool': '0x93948Aa8488F522d5b079AF84fe411FBCE476e9f', - 'token': '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599' + 'token': ADDRESSES.ethereum.WBTC } } @@ -34,7 +35,7 @@ const bscPool = '0x170b6AA872166eC2F8515c2B855C34B6C7563c18' const bscTokenPools = { 'usdt': { 'pool': '0x2A29598cbc17BA112C8Fd0E07Fbf5402eF57E6b8', - 'token': '0x55d398326f99059ff775485246999027b3197955' + 'token': ADDRESSES.bsc.USDT }, 'dai': { 'pool': '0xB67C5433d234d656002f12664d15ab4b40666D9B', @@ -42,19 +43,19 @@ const bscTokenPools = { }, 'eth': { 'pool': '0xf86d8218BCC15874f5D25c191FdDd43F2334c3EB', - 'token': '0x2170ed0880ac9a755fd29b2688956bd959f933f8' + 'token': ADDRESSES.bsc.ETH }, 'usdc': { 'pool': '0xBA9De5a8FD91408826616f2d6d7470A11E34c9F0', - 'token': '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d' + 'token': ADDRESSES.bsc.USDC }, 'btcb': { 'pool': '0x26d0E4707af1c1DAAd8e9BA21b99cDa7Fd24c40B', - 'token': '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c' + 'token': ADDRESSES.bsc.BTCB }, 'busd': { 'pool': '0x829ED2a2BeF8b72e648f92CBF01587C7E12e8c1e', - 'token': '0xe9e7cea3dedca5984780bafc599bd69add087d56' + 'token': ADDRESSES.bsc.BUSD } } @@ -62,19 +63,19 @@ const avaxPool = '0x446881360d6d39779D292662fca9BC85C5789dB3' const avaxTokenPools = { 'eth': { 'pool': '0x8AbA88E8A4AB28319b782199cB17f0001EE67984', - 'token': '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB' + 'token': ADDRESSES.avax.WETH_e }, 'usdt': { 'pool': '0xE893233515b7D02dD4e3D888162d4C87Dc837943', - 'token': '0xc7198437980c041c805A1EDcbA50c1Ce5db95118' + 'token': ADDRESSES.avax.USDT_e }, 'usdc': { 'pool': '0x8385Ea36dD4BDC84B3F2ac718C332E18C1E42d36', - 'token': '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664' + 'token': ADDRESSES.avax.USDC_e }, 'dai': { 'pool': '0x34DA42143b0c6E321CEb76931c637c12Bd865f7e', - 'token': '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70' + 'token': ADDRESSES.avax.DAI }, 'wbtc': { 'pool': '0xc4D1e935F02A44D44985E6b1C0eE1ee616fC146a', @@ -86,27 +87,27 @@ const klayPool = '0x829fCFb6A6EeA9d14eb4C14FaC5B29874BdBaD13'; const klaytnTokenPools = { 'keth': { 'pool': '0x07970F9D979D8594B394fE12345211C376aDfF89', - 'token': '0x34d21b1e550d73cee41151c77f3c73359527a396' + 'token': ADDRESSES.klaytn.oETH }, 'kusdt': { 'pool': '0xe0e67b991d6b5CF73d8A17A10c3DE74616C1ec11', - 'token': '0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167' + 'token': ADDRESSES.klaytn.oUSDT }, 'kdai': { 'pool': '0xE03487927e137526a2dB796A9B3b4048ab615043', - 'token': '0x5c74070fdea071359b86082bd9f9b3deaafbe32b' + 'token': ADDRESSES.klaytn.KDAI }, 'usdc': { 'pool': '0x808c707c53c3D30d0247e4b8D78AA0D8b75CAAE1', - 'token': '0x754288077d0ff82af7a5317c7cb8c444d421d103' + 'token': ADDRESSES.klaytn.oUSDC }, 'kwbtc': { 'pool': '0xa6aDE2e6c6F50a2d9b9C4b819e84b367F88C1598', - 'token': '0x16d0e1fbd024c600ca0380a4c5d57ee7a2ecbf9c' + 'token': ADDRESSES.klaytn.oWBTC }, 'kxrp': { 'pool': '0x4800577A71F68eD7ef4C09cFBe7fd6E066D5F0dA', - 'token': '0x9eaefb09fe4aabfbe6b1ca316a3c36afc83a393f' + 'token': ADDRESSES.klaytn.oXRP }, } @@ -116,7 +117,7 @@ async function eth(timestamp, block) { return sumTokens2({ block, tokensAndOwners: toa }) } -const wbtc = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" +const wbtc = ADDRESSES.ethereum.WBTC async function bitcoin(timestamp, ethBlock) { const tokenPool = { 'pool': '0x986Eb51E67e154901ff9B482835788B8f3054076', diff --git a/projects/billion-happiness/index.js b/projects/billion-happiness/index.js index ecf205e2bb..0e8a4bbbc4 100644 --- a/projects/billion-happiness/index.js +++ b/projects/billion-happiness/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { pool2 } = require("../helper/pool2.js"); const { stakings, staking } = require("../helper/staking.js"); const bhcToken = "0x6fd7c98458a943f469E1Cf4eA85B173f5Cd342F4"; const masterchef = "0xC5c482a4Ed34b80B861B4e6Eb28664a46bd3eC8B"; //"Feeling Sweet Masterchef" const pool2LP = "0x851dB01B337Ee3E5Ab161ad04356816F09EA01dc"; // "Feeling Sweet" BHC-WBNB -const bhcTokenETHW = "0x0c9f28FBdFd79f7C00B805d8c63D053c146d282c"; +const bhcTokenETHW = ADDRESSES.ethpow.BHC; const BHC_ETHW = "0x899fED261A7df2761CF0b6f7556B80669D135802"; -const WETHW = "0x7Bf88d2c0e32dE92CdaF2D43CcDc23e8Edfd5990"; +const WETHW = ADDRESSES.ethpow.WETHW; const stakingPools = [ "0xa4712bd37cdE563bDfccCfa6DE5E5c2b1Da5572B", // "Feeling Playful" diff --git a/projects/binance-beth/index.js b/projects/binance-beth/index.js index 88938e42ad..48188c8f66 100644 --- a/projects/binance-beth/index.js +++ b/projects/binance-beth/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress } = require("../helper/unwrapLPs"); const sdk = require('@defillama/sdk') @@ -7,7 +8,7 @@ module.exports = { const api = new sdk.ChainApi({ timestamp, chain: 'bsc' }) await api.getBlock() return { - [nullAddress]: await api.call({ target: '0x250632378e573c6be1ac2f97fcdf00515d0aa91b', abi: 'uint256:totalSupply'}) + [nullAddress]: await api.call({ target: ADDRESSES.bsc.BETH, abi: 'uint256:totalSupply'}) } } } diff --git a/projects/binance/config.js b/projects/binance/config.js index 3947a3eefc..0f76d6b648 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniqueAddresses } = require('../helper/utils') @@ -323,12 +324,12 @@ module.exports = { owners: getOwners('ETH'), blacklistedTokens: [ '0x9be89d2a4cd102d8fecc6bf9da793be995c22541', // BBTC - '0xB8c77482e45F1F44dE1745F52C74426C631bDD52', // WBNB + ADDRESSES.ethereum.BNB, // WBNB ] }, bsc: { owners: getOwners('BEP20'), - tokens: ['0x0000000000000000000000000000000000000000',], + tokens: [ADDRESSES.null,], }, bep2: { geckoId: 'binancecoin', diff --git a/projects/bishares/config.js b/projects/bishares/config.js index 2f90026ba5..ea8301d2b2 100644 --- a/projects/bishares/config.js +++ b/projects/bishares/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // data taken from // https://api.thegraph.com/subgraphs/name/toffick/bisharesfunds // https://api.thegraph.com/subgraphs/name/bisharesindexfund/bisharesfunds-ybf-fantom @@ -19,7 +20,7 @@ module.exports = { "0x259c0cf00f8710b473457314420114ae4c87cee5" ], [ - "0x82f0b8b456c1a451378467398982d4834b6829c1", + ADDRESSES.fantom.MIM, "0x259c0cf00f8710b473457314420114ae4c87cee5" ], [ @@ -67,7 +68,7 @@ module.exports = { "0xa55568847c5c5be3b6c59c6e57e74677591d900d" ], [ - "0x82f0b8b456c1a451378467398982d4834b6829c1", + ADDRESSES.fantom.MIM, "0xa55568847c5c5be3b6c59c6e57e74677591d900d" ], [ @@ -103,7 +104,7 @@ module.exports = { "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" ], [ - "0x82f0b8b456c1a451378467398982d4834b6829c1", + ADDRESSES.fantom.MIM, "0xab8ac08c597fb090b36eb514ba3f3a8b4a78aed1" ], [ @@ -135,7 +136,7 @@ module.exports = { "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" ], [ - "0x82f0b8b456c1a451378467398982d4834b6829c1", + ADDRESSES.fantom.MIM, "0xead77cdfeb1fe4672704ba322d63a3d2bdca2025" ], [ @@ -169,7 +170,7 @@ module.exports = { "0x10a520829c1e9631ef9e60e37eea3916092caa99" ], [ - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + ADDRESSES.bsc.ETH, "0x10a520829c1e9631ef9e60e37eea3916092caa99" ], [ @@ -177,7 +178,7 @@ module.exports = { "0x10a520829c1e9631ef9e60e37eea3916092caa99" ], [ - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", + ADDRESSES.bsc.BTCB, "0x10a520829c1e9631ef9e60e37eea3916092caa99" ], [ @@ -189,7 +190,7 @@ module.exports = { "0x10a520829c1e9631ef9e60e37eea3916092caa99" ], [ - "0xe9e7cea3dedca5984780bafc599bd69add087d56", + ADDRESSES.bsc.BUSD, "0x10a520829c1e9631ef9e60e37eea3916092caa99" ], [ @@ -197,7 +198,7 @@ module.exports = { "0x28939911a862bd4e6b10e281f233a5e060114e0b" ], [ - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + ADDRESSES.bsc.ETH, "0x28939911a862bd4e6b10e281f233a5e060114e0b" ], [ @@ -253,7 +254,7 @@ module.exports = { "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" ], [ - "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + ADDRESSES.bsc.WBNB, "0x2a5f983706b6535ab5d69f003eb271ec44b5e839" ], [ @@ -389,7 +390,7 @@ module.exports = { "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" ], [ - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + ADDRESSES.bsc.ETH, "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" ], [ @@ -405,7 +406,7 @@ module.exports = { "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" ], [ - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", + ADDRESSES.bsc.BTCB, "0xfc02d63e44e71d4b8c81a436f19ce580eb7bfada" ], [ diff --git a/projects/bitBTC.js b/projects/bitBTC.js index b1744e0417..70f8700d0e 100644 --- a/projects/bitBTC.js +++ b/projects/bitBTC.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { transformOptimismAddress } = require('./helper/portedTokens'); const WBTC = "0x68f180fcce6836688e9084f035309e29bf0a2095"; -const bitANT = "0x5029c236320b8f15ef0a657054b84d90bfbeded3"; +const bitANT = ADDRESSES.optimism.BitANT; const bitBTC = "0xc98b98d17435aa00830c87ea02474c5007e1f272"; const tvlContracts = [ diff --git a/projects/bitindi/index.js b/projects/bitindi/index.js index c1657eb14b..33d2f74235 100644 --- a/projects/bitindi/index.js +++ b/projects/bitindi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') @@ -8,6 +9,6 @@ module.exports = { }, bitindi: { tvl: () => ({}), - staking: staking('0x140c312c8841B0a7152946C0Bc2BD343bA51bbcc', '0x15E162205421dc3A47b15A1A740FbF5EAbB77921', 'bitindi'), + staking: staking('0x140c312c8841B0a7152946C0Bc2BD343bA51bbcc', ADDRESSES.bitindi.WBNI, 'bitindi'), }, }; diff --git a/projects/bitlend/index.js b/projects/bitlend/index.js index 826aed932c..9446245857 100644 --- a/projects/bitlend/index.js +++ b/projects/bitlend/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const CHAIN = 'bittorrent' // Tokens -const ETH = '0x1249C65AfB11D179FFB3CE7D4eEDd1D9b98AD006' -const USDC_T = '0x935faA2FCec6Ab81265B301a30467Bbc804b43d3' -const TRX = '0xEdf53026aeA60f8F75FcA25f8830b7e2d6200662' +const ETH = ADDRESSES.bittorrent.ETH +const USDC_T = ADDRESSES.bittorrent.USDC_t +const TRX = ADDRESSES.bittorrent.TRX // Bitlend Markets const bETH = '0xb65103C4B2Af563F9bBD8ad8CA8387d700673B6E' diff --git a/projects/blackbird-finance/index.js b/projects/blackbird-finance/index.js index be918dcc74..1cbb1b3903 100644 --- a/projects/blackbird-finance/index.js +++ b/projects/blackbird-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {addFundsInMasterChef} = require("../helper/masterchef"); const {stakingUnknownPricedLP} = require("../helper/staking"); const {pool2BalanceFromMasterChefExports} = require("../helper/pool2"); @@ -6,11 +7,11 @@ const bird = "0x9A3d8759174f2540985aC83D957c8772293F8646"; const masterchef = "0xDF937094C6f2B757Dfd1265e5e1550Ea0055b27A"; const translate = { - "0xbed48612bc69fa1cab67052b42a95fb30c1bcfee": "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce", - "0x765277eebeca2e31912c9946eae1021199b39c61": "avax:0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "0xb44a9b6905af7c801311e8f4e76932ee959c663c": "fantom:0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", + [ADDRESSES.cronos.SHIB]: ADDRESSES.ethereum.INU, + [ADDRESSES.shiden.ETH]: "avax:" + ADDRESSES.avax.WAVAX, + [ADDRESSES.moonriver.USDT]: "fantom:" + ADDRESSES.fantom.WFTM, "0x9b8077c6590b560f1a9d60512648277d29b35a3b": "polygon:0x8a953cfe442c5e8855cc6c61b1293fa648bae472", - "0xc9baa8cfdde8e328787e29b4b078abf2dadc2055": "polygon:0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + [ADDRESSES.kcc.DAI]: "polygon:0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", } async function tvl(timestamp, block, chainBlocks) { diff --git a/projects/blindex/index.js b/projects/blindex/index.js index f5026549e5..1479887dfd 100644 --- a/projects/blindex/index.js +++ b/projects/blindex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("../helper/abis/blindex.json"); const { formatAddressChecksum } = require("../helper/formatAddressChecksum.js"); @@ -22,7 +23,7 @@ const chains = { coingeckoMapping: { prefix: "rsk", "0x542fda317318ebf1d3deaf76e0b632741a7e677d": "rootstock", // RSK's WRBTC - "0x1d931bf8656d795e50ef6d639562c5bd8ac2b78f": "ethereum", // RSK's ETHs + [ADDRESSES.rsk.ETHs]: "ethereum", // RSK's ETHs "0xb450ff06d950efa9a9c0ad63790c51971c1be885": "usd-coin", // RSK's BDUS - USD stable "0x99ac494badd0cba26143bd423e39a088591c7b09": "tether-eurt", // RSK's BDEU, - Euro stable "0xa4a8fb98a26e5314397170e5d12da8b73dc2ceb5": "pax-gold", // RSK's bXAU, - Gold stable diff --git a/projects/blockng/index.js b/projects/blockng/index.js index 4ed27e46e4..465a371613 100644 --- a/projects/blockng/index.js +++ b/projects/blockng/index.js @@ -1,23 +1,24 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumUnknownTokens, getUniTVL, sumTokensExport } = require('../helper/unknownTokens'); const { staking, } = require('../helper/staking') const sdk = require('@defillama/sdk') const blockng = require('../helper/abis/blockng.json'); const chain = 'smartbch' -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04" -const LAW = "0x0b00366fBF7037E9d75E4A569ab27dAB84759302" +const WBCH = ADDRESSES.smartbch.WBCH +const LAW = ADDRESSES.smartbch.LAW const coreAssets = [ WBCH, LAW, - '0x7b2B3C5308ab5b2a1d9a94d20D35CCDf61e05b72', // FlexUSD - '0xBc2F884680c95A02cea099dA2F524b366d9028Ba', // BlockNG pegged USDT + ADDRESSES.smartbch.flexUSD, // FlexUSD + ADDRESSES.smartbch.bcUSDT, // BlockNG pegged USDT ] const masterchefTvl = async (timestamp, ethBlock, { [chain]: block }) => { const toa = [ - ['0x0000000000000000000000000000000000000000', '0x896a8ddb5B870E431893EDa869feAA5C64f85978'], // BCH - ['0x24d8d5Cbc14FA6A740c3375733f0287188F8dF3b', '0x82112e12533A101cf442ee57899249C719dc3D4c'], // DAIQUIRI + [ADDRESSES.null, '0x896a8ddb5B870E431893EDa869feAA5C64f85978'], // BCH + [ADDRESSES.smartbch.DAIQUIRI, '0x82112e12533A101cf442ee57899249C719dc3D4c'], // DAIQUIRI ] return sumUnknownTokens({ chain, block, useDefaultCoreAssets: true, tokensAndOwners: toa, }); diff --git a/projects/blockswap/index.js b/projects/blockswap/index.js index d42d57c88c..2f1529fb82 100644 --- a/projects/blockswap/index.js +++ b/projects/blockswap/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { GraphQLClient, gql } = require('graphql-request'); -const ethAddress = '0x0000000000000000000000000000000000000000' +const ethAddress = ADDRESSES.null const lsd_subgraph = 'https://api.thegraph.com/subgraphs/name/stakehouse-dev/lsd' diff --git a/projects/bluebit/index.js b/projects/bluebit/index.js index d3b602e52a..dd1d64b357 100644 --- a/projects/bluebit/index.js +++ b/projects/bluebit/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abis.json"); const { staking } = require("../helper/staking"); const { toUSDTBalances } = require("../helper/balances"); const { getBlock } = require("../helper/http"); -const account = "0x0000000000000000000000000000000000000000"; +const account = ADDRESSES.null; const token = "0x4148d2Ce7816F0AE378d98b40eB3A7211E1fcF0D"; const veToken = "0xdf7C547f332351A86DB0D89a89799A7aB4eC9dEB"; diff --git a/projects/bluefin/index.js b/projects/bluefin/index.js index 5049dca914..e79a019b13 100644 --- a/projects/bluefin/index.js +++ b/projects/bluefin/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') // https://dapi.api.arbitrum-prod.firefly.exchange/marketData/contractAddresses module.exports = { arbitrum: { - tvl: sumTokensExport({ tokens: ['0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8'], owner: '0x52b5471d04487fb85B39e3Ae47307f115fe8733F'}) + tvl: sumTokensExport({ tokens: [ADDRESSES.arbitrum.USDC], owner: '0x52b5471d04487fb85B39e3Ae47307f115fe8733F'}) } } \ No newline at end of file diff --git a/projects/blur-finance/index.js b/projects/blur-finance/index.js index d1d39fccc1..35d1fb4b0d 100644 --- a/projects/blur-finance/index.js +++ b/projects/blur-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const abi = require('./abi') const { getChainTransform } = require('../helper/portedTokens') @@ -8,9 +9,9 @@ let totalTvl const contract = '0xf300b9171aAb493F4584b8f5601d97E627AaB451' const blur = '0x4165084a6e5388ce53c9d9892f904a2712dd943a' -const wbnb = '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c' +const wbnb = ADDRESSES.bsc.WBNB const sushi = '0x4165084A6e5388ce53c9D9892f904a2712Dd943A' -const busd = '0x66e428c3f67a68878562e79a0234c1f83c208770' +const busd = ADDRESSES.cronos.USDT async function gettotalTvl(block) { if (!totalTvl) totalTvl = getTVL() diff --git a/projects/blur/index.js b/projects/blur/index.js index 84c4791392..2b5e18af55 100644 --- a/projects/blur/index.js +++ b/projects/blur/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') @@ -12,7 +13,7 @@ async function ethtvl(timestamp, block) { }) return { - '0x0000000000000000000000000000000000000000': ethBalance.output, + [ADDRESSES.null]: ethBalance.output, } } diff --git a/projects/bobagateway/index.js b/projects/bobagateway/index.js index add5a86f91..0f499efd72 100644 --- a/projects/bobagateway/index.js +++ b/projects/bobagateway/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const listTokens = require("./listTokens.json"); const abi = require("./abi.json"); @@ -12,8 +13,8 @@ const L1StakingTokens = [ const L2LiquidityPool = "0x3A92cA39476fF84Dc579C868D4D7dE125513B034"; const L2StakingTokens = [ - "0xe1E2ec9a85C607092668789581251115bCBD20de", //OMG on boba - "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7", //BOBA on boba + ADDRESSES.boba.OMG, //OMG on boba + ADDRESSES.boba.BOBA, //BOBA on boba ]; const calcTvl = async ( diff --git a/projects/bodhfinance/index.js b/projects/bodhfinance/index.js index 0a2767c6b3..5e37a1b692 100644 --- a/projects/bodhfinance/index.js +++ b/projects/bodhfinance/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require('../helper/compound') -const WETH = "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" +const WETH = ADDRESSES.metis.Metis const bETH = "0xe970c37243F3d0B2AeB041b855Ef6466CB140BcA" const unitroller = "0x97b491744587d05ca33e84bB18B61Df9B3986DcE" diff --git a/projects/bonqdao/index.js b/projects/bonqdao/index.js index 3582fb708d..d23900e6b1 100644 --- a/projects/bonqdao/index.js +++ b/projects/bonqdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { stakings } = require("../helper/staking"); const TROVE_FACTORY_CONTRACT = '0x3bB7fFD08f46620beA3a9Ae7F096cF2b213768B3' @@ -8,10 +9,10 @@ const BNQ_STAKING_CONTRACT = '0xb1b72B3579b03dFdCfF3195486277605e55Cf703' const BNQ_BEUR_UNIV3_POOL = '0xA96373C7a591fd21b86E0c9b8E156CC81E6cBb5e' const TOKEN_COLLATERAL = [ '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', // WMATIC - '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC + ADDRESSES.polygon.USDC, // USDC '0x35b2ece5b1ed6a7a99b83508f8ceeab8661e0632', // WALBT (Wrapped AllianceBlock Token) - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH - '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', // DAI + ADDRESSES.polygon.WETH_1, // WETH + ADDRESSES.polygon.DAI, // DAI ] const LP_COLLATERAL = [ '0xa1dd21527c76bb1a3b667149e741a8b0f445fae2', // Arrakis Vault V1 BEUR/DAI diff --git a/projects/bonsai-strike/index.js b/projects/bonsai-strike/index.js index 1325796341..dd5ce05870 100644 --- a/projects/bonsai-strike/index.js +++ b/projects/bonsai-strike/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { bsc: { - tvl: sumTokensExport({ owners: ['0x01cEF5B79044E1CCd9b6Ad76c3d0985b5A33F769', '0x4b9d1cf13129a79d92bef13dac908e9ffc665ad8'], tokens: ['0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c']}), + tvl: sumTokensExport({ owners: ['0x01cEF5B79044E1CCd9b6Ad76c3d0985b5A33F769', '0x4b9d1cf13129a79d92bef13dac908e9ffc665ad8'], tokens: [ADDRESSES.bsc.WBNB]}), } }; \ No newline at end of file diff --git a/projects/boofinance/index.js b/projects/boofinance/index.js index c28f0ee2f3..e63245dba6 100644 --- a/projects/boofinance/index.js +++ b/projects/boofinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const token0Abi = 'address:token0' @@ -11,12 +12,12 @@ const stakingAddress = "0x67712c62d1DEAEbDeF7401E59a9E34422e2Ea87c"; const hauntedHouse = "0xB178bD23876Dd9f8aA60E7FdB0A2209Fe2D7a9AB"; const transform = { - "0x4f60a160d8c2dddaafe16fcc57566db84d674bd6": "harmony:0x72cb10c6bfa5624dd07ef608027e366bd690048f", - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e": "avax:0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664" + "0x4f60a160d8c2dddaafe16fcc57566db84d674bd6": "harmony:" + ADDRESSES.harmony.JEWEL, + [ADDRESSES.avax.USDC]: "avax:" + ADDRESSES.avax.USDC_e } -const joe = "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd"; -const xjoe = "0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33"; +const joe = ADDRESSES.avax.JOE; +const xjoe = ADDRESSES.avax.xJOE; async function calcTvl(block, chain, pool2, api) { let balances = {}; diff --git a/projects/bourbon-dao/index.js b/projects/bourbon-dao/index.js index 37106ff3ca..0fc309816a 100644 --- a/projects/bourbon-dao/index.js +++ b/projects/bourbon-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {ohmTvl} = require("../helper/ohm"); const whiskey = "0xce1ad4e2810e413e2e3684decc58a0bd01c907d9"; @@ -5,9 +6,9 @@ const stakingContract = "0x5e398c5da5353182aae7410fb824a1578fc518cb"; const treasury = "0x950d8c342bc6e0bcf9c1deb87d039947f35b3eb9"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD - ["0x55d398326f99059ff775485246999027b3197955", false], // USDT - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], // WBNB + [ADDRESSES.bsc.BUSD, false], // BUSD + [ADDRESSES.bsc.USDT, false], // USDT + [ADDRESSES.bsc.WBNB, false], // WBNB ["0x96b6d5482313eecc031afeb2fb32da2ba7439ba2", true], // WHISKEY-BUSD CAKELP ] diff --git a/projects/bprotocol/index.js b/projects/bprotocol/index.js index 02476b27f8..5ada8b2186 100644 --- a/projects/bprotocol/index.js +++ b/projects/bprotocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -22,15 +23,15 @@ const bKeeperAddress = "0xeaE019ef845A4Ffdb8829210De5D30aC6FbB5371"; const stabilityPoolAddress = "0x66017D22b0f8556afDd19FC67041899Eb65a21bb"; - const usdcEth = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" - const usdcFantom = "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75" - const usdcArbitrum = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" + const usdcEth = ADDRESSES.ethereum.USDC + const usdcFantom = ADDRESSES.fantom.USDC + const usdcArbitrum = ADDRESSES.arbitrum.USDC - const daiEth = "0x6b175474e89094c44da98b954eedeac495271d0f" - const daiFantom = "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e" + const daiEth = ADDRESSES.ethereum.DAI + const daiFantom = ADDRESSES.fantom.DAI - const usdtEth = "0xdac17f958d2ee523a2206206994597c13d831ec7" - const usdtArbitrum = "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9" + const usdtEth = ADDRESSES.ethereum.USDT + const usdtArbitrum = ADDRESSES.arbitrum.USDT const fraxEth = "0x853d955aCEf822Db058eb8505911ED77F175b99e" @@ -58,7 +59,7 @@ ==================================================*/ async function compoundTvl(timestamp, block) { - if (block < cFirstBlock) return { '0x0000000000000000000000000000000000000000': '0' }; + if (block < cFirstBlock) return { [ADDRESSES.null]: '0' }; // number of accounts const { output: avatarLength } = await sdk.api.abi.call( @@ -101,7 +102,7 @@ // get the underlying token address const isCEth = cTokenAddress.toLowerCase() === "0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5" const { output: token } = isCEth - ? { output: '0x0000000000000000000000000000000000000000' } // ETH has no underlying asset on Compound + ? { output: ADDRESSES.null } // ETH has no underlying asset on Compound : await sdk.api.abi.call( { block, @@ -141,7 +142,7 @@ } async function makerTvl(timestamp, block) { - if (block < mFirstBlock) return { '0x0000000000000000000000000000000000000000': '0' }; + if (block < mFirstBlock) return { [ADDRESSES.null]: '0' }; const cdpiRes = await sdk.api.abi.call( { @@ -166,7 +167,7 @@ let totalBalance = new BigNumber(0); ethBalances.forEach(balance => totalBalance = totalBalance.plus(new BigNumber(balance))); - const balances = { '0x0000000000000000000000000000000000000000': totalBalance.toString(10) }; + const balances = { [ADDRESSES.null]: totalBalance.toString(10) }; return balances } diff --git a/projects/brainiac/index.js b/projects/brainiac/index.js index ecb4bfe679..5ef9ecfb14 100644 --- a/projects/brainiac/index.js +++ b/projects/brainiac/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require('../helper/compound'); const { staking, sumTokensExport } = require('../helper/unknownTokens') @@ -19,7 +20,7 @@ const BRAINIAC_CKB_LP = '0xaa0f41e50dbfd8247fb397b1fffea1fea9f4e6d4' // params = comptroller , chain , brCKB , CKB module.exports = { - [chain]: compoundExports("0x5c68BDBba7151c486faCB66dc39b891030e46725", chain, "0x352d09567dE5A02415670723D09E006F623fE62e", "0x7538C85caE4E4673253fFd2568c1F1b48A71558a") + [chain]: compoundExports("0x5c68BDBba7151c486faCB66dc39b891030e46725", chain, "0x352d09567dE5A02415670723D09E006F623fE62e", ADDRESSES.godwoken_v1.pCKB) } module.exports[chain].staking = staking({ chain, useDefaultCoreAssets: true, owners: farms, tokens: [BRAINIAC], lps: [BRAINIAC_CKB_LP], }) diff --git a/projects/bridge-mutual/index.js b/projects/bridge-mutual/index.js index 0a8595a0ac..86d541ba07 100644 --- a/projects/bridge-mutual/index.js +++ b/projects/bridge-mutual/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') @@ -8,7 +9,7 @@ const config = { staking: ["0x81d73999fabec7e8355d76d1010afbe3068f08fa", "0x55978a6f6a4cfa00d5a8b442e93e42c025d0890c"], PolicyBookRegistry: "0xff13c3d2c7931e86e13c993a8cb02d68848f9613", ShieldMining: "0x6d6fCf279a63129797def89dBA82a65b3386497e", - usdt: "0xdac17f958d2ee523a2206206994597c13d831ec7", + usdt: ADDRESSES.ethereum.USDT, bmi: "0x725c263e32c72ddc3a19bea12c5a0479a81ee688", }, bsc: { @@ -16,7 +17,7 @@ const config = { staking: ["0x8be37f9bb9b09cf89774c103c52d1e660398a7b3"], PolicyBookRegistry: "0xab7c7356f706954c3c926a690e96c7b65fa76116", ShieldMining: "0xcc75bf59969e8362d064536fd941a541f81abe56", - usdt: "0x55d398326f99059fF775485246999027B3197955", + usdt: ADDRESSES.bsc.USDT, bmi: "0xb371f0eb8dfb3b47fdfc23bbcbc797954d3d4f23", }, polygon: { @@ -24,7 +25,7 @@ const config = { staking: ["0xcfdb12299c2d0111ae1cee23337e9156deabfbf5"], PolicyBookRegistry: "0xab7c7356f706954c3c926a690e96c7b65fa76116", ShieldMining: "0xde52f95ea3373fab1deefde56d35fa1dacd83e99", - usdt: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + usdt: ADDRESSES.polygon.USDT, bmi: "0xa10facae1abac4fae6312c615a9c3fd56075be1a", }, } diff --git a/projects/bright-union/index.js b/projects/bright-union/index.js index e97c8f88b8..854af6f884 100644 --- a/projects/bright-union/index.js +++ b/projects/bright-union/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const {staking} = require('../helper/staking') @@ -11,7 +12,7 @@ const BrightLPStaking = ["0x160c43821004Cb76C7e9727159dD64ab8468f61C"]; //UNIV2 const ETH_BRIGHT_UNIV2 = "0xf4835af5387fab6bbc59f496cbcfa92998469b7b"; -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f" +const DAI = ADDRESSES.ethereum.DAI async function tvl (timestamp, block) { return { diff --git a/projects/brinc/index.js b/projects/brinc/index.js index ab54b96001..4fdceccc95 100644 --- a/projects/brinc/index.js +++ b/projects/brinc/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakingPricedLP } = require('../helper/staking') const {sumTokensAndLPsSharedOwners} = require('../helper/unwrapLPs') const { transformArbitrumAddress } = require("../helper/portedTokens"); @@ -10,7 +11,7 @@ async function tvl(time, ethBlock, chainBlocks){ const balances = {}; const transformAddress = await transformArbitrumAddress(); await sumTokensAndLPsSharedOwners(balances, [ - ["0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", false], //dai + [ADDRESSES.optimism.DAI, false], //dai ], [treasury], chainBlocks.arbitrum, "arbitrum", transformAddress) return balances diff --git a/projects/brokkr/index.js b/projects/brokkr/index.js index 71b96fbfa0..b1f3ef2811 100644 --- a/projects/brokkr/index.js +++ b/projects/brokkr/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const INDEX_TOKEN_CONTRACT = { 'avax': '0xB0E2880D4429d10eF1956062B260aDf09557A1da' } -const USDC_TOKEN_CONTRACT = '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E' +const USDC_TOKEN_CONTRACT = ADDRESSES.avax.USDC const CALM_PORTFOLIO_CONTRACT = '0x2eAf73F8E6BCf606f56E5cf201756C1f0565C068' const AMBITIOUS_PORTFOLIO_CONTRACT = '0x0294D02e9Fee4872e72697e9514aD0be671DB498' const DCA_PORTFOLIO_CONTRACTS = { diff --git a/projects/btcst/index.js b/projects/btcst/index.js index 3cedd1708d..7f3c3f5172 100644 --- a/projects/btcst/index.js +++ b/projects/btcst/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require("../helper/staking"); const { transformBscAddress } = require("../helper/portedTokens"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -21,7 +22,7 @@ const vaultContracts = [ const listOfTokens = [ //BTCB - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", + ADDRESSES.bsc.BTCB, //sigmaBTC "0x2cd1075682b0fccaadd0ca629e138e64015ba11c", //sigmaDOGE diff --git a/projects/buffer/index.js b/projects/buffer/index.js index 7e87dbf250..e08f44bc4d 100644 --- a/projects/buffer/index.js +++ b/projects/buffer/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { sumTokensExport } = require("../helper/unwrapLPs"); const tokens = { BFR: "0x1A5B0aaF478bf1FDA7b934c76E7692D722982a6D", - USDC_ARB: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - USDC_POLY: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + USDC_ARB: ADDRESSES.arbitrum.USDC, + USDC_POLY: ADDRESSES.polygon.USDC, ARB: "0x912CE59144191C1204E64559FE8253a0e49E6548" }; diff --git a/projects/bumper/index.js b/projects/bumper/index.js index cd13a9ada6..6c5b8024d7 100644 --- a/projects/bumper/index.js +++ b/projects/bumper/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" +const USDC = ADDRESSES.ethereum.USDC const contract = "0xBabeE6d5F6EDD301B5Fae591a0D61AB702b359d0" async function tvl(time, block) { return { diff --git a/projects/burgerswap/index.js b/projects/burgerswap/index.js index 1a0be7cfe3..f48dd91cfe 100644 --- a/projects/burgerswap/index.js +++ b/projects/burgerswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { getUniTVL } = require('../helper/unknownTokens') @@ -7,7 +8,7 @@ const stakingContract = "0x9154c2684aeF8d106babcB19Aa81d4FabF7581ec"; const BURGER = "0xae9269f27437f0fcbc232d39ec814844a51d6b8f"; const Factory = "0x8a1E9d3aEbBBd5bA2A64d3355A48dD5E9b511256"; -const WBNB = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; +const WBNB = ADDRESSES.bsc.WBNB; const shackChef = "0x07dE034A0Fc0DA7a0bf703F6DcA7025bcD61BA3e"; diff --git a/projects/butternetwork/index.js b/projects/butternetwork/index.js index a4a6938cd1..b482ea84d9 100644 --- a/projects/butternetwork/index.js +++ b/projects/butternetwork/index.js @@ -1,33 +1,34 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/sumTokens') const config = { bsc: { mosContract: "0x630105189c7114667a7179aa57f07647a5f42b7f", tokens: { - USDT: "0x55d398326f99059fF775485246999027B3197955", - USDC: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + USDT: ADDRESSES.bsc.USDT, + USDC: ADDRESSES.bsc.USDC, DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - ETH: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + ETH: ADDRESSES.bsc.ETH, // MAP: "0x8105ECe4ce08B6B6449539A5db23e23b973DfA8f" } }, polygon: { mosContract: "0x630105189c7114667a7179aa57f07647a5f42b7f", tokens: { - USDT: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - USDC: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - DAI: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - ETH: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + USDT: ADDRESSES.polygon.USDT, + USDC: ADDRESSES.polygon.USDC, + DAI: ADDRESSES.polygon.DAI, + ETH: ADDRESSES.polygon.WETH_1, // MAP: "0xBAbceE78586d3e9E80E0d69601A17f983663Ba6a" } }, ethereum: { mosContract: "0x630105189c7114667a7179aa57f07647a5f42b7f", tokens: { - USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7", - USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - ETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + USDT: ADDRESSES.ethereum.USDT, + USDC: ADDRESSES.ethereum.USDC, + DAI: ADDRESSES.ethereum.DAI, + ETH: ADDRESSES.ethereum.WETH, // MAP: "0x9e976f211daea0d652912ab99b0dc21a7fd728e4" } }, @@ -45,10 +46,10 @@ const config = { mosContract: "0x630105189c7114667a7179Aa57f07647a5f42B7F", tokens: { // USDT: "0x33daba9618a75a7aff103e53afe530fbacf4a3dd", - // USDC: "0x9f722b2cb30093f766221fd0d37964949ed66918", + // USDC: ADDRESSES.map.USDC, // DAI: "0xEdDfAac857cb94aE8A0347e2b1b06f21AA1AAeFA", - // ETH: "0x05ab928d446d8ce6761e368c8e7be03c3168a9ec", - MAP: "0x13cb04d4a5dfb6398fc5ab005a6c84337256ee23" + // ETH: ADDRESSES.map.ETH, + MAP: ADDRESSES.map.WMAPO } } } diff --git a/projects/cakedao/index.js b/projects/cakedao/index.js index b6668cea68..f306220cc0 100644 --- a/projects/cakedao/index.js +++ b/projects/cakedao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const cakeStaking = "0xA3E4200CA1ac92331d529327E82d89C149CcD81C"; @@ -6,10 +7,10 @@ const cake = "0x4eb49a2f9a79053866fae806fac95a3ef5b92c05"; const treasury = "0x829D805F26E26aE6c2C6294B7fF9c0fE14d982Ac"; const treasuryTokens = [ ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], // WAVAX, - ["0xc7198437980c041c805a1edcba50c1ce5db95118", false], // USDT + [ADDRESSES.avax.WAVAX, false], // WAVAX, + [ADDRESSES.avax.USDT_e, false], // USDT ["0x50b7545627a5162f82a992c33b87adc75187b218", false], // WBTC - ["0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", false], // WETH + [ADDRESSES.avax.WETH_e, false], // WETH ["0x84d2fe6adace63407f4b6bd91ab9f782ba3cb420", true], // CAKE-MIM JLP ["0xb8df8111a74e5fd62b13dbbe59ddeb343fc91d4a", true] // CAKE-WAVAX JLP ] diff --git a/projects/camel-farm/index.js b/projects/camel-farm/index.js index 7aa8eac485..62b5b0c57f 100644 --- a/projects/camel-farm/index.js +++ b/projects/camel-farm/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { masterchefExports } = require('../helper/unknownTokens') module.exports = masterchefExports({ chain: 'arbitrum', masterchef: '0xceFDbfaf8E0f5b52F57c435dAD670554aF57EBFF', nativeToken: '0xb5734ac76d44bdf32b8dd4331e5bfc3bf9989cda', - coreAssets: ['0x82af49447d8a07e3bd95bd0d56f35241523fbab1'] + coreAssets: [ADDRESSES.arbitrum.WETH] }) \ No newline at end of file diff --git a/projects/canto-lending/index.js b/projects/canto-lending/index.js index 528cb06db2..c7e02a89e3 100644 --- a/projects/canto-lending/index.js +++ b/projects/canto-lending/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require('../helper/compound') @@ -8,12 +9,12 @@ const addresses = { NoteUSDCLP: '0x9571997a66D63958e1B3De9647C22bD6b9e7228c', CantoETHLP: '0x216400ba362d8FCE640085755e47075109718C8B', Comptroller: '0x5E23dC409Fc2F832f83CEc191E245A191a4bCc5C', - Note: '0x4e71A2E537B7f9D9413D3991D37958c0b5e1e503', - USDC: '0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd', - USDT: '0xd567B3d7B8FE3C79a1AD8dA978812cfC4Fa05e75', - ATOM: '0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265', - ETH: '0x5FD55A1B9FC24967C4dB09C513C3BA0DFa7FF687', - WCANTO: '0x826551890Dc65655a0Aceca109aB11AbDbD7a07B', + Note: ADDRESSES.canto.NOTE, + USDC: ADDRESSES.functionx.WFX, + USDT: ADDRESSES.functionx.PUNDIX, + ATOM: ADDRESSES.functionx.USDT, + ETH: ADDRESSES.functionx.PURSE, + WCANTO: ADDRESSES.canto.WCANTO, CCANTO: '0xb65ec550ff356eca6150f733ba9b954b2e0ca488', NOTE_WCANTO: '0x1d20635535307208919f0b67c3b2065965a85aa9', ETH_WCANTO: '0x216400ba362d8fce640085755e47075109718c8b', diff --git a/projects/cantohm/index.js b/projects/cantohm/index.js index 77dfe066eb..ffedffea92 100644 --- a/projects/cantohm/index.js +++ b/projects/cantohm/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unknownTokens"); const lps = [ '0x2382994D8A15d2dd2aAE10561688Ef6cbe10CB8C', @@ -11,8 +12,8 @@ module.exports = { tvl: sumTokensExport({ owner: '0xB8Ce90A08bdAdd3e6e6cD3173c0661FA94Aa81c5', tokens: [ - '0x4e71A2E537B7f9D9413D3991D37958c0b5e1e503', - '0x826551890Dc65655a0Aceca109aB11AbDbD7a07B', + ADDRESSES.canto.NOTE, + ADDRESSES.canto.WCANTO, ...lps, ], useDefaultCoreAssets: true, diff --git a/projects/cap-v4/index.js b/projects/cap-v4/index.js index 5438432b53..bd6f77f473 100644 --- a/projects/cap-v4/index.js +++ b/projects/cap-v4/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') const vault = "0xba9736a3fc948f8c489a7e975114eaf2b7f1c3fc"; @@ -8,7 +9,7 @@ module.exports = { arbitrum: { tvl: sumTokensExport({ owners: [vault, fundStore], tokens: [ nullAddress, - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',//USDC + ADDRESSES.arbitrum.USDC,//USDC ]}), staking: sumTokensExport({ owners: [vault, fundStore], tokens: [cap]}) }, diff --git a/projects/cap/index.js b/projects/cap/index.js index 30ba2b45c2..8b16d2a118 100644 --- a/projects/cap/index.js +++ b/projects/cap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') const contracts = { @@ -13,7 +14,7 @@ const contracts = { "usdcPool2": "0xf16033d20adda47dc99ea291d0f4c4fef2ff47af", }; const cap = "0x031d35296154279dc1984dcd93e392b1f946737b"; -const usdc = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"; +const usdc = ADDRESSES.arbitrum.USDC; module.exports = { methodology: "ETH locked on trading contracts", diff --git a/projects/carbon/index.js b/projects/carbon/index.js index 1fe2cf6856..bc6d1aca9f 100644 --- a/projects/carbon/index.js +++ b/projects/carbon/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const BigNumber = require("bignumber.js"); const stakingETHContract = "0x27F0408729dCC6A4672e1062f5003D2a07E4E10D"; -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH = ADDRESSES.ethereum.WETH; const stakingCARBONContract = "0x2C5058325373d02Dfd6c08E48d91FcAf8fD49f45"; const CARBON = "0xfa42da1bd08341537a44a4ca9d236d1c00a98b40"; @@ -21,7 +22,7 @@ const lpAddresses = [ "0x89450F6C7d7f2c5971E9Ee28e94d8b199d17f673", ]; -const WETH_arb = "0x82af49447d8a07e3bd95bd0d56f35241523fbab1"; +const WETH_arb = ADDRESSES.arbitrum.WETH; const NYAN = "0xed3fb761414da74b74f33e5c5a1f78104b188dfc"; async function pool2(time, ethBlock, chainBlocks) { diff --git a/projects/cashcow/index.js b/projects/cashcow/index.js index a3cdee69f0..9f662a787b 100644 --- a/projects/cashcow/index.js +++ b/projects/cashcow/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const { getCompoundV2Tvl, compoundExports } = require("../helper/compound"); const { transformBscAddress } = require("../helper/portedTokens"); @@ -5,7 +6,7 @@ const { addFundsInMasterChef } = require("../helper/masterchef"); const comptroller = "0x44f2A790aCB1bE42d3F7864e9F73762556eb895E"; const cBNB = "0xC819cCfA453C4b5D2B9c9fF7CF8017adE99CB9B1"; -const WBNBEquivalent = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; +const WBNBEquivalent = ADDRESSES.bsc.WBNB; const stakingChef = "0xbfcaB1627c4fB86A055DE4B8a56D46e625F51C0B"; diff --git a/projects/cashio/index.js b/projects/cashio/index.js index ddfd1999bd..2c3d5fb6a3 100644 --- a/projects/cashio/index.js +++ b/projects/cashio/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const SUNNY_POOLS = [{ "poolName": "quarry_saber_usdc_usdt", "relevantAccounts": { "sunnyPool": "3Zk1PhVap6mwrB9jZktucoSaMBa2whYSq8jtLew3tXbp", - "tokenAMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "tokenBMint": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", + "tokenAMint": ADDRESSES.solana.USDC, + "tokenBMint": ADDRESSES.solana.USDT, "tokenAReserve": "CfWX7o2TswwbxusJ4hCaPobu2jLCb1hfXuXJQjVq3jQF", "tokenBReserve": "EnTrdMMpdhugeH6Ban6gYZWXughWxKtVGfCwFn78ZmY3", "lpTokenSPL": "2poo1w1DL6yd2WNTCnNTzDqkC6MBXq7axo77P16yrBuf" diff --git a/projects/cat-in-a-box/index.js b/projects/cat-in-a-box/index.js index d2f80c6dfd..2607de1a3a 100644 --- a/projects/cat-in-a-box/index.js +++ b/projects/cat-in-a-box/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { @@ -5,6 +6,6 @@ module.exports = { tvl: sumTokensExport({ owners: [ '0x7f0A0C7149a46Bf943cCd412da687144b49C6014', '0x24146D1B3339Cf76b455dC42e71Ea5Cdff4aE0d7', - ], tokens: ['0xae7ab96520de3a18e5e111b5eaab095312d7fe84']}) + ], tokens: [ADDRESSES.ethereum.STETH]}) } } \ No newline at end of file diff --git a/projects/catsapes/index.js b/projects/catsapes/index.js index 6701905834..1938a4c3f8 100644 --- a/projects/catsapes/index.js +++ b/projects/catsapes/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const { masterchefExports } = require('../helper/unknownTokens') @@ -6,9 +7,9 @@ const config = { kava: { SKILL_TOKEN_CONTRACT: '0x85602B00C9bd973B1Afb66EC140A62480CF812d3', // STAKING: [ - // '0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', - // '0x765277EebeCA2e31912C9946eAe1021199B39C61', - // '0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', + // ADDRESSES.kava.WKAVA, + // ADDRESSES.shiden.ETH, + // ADDRESSES.telos.ETH, // '0xB44a9B6905aF7c801311e8F4E76932ee959c663', // ] } diff --git a/projects/cega/index.js b/projects/cega/index.js index ec0b9e361e..4e0a1b6137 100644 --- a/projects/cega/index.js +++ b/projects/cega/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { Program } = require("@project-serum/anchor"); const { getProvider, sumTokens2, getTokenBalance, } = require("../helper/solana"); const sdk = require('@defillama/sdk') @@ -11,7 +12,7 @@ const MM_multisigs = [ ] const vaultMintAuthority = '4nhbsUdKEwVQXuYDotgdQHoMWW83GvjXENwLsf9QrRJT' -const usdcTokenSpl = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' +const usdcTokenSpl = ADDRESSES.solana.USDC async function tvl() { const products = await getProducts() @@ -49,7 +50,7 @@ async function getProducts() { async function getMMbalance() { const { output: bals } = await sdk.api.abi.multiCall({ - target: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + target: ADDRESSES.ethereum.USDC, abi: 'erc20:balanceOf', calls: MM_multisigs.map(i => ({ params: i})), }) diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js index 62b30c5d1c..20463fdab5 100644 --- a/projects/celerbridge/index.js +++ b/projects/celerbridge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { chainExports } = require("../helper/exports"); const { sumTokens } = require("../helper/unwrapLPs"); const { getFixBalances } = require('../helper/portedTokens') @@ -25,7 +26,7 @@ config.setProvider("syscoin", new ethers.providers.StaticJsonRpcProvider( const liquidityBridgeContractsV2 = { // NOTE: Some chains have addresses before and after the liquidity bridge upgrade / migration arbitrum: [ - "0xdd90E5E87A2081Dcf0391920868eBc2FFB81a1aF", + ADDRESSES.astar.MATIC, "0x1619DE6B6B20eD217a58d00f37B9d47C7663feca", "0xFe31bFc4f7C9b69246a6dc0087D91a91Cb040f76", "0xEA4B1b0aa3C110c55f650d28159Ce4AD43a4a58b", @@ -41,7 +42,7 @@ const liquidityBridgeContractsV2 = { boba: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C", '0x8db213bE5268a2b8B78Af08468ff1EA422073Da0', '0x4C882ec256823eE773B25b414d36F92ef58a7c0C'], bsc: [ "0x5d96d4287D1ff115eE50faC0526cf43eCf79bFc6", - "0xdd90E5E87A2081Dcf0391920868eBc2FFB81a1aF", + ADDRESSES.astar.MATIC, "0x78bc5Ee9F11d133A08b331C2e18fE81BE0Ed02DC", "0x11a0c9270D88C99e221360BCA50c2f6Fda44A980", ], @@ -55,7 +56,7 @@ const liquidityBridgeContractsV2 = { "0x7510792A3B1969F9307F3845CE88e39578f2bAE1", ], fantom: [ - "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283", + ADDRESSES.astar.USDT, "0x374B8a9f3eC5eB2D97ECA84Ea27aCa45aa1C57EF", "0x7D91603E79EA89149BAf73C9038c51669D8F03E9", ], @@ -66,9 +67,9 @@ const liquidityBridgeContractsV2 = { moonbeam: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], moonriver: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], oasis: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], - okexchain: ["0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98"], + okexchain: [ADDRESSES.moonbeam.USDC], optimism: [ - "0x6De33698e9e9b787e09d3Bd7771ef63557E148bb", + ADDRESSES.astar.DAI, "0x9D39Fc627A6d9d9F8C831c16995b209548cc3401", "0xbCfeF6Bb4597e724D720735d32A9249E0640aA11", ], @@ -80,71 +81,71 @@ const liquidityBridgeContractsV2 = { rei: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C"], shiden: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C", "0xBB7684Cc5408F4DD0921E5c2Cadd547b8f1AD573",], syscoin: ["0x841ce48F9446C8E281D3F1444cB859b4A6D0738C", "0x1E6b1ceAF75936f153ABB7B65FBa57AbaE14e6CE"], - xdai: ["0x3795C36e7D12A8c252A20C5a7B455f7c57b60283"], + xdai: [ADDRESSES.astar.USDT], }; // Tokens added to the liquidity bridges, excluding Celer-Pegged tokens. const liquidityBridgeTokens = [ { // USDT - arbitrum: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", - aurora: "0x4988a896b1227218e4A686fdE5EabdcAbd91571f", - avax: "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", - bsc: "0x55d398326f99059ff775485246999027b3197955", - ethereum: "0xdac17f958d2ee523a2206206994597c13d831ec7", - fantom: "0x049d68029688eabf473097a2fc38ef61633a3c7a", + arbitrum: ADDRESSES.arbitrum.USDT, + aurora: ADDRESSES.aurora.USDT_e, + avax: ADDRESSES.avax.USDT_e, + bsc: ADDRESSES.bsc.USDT, + ethereum: ADDRESSES.ethereum.USDT, + fantom: ADDRESSES.fantom.fUSDT, heco: "0xa71edc38d189767582c38a3145b5873052c3e47a", - okexchain: "0x382bb369d343125bfb2117af9c149795c6c65c50", - optimism: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - polygon: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - xdai: "0x4ECaBa5870353805a9F068101A40E0f32ed605C6", + okexchain: ADDRESSES.okexchain.USDT, + optimism: ADDRESSES.optimism.USDT, + polygon: ADDRESSES.polygon.USDT, + xdai: ADDRESSES.xdai.USDT, }, { // USDC - arbitrum: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - aurora: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802", - avax: "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", - boba: "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", - bsc: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - ethereum: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - fantom: "0x04068da6c83afcfa0e13ba15a6696662335d5b75", + arbitrum: ADDRESSES.arbitrum.USDC, + aurora: ADDRESSES.aurora.USDC_e, + avax: ADDRESSES.avax.USDC_e, + boba: ADDRESSES.boba.USDC, + bsc: ADDRESSES.bsc.USDC, + ethereum: ADDRESSES.ethereum.USDC, + fantom: ADDRESSES.fantom.USDC, harmony: "0x985458e523db3d53125813ed68c274899e9dfab4", - heco: "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", - okexchain: "0xc946daf81b08146b1c7a8da2a851ddf2b3eaaf85", - optimism: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - polygon: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - xdai: "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83", + heco: ADDRESSES.heco.USDC_HECO, + okexchain: ADDRESSES.okexchain.USDC, + optimism: ADDRESSES.optimism.USDC, + polygon: ADDRESSES.polygon.USDC, + xdai: ADDRESSES.xdai.USDC, }, { // BUSD - ethereum: "0x4fabb145d64652a948d72533023f6e7a623c7c53", - bsc: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + ethereum: ADDRESSES.ethereum.BUSD, + bsc: ADDRESSES.bsc.BUSD, }, { // DAI - avax: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + avax: ADDRESSES.avax.DAI, bsc: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - ethereum: "0x6b175474e89094c44da98b954eedeac495271d0f", - optimism: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - polygon: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + ethereum: ADDRESSES.ethereum.DAI, + optimism: ADDRESSES.optimism.DAI, + polygon: ADDRESSES.polygon.DAI, }, { // WETH - arbitrum: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - avax: "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", - bsc: "0x2170ed0880ac9a755fd29b2688956bd959f933f8", - ethereum: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + arbitrum: ADDRESSES.arbitrum.WETH, + avax: ADDRESSES.avax.WETH_e, + bsc: ADDRESSES.bsc.ETH, + ethereum: ADDRESSES.ethereum.WETH, fantom: "0x74b23882a30290451A17c44f4F05243b6b58C76d", - optimism: "0x4200000000000000000000000000000000000006", - polygon: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + optimism: ADDRESSES.tombchain.FTM, + polygon: ADDRESSES.polygon.WETH_1, }, { // WBTC - arbitrum: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + arbitrum: ADDRESSES.arbitrum.WBTC, avax: "0x50b7545627a5162F82A992c33b87aDc75187B218", - ethereum: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + ethereum: ADDRESSES.ethereum.WBTC, fantom: "0x321162Cd933E2Be498Cd2267a90534A804051b11", - polygon: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + polygon: ADDRESSES.polygon.WBTC, }, { // DODO @@ -188,7 +189,7 @@ const liquidityBridgeTokens = [ }, { // BOBA - boba: "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7", + boba: ADDRESSES.boba.BOBA, ethereum: "0x42bbfa2e77757c645eeaad1655e0911a7553efbc", }, { @@ -204,7 +205,7 @@ const liquidityBridgeTokens = [ { // METIS ethereum: "0x9e32b13ce7f2e80a01932b42553652e053d6ed8e", - metis: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + metis: ADDRESSES.metis.Metis, }, { // CVP @@ -242,7 +243,7 @@ const liquidityBridgeTokens = [ // USX arbitrum: "0x641441c631e2F909700d2f41FD87F0aA6A6b4EDb", bsc: "0xb5102cee1528ce2c760893034a4603663495fd72", - ethereum: "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + ethereum: ADDRESSES.ethereum.USX, optimism: "0xbfD291DA8A403DAAF7e5E9DC1ec0aCEaCd4848B9", polygon: "0xCf66EB3D546F0415b368d98A95EAF56DeD7aA752", }, @@ -319,8 +320,8 @@ const liquidityBridgeTokens = [ }, { // iZi - arbitrum: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747", - bsc: "0x60D01EC2D5E98Ac51C8B4cF84DfCCE98D527c747", + arbitrum: ADDRESSES.bsc.iZi, + bsc: ADDRESSES.bsc.iZi, ethereum: "0x9ad37205d608B8b219e6a2573f922094CEc5c200", }, { @@ -365,12 +366,12 @@ const liquidityBridgeTokens = [ }, { // cUSD - celo: "0x765DE816845861e75A25fCA122bb6898B8B1282a", + celo: ADDRESSES.celo.cUSD, }, { // WSYS - // origin: "syscoin:0xd3e822f3ef011Ca5f17D82C956D952D8d7C3A1BB", - syscoin: "0xd3e822f3ef011Ca5f17D82C956D952D8d7C3A1BB", + // origin: "syscoin:" + ADDRESSES.syscoin.WSYS, + syscoin: ADDRESSES.syscoin.WSYS, bsc: "0x6822A778726CD2f0d4A1Cfaca2D04654e575cC82", ethereum: "0xF3C96924d85566C031ddc48DbC63B2d71da6D0f6", }, @@ -401,15 +402,15 @@ const liquidityBridgeTokens = [ }, { // BNB - bsc: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + bsc: ADDRESSES.bsc.WBNB, }, { // AVAX - avax: "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + avax: ADDRESSES.avax.WAVAX, }, { // FTM - fantom: "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", + fantom: ADDRESSES.fantom.WFTM, }, { // AMY @@ -437,8 +438,8 @@ const liquidityBridgeTokens = [ }, { // SDN - // origin: "shiden:0x0f933dc137d21ca519ae4c7e93f87a4c8ef365ef", - shiden: "0x0f933dc137d21ca519ae4c7e93f87a4c8ef365ef", + // origin: "shiden:" + ADDRESSES.shiden.WSDN, + shiden: ADDRESSES.shiden.WSDN, }, { // CONV @@ -454,11 +455,11 @@ const liquidityBridgeTokens = [ }, { // AAVE - ethereum: "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + ethereum: ADDRESSES.ethereum.AAVE, }, { // CRV - ethereum: "0xD533a949740bb3306d119CC777fa900bA034cd52", + ethereum: ADDRESSES.ethereum.CRV, }, { // AVG diff --git a/projects/cennz-bridge.js b/projects/cennz-bridge.js index 876e8fd704..b41b7fc308 100644 --- a/projects/cennz-bridge.js +++ b/projects/cennz-bridge.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const target = '0x76BAc85e1E82cd677faa2b3f00C4a2626C4c6E32'; -const WETH = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'; +const WETH = ADDRESSES.ethereum.WETH; async function tvl(timestamp, block) { return { [ WETH ]: diff --git a/projects/cerberusdao/index.js b/projects/cerberusdao/index.js index d034238e30..3c458fb001 100644 --- a/projects/cerberusdao/index.js +++ b/projects/cerberusdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x56D595ea5591D264bc1Ef9E073aF66685F0bFD31" @@ -5,11 +6,11 @@ module.exports = { deadFrom: 1648765747, ...ohmTvl(treasury, [ //SHIB - ["0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", false], + [ADDRESSES.ethereum.INU, false], //FLOKI ["0x43f11c02439e2736800433b4594994bd43cd066d", false], //WETH - ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", false], + [ADDRESSES.ethereum.WETH, false], //uniswap LP shib/weth ["0xb5b6c3816c66fa6bc5b189f49e5b088e2de5082a", true], ], "ethereum", "0x95deaF8dd30380acd6CC5E4E90e5EEf94d258854", "0x8a14897eA5F668f36671678593fAe44Ae23B39FB") diff --git a/projects/cesta/index.js b/projects/cesta/index.js index fef0d9b66c..832e897b16 100644 --- a/projects/cesta/index.js +++ b/projects/cesta/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -8,7 +9,7 @@ async function avax(timestamp, block) { StableAvax: "0xfbE9613a6bd9d28ceF286b01357789b2b02E46f5", StableStable: "0xB103F669E87f67376FB9458A67226f2774a0B4FD", }; - let usd = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; + let usd = ADDRESSES.ethereum.USDC; let [DexAvaxTVL, DexStableTVL, StableAvaxTVL, StableStableTVL] = await Promise.all([ diff --git a/projects/cexdex-stacking/index.js b/projects/cexdex-stacking/index.js index 96700ae095..776be9cfc4 100644 --- a/projects/cexdex-stacking/index.js +++ b/projects/cexdex-stacking/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); -const token_USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f"; -const token_USDT = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; +const token_USDC = ADDRESSES.telos.ETH; +const token_USDT = ADDRESSES.moonriver.USDT; const masterchef = "0x451c3a3594aEB75EDcb13F132dc11D7d2972861A"; module.exports = { diff --git a/projects/channels/index.js b/projects/channels/index.js index 5aa7a75737..63f235ca88 100644 --- a/projects/channels/index.js +++ b/projects/channels/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require('../helper/compound'); const comptroller = { @@ -12,8 +13,8 @@ const ceth = { } const native = { - bsc: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", - heco: "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f", + bsc: ADDRESSES.bsc.WBNB, + heco: ADDRESSES.heco.WHT, } module.exports = { diff --git a/projects/charmfinance/index.js b/projects/charmfinance/index.js index b4ba94cc11..73243beaec 100644 --- a/projects/charmfinance/index.js +++ b/projects/charmfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getConfig } = require('../helper/cache') @@ -6,9 +7,9 @@ const { sumTokens } = require('../helper/unwrapLPs') const vaultAbi = require("./vaultAbi.json"); const cubePoolAbi = require("./cubePoolAbi.json"); -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; -const WBTC = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"; -const ETH = "0x0000000000000000000000000000000000000000"; +const USDC = ADDRESSES.ethereum.USDC; +const WBTC = ADDRESSES.ethereum.WBTC; +const ETH = ADDRESSES.null; const vaults = [ // Old alpha vault - v0 diff --git a/projects/chee-finance/index.js b/projects/chee-finance/index.js index 1448ce46bb..e800c1d8ce 100644 --- a/projects/chee-finance/index.js +++ b/projects/chee-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {compoundExports, compoundExportsWithAsyncTransform} = require('../helper/compound') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); @@ -5,7 +6,7 @@ const BigNumber = require("bignumber.js"); module.exports={ hallmarks: [ ], - celo:compoundExports("0x9BD4Fd10b531ae07437676dfE3FA6f505032CB64", "celo", "0x9de4171EDc1F69EAD07f7595bD3beD62d9215532", "0x471EcE3750Da237f93B8E339c536989b8978a438"), - meter:compoundExports("0xcc0BfaD4e684023B18e0adfEcaEDd800D91dc8B5", "meter", "0xbF5cffE28d3CbA3376Cd02fF12eBECa43Bc3f14A", "0x160361ce13ec33C993b5cCA8f62B6864943eb083"), - bsc:compoundExports("0x0E00Ae24B84148ee93Ce2Cf4F52dE277C91B0B72", "bsc", "0x9437Ea5b08AC7f9dc553861dfE1AA77EE0F2aE69", "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"), + celo:compoundExports("0x9BD4Fd10b531ae07437676dfE3FA6f505032CB64", "celo", "0x9de4171EDc1F69EAD07f7595bD3beD62d9215532", ADDRESSES.celo.CELO), + meter:compoundExports("0xcc0BfaD4e684023B18e0adfEcaEDd800D91dc8B5", "meter", "0xbF5cffE28d3CbA3376Cd02fF12eBECa43Bc3f14A", ADDRESSES.meter.WMTR), + bsc:compoundExports("0x0E00Ae24B84148ee93Ce2Cf4F52dE277C91B0B72", "bsc", "0x9437Ea5b08AC7f9dc553861dfE1AA77EE0F2aE69", ADDRESSES.bsc.WBNB), } \ No newline at end of file diff --git a/projects/cherryswap/index.js b/projects/cherryswap/index.js index 84c4855088..bb0dfa4567 100644 --- a/projects/cherryswap/index.js +++ b/projects/cherryswap/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { getUniTVL } = require('../helper/unknownTokens') -const che = "0x8179d97eb6488860d816e3ecafe694a4153f216c" +const che = ADDRESSES.okexchain.CHE const cheStaking = "0x9Ab8BCf67fE8d8D2aD27D42Ec2A0fD5C206DAE60" module.exports = { diff --git a/projects/chest-finance/index.js b/projects/chest-finance/index.js index b135fac5a9..8ddd3f400a 100644 --- a/projects/chest-finance/index.js +++ b/projects/chest-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, } = require("../helper/solana"); // SOL chest owner: https://solscan.io/account/3SGP67y3XAxZivaz2peNTxS6E44cQXErnEMyBXaCeT2n @@ -5,7 +6,7 @@ const SOL_chest_owner = "3SGP67y3XAxZivaz2peNTxS6E44cQXErnEMyBXaCeT2n"; const mSOL = "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"; const soETH = "2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk"; const BTC = "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E"; -const USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; +const USDC = ADDRESSES.solana.USDC; const CASH = "CASHVDm2wsJXfhj6VWxb7GiMdoLc17Du7paH4bNr5woT"; async function solanaTVL() { diff --git a/projects/chfry/index.js b/projects/chfry/index.js index 728181db31..0da57323d8 100644 --- a/projects/chfry/index.js +++ b/projects/chfry/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abi.json'); const BigNumber = require("bignumber.js"); @@ -12,9 +13,9 @@ const fryerContracts = [ "0x7E271Eb034dFc47B041ADf74b24Fb88E687abA9C", ] -const USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7"; -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDT = ADDRESSES.ethereum.USDT; +const DAI = ADDRESSES.ethereum.DAI; +const USDC = ADDRESSES.ethereum.USDC; async function tvl(timestamp, block) { let balances = {}; diff --git a/projects/chocodoge/index.js b/projects/chocodoge/index.js index 4950129cb7..a6a90fbe16 100644 --- a/projects/chocodoge/index.js +++ b/projects/chocodoge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { unknownTombs, sumTokensExport, } = require('../helper/unknownTokens') const chain = 'dogechain' @@ -24,9 +25,9 @@ module.exports = unknownTombs({ }) module.exports[chain].tvl = sumTokensExport({ chain, owner: genesisPool, tokens: [ - '0x7B4328c127B85369D9f82ca0503B000D09CF9180', + ADDRESSES.dogechain.DC, '0x68609eA0b8393258d0d7EF21401E1Cd3B00A714e', - '0x765277EebeCA2e31912C9946eAe1021199B39C61', - '0xB7ddC6414bf4F5515b52D8BdD69973Ae205ff101', + ADDRESSES.shiden.ETH, + ADDRESSES.dogechain.WWDOGE, ], useDefaultCoreAssets: true, }) module.exports.misrepresentedTokens = true diff --git a/projects/citrus/index.js b/projects/citrus/index.js index 2f6583c0f9..f688d5fda2 100644 --- a/projects/citrus/index.js +++ b/projects/citrus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getProvider, } = require('../helper/solana'); const { Program } = require("@project-serum/anchor"); const { getConfig } = require('../helper/cache'); @@ -38,11 +39,11 @@ async function getStats() { } const tvl = async () => { - return { ['solana:So11111111111111111111111111111111111111112']: (await getStats()).tvl } + return { ['solana:' + ADDRESSES.solana.SOL]: (await getStats()).tvl } }; const borrowed = async () => { - return { ['solana:So11111111111111111111111111111111111111112']: (await getStats()).borrowed } + return { ['solana:' + ADDRESSES.solana.SOL]: (await getStats()).borrowed } } module.exports = { diff --git a/projects/claystack/index.js b/projects/claystack/index.js index 96f0babb2c..eb89a2fac4 100644 --- a/projects/claystack/index.js +++ b/projects/claystack/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./clayABIs/clayMain.json'); @@ -6,7 +7,7 @@ const clayAddresses = { }; const coinAddresses = { - matic: "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", + matic: ADDRESSES.ethereum.MATIC, }; async function getClayMaticTvl(_,block) { diff --git a/projects/cleopatradao.js b/projects/cleopatradao.js index 352cd0379a..78420920ca 100644 --- a/projects/cleopatradao.js +++ b/projects/cleopatradao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { ohmTvl } = require("./helper/ohm"); const cat = "0x48358BfAA1EC39AafCb0786c3e0342Db676Df93E"; @@ -5,7 +6,7 @@ const stakingContract = "0x6636dF51544bAef6B90f4012504B1dfE1eD5e3Fd"; const treasury = "0x10243C6D13875443716ff3E88b7Da7664e431E09"; const treasuryTokens = [ ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], // WAVAX + [ADDRESSES.avax.WAVAX, false], // WAVAX ["0x6a71044647c960afb6bbe758cc444dedfa9349f7", true] // CAT-MIM JLP ] diff --git a/projects/clipper/index.js b/projects/clipper/index.js index e42301b33c..e16e47e7d2 100644 --- a/projects/clipper/index.js +++ b/projects/clipper/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') const { getChainTransform } = require('../helper/portedTokens') const sdk = require('@defillama/sdk') @@ -16,7 +17,7 @@ const chainConfig = { optimism: { chainId: 10, }, arbitrum: { chainId: 42161, }, } -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" +const weth = ADDRESSES.ethereum.WETH const moonbeamGLMR = "moonbeam:0x0000000000000000000000000000000000000802" async function getChainData(chain) { diff --git a/projects/coffin/index.js b/projects/coffin/index.js index 62c49acbc8..142116d8f6 100644 --- a/projects/coffin/index.js +++ b/projects/coffin/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { addFundsInMasterChef } = require("../helper/masterchef"); @@ -7,7 +8,7 @@ const MasterChefV1Contract = "0x155482Bd4e5128082D61a2384935D4BBDcb0E7a7"; const MasterChefV2Contract = "0x2447115E9Ba73bd2877821BF69E09259664a2bd5"; const stakingContract = "0x61Befe6E5f20217960bD8659cd3113CC1ca67d2F"; -const WFTM = "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"; +const WFTM = ADDRESSES.fantom.WFTM; const ftmTvl = async (timestamp, ethBlock, chainBlocks) => { diff --git a/projects/cofix.js b/projects/cofix.js index 8c81e1ff95..f4c958ad54 100644 --- a/projects/cofix.js +++ b/projects/cofix.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens } = require('./helper/unwrapLPs') async function tvl(_, block) { return sumTokens({}, [ - ['0xdac17f958d2ee523a2206206994597c13d831ec7', '0xb2b7bedd7d7fc19804c7dd4a4e8174c4c73c210d'], - ['0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0xb2b7bedd7d7fc19804c7dd4a4e8174c4c73c210d'], + [ADDRESSES.ethereum.USDT, '0xb2b7bedd7d7fc19804c7dd4a4e8174c4c73c210d'], + [ADDRESSES.ethereum.WETH, '0xb2b7bedd7d7fc19804c7dd4a4e8174c4c73c210d'], ['0x0316EB71485b0Ab14103307bf65a021042c6d380', '0x7c2d7b53aca4038f2eb649164181114b9aee93cb'], - ['0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0x7c2d7b53aca4038f2eb649164181114b9aee93cb'], + [ADDRESSES.ethereum.WETH, '0x7c2d7b53aca4038f2eb649164181114b9aee93cb'], ], block) } diff --git a/projects/component/index.js b/projects/component/index.js index a4352aff1f..d5da73cff3 100644 --- a/projects/component/index.js +++ b/projects/component/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const {staking} = require("../helper/staking"); @@ -7,11 +8,11 @@ const ethStakingPool = "0x79876b5062160C107e02826371dD33c047CCF2de"; const translateToken = { '0xFe7ed09C4956f7cdb54eC4ffCB9818Db2D7025b8': "0x1456688345527be1f37e9e627da0837d6f08c925", - '0xFc8B2690F66B46fEC8B3ceeb95fF4Ac35a0054BC': "0x6b175474e89094c44da98b954eedeac495271d0f", + '0xFc8B2690F66B46fEC8B3ceeb95fF4Ac35a0054BC': ADDRESSES.ethereum.DAI, '0xDACD011A71f8c9619642bf482f1D4CeB338cfFCf': "0x1456688345527be1f37e9e627da0837d6f08c925", '0x3129aC70c738D398d1D74c87EAB9483FD56D16f8': "0x1456688345527be1f37e9e627da0837d6f08c925", - '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E': "0x6b175474e89094c44da98b954eedeac495271d0f", - '0x82f0B8B456c1A451378467398982d4834b6829c1': "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3" + [ADDRESSES.fantom.DAI]: ADDRESSES.ethereum.DAI, + [ADDRESSES.fantom.MIM]: "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3" } const ethPools = [ @@ -19,8 +20,8 @@ const ethPools = [ { token: "0x49519631B404E06ca79C9C7b0dC91648D86F08db", underlying: [ - "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, "0x1456688345527bE1f37E9e627DA0837D6f08C925" ] }, @@ -28,7 +29,7 @@ const ethPools = [ token: "0x6477960dd932d29518D7e8087d5Ea3D11E606068", underlying: [ "0x1456688345527bE1f37E9e627DA0837D6f08C925", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", + ADDRESSES.ethereum.DAI, "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51" ] } @@ -39,25 +40,25 @@ const xDaiPools = [ { token: "0x53De001bbfAe8cEcBbD6245817512F8DBd8EEF18", underlying: [ - "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83", + ADDRESSES.xdai.USDC, "0xFe7ed09C4956f7cdb54eC4ffCB9818Db2D7025b8", - "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d" + ADDRESSES.xdai.WXDAI ] }, { token: "0xF82fc0ecBf3ff8e253a262447335d3d8A72CD028", underlying: [ "0xFc8B2690F66B46fEC8B3ceeb95fF4Ac35a0054BC", - "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d" + ADDRESSES.xdai.WXDAI ] }, { token: "0xfbbd0F67cEbCA3252717E66c1Ed1E97ad8B06377", underlying: [ - "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83", + ADDRESSES.xdai.USDC, "0xFc8B2690F66B46fEC8B3ceeb95fF4Ac35a0054BC", "0xD10Cc63531a514BBa7789682E487Add1f15A51E2", - "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d" + ADDRESSES.xdai.WXDAI ] } ] @@ -67,17 +68,17 @@ const bscPools = [ { token: "0xcf76a0ceDf50DA184FDef08A9d04E6829D7FefDF", underlying: [ - "0x55d398326f99059fF775485246999027B3197955", - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.BUSD, "0xDACD011A71f8c9619642bf482f1D4CeB338cfFCf" ] }, { token: "0x3Bb6Bf6EcBC71f8f78D1Eec9c91de4f8Fd5C891c", underlying: [ - "0x55d398326f99059fF775485246999027B3197955", - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDC ] } ] @@ -87,8 +88,8 @@ const ftmPools = [ { token: "0xdDCA02Ddd94f97eeFE07fCcde780fD2FbDc85b23", underlying: [ - "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", + ADDRESSES.fantom.DAI, + ADDRESSES.fantom.USDC, "0x3129aC70c738D398d1D74c87EAB9483FD56D16f8" ] }, @@ -96,7 +97,7 @@ const ftmPools = [ token: "0x238139bF999f389063444e397cDfadF780ec57DB", underlying: [ "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355", - "0x82f0B8B456c1A451378467398982d4834b6829c1", + ADDRESSES.fantom.MIM, "0x3129aC70c738D398d1D74c87EAB9483FD56D16f8" ] } @@ -116,7 +117,7 @@ async function getTvlFromPools(balances, pools, block, chain) { for (let j in underlyingBalances) { if (underlyingBalances[j].input.target === "0xD10Cc63531a514BBa7789682E487Add1f15A51E2") { let bal = new BigNumber(underlyingBalances[j].output).div(10 ** 12).toFixed(0); - sdk.util.sumSingleBalance(balances, "xdai:0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83", bal); + sdk.util.sumSingleBalance(balances, "xdai:" + ADDRESSES.xdai.USDC, bal); } else if (underlyingBalances[j].input.target in translateToken) { sdk.util.sumSingleBalance(balances, translateToken[underlyingBalances[j].input.target], underlyingBalances[j].output); diff --git a/projects/composable/index.js b/projects/composable/index.js index 737d0af02b..46e9157045 100644 --- a/projects/composable/index.js +++ b/projects/composable/index.js @@ -1,20 +1,21 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { chainExports } = require('../helper/exports') const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') const networks = { 'ethereum': ['0xef4439f0fae7db0b5ce88c155fc6af50f1b38728', [ - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', //usdc - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // eth + ADDRESSES.ethereum.USDC, //usdc + ADDRESSES.ethereum.WETH, // eth '0xca3d75ac011bf5ad07a98d02f18225f9bd9a6bdf', // tricrypto ]], 'arbitrum': ['0xEba8C2Bf0d1C9413543188fc42D7323690AED051', [ - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', //usdc - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' //eth + ADDRESSES.arbitrum.USDC, //usdc + ADDRESSES.arbitrum.WETH //eth ]], 'polygon': ['0xcd8e7322dc2659b1ec447e5d52fdd9c67e8c3c01', [ - '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', //usdc - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619' //eth + ADDRESSES.polygon.USDC, //usdc + ADDRESSES.polygon.WETH_1 //eth ]] } diff --git a/projects/compound-onchain/index.js b/projects/compound-onchain/index.js index 3f88b0b7f0..6fdb924fc7 100644 --- a/projects/compound-onchain/index.js +++ b/projects/compound-onchain/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abi.json'); @@ -8,19 +9,19 @@ const { lendingMarket } = require('../helper/methodologies') // cache some data const markets = [ { - underlying: '0x0D8775F648430679A709E98d2b0Cb6250d2887EF', + underlying: ADDRESSES.ethereum.BAT, symbol: 'BAT', decimals: 18, cToken: '0x6C8c6b02E7b2BE14d4fA6022Dfd6d75921D90E4E', }, { - underlying: '0x6B175474E89094C44Da98b954EedeAC495271d0F', + underlying: ADDRESSES.ethereum.DAI, symbol: 'DAI', decimals: 18, cToken: '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', }, { - underlying: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + underlying: ADDRESSES.ethereum.WETH, symbol: 'WETH', decimals: 18, cToken: '0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5', @@ -32,19 +33,19 @@ const markets = [ cToken: '0x158079Ee67Fce2f58472A96584A73C7Ab9AC95c1', }, { - underlying: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + underlying: ADDRESSES.ethereum.USDC, symbol: 'USDC', decimals: 6, cToken: '0x39AA39c021dfbaE8faC545936693aC917d5E7563', }, { - underlying: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + underlying: ADDRESSES.ethereum.USDT, symbol: 'USDT', decimals: 6, cToken: '0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9', }, { - underlying: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', + underlying: ADDRESSES.ethereum.WBTC, symbol: 'WBTC', decimals: 8, cToken: '0xC11b1268C1A384e55C48c2391d8d480264A3A7F4',//cWBTC - legacy @@ -83,7 +84,7 @@ async function getMarkets(block) { } else { const markets = [{ cToken: CTOKEN_WETH, - underlying: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', //cETH => WETH + underlying: ADDRESSES.ethereum.WETH, //cETH => WETH }] const allCTokens = await getAllCTokens(block) diff --git a/projects/compound-v3/index.js b/projects/compound-v3/index.js index 7bba7c94be..530fc2466e 100644 --- a/projects/compound-v3/index.js +++ b/projects/compound-v3/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundV3Exports } = require('../helper/compoundV3') const markets = [ "0xc3d688B66703497DAA19211EEdff47f25384cdc3", // USDC Market @@ -5,8 +6,8 @@ const markets = [ ] const collaterals = [ - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, ] module.exports = compoundV3Exports({ @@ -14,6 +15,6 @@ module.exports = compoundV3Exports({ markets, collaterals, }, polygon: { - markets:["0xF25212E676D1F7F89Cd72fFEe66158f541246445"], collaterals:["0x2791bca1f2de4661ed88a30c99a7a9449aa84174"], + markets:["0xF25212E676D1F7F89Cd72fFEe66158f541246445"], collaterals:[ADDRESSES.polygon.USDC], } }) \ No newline at end of file diff --git a/projects/concave/index.js b/projects/concave/index.js index 014978986d..995209a869 100644 --- a/projects/concave/index.js +++ b/projects/concave/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { ohmTvl } = require('../helper/ohm') const { uniTvlExport } = require('../helper/calculateUniTvl'); @@ -6,11 +7,11 @@ const { genericUnwrapCvx } = require('../helper/unwrapLPs'); // Treasury backing the CNV price, similar to OHM so using the ohm wrapper const treasury = '0x226e7af139a0f34c6771deb252f9988876ac1ced' -const etherAddress = '0x0000000000000000000000000000000000000000' +const etherAddress = ADDRESSES.null const cnv_token = '0x000000007a58f5f58e697e51ab0357bc9e260a04' -const stakingAddress = '0x0000000000000000000000000000000000000000' +const stakingAddress = ADDRESSES.null const treasuryTokens = [ - ['0x6b175474e89094c44da98b954eedeac495271d0f', false], //DAI + [ADDRESSES.ethereum.DAI, false], //DAI // ['0x0ab87046fBb341D058F17CBC4c1133F25a20a52f', false], //gOHM ] const gemSwap_factory = '0x066a5cb7ddc6d55384e2f6ca13d5dd2cd2685cbd' diff --git a/projects/concentrator/index.js b/projects/concentrator/index.js index bd5e17e4a3..b386efb7b6 100644 --- a/projects/concentrator/index.js +++ b/projects/concentrator/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abis/abi.json') const { default: BigNumber } = require("bignumber.js"); @@ -21,7 +22,7 @@ const concentratorAsdCRVAddress = "0x43E54C2E7b3e294De3A155785F52AB49d87B9922" const concentratorNewVault = '0x3Cf54F3A1969be9916DAD548f3C084331C4450b5'; const concentratorAfxsVault = '0xD6E3BB7b1D6Fa75A71d48CFB10096d59ABbf99E1'; const concentratorAfrxETHVault = '0x50B47c4A642231dbe0B411a0B2FBC1EBD129346D'; -const usdtAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"; +const usdtAddress = ADDRESSES.ethereum.USDT; const aladdinBalancerLPGauge = '0x33e411ebE366D72d058F3eF22F1D0Cf8077fDaB0'; const clevCVXAddress = "0xf05e58fCeA29ab4dA01A495140B349F8410Ba904" const clevCVXCVXAddress = "0xF9078Fb962A7D13F55d40d49C8AA6472aBD1A5a6" diff --git a/projects/config/hodltree/addresses.js b/projects/config/hodltree/addresses.js index d28492a311..c011537046 100644 --- a/projects/config/hodltree/addresses.js +++ b/projects/config/hodltree/addresses.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') const { dexType, flashloan, @@ -32,7 +33,7 @@ const eth = [ contractType: lendBorrow.lender, address: '0xb3e1912fa5d9d219da8c65cda407cc998849428b', miscInfo: { - tokenIn: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' + tokenIn: ADDRESSES.ethereum.WETH } }, { contractType: lendBorrow.borrower, @@ -57,9 +58,9 @@ const eth = [ tokensIn: [ '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51', '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd', - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - '0x6B175474E89094C44Da98b954EedeAC495271d0F', - '0x0000000000085d4780B73119b644AE5ecd22b376' + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.TUSD ] } }] @@ -96,13 +97,13 @@ const eth = [ contractType: em.rp, address: '0x87B46E49681E08E3adDF8A90F6a1fb5183079033', miscInfo: { - token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' + token: ADDRESSES.ethereum.USDC } }, { contractType: em.vps, address: '0xcB72e764Ab46535aAD13cbF55b1F06cB15347A95', miscInfo: { - token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' + token: ADDRESSES.ethereum.USDC } }] } @@ -141,9 +142,9 @@ const polygon = [ address: '0xCAFDa65B1031535F1766C6b1E3b5efF5520c7C0f', miscInfo: { tokensIn: [ - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F' + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDT ] } }] diff --git a/projects/config/keys.js b/projects/config/keys.js index 57e42db85c..c77990458b 100644 --- a/projects/config/keys.js +++ b/projects/config/keys.js @@ -1,40 +1,41 @@ +const ADDRESSES = require('../helper/coreAssets.json') let keys = { - '0x514910771af9ca656af840dff83e8264ecf986ca': 'chainlink', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599': 'bitcoin', - '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9': 'aave', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': 'stable', - '0x0000000000085d4780B73119b644AE5ecd22b376': 'stable', - '0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e': 'yearn-finance', //yfi + [ADDRESSES.ethereum.LINK]: 'chainlink', + [ADDRESSES.ethereum.WBTC]: 'bitcoin', + [ADDRESSES.ethereum.AAVE]: 'aave', + [ADDRESSES.ethereum.USDC]: 'stable', + [ADDRESSES.ethereum.TUSD]: 'stable', + [ADDRESSES.ethereum.YFI]: 'yearn-finance', //yfi '0x408e41876cccdc0f92210600ef50372656052a38': 'republic-protocol', //ren '0x80fB784B7eD66730e8b1DBd9820aFD29931aab03': 'ethlend', //lend - '0x4fabb145d64652a948d72533023f6e7a623c7c53': 'stable', //busd - '0xdac17f958d2ee523a2206206994597c13d831ec7': 'stable', //USDT - '0x6b175474e89094c44da98b954eedeac495271d0f': 'stable', //DAI - '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2': 'maker', //makerdao - '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f': 'havven', //SNX + [ADDRESSES.ethereum.BUSD]: 'stable', //busd + [ADDRESSES.ethereum.USDT]: 'stable', //USDT + [ADDRESSES.ethereum.DAI]: 'stable', //DAI + [ADDRESSES.ethereum.MKR]: 'maker', //makerdao + [ADDRESSES.ethereum.SNX]: 'havven', //SNX '0x0f5d2fb29fb7d3cfee444a200298f468908cc942': 'decentraland', //MANA - '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984': 'uniswap', //uni + [ADDRESSES.ethereum.UNI]: 'uniswap', //uni '0xdd974d5c2e2928dea5f71b9825b8b646686bd200': 'kyber-network', //knc '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c': 'enjincoin', //ENJ - '0x0d8775f648430679a709e98d2b0cb6250d2887ef': 'basic-attention-token', //BAT + [ADDRESSES.ethereum.BAT]: 'basic-attention-token', //BAT '0x57ab1ec28d129707052df4df418d58a2d46d5f51': 'stable', //susd '0xe41d2489571d322189246dafa5ebde1f4699f498': '0x', //0x - '0xd533a949740bb3306d119cc777fa900ba034cd52': 'curve-dao-token', + [ADDRESSES.ethereum.CRV]: 'curve-dao-token', '0xc00e94cb662c3520282e6f5717214004a7f26888': 'compound-governance-token', '0x04fa0d235c4abf4bcf4787af4cf447de572ef828': 'uma', '0xd26114cd6ee289accf82350c8d8487fedb8a0c07': 'omisego', '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359': 'sai', - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': 'ethereum', + [ADDRESSES.ethereum.WETH]: 'ethereum', '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643': 'cdai', '0xbc396689893d065f41bc2c6ecbee5e0085233447': 'perpetual-protocol', '0x92e187a03b6cd19cb6af293ba17f2745fd2357d5': 'unit-protocol-duck', '0x2ba592f78db6436527729929aaf6c908497cb200': 'cream', '0x0ae055097c6d159879521c384f1d2123d1f195e6': 'xdai-stake', '0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44': 'keep3rv1', - '0x4e15361fd6b4bb609fa63c81a2be19d873717870': 'fantom', - '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2': 'sushi', + [ADDRESSES.ethereum.FTM]: 'fantom', + [ADDRESSES.ethereum.SUSHI]: 'sushi', '0x4688a8b1f292fdab17e9a90c8bc379dc1dbd8713': 'cover-protocol', '0x3472a5a71965499acd81997a54bba8d852c6e53d': 'badger-dao', '0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2': 'meta', diff --git a/projects/config/mantra-dao/contracts/lp-staking-contracts.js b/projects/config/mantra-dao/contracts/lp-staking-contracts.js index 84156d17dc..9b9e96e592 100644 --- a/projects/config/mantra-dao/contracts/lp-staking-contracts.js +++ b/projects/config/mantra-dao/contracts/lp-staking-contracts.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const lpStakingAssetsETH = [ // LABS-ETH UNI LP simple staking { @@ -5,7 +6,7 @@ const lpStakingAssetsETH = [ pairAddress: "0x2d9fd51e896ff0352cb6d697d13d04c2cb85ca83", token1: "0x2D9FD51E896Ff0352Cb6D697D13D04C2CB85CA83", price1: "labs-group", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, // LABS-ETH UNI LP staking with exit tollbooth @@ -14,7 +15,7 @@ const lpStakingAssetsETH = [ pairAddress: "0x2d9fd51e896ff0352cb6d697d13d04c2cb85ca83", token1: "0x2D9FD51E896Ff0352Cb6D697D13D04C2CB85CA83", price1: "labs-group", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, // MANTRA DAO OM-ETH LP staking @@ -23,7 +24,7 @@ const lpStakingAssetsETH = [ pairAddress: "0xe46935ae80e05cdebd4a4008b6ccaa36d2845370", token1: "0x3593D125a4f7849a1B059E64F4517A86Dd60c95d", price1: "mantra-dao", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, // ROYA-ETH LP staking @@ -32,7 +33,7 @@ const lpStakingAssetsETH = [ pairAddress: "0x6d9d2427cfa49e39b4667c4c3f627e56ae586f37", token1: "0x4Cd4c0eEDb2bC21f4e280d0Fe4C45B17430F94A9", price1: "royale", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, // BITE-ETH LP staking @@ -41,7 +42,7 @@ const lpStakingAssetsETH = [ pairAddress: "0x1f07f8e712659087914b96db4d6f6e4fee32285e", token1: "0x4eed0fa8de12d5a86517f214c2f11586ba2ed88d", price1: "dragonbite", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, // BITE-ETH LP staking w/ tollbooth @@ -50,14 +51,14 @@ const lpStakingAssetsETH = [ pairAddress: "0x1f07f8e712659087914b96db4d6f6e4fee32285e", token1: "0x4eed0fa8de12d5a86517f214c2f11586ba2ed88d", price1: "dragonbite", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, // BBANK-ETH LP staking { contract: "0x6406788d1CD4fdD823ef607A924c00a4244a841d", pairAddress: "0x2a182e532a379cb2c7f1b34ce3f76f3f7d3596f7", - token1: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token1: ADDRESSES.ethereum.WETH, price1: "weth", token2: "0xf4b5470523ccd314c6b9da041076e7d79e0df267", price2: "blockbank", @@ -68,7 +69,7 @@ const lpStakingAssetsETH = [ pairAddress: "0x4fc47579ecf6aa76677ee142b6b75faf9eeafba8", token1: "0x5eaa69b29f99c84fe5de8200340b4e9b4ab38eac", price1: "raze-network", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, // BCUBE-ETH LP staking @@ -77,7 +78,7 @@ const lpStakingAssetsETH = [ pairAddress: "0xc62bf2c79f34ff24e2f97982af4f064161ed8949", token1: "0x93c9175e26f57d2888c7df8b470c9eea5c0b0a93", price1: "b-cube-ai", - token2: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token2: ADDRESSES.ethereum.WETH, price2: "weth", }, ]; @@ -90,14 +91,14 @@ const lpStakingAssetsBSC = [ pairAddress: "0xC309a6d2F1537922E06f15aA2eb21CaA1b2eEDb6", token1: "0x4e6415a5727ea08aae4580057187923aec331227", price1: "refinable", - token2: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token2: ADDRESSES.bsc.WBNB, price2: "wbnb", }, // OM-BNB LP staking { contract: "0xcbf42ace1dbd895ffdcabc1b841488542626014d", pairAddress: "0x49837a48abde7c525bdc86d9acba39f739cbe22c", - token1: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token1: ADDRESSES.bsc.WBNB, price1: "wbnb", token2: "0xf78d2e7936f5fe18308a3b2951a93b6c4a41f5e2", price2: "mantra-dao", @@ -108,14 +109,14 @@ const lpStakingAssetsBSC = [ pairAddress: "0x0b49580278b403ca13055bf4d81b6b7aa85fd8b9", token1: "0x0e2b41ea957624a314108cc4e33703e9d78f4b3c", price1: "greenheart-cbd", - token2: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token2: ADDRESSES.bsc.WBNB, price2: "wbnb", }, // BBANK-BNB LP staking { contract: "0x1E8BC897bf03ebac570Df7e5526561f8a42eCe05", pairAddress: "0x538e61bd3258304e9970f4f2db37a217f60436e1", - token1: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token1: ADDRESSES.bsc.WBNB, price1: "wbnb", token2: "0xf4b5470523ccd314c6b9da041076e7d79e0df267", price2: "blockbank", @@ -126,7 +127,7 @@ const lpStakingAssetsBSC = [ pairAddress: "0xb8b4383b49d451bbea63bc4421466e1086da6f18", token1: "0x96058f8c3e16576d9bd68766f3836d9a33158f89", price1: "bondly", - token2: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + token2: ADDRESSES.bsc.WBNB, price2: "wbnb", }, // MIST-BNB LP staking @@ -135,7 +136,7 @@ const lpStakingAssetsBSC = [ pairAddress: "0x5a26eb7c9c72140d01039eb172dcb8ec98d071bd", token1: "0x68e374f856bf25468d365e539b700b648bf94b67", price1: "mist", - token2: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token2: ADDRESSES.bsc.WBNB, price2: "wbnb", }, // ROSN-BNB LP staking @@ -144,7 +145,7 @@ const lpStakingAssetsBSC = [ pairAddress: "0x5548bd47293171d3bc1621edccd953bcc9b814cb", token1: "0x651Cd665bD558175A956fb3D72206eA08Eb3dF5b", price1: "roseon-finance", - token2: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token2: ADDRESSES.bsc.WBNB, price2: "wbnb", }, // MLT-BNB LP staking @@ -153,14 +154,14 @@ const lpStakingAssetsBSC = [ pairAddress: "0x560b96f81a2190ff6ac84ebfd17788bab3679cbc", token1: "0x4518231a8fdf6ac553b9bbd51bbb86825b583263", price1: "media-licensing-token", - token2: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token2: ADDRESSES.bsc.WBNB, price2: "wbnb", }, // L3P-BNB LP staking { contract: "0x3ba3E2f3cACcDbE3C56D3046FFe859cc9deE08a0", pairAddress: "0xB62c57Bda4C126E21A726e3D28734bfb1151231e", - token1: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + token1: ADDRESSES.bsc.WBNB, price1: "wbnb", token2: "0xdeF1da03061DDd2A5Ef6c59220C135dec623116d", price2: "lepricon", @@ -173,7 +174,7 @@ const lpStakingAssetsPOLYGON = [ { contract: "0xCBf42Ace1dBD895FFDCaBC1b841488542626014d", pairAddress: "0xff2bbcb399ad50bbd06debadd47d290933ae1038", - token1: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + token1: ADDRESSES.polygon.WETH_1, price1: "weth", token2: "0xC3Ec80343D2bae2F8E680FDADDe7C17E71E114ea", price2: "mantra-dao", @@ -184,7 +185,7 @@ const lpStakingAssetsPOLYGON = [ pairAddress: "0x1dF661fC4319415a2f990bd5F49D5cA70EFDee1C", token1: "0x3f6b3595ecF70735D3f48D69b09C4E4506DB3F47", price1: "gamestation", - token2: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + token2: ADDRESSES.polygon.WETH_1, price2: "weth", }, ]; diff --git a/projects/config/onx/constant.js b/projects/config/onx/constant.js index 419e9a7bc8..6ba33a7187 100644 --- a/projects/config/onx/constant.js +++ b/projects/config/onx/constant.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') const tokenAddresses = { onx: "0xe0ad1806fd3e7edf6ff52fdb822432e847411033", sOnx: "0xa99f0ad2a539b2867fcfea47f7e71f240940b47c", @@ -10,14 +11,14 @@ const tokenAddresses = { pool: "0x47F3E6C1Ef0cBe69502167095b592e61de108BaA", aethToken: "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb", onsToken: "0xfC97C0c12438B6E4CF246cD831b02FeF4950DCAD", - daiToken: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + daiToken: ADDRESSES.ethereum.DAI, fraxToken: "0x853d955acef822db058eb8505911ed77f175b99e", - usdcToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + usdcToken: ADDRESSES.ethereum.USDC, aethPairEth: "0x6147805e1011417B93e5D693424a62A70d09d0E5", aethPairOns: "0x5022BbC26B3Bc8c8d2F1F7dB9ee3A2B4631b9b18", aethPairOne: "0x5BD4D1f8D46Ad6ae1e6b694eb64f7583C1cB1A74", oneVault: "0x3BdF1977d87EDAD8e0617efCEa958F6d43A4C30E", - wethToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + wethToken: ADDRESSES.ethereum.WETH, bondPairEth: "0xb17b1342579e4bce6b6e9a426092ea57d33843d9", sushiPairEth: "0xce84867c3c02b05dc570d0135103d3fb9cc19433", fantom: { diff --git a/projects/config/onx/ethereum/farms.js b/projects/config/onx/ethereum/farms.js index 0a0720a4c2..414bd79bb8 100644 --- a/projects/config/onx/ethereum/farms.js +++ b/projects/config/onx/ethereum/farms.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const rawFarms = [ {//0 @@ -28,7 +29,7 @@ const rawFarms = [ subTokenSymbol1: 'ANKR', subTokenSymbol2: 'ANKR', subTokenAddresses1: '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb', - subTokenAddresses2: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + subTokenAddresses2: ADDRESSES.ethereum.USDC, }, {//3 title: 'onxEthSlpMulti', diff --git a/projects/config/smoothy/abis.js b/projects/config/smoothy/abis.js index eee78fccfc..747c8dc3e7 100644 --- a/projects/config/smoothy/abis.js +++ b/projects/config/smoothy/abis.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') let abis = {}; abis.smoothy = { @@ -9,25 +10,25 @@ abis.smoothy = { abis.tokens = [ { symbol: "USDT", - address: "0xdac17f958d2ee523a2206206994597c13d831ec7", + address: ADDRESSES.ethereum.USDT, id: 0, decimals: 6, }, { symbol: "USDC", - address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + address: ADDRESSES.ethereum.USDC, id: 1, decimals: 6, }, { symbol: "DAI", - address: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + address: ADDRESSES.ethereum.DAI, id: 2, decimals: 18, }, { symbol: "TUSD", - address: "0x0000000000085d4780B73119b644AE5ecd22b376", + address: ADDRESSES.ethereum.TUSD, id: 3, decimals: 18, }, @@ -39,7 +40,7 @@ abis.tokens = [ }, { symbol: "BUSD", - address: "0x4fabb145d64652a948d72533023f6e7a623c7c53", + address: ADDRESSES.ethereum.BUSD, id: 5, decimals: 18, }, diff --git a/projects/connext/old.js b/projects/connext/old.js index b1f9a708d1..fb8ca75713 100644 --- a/projects/connext/old.js +++ b/projects/connext/old.js @@ -1,19 +1,20 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abi.json'); const BigNumber = require('bignumber.js') // V1 const hubAddress = '0xdfa6edAe2EC0cF1d4A60542422724A48195A5071'; -const tokenDenominationAddress = '0x6b175474e89094c44da98b954eedeac495271d0f'; +const tokenDenominationAddress = ADDRESSES.ethereum.DAI; //V3 const routers = ['0xe3cF69b86F274a14B87946bf641f11Ac837f4492', '0xe6887c0cc3c37cb2ee34Bc58AB258f36825CA910', '0xE540998865aFEB054021dc849Cc6191b8E09dC08', '0xC6C68811E75EfD86d012587849F1A1D30427361d'] -const ethereumTokens = ['0xdAC17F958D2ee523a2206206994597C13D831ec7', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', '0x6b175474e89094c44da98b954eedeac495271d0f'] -const bscTokens = ['0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', '0x55d398326f99059fF775485246999027B3197955', '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d'] +const ethereumTokens = [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.MATIC, '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', ADDRESSES.ethereum.DAI] +const bscTokens = ['0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC] const polygonSettings = { nativeCoin: 'matic-network', tokens: [ { - address: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + address: ADDRESSES.polygon.DAI, coingeckoId: 'dai', }, { @@ -21,11 +22,11 @@ const polygonSettings = { coingeckoId: 'decentraland' }, { - address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + address: ADDRESSES.polygon.USDT, coingeckoId: 'tether' }, { - address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + address: ADDRESSES.polygon.USDC, coingeckoId: 'usd-coin' } ] @@ -34,11 +35,11 @@ const xdaiSettings = { nativeCoin: 'dai', tokens: [ { - address: '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83', + address: ADDRESSES.xdai.USDC, coingeckoId: 'usd-coin' }, { - address: '0x4ECaBa5870353805a9F068101A40E0f32ed605C6', + address: ADDRESSES.xdai.USDT, coingeckoId: 'tether' }, ] diff --git a/projects/convex/index.js b/projects/convex/index.js index 5bb60c34a3..579515f003 100644 --- a/projects/convex/index.js +++ b/projects/convex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const ABI = require('./abi.json') const { sumTokensExport } = require('../helper/unwrapLPs') @@ -6,7 +7,7 @@ const boosterAddress = "0xF403C135812408BFbE8713b5A23a04b3D48AAE31"; const staker = '0x989aeb4d175e16225e39e87d0d97a3360524ad80' const cvxAddress = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; const cvxRewardsAddress = "0xCF50b810E57Ac33B91dCF525C6ddd9881B139332"; -const crvAddress = "0xd533a949740bb3306d119cc777fa900ba034cd52"; +const crvAddress = ADDRESSES.ethereum.CRV; const arbiPoolInfoABI = 'function poolInfo(uint256) view returns (address lptoken, address gauge, address rewards, bool shutdown, address factory)' diff --git a/projects/convex/pools-crv.js b/projects/convex/pools-crv.js index 8f723d13e0..06082a5be6 100644 --- a/projects/convex/pools-crv.js +++ b/projects/convex/pools-crv.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const REFERENCE_ASSETS = {}; const coins = {}; @@ -761,7 +762,7 @@ module.exports = [{ referenceAsset: REFERENCE_ASSETS.EUR, oldAdditionalRewards: [{ name: 'SNX', - rewardTokenAddress: '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F', + rewardTokenAddress: ADDRESSES.ethereum.SNX, rewardTokenDecimals: 18, rewardTokenCoingeckoId: 'havven', }], @@ -856,7 +857,7 @@ module.exports = [{ additionalRewards: [{ name: 'LDO', amountDataKey: 'ldoRewards', - rewardTokenAddress: '0x5a98fcbea516cf06857215779fd812ca3bef1b32', + rewardTokenAddress: ADDRESSES.ethereum.LIDO, rewardTokenDecimals: 18, rewardTokenCoingeckoId: 'lido-dao', }], diff --git a/projects/core/index.js b/projects/core/index.js index 4fa98fb865..6409055e0e 100644 --- a/projects/core/index.js +++ b/projects/core/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') // cVault UniV2 pairs @@ -16,15 +17,15 @@ const WCORE = '0x17B8c1A92B66b1CF3092C5d223Cb3a129023b669' // wCORE // ERC20 Tokens const COREDAO = '0xf66cd2f8755a21d3c8683a10269f795c0532dd58' // coreDAO -const DAI = '0x6B175474E89094C44Da98b954EedeAC495271d0F' // DAI +const DAI = ADDRESSES.ethereum.DAI // DAI const DELTA = '0x9EA3b5b4EC044b70375236A281986106457b20EF' // DELTA const FANNY = '0x8ad66f7e0e3e3dc331d3dbf2c662d7ae293c1fe0' // FANNY const CORE = '0x62359ed7505efc61ff1d56fef82158ccaffa23d7' // CORE const DELTA_RLP = '0xfcfc434ee5bff924222e084a8876eee74ea7cfba' // DELTA rLP -const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' // wETH -const USDC = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -const USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7" -const WBTC = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" +const WETH = ADDRESSES.ethereum.WETH // wETH +const USDC = ADDRESSES.ethereum.USDC +const USDT = ADDRESSES.ethereum.USDT +const WBTC = ADDRESSES.ethereum.WBTC // Ecosystem contracts const CORE_DEPLOYER = '0x5a16552f59ea34e44ec81e58b3817833e9fd5436' // CoreVault Deployer/Multisig diff --git a/projects/cover.js b/projects/cover.js index 4eb50307a2..527841ea42 100644 --- a/projects/cover.js +++ b/projects/cover.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abis = require('./config/cover/cover.js') const { sumTokens } = require('./helper/unwrapLPs'); @@ -21,7 +22,7 @@ async function tvl(ts, block) { protocolDetails.forEach(({ output }) => { output._allCovers.forEach(cover => toa.push( - ['0x6b175474e89094c44da98b954eedeac495271d0f', cover], // DAI + [ADDRESSES.ethereum.DAI, cover], // DAI ['0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01', cover], // yearn DAI )) }) diff --git a/projects/covo-v2/index.js b/projects/covo-v2/index.js index e876f05cb0..5e33071e65 100644 --- a/projects/covo-v2/index.js +++ b/projects/covo-v2/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') const fundStore = "0xED29cB1b164dd7EA1c5065E79a15dA31EC34327B"; @@ -7,7 +8,7 @@ module.exports = { polygon: { tvl: sumTokensExport({ owners: [fundStore], tokens: [ nullAddress, - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',//USDC + ADDRESSES.polygon.USDC,//USDC ]}), staking: sumTokensExport({ owners: [fundStore], tokens: [covo]}) }, diff --git a/projects/cozy/index.js b/projects/cozy/index.js index ea995626fe..f9dba73acf 100644 --- a/projects/cozy/index.js +++ b/projects/cozy/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {compoundExports} = require('../helper/compound') const transform = addr=>{ if(addr==="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"){ - return "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + return ADDRESSES.ethereum.WETH } return addr } diff --git a/projects/crafting/index.js b/projects/crafting/index.js index 3dc5511c0b..de35652d11 100644 --- a/projects/crafting/index.js +++ b/projects/crafting/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const contractStakingETH = "0x9353177049757A21f19a28C3055c03871e6428cf"; -const ETH = "0x0000000000000000000000000000000000000000"; +const ETH = ADDRESSES.null; const contractAddresses = [ //Staking Contract wbtc @@ -14,8 +15,8 @@ const contractAddresses = [ ]; const tokens = [ - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0xdac17f958d2ee523a2206206994597c13d831ec7", + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.USDT, "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", ]; @@ -27,8 +28,8 @@ const contractAddresses_aurora = [ ]; const tokens_aurora = [ - "0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79", - "0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d", + ADDRESSES.aurora.AURORA, + ADDRESSES.aurora.NEAR, ]; async function ethTvl(timestamp, block) { diff --git a/projects/cream/index.js b/projects/cream/index.js index e1b727a71f..210b7b1b20 100644 --- a/projects/cream/index.js +++ b/projects/cream/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const utils = require("../helper/utils"); const { unwrapUniswapLPs, nullAddress } = require("../helper/unwrapLPs"); @@ -10,13 +11,13 @@ const abiCereth2 = require("./creth2.json"); const BigNumber = require("bignumber.js"); // -const wETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const wETH = ADDRESSES.ethereum.WETH; const CRETH2 = "0xcBc1065255cBc3aB41a6868c22d1f1C573AB89fd"; const crvIB = "0x27b7b1ad7288079A66d12350c828D3C00A6F07d7"; const replacements = { "0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7": wETH, // yWETH -> WETH - //'0x27b7b1ad7288079A66d12350c828D3C00A6F07d7': '0x6b175474e89094c44da98b954eedeac495271d0f', // yearn: yCRV-IB -> DAI + //'0x27b7b1ad7288079A66d12350c828D3C00A6F07d7': ADDRESSES.ethereum.DAI, // yearn: yCRV-IB -> DAI "0x986b4AFF588a109c09B50A03f42E4110E29D353F": wETH, // yearn: yCRV/sETH "0xdCD90C7f6324cfa40d7169ef80b12031770B4325": wETH, // yearn: yCRV/stETH "0x9cA85572E6A3EbF24dEDd195623F188735A5179f": @@ -56,7 +57,7 @@ async function ethereumTvl(timestamp, block) { // It's ETH sdk.util.sumSingleBalance( balances, - "0x0000000000000000000000000000000000000000", + ADDRESSES.null, cashVal.output ); } else if ( @@ -140,7 +141,7 @@ async function lending(block, chain, borrowed) { } else if (tokens_bsc[idx].symbol === "crBNB") { sdk.util.sumSingleBalance( balances, - "bsc:0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + "bsc:" + ADDRESSES.bsc.WBNB, cashVal.output ); // BNB } else { @@ -163,7 +164,7 @@ const bscTvl = async (timestamp, ethBlock, chainBlocks) => { sdk.util.sumSingleBalance( balances, - "bsc:0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", // -- Apparently it auto-merges balances (check on output) --- + "bsc:" + ADDRESSES.bsc.WBNB, // -- Apparently it auto-merges balances (check on output) --- BigNumber(bsc_staking_service.data.votingPower) .multipliedBy(10 ** 18) .toFixed(0) @@ -189,7 +190,7 @@ module.exports = { bsc: { tvl: bscTvl, borrowed: bscBorrowed - //getCompoundV2Tvl("0x589de0f0ccf905477646599bb3e5c622c84cc0ba", "bsc", addr=>`bsc:${addr}`, "0x1Ffe17B99b439bE0aFC831239dDECda2A790fF3A", "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", true), + //getCompoundV2Tvl("0x589de0f0ccf905477646599bb3e5c622c84cc0ba", "bsc", addr=>`bsc:${addr}`, "0x1Ffe17B99b439bE0aFC831239dDECda2A790fF3A", ADDRESSES.bsc.WBNB, true), }, // ethereum:compoundExports("0x3d5BC3c8d13dcB8bF317092d84783c2697AE9258", "ethereum", "0xd06527d5e56a3495252a528c4987003b712860ee", nullAddress), polygon: compoundExports("0x20ca53e2395fa571798623f1cfbd11fe2c114c24", "polygon"), diff --git a/projects/creamswap/index.js b/projects/creamswap/index.js index 6269c07821..dcbbe23f00 100644 --- a/projects/creamswap/index.js +++ b/projects/creamswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -12,8 +13,8 @@ const { getLogs } = require('../helper/cache/getLogs') Settings ==================================================*/ -const wETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; -const usdt = '0xdAC17F958D2ee523a2206206994597C13D831ec7'; +const wETH = ADDRESSES.ethereum.WETH; +const usdt = ADDRESSES.ethereum.USDT; const yyCrv = '0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c'; const yETH = '0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7'; const crYFI = '0xCbaE0A83f4f9926997c8339545fb8eE32eDc6b76'; @@ -32,7 +33,7 @@ function isCrToken(address) { async function tvl(timestamp, block, _, { api }) { let balances = { - '0x0000000000000000000000000000000000000000': '0', // ETH + [ADDRESSES.null]: '0', // ETH }; let poolLogs = (await Promise.all([ diff --git a/projects/creditum/index.js b/projects/creditum/index.js index 501c0fb0cf..8622d2cad5 100644 --- a/projects/creditum/index.js +++ b/projects/creditum/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakingPricedLP } = require("../helper/staking"); const { sumTokensSharedOwners } = require("../helper/unwrapLPs"); const { pool2 } = require("../helper/pool2"); @@ -9,11 +10,11 @@ async function tvl(time, ethBlock, chainBlocks){ const chain = 'fantom' const block = chainBlocks[chain] const balances = {} - const transform = addr=> addr==="0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e"?"0x6b175474e89094c44da98b954eedeac495271d0f":`${chain}:${addr}` + const transform = addr=> addr===ADDRESSES.fantom.DAI?[ADDRESSES.ethereum.DAI]:`${chain}:${addr}` await sumTokensSharedOwners(balances, [ - "0x04068da6c83afcfa0e13ba15a6696662335d5b75", - "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", - "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", + ADDRESSES.fantom.USDC, + ADDRESSES.fantom.WFTM, + ADDRESSES.fantom.DAI, "0x321162Cd933E2Be498Cd2267a90534A804051b11", "0x74b23882a30290451A17c44f4F05243b6b58C76d" ], [lending], block, chain, transform) diff --git a/projects/credix/index.js b/projects/credix/index.js index 54c1290b4e..c8419f33c0 100644 --- a/projects/credix/index.js +++ b/projects/credix/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require("bignumber.js"); const { PublicKey } = require("@solana/web3.js"); const { Program, utils } = require("@project-serum/anchor"); @@ -6,7 +7,7 @@ const { getProvider, sumTokens2 } = require("../helper/solana"); const MAX_NUMBER_OF_ACCOUNT_INFOS = 99; const MARKET_SEED = "credix-marketplace"; const IDL = require("./credix.json"); -const USDC = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' +const USDC = ADDRESSES.solana.USDC const programId = new PublicKey("CRDx2YkdtYtGZXGHZ59wNv1EwKHQndnRc1gT4p8i2vPX"); const encodeSeedString = (seedString) => Buffer.from(utils.bytes.utf8.encode(seedString)); diff --git a/projects/crosschainbridge/index.js b/projects/crosschainbridge/index.js index 4ae85c47eb..07738b6603 100644 --- a/projects/crosschainbridge/index.js +++ b/projects/crosschainbridge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); @@ -32,13 +33,13 @@ const tokens = { TXL: "0x8eEF5a82E6Aa222a60F009ac18c24EE12dBf4b41", BRIDGE: "0x92868a5255c628da08f550a858a802f5351c5223", // Stablecoins - BUSD: "0x4Fabb145d64652a948d72533023f6E7A623C7C53", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", - USDC: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - USDT: "0xdac17f958d2ee523a2206206994597c13d831ec7", + BUSD: ADDRESSES.ethereum.BUSD, + DAI: ADDRESSES.ethereum.DAI, + USDC: ADDRESSES.ethereum.USDC, + USDT: ADDRESSES.ethereum.USDT, // Network Tokens - WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - WMATIC: "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", + WETH: ADDRESSES.ethereum.WETH, + WMATIC: ADDRESSES.ethereum.MATIC, // Further tokens BULK: "0xa143ac515dca260a46c742c7251ef3b268639593", DAX: "0x77e9618179820961ee99a988983bc9ab41ff3112", @@ -57,12 +58,12 @@ const tokens = { TXL: "0x1ffd0b47127fdd4097e54521c9e2c7f0d66aafc5", BRIDGE: "0x92868a5255c628da08f550a858a802f5351c5223", // Stablecoins - BUSD: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + BUSD: ADDRESSES.bsc.BUSD, DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - USDC: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - USDT: "0x55d398326f99059fF775485246999027B3197955", + USDC: ADDRESSES.bsc.USDC, + USDT: ADDRESSES.bsc.USDT, // Network Tokens - WETH: "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + WETH: ADDRESSES.bsc.ETH, WMATIC: "0xcc42724c6683b7e57334c4e856f4c9965ed682bd", // Further tokens ARNX: "0x0c37bcf456bc661c14d596683325623076d7e283", @@ -90,11 +91,11 @@ const tokens = { BRIDGE: "0x92868a5255c628da08f550a858a802f5351c5223", // Stablecoins BUSD: "0xdab529f40e671a1d4bf91361c21bf9f0c9712ab7", - DAI: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - USDC: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - USDT: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + DAI: ADDRESSES.polygon.DAI, + USDC: ADDRESSES.polygon.USDC, + USDT: ADDRESSES.polygon.USDT, // Network Tokens - WETH: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + WETH: ADDRESSES.polygon.WETH_1, WMATIC: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", // Further tokens DAF: "0x2f0e07e881363bb1cdff32971b2f8c87ef8ff432", @@ -106,17 +107,17 @@ const tokens = { // Project tokens BRIDGE: "0xC0367f9b1f84Ca8DE127226AC2A994EA4bf1e41b", // Stablecoins - USDC: "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", - USDT: "0xc7198437980c041c805a1edcba50c1ce5db95118", + USDC: ADDRESSES.avax.USDC_e, + USDT: ADDRESSES.avax.USDT_e, // Network Tokens - WETH: "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", + WETH: ADDRESSES.avax.WETH_e, }, fantom: { // Project tokens BRIDGE: "0x92868A5255C628dA08F550a858A802f5351C5223", // Stablecoins - USDC: "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", - USDT: "0x049d68029688eabf473097a2fc38ef61633a3c7a", + USDC: ADDRESSES.fantom.USDC, + USDT: ADDRESSES.fantom.fUSDT, // Network Tokens WETH: "0x74b23882a30290451A17c44f4F05243b6b58C76d", } diff --git a/projects/cryptex-finance/index.js b/projects/cryptex-finance/index.js index 437b72c784..db1040300f 100755 --- a/projects/cryptex-finance/index.js +++ b/projects/cryptex-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokensSharedOwners} = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); @@ -25,10 +26,10 @@ const ethVaults = [ ] const ethCollaterals = [ - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH - "0x6B175474E89094C44Da98b954EedeAC495271d0F", // DAI - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // WBTC + ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.WBTC, // WBTC ] const optVaults = [ @@ -40,8 +41,8 @@ const optVaults = [ ] const optCollaterals = [ - "0x4200000000000000000000000000000000000006", // WETH - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", // DAI + ADDRESSES.tombchain.FTM, // WETH + ADDRESSES.optimism.DAI, // DAI "0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6", // LINK "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", // SNX "0x6fd9d7AD17242c41f7131d257212c54A0e816691" // UNI @@ -61,7 +62,7 @@ async function optTvl(timestamp, block, chainBlocks) { const treasuryAddress = "0xa54074b2cc0e96a43048d4a68472F7F046aC0DA8"; const treasuryContents = [ - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + ADDRESSES.ethereum.USDC ] const optTreasury = "0x271901c3268D0959bbc9543DE4f073D3708C88F7"; @@ -71,7 +72,7 @@ async function treasury(timestamp, block) { target: treasuryAddress, block, })).output; - sdk.util.sumSingleBalance(balances, "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", ethBal); + sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.WETH, ethBal); await sumTokensSharedOwners(balances, treasuryContents, [treasuryAddress], block); return balances; } diff --git a/projects/curve/index.js b/projects/curve/index.js index 70f3ba5513..de3e41c888 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensSharedOwners, nullAddress, sumTokens2, } = require("../helper/unwrapLPs"); const { getChainTransform } = require("../helper/portedTokens"); const { getCache } = require("../helper/http"); @@ -38,7 +39,7 @@ async function getDecimals(chain, token) { const gasTokens = [ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - '0x0000000000000000000000000000000000000000', + ADDRESSES.null, ] async function getNames(chain, tokens) { diff --git a/projects/cvi/index.js b/projects/cvi/index.js index fa3d0b082c..7e1ca8a1c2 100644 --- a/projects/cvi/index.js +++ b/projects/cvi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking, stakings } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -34,9 +35,9 @@ const platformLiquidityContracts = [ "0xe6e5220291CF78b6D93bd1d08D746ABbC115C64b", ]; -const USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7"; -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDT = ADDRESSES.ethereum.USDT; +const WETH = ADDRESSES.ethereum.WETH; +const USDC = ADDRESSES.ethereum.USDC; const ETHVOL_USDC_UNIV2 = "0x197e99bD87F98DFde461afE3F706dE36c9635a5D"; const WETH_COTI_UNIV2 = "0xA2b04F8133fC25887A436812eaE384e32A8A84F2"; @@ -60,8 +61,8 @@ const platformLiquidityContracts_polygon = [ //liquidty Mining CVOL-USDC "0xEA7b8DC5615e049417C80C795eA652556971c423", ]; -const USDT_Polygon = "0xc2132d05d31c914a87c6611c10748aeb04b58e8f"; -const USDC_Polygon = "0x2791bca1f2de4661ed88a30c99a7a9449aa84174"; +const USDT_Polygon = ADDRESSES.polygon.USDT; +const USDC_Polygon = ADDRESSES.polygon.USDC; const CVOL_USDC_QLP = "0x1dd0095a169e8398448A8e72f15A1868d99D9348"; /*** Arbitrum Addresses ***/ diff --git a/projects/cyclone/index.js b/projects/cyclone/index.js index e55c6af993..8cd0043ec5 100644 --- a/projects/cyclone/index.js +++ b/projects/cyclone/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const contracts = require("./contracts.json"); const { pool2 } = require("./../helper/pool2"); const { staking } = require(".././helper/staking.js"); @@ -5,7 +6,7 @@ const { sumLPWithOnlyOneTokenOtherThanKnown, sumTokens2, nullAddress } = require("./../helper/unwrapLPs"); -const wiotx = "0xA00744882684C3e4747faEFD68D283eA44099D03"; +const wiotx = ADDRESSES.iotex.WIOTX; function tvl(chain, gasToken) { return async (timestamp, block, chainBlocks) => { @@ -32,7 +33,7 @@ async function iotexPool2(timestamp, block, chainBlocks) { balances, contracts.iotex.pool2.token, contracts.iotex.pool2.address, - "0x4d7b88403aa2f502bf289584160db01ca442426c", + ADDRESSES.iotex.CYC, block, "iotex" ); @@ -52,7 +53,7 @@ module.exports = { ), }, ethereum: { - tvl: tvl("ethereum", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"), + tvl: tvl("ethereum", ADDRESSES.ethereum.WETH), pool2: pool2( contracts.ethereum.pool2.address, contracts.ethereum.pool2.token, @@ -60,7 +61,7 @@ module.exports = { ), }, bsc: { - tvl: tvl("bsc", "bsc:0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c"), + tvl: tvl("bsc", "bsc:" + ADDRESSES.bsc.WBNB), pool2: pool2(contracts.bsc.pool2.address, contracts.bsc.pool2.token, "bsc"), staking: staking( contracts.bsc.staking.address, diff --git a/projects/dam-finance/index.js b/projects/dam-finance/index.js index 3741b00097..e0be38c63a 100644 --- a/projects/dam-finance/index.js +++ b/projects/dam-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const ethCollateralJoins = ["0xB1fbcD7415F9177F5EBD3d9700eD5F15B476a5Fe"] @@ -6,7 +7,7 @@ module.exports = { start: 16375673, // LMCV Deployment Block ethereum: { tvl: sumTokensExport({ - tokens: ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'], + tokens: [ADDRESSES.ethereum.USDC], owners: ethCollateralJoins }) } diff --git a/projects/damm-finance/index.js b/projects/damm-finance/index.js index c1857b7111..3325faabd2 100644 --- a/projects/damm-finance/index.js +++ b/projects/damm-finance/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require('../helper/compound') -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" +const WETH = ADDRESSES.ethereum.WETH const bETH = "0xe970c37243F3d0B2AeB041b855Ef6466CB140BcA" const unitroller = "0x4F96AB61520a6636331a48A11eaFBA8FB51f74e4" diff --git a/projects/darkness/index.js b/projects/darkness/index.js index 96e86fef99..ac1f3dce8c 100644 --- a/projects/darkness/index.js +++ b/projects/darkness/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const masterChef = "0x63Df75d039f7d7A8eE4A9276d6A9fE7990D7A6C5"; const ness = "0xe727240728c1a5f95437b8b50afdd0ea4ae5f0c8"; const nessroom = "0xA93248C548Ac26152F3b4F201C9101f4e032074e"; @@ -11,11 +12,11 @@ module.exports = { tokens: [ '0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23', '0xf2001b145b43032aaf5ee2884e456ccd805f677d', - '0xc21223249ca28397b4b6541dffaecc539bff0c59', + ADDRESSES.cronos.USDC, '0x6582c738660bf0701f05b04dce3c4e5fcfcda47a', - '0x66e428c3f67a68878562e79a0234c1f83c208770', + ADDRESSES.cronos.USDT, '0x83b2ac8642ae46fc2823bc959ffeb3c1742c48b5', - '0x062e66477faf219f25d27dced647bf57c3107d52', + ADDRESSES.cronos.WBTC, '0x9d3bbb0e988d9fb2d55d07fe471be2266ad9c81c', '0x1ecaf6a3551e5822f142c9689d8f36a9b5f68217', '0xfa202a63234a7089eddbfeee83c378ba248f0e9a', diff --git a/projects/darumadao/index.js b/projects/darumadao/index.js index 1f49f58c47..d140066159 100644 --- a/projects/darumadao/index.js +++ b/projects/darumadao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const { default: BigNumber } = require("bignumber.js") const { toUSDTBalances } = require('../helper/balances') @@ -5,7 +6,7 @@ const { toUSDTBalances } = require('../helper/balances') const chain = 'godwoken' const STAKING_ADDRESS = '0x31A7D9c604C87F7aA490A350Ef8DF170dC2233AA' const DRM_ADDRESS = '0x81E60A955DC8c4d25535C358fcFE979351d102B5' -const USDC_ADDRESS = '0xc3b946c53e2e62200515d284249f2a91d9df7954' +const USDC_ADDRESS = ADDRESSES.godwoken.USDC const DRM_USDC_LP_ADDRESS = '0x268aaeed47d031751db1cbba50930fe2991f0ed0' async function tvl(ts, _block, chainBlocks) { diff --git a/projects/debets/index.js b/projects/debets/index.js index 87969176e4..f9a9f79d03 100644 --- a/projects/debets/index.js +++ b/projects/debets/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const getPoolInfo = "function getPoolInfo(address token) view returns (tuple(uint256 freeAmount, uint256 frozenAmount) poolInfo)"; @@ -7,11 +8,11 @@ const factory_address_polygon = "0xcE214f6a877747495106B5e55533f3e23D290DBd"; const polygon_tokens = Object.values({ POLYGON_WMATIC: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - POLYGON_WETH: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", - POLYGON_WBTC: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", - POLYGON_USDC: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - POLYGON_USDT: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", - POLYGON_DAI: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + POLYGON_WETH: ADDRESSES.polygon.WETH_1, + POLYGON_WBTC: ADDRESSES.polygon.WBTC, + POLYGON_USDC: ADDRESSES.polygon.USDC, + POLYGON_USDT: ADDRESSES.polygon.USDT, + POLYGON_DAI: ADDRESSES.polygon.DAI, POLYGON_XEN: "0x2AB0e9e4eE70FFf1fB9D67031E44F6410170d00e", }); @@ -19,7 +20,7 @@ const polygon_tokens = Object.values({ const factory_address_fantom = "0x069C55f2DDb434fF67055977dbeB9e9FE8a2F25E"; const fantom_tokens = Object.values({ - FANTOM_WFTM: "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", + FANTOM_WFTM: ADDRESSES.fantom.WFTM, FANTOM_XEN: "0xeF4B763385838FfFc708000f884026B8c0434275", }); diff --git a/projects/defifranc/index.js b/projects/defifranc/index.js index 261dfa7cb1..6a7a887e78 100644 --- a/projects/defifranc/index.js +++ b/projects/defifranc/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require('../helper/staking') const Collaterals = { - ETH: "0x0000000000000000000000000000000000000000", - wBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"// + ETH: ADDRESSES.null, + wBTC: ADDRESSES.ethereum.WBTC// } const TROVE_MANAGER_ADDRESS = "0x99838142189adE67c1951f9c57c3333281334F7F"; // deposits in native ETH and wBTC @@ -20,7 +21,7 @@ async function tvl(_, block, chainBlocks) { }) output.forEach(({ input: { params: [token] }, output }) => { - if (token.toLowerCase() === '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599') // Fix wBTC balance + if (token.toLowerCase() === ADDRESSES.ethereum.WBTC) // Fix wBTC balance output /= 1e10 sdk.util.sumSingleBalance(balances, token, output) }) diff --git a/projects/defikingdoms/index.js b/projects/defikingdoms/index.js index e436a934ca..49bced43b0 100644 --- a/projects/defikingdoms/index.js +++ b/projects/defikingdoms/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { getUniTVL } = require("../helper/unknownTokens"); @@ -5,7 +6,7 @@ const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { harmony: { tvl: getUniTVL({ factory: '0x9014B937069918bd319f80e8B3BB4A2cf6FAA5F7', chain: 'harmony', useDefaultCoreAssets: true }), - staking: staking("0xa9ce83507d872c5e1273e745abcfda849daa654f", "0x72cb10c6bfa5624dd07ef608027e366bd690048f", "harmony"), + staking: staking(ADDRESSES.harmony.xJEWEL, ADDRESSES.harmony.JEWEL, "harmony"), }, klaytn: { tvl: getUniTVL({ factory: '0x36fAE766e51f17F8218C735f58426E293498Db2B', chain: 'klaytn', useDefaultCoreAssets: true }), diff --git a/projects/defilyio/index.js b/projects/defilyio/index.js index b49d50571f..f9fd11b4b4 100644 --- a/projects/defilyio/index.js +++ b/projects/defilyio/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const utils = require("../helper/utils"); const { staking } = require("../helper/staking"); @@ -6,7 +7,7 @@ const stakingContract_KARDIA = "0x0245a1f57Ee84b55Cf489Eb5F3d27355014e57f8"; const stakingContract_Harmony = "0x3b441bf2522927BCf41c1c24786E7a8E9a56B234"; const DFL = "0xD675fF2B0ff139E14F86D87b7a6049ca7C66d76e"; -const DFL_Harmony = "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a"; +const DFL_Harmony = ADDRESSES.arbitrum.MIM; const fetch = async () => { const tvl = (await utils.fetchURL("https://api.defily.io/v1/statistics")).data diff --git a/projects/definer/index.js b/projects/definer/index.js index 7a8446368e..1fdb8d0512 100644 --- a/projects/definer/index.js +++ b/projects/definer/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -149,7 +150,7 @@ const utility = { }) ).output; - let zeroCTokenAddress = "0x0000000000000000000000000000000000000000"; + let zeroCTokenAddress = ADDRESSES.null; cToken.forEach((item) => { allTokenObj[item.input.params[0]] = item.output === zeroCTokenAddress ? "" : item.output; diff --git a/projects/defirex/index.js b/projects/defirex/index.js index dbe9de34e7..07f22d2733 100644 --- a/projects/defirex/index.js +++ b/projects/defirex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') module.exports = { @@ -5,7 +6,7 @@ module.exports = { tvl: sumTokensExport({ ownerTokens: [ { - tokens: [nullAddress, '0xdac17f958d2ee523a2206206994597c13d831ec7' /*USDT*/, '0x6b175474e89094c44da98b954eedeac495271d0f'/*DAI*/], + tokens: [nullAddress, ADDRESSES.ethereum.USDT /*USDT*/, ADDRESSES.ethereum.DAI/*DAI*/], holders: '0xb942ca22e0eb0f2524F53f999aE33fD3B2D58E3E', // Strategy controller contract }, { @@ -13,7 +14,7 @@ module.exports = { holders: '0x0BCbAb2FeCC30B7341132B4Ebb36d352E035f1bD', // Wallet strategy contract with user funds deposited in Compound }, { - tokens: ['0x6b175474e89094c44da98b954eedeac495271d0f' /*DAI*/], + tokens: [ADDRESSES.ethereum.DAI /*DAI*/], holders: '0x65D4853d663CeE114A0aA1c946E95479C53e78c2', // user rewards in DAI token }].map(i => [i.tokens, i.holders]) }), diff --git a/projects/defisaver.js b/projects/defisaver.js index 37cf2eadb5..f22646d796 100644 --- a/projects/defisaver.js +++ b/projects/defisaver.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('./helper/coreAssets.json') const defisaverABIs = require("./config/defisaver/abis"); const utils = require("./helper/utils"); const { nullAddress, } = require("./helper/tokenMapping"); const sdk = require('@defillama/sdk') -const dai = '0x6b175474e89094c44da98b954eedeac495271d0f' +const dai = ADDRESSES.ethereum.DAI const { CompoundSubscriptions, @@ -133,13 +134,13 @@ async function tvl(ts, block, _, { api }) { const assetMapping = { ETH: nullAddress, - DAI: '0x6b175474e89094c44da98b954eedeac495271d0f', - BAT: '0x0d8775f648430679a709e98d2b0cb6250d2887ef', - RETH: '0xae78736cd615f374d3085123a210448e74fc6393', - LINK: '0x514910771af9ca656af840dff83e8264ecf986ca', - WBTC: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - MATIC: '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', - WSTETH: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0' + DAI: ADDRESSES.ethereum.DAI, + BAT: ADDRESSES.ethereum.BAT, + RETH: ADDRESSES.ethereum.RETH, + LINK: ADDRESSES.ethereum.LINK, + WBTC: ADDRESSES.ethereum.WBTC, + MATIC: ADDRESSES.ethereum.MATIC, + WSTETH: ADDRESSES.ethereum.WSTETH } module.exports = { diff --git a/projects/defyswap/index.js b/projects/defyswap/index.js index 7a863f385b..2889e5e648 100644 --- a/projects/defyswap/index.js +++ b/projects/defyswap/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { stakingUnknownPricedLP } = require("../helper/staking.js"); const factory = "0xAffdbEAE1ec595cba4C262Bdb52A6083aEc2e2a6"; const masterchef = "0x53e986884c55c9AEDB7f003583f350EE789505D0"; -const ftm = "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"; +const ftm = ADDRESSES.fantom.WFTM; const dfy = "0x84b0b7718f8480a9eda3133fd385d7edf2b1d1c4"; const whitelist = [ dfy, - "0x04068da6c83afcfa0e13ba15a6696662335d5b75", + ADDRESSES.fantom.USDC, "0x321162cd933e2be498cd2267a90534a804051b11", ]; diff --git a/projects/degenerative/index.js b/projects/degenerative/index.js index 710be22693..7c8cb194de 100644 --- a/projects/degenerative/index.js +++ b/projects/degenerative/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { getConfig } = require('../helper/cache') const collaterals = { - 'WETH': '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - 'USDC': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' + 'WETH': ADDRESSES.ethereum.WETH, + 'USDC': ADDRESSES.ethereum.USDC } async function tvl(timestamp, block) { diff --git a/projects/dehive/assetsInfo.js b/projects/dehive/assetsInfo.js index 77df35f2c3..ac39fe5bd6 100644 --- a/projects/dehive/assetsInfo.js +++ b/projects/dehive/assetsInfo.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // Auto generated at 9-2-2022 16:14 module.exports = { 'ethereum' : [ @@ -16,7 +17,7 @@ module.exports = { dhvToken: '0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A', underlying: [ '0x62Dc4817588d53a056cBbD18231d91ffCcd34b2A', // DHV - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + ADDRESSES.ethereum.WETH, // WETH ], isPool2: true, poolId: 0 @@ -72,8 +73,8 @@ module.exports = { lpAddress: '0x4A35582a710E1F4b2030A3F826DA20BfB6703C09', // QCK-WETH-DAI dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', underlying: [ - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', // DAI + ADDRESSES.polygon.WETH_1, // WETH + ADDRESSES.polygon.DAI, // DAI ], poolId: 1 }, @@ -86,7 +87,7 @@ module.exports = { // lpAddress: '0x1F1E4c845183EF6d50E9609F16f6f9cAE43BC9Cb', // QCK-USDC-QUICK // dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', // underlying: [ - // '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC + // ADDRESSES.polygon.USDC, // USDC // '0x831753DD7087CaC61aB5644b308642cc1c33Dc13', // QUICK // ], // poolId: 2 @@ -100,7 +101,7 @@ module.exports = { // lpAddress: '0xE89faE1B4AdA2c869f05a0C96C87022DaDC7709a', // QCK-MAI-USDT // dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', // underlying: [ - // '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', // USDT + // ADDRESSES.polygon.USDT, // USDT // '0xa3fa99a148fa48d14ed51d610c367c61876997f1', // MAI // ], // poolId: 4 @@ -114,7 +115,7 @@ module.exports = { dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', underlying: [ '0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b', // AVAX - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH + ADDRESSES.polygon.WETH_1, // WETH ], poolId: 5 }, @@ -127,7 +128,7 @@ module.exports = { dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', underlying: [ '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH + ADDRESSES.polygon.WETH_1, // WETH ], poolId: 6 }, @@ -140,7 +141,7 @@ module.exports = { dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', underlying: [ '0x172370d5Cd63279eFa6d502DAB29171933a610AF', // CRV - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH + ADDRESSES.polygon.WETH_1, // WETH ], poolId: 7 }, @@ -153,7 +154,7 @@ module.exports = { dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', underlying: [ '0x50B728D8D964fd00C2d0AAD81718b71311feF68a', // SNX - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH + ADDRESSES.polygon.WETH_1, // WETH ], poolId: 8 }, @@ -201,7 +202,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x58759dd469ae5631c42cf8a473992335575b58d7', // DHV - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD + ADDRESSES.bsc.BUSD, // BUSD ], isPool2: true, poolId: 0 @@ -215,7 +216,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', // CAKE - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD + ADDRESSES.bsc.BUSD, // BUSD ], poolId: 0 }, @@ -227,8 +228,8 @@ module.exports = { lpAddress: '0xEc6557348085Aa57C72514D67070dC863C0a5A8c', // PANCAKE-BUSDT-USDC dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ - '0x55d398326f99059fF775485246999027B3197955', // BUSDT - '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', // BUSDC + ADDRESSES.bsc.USDT, // BUSDT + ADDRESSES.bsc.USDC, // BUSDC ], poolId: 1 }, @@ -240,8 +241,8 @@ module.exports = { lpAddress: '0x16b9a82891338f9bA80E2D6970FddA79D1eb0daE', // PANCAKE-BUSDT-WBNB dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ - '0x55d398326f99059fF775485246999027B3197955', // BUSDT - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB + ADDRESSES.bsc.USDT, // BUSDT + ADDRESSES.bsc.WBNB, // WBNB ], poolId: 2 }, @@ -254,7 +255,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63', // XVS - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB + ADDRESSES.bsc.WBNB, // WBNB ], poolId: 3 }, @@ -267,7 +268,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x8F0528cE5eF7B51152A59745bEfDD91D97091d2F', // ALPACA - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD + ADDRESSES.bsc.BUSD, // BUSD ], poolId: 4 }, @@ -280,7 +281,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD', // LINK - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB + ADDRESSES.bsc.WBNB, // WBNB ], poolId: 5 }, @@ -293,7 +294,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', // CAKE - '0x55d398326f99059fF775485246999027B3197955', // BUSDT + ADDRESSES.bsc.USDT, // BUSDT ], poolId: 6 }, @@ -306,7 +307,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x67ee3Cb086F8a16f34beE3ca72FAD36F7Db929e2', // DODO - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB + ADDRESSES.bsc.WBNB, // WBNB ], poolId: 7 }, @@ -319,7 +320,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95', // BANANA - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB + ADDRESSES.bsc.WBNB, // WBNB ], poolId: 8 }, @@ -332,7 +333,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95', // BANANA - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD + ADDRESSES.bsc.BUSD, // BUSD ], poolId: 9 }, @@ -345,7 +346,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x4B0F1812e5Df2A09796481Ff14017e6005508003', // TWT - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB + ADDRESSES.bsc.WBNB, // WBNB ], poolId: 10 }, @@ -358,7 +359,7 @@ module.exports = { dhvToken: '0x58759dd469ae5631c42cf8a473992335575b58d7', underlying: [ '0x1CE0c2827e2eF14D5C4f29a091d735A204794041', // AVAX - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB + ADDRESSES.bsc.WBNB, // WBNB ], poolId: 11 }, @@ -387,7 +388,7 @@ module.exports = { dhvToken: '0xFbdd194376de19a88118e84E279b977f165d01b8', underlying: [ '0xFbdd194376de19a88118e84E279b977f165d01b8', // DHV - '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d', // WXDAI + ADDRESSES.xdai.WXDAI, // WXDAI ], isPool2: true, poolId: 1 diff --git a/projects/delta/index.js b/projects/delta/index.js index 0ad1c29a8a..e0ad89e1b9 100644 --- a/projects/delta/index.js +++ b/projects/delta/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const { staking } = require("../helper/staking"); @@ -7,7 +8,7 @@ const rebasingContract = "0xfcfC434ee5BfF924222e084a8876Eee74Ea7cfbA"; const DELTA_WETH_SLP = "0x1498bd576454159Bb81B5Ce532692a8752D163e8"; const DELTA = "0x9EA3b5b4EC044b70375236A281986106457b20EF"; -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH = ADDRESSES.ethereum.WETH; async function Pool2(timestamp, block) { const balances = {}; diff --git a/projects/deltaprime/index.js b/projects/deltaprime/index.js index cbbb106dab..b8a46e12d9 100644 --- a/projects/deltaprime/index.js +++ b/projects/deltaprime/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { ethers } = require("ethers"); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -70,7 +71,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { function translatePlatypusLPToBaseToken(token){ // Platypus USDC Asset (LP-USDC) -> USDC if(token === "0x06f01502327de1c37076bea4689a7e44279155e9"){ - token = "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e"; + token = ADDRESSES.avax.USDC; } return token; } diff --git a/projects/demeter.js b/projects/demeter.js index 0940ea564a..0d9261f950 100644 --- a/projects/demeter.js +++ b/projects/demeter.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokensExport } = require('./helper/unwrapLPs') @@ -21,7 +22,7 @@ const config = { "0x59a626a783A9C071fDcEFC95B3664a34d0592e24" ], [ - "0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F", + ADDRESSES.heco.WHT, "0xDA77B5663a0baFa56080Ae5D0a1F462848465b14" ], [ @@ -73,23 +74,23 @@ const config = { bsc: { markets: [ [ - "0x55d398326f99059fF775485246999027B3197955", + ADDRESSES.bsc.USDT, "0x89bB17aF665Ec0607268C697Bb294117992027Cf" ], [ - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + ADDRESSES.bsc.BUSD, "0xB275b6AE294159278547297dBE7617f66A7bC6e2" ], [ - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + ADDRESSES.bsc.BTCB, "0x6c9FcBD7aD9dFB241f4fA2cc08FaABb42d764606" ], [ - "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + ADDRESSES.bsc.ETH, "0x4A345187BFAe9A14DA764C2222c4B7E816C18216" ], [ - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + ADDRESSES.bsc.WBNB, "0x5C4E2B1E6E03cCF5F3c3356C008a69C7f93BD10B" ], [ diff --git a/projects/demodyfi/index.js b/projects/demodyfi/index.js index 40598173db..0cf6579008 100644 --- a/projects/demodyfi/index.js +++ b/projects/demodyfi/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); -const wGLMR = "0x5f6c5C2fB289dB2228d159C69621215e354218d7"; +const wGLMR = ADDRESSES.moonbeam.WGLMR; const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); const { transformBscAddress } = require("../helper/portedTokens"); @@ -38,7 +39,7 @@ async function dmodEthereumStakingPool(timestamp, block, chainBlocks) { await sdk.api.abi.call({ abi: "erc20:balanceOf", chain: "ethereum", - target: "0x5f6c5c2fb289db2228d159c69621215e354218d7", + target: ADDRESSES.moonbeam.WGLMR, params: ["0x024D59Ac0Bb03dEd28B9A16cd50B3d242B43a683"], block }) @@ -50,7 +51,7 @@ async function dmodEthereumStakingPool(timestamp, block, chainBlocks) { await sdk.api.abi.call({ abi: "erc20:decimals", chain: "ethereum", - target: "0x5f6c5c2fb289db2228d159c69621215e354218d7", + target: ADDRESSES.moonbeam.WGLMR, params: [], block }) diff --git a/projects/depth/index.js b/projects/depth/index.js index 9e27c0a959..9961cffa1d 100644 --- a/projects/depth/index.js +++ b/projects/depth/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const formalDeposit = { @@ -419,7 +420,7 @@ async function getBnbPrice() { target: "0x10ed43c718714eb63d5aa57b78b54704e256024e", abi: mdexRouter['getAmountsOut'], chain: "bsc", - params: [1e8, ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c","0x55d398326f99059ff775485246999027b3197955"]], + params: [1e8, [ADDRESSES.bsc.WBNB,ADDRESSES.bsc.USDT]], }); return getAmountsIn.output[1] / Math.pow(10, 26 - 18) } diff --git a/projects/deri/index.js b/projects/deri/index.js index 2844198534..5174dc0b71 100644 --- a/projects/deri/index.js +++ b/projects/deri/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { transformPolygonAddress } = require("../helper/portedTokens"); const abi = require("./abi"); @@ -97,16 +98,16 @@ async function v3Pool( let bscContracts = { a: { - bTokenSymbol: "0x4fabb145d64652a948d72533023f6e7a623c7c53", + bTokenSymbol: ADDRESSES.ethereum.BUSD, pool: "0x66f501dda450C8978c4A1115D7b2A7FAa7702F05", }, b: { - bTokenSymbol: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x574022307e60bE1f07da6Ec1cB8fE23d426e5831", lite: true, }, everlastingOption: { - bTokenSymbol: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x08aD0E0b4458183758fC5b9b6D27c372965fB780", lite: true, }, @@ -116,28 +117,28 @@ let bscContracts = { lite: true, }, option: { - bTokenSymbol: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x243681B8Cd79E3823fF574e07B2378B8Ab292c1E", v3: true, }, futureMain: { - bTokenSymbol: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0x4ad5cb09171275A4F4fbCf348837c63a91ffaB04", v3: true, }, futureInno: { - bTokenSymbol: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + bTokenSymbol: ADDRESSES.bsc.BUSD, pool: "0xD2D950e338478eF7FeB092F840920B3482FcaC40", v3: true, }, }; let polygonContracts = { a: { - bTokenSymbol: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + bTokenSymbol: ADDRESSES.polygon.USDT, pool: "0x4Db087225C920Bec55B2dCEAa629BDc5782623D9", }, b: { - bTokenSymbol: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + bTokenSymbol: ADDRESSES.polygon.USDT, pool: "0xA8769A4Fb0Ca82eb474448B1683DCA3c79798B69", lite: true, }, @@ -151,14 +152,14 @@ let polygonContracts = { let config = { arbitrum: { futureMain: { - bTokenSymbol: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + bTokenSymbol: ADDRESSES.arbitrum.USDC, pool: "0xDE3447Eb47EcDf9B5F90E7A6960a14663916CeE8", v3: true, }, }, era: { futureMain: { - bTokenSymbol: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + bTokenSymbol: ADDRESSES.era.USDC, pool: "0x9F63A5f24625d8be7a34e15477a7d6d66e99582e", v3: true, }, diff --git a/projects/derify/index.js b/projects/derify/index.js index 0ad876e21c..74b92c2dd1 100644 --- a/projects/derify/index.js +++ b/projects/derify/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') module.exports = { bsc: { - tvl: staking('0x75777494496f6250DdB9A1B96a6203e219d3698f', '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56') + tvl: staking('0x75777494496f6250DdB9A1B96a6203e219d3698f', ADDRESSES.bsc.BUSD) } } diff --git a/projects/derivadex/index.js b/projects/derivadex/index.js index 60b5f42a0e..f41ed3fcde 100644 --- a/projects/derivadex/index.js +++ b/projects/derivadex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -13,14 +14,14 @@ const addressList = ["0x6fb8aa6fc6f27e591423009194529ae126660027"]; //TODO: DYNAMICALLY FETCH const tokenAddresses = [ - "0xdac17f958d2ee523a2206206994597c13d831ec7", //usdtAddress: + ADDRESSES.ethereum.USDT, //usdtAddress: "0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9", //cusdtAddress: - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //usdcAddress: + ADDRESSES.ethereum.USDC, //usdcAddress: "0x39aa39c021dfbae8fac545936693ac917d5e7563", //cusdcAddress: "0xdf574c24545e5ffecb9a659c229253d4111d87e1", //husdAddress "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd", //gusdAddress - // "0x0000000000000000000000000000000000000000", // ausdtAddress: - // "0x0000000000000000000000000000000000000000", //ausdcAddress: + // ADDRESSES.null, // ausdtAddress: + // ADDRESSES.null, //ausdcAddress: ]; /*================================================== diff --git a/projects/deversifi/index.js b/projects/deversifi/index.js index 2a47c3f660..995e9b6a37 100644 --- a/projects/deversifi/index.js +++ b/projects/deversifi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {nullAddress, sumTokens2} = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') @@ -12,60 +13,60 @@ const contracts = { const listedTokens = [ nullAddress, - '0xdac17f958d2ee523a2206206994597c13d831ec7', - '0x6B175474E89094C44Da98b954EedeAC495271d0F', + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.DAI, '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07', '0x940a2db1b7008b6c776d4faaca729d6d4a4aa551', - '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e', - '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + ADDRESSES.ethereum.YFI, + ADDRESSES.ethereum.MKR, + ADDRESSES.ethereum.WBTC, '0xe41d2489571d322189246dafa5ebde1f4699f498', '0xcc80c051057b774cd75067dc48f8987c4eb97a5e', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + ADDRESSES.ethereum.USDC, '0x419d0d8bdd9af5e606ae2232ed285aff190e711b', '0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d', - '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e', + ADDRESSES.ethereum.YFI, '0xba100000625a3754423978a60c9317c58a424e3d', - '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', + ADDRESSES.ethereum.UNI, '0xc00e94cb662c3520282e6f5717214004a7f26888', '0xec67005c4e498ec7f55e092bd1d35cbc47c91892', - '0x0d8775f648430679a709e98d2b0cb6250d2887ef', - '0x514910771af9ca656af840dff83e8264ecf986ca', + ADDRESSES.ethereum.BAT, + ADDRESSES.ethereum.LINK, '0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d', - '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', - '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', + ADDRESSES.ethereum.SNX, + ADDRESSES.ethereum.AAVE, '0xeef9f339514298c6a857efcfc1a762af84438dee', '0xa117000000f279d81a1d3cc75430faa017fa5a2e', '0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b', '0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9', - '0x5a98fcbea516cf06857215779fd812ca3bef1b32', + ADDRESSES.ethereum.LIDO, '0xdddddd4301a082e62e84e43f474f044423921918', '0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d', - '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', + ADDRESSES.ethereum.MATIC, '0x0a0e3bfd5a8ce610e735d4469bc1b3b130402267', - '0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE', - '0xD533a949740bb3306d119CC777fa900bA034cd52', + ADDRESSES.ethereum.INU, + ADDRESSES.ethereum.CRV, '0x03ab458634910aad20ef5f1c8ee96f1d6ac54919', '0x0391d2021f89dc339f60fff84546ea23e337750f', - '0x2e9d63788249371f1dfc918a52f8d799f4a38c94', + ADDRESSES.ethereum.TOKE, '0x33349b282065b0284d756f0577fb39c158f935e6', '0x767fe9edc9e0df98e07454847909b5e959d7ca0e', '0x25f8087ead173b73d6e8b84329989a8eea16cf73', '0xdddd0e38d30dd29c683033fa0132f868597763ab', - '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', - '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2' + ADDRESSES.ethereum.WSTETH, + ADDRESSES.ethereum.SUSHI ]; const arbitrumTokens = [ nullAddress, - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', - '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1' + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDT, + ADDRESSES.optimism.DAI ]; const polygonTokens = [ nullAddress, - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063' + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.DAI ]; async function tvl(timestamp, block){ diff --git a/projects/dexfinance/index.js b/projects/dexfinance/index.js index 0fe6df9aa1..c133c7cfbc 100644 --- a/projects/dexfinance/index.js +++ b/projects/dexfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const { ETF_ABI, } = require('./abi'); @@ -17,7 +18,7 @@ const TOKENS = { DEXSHARE: '0xf4914e6d97a75f014acfcf4072f11be5cffc4ca6', DEXIRA: '0x147e07976e1ae78287c33aafaab87760d32e50a5', WDEX_DEXSHARE: '0x6647047433df4cfc9912d092fd155b9d972a4a85', - BNB: '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + BNB: ADDRESSES.bsc.WBNB, }; const chain = 'bsc' diff --git a/projects/dforce/index.js b/projects/dforce/index.js index 8ffc345c33..1d76a4b034 100644 --- a/projects/dforce/index.js +++ b/projects/dforce/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); @@ -13,11 +14,11 @@ /*================================================== Ethereum Settings ==================================================*/ -const DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; +const DAI = ADDRESSES.ethereum.DAI; const PAX = "0x8E870D67F660D95d5be530380D0eC0bd388289E1"; -const TUSD = "0x0000000000085d4780B73119b644AE5ecd22b376"; -const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; -const USDT = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; +const TUSD = ADDRESSES.ethereum.TUSD; +const USDC = ADDRESSES.ethereum.USDC; +const USDT = ADDRESSES.ethereum.USDT; const USDx = "0xeb269732ab75A6fD61Ea60b06fE994cD32a83549"; /*================================================== @@ -38,10 +39,10 @@ const goldxProtocol = "0x355C665e101B9DA58704A8fDDb5FeeF210eF20c0"; // GOLDx /*================================================== BSC Settings ==================================================*/ -const BSC_BUSD = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; +const BSC_BUSD = ADDRESSES.bsc.BUSD; const BSC_DAI = "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3"; -const BSC_USDC = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"; -const BSC_USDT = "0x55d398326f99059fF775485246999027B3197955"; +const BSC_USDC = ADDRESSES.bsc.USDC; +const BSC_USDT = ADDRESSES.bsc.USDT; let oracles = { @@ -147,12 +148,12 @@ const excludeAlliTokens = { const dfStakingPools = "0x41602ccf9b1F63ea1d0Ab0F0A1D2F4fd0da53f60"; const USXs = { - "ethereum": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + "ethereum": ADDRESSES.ethereum.USX, "bsc": "0xb5102cee1528ce2c760893034a4603663495fd72", "arbitrum": "0x641441c631e2f909700d2f41fd87f0aa6a6b4edb", "polygon": "0xCf66EB3D546F0415b368d98A95EAF56DeD7aA752", "avax": "0x853ea32391AaA14c112C645FD20BA389aB25C5e0", - "kava": "0xDb0E1e86B01c4ad25241b1843E407Efc4D615248", + "kava": ADDRESSES.kava.USX, }; async function getDFStakingValue(block) { diff --git a/projects/diamond-unibot-v2/index.js b/projects/diamond-unibot-v2/index.js index 5da0ac984c..4fd9e2ac8c 100644 --- a/projects/diamond-unibot-v2/index.js +++ b/projects/diamond-unibot-v2/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLogs, getAddress } = require("../helper/cache/getLogs"); const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { arbitrum: { lendingPools: [ [ - "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + ADDRESSES.arbitrum.WETH, "0xedd1efa76fe59e9106067d824b89b59157c5223c", ], // WETH [ - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + ADDRESSES.arbitrum.USDC, "0xFEaDE428e2Fe0F547d560B540a7617087505538B", ], // USDC [ @@ -19,8 +20,8 @@ const config = { vaults: [ [ [ - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", // USDC - "0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a", // GMX + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.GMX, // GMX "0x912ce59144191c1204e64559fe8253a0e49e6548", // ARB ], "0x8610D60f5329B0560c8F0CEb80175F342fe943F3", // vault @@ -31,7 +32,7 @@ const config = { polygon: { lendingPools: [ [ - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + ADDRESSES.polygon.WETH_1, "0x8610D60f5329B0560c8F0CEb80175F342fe943F3", ], // WETH [ @@ -42,8 +43,8 @@ const config = { vaults: [ [ [ - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", // USDC - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", // WETH + ADDRESSES.polygon.USDC, // USDC + ADDRESSES.polygon.WETH_1, // WETH ], "0xD576bE0d3CC1c0184d1ea3F1778A4A9Dec523859", // vault ], diff --git a/projects/diamond/index.js b/projects/diamond/index.js index 9a4df39cf6..c2fb34ce3d 100644 --- a/projects/diamond/index.js +++ b/projects/diamond/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -9,19 +10,19 @@ const ETH_BULL_VAULT = "0xad48a8261b0690c71b70115035eb14afd9a43242"; // Optimism const BASIS_TRADING_VAULT = "0xD576bE0d3CC1c0184d1ea3F1778A4A9Dec523859"; -const OPT_USDC = "0x7F5c764cBc14f9669B88837ca1490cCa17c31607"; +const OPT_USDC = ADDRESSES.optimism.USDC; // Arbitrum const DMO_LENDING_POOL = "0x4c51FF6AF2EfC679A08C5A7377Bce18050f86CcB"; const DMO_FACTORY = "0xcd8d2e1fa4132749220ffeec165285ee33028d59"; const DMO_FARM = "0x4a127cB6806E869bf61A6de9db76dabE46A837D3"; const DMO_FARM_ACTION = "0x4Ec4e76c11E2182918a80822df114DB03048388b"; -const ARB_WETH = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"; -const ARB_USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; +const ARB_WETH = ADDRESSES.arbitrum.WETH; +const ARB_USDC = ADDRESSES.arbitrum.USDC; async function ethTvl(_, block) { return { - 'ethereum:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': ( + ['ethereum:' + ADDRESSES.ethereum.WETH]: ( await sdk.api.abi.call({ target: ETH_BULL_VAULT, block, diff --git a/projects/diffusionfi/index.js b/projects/diffusionfi/index.js index 24c69ab423..527a62e888 100644 --- a/projects/diffusionfi/index.js +++ b/projects/diffusionfi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { stakingUnknownPricedLP } = require("../helper/staking"); @@ -7,6 +8,6 @@ module.exports = { "Factory address (0x6abdda34fb225be4610a2d153845e09429523cd2) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", evmos: { tvl: getUniTVL({ factory: '0x6abdda34fb225be4610a2d153845e09429523cd2', chain: 'evmos', useDefaultCoreAssets: true }), - staking: stakingUnknownPricedLP('0x75aeE82a16BD1fB98b11879af93AB7CE055f66Da', '0x3f75ceabcdfed1aca03257dc6bdc0408e2b4b026', "evmos", "0x5b575e84e4921A93D57301cB75C9635BA12D50e2") + staking: stakingUnknownPricedLP('0x75aeE82a16BD1fB98b11879af93AB7CE055f66Da', ADDRESSES.evmos.DIFF, "evmos", "0x5b575e84e4921A93D57301cB75C9635BA12D50e2") }, }; // node test.js projects/diffusionfi/index.js \ No newline at end of file diff --git a/projects/dinoswap/index.js b/projects/dinoswap/index.js index 504283ec06..49852da56e 100644 --- a/projects/dinoswap/index.js +++ b/projects/dinoswap/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const {masterChefExports} = require('../helper/masterchef'); const MASTERCHEF_CONTRACT = "0x1948abC5400Aa1d72223882958Da3bec643fb4E5"; -const token = "0xAa9654BECca45B5BDFA5ac646c939C62b527D394"; +const token = ADDRESSES.polygon.DINO; module.exports = { misrepresentedTokens: true, diff --git a/projects/diosfinance/index.js b/projects/diosfinance/index.js index 60ee93cfd4..77b30053dd 100644 --- a/projects/diosfinance/index.js +++ b/projects/diosfinance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const dios = "0x08eEcF5d03bDA3dF2467F6AF46b160c24D931DE7"; const diosStaking = "0x36c8a6E7436EDd850752E09539a519a369D95096"; const treasury = "0x98eE3F3629aCFA6fDDB49028C494030E5dFA349a"; -const busd = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; +const busd = ADDRESSES.bsc.BUSD; const diosBusdLP = "0x2D7A5e9d85F62ADbaea9d48B11F5947F3AC57FC8"; module.exports = { diff --git a/projects/dnadollar/index.js b/projects/dnadollar/index.js index ec23707840..7e31143336 100644 --- a/projects/dnadollar/index.js +++ b/projects/dnadollar/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -6,8 +7,8 @@ const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const treasuryContract = "0x1420287565FD5Ebec8FbD720c17Cd911600449d3"; const FundDAO = "0x3e1Aa19FA59c9B474f6d2F37976a84DeD64af4Bf"; -const USDT = "0x66e428c3f67a68878562e79a0234c1f83c208770"; -const USDC = "0xc21223249ca28397b4b6541dffaecc539bff0c59"; +const USDT = ADDRESSES.cronos.USDT; +const USDC = ADDRESSES.cronos.USDC; const USDC_DSHARE_meerkatLP = "0xFe0F0d50175789C1F69B41dB797cc9ABd8Ab0120"; const DShareRewardPool = "0x1A4bb8E03C35e2B672A0fcE18cab920aa023d7FC"; diff --git a/projects/dokidoki/index.js b/projects/dokidoki/index.js index 128207d446..e851b81d45 100644 --- a/projects/dokidoki/index.js +++ b/projects/dokidoki/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs, sumTokens2 } = require("../helper/unwrapLPs"); @@ -42,11 +43,11 @@ const ethPool2LPs = [ const ethPools = [ { pool: "0xb3a2AF499aF8f717BB3431968f8e0b038C975686", - token: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + token: ADDRESSES.ethereum.WBTC, }, // WBTC { pool: "0xde846827cE3022EcD5eFD6ed316a2dEf9AB299B8", - token: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + token: ADDRESSES.ethereum.WETH, }, // WETH ]; diff --git a/projects/domfi/registry.js b/projects/domfi/registry.js index 290a7da0b1..7ad610ecfe 100644 --- a/projects/domfi/registry.js +++ b/projects/domfi/registry.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const ZERO_ADDRESS = ADDRESSES.null; const Chain = { ETHEREUM: 'ethereum', @@ -8,9 +9,9 @@ const Chain = { } const usdc = { - [Chain.ETHEREUM]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Chain.POLYGON]: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - [Chain.BOBA]: "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", + [Chain.ETHEREUM]: ADDRESSES.ethereum.USDC, + [Chain.POLYGON]: ADDRESSES.polygon.USDC, + [Chain.BOBA]: ADDRESSES.boba.USDC, } const lsps = { diff --git a/projects/donkey/index.js b/projects/donkey/index.js index 6fd59746ac..16110fd4f7 100644 --- a/projects/donkey/index.js +++ b/projects/donkey/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getChainTransform } = require('../helper/portedTokens') const abi = require('./abi.json') @@ -21,7 +22,7 @@ const stakings = [ ] const DONKEY_TOKEN = '0x4576E6825B462b6916D2a41E187626E9090A92c6' -const ETH = "0x0000000000000000000000000000000000000000"; +const ETH = ADDRESSES.null; async function staking(timestamp, block) { const balances = {} diff --git a/projects/dopex/index.js b/projects/dopex/index.js index 83ce03f5e1..4a8c4550ca 100644 --- a/projects/dopex/index.js +++ b/projects/dopex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { staking } = require("../helper/staking"); @@ -37,9 +38,9 @@ const slpStakingRewards = [ const ssovs = [ ["0xbB741dC1A519995eac67Ec1f2bfEecbe5C02f46e", "0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55"], ["0x6A1142681b74fbeA5dEA07258f573484D80e4435", "0x32eb7902d4134bf98a28b963d26de779af92a212"], - ["0x2c9C1E9b4BDf6Bf9CB59C77e0e8C0892cE3A9d5f", "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"], + ["0x2c9C1E9b4BDf6Bf9CB59C77e0e8C0892cE3A9d5f", ADDRESSES.arbitrum.WETH], ["0x54552CB564F4675bCEda644e47dE3E35D1c88E1b", "0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1"], - ["0x5bE3c77ED3Cd42fc2c702C9fcd665f515862B0AE", "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a"], + ["0x5bE3c77ED3Cd42fc2c702C9fcd665f515862B0AE", ADDRESSES.arbitrum.GMX], ]; const crvPools = [ @@ -111,7 +112,7 @@ async function crvTvls(balances, crvPools, block, chain) { for (let i = 0; i < crvPools.length; i++) { const balance = BigNumber(Number(lpPrices) / 1e18).times(Number(totalEpochDeposits[i].output)).div(1e12).toFixed(0); - sdk.util.sumSingleBalance(balances, "0xdac17f958d2ee523a2206206994597c13d831ec7", balance); + sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.USDT, balance); } } @@ -141,7 +142,7 @@ async function bscTvl(timestamp, block, chainBlocks) { chain: "bsc" })).output; - sdk.util.sumSingleBalance(balances, "bsc:0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", bnbAmount); + sdk.util.sumSingleBalance(balances, "bsc:" + ADDRESSES.bsc.WBNB, bnbAmount); delete balances["bsc:0xa07c5b74c9b40447a954e1466938b865b6bbea36"]; return balances; @@ -149,7 +150,7 @@ async function bscTvl(timestamp, block, chainBlocks) { // AVAX Addresses const avaxSsovs = [ - ["0x5540FEa353dF6302611DA1d57988104e43A4B6b6", "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7"] + ["0x5540FEa353dF6302611DA1d57988104e43A4B6b6", ADDRESSES.avax.WAVAX] ]; async function avaxTvl(timestamp, block, chainBlocks) { diff --git a/projects/dopplefinance/index.js b/projects/dopplefinance/index.js index fa28e18510..2338cf6a44 100644 --- a/projects/dopplefinance/index.js +++ b/projects/dopplefinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const assetsOnExchange = { @@ -5,35 +6,35 @@ const assetsOnExchange = { // * KUSD '0x940Ff63e82d15fb47371BFE5a4ed7D7D183dE1A5', // * BUSD - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + ADDRESSES.bsc.BUSD, // * USDT - "0x55d398326f99059fF775485246999027B3197955", + ADDRESSES.bsc.USDT, // * USDC - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", + ADDRESSES.bsc.USDC, // * DAI "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", // * UST "0x23396cF899Ca06c4472205fC903bDB4de249D6fC", // * BTCB - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + ADDRESSES.bsc.BTCB, // * renBTC '0xfCe146bF3146100cfe5dB4129cf6C82b0eF4Ad8c', // * USDN '0x03ab98f5dc94996F8C33E15cD4468794d12d41f9', // * TUSD - '0x14016E85a25aeb13065688cAFB43044C2ef86784', + ADDRESSES.bsc.BTUSD, // * DOLLY "0xfF54da7CAF3BC3D34664891fC8f3c9B6DeA6c7A5" ], fantom: [ // * USDC - '0x04068da6c83afcfa0e13ba15a6696662335d5b75', + ADDRESSES.fantom.USDC, // * fUSDT - '0x049d68029688eabf473097a2fc38ef61633a3c7a', + ADDRESSES.fantom.fUSDT, // * DAI - '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e', + ADDRESSES.fantom.DAI, // * MIM - '0x82f0b8b456c1a451378467398982d4834b6829c1', + ADDRESSES.fantom.MIM, ], harmony: [ // * KUSD @@ -66,7 +67,7 @@ async function bscTVL(_, _b, { bsc: block }) { '0x830e287ac5947b1c0da865dfb3afd7cdf7900464', ] const toa = [ - ['0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', '0xa275769Fb6fF34A1a01C8CE61D0182f5d36AD27A',], // USDC collateral for minting KUSD + [ADDRESSES.bsc.USDC, '0xa275769Fb6fF34A1a01C8CE61D0182f5d36AD27A',], // USDC collateral for minting KUSD ] assetsOnExchange.bsc.forEach(t => pools.forEach(o => toa.push([t, o]))) return sumTokens2({ tokensAndOwners: toa, chain, block, }) diff --git a/projects/dotdot/index.js b/projects/dotdot/index.js index 961b47df32..12dd3c075c 100644 --- a/projects/dotdot/index.js +++ b/projects/dotdot/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { pool2 } = require("../helper/pool2"); const { staking } = require("../helper/staking"); const { transformBalances } = require("../helper/portedTokens"); @@ -66,9 +67,9 @@ async function fixVal3EPS(block, balances) { const { output } = await sdk.api.abi.multiCall({ abi: "erc20:balanceOf", calls: [ - { params, target: "0xaed19dab3cd68e4267aec7b2479b1ed2144ad77f" }, - { params, target: "0xa6fdea1655910c504e974f7f1b520b74be21857b" }, - { params, target: "0x5f7f6cb266737b89f7af86b30f03ae94334b83e9" } + { params, target: ADDRESSES.bsc.valBUSD }, + { params, target: ADDRESSES.bsc.valUSDC }, + { params, target: ADDRESSES.bsc.valUSDT } ], chain, block @@ -88,7 +89,7 @@ async function resolveEpsLP({ if (token.toLowerCase() === "0xaf4de8e872131ae328ce21d909c74705d3aaf452") { sdk.util.sumSingleBalance( balances, - "0xe9e7cea3dedca5984780bafc599bd69add087d56", + ADDRESSES.bsc.BUSD, tokenBalance ); // store 3EPS as BUSD return; diff --git a/projects/dotoracle/index.js b/projects/dotoracle/index.js index ab4c3e57fb..78eb4bb8f2 100644 --- a/projects/dotoracle/index.js +++ b/projects/dotoracle/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') const { staking} = require('../helper/staking') @@ -9,13 +10,13 @@ const config = { ], tokens: { eth: nullAddress, - usdc: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - usdt: '0xdac17f958d2ee523a2206206994597c13d831ec7', - DAI: '0x6b175474e89094c44da98b954eedeac495271d0f', + usdc: ADDRESSES.ethereum.USDC, + usdt: ADDRESSES.ethereum.USDT, + DAI: ADDRESSES.ethereum.DAI, frax: '0x853d955acef822db058eb8505911ed77f175b99e', fxs: '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0', - maker: '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', - aave: '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', + maker: ADDRESSES.ethereum.MKR, + aave: ADDRESSES.ethereum.AAVE, } }, avax: { @@ -33,7 +34,7 @@ const config = { ], tokens: { bsc: nullAddress, - busd: '0xe9e7cea3dedca5984780bafc599bd69add087d56', + busd: ADDRESSES.bsc.BUSD, } }, okexchain: { diff --git a/projects/dsu-money/index.js b/projects/dsu-money/index.js index bdfc6e0d68..cb047b6c10 100644 --- a/projects/dsu-money/index.js +++ b/projects/dsu-money/index.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { ethereum: { tvl: sumTokensExport({ tokensAndOwners: [ - ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0xaef566ca7e84d1e736f999765a804687f39d9094'], - ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0xD05aCe63789cCb35B9cE71d01e4d632a0486Da4B'], + [ADDRESSES.ethereum.USDC, '0xaef566ca7e84d1e736f999765a804687f39d9094'], + [ADDRESSES.ethereum.USDC, '0xD05aCe63789cCb35B9cE71d01e4d632a0486Da4B'], ['0x39aa39c021dfbae8fac545936693ac917d5e7563', '0xD05aCe63789cCb35B9cE71d01e4d632a0486Da4B'], ]}) }, arbitrum: { tvl: sumTokensExport({ tokensAndOwners: [ - ['0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', '0x0d49c416103cbd276d9c3cd96710db264e3a0c27'], + [ADDRESSES.arbitrum.USDC, '0x0d49c416103cbd276d9c3cd96710db264e3a0c27'], ]}) } } diff --git a/projects/dydx/index.js b/projects/dydx/index.js index 0e173d45b1..5365f32b3b 100644 --- a/projects/dydx/index.js +++ b/projects/dydx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require("bignumber.js"); @@ -10,9 +11,9 @@ const tokens = [ '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359', - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - '0x6B175474E89094C44Da98b954EedeAC495271d0F' + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI ]; async function tvl (timestamp, block) { diff --git a/projects/dyson-money/index.js b/projects/dyson-money/index.js index a0e07e8e84..314f1b4be6 100644 --- a/projects/dyson-money/index.js +++ b/projects/dyson-money/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokens2 } = require('../helper/unwrapLPs'); const sdk = require('@defillama/sdk'); @@ -24,7 +25,7 @@ async function polygonTvl(timestamp, block, chainBlocks) { await sumTokens2({ balances, owners: [ylSPHEREvault], - tokens: ["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", "0x4Af613f297ab00361D516454E5E46bc895889653", "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6"], + tokens: ["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", ADDRESSES.polygon.USDC, ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.USDT, "0x4Af613f297ab00361D516454E5E46bc895889653", ADDRESSES.polygon.WBTC], chain: 'polygon', block: chainBlocks.polygon }) diff --git a/projects/ecodefi/index.js b/projects/ecodefi/index.js index f9c1d8a36c..8d4487abc8 100644 --- a/projects/ecodefi/index.js +++ b/projects/ecodefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); const stakingAbi = require('./stakingAbi.json'); @@ -20,7 +21,7 @@ let BabySwapRouter = { } let USDT = { - "bsc": "0x55d398326f99059fF775485246999027B3197955", // USDT in BSC + "bsc": ADDRESSES.bsc.USDT, // USDT in BSC } /*================================================== TVL diff --git a/projects/eklipse/index.js b/projects/eklipse/index.js index 5a6a8d6d2c..e67d2091f2 100644 --- a/projects/eklipse/index.js +++ b/projects/eklipse/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const BigNumber = require('bignumber.js') const { getChainTransform, getFixBalances, } = require('../helper/portedTokens') @@ -7,7 +8,7 @@ const vaults = require('./vaults') const chain = 'klaytn' const EKL_TOKEN = '0x807c4e063eb0ac21e8eef7623a6ed50a8ede58ca' const STAKING_ADDRESS = '0xD067C3b871ee9E07BA4205A8F96c182baBBA6c58' -const USDT_TOKEN = '0xceE8FAF64bB97a73bb51E115Aa89C17FfA8dD167' +const USDT_TOKEN = ADDRESSES.klaytn.oUSDT const POOL2_ADDRESS = '0x625ae9043e8730c4a1e30b36838502fb90e1d3c2' const USDT_PAIR = '0x219ee5d76593f5bd639125b6411a17d309e3ad31' const KLAY_PAIR = '0x5db231ac93faaad876155dc0853bb11a2f4b0fb2' @@ -15,23 +16,23 @@ const W_KLAY_ADDRESS = '0xd7a4d10070a4f7bc2a015e78244ea137398c3b74' const TOKENS = { kDAI: { - address: '0x5c74070fdea071359b86082bd9f9b3deaafbe32b', + address: ADDRESSES.klaytn.KDAI, decimal: 18 }, kBUSD: { - address: '0x210bc03f49052169d5588a52c317f71cf2078b85', + address: ADDRESSES.klaytn.oBUSD, decimal: 18 }, kUSDC: { decimal: 6, - address: '0x754288077d0ff82af7a5317c7cb8c444d421d103' + address: ADDRESSES.klaytn.oUSDC }, KSD: { - address: '0x4fa62f1f404188ce860c8f0041d6ac3765a72e67', + address: ADDRESSES.klaytn.KSD, decimal: 18 }, KASH: { - address: '0xce40569d65106c32550626822b91565643c07823', + address: ADDRESSES.klaytn.KASH, decimal: 18 }, EKL: { @@ -40,15 +41,15 @@ const TOKENS = { }, kUSDT: { decimal: 6, - address: '0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167' + address: ADDRESSES.klaytn.oUSDT }, pUSD: { decimal: 18, - address: '0x168439b5eebe8c83db9eef44a0d76c6f54767ae4' + address: ADDRESSES.klaytn.pUSD }, USDK: { decimal: 18, - address: '0xd2137fdf10bd9e4e850c17539eb24cfe28777753' + address: ADDRESSES.klaytn.USDK } } diff --git a/projects/elephantmoney/index.js b/projects/elephantmoney/index.js index b3769b3dfc..d4a7bc710f 100644 --- a/projects/elephantmoney/index.js +++ b/projects/elephantmoney/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakings } = require("../helper/staking"); const contracts = { - BUSD: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + BUSD: ADDRESSES.bsc.BUSD, TRUNK: '0xdd325C38b12903B727D16961e61333f4871A70E0', treasury: '0xCb5a02BB3a38e92E591d323d6824586608cE8cE4', LP_TRUNK: '0xf15A72B15fC4CAeD6FaDB1ba7347f6CCD1E0Aede', diff --git a/projects/ellipsis/onchain.js b/projects/ellipsis/onchain.js index 2a523d611a..871613c77e 100644 --- a/projects/ellipsis/onchain.js +++ b/projects/ellipsis/onchain.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const axios = require('axios'); const { unwrapUniswapLPs } = require('../helper/unwrapLPs'); @@ -11,9 +12,9 @@ function getBSCAddress(address) { // list of missing tokens const replaceable = { - "0x049d68029688eAbF473097a2fC38ef61633A3C7A": "0xdac17f958d2ee523a2206206994597c13d831ec7", //fUSDT -> USDT + [ADDRESSES.fantom.fUSDT]: ADDRESSES.ethereum.USDT, //fUSDT -> USDT '0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C': '0x5228a22e72ccc52d415ecfd199f99d0665e7733b', //pBTC -> pBTC on ETH - '0x54261774905f3e6E9718f2ABb10ed6555cae308a': '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', //anyBTC -> WBTC + '0x54261774905f3e6E9718f2ABb10ed6555cae308a': ADDRESSES.ethereum.WBTC, //anyBTC -> WBTC '0x03ab98f5dc94996f8c33e15cd4468794d12d41f9': '0x674c6ad92fd080e4004b2312b45f796a192d27a0', //USDN -> USDN on ETH }; diff --git a/projects/elysia/index.js b/projects/elysia/index.js index 2a451242e7..155e55ff19 100644 --- a/projects/elysia/index.js +++ b/projects/elysia/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakings } = require("../helper/staking"); const { sumTokensExport, } = require('../helper/unwrapLPs') @@ -6,10 +7,10 @@ const addresses = { elfi: "0x4da34f8264cb33a5c9f17081b9ef5ff6091116f4", el: "0x2781246fe707bb15cee3e5ea354e2154a2877b16", elStaking: "0x3F0c3E32bB166901AcD0Abc9452a3f0c5b8B2C9D", - dai: "0x6b175474e89094c44da98b954eedeac495271d0f", - usdt: "0xdac17f958d2ee523a2206206994597c13d831ec7", - busd: "0x4fabb145d64652a948d72533023f6e7a623c7c53", - usdc: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + dai: ADDRESSES.ethereum.DAI, + usdt: ADDRESSES.ethereum.USDT, + busd: ADDRESSES.ethereum.BUSD, + usdc: ADDRESSES.ethereum.USDC, elfiStaking: [ "0xb41bcd480fbd986331eeed516c52e447b50dacb4", "0xCD668B44C7Cf3B63722D5cE5F655De68dD8f2750", @@ -28,7 +29,7 @@ const moneyPools = { [addresses.usdt, '0xe0bda8e3a27e889837ae37970fe97194453ee79c'], [addresses.usdc, '0x3fea4cc5a03e372ac9cded96bd07795ac9034d71'], ], - bsc: [['0xe9e7cea3dedca5984780bafc599bd69add087d56', '0x5bb4d02a0ba38fb8b916758f11d9b256967a1f7f']] + bsc: [[ADDRESSES.bsc.BUSD, '0x5bb4d02a0ba38fb8b916758f11d9b256967a1f7f']] } function borrowed(chain) { diff --git a/projects/emberswap/index.js b/projects/emberswap/index.js index 9ea85d2b93..8a81e4d503 100644 --- a/projects/emberswap/index.js +++ b/projects/emberswap/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { stakingPricedLP } = require('../helper/staking') const EMBER = "0x6BAbf5277849265b6738e75AEC43AEfdde0Ce88D"; const VAULT = "0xFFbE92fDA81f853bcf00d3c7686d5DAd5A6600bB"; -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04"; +const WBCH = ADDRESSES.smartbch.WBCH; const FACTORY = "0xE62983a68679834eD884B9673Fb6aF13db740fF0"; const EMBER_WBCH_PAIR = "0x52c656FaF57DCbDdDd47BCbA7b2ab79e4c232C28" diff --git a/projects/emdx/index.js b/projects/emdx/index.js index b399c7a054..e52c9404e6 100644 --- a/projects/emdx/index.js +++ b/projects/emdx/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const ark = "0x3B065b08AAe6e29972058096cfA77E196590784a" const insuranceFund = "0x80ce46804010C03387a13E27729c5FBb6a309105" const clearingHouse = "0xBFB083840b0507670b92456264164E5fecd0430B" -const usdcAvalanche = "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E" +const usdcAvalanche = ADDRESSES.avax.USDC module.exports = { avax: { diff --git a/projects/empyrean/index.js b/projects/empyrean/index.js index 55722ae9d6..9abb86fc6c 100644 --- a/projects/empyrean/index.js +++ b/projects/empyrean/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -5,7 +6,7 @@ const empyreanStaking = "0xD080CBc2885c64510923Ac6F5c8896011f86a6aF"; const EMPYR = "0xE9F226a228Eb58d408FdB94c3ED5A18AF6968fE1"; const treasuryAddress = "0x4606f4e6D43d501b86Fc583f44ae27097A1F9EA7"; -const USDC = "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802"; +const USDC = ADDRESSES.aurora.USDC_e; const EMPYR_USDC_TLP = "0x6e46c69FE35eF5BB78D7f35d92645C74245a6567"; /*** Bonds TVL Portion (Treasury) *** diff --git a/projects/ensuro/index.js b/projects/ensuro/index.js index e1c0013040..e31bae3714 100644 --- a/projects/ensuro/index.js +++ b/projects/ensuro/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const addressBook = { polygon: { - usdc: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + usdc: ADDRESSES.polygon.USDC, aave_v3_usdc: "0x625E7708f30cA75bfd92586e17077590C60eb4cD", // aPolUSDC aave_v2_usdc: "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F", // amUSDC reserves: [ diff --git a/projects/enterdao/index.js b/projects/enterdao/index.js index 6708179926..0be631aa3c 100644 --- a/projects/enterdao/index.js +++ b/projects/enterdao/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const StakingContract = "0x3F148612315AaE2514AC630D6FAf0D94B8Cd8E33"; const USDC_ENTR_SUSHI_LP = "0x83b546e10917432a722444672504f0d459472171"; const yieldFarms = [ - "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", //SUSHI + ADDRESSES.ethereum.SUSHI, //SUSHI "0xbb0e17ef65f82ab018d8edd776e8dd940327b28b", //AXS "0x0391D2021f89DC339F60Fff84546EA23E337750f", //BOND "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", //MANA diff --git a/projects/epsylon/index.js b/projects/epsylon/index.js index 2a0b75871b..a4d23ebe7f 100644 --- a/projects/epsylon/index.js +++ b/projects/epsylon/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { default: BigNumber } = require("bignumber.js"); @@ -5,8 +6,8 @@ const { default: BigNumber } = require("bignumber.js"); const USDC_VAULT = "0x756d09263483dC5A6A0023bb80933db2C680703E"; const USDC_2_VAULT = "0x69e475b67052987707E953b684c7d437e15AC511"; const WFTM_VAULT = "0x22c538c1EeF31B662b71D5C8DB47847d30784976"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; -const WFTM = "0x4e15361fd6b4bb609fa63c81a2be19d873717870"; +const USDC = ADDRESSES.ethereum.USDC; +const WFTM = ADDRESSES.ethereum.FTM; async function tvl() { let balances = {}; diff --git a/projects/erasure/index.js b/projects/erasure/index.js index 237cf190ff..d2d19e7871 100644 --- a/projects/erasure/index.js +++ b/projects/erasure/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -22,7 +23,7 @@ const tokenAddresses = [ '0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671', // NMR - '0x6B175474E89094C44Da98b954EedeAC495271d0F' // DAI + ADDRESSES.ethereum.DAI // DAI ] /*================================================== diff --git a/projects/ether-fi/index.js b/projects/ether-fi/index.js index 69385e9de0..16ca1d8485 100644 --- a/projects/ether-fi/index.js +++ b/projects/ether-fi/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { misrepresentedTokens: true, ethereum: { tvl: async (_, _1, _2, { api }) => { const tvl = await api.call({ abi: 'uint256:getContractTVL', target: '0x7623e9DC0DA6FF821ddb9EbABA794054E078f8c4'}) return { - 'ethereum:0x0000000000000000000000000000000000000000': tvl + ['ethereum:' + ADDRESSES.null]: tvl } } } diff --git a/projects/ethichub/index.js b/projects/ethichub/index.js index b4821545df..cdb3f2eb90 100644 --- a/projects/ethichub/index.js +++ b/projects/ethichub/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { transformCeloAddress } = require('../helper/portedTokens'); const { pool2 } = require("../helper/pool2"); @@ -13,7 +14,7 @@ const MINIMICE_ETH = '0x21320683556BB718c8909080489F598120C554D9'; const ORIGINATOR_BRAZIL = '0x3B61CD481Be3BA62a9a544c49d6C09FCb804d0e3'; const ORIGINATOR_HONDURAS = '0x7435C0232A69270D19F8E4010571175c3f1dd955'; // Celo -const ETHIX_TOKEN_CELO = '0x9995cc8F20Db5896943Afc8eE0ba463259c931ed'; +const ETHIX_TOKEN_CELO = ADDRESSES.celo.ETHIX; const COLLATERAL_RESERVE_CELO = '0xA14B1D7E28C4F9518eb7757ddeE35a18423e1567'; const STAKED_ETHIX_CELO = '0xCb16E29d0B667BaD7266E5d0Cd59b711b6273C6B'; const MINIMICE_CELO = '0x0f497a790429685a3CfD43b841865Ee185378ff0'; diff --git a/projects/everrise/index.js b/projects/everrise/index.js index ca56359db5..3e60d0b497 100644 --- a/projects/everrise/index.js +++ b/projects/everrise/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const http = require('../helper/http'); const { getConfig } = require('../helper/cache') @@ -6,7 +7,7 @@ const { unwrapUniswapLPs, nullAddress, sumTokens2 } = require("../helper/unwrapL const { getChainTransform } = require("../helper/portedTokens"); const getPairFactory = 'function getPair(address, address) view returns (address)' -const zeroAddress = '0x0000000000000000000000000000000000000000' +const zeroAddress = ADDRESSES.null const BRIDGE_CONTROLLER = '0x0Dd4A86077dC53D5e4eAE6332CB3C5576Da51281'; const RESERVES = [ // '0x78b939518f51b6da10afb3c3238Dd04014e00057', @@ -17,7 +18,7 @@ const EVEROWN_DAO_API = 'https://app.everrise.com/prod/api/v1/contracts/active' const chainConfig = { ethereum: { chainId: '1', - WCoin: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + WCoin: ADDRESSES.ethereum.WETH, lpFactory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f', LPs: [ { @@ -26,14 +27,14 @@ const chainConfig = { }, // RISE-ETH ], reserveTokens: [ - "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC + ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.USDC, // USDC // TOKEN, ], }, bsc: { chainId: '56', - WCoin: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + WCoin: ADDRESSES.bsc.WBNB, lpFactory: '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73', LPs: [ { @@ -42,9 +43,9 @@ const chainConfig = { }, // RISE-BNB ], reserveTokens: [ - "0x55d398326f99059fF775485246999027B3197955", // USDT - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", // USDC - "0xe9e7cea3dedca5984780bafc599bd69add087d56", // BUSD + ADDRESSES.bsc.USDT, // USDT + ADDRESSES.bsc.USDC, // USDC + ADDRESSES.bsc.BUSD, // BUSD // TOKEN, ], }, @@ -59,14 +60,14 @@ const chainConfig = { }, // RISE-MATIC ], reserveTokens: [ - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", // USDT - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", // USDC + ADDRESSES.polygon.USDT, // USDT + ADDRESSES.polygon.USDC, // USDC // TOKEN, ], }, avax: { chainId: '43114', - WCoin: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + WCoin: ADDRESSES.avax.WAVAX, lpFactory: '0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10', LPs: [ { @@ -75,14 +76,14 @@ const chainConfig = { }, // RISE-AVAX ], reserveTokens: [ - "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", // USDT - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", // USDC + ADDRESSES.avax.USDt, // USDT + ADDRESSES.avax.USDC, // USDC // TOKEN, ], }, fantom: { chainId: '250', - WCoin: '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + WCoin: ADDRESSES.fantom.WFTM, lpFactory: '0x152eE697f2E276fA89E96742e9bB9aB1F2E61bE3', LPs: [ { @@ -91,7 +92,7 @@ const chainConfig = { }, // RISE-FTM ], reserveTokens: [ - "0x04068da6c83afcfa0e13ba15a6696662335d5b75", // USDC + ADDRESSES.fantom.USDC, // USDC // TOKEN, ], }, diff --git a/projects/evmoswap/index.js b/projects/evmoswap/index.js index d4870fb253..ccb4b70a36 100644 --- a/projects/evmoswap/index.js +++ b/projects/evmoswap/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getChainTransform} = require("../helper/portedTokens") const { getUniTVL } = require('../helper/unknownTokens') const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); -const madDAI = "0x63743ACF2c7cfee65A5E356A4C4A005b586fC7AA" -const madUSDC = "0x51e44FfaD5C2B122C8b635671FCC8139dc636E82" -const madUSDT = "0x7FF4a56B32ee13D7D4D405887E0eA37d61Ed919e" -const madWETH = "0x5842C5532b61aCF3227679a8b1BD0242a41752f2" -const madWBTC = "0xF80699Dc594e00aE7bA200c7533a07C1604A106D" +const madDAI = ADDRESSES.evmos.DAI +const madUSDC = ADDRESSES.evmos.USDC +const madUSDT = ADDRESSES.evmos.USDT +const madWETH = ADDRESSES.evmos.WETH +const madWBTC = ADDRESSES.evmos.WBTC //////////////////////////// UNI AMM //////////////////////////////////// const evmoswapTvl = getUniTVL({ factory: '0xF24E36e53628C3086493B9EfA785ab9DD85232EB', chain: 'evmos', useDefaultCoreAssets: true }) diff --git a/projects/evolutionland/index.js b/projects/evolutionland/index.js index dd5683bf92..9ba2a663e2 100644 --- a/projects/evolutionland/index.js +++ b/projects/evolutionland/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const ring = { @@ -7,10 +8,10 @@ const ring = { "crab": "0x7399Ea6C9d35124d893B8d9808930e9d3F211501", } const weth = { - "ethereum": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "heco": "0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F", + "ethereum": ADDRESSES.ethereum.WETH, + "heco": ADDRESSES.heco.WHT, "polygon": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - "crab": "0x2D2b97EA380b0185e9fDF8271d1AFB5d2Bf18329", + "crab": ADDRESSES.crab.WCRAB, } const lpGOLD = { diff --git a/projects/exodia/index.js b/projects/exodia/index.js index 094f44770d..496b19b8b1 100644 --- a/projects/exodia/index.js +++ b/projects/exodia/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require("../helper/unwrapLPs"); const sdk = require('@defillama/sdk'); const { transformFantomAddress } = require("../helper/portedTokens"); @@ -9,8 +10,8 @@ const wsexod = "0xe992C5Abddb05d86095B18a158251834D616f0D1" const gohm = "0x91fa20244fb509e8289ca630e5db3e9166233fdc" const mai = "0xfb98b335551a418cd0737375a2ea0ded62ea213b" const treasury = "0x6a654d988eebcd9ffb48ecd5af9bd79e090d8347" -const dai = "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e" -const wftm = "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83" +const dai = ADDRESSES.fantom.DAI +const wftm = ADDRESSES.fantom.WFTM const beetsvault = "0x20dd72Ed959b6147912C2e529F0a0C651c33c9ce" const poolid = "0xa216aa5d67ef95dde66246829c5103c7843d1aab000100000000000000000112" diff --git a/projects/fantOHM/index.js b/projects/fantOHM/index.js index fc8eb1c987..722533889c 100644 --- a/projects/fantOHM/index.js +++ b/projects/fantOHM/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const {staking} = require("../helper/staking"); const {sumTokensAndLPsSharedOwners} = require("../helper/unwrapLPs"); @@ -32,8 +33,8 @@ const masterChefContract = "0x4897EB3257A5391d80B2f73FB0748CCd4150b586"; // Moonriver TVL should consist of - treasury value and investments on gnosis safe // const movr_transforms = { - "0x748134b5f553f2bcbd78c6826de99a70274bdeb3": "ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC - "0xe936caa7f6d9f5c9e907111fcaf7c351c184cda7": "ethereum:0xdac17f958d2ee523a2206206994597c13d831ec7", // USDT + "0x748134b5f553f2bcbd78c6826de99a70274bdeb3": "ethereum:" + ADDRESSES.ethereum.USDC, // USDC + "0xe936caa7f6d9f5c9e907111fcaf7c351c184cda7": "ethereum:" + ADDRESSES.ethereum.USDT, // USDT "0xfa1fbb8ef55a4855e5688c0ee13ac3f202486286": "fantom:0xfa1FBb8Ef55A4855E5688C0eE13aC3f202486286", // FHM } @@ -61,8 +62,8 @@ async function moonriverTvl(timestamp, block, chainBlocks) { // Fantom TVL should consist of - treasury value and investments on gnosis safe // const fantom_transforms = { - "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e": "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + [ADDRESSES.fantom.DAI]: ADDRESSES.ethereum.DAI, // DAI + [ADDRESSES.fantom.USDC]: ADDRESSES.ethereum.USDC, // USDC } async function fantomTvl(timestamp, _, {fantom: block}) { @@ -70,23 +71,23 @@ async function fantomTvl(timestamp, _, {fantom: block}) { // treasury value await sumTokensAndLPsSharedOwners(balances, [ - ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], // DAI - ["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", false], // wFTM + [ADDRESSES.fantom.DAI, false], // DAI + [ADDRESSES.fantom.WFTM, false], // wFTM ["0x6fc9383486c163fa48becdec79d6058f984f62ca", false], // USDB - ["0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", false], // USDC + [ADDRESSES.fantom.USDC, false], // USDC ["0xd77fc9c4074b56ecf80009744391942fbfddd88b", true], // DAI/FHM ], [fantomTreasuryContract], block, "fantom", addr => (fantom_transforms[addr.toLowerCase()] ? fantom_transforms[addr.toLowerCase()] : `fantom:${addr}`)) // treasury values await Promise.all([ - balanceOfStablePool(fantomTreasuryContract, "0xD5E946b5619fFf054c40D38c976f1d06C1e2fA82", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", balances, block), // USDB-DAI stable pool + balanceOfStablePool(fantomTreasuryContract, "0xD5E946b5619fFf054c40D38c976f1d06C1e2fA82", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:" + ADDRESSES.fantom.DAI, balances, block), // USDB-DAI stable pool ]); // investments await Promise.all([ balanceOf(fantomGnosisContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB - balanceOf(fantomGnosisContract, "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", "0x6b175474e89094c44da98b954eedeac495271d0f", balances, block), // DAI + balanceOf(fantomGnosisContract, ADDRESSES.fantom.DAI, ADDRESSES.ethereum.DAI, balances, block), // DAI beetsFtm_BeetsLp(fantohmDaoDeployerWallet, balances, block), // beets/wftm LP lqdrFtm_BeetsLp(fantohmDaoDeployerWallet, balances, block), // lqdr/wftm LP ]); @@ -96,7 +97,7 @@ async function fantomTvl(timestamp, _, {fantom: block}) { balanceOf(ftmTradfi3mContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB balanceOf(ftmTradfi6mContract, "0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block), // USDB - balanceOfStablePool(masterChefContract, "0xD5E946b5619fFf054c40D38c976f1d06C1e2fA82", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", balances, block), // USDB-DAI stable pool + balanceOfStablePool(masterChefContract, "0xD5E946b5619fFf054c40D38c976f1d06C1e2fA82", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", "fantom:" + ADDRESSES.fantom.DAI, balances, block), // USDB-DAI stable pool ]); return balances; @@ -111,16 +112,16 @@ async function ethTvl(timestamp, block, chainBlocks) { // investments await Promise.all([ balanceOf(ethGnosisContract, "0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9", "ethereum:0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9", balances, block, "ethereum"), // wLUNA - balanceOf(ethGnosisContract, "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", "ethereum:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", balances, block, "ethereum"), // wBTC - balanceOf(ethGnosisContract, "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "ethereum:0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", balances, block, "ethereum"), // wETH - balanceOf(ethGnosisContract, "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", "ethereum:0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", balances, block, "ethereum"), // MATIC + balanceOf(ethGnosisContract, ADDRESSES.ethereum.WBTC, "ethereum:" + ADDRESSES.ethereum.WBTC, balances, block, "ethereum"), // wBTC + balanceOf(ethGnosisContract, ADDRESSES.ethereum.WETH, "ethereum:" + ADDRESSES.ethereum.WETH, balances, block, "ethereum"), // wETH + balanceOf(ethGnosisContract, ADDRESSES.ethereum.MATIC, "ethereum:" + ADDRESSES.ethereum.MATIC, balances, block, "ethereum"), // MATIC balanceOf(ethGnosisContract, "0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", "ethereum:0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", balances, block, "ethereum"), // DUSK ]); // usdbalance.com await Promise.all([ balanceOf(ethGnosisContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB - balanceOf(ethGnosisContract, "0x6b175474e89094c44da98b954eedeac495271d0f", "ethereum:0x6b175474e89094c44da98b954eedeac495271d0f", balances, block, "ethereum"), // DAI + balanceOf(ethGnosisContract, ADDRESSES.ethereum.DAI, "ethereum:" + ADDRESSES.ethereum.DAI, balances, block, "ethereum"), // DAI balanceOf(ethTreasuryContract, "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B", "fantom:0x6fc9383486c163fa48becdec79d6058f984f62ca", balances, block, "ethereum"), // USDB @@ -141,7 +142,7 @@ async function bobaTvl(timestamp, block, chainBlocks) { const balance = (await sdk.api.erc20.balanceOf({ chain: "boba", block: chainBlocks.boba, - target: "0xa18bf3994c0cc6e3b63ac420308e5383f53120d7", + target: ADDRESSES.boba.BOBA, owner: fantohmDaoDeployerWallet, })).output; @@ -200,7 +201,7 @@ async function beetsFtm_BeetsLp(owner, balances, block) { const poolId = "0xcde5a11a4acb4ee4c805352cec57e236bdbc3837000200000000000000000019"; const beets = "0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e"; - const wftm = "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"; + const wftm = ADDRESSES.fantom.WFTM; const fBeetsBalance = (await sdk.api.abi.call({ chain: "fantom", @@ -255,7 +256,7 @@ async function lqdrFtm_BeetsLp(owner, balances, block) { const lqdr = "0x10b620b2dbAC4Faa7D7FFD71Da486f5D44cd86f9"; const beets = "0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e"; - const wftm = "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"; + const wftm = ADDRESSES.fantom.WFTM; const lqdrFtmBalance = (await sdk.api.abi.call({ chain: "fantom", diff --git a/projects/fantasm/index.js b/projects/fantasm/index.js index 5c4db4a0cf..07121d26ea 100644 --- a/projects/fantasm/index.js +++ b/projects/fantasm/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const Abis = require("./abi.json"); const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -5,7 +6,7 @@ const { staking } = require("../helper/staking"); const Contracts = { fantomV1: { - wftm: "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", + wftm: ADDRESSES.fantom.WFTM, fsm: "0xaa621D2002b5a6275EF62d7a065A865167914801", bank: "0x880672AB1d46D987E5d663Fc7476CD8df3C9f937", multiFeeDistribution: "0x348634Ea9367690383716FbCa8f225366bbC5966", @@ -17,7 +18,7 @@ const Contracts = { ], }, fantom: { - wftm: "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", + wftm: ADDRESSES.fantom.WFTM, fxm: "0x132b56763C0e73F95BeCA9C452BadF89802ba05e", bank: "0xa3B99CdFdDe2216AfB1D58D6108cC93fea413A76", multiFeeDistribution: "0xC4510604504Fd50f64499fF6186AEf1F740dE38B", diff --git a/projects/fantom.js b/projects/fantom.js index d5c4532885..6e9fa43e0e 100644 --- a/projects/fantom.js +++ b/projects/fantom.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { get } = require('./helper/http') const { GraphQLClient, } = require("graphql-request"); const BigNumber = require("bignumber.js"); @@ -22,7 +23,7 @@ async function fetch() { var tokens = [ { - address: "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", + address: ADDRESSES.fantom.WFTM, symbol: "WFTM", }, { diff --git a/projects/fei/index.js b/projects/fei/index.js index 070e85f985..384a0f4e62 100644 --- a/projects/fei/index.js +++ b/projects/fei/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') -const weth = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' +const weth = ADDRESSES.ethereum.WETH async function tvl(timestamp, block) { const balances = {} @@ -47,7 +48,7 @@ async function tvl(timestamp, block) { ] await sumTokensAndLPsSharedOwners(balances, [ ['0x94b0a3d511b6ecdb17ebf877278ab030acb0a878', true], // FEI-ETH Uni V2 LP (NOTE: this counts both FEI and ETH, but only the FEI doesn't count as PCV) - ['0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', false], // stETH + [ADDRESSES.ethereum.STETH, false], // stETH ['0x030ba81f1c18d280636f32af80b9aad02cf0854e', false], // aWETH ['0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5', false], // cETH ['0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', false], // cDAI diff --git a/projects/fenrirfinance/index.js b/projects/fenrirfinance/index.js index 5c70dfd2a3..c4b9cbd318 100644 --- a/projects/fenrirfinance/index.js +++ b/projects/fenrirfinance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {fullCoumpoundExports} = require('../helper/compound'); const replace = { - "0x250632378e573c6be1ac2f97fcdf00515d0aa91b": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // beth->weth - "0xfb6115445bff7b52feb98650c87f44907e58f802": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", // aave + [ADDRESSES.bsc.BETH]: ADDRESSES.ethereum.WETH, // beth->weth + "0xfb6115445bff7b52feb98650c87f44907e58f802": ADDRESSES.ethereum.AAVE, // aave } -module.exports = fullCoumpoundExports("0x56b4B49f31517be8DacC2ED471BCc20508A0e29D", "bsc", "0x444ADC2D487090A660ebFdDd934d0E962410d8Cc", "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", addr=>{ +module.exports = fullCoumpoundExports("0x56b4B49f31517be8DacC2ED471BCc20508A0e29D", "bsc", "0x444ADC2D487090A660ebFdDd934d0E962410d8Cc", ADDRESSES.bsc.WBNB, addr=>{ return replace[addr.toLowerCase()] || `bsc:${addr}` }) diff --git a/projects/fiatdao/index.js b/projects/fiatdao/index.js index 4e837e2940..ba64b4c112 100644 --- a/projects/fiatdao/index.js +++ b/projects/fiatdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const { default: BigNumber } = require("bignumber.js") const abi = require('./abi.json') @@ -9,8 +10,8 @@ const { getConfig } = require('../helper/cache') const STAKING_CONTRACT = "0xe98ae8cD25CDC06562c29231Db339d17D02Fd486" const STAKING_NFT = "0xE9F9936a639809e766685a436511eac3Fb1C85bC" const RGT = "0xD291E7a03283640FDc51b121aC401383A46cC623" -const YFI = "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e" -const MKR = "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2" +const YFI = ADDRESSES.ethereum.YFI +const MKR = ADDRESSES.ethereum.MKR const BOND = "0x0391D2021f89DC339F60Fff84546EA23E337750f" const UMA = "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" const GOHM = "0x0ab87046fbb341d058f17cbc4c1133f25a20a52f" @@ -66,7 +67,7 @@ async function tvl(timestamp, block) { const vaults = [] tokensAll.forEach(({ output, input: { target } }) => { - if (output !== '0x0000000000000000000000000000000000000000') { + if (output !== ADDRESSES.null) { vaults.push(target) tokens.push(output) } diff --git a/projects/filda/index.js b/projects/filda/index.js index 9d850c9a74..ce4e00009b 100644 --- a/projects/filda/index.js +++ b/projects/filda/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abi.json'); @@ -34,12 +35,12 @@ async function getUnderlying(block, cToken) { function transformAddress(token) { if (token === '0x6f259637dcd74c767781e37bc6133cd6a68aa161') { return token - } else if (token === '0x3D760a45D0887DFD89A2F5385a236B29Cb46ED2a') { - return '0x6b175474e89094c44da98b954eedeac495271d0f';//DAI => DAI - } else if (token === '0x9362Bbef4B8313A8Aa9f0c9808B80577Aa26B73B') { - return '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';//USDC => USDC - } else if (token === "0x5eE41aB6edd38cDfB9f6B4e6Cf7F75c87E170d98") { - return "0x0000000000085d4780b73119b644ae5ecd22b376" //TUSD + } else if (token === ADDRESSES.heco.DAI_HECO) { + return ADDRESSES.ethereum.DAI;//DAI => DAI + } else if (token === ADDRESSES.heco.USDC_HECO) { + return ADDRESSES.ethereum.USDC;//USDC => USDC + } else if (token === ADDRESSES.heco.TUSD) { + return ADDRESSES.ethereum.TUSD //TUSD } else { return 'heco:' + token } diff --git a/projects/finext-finance/index.js b/projects/finext-finance/index.js index 758b37b44a..957cdcb354 100644 --- a/projects/finext-finance/index.js +++ b/projects/finext-finance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const FINX = "0xb6943825E461C6d8f2DDF17307C0571972f169FB"; const GENESIS_POOL = "0x0711c9f411FFc4Fe331256E83ee8C910a997A16a"; -const USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; -const WETH = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"; +const USDC = ADDRESSES.arbitrum.USDC; +const WETH = ADDRESSES.arbitrum.WETH; module.exports = { methodology: "Calculator USDC and WETH staked to genesis pool contract", diff --git a/projects/finnexus/index.js b/projects/finnexus/index.js index 1efa55877e..f0cc21f4d1 100644 --- a/projects/finnexus/index.js +++ b/projects/finnexus/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const config = { ethereum: [ // ['0xef9cd7882c067686691b6ff49e650b43afbbcc6b', '0x919a35A4F40c479B3319E3c3A2484893c06fd7de'], - ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xff60d81287BF425f7B2838a61274E926440ddAa6'], - ['0xdac17f958d2ee523a2206206994597c13d831ec7', '0xff60d81287BF425f7B2838a61274E926440ddAa6'], + [ADDRESSES.ethereum.USDC, '0xff60d81287BF425f7B2838a61274E926440ddAa6'], + [ADDRESSES.ethereum.USDT, '0xff60d81287BF425f7B2838a61274E926440ddAa6'], ['0x853d955acef822db058eb8505911ed77f175b99e', '0x6f88e8fbF5311ab47527f4Fb5eC10078ec30ab10'], ], wan: [ @@ -12,8 +13,8 @@ const config = { ], bsc: [ // ['0xdfd9e2a17596cad6295ecffda42d9b6f63f7b5d5', '0xf2E1641b299e60a23838564aAb190C52da9c9323'], - ['0xe9e7cea3dedca5984780bafc599bd69add087d56', '0xA3f70ADd496D2C1c2C1Be5514A5fcf0328337530'], - ['0x55d398326f99059fF775485246999027B3197955', '0xA3f70ADd496D2C1c2C1Be5514A5fcf0328337530'], + [ADDRESSES.bsc.BUSD, '0xA3f70ADd496D2C1c2C1Be5514A5fcf0328337530'], + [ADDRESSES.bsc.USDT, '0xA3f70ADd496D2C1c2C1Be5514A5fcf0328337530'], ], } diff --git a/projects/firebird/index.js b/projects/firebird/index.js index 91f6554909..69dac2a086 100644 --- a/projects/firebird/index.js +++ b/projects/firebird/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const {uniTvlExport} = require('../helper/calculateUniTvl.js') const { sumTokens2 } = require('../helper/unwrapLPs') const FACTORY = '0x5De74546d3B86C8Df7FEEc30253865e1149818C8'; const stablePool = "0x01C9475dBD36e46d1961572C8DE24b74616Bae9e" -const stablePoolTokens = ['0xc2132d05d31c914a87c6611c10748aeb04b58e8f', '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063'] +const stablePoolTokens = [ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC, ADDRESSES.polygon.DAI] async function tvl(_, ethBlock, chainBlocks) { const block = chainBlocks['polygon'] diff --git a/projects/flare-loans/index.js b/projects/flare-loans/index.js index e8b74a6538..ce7201cfa0 100644 --- a/projects/flare-loans/index.js +++ b/projects/flare-loans/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') async function tvl(time, ethB, {songbird: block}){ return { "songbird": Number( - (await sdk.api.erc20.balanceOf({target: "0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED", owner: "0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f", block, chain:'songbird'})).output + (await sdk.api.erc20.balanceOf({target: ADDRESSES.songbird.WSGB, owner: "0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f", block, chain:'songbird'})).output )/1e18 } } diff --git a/projects/flarefarm/index.js b/projects/flarefarm/index.js index 05605ef6bf..cbd68544ea 100644 --- a/projects/flarefarm/index.js +++ b/projects/flarefarm/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumUnknownTokens } = require("../helper/unknownTokens"); -const WSGB = '0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED' -const CANARY_DOLLAR = '0x70Ad7172EF0b131A1428D0c1F66457EB041f2176' - const EXFI = '0xC348F894d0E939FE72c467156E6d7DcbD6f16e21'; +const WSGB = ADDRESSES.songbird.WSGB +const CANARY_DOLLAR = ADDRESSES.songbird.CAND + const EXFI = ADDRESSES.songbird.EXFI; const SFIN = '0x0D94e59332732D18CF3a3D457A8886A2AE29eA1B'; const chain = 'songbird' diff --git a/projects/flatcoin/index.js b/projects/flatcoin/index.js index 11c7b1b6f8..54b554f80c 100644 --- a/projects/flatcoin/index.js +++ b/projects/flatcoin/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/chain/tron') const owner = 'TV8ndiKP98SF537BM9XvEbzkY2TerXNzEs' -const token = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' +const token = ADDRESSES.tron.USDT async function tvl() { return sumTokens({ tokensAndOwners: [[token, owner]], }) diff --git a/projects/float-capital/index.js b/projects/float-capital/index.js index 8fbca25f0d..35632c7c60 100644 --- a/projects/float-capital/index.js +++ b/projects/float-capital/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens, unwrapCreamTokens } = require("../helper/unwrapLPs"); const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -18,12 +19,12 @@ const avaults = [ "0x47a21F14794b6229cc2a1ddfe4498C9e48f1C16c", ]; const avDAI = "0x47afa96cdc9fab46904a55a6ad4bf6660b53c38a"; -const DAI = "0xd586e7f844cea2f87f50152665bcbc2c279d8d70"; +const DAI = ADDRESSES.avax.DAI; const transforms = { "0x47afa96cdc9fab46904a55a6ad4bf6660b53c38a": - "0x6b175474e89094c44da98b954eedeac495271d0f", // avDAI - "0xd586e7f844cea2f87f50152665bcbc2c279d8d70": - "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI + ADDRESSES.ethereum.DAI, // avDAI + [ADDRESSES.avax.DAI]: + ADDRESSES.ethereum.DAI, // DAI }; async function polyTvl(time, ethBlock, chainBlocks) { diff --git a/projects/floor-dao/index.js b/projects/floor-dao/index.js index c1dd65a8cd..d296a6bbcb 100644 --- a/projects/floor-dao/index.js +++ b/projects/floor-dao/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') const sdk = require("@defillama/sdk"); // https://docs.floor.xyz/fundamentals/treasury -const WETH = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const WETH = ADDRESSES.ethereum.WETH const NFTX_LP_STAKING = '0x688c3e4658b5367da06fd629e41879beab538e37' const treasury = '0x91E453f442d25523F42063E1695390e325076ca2' diff --git a/projects/fluity/index.js b/projects/fluity/index.js index ae8dd5d187..97621c1882 100644 --- a/projects/fluity/index.js +++ b/projects/fluity/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLiquityTvl } = require("../helper/liquity"); -const BNB_ADDRESS = '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c'; +const BNB_ADDRESS = ADDRESSES.bsc.WBNB; // TroveManager has a record of total system collateral const TROVE_MANAGER_ADDRESS = "0xe041c4099C0d6dcfC52C56A556EE4289D2E4b7C5"; diff --git a/projects/forgesx/index.js b/projects/forgesx/index.js index 302de98fa8..952f6a7c8d 100644 --- a/projects/forgesx/index.js +++ b/projects/forgesx/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const FORGE_SOL = '0x4938D2016e7446a24b07635611bD34289Df42ECb' -const USDC_TOKEN = '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8' +const USDC_TOKEN = ADDRESSES.arbitrum.USDC module.exports = { methodology: 'counts the number of USDC tokens deposited as collateral in the Forge.sol contract.', diff --git a/projects/fortress-lending/index.js b/projects/fortress-lending/index.js index e3deefa9fe..e6eb037d6f 100644 --- a/projects/fortress-lending/index.js +++ b/projects/fortress-lending/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { compoundExports } = require("../helper/compound"); -const {tvl:lendingTvl, borrowed} = compoundExports("0x67340bd16ee5649a37015138b3393eb5ad17c195", "bsc", "0xE24146585E882B6b59ca9bFaaaFfED201E4E5491", "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c") +const {tvl:lendingTvl, borrowed} = compoundExports("0x67340bd16ee5649a37015138b3393eb5ad17c195", "bsc", "0xE24146585E882B6b59ca9bFaaaFfED201E4E5491", ADDRESSES.bsc.WBNB) module.exports = { timetravel: true, diff --git a/projects/fortress/index.js b/projects/fortress/index.js index 2fa0f73c64..d398d87ac6 100644 --- a/projects/fortress/index.js +++ b/projects/fortress/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0xb8e8d2E97C5F4594F65CCe0f5888C641C7A3a056"; module.exports = ohmTvl(treasuryAddress, [ - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], + [ADDRESSES.avax.WAVAX, false], ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], ["0x3e5f198b46f3de52761b02d4ac8ef4ceceac22d6", true], ["0x2a91134162e2da1394df9e5e64608109d73ed3a0", true], diff --git a/projects/fortunedao.js b/projects/fortunedao.js index e98cd57bd7..7cfc8f4486 100644 --- a/projects/fortunedao.js +++ b/projects/fortunedao.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { ohmTvl } = require('./helper/ohm') module.exports=ohmTvl("0xC8F249cDCDCBBa52d0908Dd201F20Af926710a9c", [ ["0xF2001B145b43032AAF5Ee2884e456CCd805F677D", false], ["0x88ef5a29eEc8BAAAb8c1111A57Ad2FCeC8aD6109", true], ], "cronos", "0xAFfB721B859db8300F7a13d8E80E7b74845Fe47a", "0xcA558149225Fb386B9c26716e8C35a650C74d35e", -()=>"0x6b175474e89094c44da98b954eedeac495271d0f", undefined, false) +()=>ADDRESSES.ethereum.DAI, undefined, false) diff --git a/projects/fountain.js b/projects/fountain.js index d09f8177f6..e74cbdb583 100644 --- a/projects/fountain.js +++ b/projects/fountain.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { compoundExports } = require("./helper/compound"); module.exports = { @@ -7,7 +8,7 @@ module.exports = { '0xA7684aE7e07Dac91113900342b3ef25B9Fd1D841', 'oasis', '0xD7d588bAbFb99E82Cd6dd0cA7677A5599AA678B5', - '0x21C718C22D52d0F3a789b752D4c2fD5908a8A733', + ADDRESSES.oasis.wROSE, ) }, }; // node test.js projects/fountain.js \ No newline at end of file diff --git a/projects/fractal-protocol/index.js b/projects/fractal-protocol/index.js index 12250e6f30..fca207358e 100644 --- a/projects/fractal-protocol/index.js +++ b/projects/fractal-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { userInfo } = require('../pendle/abi.json') const { sumTokens2 } = require('../helper/unwrapLPs') @@ -28,7 +29,7 @@ module.exports = { '0x33baeDa08b8afACc4d3d07cf31d49FC1F1f3E893': tUSDBal, '0x10BE382cfAB53e0aBD093D6801B5e95C6Aedb715': convexTUSD, } - return sumTokens2({ balances, owners: [FRACTAL_VAULT_CONTRACT, YIELD_RESERVE,], tokens: ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'], block, }) + return sumTokens2({ balances, owners: [FRACTAL_VAULT_CONTRACT, YIELD_RESERVE,], tokens: [ADDRESSES.ethereum.USDC], block, }) }, borrowed: async (_, block) => { const loanContract = '0xf0e3020934450152308e4a84a3c4a5801fcb8d29' diff --git a/projects/fractional-art.js b/projects/fractional-art.js index 8a4c688c71..f464b5008b 100644 --- a/projects/fractional-art.js +++ b/projects/fractional-art.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { PromisePool } = require('@supercharge/promise-pool') const { BigNumber } = require("bignumber.js"); @@ -42,7 +43,7 @@ function exampleVaultDebug() { "contractAddress": "0xbaac2b4491727d78d2b78815144570b9f2fe8899", "pools": [{ "pool": "0x7731CA4d00800b6a681D031F565DeB355c5b77dA", - "tokens": ["0xBAac2B4491727D78D2b78815144570b9f2Fe8899", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"], + "tokens": ["0xBAac2B4491727D78D2b78815144570b9f2Fe8899", ADDRESSES.ethereum.WETH], "provider": "UNISWAP_V3" }], "tokenAddress": "0xabEFBc9fD2F806065b4f3C237d4b59D9A97Bcac7", @@ -81,7 +82,7 @@ function getVaultsTvlApi(vaults) { return vaults.reduce((acc, vault) => acc.plus(BigNumber(vault.analytics ? vault.analytics.tvlUsd : 0)), BigNumber(0)) } -const usdc = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' +const usdc = ADDRESSES.ethereum.USDC /* async function tvl_api(timestamp, block, chainBlocks, chain) { const { vaults, openedVaultsCount } = await retrieveVaultsAPI() return { [usdc]: getVaultsTvlApi(vaults).times(1e6) } diff --git a/projects/frakt/index.js b/projects/frakt/index.js index 093832629d..19e438ad8c 100644 --- a/projects/frakt/index.js +++ b/projects/frakt/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getProvider, getSolBalances, } = require('../helper/solana') const { Program, } = require("@project-serum/anchor"); const { getConfig } = require('../helper/cache') @@ -31,11 +32,11 @@ async function getData() { } const tvl = async () => { - return { ['solana:So11111111111111111111111111111111111111112']: (await getData()).tvl } + return { ['solana:' + ADDRESSES.solana.SOL]: (await getData()).tvl } }; const borrowed = async () => { - return { ['solana:So11111111111111111111111111111111111111112']: (await getData()).borrowed } + return { ['solana:' + ADDRESSES.solana.SOL]: (await getData()).borrowed } } module.exports = { diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js index 1010a770d5..a59e01d2df 100644 --- a/projects/fraxfinance/index.js +++ b/projects/fraxfinance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const BigNumber = require("bignumber.js"); const { staking, stakings } = require("../helper/staking"); const { sumTokens } = require("../helper/unwrapLPs"); -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDC = ADDRESSES.ethereum.USDC; const FXS = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0"; const FEI3CRVs = [ @@ -146,8 +147,8 @@ const fantomTvl = async (timestamp, ethBlock, chainBlocks) => { // Curve FRAX2Pool await sumTokens(balances, [ ["0x8866414733f22295b7563f9c5299715d2d76caf4", "0x7a656b342e14f745e2b164890e88017e27ae7320"], - ["0x04068da6c83afcfa0e13ba15a6696662335d5b75", "0xbea9f78090bdb9e662d8cb301a00ad09a5b756e9"] - ], block, chain, addr => addr === "0x8866414733f22295b7563f9c5299715d2d76caf4" ? "0x6b175474e89094c44da98b954eedeac495271d0f" : `${chain}:${addr}`) + [ADDRESSES.fantom.USDC, "0xbea9f78090bdb9e662d8cb301a00ad09a5b756e9"] + ], block, chain, addr => addr === "0x8866414733f22295b7563f9c5299715d2d76caf4" ? [ADDRESSES.ethereum.DAI]: `${chain}:${addr}`) return balances; } diff --git a/projects/ftmguru/index.js b/projects/ftmguru/index.js index 0b0f35d20a..ed3d2e9428 100644 --- a/projects/ftmguru/index.js +++ b/projects/ftmguru/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const ITVL = { pool2: "uint256:pool2", staking: "uint256:staking", @@ -5,7 +6,7 @@ const ITVL = { } const tvlGuru = "0x0786c3a78f5133F08C1c70953B8B10376bC6dCad"; //On-Chain Universal TVL Finder -const USD = "fantom:0x04068DA6C83AFCFA0e13ba15A6696662335D5B75"; //same as abi.call({target:tvlGuru,abi:ITVL[3]}) +const USD = "fantom:" + ADDRESSES.fantom.USDC; //same as abi.call({target:tvlGuru,abi:ITVL[3]}) //NOTE: USD===fantom:USDC is used explicitly to reduce EVM calls by this adapter. It makes this process faster. function tvl(abi) { diff --git a/projects/fujidao/index.js b/projects/fujidao/index.js index 58485150b9..946cfd5c9a 100644 --- a/projects/fujidao/index.js +++ b/projects/fujidao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {sumTokens} = require('../helper/unwrapLPs'); const abi = require('./abi.json'); const sdk = require('@defillama/sdk'); @@ -8,11 +9,11 @@ const {polygonContracts} = require('./polygon'); const {arbitrumContracts} = require('./arbitrum'); const {optimismContracts} = require('./optimism'); -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; -const wbtc = "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"; -const ftm = "0x4E15361FD6b4BB609Fa63C81A2be19d873717870"; -const matic = '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0'; -const usdc= "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; +const weth = ADDRESSES.ethereum.WETH; +const wbtc = ADDRESSES.ethereum.WBTC; +const ftm = ADDRESSES.ethereum.FTM; +const matic = ADDRESSES.ethereum.MATIC; +const usdc= ADDRESSES.ethereum.USDC; const marketsupply = async (contract, block, chain) => { return await sdk.api.abi.multiCall( diff --git a/projects/fusion/index.js b/projects/fusion/index.js index a84298799c..1b1b8b34d9 100644 --- a/projects/fusion/index.js +++ b/projects/fusion/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // Set Helpers const { stakings } = require("../helper/staking"); @@ -7,7 +8,7 @@ const { mergeExports } = require("../helper/utils"); // Set NULL, Factories -const nullAddress = "0x0000000000000000000000000000000000000000"; +const nullAddress = ADDRESSES.null; const dexFactory = "0x9550b0c83AD5a58898cD4267987Af67e7E52bF55"; // 87, 250 const dexFactoryClassic = "0x9fAEd210e14F95a15b89C0D09D1a55519aC2F26d"; // 61 @@ -19,8 +20,8 @@ const sntClassic = "0x5D33f65Cc32CAB4065074E8fb1c08Df727e7F7cB"; // 61 // Set NUSD Addresses -const nusdNovaNetwork = "0x1F5396f254EE25377A5C1b9c6BfF5f44e9294fFF"; // 87 -const nusdFantom = "0xC5cd01e988cD0794E05ab80F2BCdbDF13cE08BD3"; // 250 +const nusdNovaNetwork = ADDRESSES.nova.NUSD; // 87 +const nusdFantom = ADDRESSES.fantom.nUSD; // 250 const nusdClassic = "0xab1E9D7551c1B161cedf96AeaC66b95bc5cCd7d4"; // 61 // Set Staking Protocols diff --git a/projects/future-swap/index.js b/projects/future-swap/index.js index 77bc34bc0e..09b8e465e0 100644 --- a/projects/future-swap/index.js +++ b/projects/future-swap/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs") const { sumUnknownTokens } = require("../helper/unknownTokens") const FindoraStableCoins = { - BNB_BUSD: "0xE80EB4a234f718eDc5B76Bb442653827D20Ebb2d", - BNB_USDT: "0x93EDFa31D7ac69999E964DAC9c25Cd6402c75DB3", - ETHEREUM_USDC: "0x2e8079E0fE49626AF8716fC38aDEa6799065D7f7", - ETHEREUM_USDT: "0x0632baa26299C9972eD4D9AfFa3FD057A72252Ff", + BNB_BUSD: ADDRESSES.findora.BUSD_b, + BNB_USDT: ADDRESSES.findora.USDT_b, + ETHEREUM_USDC: ADDRESSES.findora.USDC_e, + ETHEREUM_USDT: ADDRESSES.findora.USDT_e, }; const FutureSwapContracts = { diff --git a/projects/futureswap/index.js b/projects/futureswap/index.js index a5f0b7e6fc..d4cf03ead5 100644 --- a/projects/futureswap/index.js +++ b/projects/futureswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') async function tvl(timestamp, block) { @@ -9,8 +10,8 @@ async function tvl(timestamp, block) { ]; const tokens = [ - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDC, ]; return sumTokens2({ block, tokens, owners: contracts }) } @@ -23,9 +24,9 @@ async function arbitrum(timestamp, _, { arbitrum: block }) { ]; const tokens = [ - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.WBTC, ]; return sumTokens2({ block, tokens, owners: contracts, chain: 'arbitrum' }) } @@ -38,9 +39,9 @@ async function avax(timestamp, _, { avax: block }) { ]; const tokens = [ - '0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd', - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', - '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + ADDRESSES.avax.JOE, + ADDRESSES.avax.USDC, + ADDRESSES.avax.WAVAX, ]; return sumTokens2({ block, tokens, owners: contracts, chain: 'avax',}) } diff --git a/projects/gaia-dao/index.js b/projects/gaia-dao/index.js index 5f38e2835c..2b922a6cc5 100644 --- a/projects/gaia-dao/index.js +++ b/projects/gaia-dao/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const gaia = "0x9f6aEDcA032b1092E08b848FC9D6F29139370837"; const stakingAdd = "0x89884B045Ed93067b28C2554a9CB877a41a8fA73"; const treasury = "0x15E5A559e67Cb6CAB391821635B351D43E2371b2"; const treasuryTokens = [ - ["0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", false], // USDC - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], // WAVAX - ["0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", false], // WETH + [ADDRESSES.avax.USDC_e, false], // USDC + [ADDRESSES.avax.WAVAX, false], // WAVAX + [ADDRESSES.avax.WETH_e, false], // WETH ["0x6Ca7AAc252FeD4894132Ae6E6d96bFc739d9FC3a", true] // GAIA USDC JLP ]; diff --git a/projects/gainsNetwork.js b/projects/gainsNetwork.js index 32456e0e80..25ddb327f6 100644 --- a/projects/gainsNetwork.js +++ b/projects/gainsNetwork.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { pool2 } = require("./helper/pool2"); const { staking } = require("./helper/staking"); const { sumTokens2 } = require("./helper/unwrapLPs"); const tokens = { polygon: { - DAI: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + DAI: ADDRESSES.polygon.DAI, dQUICK: "0xf28164a485b0b2c90639e47b0f377b4a438a16b1", }, arbitrum: { - DAI: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + DAI: ADDRESSES.optimism.DAI, }, }; diff --git a/projects/galaxygoggle/index.js b/projects/galaxygoggle/index.js index 4f3ef05204..7b2fc507fe 100644 --- a/projects/galaxygoggle/index.js +++ b/projects/galaxygoggle/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); @@ -8,8 +9,8 @@ const gg = "0xF2F7CE610a091B94d41D69f4fF1129434a82E2f0" const treasury = "0xD5F922e23693e552793fE0431F9a95ba67A60A23" const dao = "0xDEEdd1646984F9372Cc9D3d7E13AC1606cC2B548" const mim = "0x130966628846BFd36ff31a822705796e8cb8C18D" -const wavax = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" -const joe = "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" +const wavax = ADDRESSES.avax.WAVAX +const joe = ADDRESSES.avax.JOE async function tvl(timestamp, block, chainBlocks) { const balances = {}; @@ -35,7 +36,7 @@ const bscGG = "0xcAf23964Ca8db16D816eB314a56789F58fE0e10e"; const bscTreasury = "0xF76C9753507B3Df0867EB02D86d07C6fFcEecaf1"; const bscStaking = "0x97209Cf7a6FccC388eEfF85b35D858756f31690d"; const treasuryTokensBSC = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0x13Cf29b3F58f777dDeD38278F7d938401f6b260c", true] // GG-BUSD ] diff --git a/projects/gale/index.js b/projects/gale/index.js index 95ba9e6c1b..a893ac975a 100644 --- a/projects/gale/index.js +++ b/projects/gale/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const config = { @@ -6,7 +7,7 @@ const config = { tokenContract: "0x627E86E9eC832b59018Bf91456599e752288Aa97", liquidityContract: "0x1fC3152de89b0c6c36F0d330b7Be369d6dDB219F", vaultContract: "0x973Abe726E3e37bbD8501B2D8909Fa59535Babdd", - busd: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + busd: ADDRESSES.bsc.BUSD, } } diff --git a/projects/garble-money/index.js b/projects/garble-money/index.js index e03774a2e2..fc68b907fb 100644 --- a/projects/garble-money/index.js +++ b/projects/garble-money/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/sumTokens') module.exports = { @@ -5,9 +6,9 @@ module.exports = { tvl: sumTokensExport({ tokensAndOwners: [ [nullAddress, 'TCdY8kA7XsZ5UUw8jEgbVRbS2MVttrY9AC'], - ['TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 'TYaaJsD44isGwQUbvHNuii8nAnTKSxPcND'], - ['TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn', 'TWupFtHWnURhDNrWBfB2tK3zD4uALurBgk'], - ['TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR', 'TK76Z1mJQHN98WsuUUKeDZnNhwRsj6p5wo'], + [ADDRESSES.tron.USDT, 'TYaaJsD44isGwQUbvHNuii8nAnTKSxPcND'], + [ADDRESSES.tron.USDD, 'TWupFtHWnURhDNrWBfB2tK3zD4uALurBgk'], + [ADDRESSES.tron.JM, 'TK76Z1mJQHN98WsuUUKeDZnNhwRsj6p5wo'], ] }), }, diff --git a/projects/gdao.js b/projects/gdao.js index f4c19f687e..df31a6e950 100644 --- a/projects/gdao.js +++ b/projects/gdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens } = require('./helper/unwrapLPs'); const { staking } = require('./helper/staking'); @@ -5,14 +6,14 @@ const liquidityMinesAddress = '0x4DaC3e07316D2A31baABb252D89663deE8F76f09'; const loyaltyMineAddress = '0xda58927f4065f1d02a6ea850c2aac49d7362a643'; const stakedTokens = [ - '0x514910771af9ca656af840dff83e8264ecf986ca', //link - '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', //uni - '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', //aave - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', //wbtc - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', //weth - '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', //snx - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', //usdc - '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e', //yfi + ADDRESSES.ethereum.LINK, //link + ADDRESSES.ethereum.UNI, //uni + ADDRESSES.ethereum.AAVE, //aave + ADDRESSES.ethereum.WBTC, //wbtc + ADDRESSES.ethereum.WETH, //weth + ADDRESSES.ethereum.SNX, //snx + ADDRESSES.ethereum.USDC, //usdc + ADDRESSES.ethereum.YFI, //yfi ]; const GDAOLP = '0x4d184bf6f805ee839517164d301f0c4e5d25c374'; diff --git a/projects/genesys/index.js b/projects/genesys/index.js index cc37f179af..eeee8769f9 100644 --- a/projects/genesys/index.js +++ b/projects/genesys/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {addFundsInMasterChef} = require("../helper/masterchef"); const {pool2Exports} = require("../helper/pool2"); const {staking} = require("../helper/staking") @@ -15,8 +16,8 @@ async function tvl(timestamp, block, chainBlocks) { let balances = {}; await addFundsInMasterChef(balances, masterchef, chainBlocks.fantom, "fantom", addr=>{ addr = addr.toLowerCase(); - if (addr === "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e") { - return "0x6b175474e89094c44da98b954eedeac495271d0f" + if (addr === ADDRESSES.fantom.DAI) { + return ADDRESSES.ethereum.DAI } return `fantom:${addr}` }, undefined, ignore); diff --git a/projects/genius/index.js b/projects/genius/index.js index ed6d482ceb..ceb96c3284 100644 --- a/projects/genius/index.js +++ b/projects/genius/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /* Genius staking operates on two models: * - Direct staking with GENI token. * - Policy: Basic (basicLockedMinersSupply()) @@ -30,19 +31,19 @@ const STABILITY_POOL = "0xDCA692d433Fe291ef72c84652Af2fe04DA4B4444"; /* Native currencies and ERC-20 tokens approved for collateral*/ const STABILITY_POOL_COLLATERAL_ADDRESSES = { "bsc": { - "BUSD": "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + "BUSD": ADDRESSES.bsc.BUSD, "BNB": nullAddress, }, "ethereum": { - "DAI": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "DAI": ADDRESSES.ethereum.DAI, "ETH": nullAddress, }, "avax": { - "USDC": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + "USDC": ADDRESSES.avax.USDC, "AVAX": nullAddress, }, "polygon": { - "DAI": "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + "DAI": ADDRESSES.polygon.DAI, "MATIC": nullAddress, } }; diff --git a/projects/geode/index.js b/projects/geode/index.js index fd5b61e30f..5d2de65fc0 100644 --- a/projects/geode/index.js +++ b/projects/geode/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); @@ -78,7 +79,7 @@ async function avax(timestamp, ethBlock, chainBlocks) { }, 0); return { - "avax:0x0000000000000000000000000000000000000000": TotalBalance + ["avax:" + ADDRESSES.null]: TotalBalance }; } diff --git a/projects/gfs/index.js b/projects/gfs/index.js index 126a9ee0fe..d012c7a63f 100644 --- a/projects/gfs/index.js +++ b/projects/gfs/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const contracts = require("./contracts.json"); const { sumLPWithOnlyOneToken } = require("./../helper/unwrapLPs"); const iotx = "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69"; -const wiotx = "0xA00744882684C3e4747faEFD68D283eA44099D03"; +const wiotx = ADDRESSES.iotex.WIOTX; function pool2(chain, gasToken) { return async (timestamp, _, {[chain]: block}) => { diff --git a/projects/gft/index.js b/projects/gft/index.js index 8f4e59060d..7dbbbad201 100644 --- a/projects/gft/index.js +++ b/projects/gft/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const contracts = require("./contracts.json"); const { sumLPWithOnlyOneToken } = require("./../helper/unwrapLPs"); const BigNumber = require("bignumber.js"); const iotx = "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69"; -const wiotx = "0xA00744882684C3e4747faEFD68D283eA44099D03"; +const wiotx = ADDRESSES.iotex.WIOTX; const gfsBonusStackPool = "0x4346a618c2e3fd4cfa821e91216eaf927bd46ddd"; const gfs = "0x5d0f4ca481fd725c9bc6b415c0ce5b3c3bd726cf"; diff --git a/projects/gizadao/index.js b/projects/gizadao/index.js index e336680bf8..f5832bba8a 100644 --- a/projects/gizadao/index.js +++ b/projects/gizadao/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const transforms = { - "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e": "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI + [ADDRESSES.fantom.DAI]: ADDRESSES.ethereum.DAI, // DAI } const treasury = "0x6e273a49Ba8F77d03C0CF5a190f226DcA7D46E9F" module.exports = ohmTvl(treasury, [ //DAI - ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], + [ADDRESSES.fantom.DAI, false], //spirit LP ["0x9026711a2097252a198e6602a052117eaa5f3cab", true], //spirit LP diff --git a/projects/gmx/index.js b/projects/gmx/index.js index 9f3410f4e1..155699ddc3 100644 --- a/projects/gmx/index.js +++ b/projects/gmx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {staking} = require('../helper/staking') const { gmxExports } = require('../helper/gmx') @@ -5,7 +6,7 @@ const { gmxExports } = require('../helper/gmx') // const arbitrumApiEndpoint = 'https://gmx-server-mainnet.uw.r.appspot.com/tokens' const arbitrumVault = '0x489ee077994B6658eAfA855C308275EAd8097C4A'; const arbitrumStaking = '0x908C4D94D34924765f1eDc22A1DD098397c59dD4'; -const arbitrumGMX = '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a'; +const arbitrumGMX = ADDRESSES.arbitrum.GMX; //Avalanche // const avalancheApiEndpoint = 'https://gmx-avax-server.uc.r.appspot.com/tokens' const avalancheVault = '0x9ab2De34A33fB459b538c43f251eB825645e8595' diff --git a/projects/gnosis/index.js b/projects/gnosis/index.js index bf76698297..32171ae7cb 100644 --- a/projects/gnosis/index.js +++ b/projects/gnosis/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') @@ -12,21 +13,21 @@ module.exports = { function addTvl(owner) { const tokens = [ - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - '0x6b175474e89094c44da98b954eedeac495271d0f', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, '0x6810e776880c02933d47db1b9fc05908e5386b96', - '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e', + ADDRESSES.ethereum.YFI, '0x57ab1ec28d129707052df4df418d58a2d46d5f51', - '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', + ADDRESSES.ethereum.UNI, '0xa1d65E8fB6e87b60FECCBc582F7f97804B725521', '0xc00e94cb662c3520282e6f5717214004a7f26888', - '0x514910771af9ca656af840dff83e8264ecf986ca', - '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', + ADDRESSES.ethereum.LINK, + ADDRESSES.ethereum.SUSHI, '0x22eEab2f980E8ed7824f8EA548C9595564a0F0e4', '0xe2f2a5c287993345a840db3b0845fbc70f5935a5', - '0x0000000000085d4780B73119b644AE5ecd22b376', - '0xdac17f958d2ee523a2206206994597c13d831ec7', + ADDRESSES.ethereum.TUSD, + ADDRESSES.ethereum.USDT, '0x0b38210ea11411557c13457D4dA7dC6ea731B88a', '0x84cA8bc7997272c7CfB4D0Cd3D55cd942B3c9419', ] diff --git a/projects/goblinscash/index.js b/projects/goblinscash/index.js index 2f1b27e772..b72b8959c9 100644 --- a/projects/goblinscash/index.js +++ b/projects/goblinscash/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumUnknownTokens } = require('../helper/unknownTokens') const { stakingPricedLP } = require("../helper/staking"); @@ -5,7 +6,7 @@ const goblinStaking = "0x48B8aCe692ad8BD2E3139C65bFf7d28c048F8f00"; const GOB = "0x56381cB87C8990971f3e9d948939e1a95eA113a3"; const treasuryAddress = "0x259D4CBA522A15AA5Db641D0E06d6f7Aa040D89f"; -const flexUSD = "0x7b2B3C5308ab5b2a1d9a94d20D35CCDf61e05b72"; +const flexUSD = ADDRESSES.smartbch.flexUSD; const GOB_flexUSD_MLP = "0xC20A4f3012bA2Df47544d4926B19604Fa777FB01"; const GOB_BCH_MLP = "0x86b0fd64234a747681f0235b6cc5fe04a4d95b31"; const chain = "smartbch" diff --git a/projects/gogocoin/index.js b/projects/gogocoin/index.js index ad84fb8bed..3a19f7d9c2 100644 --- a/projects/gogocoin/index.js +++ b/projects/gogocoin/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { transformPolygonAddress @@ -14,7 +15,7 @@ const GOVERNANCE_STAKING_CONTRACT = '0xd46206003FfB72Fe5FEB04373328C62e2bF864f9' const LP_TOKEN_USDC = '0xe33Dd0C0534189b66B9872425189399e2B9c169D' const LP_STAKING_CONTRACT = '0x5dc4ffc0f9c2261dcaae7f69e1a8837afbd577bc' const GOGOCOIN = '0xdD2AF2E723547088D3846841fbDcC6A8093313d6' -const USDC = '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' +const USDC = ADDRESSES.polygon.USDC const chain = 'polygon' async function chainTVL(timestamp, block, chainBlocks) { diff --git a/projects/goldfinch/index.js b/projects/goldfinch/index.js index eeab932c6a..1c8f50ee7c 100644 --- a/projects/goldfinch/index.js +++ b/projects/goldfinch/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokens } = require("../helper/unwrapLPs"); const abi = require("./abi.json"); @@ -8,7 +9,7 @@ const seniorPoolAddress = "0x8481a6EbAf5c7DABc3F7e09e44A89531fd31F822"; const gfFactoryAddress = "0xd20508E1E971b80EE172c73517905bfFfcBD87f9"; const poolTokensAddress = "0x57686612C601Cb5213b01AA8e80AfEb24BBd01df"; const V2_START = 13097274; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDC = ADDRESSES.ethereum.USDC; let _trancheAddresses const getTranchedPoolAddresses = async (api) => { diff --git a/projects/gooddollar/index.js b/projects/gooddollar/index.js index 668ac06563..7691240746 100644 --- a/projects/gooddollar/index.js +++ b/projects/gooddollar/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abi.json'); const BigNumber = require("bignumber.js"); @@ -5,7 +6,7 @@ const { sumTokens } = require("../helper/unwrapLPs"); const tokens = { aUSDC: "0xbcca60bb61934080951369a648fb03df4f96263c", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", + DAI: ADDRESSES.ethereum.DAI, cDAI: "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", Gfuse: "0x495d133B938596C9984d462F007B676bDc57eCEC", // GoodDollar on Fuse FUSE: "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", // Fuse on Mainnet diff --git a/projects/grave/index.js b/projects/grave/index.js index f0e3f3c4cb..559c5d3f71 100644 --- a/projects/grave/index.js +++ b/projects/grave/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakingPricedLP } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const { pool2Exports } = require("../helper/pool2"); @@ -18,9 +19,9 @@ async function atvl(timestamp, block, chainBlocks) { await sumTokensAndLPsSharedOwners( balances, [ - ["0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", false], - ["0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", false], - ["0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd", false], + [ADDRESSES.avax.WAVAX, false], + [ADDRESSES.avax.USDC_e, false], + [ADDRESSES.avax.JOE, false], ["0x070092b3A985f9E5424351D68730c9A318ad96eb", false], ], diff --git a/projects/grizzlyfi/index.js b/projects/grizzlyfi/index.js index 8e9bddd1fe..0a3f3a5d22 100644 --- a/projects/grizzlyfi/index.js +++ b/projects/grizzlyfi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakings } = require("../helper/staking"); const { unwrapLPsAuto } = require("../helper/unwrapLPs"); @@ -124,18 +125,18 @@ const yearnHives = [ const pcsV3 = [ { hive: "0x25223015ee4dbaf9525ddd43797cae1dcd83f6b5", - token0: "0x55d398326f99059ff775485246999027b3197955", - token1: "0xe9e7cea3dedca5984780bafc599bd69add087d56" + token0: ADDRESSES.bsc.USDT, + token1: ADDRESSES.bsc.BUSD }, { hive: "0x9eab3bf245da9b6d8705b1a906ee228382c38f93", - token0: "0x55d398326f99059ff775485246999027b3197955", - token1: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d" + token0: ADDRESSES.bsc.USDT, + token1: ADDRESSES.bsc.USDC }, { hive: "0x76ab668d93135bcd64df8e4a7ab9dd05fac4cdbf", - token0: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - token1: "0xe9e7cea3dedca5984780bafc599bd69add087d56" + token0: ADDRESSES.bsc.USDC, + token1: ADDRESSES.bsc.BUSD } ] diff --git a/projects/groprotocol/index.js b/projects/groprotocol/index.js index a0a7617b77..aaa8a6958b 100644 --- a/projects/groprotocol/index.js +++ b/projects/groprotocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // Adapter for Gro Protocol : https://gro.xyz const sdk = require("@defillama/sdk"); @@ -54,32 +55,32 @@ const labs = [ { // USDC vault: "0x57DaED1ee021BE9991F5d30CF494b6B09B5B449E", - baseToken: "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", + baseToken: ADDRESSES.avax.USDC_e, }, { // DAI vault: "0x5E57E11483A3F60A76af3045303604522059dA2a", - baseToken: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + baseToken: ADDRESSES.avax.DAI, }, { // USDT vault: "0x471F4B4b9A97F82C3a25b034B33A8E306eE9Beb5", - baseToken: "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", + baseToken: ADDRESSES.avax.USDT_e, }, { // USDC vault: "0x2Eb05cfFA24309b9aaf300392A4D8Db745d4E592", - baseToken: "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", + baseToken: ADDRESSES.avax.USDC_e, }, { // DAI vault: "0x6063597B9356B246E706Fd6A48C780F897e3ef55", - baseToken: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + baseToken: ADDRESSES.avax.DAI, }, { // USDT vault: "0x6EF44077a1F5e10cDfcCc30EFb7dCdb1d5475581", - baseToken: "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", + baseToken: ADDRESSES.avax.USDT_e, }, ]; diff --git a/projects/growthdefi/index.js b/projects/growthdefi/index.js index b41e51b8d2..1d1bb56c54 100644 --- a/projects/growthdefi/index.js +++ b/projects/growthdefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const clqdr = require("./abis/clqdr.json"); @@ -290,8 +291,8 @@ const psmConfig = { }; const stableConfig = { - avax: ["0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664"], - bsc: ["0xe9e7cea3dedca5984780bafc599bd69add087d56"], + avax: [ADDRESSES.avax.USDC_e], + bsc: [ADDRESSES.bsc.BUSD], fantom: [], }; @@ -302,9 +303,9 @@ const autoGem = { }; const DAI = { - avax: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + avax: ADDRESSES.avax.DAI, bsc: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - fantom: "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", + fantom: ADDRESSES.fantom.DAI, }; //*** PSM staked portion as product of GrowthDefi Protocol ***// diff --git a/projects/gton.js b/projects/gton.js index 39bb4a95af..c25c3e403f 100644 --- a/projects/gton.js +++ b/projects/gton.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokensExport, nullAddress } = require("./helper/unwrapLPs"); const { staking } = require('./helper/staking') @@ -13,13 +14,13 @@ module.exports = { '0xddcb3ffd12750b45d32e084887fdf1aabab34239', '0x841fad6eae12c286d1fd18d1d525dffa75c7effe', '0x5cc61a78f164885776aa610fb0fe1257df78e59b', - '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83', + ADDRESSES.fantom.WFTM, '0xb688e18f34e6e424c44b247318f22367ed7df3e2', - '0xdbf31df14b66535af65aac99c32e9ea844e14501', + ADDRESSES.fantom.renBTC, '0x1E4F97b9f9F913c46F1632781732927B9019C68b', '0x657A1861c15A3deD9AF0B6799a195a249ebdCbc6', '0xc3f069d7439baf6d4d6e9478d9cc77778e62d147', - '0x049d68029688eabf473097a2fc38ef61633a3c7a', + ADDRESSES.fantom.fUSDT, '0xf16e81dce15b08f326220742020379b855b87df9', ]}), staking: staking([stakingContract, treasury,], gton, chain), diff --git a/projects/gyro.js b/projects/gyro.js index 6264b6a20d..56293a3d74 100644 --- a/projects/gyro.js +++ b/projects/gyro.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { ohmTvl } = require('./helper/ohm') module.exports=ohmTvl("0x8B1522402FECe066d83E0F6C97024248Be3C8c01", [ - ["0x55d398326f99059ff775485246999027b3197955", false], - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], + [ADDRESSES.bsc.USDT, false], + [ADDRESSES.bsc.BUSD, false], ["0x5ca063a7e2bebefeb2bdea42158f5b825f0f9ffb", true], ["0xa5399084a5f06d308c4527517bbb781c4dce887c", true] ], "bsc", "0xe9c178cfdfeb917a46429714e5d51f6d4f296b75", "0x1b239abe619e74232c827fbe5e49a4c072bd869d") \ No newline at end of file diff --git a/projects/gysr/index.js b/projects/gysr/index.js index 9d5d6e4d8e..26890e57b2 100644 --- a/projects/gysr/index.js +++ b/projects/gysr/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, gql } = require("graphql-request"); const { getBlock } = require('../helper/http') @@ -7,7 +8,7 @@ const graphUrlMainnet = "https://api.thegraph.com/subgraphs/name/gysr-io/gysr"; const graphUrlPolygon = "https://api.thegraph.com/subgraphs/name/gysr-io/gysr-polygon"; const graphQuery = gql` query GET_TVL($block: Int) { - platform(id: "0x0000000000000000000000000000000000000000", block: { number: $block }) { + platform(id: ADDRESSES.null, block: { number: $block }) { tvl } } diff --git a/projects/hakka.js b/projects/hakka.js index 185a08f40d..62d6a4117f 100644 --- a/projects/hakka.js +++ b/projects/hakka.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens2, nullAddress, sumTokensExport } = require('./helper/unwrapLPs') const HAKKA_ADDRESSES = { @@ -20,9 +21,9 @@ async function ethereum(_, block) { [nullAddress, thirdFloorAddress], // thirdFloor // guild bank [nullAddress, hakkaGuildBank], - ['0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', hakkaGuildBank], + [ADDRESSES.ethereum.MKR, hakkaGuildBank], ['0x35101c731b1548B5e48bb23F99eDBc2f5c341935', hakkaGuildBank], - ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', hakkaGuildBank], + [ADDRESSES.ethereum.USDC, hakkaGuildBank], ] return sumTokens2({ tokensAndOwners: toa, block, }) @@ -30,8 +31,8 @@ async function ethereum(_, block) { async function bsc(_, _b, { bsc: block }) { const chain = 'bsc' const toa = [ - ['0xe9e7cea3dedca5984780bafc599bd69add087d56', BSC_BHS_ADDRESS], // thirdFloor - ['0x55d398326f99059ff775485246999027b3197955', BSC_BHS_ADDRESS], // thirdFloor + [ADDRESSES.bsc.BUSD, BSC_BHS_ADDRESS], // thirdFloor + [ADDRESSES.bsc.USDT, BSC_BHS_ADDRESS], // thirdFloor ] return sumTokens2({ tokensAndOwners: toa, block, chain }) diff --git a/projects/halodao/index.js b/projects/halodao/index.js index 352ccaa6a6..ba2fb4b419 100644 --- a/projects/halodao/index.js +++ b/projects/halodao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking.js"); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -13,7 +14,7 @@ const wrnbwPolyPool = "0xc104e54803abA12f7a171a49DDC333Da39f47193"; // ETH Pool 2 pool RNBW-ETH const rnbwUniPool = { lpToken: "0x3E8E036Ddfd310B0838d3CC881A9fa827778845D", - token0: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + token0: ADDRESSES.ethereum.WETH, token1: "0xe94b97b6b43639e238c851a7e693f50033efd75c", }; @@ -22,25 +23,25 @@ const ethPools = [ // USDC:XSGD lpToken: "0x64DCbDeb83e39f152B7Faf83E5E5673faCA0D42A", token0: "0x70e8de73ce538da2beed35d14187f6959a8eca96", - token1: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + token1: ADDRESSES.ethereum.USDC, }, { // USDC:TCAD lpToken: "0xE15E50fF9d52beC41D53d3173F2ed40834D455f4", token0: "0x00000100F2A2bd000715001920eB70D229700085", - token1: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + token1: ADDRESSES.ethereum.USDC, }, { // USDC:TAUD lpToken: "0x11816335DEe6763e2A7B6080b2b2980Eac7F85E4", token0: "0x00006100F7090010005F1bd7aE6122c3C2CF0090", - token1: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + token1: ADDRESSES.ethereum.USDC, }, { // USDC:TGBP lpToken: "0x2ED09E2961D72659E4002ba8C2BaDfedC7db19B7", token0: "0x00000000441378008ea67f4284a57932b1c000a5", - token1: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + token1: ADDRESSES.ethereum.USDC, }, ]; @@ -49,25 +50,25 @@ const polyPools = [ //xSGD:USDC lpToken: "0x8123C64D6607412C7Ac9E880f12245ef22558b14", token0: "0x769434dca303597c8fc4997bf3dab233e961eda2", - token1: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + token1: ADDRESSES.polygon.USDC, }, { //wTCAD:USDC lpToken: "0xaEad273bc7E17DD6951ceD3264B1dBa8A19114C2", token0: "0x6d3cC56DFC016151eE2613BdDe0e03Af9ba885CC", - token1: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + token1: ADDRESSES.polygon.USDC, }, { //wTAUD:USDC lpToken: "0x95AB308bE1e209eB6FfdD3279B5ea71D365AD30B", token0: "0xe4F7761b541668f88d04fe9F2E9DF10CA613aEf7", - token1: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + token1: ADDRESSES.polygon.USDC, }, { //wTGBP:USDC lpToken: "0xbF772a745533f6bAd97C58D2cb6B241eF7487242", token0: "0x81A123f10C78216d32F8655eb1A88B5E9A3e9f2F", - token1: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + token1: ADDRESSES.polygon.USDC, }, ]; @@ -75,21 +76,21 @@ const arbiPools = [ { //fxPHP-USDC lpToken: "0x90b48bb20048786b167473dfeec443142d043cf7", - token0: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + token0: ADDRESSES.arbitrum.USDC, token1: "0x3d147cD9aC957B2a5F968dE9d1c6B9d0872286a0", }, { //fxAUD-USDC lpToken: "0xd5ad9eed5c5f28d83933779cd7e677e112991f51", - token0: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + token0: ADDRESSES.arbitrum.USDC, token1: "0x7E141940932E3D13bfa54B224cb4a16510519308", }, ]; //Converts Polygon tokens to ETH tokens cause CoinGecko const tokenConvert = { - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174": - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC + [ADDRESSES.polygon.USDC]: + ADDRESSES.ethereum.USDC, // USDC }; async function calcTvl(pools, block, chain) { diff --git a/projects/handlefi/index.js b/projects/handlefi/index.js index 3f1fcc8791..3af9a05cf0 100644 --- a/projects/handlefi/index.js +++ b/projects/handlefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const { sumTokens2 } = require("../helper/unwrapLPs") const {pool2 } = require("../helper/pool2") @@ -8,7 +9,7 @@ const chain = 'arbitrum' // Arbitrum TVL const transformArbitrumAddress = addr => `arbitrum:${addr}` const treasuryContract = "0x5710B75A0aA37f4Da939A61bb53c519296627994" -const WETH_arbitrum = "0x82af49447d8a07e3bd95bd0d56f35241523fbab1" +const WETH_arbitrum = ADDRESSES.arbitrum.WETH const FOREX_arbitrum = "0xDb298285FE4C5410B05390cA80e8Fbe9DE1F259B" const treasuryTokens = [WETH_arbitrum, ] const perpsVault = "0x1785e8491e7e9d771b2A6E9E389c25265F06326A" diff --git a/projects/hashflow/index.js b/projects/hashflow/index.js index ab5fd2b805..5c68e60201 100644 --- a/projects/hashflow/index.js +++ b/projects/hashflow/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { get } = require('../helper/http') const { chainExports } = require('../helper/exports'); const { sumTokens } = require("../helper/unwrapLPs"); @@ -15,7 +16,7 @@ const chainIds = { let dataCacheUpdating async function updateDataCache() { - const null_addr = '0x0000000000000000000000000000000000000000'; + const null_addr = ADDRESSES.null; const allChainData = {} for (const chain of Object.keys(chainIds)) { diff --git a/projects/hectagon/index.js b/projects/hectagon/index.js index 9ac185a5c2..71eef4b6fb 100644 --- a/projects/hectagon/index.js +++ b/projects/hectagon/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking'); const { sumTokens2 } = require('../helper/unwrapLPs') -const BUSD_ADDRESS = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; +const BUSD_ADDRESS = ADDRESSES.bsc.BUSD; const gHECTA = '0x7d31ed03c2442f9ffc4f22d90772ee1f32fa9b0d' const chain = 'bsc' const HECTA_ADDRESS = "0x343915085b919fbd4414F7046f903d194c6F60EE"; diff --git a/projects/hedgehog/index.js b/projects/hedgehog/index.js index 9e64a6749b..9091f1478a 100644 --- a/projects/hedgehog/index.js +++ b/projects/hedgehog/index.js @@ -1,5 +1,6 @@ -const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; -const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; +const ADDRESSES = require('../helper/coreAssets.json') +const WETH = ADDRESSES.ethereum.WETH; +const USDC = ADDRESSES.ethereum.USDC; const OSQTH = "0xf1B99e3E573A1a9C5E6B2Ce818b617F0E664E86B"; const VAULT_MATH = "0x2b1cb93B8fe1B6fB3810Ab294D681865421C4E37"; diff --git a/projects/hegic/index.js b/projects/hegic/index.js index 4945021cdb..0154a468d4 100644 --- a/projects/hegic/index.js +++ b/projects/hegic/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { token } = require("@project-serum/anchor/dist/cjs/utils"); const { sumTokens } = require("../helper/unwrapLPs"); @@ -10,10 +11,10 @@ const poolsV8888 = { }; const tokens = { - ETH: "0x0000000000000000000000000000000000000000", - WBTC: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - WETH: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - USDC: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + ETH: ADDRESSES.null, + WBTC: ADDRESSES.ethereum.WBTC, + WETH: ADDRESSES.ethereum.WETH, + USDC: ADDRESSES.ethereum.USDC, HEGIC: "0x584bc13c7d411c00c01a62e8019472de68768430", }; @@ -22,7 +23,7 @@ const arbitrum = { hergePayoff: "0x822C0E3aFbCfbD166833F44AD82f28354a57cf28", hergeOperationalTreasury: "0xec096ea6eB9aa5ea689b0CF00882366E92377371", HEGIC: "0x431402e8b9de9aa016c743880e04e517074d8cec", - USDC: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + USDC: ADDRESSES.arbitrum.USDC, hardcoreStakeAndCover: "0x60898dfA3C6e8Ba4998B5f3be25Fb0b0b69d5D5d", hardcoreOperationalTreasury: "0xB0F9F032158510cd4a926F9263Abc86bAF7b4Ab3", }; diff --git a/projects/heliosprime/index.js b/projects/heliosprime/index.js index d24979a194..869446e715 100644 --- a/projects/heliosprime/index.js +++ b/projects/heliosprime/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); @@ -5,7 +6,7 @@ const {getComponents} = require('./abi.json'); const { sumTokens } = require("../helper/unwrapLPs"); const CoverageContract = "0x69c316563414d091c57C7Ec098523e43Baa5E175"; -const USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7"; +const USDT = ADDRESSES.ethereum.USDT; const EDP = "0x7633da43dfd4ee5a5da99740f077ca9d97aa0d0e" const StakingContract_BMI = "0xDfB820b95EEE42A858f50BEfbF834D2d24621153"; diff --git a/projects/helmetinsure/index.js b/projects/helmetinsure/index.js index b82417f137..081efa5352 100644 --- a/projects/helmetinsure/index.js +++ b/projects/helmetinsure/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { blockQuery } = require('../helper/http') const sdk = require('@defillama/sdk') const { gql } = require('graphql-request') @@ -12,7 +13,7 @@ const THEGARPH_API = { function transform(str) { switch (str) { case "bsc:0xaf90e457f4359adcc8b37e8df8a27a1ff4c3f561": // SHIB - return "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE" + return ADDRESSES.ethereum.INU case "bsc:0xf218184af829cf2b0019f8e6f0b2423498a36983": // MATH return "0x08d967bb0134f2d07f7cfb6e246680c53927dd30" case "bsc:0xbd2949f67dcdc549c6ebe98696449fa79d988a9f": diff --git a/projects/helper/aave.js b/projects/helper/aave.js index bc9c1f6bc2..ac5123f8b5 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const sdk = require('@defillama/sdk'); const { default: BigNumber } = require('bignumber.js'); const abi = require('./abis/aave.json'); @@ -30,7 +31,7 @@ async function getV2Reserves(block, addressesProviderRegistry, chain, dataHelper validProtocolDataHelpers = protocolDataHelpers.filter( (helper) => - helper.output !== "0x0000000000000000000000000000000000000000" + helper.output !== ADDRESSES.null ).map(p => p.output); } else { validProtocolDataHelpers = dataHelperAddress diff --git a/projects/helper/ankr/chainAddresses.js b/projects/helper/ankr/chainAddresses.js index 60cc8a83fb..6f2fdbb2fe 100644 --- a/projects/helper/ankr/chainAddresses.js +++ b/projects/helper/ankr/chainAddresses.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../coreAssets.json') const coinAddresses = { - weth: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", //Ethereum - ftm: "0x4e15361fd6b4bb609fa63c81a2be19d873717870", //Fantom - matic: "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", //Matic - dot: "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", //DOT + weth: ADDRESSES.ethereum.WETH, //Ethereum + ftm: ADDRESSES.ethereum.FTM, //Fantom + matic: ADDRESSES.ethereum.MATIC, //Matic + dot: ADDRESSES.ethereum.MATIC, //DOT avax: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", //Avalanche }; diff --git a/projects/helper/balances.js b/projects/helper/balances.js index 3f3b60d07b..3e51e08676 100644 --- a/projects/helper/balances.js +++ b/projects/helper/balances.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('./coreAssets.json') const BigNumber = require("bignumber.js"); -const usdtAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"; +const usdtAddress = ADDRESSES.ethereum.USDT; const toUSDT = (value, times = 1e6) => BigNumber(value).times(times).toFixed(0); diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 9bf6d6194f..986efb3f3b 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const { nullAddress } = require('./unwrapLPs') const { sumTokensExport } = require('../helper/sumTokens') const sdk = require('@defillama/sdk') @@ -5,15 +6,15 @@ const sdk = require('@defillama/sdk') const defaultTokens = { ethereum: [ nullAddress, - '0xdac17f958d2ee523a2206206994597c13d831ec7', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - '0x514910771af9ca656af840dff83e8264ecf986ca', - '0x6b175474e89094c44da98b954eedeac495271d0f', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - '0x0000000000085d4780B73119b644AE5ecd22b376', // TUSD - '0x4fabb145d64652a948d72533023f6e7a623c7c53', // BUSD - '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', // MATIC - '0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE', // SHIBA INU + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.LINK, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.TUSD, // TUSD + ADDRESSES.ethereum.BUSD, // BUSD + ADDRESSES.ethereum.MATIC, // MATIC + ADDRESSES.ethereum.INU, // SHIBA INU '0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b', // CRO '0x9be89d2a4cd102d8fecc6bf9da793be995c22541', // BBTC '0x7a58c0be72be218b41c608b7fe7c5bb630736c71', // PEOPLE @@ -22,12 +23,12 @@ const defaultTokens = { '0x111111111117dc0aa78b770fa6a738034120c302', // 1INCH '0x3597bfd533a99c9aa083587b074434e61eb0a258', // DENT '0x8a2279d4a90b6fe1c4b30fa660cc9f926797baa2', // CHR - '0x5a98fcbea516cf06857215779fd812ca3bef1b32', // LIDO - '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', // MKR - '0xd533a949740bb3306d119cc777fa900ba034cd52', // CRV + ADDRESSES.ethereum.LIDO, // LIDO + ADDRESSES.ethereum.MKR, // MKR + ADDRESSES.ethereum.CRV, // CRV '0x92d6c1e31e14520e676a687f0a93788b716beff5', // DYDX - '0x4e15361fd6b4bb609fa63c81a2be19d873717870', // FTM - '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', // SUSHI + ADDRESSES.ethereum.FTM, // FTM + ADDRESSES.ethereum.SUSHI, // SUSHI '0x15d4c048f83bd7e37d49ea4c83a07267ec4203da', // GALA '0x3845badade8e6dff049820680d1f14bd3903a5d0', // SAND '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', // MANA @@ -39,8 +40,8 @@ const defaultTokens = { '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', // ENS '0x45804880de22913dafe09f4980848ece6ecbaf78', // PAXG '0xf411903cbc70a74d22900a5de66a2dda66507255', // VRA - '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', // UNI - '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', // AAVE + ADDRESSES.ethereum.UNI, // UNI + ADDRESSES.ethereum.AAVE, // AAVE '0xc944e90c64b2c07662a292be6244bdf05cda44a7', // GRT '0x4a220e6096b25eadb88358cb44068a3248254675', // QNT '0xf34960d9d60be18cC1D5Afc1A6F012A723a28811', // KCS @@ -57,7 +58,7 @@ const defaultTokens = { '0xC581b735A1688071A1746c968e0798D642EDE491', //EURO-T '0x4da27a545c0c5b758a6ba100e3a049001de870f5', //aAAVE '0xa06bc25b5805d5f8d82847d191cb4af5a3e873e0', //aLINK - '0xae7ab96520de3a18e5e111b5eaab095312d7fe84', //stETH + ADDRESSES.ethereum.STETH, //stETH '0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599', //STmatic '0xc00e94cb662c3520282e6f5717214004a7f26888', //COMP '0x1c48f86ae57291f7686349f12601910bd8d470bb', //USDK @@ -67,45 +68,45 @@ const defaultTokens = { '0x6be61833fc4381990e82d7d4a9f4c9b3f67ea941', // HTB (Hotbit cex token) '0x75231f58b43240c9718dd58b4967c5114342a86c', // OKB (OKX cex token) '0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3', // LEO (bitfinex cex token) - '0xB8c77482e45F1F44dE1745F52C74426C631bDD52', // WBNB + ADDRESSES.ethereum.BNB, // WBNB '0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206', // NEXO ,(Nexo cex token) '0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44', //kp3r '0xcf0c122c6b73ff809c693db761e7baebe62b6a2e', //FLOKI ETH CHAIN ], tron: [ nullAddress, - 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', // USDT - 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', // USDC + ADDRESSES.tron.USDT, // USDT + ADDRESSES.tron.USDC, // USDC ], polygon: [ nullAddress, - '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', // USDT - '0x0000000000000000000000000000000000001010', // WMATIC - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH - '0xb5c064f955d8e7f38fe0460c556a72987494ee17', // QUICK - '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', //WBTC - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', //USDC - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', //DAI + ADDRESSES.polygon.USDT, // USDT + ADDRESSES.polygon.WMATIC_1, // WMATIC + ADDRESSES.polygon.WETH_1, // WETH + ADDRESSES.polygon.QUICK, // QUICK + ADDRESSES.polygon.WBTC, //WBTC + ADDRESSES.polygon.USDC, //USDC + ADDRESSES.polygon.DAI, //DAI ], algorand: [], solana: [ - 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC - 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', // USDT + ADDRESSES.solana.USDC, // USDC + ADDRESSES.solana.USDT, // USDT ], bsc: [ nullAddress, - '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', // BTCB - '0x2170ed0880ac9a755fd29b2688956bd959f933f8', // BTCE + ADDRESSES.bsc.BTCB, // BTCB + ADDRESSES.bsc.ETH, // BTCE '0xfd5840cd36d94d7229439859c0112a4185bc0255', // vUSDT - '0x250632378e573c6be1ac2f97fcdf00515d0aa91b', // BETH + ADDRESSES.bsc.BETH, // BETH '0x95c78222b3d6e262426483d42cfa53685a67ab9d', // vBUSD '0x7083609fce4d1d8dc0c979aab8c869ea2c873402', // BDOT '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', // CAKE - '0x55d398326f99059ff775485246999027b3197955', // BUSDT - '0xe9e7cea3dedca5984780bafc599bd69add087d56', // BUSD + ADDRESSES.bsc.USDT, // BUSDT + ADDRESSES.bsc.BUSD, // BUSD '0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe', // BXRP - '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', // B-USDC - '0x14016e85a25aeb13065688cafb43044c2ef86784', // B-TUSD + ADDRESSES.bsc.USDC, // B-USDC + ADDRESSES.bsc.BTUSD, // B-TUSD '0x2859e4544c4bb03966803b044a93563bd2d0dd4d', // SHIB '0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', // ADA '0x4691937a7508860f876c9c0a2a617e7d9e945d4b', // WOO @@ -122,28 +123,28 @@ const defaultTokens = { ], arbitrum: [ nullAddress, - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT - '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', // DAI + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.optimism.DAI, // DAI ], avax: [ nullAddress, - '0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7', // USDT - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', // USDC - '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', // DAI + ADDRESSES.avax.USDt, // USDT + ADDRESSES.avax.USDC, // USDC + ADDRESSES.avax.DAI, // DAI '0xabc9547b534519ff73921b1fba6e672b5f58d083', // WOO - '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', //USDC.e + ADDRESSES.avax.USDC_e, //USDC.e ], near: [ 'usdt.tether-token.near', ], optimism: [ nullAddress, - '0x4200000000000000000000000000000000000042', //OP - '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58', //USDT - '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', //USDC - '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1' // DAI + ADDRESSES.optimism.OP, //OP + ADDRESSES.optimism.USDT, //USDT + ADDRESSES.optimism.USDC, //USDC + ADDRESSES.optimism.DAI // DAI ], } diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js index 14c4d63c74..2e35829583 100644 --- a/projects/helper/chain/aptos.js +++ b/projects/helper/chain/aptos.js @@ -4,7 +4,6 @@ const sdk = require('@defillama/sdk') const http = require('../http') const env = require('../env') const coreTokensAll = require('../coreAssets.json') -const ADDRESSES = coreAssetsAll const { transformBalances } = require('../portedTokens') const { log, getUniqueAddresses } = require('../utils') diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index c9fb46e3cd..f31dc0772f 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../coreAssets.json') const { get, graphQuery } = require('../http') const { getCoreAssets, } = require('../tokenMapping') const { transformBalances } = require('../portedTokens') @@ -33,7 +34,7 @@ async function getElrondBalance(address) { const { data: { account: { balance } } } = await get(`${API_HOST}/address/${address}`) return balance } -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [] }) { const prices = await getTokenPrices() @@ -46,7 +47,7 @@ async function getTokens({ address, balances = {}, tokens = [], blacklistedToken if (blacklistedTokens.includes(token)) return; // skip blacklisted tokens if (!coreAssets.has(token)) { if (i.valueUsd) - return sdk.util.sumSingleBalance(balances, 'ethereum:0xdac17f958d2ee523a2206206994597c13d831ec7', i.valueUsd * 1e6) + return sdk.util.sumSingleBalance(balances, 'ethereum:' + ADDRESSES.ethereum.USDT, i.valueUsd * 1e6) if (prices[token]) return sdk.util.sumSingleBalance(balances, nullAddress, (prices[token] * i.balance).toFixed(0), chain) diff --git a/projects/helper/chain/near.js b/projects/helper/chain/near.js index b36ee8c4f0..d7b8810079 100644 --- a/projects/helper/chain/near.js +++ b/projects/helper/chain/near.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../coreAssets.json') const axios = require("axios") const { default: BigNumber } = require("bignumber.js") const sdk = require('@defillama/sdk') @@ -16,7 +17,7 @@ const endpoint = "https://rpc.mainnet.near.org" const tokenMapping = { 'wrap.near': { name: 'near', decimals: 24, }, 'meta-pool.near': { name: 'staked-near', decimals: 24, }, - 'linear-protocol.near': { name: 'linear-protocol', decimals: 24, }, + [ADDRESSES.near.LINA]: { name: 'linear-protocol', decimals: 24, }, 'usn': { name: 'usn', decimals: 18, }, 'aurora': { name: 'ethereum', decimals: 18, }, 'token.skyward.near': { name: 'skyward-finance', decimals: 18, }, @@ -33,11 +34,11 @@ const tokenMapping = { // '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near': { name: 'dai', decimals: 18 }, // 'a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near': { name: 'usd-coin', decimals: 6 }, // 'dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near': { name: 'tether', decimals: 6 }, - // '2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near': { name: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', decimals: 0 }, + // '2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near': { name: ADDRESSES.ethereum.WBTC, decimals: 0 }, // 'aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near': { name: 'aurora-near', decimals: 18 }, - 'token.burrow.near': { name: 'burrow', decimals: 18 }, - 'token.paras.near': { name: 'paras', decimals: 18 }, - 'token.pembrock.near': { name: 'pembrock', decimals: 18 }, + [ADDRESSES.near.BURROW]: { name: 'burrow', decimals: 18 }, + [ADDRESSES.near.PARAS]: { name: 'paras', decimals: 18 }, + [ADDRESSES.near.PEMBROCK]: { name: 'pembrock', decimals: 18 }, 'token.sweat': { name: 'sweatcoin', decimals: 18 }, 'v2-nearx.stader-labs.near': { name: 'stader-nearx', decimals: 24 }, } diff --git a/projects/helper/chain/tezos.js b/projects/helper/chain/tezos.js index b2cf45936e..4971844497 100644 --- a/projects/helper/chain/tezos.js +++ b/projects/helper/chain/tezos.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../coreAssets.json') const http = require('../http') const sdk = require('@defillama/sdk') const { PromisePool } = require('@supercharge/promise-pool') const RPC_ENDPOINT = 'https://api.tzkt.io' -const usdtAddressTezos = 'KT1XnTn74bUtxHfDtBmm2bGZAQfhPbvKWR8o' +const usdtAddressTezos = ADDRESSES.tezos.USDt const transformAddressDefault = t => 'tezos:' + t const tokenBlacklist = [ diff --git a/projects/helper/chain/tron.js b/projects/helper/chain/tron.js index b4effa4ebb..4746740d71 100644 --- a/projects/helper/chain/tron.js +++ b/projects/helper/chain/tron.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../coreAssets.json') const axios = require('axios') const BigNumber = require('bignumber.js') const ethers = require('ethers') @@ -72,7 +73,7 @@ function decodeParams({types, output, ignoreMethodHash}) { } // api reference: https://developers.tron.network/reference -const owner_address = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' +const owner_address = ADDRESSES.tron.USDT async function unverifiedCall({ target, abi, parameter = [], isBigNumber, types = [], isAddress }) { var body = { @@ -123,7 +124,7 @@ async function getTrxBalance(account) { return data.balance + (data.totalFrozen || 0) } -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null const gasTokens = [nullAddress, '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'] async function sumTokens({ diff --git a/projects/helper/compound.js b/projects/helper/compound.js index 8a5b37f1ee..ed2011f168 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abis/compound.json'); @@ -37,11 +38,11 @@ async function getMarkets(comptroller, block, chain, cether, cetheEquivalent, bl return; } if (cToken === '0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5'.toLowerCase()) { - markets.push({ underlying: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', cToken }) //cETH => WETH + markets.push({ underlying: ADDRESSES.ethereum.WETH, cToken }) //cETH => WETH return; } if (cToken === '0x5C0401e81Bc07Ca70fAD469b451682c0d747Ef1c'.toLowerCase() && chain === 'avax') { - markets.push({ underlying: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', cToken }) + markets.push({ underlying: ADDRESSES.avax.WAVAX, cToken }) return; } if (['0xd2ec53e8dd00d204d3d9313af5474eb9f5188ef6', '0x0aeadb9d4c6a80462a47e87e76e487fa8b9a37d7'].includes(cToken) && chain === 'rsk') { @@ -103,7 +104,7 @@ async function unwrapPuffTokens(balances, lpPositions, block) { let marketsCache = {} function getCompoundV2Tvl(comptroller, chain, transformAdress, - cether = "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5", cetheEquivalent = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + cether = "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5", cetheEquivalent = ADDRESSES.ethereum.WETH, borrowed = false, checkForLPTokens = undefined, { fetchBalances = false, diff --git a/projects/helper/curvePools.js b/projects/helper/curvePools.js index 3457dee958..0c2c5de3cf 100644 --- a/projects/helper/curvePools.js +++ b/projects/helper/curvePools.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') module.exports = { // Curve.fi Factory USD Metapool: moUSD '0x162b21ba1a90dd9384c615192fa4053217d2a8db': { @@ -32,7 +33,7 @@ module.exports = { // val3PS '0x5b5bd8913d766d005859ce002533d4838b0ebbb5': { swapContract: '0x19ec9e3f7b21dd27598e7ad5aae7dc0db00a806d', - underlyingTokens: ['0xaed19dab3cd68e4267aec7b2479b1ed2144ad77f', '0xa6fdea1655910c504e974f7f1b520b74be21857b', '0x5f7f6cb266737b89f7af86b30f03ae94334b83e9'], + underlyingTokens: [ADDRESSES.bsc.valBUSD, ADDRESSES.bsc.valUSDC, ADDRESSES.bsc.valUSDT], }, // ARTHu3PS '0xb38b49bae104bbb6a82640094fd61b341a858f78': { @@ -42,37 +43,37 @@ module.exports = { // 3EPS '0xaf4de8e872131ae328ce21d909c74705d3aaf452': { swapContract: '0x160caed03795365f3a589f10c379ffa7d75d4e76', - underlyingTokens: ['0xe9e7cea3dedca5984780bafc599bd69add087d56', '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', '0x55d398326f99059ff775485246999027b3197955'], + underlyingTokens: [ADDRESSES.bsc.BUSD, ADDRESSES.bsc.USDC, ADDRESSES.bsc.USDT], }, '0x6c3f90f043a72fa612cbac8115ee7e52bde6e490': { swapContract: '0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7', - underlyingTokens: ['0xdac17f958d2ee523a2206206994597c13d831ec7', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0x6b175474e89094c44da98b954eedeac495271d0f'], + underlyingTokens: [ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.DAI], }, '0x075b1bb99792c9e1041ba13afef80c91a1e70fb3': { swapContract: '0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714', - underlyingTokens: ['0xeb4c2781e4eba804ce9a9803c67d0893436bb27d', '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', '0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6'], + underlyingTokens: ['0xeb4c2781e4eba804ce9a9803c67d0893436bb27d', ADDRESSES.ethereum.WBTC, '0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6'], }, // Nerve '0xf2511b5e4fb0e5e2d123004b672ba14850478c14': { swapContract: '0x1B3771a66ee31180906972580adE9b81AFc5fCDc', - underlyingTokens: ['0xe9e7cea3dedca5984780bafc599bd69add087d56', '0x55d398326f99059ff775485246999027b3197955', '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d'], + underlyingTokens: [ADDRESSES.bsc.BUSD, ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC], }, // DOP-LP BSC '0x9116f04092828390799514bac9986529d70c3791': { swapContract: '0x5162f992EDF7101637446ecCcD5943A9dcC63A8A', underlyingTokens: [ '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', - '0x55d398326f99059fF775485246999027B3197955', - '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d' + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.USDC ], }, // DOP-2P-LP BSC '0x124166103814e5a033869c88e0f40c61700fca17': { swapContract: '0x449256e20ac3ed7F9AE81c2583068f7508d15c02', underlyingTokens: [ - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', - '0x55d398326f99059fF775485246999027B3197955' + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDT ], }, // DOP-UST-LP BSC @@ -80,16 +81,16 @@ module.exports = { swapContract: '0x830e287ac5947B1C0DA865dfB3Afd7CdF7900464', underlyingTokens: [ '0x23396cF899Ca06c4472205fC903bDB4de249D6fC', - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', - '0x55d398326f99059fF775485246999027B3197955' + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDT ], }, // DOP-3P-LP BSC '0xaa5509ce0ecea324bff504a46fc61eb75cb68b0c': { swapContract: '0x61f864a7dFE66Cc818a4Fd0baabe845323D70454', underlyingTokens: [ - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', - '0x55d398326f99059fF775485246999027B3197955', + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDT, '0xfF54da7CAF3BC3D34664891fC8f3c9B6DeA6c7A5' ], }, @@ -97,18 +98,18 @@ module.exports = { '0xb0f0983b32352a1cfaec143731ddd8a5f6e78b1f': { swapContract: '0x3ED4b2070E3DB5eF5092F504145FB8150CfFE5Ea', underlyingTokens: [ - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', - '0x55d398326f99059fF775485246999027B3197955', - '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d' + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.USDC ], }, // IS3USD Polygon '0xb4d09ff3dA7f9e9A2BA029cb0A81A989fd7B8f17': { swapContract: '0x837503e8A8753ae17fB8C8151B8e6f586defCb57', underlyingTokens: [ - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.USDC ] }, // am3CRV Polygon @@ -124,9 +125,9 @@ module.exports = { '0xc25a3a3b969415c80451098fa907ec722572917f': { swapContract: '0xA5407eAE9Ba41422680e2e00537571bcC53efBfD', underlyingTokens: [ - '0xdac17f958d2ee523a2206206994597c13d831ec7', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - '0x6b175474e89094c44da98b954eedeac495271d0f', + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, '0x57ab1ec28d129707052df4df418d58a2d46d5f51' ] }, @@ -135,7 +136,7 @@ module.exports = { swapContract: '0x93054188d876f558f4a66B2EF1d97d16eDf0895B', underlyingTokens: [ '0xeb4c2781e4eba804ce9a9803c67d0893436bb27d', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599' + ADDRESSES.ethereum.WBTC ] }, // lusd Eth @@ -149,7 +150,7 @@ module.exports = { // steCRV Eth '0x06325440d014e39736583c165c2963ba99faf14e': { swapContract: '0xdc24316b9ae028f1497c275eb9192a3ea0f67022', - underlyingTokens: ['0xae7ab96520de3a18e5e111b5eaab095312d7fe84'] + underlyingTokens: [ADDRESSES.ethereum.STETH] }, // fraxCRV Eth '0xd632f22692fac7611d2aa1c0d552930d43caed3b': { @@ -169,7 +170,7 @@ module.exports = { swapContract: '0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67', underlyingTokens: [ '0x5c2ed810328349100A66B82b78a1791B101C9D61', - '0xDBf31dF14B66535aF65AaC99C32e9eA844e14501' + ADDRESSES.fantom.renBTC ] }, // tricryptoCRV v1 Polygon @@ -213,8 +214,8 @@ module.exports = { '0xd7d4a4c67e9c1f5a913bc38e87e228f4b8820e8a': { swapContract: '0xCF97190fAAfea63523055eBd139c008cdb4468eB', underlyingTokens: [ - '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', - '0xc7198437980c041c805a1edcba50c1ce5db95118' + ADDRESSES.avax.DAI, + ADDRESSES.avax.USDT_e ] }, // gondolaYAKPool Avax @@ -229,8 +230,8 @@ module.exports = { '0x4dc5a6308338e540aa97faab7fd2e03876075413': { swapContract: '0x4b941276eb39d114c89514791d073a085acba3c0', underlyingTokens: [ - '0xc7198437980c041c805a1edcba50c1ce5db95118', - '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664' + ADDRESSES.avax.USDT_e, + ADDRESSES.avax.USDC_e ] }, // av3CRV Avax @@ -246,17 +247,17 @@ module.exports = { '0x2dd7c9371965472e5a5fd28fbe165007c61439e1': { swapContract: '0x2dd7C9371965472E5A5fD28fbE165007c61439E1', underlyingTokens: [ - '0x82f0B8B456c1A451378467398982d4834b6829c1', - '0x049d68029688eAbF473097a2fC38ef61633A3C7A', - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75' + ADDRESSES.fantom.MIM, + ADDRESSES.fantom.fUSDT, + ADDRESSES.fantom.USDC ] }, // Dai-Usdc Fantom '0x27e611fd27b276acbd5ffd632e5eaebec9761e40': { swapContract: '0x27E611FD27b276ACbd5Ffd632E5eAEBEC9761E40', underlyingTokens: [ - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', - '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E' + ADDRESSES.fantom.USDC, + ADDRESSES.fantom.DAI ] }, // gDai-gUSDC-gUSDT Fantom @@ -274,14 +275,14 @@ module.exports = { underlyingTokens: [ '0x74b23882a30290451A17c44f4F05243b6b58C76d', '0x321162Cd933E2Be498Cd2267a90534A804051b11', - '0x049d68029688eAbF473097a2fC38ef61633A3C7A' + ADDRESSES.fantom.fUSDT ] }, // btc-renbtc Fantom '0x5b5cfe992adac0c9d48e05854b2d91c73a003858': { swapContract: '0x3eF6A01A0f81D6046290f3e2A8c5b843e738E604', underlyingTokens: [ - '0xDBf31dF14B66535aF65AaC99C32e9eA844e14501', + ADDRESSES.fantom.renBTC, '0x321162Cd933E2Be498Cd2267a90534A804051b11' ] }, @@ -289,8 +290,8 @@ module.exports = { '0xaea2e71b631fa93683bcf256a8689dfa0e094fcd': { swapContract: '0xaea2e71b631fa93683bcf256a8689dfa0e094fcd', underlyingTokens: [ - '0xc7198437980c041c805a1edcba50c1ce5db95118', - '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + ADDRESSES.avax.USDT_e, + ADDRESSES.avax.USDC_e, '0x130966628846bfd36ff31a822705796e8cb8c18d', ] }, @@ -328,7 +329,7 @@ module.exports = { '0xcee60cfa923170e4f8204ae08b4fa6a3f5656f3a': { swapContract: '0xF178C0b5Bb7e7aBF4e12A4838C7b7c5bA2C623c0', underlyingTokens: [ - '0x514910771AF9Ca656af840dff83E8264EcF986CA', + ADDRESSES.ethereum.LINK, '0xbBC455cb4F1B9e4bFC4B73970d360c8f032EfEE6', ], }, @@ -364,7 +365,7 @@ module.exports = { }, '0x50b0d9171160d6eb8aa39e090da51e7e078e81c4': { swapContract: '0x50b0d9171160d6eb8aa39e090da51e7e078e81c4', - underlyingTokens: ['0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F'] + underlyingTokens: [ADDRESSES.ethereum.SNX] }, '0xcaf8703f8664731ced11f63bb0570e53ab4600a9': { swapContract: '0xcaf8703f8664731ced11f63bb0570e53ab4600a9', @@ -380,7 +381,7 @@ module.exports = { }, '0x0437ac6109e8a366a1f4816edf312a36952db856': { swapContract: '0x0437ac6109e8a366a1f4816edf312a36952db856', - underlyingTokens: ['0x6B3595068778DD592e39A122f4f5a5cF09C90fE2'] + underlyingTokens: [ADDRESSES.ethereum.SUSHI] }, '0x9001a452d39a8710d27ed5c2e10431c13f5fba74': { swapContract: '0x9001a452d39a8710d27ed5c2e10431c13f5fba74', diff --git a/projects/helper/dexpad.js b/projects/helper/dexpad.js index 724bfc23f2..def2795bf5 100644 --- a/projects/helper/dexpad.js +++ b/projects/helper/dexpad.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const BigNumber = require("bignumber.js"); const sdk = require("@defillama/sdk"); @@ -102,7 +103,7 @@ async function generateWhitelistedPairs(trackedTokens, factory, block, chain) { basePairs.forEach(pair => { if (pair.success) { const basePair = pair.output.toLowerCase(); - if (basePair != "0x0000000000000000000000000000000000000000") + if (basePair != ADDRESSES.null) whitelistedBasePairs.add(basePair); } }); diff --git a/projects/helper/solana.js b/projects/helper/solana.js index cbd48d06ec..9aca41c23a 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const axios = require("axios"); const http = require('./http') const env = require('./env') @@ -333,7 +334,7 @@ async function sumTokens2({ if (solOwners.length) { const solBalance = await getSolBalances(solOwners) - sdk.util.sumSingleBalance(balances, 'solana:So11111111111111111111111111111111111111112', solBalance) + sdk.util.sumSingleBalance(balances, 'solana:' + ADDRESSES.solana.SOL, solBalance) } blacklistedTokens.forEach(i => delete balances['solana:'+i]) diff --git a/projects/helper/streamingHelper.js b/projects/helper/streamingHelper.js index 6d8f36a651..32f1000a89 100644 --- a/projects/helper/streamingHelper.js +++ b/projects/helper/streamingHelper.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') let stableTokens = ['USDC', 'USDT', 'DAI', 'WETH', 'WFTM', 'WGLMR', 'WBNB', 'WAVAX', 'JCHF', 'JEUR', 'WBTC', 'AGDAI', 'JPYC', 'MIMATIC', 'WXDAI', 'EURS', 'JGBP', 'CNT', 'USD+', 'AMUSDC', 'RAI', 'SLP', 'SDAM3CRV', 'AMDAI', 'TUSD', 'RAI', 'UNI-V2', 'SLP', 'ScUSDC', 'cUSDC', 'iDAI', 'FTM', 'yUSDC', 'cDAI', 'MATIC', 'UST', 'stETH', 'USD', 'mUSD', 'iUSDC', 'aDAI', 'AGEUR', 'BCT', 'WMATIC', @@ -15,68 +16,68 @@ function isWhitelistedToken(symbol, address, isVesting) { const stableTokenAddresses = [ // native token - '0x0000000000000000000000000000000000000000', + ADDRESSES.null, // metis - '0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', - '0x12D84f1CFe870cA9C9dF9785f8954341d7fbb249', + ADDRESSES.metis.m_USDC, + ADDRESSES.metis.BUSD, // avax - '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', - '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + ADDRESSES.avax.DAI, + ADDRESSES.avax.USDC_e, + ADDRESSES.avax.USDC, '0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948', // xdai - '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', - '0x4ECaBa5870353805a9F068101A40E0f32ed605C6', + ADDRESSES.xdai.WXDAI, + ADDRESSES.xdai.USDT, '0x91f8490eC27cbB1b2FaEdd29c2eC23011d7355FB', // fantom - '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E', + ADDRESSES.fantom.DAI, '0x6Fc9383486c163fA48becdEC79d6058f984f62cA', - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', - '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', + ADDRESSES.fantom.USDC, + ADDRESSES.fantom.WFTM, // ethereum - '0x6B175474E89094C44Da98b954EedeAC495271d0F', - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - '0xdAC17F958D2ee523a2206206994597C13D831ec7', + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, '0x853d955aCEf822Db058eb8505911ED77F175b99e', '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5', - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + ADDRESSES.ethereum.WETH, // polygon - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.USDC, '0xC2DbaAEA2EfA47EBda3E572aa0e55B742E408BF6', - '0x0000000000000000000000000000000000001010', + ADDRESSES.polygon.WMATIC_1, '0x4198A31A98dB56b48AEBa6103F7C23679B9794F3', // bsc '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', - '0x55d398326f99059fF775485246999027B3197955', - '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.USDC, // arbitrum - '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', - '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + ADDRESSES.optimism.DAI, + ADDRESSES.arbitrum.WETH, '0x662d0f9Ff837A51cF89A1FE7E0882a906dAC08a3', - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + ADDRESSES.arbitrum.USDC, '0x64343594Ab9b56e99087BfA6F2335Db24c2d1F17', - '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', + ADDRESSES.arbitrum.USDT, // optimism - '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', - '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', + ADDRESSES.optimism.DAI, + ADDRESSES.optimism.USDC, // meter - '0x6ABAEDAB0Ba368F1DF52D857f24154CC76c8c972', - '0xD86e243FC0007e6226B07c9A50C9d70D78299EB5', - '0x24aA189DfAa76c671c279262F94434770F557c35', - '0x5Fa41671c48e3C951AfC30816947126CCC8C162e', + ADDRESSES.meter.MTR, + ADDRESSES.meter.USDC_eth, + ADDRESSES.meter.BUSD_bsc, + ADDRESSES.meter.USDT_eth, '0x687A6294D0D6d63e751A059bf1ca68E4AE7B13E2', ].map(i => i.toLowerCase()) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 749dc45fd1..1f25480f49 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -1,6 +1,6 @@ let coreAssets = require('./coreAssets.json') const ADDRESSES = coreAssets -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null coreAssets = JSON.parse(JSON.stringify(coreAssets)) @@ -21,8 +21,8 @@ const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', const distressedAssts = new Set(Object.values({ CRK: '0x065de42e28e42d90c2052a1b49e7f83806af0e1f', - aBNBc: '0xe85afccdafbe7f2b096f268e31cce3da8da2990a', - aBNBb: '0xbb1aa6e59e5163d8722a122cd66eba614b59df0d', + aBNBc: ADDRESSES.bsc.ankrBNB, + aBNBb: ADDRESSES.bsc.aBNBb, XRPC: '0xd4ca5c2aff1eefb0bea9e9eab16f88db2990c183', }).map(i => i.toLowerCase())) @@ -30,7 +30,7 @@ const transformTokens = { // Sample Code // cronos: { // "0x065de42e28e42d90c2052a1b49e7f83806af0e1f": "0x123", // CRK token is mispriced - // "0x87EFB3ec1576Dec8ED47e58B832bEdCd86eE186e": "0x0000000000085d4780B73119b644AE5ecd22b376", + // [ADDRESSES.cronos.TUSD]: ADDRESSES.ethereum.TUSD, // }, } const ibcMappings = { @@ -43,9 +43,9 @@ const fixBalancesTokens = { // Sample Code // arbitrum_nova: { // [nullAddress]: { coingeckoId: "ethereum", decimals: 18 }, - // '0x722E8BdD2ce80A4422E880164f2079488e115365': { coingeckoId: "ethereum", decimals: 18 }, - // '0x52484e1ab2e2b22420a25c20fa49e173a26202cd': { coingeckoId: "tether", decimals: 6 }, - // '0x750ba8b76187092b0d1e87e28daaf484d1b5273b': { coingeckoId: "usd-coin", decimals: 6 }, + // [ADDRESSES.arbitrum_nova.WETH]: { coingeckoId: "ethereum", decimals: 18 }, + // [ADDRESSES.arbitrum_nova.USDT]: { coingeckoId: "tether", decimals: 6 }, + // [ADDRESSES.arbitrum_nova.USDC]: { coingeckoId: "usd-coin", decimals: 6 }, // }, } diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 75112e364e..3c56e1246a 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const token0 = 'address:token0' @@ -359,7 +360,7 @@ async function sumBalancerLps(balances, tokensAndOwners, block, chain, transform }) } -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null const gasTokens = [nullAddress, '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'] /* tokensAndOwners [ diff --git a/projects/helper/utils.js b/projects/helper/utils.js index a9330313bd..cdddb071c1 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const BigNumber = require("bignumber.js"); const axios = require("axios"); const sdk = require('@defillama/sdk') @@ -181,7 +182,7 @@ async function diplayUnknownTable({ tvlResults = {}, tvlBalances = {}, storedKey } } -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null async function getSymbols(chain, tokens) { tokens = tokens.filter(i => i.includes('0x')).map(i => i.slice(i.indexOf('0x'))).filter(i => i !== nullAddress) const calls = tokens.map(i => ({ target: i })) diff --git a/projects/helper/yieldHelper.js b/projects/helper/yieldHelper.js index b8bf7a252c..479a00867c 100644 --- a/projects/helper/yieldHelper.js +++ b/projects/helper/yieldHelper.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./coreAssets.json') const abi = require("../tenfinance/abi.json") const { getUniqueAddresses, log, } = require('../helper/utils') @@ -46,7 +47,7 @@ function yieldHelper({ target: masterchef, }) - let _poolFilter = i => !blacklistedTokens.includes(i.want.toLowerCase()) && !blacklistedTokens.includes(i.strat.toLowerCase()) && i.strat !== '0x0000000000000000000000000000000000000000' + let _poolFilter = i => !blacklistedTokens.includes(i.want.toLowerCase()) && !blacklistedTokens.includes(i.strat.toLowerCase()) && i.strat !== ADDRESSES.null let _getPoolIds = i => i.strat if (getPoolIds) _getPoolIds = getPoolIds diff --git a/projects/hexal/index.js b/projects/hexal/index.js index f655c43f03..043012525d 100644 --- a/projects/hexal/index.js +++ b/projects/hexal/index.js @@ -1,15 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasury = "0xC06A7e21289E35eA94cE67C0f7AfAD4e972117D8"; const stakingContract = "0x2f6A0D592f7F24D71c4EcA815c94d43AbE190fc3"; const hexal = "0x57612d60b415ad812da9a7cf5672084796a4ab81"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], - ["0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", false], + [ADDRESSES.bsc.BUSD, false], + [ADDRESSES.bsc.USDC, false], ["0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", false], ["0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", false], - ["0x55d398326f99059ff775485246999027b3197955", false], - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], + [ADDRESSES.bsc.USDT, false], + [ADDRESSES.bsc.WBNB, false], ["0xc94364d0ffd3c015689f55e167ac359eb93c617e", true] ] diff --git a/projects/homecoin/index.js b/projects/homecoin/index.js index 0e0f855532..5d912559f5 100644 --- a/projects/homecoin/index.js +++ b/projects/homecoin/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokens } = require("../helper/unwrapLPs"); const abi = require("./abi.json"); const BigNumber = require("bignumber.js"); const HOME = "0xb8919522331C59f5C16bDfAA6A121a6E03A91F62"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDC = ADDRESSES.ethereum.USDC; const HOME_START = 13313474 /** diff --git a/projects/honkswap/index.js b/projects/honkswap/index.js index b4628b5635..b3ecdb1906 100644 --- a/projects/honkswap/index.js +++ b/projects/honkswap/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const HONK = "0xF2d4D9c65C2d1080ac9e1895F6a32045741831Cd"; -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04"; +const WBCH = ADDRESSES.smartbch.WBCH; const FACTORY = "0x34D7ffF45108De08Ca9744aCdf2e8C50AAC1C73C"; module.exports = { diff --git a/projects/hotfries/index.js b/projects/hotfries/index.js index 3d7a35cc06..d81e6f3e81 100644 --- a/projects/hotfries/index.js +++ b/projects/hotfries/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {staking} = require('../helper/staking') module.exports={ bsc:{ - tvl: staking("0x849741B79bc1618b46CF9ec600E94E771DEde601", "0xe9e7cea3dedca5984780bafc599bd69add087d56", "bsc") + tvl: staking("0x849741B79bc1618b46CF9ec600E94E771DEde601", ADDRESSES.bsc.BUSD, "bsc") } } \ No newline at end of file diff --git a/projects/hubble-exchange/index.js b/projects/hubble-exchange/index.js index 0c9353c4c2..659c0ec06b 100644 --- a/projects/hubble-exchange/index.js +++ b/projects/hubble-exchange/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const chain = 'avax' const toa = [ - ['0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e', '0x5c6fc0aaf35a55e7a43fff45575380bcedb5cbc2'], // USDC used for HUSD minting - ['0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', '0x7648675ca85dfb9e2f9c764ebc5e9661ef46055d'], // AVAX used as collateral - ['0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', '0x7648675ca85dfb9e2f9c764ebc5e9661ef46055d'], // WETH used as collateral + [ADDRESSES.avax.USDC, '0x5c6fc0aaf35a55e7a43fff45575380bcedb5cbc2'], // USDC used for HUSD minting + [ADDRESSES.avax.WAVAX, '0x7648675ca85dfb9e2f9c764ebc5e9661ef46055d'], // AVAX used as collateral + [ADDRESSES.avax.WETH_e, '0x7648675ca85dfb9e2f9c764ebc5e9661ef46055d'], // WETH used as collateral ] module.exports = { diff --git a/projects/hubble/index.js b/projects/hubble/index.js index ae4bebcb16..4ea4c00f83 100644 --- a/projects/hubble/index.js +++ b/projects/hubble/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/solana"); const ignoreBadTokens = true; @@ -9,7 +10,7 @@ async function tvl() { SRM: 'SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt', RAY: '4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R', FTT: 'AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3', - WSOL: 'So11111111111111111111111111111111111111112', + WSOL: ADDRESSES.solana.SOL, MSOL: 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', stSOL: '7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj', LDO: 'HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p', @@ -18,7 +19,7 @@ async function tvl() { const collateralTokensAndOwners = Object.values(collateralTokens).map((mint) => [mint, collateralVaultAuthority]) const psmTokens = { - USDC: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' + USDC: ADDRESSES.solana.USDC } const psmVaultAuthority = '8WrqMitrgjzfqaPJ5PK6X3VT6B1Z8rDgQQny2aWwvJ8q' const psmTokensAndOwners = Object.values(psmTokens).map((mint) => [mint, psmVaultAuthority]) diff --git a/projects/hummus/constants.js b/projects/hummus/constants.js index 0e2d384483..6b780dd5b4 100644 --- a/projects/hummus/constants.js +++ b/projects/hummus/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /** * lp token addresses */ @@ -14,12 +15,12 @@ const USD2_MAI_LP = "0x3Eaa426861a283F0E46b6411aeB3C3608B090E0e"; /** * token addresses */ -const mUSDC = "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21"; -const mUSDT = "0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC"; +const mUSDC = ADDRESSES.metis.m_USDC; +const mUSDT = ADDRESSES.metis.m_USDT; const mDAI = "0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0"; const mBUSD = "0xb809cda0c2f79f43248C32b5DcB09d5cD26BbF10" -const DAI = "0x4651B38e7ec14BB3db731369BFE5B08F2466Bd0A"; // deprecated -const MAI = "0xdFA46478F9e5EA86d57387849598dbFB2e964b02" +const DAI = ADDRESSES.metis.DAI; // deprecated +const MAI = ADDRESSES.moonbeam.MAI module.exports = { mBUSD: { diff --git a/projects/hundredfinance/index.js b/projects/hundredfinance/index.js index 401499d1cf..21a181c84a 100644 --- a/projects/hundredfinance/index.js +++ b/projects/hundredfinance/index.js @@ -1,17 +1,18 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {compoundExports, compoundExportsWithAsyncTransform} = require('../helper/compound') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const comptroller = "0x0f390559f258eb8591c8e31cf0905e97cf36ace2" -const usdcEth = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" -const usdcFantom = "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75" -const usdcArbitrum = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" +const usdcEth = ADDRESSES.ethereum.USDC +const usdcFantom = ADDRESSES.fantom.USDC +const usdcArbitrum = ADDRESSES.arbitrum.USDC -const daiEth = "0x6b175474e89094c44da98b954eedeac495271d0f" -const daiFantom = "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e" +const daiEth = ADDRESSES.ethereum.DAI +const daiFantom = ADDRESSES.fantom.DAI -const usdtEth = "0xdac17f958d2ee523a2206206994597c13d831ec7" -const usdtArbitrum = "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9" +const usdtEth = ADDRESSES.ethereum.USDT +const usdtArbitrum = ADDRESSES.arbitrum.USDT const usdcFantomBAMM = "0xEDC7905a491fF335685e2F2F1552541705138A3D" const daiFantomBAMM = "0x6d62d6Af9b82CDfA3A7d16601DDbCF8970634d22" @@ -64,12 +65,12 @@ module.exports={ [1681541920, "Protocol hacked (oc Optimism)"], ], - ethereum:compoundExports(comptroller, "ethereum", "0xfCD8570AD81e6c77b8D252bEbEBA62ed980BD64D", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"), - arbitrum:tvlWithBamm(comptroller, "arbitrum", "0x8e15a22853A0A60a0FBB0d875055A8E66cff0235", "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"), - fantom:tvlWithBamm(comptroller, "fantom", "0xfCD8570AD81e6c77b8D252bEbEBA62ed980BD64D", "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"), - harmony:compoundExportsWithAsyncTransform(comptroller, "harmony", "0xbb93C7F378B9b531216f9aD7b5748be189A55807", "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a"), + ethereum:compoundExports(comptroller, "ethereum", "0xfCD8570AD81e6c77b8D252bEbEBA62ed980BD64D", ADDRESSES.ethereum.WETH), + arbitrum:tvlWithBamm(comptroller, "arbitrum", "0x8e15a22853A0A60a0FBB0d875055A8E66cff0235", ADDRESSES.arbitrum.WETH), + fantom:tvlWithBamm(comptroller, "fantom", "0xfCD8570AD81e6c77b8D252bEbEBA62ed980BD64D", ADDRESSES.fantom.WFTM), + harmony:compoundExportsWithAsyncTransform(comptroller, "harmony", "0xbb93C7F378B9b531216f9aD7b5748be189A55807", ADDRESSES.harmony.WONE), moonriver:compoundExportsWithAsyncTransform("0x7d166777bd19a916c2edf5f1fc1ec138b37e7391", "moonriver", "0xd6fcBCcfC375c2C61d7eE2952B329DcEbA2D4e10", "0x98878b06940ae243284ca214f92bb71a2b032b8a"), - xdai:compoundExportsWithAsyncTransform("0x6bb6ebCf3aC808E26545d59EA60F27A202cE8586", "xdai", "0x6eDCB931168C9F7C20144f201537c0243b19dCA4", "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d"), + xdai:compoundExportsWithAsyncTransform("0x6bb6ebCf3aC808E26545d59EA60F27A202cE8586", "xdai", "0x6eDCB931168C9F7C20144f201537c0243b19dCA4", ADDRESSES.xdai.WXDAI), polygon:compoundExportsWithAsyncTransform("0xedba32185baf7fef9a26ca567bc4a6cbe426e499", "polygon", "0xEbd7f3349AbA8bB15b897e03D6c1a4Ba95B55e31", "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"), - optimism:compoundExportsWithAsyncTransform("0x5a5755E1916F547D04eF43176d4cbe0de4503d5d", "optimism", "0x1A61A72F5Cf5e857f15ee502210b81f8B3a66263", "0x4200000000000000000000000000000000000006"), + optimism:compoundExportsWithAsyncTransform("0x5a5755E1916F547D04eF43176d4cbe0de4503d5d", "optimism", "0x1A61A72F5Cf5e857f15ee502210b81f8B3a66263", ADDRESSES.tombchain.FTM), } diff --git a/projects/hunnyfinance/index.js b/projects/hunnyfinance/index.js index 51ceb1db88..0e040bb768 100644 --- a/projects/hunnyfinance/index.js +++ b/projects/hunnyfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { unwrapUniswapLPs, sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -53,10 +54,10 @@ const dao = "0x650eC6f59b64AcAC97A33C1F2F34c646659FF8b4" const loveStaking = "0x31dd9Be51cC7A96359cAaE6Cb4f5583C89D81985" const treasury = "0x631Fb1f772b8A20e775D1d4F3F87BfCaBA317527"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0x9e8Ae3a26536582823Ef82c155B69637a4A753F8", true], // LOVE-BUSD Cake-LP - ["0x55d398326f99059fF775485246999027B3197955", false], // USDT - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], // WBNB + [ADDRESSES.bsc.USDT, false], // USDT + [ADDRESSES.bsc.WBNB, false], // WBNB ["0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", false], // CAKE ["0x565b72163f17849832a692a3c5928cc502f46d69", false], // HUNNY ] diff --git a/projects/hurricaneswap.js b/projects/hurricaneswap.js index f8ad1ddc0b..d89b079189 100644 --- a/projects/hurricaneswap.js +++ b/projects/hurricaneswap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking, stakings } = require("./helper/staking"); @@ -5,7 +6,7 @@ const { getUniTVL } = require('./helper/unknownTokens') const masterChefV1 = "0x9984d70D5Ab32E8e552974A5A24661BFEfE81DbE"; const masterChefV2 = "0x1c9F36FE608190D1fe99e001b596c31871696b24"; -const AVAX = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7"; +const AVAX = ADDRESSES.avax.WAVAX; const stakingConttract_xhctBar = "0x75B797a0ed87F77bB546F3A3556F18fC35a01140"; const stakingConttract_shctBar = "0xE4aE2E8648B8E84c4A487a559b04e884B822a350"; diff --git a/projects/hyperliquid/index.js b/projects/hyperliquid/index.js index 752b72e1dd..69d940c35d 100644 --- a/projects/hyperliquid/index.js +++ b/projects/hyperliquid/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { arbitrum: { - tvl: sumTokensExport({ owner: '0xc67e9efdb8a66a4b91b1f3731c75f500130373a4', tokens: ['0xff970a61a04b1ca14834a43f5de4533ebddb5cc8'] }) + tvl: sumTokensExport({ owner: '0xc67e9efdb8a66a4b91b1f3731c75f500130373a4', tokens: [ADDRESSES.arbitrum.USDC] }) } } \ No newline at end of file diff --git a/projects/iTrustfinance/index.js b/projects/iTrustfinance/index.js index c709ae2d43..3b82c128a9 100644 --- a/projects/iTrustfinance/index.js +++ b/projects/iTrustfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -22,7 +23,7 @@ const erc20Tokens = [ //IDLE "0x875773784Af8135eA0ef43b5a374AaD105c5D39e", //WETH - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + ADDRESSES.ethereum.WETH, //VISR "0xf938424f7210f31df2aee3011291b658f872e91e", //BOND diff --git a/projects/ice-dao/index.js b/projects/ice-dao/index.js index 58a8facb74..09c22e9df5 100644 --- a/projects/ice-dao/index.js +++ b/projects/ice-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0x935AEf514141B0CA32849e9686d22CB8b6f1dCAF"; @@ -5,7 +6,7 @@ module.exports = ohmTvl(treasuryAddress, [ //MIM ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], //WAVAX - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], + [ADDRESSES.avax.WAVAX, false], // ICY MIM JLP ["0x453B5415Fe883f15686A5fF2aC6FF35ca6702628", true], // MEMO diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index f9b7eef444..3377cd7f13 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakings } = require("../helper/staking"); const { transformBalances } = require('../helper/portedTokens') @@ -26,7 +27,7 @@ const poolWithTokens = [ // ONE INCH ["0x1dcE26F543E591c27717e25294AEbbF59AD9f3a5", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", "0x111111111117dC0aa78b770fA6A738034120C302"]], // BALANCER - ["0x58378f5F8Ca85144ebD8e1E5e2ad95B02D29d2BB", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"]] + ["0x58378f5F8Ca85144ebD8e1E5e2ad95B02D29d2BB", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", ADDRESSES.ethereum.WETH]] ] const graphUrl = { diff --git a/projects/ideamarket/index.js b/projects/ideamarket/index.js index 05a59fe23a..8ecc1adfe4 100644 --- a/projects/ideamarket/index.js +++ b/projects/ideamarket/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const stateContract = "0x4e908F706f8935f10C101Ea3D7B2DEfc78df284e" -const dai = "0x6b175474e89094c44da98b954eedeac495271d0f" +const dai = ADDRESSES.ethereum.DAI async function tvl(timestamp, ethBlock, chainBlocks) { const daiDeposited = await sdk.api.abi.call({ diff --git a/projects/idex/index.js b/projects/idex/index.js index a8c9e3a309..5934dddce8 100644 --- a/projects/idex/index.js +++ b/projects/idex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -14,7 +15,7 @@ const IDEX_POLYGON_CUSTODY_CONTRACT = "0x3bcc4eca0a40358558ca8d1bcd2d1dbde63eb46 ==================================================*/ async function tvl(_timestamp, block, chain) { - let tokens = ['0x0000000000000000000000000000000000000000'] + let tokens = [ADDRESSES.null] let owner switch (chain) { diff --git a/projects/ifpool/index.js b/projects/ifpool/index.js index a69f8cfed9..6716432b65 100644 --- a/projects/ifpool/index.js +++ b/projects/ifpool/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const validatorContract = "0x0000000000000000000000000000000000001000"; +const validatorContract = ADDRESSES.findora.FRA; const validatorAddress = "0xb0dC7A676Ab09868eBef78E16e6AEA9e79F0f9Cf"; const CHAIN = "csc"; diff --git a/projects/immortal/index.js b/projects/immortal/index.js index fe36dad803..0052e94bce 100644 --- a/projects/immortal/index.js +++ b/projects/immortal/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const immo = "0xE685d21b7B0FC7A248a6A8E03b8Db22d013Aa2eE"; const stakingContract = "0xA02F4e8dE9A226E8f2F2fe27B9b207fC85CFEED2"; const treasury = "0xe2adCd126b4275cD75e72Ff7ddC8cF7e43fc13D4"; const tokens = [ - ["0x918146359264C492BD6934071c6Bd31C854EDBc3", false], // CUSD + [ADDRESSES.celo.mcUSD, false], // CUSD ["0x7d63809EBF83EF54c7CE8dEd3591D4E8Fc2102eE", true] // IMMO-CUSD ] diff --git a/projects/impact-market/index.js b/projects/impact-market/index.js index 98d8d9866b..cfcb95a47c 100644 --- a/projects/impact-market/index.js +++ b/projects/impact-market/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const PACTTokenAddress = "0x46c9757C5497c5B1f2eb73aE79b6B67D119B0B58" -const CELOTokenAddress = "0x471EcE3750Da237f93B8E339c536989b8978a438" +const CELOTokenAddress = ADDRESSES.celo.CELO const ARITokenAddress = "0x20677d4f3d0F08e735aB512393524A3CfCEb250C" const pactDelegatorContract = "0x8f8BB984e652Cb8D0aa7C9D6712Ec2020EB1BAb4" diff --git a/projects/inbuilt-finance/index.js b/projects/inbuilt-finance/index.js index d9aa5e5283..c50b8bac67 100644 --- a/projects/inbuilt-finance/index.js +++ b/projects/inbuilt-finance/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); -const token_USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f"; -const token_USDT = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; -const token_Knit_KFT = "0xa0EEDa2e3075092d66384fe8c91A1Da4bcA21788"; +const token_USDC = ADDRESSES.telos.ETH; +const token_USDT = ADDRESSES.moonriver.USDT; +const token_Knit_KFT = ADDRESSES.kava.KFT; const masterchef = "0x68DB81eAB568174D54F3fd0d9e035eDe9AAEd3e2"; module.exports = { diff --git a/projects/indexcoop/index.js b/projects/indexcoop/index.js index 78fd23d14e..cd168d8a82 100644 --- a/projects/indexcoop/index.js +++ b/projects/indexcoop/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const sdk = require("@defillama/sdk") @@ -12,7 +13,7 @@ const gmiAddress = "0x47110d43175f7f2c2425e7d15792acc5817eb44f"; const icethAddress = "0x7c07f7abe10ce8e33dc6c5ad68fe033085256a84"; const dsETH = "0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE"; const aaveDebtToken = "0xf63b34710400cad3e044cffdcab00a0f32e33ecf"; -const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' +const USDC = ADDRESSES.ethereum.USDC const gtcETH = '0x36c833Eed0D376f75D1ff9dFDeE260191336065e' const sets = [ dpiAddress, diff --git a/projects/infy/index.js b/projects/infy/index.js index eee098fc6c..5a30ffef97 100644 --- a/projects/infy/index.js +++ b/projects/infy/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') async function tvlPolygon(time, ethB, { polygon: block }) { const escrows = ["0xCf311a6606c909Cc5E048FE1f3FF1e63dEec6a26", "0x4fF4C17F24d03Faf9d5097D7E71310AeF71a0f70", "0x9C5dA47ED0281aF302ED1E77a1B961ed980d5385"] const tokens = [ - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", //weth - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", //dai - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", //usdc - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", //usdt + ADDRESSES.polygon.WETH_1, //weth + ADDRESSES.polygon.DAI, //dai + ADDRESSES.polygon.USDC, //usdc + ADDRESSES.polygon.USDT, //usdt "0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756", //tusd ] return sumTokens2({ owners: escrows, tokens, chain: 'polygon', block, }) @@ -19,10 +20,10 @@ async function tvlKava(time, ethB, { kava: block }) { "0xEc12AB0306A3bbDa93aACC2BE931F8A8343bCEA3" ] const tokens = [ - "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", //weth - "0x765277EebeCA2e31912C9946eAe1021199B39C61", //dai - "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", //usdc - "0xB44a9B6905aF7c801311e8F4E76932ee959c663C", //usdt + ADDRESSES.moonriver.USDC, //weth + ADDRESSES.shiden.ETH, //dai + ADDRESSES.telos.ETH, //usdc + ADDRESSES.moonriver.USDT, //usdt ] return sumTokens2({ owners: escrows, tokens, chain: 'kava', block, }) } diff --git a/projects/injective/index.js b/projects/injective/index.js index 37d5b1c0aa..b3a9626f82 100644 --- a/projects/injective/index.js +++ b/projects/injective/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const newHolder = '0xf955c57f9ea9dc8781965feae0b6a2ace2bad6f3' @@ -5,25 +6,25 @@ module.exports = { ethereum: { tvl: sumTokensExport({ owner: newHolder, tokens: [ - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - '0x6b175474e89094c44da98b954eedeac495271d0f', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - '0xdac17f958d2ee523a2206206994597c13d831ec7', - '0x514910771af9ca656af840dff83e8264ecf986ca', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.LINK, + ADDRESSES.ethereum.WBTC, '0xaaef88cea01475125522e117bfe45cf32044e238', '0x4a220e6096b25eadb88358cb44068a3248254675', '0xde4c5a791913838027a2185709e98c5c6027ea63', '0x92d6c1e31e14520e676a687f0a93788b716beff5', - '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', + ADDRESSES.ethereum.UNI, '0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b', - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', + ADDRESSES.ethereum.STETH, '0x4d224452801ACEd8B2F0aebE155379bb5D594381', - '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', - '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', - '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F', + ADDRESSES.ethereum.MATIC, + ADDRESSES.ethereum.AAVE, + ADDRESSES.ethereum.SNX, '0x45804880De22913dAFE09f4980848ECE6EcbAf78', - '0x6B3595068778DD592e39A122f4f5a5cF09C90fE2', + ADDRESSES.ethereum.SUSHI, '0xc944E90C64B2c07662A292be6244BDf05Cda44a7' ] }) diff --git a/projects/insurace/index.js b/projects/insurace/index.js index 96af66a2e3..a2c609b084 100644 --- a/projects/insurace/index.js +++ b/projects/insurace/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abi.json'); @@ -33,7 +34,7 @@ async function eth(timestamp, ethBlock) { _tvlList.forEach((element) => { let address = element.input.params[0].toLowerCase(); if (address == "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") { - address = "0x0000000000000000000000000000000000000000"; + address = ADDRESSES.null; } let balance = element.output; if (BigNumber(balance).toNumber() <= 0) { @@ -78,7 +79,7 @@ async function bsc(timestamp, ethBlock, chainBlocks){ _tvlList.forEach((element) => { let address = element.input.params[0].toLowerCase(); if (address == "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") { - address = "bsc:0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c"; + address = "bsc:" + ADDRESSES.bsc.WBNB; }else if (address == "0x3192ccddf1cdce4ff055ebc80f3f0231b86a7e30") { address = "0x544c42fbb96b39b21df61cf322b5edc285ee7429"; }else{ @@ -136,7 +137,7 @@ async function avax(timestamp, ethBlock, chainBlocks) { _tvlList.forEach((element) => { let address = element.input.params[0].toLowerCase(); if(address === "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"){ - address = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" + address = ADDRESSES.avax.WAVAX } let balance = element.output; sdk.util.sumSingleBalance(balances, address===INSUR?INSUR:'avax:'+address, balance) diff --git a/projects/insuredao/index.js b/projects/insuredao/index.js index a6ded6b1ee..110466914c 100644 --- a/projects/insuredao/index.js +++ b/projects/insuredao/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokensAndLPs, } = require('../helper/unwrapLPs'); // addresses pools -const usdc = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const usdc = ADDRESSES.ethereum.USDC; const insure = "0xd83AE04c9eD29d6D3E6Bf720C71bc7BeB424393E"; const VotingEscrow = "0x3dc07E60ecB3d064d20c386217ceeF8e3905916b"; diff --git a/projects/invar-finance/index.js b/projects/invar-finance/index.js index a2f8b4f758..a909807781 100644 --- a/projects/invar-finance/index.js +++ b/projects/invar-finance/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abis = require("./abis.js"); const BigNumber = require("bignumber.js"); -const USDC_ADDRESS = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; +const USDC_ADDRESS = ADDRESSES.ethereum.USDC; const RE_NFT = "0x502818ec5767570F7fdEe5a568443dc792c4496b"; const INVARIA2222 = "0x10a92B12Da3DEE9a3916Dbaa8F0e141a75F07126"; diff --git a/projects/inverse/index.js b/projects/inverse/index.js index d17a373fb4..65aeaeb582 100644 --- a/projects/inverse/index.js +++ b/projects/inverse/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -9,11 +10,11 @@ const anchorStart = 11915867; const comptroller = "0x4dcf7407ae5c07f8681e1659f626e114a7667339"; const ignore = ["0x7Fcb7DAC61eE35b3D4a51117A7c58D53f0a8a670"]; // anDOLA will be counted through the stabilizer const anETH = "0x697b4acAa24430F254224eB794d2a85ba1Fa1FB8"; -const wETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const wETH = ADDRESSES.ethereum.WETH; // Stabilizer const stabilizer = "0x7eC0D931AFFBa01b77711C2cD07c76B970795CDd"; -const dai = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; +const dai = ADDRESSES.ethereum.DAI; // Vaults const vaults = [ diff --git a/projects/invictus/index.js b/projects/invictus/index.js index c6b954e3ff..d1ce0d9e03 100644 --- a/projects/invictus/index.js +++ b/projects/invictus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getTokenAccountBalance, getTokenBalance } = require('../helper/solana') async function staking() { @@ -10,7 +11,7 @@ async function staking() { const treasury = "6qfyGvoUqGB6AQ7xLc4pVwFNdgJSbAMkTtKkBXhLRiV1" async function tvl() { const [usdc,] = await Promise.all([ - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", //usdc + ADDRESSES.solana.USDC, //usdc ].map(t => getTokenBalance(t, treasury))) return { "usd-coin": usdc, diff --git a/projects/iotube/index.js b/projects/iotube/index.js index 41432eb30b..9b64299b99 100644 --- a/projects/iotube/index.js +++ b/projects/iotube/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, gql } = require("graphql-request"); const apiURL = "https://smart-graph.iotex.me/iotube/graphql"; @@ -11,14 +12,14 @@ const query = gql` ) { iotex: IoTeX { chainId - CIOTX: ERC20(address: ["0x99B2B0eFb56E62E36960c20cD5ca8eC6ABD5557A"]) { + CIOTX: ERC20(address: [ADDRESSES.iotex.CIOTX]) { address symbol decimals totalSupply balance: market_cap } - CYC: ERC20(address: ["0x4d7b88403aa2f502bf289584160db01ca442426c"]) { + CYC: ERC20(address: [ADDRESSES.iotex.CYC]) { address symbol decimals @@ -33,7 +34,7 @@ const query = gql` balance: market_cap } TokenSafe: ERC20( - address: ["0xa00744882684c3e4747faefd68d283ea44099d03"] + address: [ADDRESSES.iotex.WIOTX] ) { address symbol @@ -109,25 +110,25 @@ const query = gql` const variables = { iotexTokens: [ - "0x0258866edaf84d6081df17660357ab20a07d0c80", - "0xc7b93720f73b037394ce00f954f849ed484a3dea", - "0xacee9b11cd4b3f57e58880277ac72c8c41abe4e4", + ADDRESSES.iotex.ioETH, + ADDRESSES.iotex.ioWBTC, + ADDRESSES.iotex.ioBUSD, "0xedeefaca6a1581fe2349cdfc3083d4efa8188e55", "0x2a6003e4b618ff3457a4a2080d028b0249b51c80", - "0x6fbCdc1169B5130C59E72E51Ed68A84841C98cd1", - "0x3B2bf2b523f54C4E454F08Aa286D03115aFF326c", - "0x1CbAd85Aa66Ff3C12dc84C5881886EEB29C1bb9b", - "0x97e6c48867fdc391a8dfe9d169ecd005d1d90283", - "0x84abcb2832be606341a50128aeb1db43aa017449", - "0x42C9255D5e522e83B16ea11a3BA04c2D3AfCA079", - "0x037346E5a5722957Ac2cAb6ceb8c74fC18Cea91D", + ADDRESSES.iotex.ioUSDT, + ADDRESSES.iotex.ioUSDC, + ADDRESSES.iotex.ioDAI, + ADDRESSES.iotex.BNB_bsc, + ADDRESSES.iotex.BUSD_bsc, + ADDRESSES.iotex.USDT_b, + ADDRESSES.iotex.USDC_b, "0x0bDF82F276309E2efd4947Ee8E0A248b2726E8Df", - "0x8e66c0d6b70c0b23d39f4b21a1eac52bba8ed89a", + ADDRESSES.iotex.WMATIC, "0x653656f84381e8a359a268f3002621bbb14c62f8", "0x7f0ad63c902c67b1fa1b1102b0daffb889f5d5cb", - "0x62a9d987cbf4c45a550deed5b57b200d7a319632", - "0x3cdb7c48e70b854ed2fa392e21687501d84b3afc", - "0xc04da3a99d17135857bb937d2fbb321d3b6c6a81", + ADDRESSES.iotex.DAI_matic, + ADDRESSES.iotex.USDT_matic, + ADDRESSES.iotex.USDC_matic, "0x295ebb8c782e186bcb70d9a8124053043d1adf5c", "0xe46ba98a87dca989725e9a2389975c0bbbb8f985", "0xaadc74127109d944e36cbd70f71fc5f0c921fc6c", @@ -137,26 +138,26 @@ const variables = { ], ethTokens: [ "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + ADDRESSES.ethereum.WETH, "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + ADDRESSES.ethereum.WBTC, "0x8861cfF2366C1128fd699B68304aD99a0764Ef9a", - "0x4Fabb145d64652a948d72533023f6E7A623C7C53", - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + ADDRESSES.ethereum.BUSD, + ADDRESSES.ethereum.UNI, "0x45804880de22913dafe09f4980848ece6ecbaf78", - "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0x6b175474e89094c44da98b954eedeac495271d0f", + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, "0xD227c3e4f3F8dE94180269eF9DC221a6efc1F4C4", "0xf79deaBc1406a3AD07c70877fBaEb90777B77E68", ], bscTokens: [ - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "0xe9e7cea3dedca5984780bafc599bd69add087d56", + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.BUSD, "0x810ee35443639348adbbc467b33310d2ab43c168", "0x2aaF50869739e317AB80A57Bf87cAA35F5b60598", - "0x55d398326f99059ff775485246999027b3197955", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.USDC, "0x7e544f2fEDDc69b1cB12555779c824CFe100ee34", "0x049Dd7532148826CdE956c7B45fec8c30b514052", "0x049Dd7532148826CdE956c7B45fec8c30b514052", @@ -164,11 +165,11 @@ const variables = { ], polygonTokens: [ "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", - "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + ADDRESSES.polygon.WETH_1, + ADDRESSES.polygon.WBTC, + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.USDC, "0x0b3F868E0BE5597D5DB7fEB59E1CADBb0fdDa50a", "0x831753DD7087CaC61aB5644b308642cc1c33Dc13", "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", diff --git a/projects/ip/index.js b/projects/ip/index.js index b5d089a2f2..2921426354 100644 --- a/projects/ip/index.js +++ b/projects/ip/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokens2 } = require('../helper/unwrapLPs') const {lendingMarket} = require('../helper/methodologies') @@ -8,7 +9,7 @@ const vaultSummaryAbi = 'function vaultSummaries(uint96 start, uint96 stop) view const cappedTokens = { "0x5aC39Ed42e14Cf330A864d7D1B82690B4D1B9E61": { - address: '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', + address: ADDRESSES.ethereum.MATIC, symbol: 'MATIC', }, "0xfb42f5AFb722d2b01548F77C31AC05bf80e03381": { @@ -20,11 +21,11 @@ const cappedTokens = { symbol: 'BAL', }, "0xd3bd7a8777c042De830965de1C1BCC9784135DD2": { - address: '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', + address: ADDRESSES.ethereum.AAVE, symbol: 'AAVE', }, "0x7C1Caa71943Ef43e9b203B02678000755a4eCdE9": { - address: '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32', + address: ADDRESSES.ethereum.LIDO, symbol: 'LDO', }, "0xDDB3BCFe0304C970E263bf1366db8ed4DE0e357a": { @@ -32,11 +33,11 @@ const cappedTokens = { symbol: 'DYDX', }, "0x9d878eC06F628e883D2F9F1D793adbcfd52822A8": { - address: '0xD533a949740bb3306d119CC777fa900bA034cd52', + address: ADDRESSES.ethereum.CRV, symbol: 'CRV', }, "0x64eA012919FD9e53bDcCDc0Fc89201F484731f41": { - address: '0xae78736cd615f374d3085123a210448e74fc6393', + address: ADDRESSES.ethereum.RETH, symbol: 'rETH', }, "0x99bd1f28a5A7feCbE39a53463a916794Be798FC3": { @@ -55,7 +56,7 @@ async function tvl(_, _b, _cb, { api, }) { sdk.util.sumSingleBalance(balances,token,vault.tokenBalances[i]) }) }) - return sumTokens2({ api, balances, owner: '0x2A54bA2964C8Cd459Dc568853F79813a60761B58', tokens: ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48']}) + return sumTokens2({ api, balances, owner: '0x2A54bA2964C8Cd459Dc568853F79813a60761B58', tokens: [ADDRESSES.ethereum.USDC]}) } module.exports = { diff --git a/projects/ironfinance/index.js b/projects/ironfinance/index.js index 02426ac060..85508e9c28 100644 --- a/projects/ironfinance/index.js +++ b/projects/ironfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abiPolygon = require('./abi-polygon.json'); const { transformAddress } = require('./utils'); @@ -15,7 +16,7 @@ const Contracts = { lend: { ironController: '0xF20fcd005AFDd3AD48C85d0222210fe168DDd10c', }, - wrappedNative: '0x0000000000000000000000000000000000001010', + wrappedNative: ADDRESSES.polygon.WMATIC_1, }, avax: { pools: { @@ -29,7 +30,7 @@ const Contracts = { lend: { ironController: '0xDc4C597E36Fc80876801df0309Cc11A7C12E0764', }, - wrappedNative: '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83', + wrappedNative: ADDRESSES.fantom.WFTM, }, }; diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 725f7aaf4b..64545f3a01 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') let abi = require('./abi') const { sumTokens2, } = require('../helper/unwrapLPs') -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null const poolHelpers = { 'bsc': '0x93C22Fbeff4448F2fb6e432579b0638838Ff9581', 'arbitrum': '0x611575eE1fbd4F7915D0eABCC518eD396fF78F0c', @@ -10,7 +11,7 @@ const poolHelpers = { } const blacklistedTokens = [ - '0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d', + ADDRESSES.bsc.iUSD, '0x1382628e018010035999A1FF330447a0751aa84f', ] diff --git a/projects/jbc/index.js b/projects/jbc/index.js index 744712f9a1..6f371dbf4f 100644 --- a/projects/jbc/index.js +++ b/projects/jbc/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { pool2, staking } = require("../helper/unknownTokens"); const { nullAddress, sumTokensExport, } = require("../helper/unwrapLPs"); const tokensAndOwners = [ - ['0x1addd80e6039594ee970e5872d247bf0414c8903', '0xe964b6083F24dBC06e94C662b195c22C76923b22'], // GLP + [ADDRESSES.arbitrum.fsGLP, '0xe964b6083F24dBC06e94C662b195c22C76923b22'], // GLP [nullAddress, '0x64f688cACeFe6D4809f1A829c1d0286100196bE0'], // ETH - ['0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', '0xCC13E077F54577cE3Ea52916fDd70305C461A3ED'], // WBTC - ['0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', '0xcA2F482B067D354B3cdB6926911f42F5d1f0e872'], // USDC + [ADDRESSES.arbitrum.WBTC, '0xCC13E077F54577cE3Ea52916fDd70305C461A3ED'], // WBTC + [ADDRESSES.arbitrum.USDC, '0xcA2F482B067D354B3cdB6926911f42F5d1f0e872'], // USDC ] const lpToken = '0x85c6da933a7451bf2a6d836304b30967f3e76e11' diff --git a/projects/jelly/index.js b/projects/jelly/index.js index 86ef5e94f9..7d0115f23f 100644 --- a/projects/jelly/index.js +++ b/projects/jelly/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const jelly = "0xf5f06fFa53Ad7F5914F493F16E57B56C8dd2eA80" -const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +const USDC = ADDRESSES.ethereum.USDC const jellyUsdcLP = "0x64C2F792038f1FB55da1A9a22749971eAC94463E" const sweetPool = '0xF897C014a57298DA3453f474312079cC6cB140c0' const royalPool = '0xcC43331067234a0014d298b5226A1c22cb0ac66a' diff --git a/projects/jetfuelfinance/index.js b/projects/jetfuelfinance/index.js index 478c87a4d6..75a48a0cc4 100644 --- a/projects/jetfuelfinance/index.js +++ b/projects/jetfuelfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -45,9 +46,9 @@ const single_side_vault = [ ]; const single_side_assets = [ - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "0x250632378e573c6be1ac2f97fcdf00515d0aa91b", - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.BETH, + ADDRESSES.bsc.BTCB, ]; //const factoryTvl = uniTvlExport(factory, 'bsc') @@ -110,7 +111,7 @@ const bscTvl = async (timestamp, block, chainBlocks) => { return balances; }; -const {tvl:lendingTvl, borrowed} = compoundExports("0x67340bd16ee5649a37015138b3393eb5ad17c195", "bsc", "0xE24146585E882B6b59ca9bFaaaFfED201E4E5491", "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c") +const {tvl:lendingTvl, borrowed} = compoundExports("0x67340bd16ee5649a37015138b3393eb5ad17c195", "bsc", "0xE24146585E882B6b59ca9bFaaaFfED201E4E5491", ADDRESSES.bsc.WBNB) module.exports = { bsc: { diff --git a/projects/jetprotocol.js b/projects/jetprotocol.js index 7696e36d0c..ba3af33060 100644 --- a/projects/jetprotocol.js +++ b/projects/jetprotocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { getTokenBalance } = require("./helper/solana"); async function borrowed() { @@ -30,7 +31,7 @@ async function borrowed() { async function tvl() { const [usdcAmount, ethAmount, solAmount, btcAmount] = await Promise.all([ getTokenBalance( - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + ADDRESSES.solana.USDC, "7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8" ), getTokenBalance( @@ -38,7 +39,7 @@ async function tvl() { "7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8" ), getTokenBalance( - "So11111111111111111111111111111111111111112", + ADDRESSES.solana.SOL, "7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8" ), getTokenBalance( diff --git a/projects/jojo/index.js b/projects/jojo/index.js index 782750c094..4e8f4eb7ca 100644 --- a/projects/jojo/index.js +++ b/projects/jojo/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const contracts = [ @@ -5,7 +6,7 @@ const contracts = [ ]; const tokens = [ - '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d' + ADDRESSES.bsc.USDC ]; module.exports = { diff --git a/projects/jones-dao/index.js b/projects/jones-dao/index.js index ddb6b35fd0..11f110f5ee 100644 --- a/projects/jones-dao/index.js +++ b/projects/jones-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { pool2s } = require("../helper/pool2"); const { stakings } = require("../helper/staking"); const addresses = require("./addresses.json"); @@ -6,14 +7,14 @@ const lockerABI = require("./locked.json"); const sdk = require('@defillama/sdk') const jTokenToToken = { - "0x662d0f9ff837a51cf89a1fe7e0882a906dac08a3": "arbitrum:0x82af49447d8a07e3bd95bd0d56f35241523fbab1", // jETH + "0x662d0f9ff837a51cf89a1fe7e0882a906dac08a3": "arbitrum:" + ADDRESSES.arbitrum.WETH, // jETH "0x5375616bb6c52a90439ff96882a986d8fcdce421": "arbitrum:0x8d9ba570d6cb60c7e3e0f31343efe75ab8e65fb1", // jgOHM, "0xf018865b26ffab9cd1735dcca549d95b0cb9ea19": "arbitrum:0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55", // jDPX "0x1f6fa7a58701b3773b08a1a16d06b656b0eccb23": "arbitrum:0x32eb7902d4134bf98a28b963d26de779af92a212" // jrdpx } const AURA = '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF' const AURALocker = '0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC' -const USDC = '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8'; +const USDC = ADDRESSES.arbitrum.USDC; const jAuraStrategy = '0x7629fc134e5a7feBEf6340438D96881C8D121f2c'; async function tvl(timestamp, block, chainBlocks, { api }) { diff --git a/projects/jpeg-d/helper/index.js b/projects/jpeg-d/helper/index.js index b5fecd16d8..170c0928ce 100644 --- a/projects/jpeg-d/helper/index.js +++ b/projects/jpeg-d/helper/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') const { sumTokens2, nullAddress } = require("../../helper/unwrapLPs"); const abi = require("./abis"); const { @@ -138,7 +139,7 @@ async function getWalletStakedBakcCount(api) { const bakcIds = Array.from(new Set(bakcIdsBN.map((id) => id.toString()))); const ownerBakcIndexTuples = bakcIds.map((bakcId) => [ - "0x0000000000000000000000000000000000000000", // random owner address, it's not used. just for consistent parameters + ADDRESSES.null, // random owner address, it's not used. just for consistent parameters bakcId.toString(), ]); diff --git a/projects/juicebox-v1/index.js b/projects/juicebox-v1/index.js index cf26db7797..ff731630f6 100644 --- a/projects/juicebox-v1/index.js +++ b/projects/juicebox-v1/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') // V1 Juicebox Terminals const Terminal_V1 = "0xd569D3CCE55b71a8a3f3C418c329A66e5f714431"; const Terminal_v1_1 = "0x981c8ECD009E3E84eE1fF99266BF1461a12e5c68"; // Tokens -const ETH = '0x0000000000000000000000000000000000000000' +const ETH = ADDRESSES.null module.exports = { timetravel: true, diff --git a/projects/juicebox-v2/index.js b/projects/juicebox-v2/index.js index 317fb6d600..581e168f3e 100644 --- a/projects/juicebox-v2/index.js +++ b/projects/juicebox-v2/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') // V2 Juicebox Terminals const Terminal_V2 = "0x7Ae63FBa045Fec7CaE1a75cF7Aa14183483b8397"; // Tokens -const ETH = '0x0000000000000000000000000000000000000000' +const ETH = ADDRESSES.null module.exports = { timetravel: true, diff --git a/projects/juicebox-v3/index.js b/projects/juicebox-v3/index.js index 9adad53181..278432b263 100644 --- a/projects/juicebox-v3/index.js +++ b/projects/juicebox-v3/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') // V3 Juicebox Terminals const Terminal_V3 = "0x594Cb208b5BB48db1bcbC9354d1694998864ec63"; const Terminal_V3_1 = "0xFA391De95Fcbcd3157268B91d8c7af083E607A5C"; // Tokens -const ETH = '0x0000000000000000000000000000000000000000' +const ETH = ADDRESSES.null module.exports = { timetravel: true, diff --git a/projects/justmoney/index.js b/projects/justmoney/index.js index 0606a8b799..b163b54c8b 100644 --- a/projects/justmoney/index.js +++ b/projects/justmoney/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { getTokenBalance } = require('../helper/chain/tron') const { getUniTVL } = require('../helper/unknownTokens') @@ -13,7 +14,7 @@ const tokens = { CUBE: { 'address': 'TQxzbBVFRFUgHXnhyCRiatrkwX9BAJnHam', 'id': '_cube' }, CYFM: { 'address': 'TZ5jA9F5zGRgi9qk9ATMu6D7wyEpnxQGJh', 'id': 'cyberfm' }, ICR: { 'address': 'TKqvrVG7a2zJvQ3VysLoiz9ijuMNDehwy7', 'id': 'intercrone' }, - JM: { 'address': 'TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR', 'id': 'justmoney-2' }, + JM: { 'address': ADDRESSES.tron.JM, 'id': 'justmoney-2' }, JST: { 'address': 'TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9', 'id': 'just' }, KLV: { 'address': 'TVj7RNVHy6thbM7BWdSe9G6gXwKhjhdNZS', 'id': 'klever' }, KODX: { 'address': 'TTUwzoZAK6rpDjpSh8B2XFTnxGfbMLHJaq', 'id': 'kodx' }, @@ -34,8 +35,8 @@ const tokens = { turu: { 'address': 'TK8K7HFDLkhYS6XnFC8MKQkVK6Xq8D13qJ', 'id': '_turu' }, TREX: { 'address': 'THyYjzy42cy83Nwg6pbsUTcV1GBrPPqGE5', 'id': '_trex' }, TWJ: { 'address': 'TNq5PbSssK5XfmSYU4Aox4XkgTdpDoEDiY', 'id': '_twj' }, - USDD: { 'address': 'TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn', 'id': 'usdd' }, - USDT: { 'address': 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 'id': 'tether' }, + USDD: { 'address': ADDRESSES.tron.USDD, 'id': 'usdd' }, + USDT: { 'address': ADDRESSES.tron.USDT, 'id': 'tether' }, USTX: { 'address': 'TYX2iy3i3793YgKU5vqKxDnLpiBMSa5EdV', 'id': 'upstabletoken' }, VBS: { 'address': 'TJRc6ZTMhHEPrWPtfsVvXW1mxHPLw1arZo', 'id': '_vbs' }, WOX: { 'address': 'TYVFMntFj7xLMxp1CvuXwg9LpPw1dPwWhM', 'id': '_wox' }, diff --git a/projects/kaDefi/index.js b/projects/kaDefi/index.js index 0904e4be7c..c38d70cbd0 100644 --- a/projects/kaDefi/index.js +++ b/projects/kaDefi/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unknownTokens'); const WkavaKafiLpAddress = "0xA4Bea6f776f483a304FD6980F8F8c861AB24DE07"; -const ERC20ContractWkavaAddress = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b"; +const ERC20ContractWkavaAddress = ADDRESSES.kava.WKAVA; const ERC20ContractKafiAddress = "0x7356deD08af181869B492fcd641f4aEfB74De3E7"; const POL_Pool_One = "0xdf65B85E43dBa1F153325e7e4A0682B7DeBBFe0f"; const POL_Pool_Two = "0x738d2b4b59A0A3AA4086bC44C40a45845bB73FCC"; diff --git a/projects/kaco/index.js b/projects/kaco/index.js index 4d0f8211eb..ca5117962a 100644 --- a/projects/kaco/index.js +++ b/projects/kaco/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { uniTvlExport } = require("../helper/calculateUniTvl.js"); @@ -13,7 +14,7 @@ const KACFactory = { }; const KAC = { bsc: "0xf96429A7aE52dA7d07E60BE95A3ece8B042016fB", - shiden: "0xb12c13e66ade1f72f71834f2fc5082db8c091358", + shiden: ADDRESSES.harmony.AVAX, }; module.exports = { diff --git a/projects/kagla/addresses.js b/projects/kagla/addresses.js index 7f037e9d04..5af9989daf 100644 --- a/projects/kagla/addresses.js +++ b/projects/kagla/addresses.js @@ -1,7 +1,8 @@ -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000" +const ADDRESSES = require('../helper/coreAssets.json') +const ZERO_ADDRESS = ADDRESSES.null const ADDRESS_PROVIDER_ADDRESS = "0x5a0ad8337E5C6895b3893E80c8333859DAcf7c01" -const KGL_ADDRESS = "0x257f1a047948f73158DaDd03eB84b34498bCDc60" +const KGL_ADDRESS = ADDRESSES.astar.KGL const VOTING_ESCROW_ADDRESS = "0x432c8199F548425F7d5746416D98126E521e8174" const transformTokenAddress = (address) => TOKENS[address] @@ -16,29 +17,29 @@ const TOKENS = { // muKGL: staked KGL by Muuu Finance "0x5eaAe8435B178d4677904430BAc5079e73aFa56e": "kagla-finance", // USDC - "0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [ADDRESSES.moonbeam.USDC]: ADDRESSES.ethereum.USDC, // Starlay lUSDC -> USDC - "0xC404E12D3466acCB625c67dbAb2E1a8a457DEf3c": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [ADDRESSES.astar.lUSDC]: ADDRESSES.ethereum.USDC, // USDT - "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283": "0xdac17f958d2ee523a2206206994597c13d831ec7", + [ADDRESSES.astar.USDT]: ADDRESSES.ethereum.USDT, // Starlay lUSDT -> USDT - "0x430D50963d9635bBef5a2fF27BD0bDDc26ed691F": "0xdac17f958d2ee523a2206206994597c13d831ec7", + [ADDRESSES.astar.lUSDT]: ADDRESSES.ethereum.USDT, // DAI - "0x6De33698e9e9b787e09d3Bd7771ef63557E148bb": "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.DAI]: ADDRESSES.ethereum.DAI, // Starlay lDAI -> DAI - "0x4dd9c468A44F3FEF662c35c1E9a6108B70415C2c": "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.lDAI]: ADDRESSES.ethereum.DAI, // BUSD - "0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E": "binance-usd", + [ADDRESSES.oasis.ceUSDT]: "binance-usd", // BAI - "0x733ebcC6DF85f8266349DEFD0980f8Ced9B45f35": "bai-stablecoin", + [ADDRESSES.astar.BAI]: "bai-stablecoin", // aUSD "0xfFFFFfFF00000000000000010000000000000001": TOKEN_INFO.ausd.key, // ASTR "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" : "astar", // nASTR: staked ASTR by Algem - "0xE511ED88575C57767BAfb72BfD10775413E3F2b0": "astar", + [ADDRESSES.astar.nASTR]: "astar", // LAY - "0xc4335B1b76fA6d52877b3046ECA68F6E708a27dd": "starlay-finance", + [ADDRESSES.astar.LAY]: "starlay-finance", // muLAY: staked LAY by Muuu Finance "0xDDF2ad1d9bFA208228166311FC22e76Ea7a4C44D": "starlay-finance", }; diff --git a/projects/kalata/index.js b/projects/kalata/index.js index eb0d994204..d2e07e1a1e 100644 --- a/projects/kalata/index.js +++ b/projects/kalata/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { staking } = require('../helper/staking') const { getUniTVL } = require('../helper/unknownTokens') @@ -9,15 +10,15 @@ const masterchef = '0x565bCba3eA730ac6987edE126B29DCf499fccEA1' async function tvl(time, ethBlock, chainBlocks, { api }) { return sumTokens2({ api, ownerTokens: [ - [['0xe9e7cea3dedca5984780bafc599bd69add087d56'], '0x2d067575BE1f719f0b0865D357e67925B6f461C5'], // BUSD mint + [[ADDRESSES.bsc.BUSD], '0x2d067575BE1f719f0b0865D357e67925B6f461C5'], // BUSD mint [[ - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", - "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.ETH, "0x23396cf899ca06c4472205fc903bdb4de249d6fc", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + ADDRESSES.bsc.USDC, "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - "0x55d398326f99059ff775485246999027b3197955", - "0xe9e7cea3dedca5984780bafc599bd69add087d56", + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.BUSD, "0x5066c68cae3b9bdacd6a1a37c90f2d1723559d18",], masterchef], ] }) diff --git a/projects/kanvas/index.js b/projects/kanvas/index.js index ee273d52d7..30323e346c 100644 --- a/projects/kanvas/index.js +++ b/projects/kanvas/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const token0Abi = 'address:token0' @@ -10,7 +11,7 @@ const stakingAddress = "0x34d2Cfb257cCf7EFDC41DB9a824ac314da80Bae8"; const artStudio = "0xf15Bf479A5711f9411595C6289a9e7C36F24ad2F"; const transform = { -"0x150410ebbccc3be87997462ea7a44449b7c0dbf2":"kava:0x765277EebeCA2e31912C9946eAe1021199B39C61" +"0x150410ebbccc3be87997462ea7a44449b7c0dbf2":"kava:" + ADDRESSES.shiden.ETH } async function calcTvl(block, chain, pool2) { diff --git a/projects/kavastarter/index.js b/projects/kavastarter/index.js index 6727f76f29..f92076b965 100644 --- a/projects/kavastarter/index.js +++ b/projects/kavastarter/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unknownTokens'); const KAST_LP = "0x821dd423c744cAa452C0Ae1651a9388009efbE5b"; -const WKAVA = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b"; +const WKAVA = ADDRESSES.kava.WKAVA; const KAVASTARTER = "0x32a57dCa514Cc601d3DDEe974f57Db9Dc2CfE83b"; const POL_Pool_One = "0x12450E12A7eC069b51b46C92Ac122D90DbD9A99D"; diff --git a/projects/kccguru/index.js b/projects/kccguru/index.js index d3d1039719..b4185ed040 100644 --- a/projects/kccguru/index.js +++ b/projects/kccguru/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const ITVL = { pool2: "uint256:pool2", @@ -6,7 +7,7 @@ const ITVL = { usd: "address:usd", } const tvlGuru = "0x426a4A4B73d4CD173C9aB78d18c0d79d1717eaA9"; //On-Chain Universal TVL Finder -const USD = "kcc:0x0039f574eE5cC39bdD162E9A88e3EB1f111bAF48"; //same as abi.call({target:tvlGuru,abi:ITVL["usd"]}) +const USD = "kcc:" + ADDRESSES.kcc.USDT; //same as abi.call({target:tvlGuru,abi:ITVL["usd"]}) //NOTE: USD===kcc:USDT is used explicitly to reduce EVM calls by this adapter. It makes this process faster. async function pool2(timestamp,_, {kcc: block}) { let _pool2 = await sdk.api.abi.call({ diff --git a/projects/keep3r/registry.js b/projects/keep3r/registry.js index 296c71b0de..2fb84e5626 100644 --- a/projects/keep3r/registry.js +++ b/projects/keep3r/registry.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') exports.registry = { KP3R: "0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44", KP3RV2: "0xeb02addCfD8B773A5FFA6B9d1FE99c566f8c44CC", @@ -21,13 +22,13 @@ exports.registry = { SCHF: "0x0F83287FF768D1c1e17a42F44d644D7F22e8ee1d", MIM: "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", CVX: "0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", - SUSHI: "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2", - CRV: "0xD533a949740bb3306d119CC777fa900bA034cd52", + DAI: ADDRESSES.ethereum.DAI, + SUSHI: ADDRESSES.ethereum.SUSHI, + CRV: ADDRESSES.ethereum.CRV, CVXCRV: "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", SPELL: "0x090185f2135308BaD17527004364eBcC2D37e5F6", - WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - LDO: "0x5a98fcbea516cf06857215779fd812ca3bef1b32", + WETH: ADDRESSES.ethereum.WETH, + LDO: ADDRESSES.ethereum.LIDO, ARMOR: "0x1337def16f9b486faed0293eb623dc8395dfe46a", HEGIC: "0x584bc13c7d411c00c01a62e8019472de68768430", MM: "0xa283aA7CfBB27EF0cfBcb2493dD9F4330E0fd304", diff --git a/projects/keeper-dao/index.js b/projects/keeper-dao/index.js index 0ff296c537..da4296bca9 100644 --- a/projects/keeper-dao/index.js +++ b/projects/keeper-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); @@ -83,7 +84,7 @@ async function getHidingVaultBalances(timestamp, block) { // get the underlying token address const isCEth = cTokenAddress.toLowerCase() === "0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5" const { output: token } = isCEth - ? { output: '0x0000000000000000000000000000000000000000' } // ETH has no underlying asset on Compound + ? { output: ADDRESSES.null } // ETH has no underlying asset on Compound : await sdk.api.abi.call( { block, diff --git a/projects/kefirswap/index.js b/projects/kefirswap/index.js index ac9a2ee490..a3ab559552 100644 --- a/projects/kefirswap/index.js +++ b/projects/kefirswap/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') // const KEFIR = "0xf5E547C683f5d72D6A463542d3e2cC13C5470D71" const FACTORY = "0xeEAbe2F15266B19f3aCF743E69105016277756Fb" -const WKAVA = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b" +const WKAVA = ADDRESSES.kava.WKAVA module.exports = { methodology: "Count TVL as liquidity on the dex", diff --git a/projects/kinefinance/index.js b/projects/kinefinance/index.js index cdffeb48dc..64bc109719 100644 --- a/projects/kinefinance/index.js +++ b/projects/kinefinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { BigNumber } = require("bignumber.js"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -123,14 +124,14 @@ async function getBorrowed(block, chain, kMcd) { chain })).output; - sdk.util.sumSingleBalance(balances, "0xdac17f958d2ee523a2206206994597c13d831ec7", BigNumber(totalBorrows).div(1e12).toFixed(0)); + sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.USDT, BigNumber(totalBorrows).div(1e12).toFixed(0)); return balances; } const ethUnitroller = "0xbb7d94a423f4978545ecf73161f0678e8afd1a92"; const keth = "0xa58e822de1517aae7114714fb354ee853cd35780"; -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const weth = ADDRESSES.ethereum.WETH; const ethXKine = "0xa8d7643324df0f38764f514eb1a99d8f379cc692"; const ethKine = "0xcbfef8fdd706cde6f208460f2bf39aa9c785f05d"; const ethkMcd = "0xaf2617aa6fd98581bb8cb099a16af74510b6555f"; @@ -145,7 +146,7 @@ async function ethBorrow(timestamp, block) { const bscUnitroller = "0x3c2ddd486c07343b711a4415cdc9ab90ed32b571"; const kbnb = "0x5fbe4eb536dadbcee54d5b55ed6559e29c60b055"; -const wbnb = "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c"; +const wbnb = ADDRESSES.bsc.WBNB; const bscXKine = "0x8f5abd0d891d293b13f854700ff89210da3d5ba3"; const bscKine = "0xbfa9df9ed8805e657d0feab5d186c6a567752d7f"; const bsckMcd = "0x4f1ab95b798084e44d512b8b0fed3ef933177986"; @@ -175,7 +176,7 @@ async function polygonBorrowed(timestamp, block, chainBlocks) { const avaxUnitroller = "0x0ec3126390c606be63a0fa6585e68075f06679c6"; const kavax = "0x0544be6693763d64c02f49f16986ba1390a2fc39"; -const wavax = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7"; +const wavax = ADDRESSES.avax.WAVAX; const avaxXKine = "0x68b9737ae74cf1a169890042f1aa359647aa3e47"; const avaxKine = "0xa9c1740fa56e4c0f6ce5a792fd27095c8b6ccd87"; const avaxkMcd = "0xcd6b46443becad4996a70ee3d8665c0b86a0c54c"; diff --git a/projects/kinesis/index.js b/projects/kinesis/index.js index ff82d203fa..380dad6823 100644 --- a/projects/kinesis/index.js +++ b/projects/kinesis/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -34,14 +35,14 @@ const poolAddresses_evmos = [ ]; // Bridged Nomad Stablecoins -const madUSDC = "0x51e44FfaD5C2B122C8b635671FCC8139dc636E82"; -const madUSDT = "0x7FF4a56B32ee13D7D4D405887E0eA37d61Ed919e"; -const FRAX = "0xE03494D0033687543a80c9B1ca7D6237F2EA8BD8"; +const madUSDC = ADDRESSES.evmos.USDC; +const madUSDT = ADDRESSES.evmos.USDT; +const FRAX = ADDRESSES.evmos.FRAX; // Bridged Celer Stablecoins const ceDAI = "0x940dAAbA3F713abFabD79CdD991466fe698CBe54"; -const ceUSDC = "0xe46910336479F254723710D57e7b683F3315b22B"; -const ceUSDT = "0xb72A7567847abA28A2819B855D7fE679D4f59846"; +const ceUSDC = ADDRESSES.evmos.ceUSDC; +const ceUSDT = ADDRESSES.evmos.ceUSDT; // Bridged Axelar Stablecoins const axlDAI = "0x4A2a90D444DbB7163B5861b772f882BbA394Ca67"; @@ -49,9 +50,9 @@ const axlUSDC = "0x15C3Eb3B621d1Bff62CbA1c9536B7c1AE9149b57"; const axlUSDT = "0xe01C6D4987Fc8dCE22988DADa92d56dA701d0Fe0"; // Bridged Gravity Stablecoins -const gravDAI = "0xd567B3d7B8FE3C79a1AD8dA978812cfC4Fa05e75"; -const gravUSDC = "0x5FD55A1B9FC24967C4dB09C513C3BA0DFa7FF687"; -const gravUSDT = "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265"; +const gravDAI = ADDRESSES.functionx.PUNDIX; +const gravUSDC = ADDRESSES.functionx.PURSE; +const gravUSDT = ADDRESSES.functionx.USDT; async function tvl(timestamp, chainBlocks) { const balances = {}; diff --git a/projects/klayswap/index.js b/projects/klayswap/index.js index 2ee2b63d49..a60058b1f4 100644 --- a/projects/klayswap/index.js +++ b/projects/klayswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { getUniTVL } = require('../helper/unknownTokens'); const kslp = require('../helper/abis/kslp'); @@ -15,7 +16,7 @@ async function singlePoolTvl(_, _b, _cb, { api, }) { const dexTVL = getUniTVL({ useDefaultCoreAssets: true, - factory: '0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654', + factory: ADDRESSES.klaytn.KSP, abis: { allPairsLength: kslp.getPoolCount, allPairs: kslp.pools, @@ -30,7 +31,7 @@ module.exports = { methodology: 'TVL counts the liquidity of KlaySwap DEX and staking counts the KSP that has been staked', klaytn: { tvl: sdk.util.sumChainTvls([singlePoolTvl, dexTVL,]), - staking: staking('0x2f3713f388bc4b8b364a7a2d8d57c5ff4e054830', '0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654') + staking: staking('0x2f3713f388bc4b8b364a7a2d8d57c5ff4e054830', ADDRESSES.klaytn.KSP) }, misrepresentedTokens: true, } \ No newline at end of file diff --git a/projects/klend/index.js b/projects/klend/index.js index 7a4875d1ec..14b9faf543 100644 --- a/projects/klend/index.js +++ b/projects/klend/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const {compoundExports} = require('../helper/compound'); const {unwrapUniswapLPs} = require('../helper/unwrapLPs'); @@ -5,7 +6,7 @@ const {unwrapUniswapLPs} = require('../helper/unwrapLPs'); // BSC const unitroller = "0xA6bEd5B7320941eA185A315D1292492F7Fdd1e5c"; const kBnb = "0x2C334c6cBC0547e759084bD8D469f933B17Ff481"; -const wbnb = "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c" +const wbnb = ADDRESSES.bsc.WBNB const bscPools = [ "0xf1D447656692d51d4DB7057104Ac6E97029A7790", "0x95D4D2D88C96cE96c97A912Aa7122715716013D4" @@ -18,7 +19,7 @@ const lpAbi = 'address:lp' // OKEX const okexUnitroller = "0x9589c9c9b7A484F57d69aC09c14EcE4b6d785710"; const kOkt = "0x4923abEe988f7bB7A9ae136BEBE4A8455e8dE229"; -const wokt = "0x8f8526dbfd6e38e3d8307702ca8469bae6c56c15" +const wokt = ADDRESSES.okexchain.WOKT async function pool2Tvl(balances, chainBlocks, chain, pools) { diff --git a/projects/klima-dao/index.js b/projects/klima-dao/index.js index bb619f4713..7ea18fb90f 100644 --- a/projects/klima-dao/index.js +++ b/projects/klima-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') const { transformPolygonAddress } = require('../helper/portedTokens') @@ -12,7 +13,7 @@ async function tvl(time, ethBlock, chainBlocks) { await sumTokensAndLPsSharedOwners(balances, [ ["0x2f800db0fdb5223b3c3f354886d907a671414a7f", false], // BCT ["0xD838290e877E0188a4A44700463419ED96c16107", false], // NCT - ["0x2791bca1f2de4661ed88a30c99a7a9449aa84174", false], // USDC + [ADDRESSES.polygon.USDC, false], // USDC ["0x03E3369af9390493CB7CC599Cd5233D50e674Da4", false], // MOSS ["0x6BCa3B77C1909Ce1a4Ba1A20d1103bDe8d222E48", false], // NBO ["0x1E67124681b402064CD0ABE8ed1B5c79D2e02f64", true], // USDC-BCT diff --git a/projects/know-to-earn.js b/projects/know-to-earn.js index 67c3759801..4bc3a4655a 100644 --- a/projects/know-to-earn.js +++ b/projects/know-to-earn.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') // 0x515343ed04b054d098a0c15cbd7f98b0250d0b38 KNOW token // 0x767eded9032ce68dc4e475addf0059baab936585 lp token // 0xEA934138CFEF2c5efedf2b670B93Fb6827295cC4 owner @@ -5,7 +6,7 @@ const { sumLPWithOnlyOneToken } = require("./helper/unwrapLPs"); const iotx = "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69"; -const wiotx = "0xA00744882684C3e4747faEFD68D283eA44099D03"; +const wiotx = ADDRESSES.iotex.WIOTX; function pool2(chain, gasToken) { return async (timestamp, _block, {[chain]: block}) => { diff --git a/projects/kogefarm/helper.js b/projects/kogefarm/helper.js index 337b21139e..da16dff3bf 100644 --- a/projects/kogefarm/helper.js +++ b/projects/kogefarm/helper.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require('bignumber.js') const sdk = require('@defillama/sdk') const abi = require('./abi.json') @@ -5,15 +6,15 @@ const abi = require('./abi.json') function transformAddressKF(chain = 'polygon') { return (addr) => { // WETH - if (addr.toLowerCase() === '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619') { - return '0x0000000000000000000000000000000000000000' + if (addr.toLowerCase() === ADDRESSES.polygon.WETH_1) { + return ADDRESSES.null } // Special cases since coingecko doesn't find them if ( // fUSDT (chain === 'fantom' && - addr.toLowerCase() === '0x049d68029688eabf473097a2fc38ef61633a3c7a') || + addr.toLowerCase() === ADDRESSES.fantom.fUSDT) || (chain === 'moonriver' && addr.toLowerCase() === '0xe936caa7f6d9f5c9e907111fcaf7c351c184cda7') ) { @@ -23,7 +24,7 @@ function transformAddressKF(chain = 'polygon') { if ( // renbtc on Fantom (chain === 'fantom' && - addr.toLowerCase() === '0xdbf31df14b66535af65aac99c32e9ea844e14501') + addr.toLowerCase() === ADDRESSES.fantom.renBTC) ) { // renbtc on Polygon return `polygon:0xDBf31dF14B66535aF65AaC99C32e9eA844e14501` @@ -39,7 +40,7 @@ function transformAddressKF(chain = 'polygon') { if ( // Dai on Fantom (chain === 'fantom' && - addr.toLowerCase() === '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e') + addr.toLowerCase() === ADDRESSES.fantom.DAI) ) { // Dai on Eth return `ethereum:0x6b175474e89094c44da98b954eedeac495271d0f` @@ -102,7 +103,7 @@ function transformAddressKF(chain = 'polygon') { return `avax:0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7` } // Special case for MIM, since coingecko doesn't find - if (addr.toLowerCase() === '0x82f0b8b456c1a451378467398982d4834b6829c1') { + if (addr.toLowerCase() === ADDRESSES.fantom.MIM) { // MIM return `ethereum:0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3` } diff --git a/projects/koyo/constants.js b/projects/koyo/constants.js index b761511b27..0e6898c9e2 100644 --- a/projects/koyo/constants.js +++ b/projects/koyo/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const addresses = { boba: { treasury: "0x559dBda9Eb1E02c0235E245D9B175eb8DcC08398", @@ -6,17 +7,17 @@ const addresses = { tokens: { KYO: "0x618CC6549ddf12de637d46CDDadaFC0C2951131C", BREW: "0x3a93bd0fa10050d206370eea53276542a105c885", - BOBA: "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7", - FRAX: "0x7562F525106F5d54E891e005867Bf489B5988CD9", - USDC: "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", - USDT: "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d", - DAI: "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35", + BOBA: ADDRESSES.boba.BOBA, + FRAX: ADDRESSES.boba.FRAX, + USDC: ADDRESSES.boba.USDC, + USDT: ADDRESSES.boba.USDT, + DAI: ADDRESSES.boba.DAI, }, vault: '0x2a4409cc7d2ae7ca1e3d915337d1b6ba2350d6a3', }, ethereum: { treasury: "0x47BbF992a25B7fe1D532F8128D514524462731eF", - USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + USDC: ADDRESSES.ethereum.USDC, } }; diff --git a/projects/kronos/index.js b/projects/kronos/index.js index ce74a40677..42e422342b 100644 --- a/projects/kronos/index.js +++ b/projects/kronos/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getChainTransform, getFixBalances } = require("../helper/portedTokens") -const KDAI = "0x5c74070fdea071359b86082bd9f9b3deaafbe32b"; -const KSD = "0x4fa62f1f404188ce860c8f0041d6ac3765a72e67"; +const KDAI = ADDRESSES.klaytn.KDAI; +const KSD = ADDRESSES.klaytn.KSD; const wrappedKlay = '0xd7a4d10070a4f7bc2a015e78244ea137398c3b74' const TREASURY = "0x03c812eE50e244909efE72e8c729976ACc5C16bb"; const token = "0xd676e57ca65b827feb112ad81ff738e7b6c1048d"; @@ -28,7 +29,7 @@ const LPs = [ { address: '0x2febbaed702b9a1d9f6ffccd67701550ac546115', // KRNO_KSP_LP tokens: [ - '0xc6a2ad8cc6e4a7e08fc37cc5954be07d499e7654', + ADDRESSES.klaytn.KSP, ] } ] diff --git a/projects/kuufinance/index.js b/projects/kuufinance/index.js index 364d7de912..b14a38422b 100644 --- a/projects/kuufinance/index.js +++ b/projects/kuufinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') @@ -10,10 +11,10 @@ module.exports = { owner: JITU_CONTRACT_ADDRESS, tokens: [ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', - '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + ADDRESSES.avax.WETH_e, '0x50b7545627a5162F82A992c33b87aDc75187B218', - '0xc7198437980c041c805A1EDcbA50c1Ce5db95118', - '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', + ADDRESSES.avax.USDT_e, + ADDRESSES.avax.DAI, '0x5947BB275c521040051D82396192181b413227A3' ] }), diff --git a/projects/l2finance/index.js b/projects/l2finance/index.js index 1fe926770e..007887c62a 100644 --- a/projects/l2finance/index.js +++ b/projects/l2finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const abi = require('./abi.json') const { getLogs } = require('../helper/cache/getLogs') @@ -15,10 +16,10 @@ async function tvl(timestamp, block, _, { api }) { const [syncBalances, tokens] = await Promise.all([abi.syncBalance, abi.supplyToken].map(abiMethod => api.multiCall({ abi: abiMethod, calls: strategies }))) api.addTokens(tokens, syncBalances) return sumTokens2({ api, owner: rollupChain, tokens: [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", //usdc - "0x6b175474e89094c44da98b954eedeac495271d0f", //dai - "0x4fabb145d64652a948d72533023f6e7a623c7c53", //busd - "0xdac17f958d2ee523a2206206994597c13d831ec7", //usdt + ADDRESSES.ethereum.USDC, //usdc + ADDRESSES.ethereum.DAI, //dai + ADDRESSES.ethereum.BUSD, //busd + ADDRESSES.ethereum.USDT, //usdt ]}) } diff --git a/projects/lachainBridge.js b/projects/lachainBridge.js index ff16706916..6e60f67ce3 100644 --- a/projects/lachainBridge.js +++ b/projects/lachainBridge.js @@ -1,25 +1,26 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokens } = require('./helper/unwrapLPs') const { getChainTransform } = require('./helper/portedTokens') const config = { polygon: { - nativeBridge: ['0xE372D290F83c7487bdc925ddA187671bfF9e347b'], tokenBridge: ['0x82E4d5d7F36a22f2FEaaF87eCcDcDA7e0EFc98C3'], tokens: ['0xc2132D05D31c914a87C6611C10748AEb04B58e8F'], + nativeBridge: ['0xE372D290F83c7487bdc925ddA187671bfF9e347b'], tokenBridge: ['0x82E4d5d7F36a22f2FEaaF87eCcDcDA7e0EFc98C3'], tokens: [ADDRESSES.polygon.USDT], }, bsc: { - nativeBridge: ['0xC926f267418d69147c88Edf88e93E78F2153f923'], tokenBridge: ['0x6571DD15430a455118EC6e24Dc7820489ED7019b'], tokens: ['0x55d398326f99059fF775485246999027B3197955'], + nativeBridge: ['0xC926f267418d69147c88Edf88e93E78F2153f923'], tokenBridge: ['0x6571DD15430a455118EC6e24Dc7820489ED7019b'], tokens: [ADDRESSES.bsc.USDT], }, ethereum: { - nativeBridge: ['0xc7fc91a0a93d570738b2af6efb1595c3183809d7'], tokenBridge: ['0xAB49eb8Ca42f42fd7e8b745F2CC5BeDfb78d2D3E'], tokens: ['0xdAC17F958D2ee523a2206206994597C13D831ec7'], + nativeBridge: ['0xc7fc91a0a93d570738b2af6efb1595c3183809d7'], tokenBridge: ['0xAB49eb8Ca42f42fd7e8b745F2CC5BeDfb78d2D3E'], tokens: [ADDRESSES.ethereum.USDT], }, avax: { - nativeBridge: ['0xD4aE8F772dcf2e20b103c740AfD9D9f9E78dbfFC'], tokenBridge: ['0x8783256443217856B716464A068aabdecc3F0b95'], tokens: ['0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7'], + nativeBridge: ['0xD4aE8F772dcf2e20b103c740AfD9D9f9E78dbfFC'], tokenBridge: ['0x8783256443217856B716464A068aabdecc3F0b95'], tokens: [ADDRESSES.avax.USDt], }, fantom: { - nativeBridge: ['0x012cebA65fD071473a9E0d3C5048702734a1eE5e'], tokenBridge: ['0x73Ec53a1Ee3Ea275D95212b41Dcce8cb9e0206Cd'], tokens: ['0x049d68029688eabf473097a2fc38ef61633a3c7a'], + nativeBridge: ['0x012cebA65fD071473a9E0d3C5048702734a1eE5e'], tokenBridge: ['0x73Ec53a1Ee3Ea275D95212b41Dcce8cb9e0206Cd'], tokens: [ADDRESSES.fantom.fUSDT], }, arbitrum: { - nativeBridge: ['0xD4aE8F772dcf2e20b103c740AfD9D9f9E78dbfFC'], tokenBridge: ['0x43d92690D302C0e9f2fBD624eb9589F52b5AD115'], tokens: ['0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9'], + nativeBridge: ['0xD4aE8F772dcf2e20b103c740AfD9D9f9E78dbfFC'], tokenBridge: ['0x43d92690D302C0e9f2fBD624eb9589F52b5AD115'], tokens: [ADDRESSES.arbitrum.USDT], }, harmony: { nativeBridge: ['0x0A19afbE4519A40Df3b48BE46EDc0720724B4A6B'], tokenBridge: ['0x5DDDc78C8a59CeD4d25a8FD96BF9D9FdA561D0FF'], tokens: ['0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f'], @@ -31,7 +32,7 @@ const config = { module.exports = {}; -const nullAddress = "0x0000000000000000000000000000000000000000" +const nullAddress = ADDRESSES.null Object.keys(config).forEach(chain => { const { nativeBridge, tokenBridge, tokens} = config[chain] diff --git a/projects/ladao-xocolatl/index.js b/projects/ladao-xocolatl/index.js index 7173cc240b..3afd04b05b 100644 --- a/projects/ladao-xocolatl/index.js +++ b/projects/ladao-xocolatl/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); module.exports = { @@ -5,9 +6,9 @@ module.exports = { polygon: { tvl: sumTokensExport({ tokensAndOwners: [ - ['0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', '0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], - ['0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', '0x09dFC327364701d73683aCe049B8A5a8Ea27F3E8'], - ['0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6','0x983A0eC44bf1BB11592a8bD5F91f05adE4F44D81'], + [ADDRESSES.polygon.WETH_1, '0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], + [ADDRESSES.polygon.WETH_1, '0x09dFC327364701d73683aCe049B8A5a8Ea27F3E8'], + [ADDRESSES.polygon.WBTC,'0x983A0eC44bf1BB11592a8bD5F91f05adE4F44D81'], ['0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270','0xdB9Dd25660240415d95144C6CE4f21f00Edf8168'] ] }) @@ -15,8 +16,8 @@ module.exports = { bsc: { tvl: sumTokensExport({ tokensAndOwners: [ - ['0x2170Ed0880ac9A755fd29B2688956BD959F933F8','0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], - ['0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c','0x070ccE6887E70b75015F948b12601D1E759D2024'] + [ADDRESSES.bsc.ETH,'0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], + [ADDRESSES.bsc.WBNB,'0x070ccE6887E70b75015F948b12601D1E759D2024'] ] }) }, diff --git a/projects/lagobridge/index.js b/projects/lagobridge/index.js index 6d7241d8b7..34c5d062b0 100644 --- a/projects/lagobridge/index.js +++ b/projects/lagobridge/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const bridgecontract = '0xc6895a02F9dFe64341c7B1d03e77018E24Db15eD'; -const usdc = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' -const wbtc = '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' +const usdc = ADDRESSES.ethereum.USDC +const wbtc = ADDRESSES.ethereum.WBTC module.exports = { methodology: "Tracks funds locked in the Lago Bridge contract on Ethereum", diff --git a/projects/lanternswap/index.js b/projects/lanternswap/index.js index 247186667b..6b56c31939 100644 --- a/projects/lanternswap/index.js +++ b/projects/lanternswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -16,9 +17,9 @@ const poolAddressesKava = [ "0x9076e914D94431A38311B247b289B7274E08d6f9", ]; -const DAI = "0x765277EebeCA2e31912C9946eAe1021199B39C61" -const USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f" -const USDT = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C" +const DAI = ADDRESSES.shiden.ETH +const USDC = ADDRESSES.telos.ETH +const USDT = ADDRESSES.moonriver.USDT async function tvl(timestamp, chainBlocks) { const balances = {}; diff --git a/projects/leaguedao/index.js b/projects/leaguedao/index.js index ceaa353291..ffeff31ed4 100644 --- a/projects/leaguedao/index.js +++ b/projects/leaguedao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const leag = "0x7b39917f9562C8Bc83c7a6c2950FF571375D505D"; @@ -5,10 +6,10 @@ const stakingContract = "0x67F60dA0F409AB8427e8a408efc4B137D0BD4e7B"; const yieldFarmStakingContract = "0x43921eb2E5C78D9e887d3Ecd4620a3Bd606f4F95"; //Tokens in Yield Farm Contract -const link = "0x514910771af9ca656af840dff83e8264ecf986ca"; -const snx = "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"; +const link = ADDRESSES.ethereum.LINK; +const snx = ADDRESSES.ethereum.SNX; const ilv = "0x767fe9edc9e0df98e07454847909b5e959d7ca0e"; -const sushi = "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2"; +const sushi = ADDRESSES.ethereum.SUSHI; const bond = "0x0391D2021f89DC339F60Fff84546EA23E337750f"; const xyz = "0x618679df9efcd19694bb1daa8d00718eacfa2883"; const ionx = "0x02d3a27ac3f55d5d91fb0f52759842696a864217"; diff --git a/projects/lemma/index.js b/projects/lemma/index.js index 65a0d3714e..34c94851cf 100644 --- a/projects/lemma/index.js +++ b/projects/lemma/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { transformOptimismAddress } = require('../helper/portedTokens'); const perpV2VaultABI = require('./abis/perpV2Vault.json'); const perpLemmaWrapperABI = require('./abis/perpLemmaWrapper.json'); -const USDC = "0x7F5c764cBc14f9669B88837ca1490cCa17c31607"; +const USDC = ADDRESSES.optimism.USDC; const PERP_V2_VAULT = "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60"; const tokens = [ - "0x4200000000000000000000000000000000000006", + ADDRESSES.tombchain.FTM, "0x68f180fcce6836688e9084f035309e29bf0a2095", "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6", "0x76FB31fb4af56892A25e32cFC43De717950c9278", diff --git a/projects/lendexe/index.js b/projects/lendexe/index.js index bbb90cd4b4..2ba3cc92a2 100644 --- a/projects/lendexe/index.js +++ b/projects/lendexe/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require('../helper/compound') const { nullAddress } = require('../helper/tokenMapping') const { lendingMarket } = require("../helper/methodologies"); @@ -7,9 +8,9 @@ const u = undefined const { tvl, borrowed } = compoundExports('0x2c7b7A776b5c3517B77D05B9313f4699Fb38a8d3',u,'0x36e66547e27a5953f6ca3d46cc2663d9d6bdc59e', nullAddress, undefined, undefined, { fetchBalances: true, blacklistedTokens: ['0x53011e93f21ec7a74cdfbb7e6548f1abce306833'] }) const mapping = { - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': 6, - '0xdac17f958d2ee523a2206206994597c13d831ec7': 6, - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599': 8, + [ADDRESSES.ethereum.USDC]: 6, + [ADDRESSES.ethereum.USDT]: 6, + [ADDRESSES.ethereum.WBTC]: 8, } async function borrowedWrapped(_, _1, _2, { api }) { const borrowedRes = await borrowed(_, _1, _2, { api }) diff --git a/projects/lendhub/index.js b/projects/lendhub/index.js index 672db729e2..422c81c8e0 100644 --- a/projects/lendhub/index.js +++ b/projects/lendhub/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const cAbis = require('./abi.json'); @@ -22,7 +23,7 @@ async function getMarkets(block) { const calls = [] for (const cToken of allCTokens) { if (cToken.toLowerCase() === '0x99a2114B282acC9dd25804782ACb4D3a2b1Ad215'.toLowerCase()) - markets.push({ cToken, underlying: '0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f' }) + markets.push({ cToken, underlying: ADDRESSES.heco.WHT }) else calls.push({ target: cToken }) } diff --git a/projects/lenlen/index.js b/projects/lenlen/index.js index 71c0b7769a..93fd933f3c 100644 --- a/projects/lenlen/index.js +++ b/projects/lenlen/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundV3Exports } = require('../helper/compoundV3') @@ -6,7 +7,7 @@ const markets = [ ] const collaterals = [ - '0x1db6cdc620388a0b6046b20cd59503a0839adcff', + ADDRESSES.vision.USDT, ] module.exports = compoundV3Exports({ diff --git a/projects/level/index.js b/projects/level/index.js index d3dd617cd5..2b2d67dd93 100644 --- a/projects/level/index.js +++ b/projects/level/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const { pool2 } = require("../helper/pool2"); @@ -5,12 +6,12 @@ const Contracts = { Pool: "0xA5aBFB56a78D2BD4689b25B8A77fd49Bb0675874", Chef: "0x5ae081b6647aef897dec738642089d4bda93c0e7", Tokens: { - BTC: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", - ETH: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", - WBNB: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + BTC: ADDRESSES.bsc.BTCB, + ETH: ADDRESSES.bsc.ETH, + WBNB: ADDRESSES.bsc.WBNB, CAKE: "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - BUSD: "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", - USDT: "0x55d398326f99059fF775485246999027B3197955" + BUSD: ADDRESSES.bsc.BUSD, + USDT: ADDRESSES.bsc.USDT }, LVL_BNB_LP: "0x70f16782010fa7ddf032a6aacdeed05ac6b0bc85" } diff --git a/projects/lido/index.js b/projects/lido/index.js index baf8be6255..f88f6c0fff 100644 --- a/projects/lido/index.js +++ b/projects/lido/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const axios = require('axios'); const sdk = require('@defillama/sdk') const sol = require('./sol-helpers'); const { getConnection } = require('../helper/solana'); -const ethContract = '0xae7ab96520de3a18e5e111b5eaab095312d7fe84'; +const ethContract = ADDRESSES.ethereum.STETH; async function terra(timestamp, ethBlock, chainBlocks) { const { total_bond_amount } = ( @@ -28,8 +29,8 @@ async function eth(timestamp, ethBlock, chainBlocks) { }) return { - '0x0000000000000000000000000000000000000000': pooledETH.output, - "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0": pooledMatic.output, + [ADDRESSES.null]: pooledETH.output, + [ADDRESSES.ethereum.MATIC]: pooledMatic.output, } } @@ -52,7 +53,7 @@ async function dot(timestamp, ethBlock, {moonbeam: block}) { const pooledCoin = await sdk.api.abi.call({ block, chain, - target: "0xfa36fe1da08c89ec72ea1f0143a35bfd5daea108", + target: ADDRESSES.moonbeam.stDOT, abi: "uint256:getTotalPooledKSM", }) diff --git a/projects/lien/index.js b/projects/lien/index.js index 993f289e64..ff7c6e0b89 100644 --- a/projects/lien/index.js +++ b/projects/lien/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const ZERO_ADDRESS = ADDRESSES.null; const contracts = [ "0xE446158503d0F5c70579FCCE774C00E8Db544559", // aggregator1 "0x5F3b6405dfcF8b21f8dEB4eb6DA44a89a652aCb0", // aggregator2 diff --git a/projects/lifedao/index.js b/projects/lifedao/index.js index f0ab0d04b5..6c7f1cbf0e 100644 --- a/projects/lifedao/index.js +++ b/projects/lifedao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x1e63a2eB2827db56d3CB1e1FF17ef1040B2d3D3f" @@ -5,7 +6,7 @@ module.exports = ohmTvl(treasury, [ //MIM ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], //wAVAX - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], + [ADDRESSES.avax.WAVAX, false], //joe LP ["0xd7cdc2e47ab29a6b651704e39374bb9857f02e02", true], //joe LP diff --git a/projects/linear.js b/projects/linear.js index ac4a40df67..3e1bb6a1c9 100644 --- a/projects/linear.js +++ b/projects/linear.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { call } = require('./helper/chain/near') async function tvl() { return { near: (await call( - 'linear-protocol.near', + ADDRESSES.near.LINA, 'get_total_staked_balance', {} ) / 1e24 ) diff --git a/projects/linear/index.js b/projects/linear/index.js index 1779ddcff4..b3ddc8b186 100644 --- a/projects/linear/index.js +++ b/projects/linear/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); @@ -10,7 +11,7 @@ const LnRewardLockerAddress = "0x66D60EDc3876b8aFefD324d4edf105fd5c4aBeDc"; const tokens = { lUSD: "0x23e8a70534308a4aaf76fb8c32ec13d17a3bd89e", LINA: "0x762539b45A1dCcE3D36d080F74d1AED37844b878", - bUSD: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + bUSD: ADDRESSES.bsc.BUSD, LPTOKEN: "0x392f351fc02a3b74f7900de81a9aaac13ec28e95", }; diff --git a/projects/liondex/index.js b/projects/liondex/index.js index b065347850..aac66e14ab 100644 --- a/projects/liondex/index.js +++ b/projects/liondex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokens2,sumTokensExport } = require('../helper/unwrapLPs') @@ -5,8 +6,8 @@ const { sumTokens2,sumTokensExport } = require('../helper/unwrapLPs') const lionDEXVault = "0x8eF99304eb88Af9BDe85d58a35339Cb0e2a557B6"; const lionStaking = "0x154E2b1dBE9F493fF7938E5d686366138ddCE017"; const LION = "0x8ebb85d53e6955e557b7c53acde1d42fd68561ec"; -const fsGLP = "0x1aDDD80E6039594eE970E5872D247bf0414C8903"; -const USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; +const fsGLP = ADDRESSES.arbitrum.fsGLP; +const USDC = ADDRESSES.arbitrum.USDC; module.exports = { diff --git a/projects/liquid-finance/index.js b/projects/liquid-finance/index.js index 4a33b56850..5621859c94 100644 --- a/projects/liquid-finance/index.js +++ b/projects/liquid-finance/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumUnknownTokens, sumTokensExport, staking } = require('../helper/unknownTokens') -const LIQD_TOKEN = '0x93C15cd7DE26f07265f0272E0b831C5D7fAb174f' +const LIQD_TOKEN = ADDRESSES.arbitrum.LIQD const LIQD_ETH_TOKEN = '0x73700aeCfC4621E112304B6eDC5BA9e36D7743D3' const masterchef = '0x2582fFEa547509472B3F12d94a558bB83A48c007' const WETH_POOL = '0x705ea996D53Ff5bdEB3463dFf1890F83f57CDe97' const LIQD_STAKING = '0xA1A988A22a03CbE0cF089e3E7d2e6Fcf9BD585A9' const TREASURY = '0x61fb28d32447ef7F4e85Cf247CB9135b4E9886C2' -const WETH = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' +const WETH = ADDRESSES.arbitrum.WETH const chain = 'arbitrum' const LPs = [ '0x5dcf474814515b58ca0ca5e80bbb00d18c5b5cf8', diff --git a/projects/liquiddriver/index.js b/projects/liquiddriver/index.js index a0d6fb6568..58f10a3419 100644 --- a/projects/liquiddriver/index.js +++ b/projects/liquiddriver/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { unwrapUniswapLPs, sumTokens2 } = require("../helper/unwrapLPs"); @@ -10,8 +11,8 @@ const BigNumber = require("bignumber.js"); const MASTERCHEF = "0x742474dae70fa2ab063ab786b1fbe5704e861a0c"; const MINICHEF = "0x6e2ad6527901c9664f016466b8DA1357a004db0f"; const BSCMINICHEF = "0xD46db083De31c64AF3F680f139A31fF37bac004f"; -const usdcTokenAddress = "0x04068da6c83afcfa0e13ba15a6696662335d5b75"; -const wftmTokenAddress = "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"; +const usdcTokenAddress = ADDRESSES.fantom.USDC; +const wftmTokenAddress = ADDRESSES.fantom.WFTM; const beethovenVaultAddress = "0x20dd72Ed959b6147912C2e529F0a0C651c33c9ce"; const LQDR = "0x10b620b2dbac4faa7d7ffd71da486f5d44cd86f9"; @@ -130,7 +131,7 @@ async function getMinichefTvl(api, minichef, balances = {}) { const calls = [] const callTokens = [] strategies.forEach((val, i) => { - if (val === '0x0000000000000000000000000000000000000000') return; + if (val === ADDRESSES.null) return; calls.push(val) callTokens.push(lpTokens[i].toLowerCase()) } ) @@ -161,7 +162,7 @@ async function shadowChefTvl(_, _1, _2, { api, }) { const calls = [] const callTokens = [] strategies.forEach((val, i) => { - if (val === '0x0000000000000000000000000000000000000000') return; + if (val === ADDRESSES.null) return; calls.push(val) callTokens.push(lpTokens[i].toLowerCase()) } ) diff --git a/projects/liquidity-book/index.js b/projects/liquidity-book/index.js index 8c22f7abb8..23394b2d7d 100644 --- a/projects/liquidity-book/index.js +++ b/projects/liquidity-book/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { staking } = require('../helper/staking'); -const joeBar = "0x57319d41F71E81F3c65F2a47CA4e001EbAFd4F33"; -const joeToken = "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd"; +const joeBar = ADDRESSES.avax.xJOE; +const joeToken = ADDRESSES.avax.JOE; const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const graphUrls = { avax: 'https://api.thegraph.com/subgraphs/name/traderjoe-xyz/joe-v2', diff --git a/projects/liquidrium/vaults.js b/projects/liquidrium/vaults.js index 9c398fdf08..3d880e6d2e 100644 --- a/projects/liquidrium/vaults.js +++ b/projects/liquidrium/vaults.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const vaults = [ { name: "usdc-eth", address: "0xF82aeDC7faA3Fe1F412C71fe5E432690C46cd1bb", - token1: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - token2: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + token1: ADDRESSES.ethereum.USDC, + token2: ADDRESSES.ethereum.WETH, token1decimal: 6, token2decimal: 18, token1Name: "usd-coin", @@ -14,8 +15,8 @@ const vaults = [ { name: "wbtc-eth", address: "0x3FeE1B1C829DB1250B0e6B8605741E944Ed3A41e", - token1: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - token2: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + token1: ADDRESSES.ethereum.WBTC, + token2: ADDRESSES.ethereum.WETH, token1decimal: 8, token2decimal: 18, token1Name: "wrapped-bitcoin", @@ -25,8 +26,8 @@ const vaults = [ { name: "eth-usdc", address: "0x7F6d25dE79559e548f0417aeB1953Ab6D3D85b14", - token1: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - token2: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + token1: ADDRESSES.arbitrum.WETH, + token2: ADDRESSES.arbitrum.USDC, token1decimal: 18, token2decimal: 6, token1Name: "ethereum", @@ -36,8 +37,8 @@ const vaults = [ { name: "wbtc-eth", address: "0x849668517a74535EC5ECc09Fa9A22e0CEf91443E", - token1: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", - token2: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + token1: ADDRESSES.arbitrum.WBTC, + token2: ADDRESSES.arbitrum.WETH, token1decimal: 8, token2decimal: 18, token1Name: "wrapped-bitcoin", @@ -48,7 +49,7 @@ const vaults = [ name: "matic-usdc", address: "0xB19e59b77E173363FB7Ce674f1279c76ee237c7A", token1: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", - token2: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + token2: ADDRESSES.polygon.USDC, token1decimal: 18, token2decimal: 6, token1Name: "wmatic", @@ -59,7 +60,7 @@ const vaults = [ name: "matic-weth", address: "0x249403E3163aAA88259e0e79A513E999EF8AbEc3", token1: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", - token2: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + token2: ADDRESSES.polygon.WETH_1, token1decimal: 18, token2decimal: 18, token1Name: "wmatic", diff --git a/projects/liquity/index.js b/projects/liquity/index.js index ad81a5d1cb..d0d923fb07 100644 --- a/projects/liquity/index.js +++ b/projects/liquity/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const ETH_ADDRESS = "0x0000000000000000000000000000000000000000"; +const ETH_ADDRESS = ADDRESSES.null; // TroveManager holds total system collateral (deposited ETH) const TROVE_MANAGER_ADDRESS = "0xA39739EF8b0231DbFA0DcdA07d7e29faAbCf4bb2"; diff --git a/projects/lobis.js b/projects/lobis.js index d35143c0bc..5ca84c1985 100644 --- a/projects/lobis.js +++ b/projects/lobis.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { ohmTvl } = require('./helper/ohm') const treasury = "0x873ad91fA4F2aA0d557C0919eC3F6c9D240cDd05" module.exports = ohmTvl(treasury, [ //curve - ["0xD533a949740bb3306d119CC777fa900bA034cd52", false], + [ADDRESSES.ethereum.CRV, false], //frax ["0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0", false], //Sushi LP diff --git a/projects/logium/index.js b/projects/logium/index.js index 9f5f0601c3..891b7d9a16 100644 --- a/projects/logium/index.js +++ b/projects/logium/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getBlock } = require('../helper/http') const { providers } = require('@defillama/sdk/build/general'); const { Contract } = require('ethers') const { sumTokens2 } = require('../helper/unwrapLPs') -const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' +const USDC = ADDRESSES.ethereum.USDC const LOGIUM_CORE = '0xc61d1dcceeec03c94d729d8f8344ce3be75d09fe' const ONE_DAY = 24 * 60 * 60 diff --git a/projects/loopring/index.js b/projects/loopring/index.js index fd3944b1fc..f7512b56f0 100644 --- a/projects/loopring/index.js +++ b/projects/loopring/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -15,12 +16,12 @@ const listedTokens = [ '0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD', // LRC - '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT - '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI - '0x514910771AF9Ca656af840dff83E8264EcF986CA', // LINK - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC - '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2', // MKR + ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.LINK, // LINK + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.MKR, // MKR ]; /*================================================== @@ -33,7 +34,7 @@ let ethBlanaceTotal = BigNumber(ethBalanceOld.output || 0).plus(ethBalanceNew.output); let balances = { - '0x0000000000000000000000000000000000000000': ethBlanaceTotal + [ADDRESSES.null]: ethBlanaceTotal }; let calls = []; diff --git a/projects/lsdx/index.js b/projects/lsdx/index.js index 89ddbd7da0..27288e5791 100644 --- a/projects/lsdx/index.js +++ b/projects/lsdx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const FACTORY_CONTRACT = "0x3B4b6B14d07A645005658E6Ea697edb0BD7bf2b1"; @@ -13,7 +14,7 @@ async function tvl(_, _1, _2, { api }) { const owners = await api.multiCall({ abi: abis.getStakingPoolAddress, target: FACTORY_CONTRACT, calls: tokens }) tokens.forEach((v, i) => { if (v === nullAddress) { - tokens.push('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2') + tokens.push(ADDRESSES.ethereum.WETH) owners.push(owners[i]) } }) diff --git a/projects/luchadores/index.js b/projects/luchadores/index.js index fb1c345ef4..db8609511e 100644 --- a/projects/luchadores/index.js +++ b/projects/luchadores/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking'); const { pool2s } = require('../helper/pool2'); const {sumTokensAndLPsSharedOwners} = require('../helper/unwrapLPs'); @@ -20,12 +21,12 @@ const luchaMustStk = "0xe11f861dD5cE8407bb24dFD13b9710c0295276D6"; // ERC20 const LUCHA_polygon = "0x6749441Fdc8650b5b5a854ed255C82EF361f1596"; -const MATIC_polygon = "0x0000000000000000000000000000000000001010"; +const MATIC_polygon = ADDRESSES.polygon.WMATIC_1; const QI_polygon = "0x580A84C73811E1839F75d86d75d88cCa0c241fF4"; const MUST_polygon = "0x9C78EE466D6Cb57A4d01Fd887D2b5dFb2D46288f"; const PSP_polygon = "0x42d61D766B85431666B39B89C43011f24451bFf6"; const LINK_polygon = "0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39"; -const WETH_polygon = "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"; +const WETH_polygon = ADDRESSES.polygon.WETH_1; const WMATIC_LUCHA_Balancer_polygon = "0x924EC7ed38080E40396c46F6206A6d77D0B9f72d"; async function tvl(time, ethBlock, chainBlocks){ diff --git a/projects/luckychip/index.js b/projects/luckychip/index.js index 6f56b90ebd..249858c4a6 100644 --- a/projects/luckychip/index.js +++ b/projects/luckychip/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') const { transformBscAddress } = require('../helper/portedTokens'); @@ -12,14 +13,14 @@ const tokenHolderMap = [ checkETHBalance: true, }, { - tokens: '0x55d398326f99059fF775485246999027B3197955', // USDT + tokens: ADDRESSES.bsc.USDT, // USDT holders: [ "0x682ce0e340A0248B4554E14e834969F2E421dB2D" // USDT table ], } ] -const WBNB = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" +const WBNB = ADDRESSES.bsc.WBNB function normalizeArray(arrayOrString){ if(Array.isArray(arrayOrString)){ diff --git a/projects/lunafi/index.js b/projects/lunafi/index.js index c97361d56c..46a1a5b239 100644 --- a/projects/lunafi/index.js +++ b/projects/lunafi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking'); const { pool2 } = require('../helper/pool2'); const { sumTokensExport } = require('../helper/unwrapLPs'); @@ -6,9 +7,9 @@ module.exports = { polygon: { tvl: sumTokensExport({ tokensAndOwners: [ - ['0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', '0x1311DCADf3330dD0AEB4d03177F9568880Febb34'], - ['0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', '0x2Bb91032F277BDc0DA7De271Ba03B3341B73b4c1'], - ['0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', '0x14e849B39CA7De7197763b6254EE57eDBE0F3375'], + [ADDRESSES.polygon.WBTC, '0x1311DCADf3330dD0AEB4d03177F9568880Febb34'], + [ADDRESSES.polygon.WETH_1, '0x2Bb91032F277BDc0DA7De271Ba03B3341B73b4c1'], + [ADDRESSES.polygon.USDC, '0x14e849B39CA7De7197763b6254EE57eDBE0F3375'], ] }), pool2: pool2('0x4175acd3d7f128cf41d42826cce2185a5ade7c82', ['0x72CF5ee9ee918a529b25BBcB0372594008178535', '0xE3108CDCfb18E7B3e558b37bfD4473CBDE1Fd05c']), diff --git a/projects/luxor/index.js b/projects/luxor/index.js index b79b84bb74..4a73eb027c 100644 --- a/projects/luxor/index.js +++ b/projects/luxor/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasury = "0xDF2A28Cc2878422354A93fEb05B41Bd57d71DB24" @@ -6,8 +7,8 @@ const LUX = "0x6671e20b83ba463f270c8c75dae57e3cc246cb2b" module.exports=ohmTvl( treasury, [ - ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], - ["0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", false], + [ADDRESSES.fantom.DAI, false], + [ADDRESSES.fantom.WFTM, false], ["0x46729c2AeeabE7774a0E710867df80a6E19Ef851", true], ["0x951BBB838e49F7081072895947735b0892cCcbCD", true] ], @@ -15,8 +16,8 @@ module.exports=ohmTvl( "0xf3F0BCFd430085e198466cdCA4Db8C2Af47f0802", LUX, (addr) => { - if (addr.toLowerCase() === "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e") { - return "0x6b175474e89094c44da98b954eedeac495271d0f"; + if (addr.toLowerCase() === ADDRESSES.fantom.DAI) { + return ADDRESSES.ethereum.DAI; } return `fantom:${addr}`; } diff --git a/projects/lybra/index.js b/projects/lybra/index.js index 578683eeb9..848b7bf64d 100644 --- a/projects/lybra/index.js +++ b/projects/lybra/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); // Lybra holds total stake collateral (deposited ETH) @@ -6,6 +7,6 @@ const LYBRA_CONTRACT = "0x97de57eC338AB5d51557DA3434828C5DbFaDA371"; module.exports = { start: 1682265600, ethereum: { - tvl: sumTokensExport({ owner: LYBRA_CONTRACT, tokens: ['0xae7ab96520de3a18e5e111b5eaab095312d7fe84']}), + tvl: sumTokensExport({ owner: LYBRA_CONTRACT, tokens: [ADDRESSES.ethereum.STETH]}), } }; diff --git a/projects/lyra/index.js b/projects/lyra/index.js index dac523d74a..d8a16e93fd 100644 --- a/projects/lyra/index.js +++ b/projects/lyra/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokens } = require('../helper/unwrapLPs') @@ -38,15 +39,15 @@ const op_pools = [...new Set([...v1_0_Pools, ...v1_1_LiquidityPool, ...v1_1_Shor const arb_pools = [...new Set([...v1_3_arb_ShortCollateral, ...v1_3_arb_LiquidityPool].map(t=>t.toLowerCase()))] -const op_tokens = ['0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9', '0xe405de8f52ba7559f9df3c368500b6e6ae6cee49', +const op_tokens = [ADDRESSES.optimism.sUSD, ADDRESSES.optimism.sETH, '0xc5db22719a06418028a40a9b5e9a7c02959d0d08', '0x298b9b95708152ff6968aafd889c6586e9169f1d'] -const arb_tokens = ['0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', - '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f'] +const arb_tokens = [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.WBTC] const L2toL1Synths = { - '0xe405de8f52ba7559f9df3c368500b6e6ae6cee49': '0x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - '0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9': '0x57ab1ec28d129707052df4df418d58a2d46d5f51', + [ADDRESSES.optimism.sETH]: '0x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', + [ADDRESSES.optimism.sUSD]: '0x57ab1ec28d129707052df4df418d58a2d46d5f51', '0x298b9b95708152ff6968aafd889c6586e9169f1d': '0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6', '0xc5db22719a06418028a40a9b5e9a7c02959d0d08': '0xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6' } @@ -75,7 +76,7 @@ module.exports = { tvl:tvlArbitrum }, ethereum:{ - tvl: staking("0x54d59c4596c7ea66fd62188ba1e16db39e6f5472", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "ethereum"), + tvl: staking("0x54d59c4596c7ea66fd62188ba1e16db39e6f5472", ADDRESSES.ethereum.USDC, "ethereum"), staking: staking("0xcb9f85730f57732fc899fb158164b9ed60c77d49", "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf", "ethereum") }, hallmarks:[ diff --git a/projects/macaron/config.js b/projects/macaron/config.js index 84f5766cad..2453fd78ef 100644 --- a/projects/macaron/config.js +++ b/projects/macaron/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const vaults_bsc = [ { "sousId": 0, @@ -558,7 +559,7 @@ const choco_pools_bsc = [ "earningToken": { "symbol": "wBNB", "address": { - "56": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + "56": ADDRESSES.bsc.WBNB, "97": "0xae13d989dac2f0debff460ac112a837c89baa7cd" }, "decimals": 18, diff --git a/projects/magik-farm/config/vault/aurora_pools.js b/projects/magik-farm/config/vault/aurora_pools.js index 5980982a7e..317e52b7b0 100644 --- a/projects/magik-farm/config/vault/aurora_pools.js +++ b/projects/magik-farm/config/vault/aurora_pools.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const auroraPools = [ { id: 'carbon-carbon-near', diff --git a/projects/magik-farm/config/vault/avalanche_pools.js b/projects/magik-farm/config/vault/avalanche_pools.js index 7348014b39..2da1cbbbd8 100644 --- a/projects/magik-farm/config/vault/avalanche_pools.js +++ b/projects/magik-farm/config/vault/avalanche_pools.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const avalanchePools = [ { id: "cham-avic-usdc", diff --git a/projects/magik-farm/config/vault/bsc_pools.js b/projects/magik-farm/config/vault/bsc_pools.js index 329f29ab29..4be092cda1 100644 --- a/projects/magik-farm/config/vault/bsc_pools.js +++ b/projects/magik-farm/config/vault/bsc_pools.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const bscPools = [ { id: 'orb-orb-magik', diff --git a/projects/magik-farm/config/vault/fantom_pools.js b/projects/magik-farm/config/vault/fantom_pools.js index 390bcca0fc..50529ecaf0 100644 --- a/projects/magik-farm/config/vault/fantom_pools.js +++ b/projects/magik-farm/config/vault/fantom_pools.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const fantomPools = [ { id: 'lif3-tomb', diff --git a/projects/magpiexyz/config.js b/projects/magpiexyz/config.js index 70a18a4410..8301676618 100644 --- a/projects/magpiexyz/config.js +++ b/projects/magpiexyz/config.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { bsc: { MasterMagpieAddress: "0xa3B615667CBd33cfc69843Bf11Fbb2A1D926BD46", VlMGPAddress: "0x9B69b06272980FA6BAd9D88680a71e3c3BeB32c6", - MWOMSVAddress: "0x0000000000000000000000000000000000000000", + MWOMSVAddress: ADDRESSES.null, MGPAddress: "0xD06716E1Ff2E492Cc5034c2E81805562dd3b45fa", WOMAddress: "0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1", MWOMAddress: "0x027a9d301FB747cd972CFB29A63f3BDA551DFc5c", diff --git a/projects/magpiexyz/index.js b/projects/magpiexyz/index.js index 644c4ae754..2208492ef4 100644 --- a/projects/magpiexyz/index.js +++ b/projects/magpiexyz/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { staking } = require('../helper/staking') const WombatPoolHelperAbi = require("./abis/wombatPoolHelper.json") @@ -20,7 +21,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { const balances = {}; const womBal = await api.call({ abi: 'erc20:balanceOf', target: MWOMAddress, params: MasterMagpieAddress }) sdk.util.sumSingleBalance(balances, WOMAddress, womBal, api.chain) - if (MWOMSVAddress != "0x0000000000000000000000000000000000000000") { + if (MWOMSVAddress != ADDRESSES.null) { const mWomSVBal = await api.call({ abi: 'erc20:balanceOf', target: MWOMAddress, params: MWOMSVAddress }) sdk.util.sumSingleBalance(balances, WOMAddress, mWomSVBal, api.chain) } diff --git a/projects/mahadao/bsc.js b/projects/mahadao/bsc.js index aa1070babd..27e063b088 100644 --- a/projects/mahadao/bsc.js +++ b/projects/mahadao/bsc.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require("../helper/unwrapLPs.js"); const chain = "bsc"; const bsc = { - busd: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + busd: ADDRESSES.bsc.BUSD, arth: "0x85daB10c3BA20148cA60C2eb955e1F8ffE9eAa79", arthBusdPool: "0x21de718bcb36f649e1a7a7874692b530aa6f986d", diff --git a/projects/mahadao/ethereum.js b/projects/mahadao/ethereum.js index 048b06fd8f..4f91f18cdb 100644 --- a/projects/mahadao/ethereum.js +++ b/projects/mahadao/ethereum.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, sumTokens2 } = require("../helper/unwrapLPs.js"); const { staking } = require("../helper/staking"); const activePoolAbi = "address:activePool" const eth = { - dai: "0x6b175474e89094c44da98b954eedeac495271d0f", + dai: ADDRESSES.ethereum.DAI, maha: "0x745407c86df8db893011912d3ab28e68b62e49b0", - weth: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + weth: ADDRESSES.ethereum.WETH, arth: "0x8CC0F052fff7eaD7f2EdCCcaC895502E884a8a71", crv3: "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - usdc: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + usdc: ADDRESSES.ethereum.USDC, mahax: "0xbdd8f4daf71c2cb16cce7e54bb81ef3cfcf5aacb", diff --git a/projects/mahadao/polygon.js b/projects/mahadao/polygon.js index a750cb51bc..3f177a1272 100644 --- a/projects/mahadao/polygon.js +++ b/projects/mahadao/polygon.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require("../helper/unwrapLPs.js"); const chain = "polygon"; const polygon = { - usdc: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + usdc: ADDRESSES.polygon.USDC, arthRedeemer: "0x394f4f7db617a1e4612072345f9601235f64b326", }; diff --git a/projects/maia-dao/index.js b/projects/maia-dao/index.js index 81997d6442..7b1ebdd7e6 100644 --- a/projects/maia-dao/index.js +++ b/projects/maia-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getChainTransform } = require('../helper/portedTokens'); const { unwrapUniswapLPs, sumTokens2, } = require('../helper/unwrapLPs'); @@ -6,7 +7,7 @@ const abis = require("./abis.json"); const HERMES = '0xb27bbeaaca2c00d6258c3118bab6b5b6975161c8'; const excludedTokens = ["0xa3e8e7eb4649ffc6f3cbe42b4c2ecf6625d3e802"]; const multisig = '0x77314eAA8D99C2Ad55f3ca6dF4300CFC50BdBC7F'; -const tokens = ['0x420000000000000000000000000000000000000A', '0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', '0xEA32A96608495e54156Ae48931A7c20f0dcc1a21', '0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC', '0x4651B38e7ec14BB3db731369BFE5B08F2466Bd0A', '0xEfFEC28996aAff6D55B6D108a46446d45C3a2E71', '0x5ab390084812E145b619ECAA8671d39174a1a6d1',]; +const tokens = [ADDRESSES.metis.WETH, ADDRESSES.metis.Metis, ADDRESSES.metis.m_USDC, ADDRESSES.metis.m_USDT, ADDRESSES.metis.DAI, '0xEfFEC28996aAff6D55B6D108a46446d45C3a2E71', '0x5ab390084812E145b619ECAA8671d39174a1a6d1',]; async function tvl(timestamp, _, { metis: block }) { const chain = 'metis' diff --git a/projects/maker/abis/maker-mcd.js b/projects/maker/abis/maker-mcd.js index 9224afe22e..326221c7a0 100644 --- a/projects/maker/abis/maker-mcd.js +++ b/projects/maker/abis/maker-mcd.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') module.exports = { // addresses for kovan version 0.2.17 KOVANVAT: "0xba987bdb501d131f766fee8180da5d81b34b69d9", @@ -7,7 +8,7 @@ module.exports = { VAT: "0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b", POT: "0x197e90f9fad81970ba7976f33cbd77088e5d7cf7", JUG: "0x19c0976f590d67707e62397c87829d896dc0f1f1", - DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + DAI: ADDRESSES.ethereum.DAI, STARTBLOCK: 8928152, ilk: "function ilk() view returns (bytes32)", gem: "address:gem", diff --git a/projects/maker/abis/makerdao.js b/projects/maker/abis/makerdao.js index d7c2af872c..0ec1d21e32 100755 --- a/projects/maker/abis/makerdao.js +++ b/projects/maker/abis/makerdao.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../../helper/coreAssets.json') module.exports = { TUB_ADDRESS: "0x448a5065aebb8e423f0896e6c5d525c040f59af3", DAI_ADDRESS: "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", - WETH_ADDRESS: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + WETH_ADDRESS: ADDRESSES.ethereum.WETH }; \ No newline at end of file diff --git a/projects/maker/index.js b/projects/maker/index.js index 9f1421745c..c0c9465d36 100644 --- a/projects/maker/index.js +++ b/projects/maker/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // const utils = require('web3-utils'); const sdk = require('@defillama/sdk'); const MakerSCDConstants = require("./abis/makerdao.js"); @@ -114,7 +115,7 @@ async function unwrapGunis({ api, toa, balances = {} }) { sdk.util.sumSingleBalance(balances, token0s[i], token0Bal) sdk.util.sumSingleBalance(balances, token1s[i], token1Bal) }) - sdk.util.removeTokenBalance(balances, '0x6b175474e89094c44da98b954eedeac495271d0f') // remove dai balances + sdk.util.removeTokenBalance(balances, ADDRESSES.ethereum.DAI) // remove dai balances return balances } diff --git a/projects/mama-dao/index.js b/projects/mama-dao/index.js index c9863d8638..9a1b1bd662 100644 --- a/projects/mama-dao/index.js +++ b/projects/mama-dao/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {ohmTvl} = require("../helper/ohm"); const treasury = "0x884f6A98477b0F689f1da280A83a963f2B768972"; const treasuryTokens = [ - ["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", false], // DAI + [ADDRESSES.polygon.DAI, false], // DAI ["0xBdDB96D54E1434654f8E46Dba41120cd652039bb", true] // MAMA-DAI UNI LP ] const stakingAddress = "0xe1B64E20921a38c20BE98f953F758e9DeD80F89b" diff --git a/projects/mango-farmers-club/index.js b/projects/mango-farmers-club/index.js index 6b85f462bd..95e0532d40 100644 --- a/projects/mango-farmers-club/index.js +++ b/projects/mango-farmers-club/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); module.exports = { polygon_zkevm: { - tvl: sumTokensExport({ owner: '0x4eA8496D4D1d4EcF6eD6DaeA95D1A0856F8A5177', tokens: ['0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035']}) + tvl: sumTokensExport({ owner: '0x4eA8496D4D1d4EcF6eD6DaeA95D1A0856F8A5177', tokens: [ADDRESSES.polygon_zkevm.USDC]}) } }; diff --git a/projects/manifest/index.js b/projects/manifest/index.js index cb0b1deb2b..84bf519750 100644 --- a/projects/manifest/index.js +++ b/projects/manifest/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0x200a433086C37eB55bc4CD31f8195831052a67C6"; module.exports = ohmTvl(treasuryAddress, [ ["0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f", false], // sOHM ["0x89c4d11dfd5868d847ca26c8b1caa9c25c712cef", true], // MNFST-OHM - ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", false] // WETH + [ADDRESSES.ethereum.WETH, false] // WETH ], "ethereum", "0x9c9022c6a2e1ed9f3110e177763123c4400d5eb6", "0x21585bbcd5bdc3f5737620cf0db2e51978cf60ac") diff --git a/projects/manifesto/index.js b/projects/manifesto/index.js index 545e963fd7..7e0052c149 100644 --- a/projects/manifesto/index.js +++ b/projects/manifesto/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unknownTokens"); const lps = [ '0xF65af1E61D7aC87d73E347D17E369Dc2118E9517', @@ -9,10 +10,10 @@ module.exports = { tvl: sumTokensExport({ owner: '0x20636bd0E15be0e1faADE1b27f568e642f59814E', tokens: [ - '0x4e71A2E537B7f9D9413D3991D37958c0b5e1e503', - '0x826551890Dc65655a0Aceca109aB11AbDbD7a07B', - '0x5FD55A1B9FC24967C4dB09C513C3BA0DFa7FF687', - '0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd', + ADDRESSES.canto.NOTE, + ADDRESSES.canto.WCANTO, + ADDRESSES.functionx.PURSE, + ADDRESSES.functionx.WFX, ...lps, ], useDefaultCoreAssets: true, diff --git a/projects/mantradao.js b/projects/mantradao.js index ec8e88ec0a..f2bc28967a 100644 --- a/projects/mantradao.js +++ b/projects/mantradao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens } = require("./helper/unwrapLPs"); const { compoundExports } = require("./helper/compound"); const { stakingAssetsETH, stakingAssetsBSC, stakingAssetsPOLYGON, } = require("./config/mantra-dao/contracts/naked-staking-contracts"); @@ -11,7 +12,7 @@ const chainConfig = { const comptroller = "0x606246e9EF6C70DCb6CEE42136cd06D127E2B7C7" const zenETH = "0x4F905f75F5576228eD2D0EA508Fb0c32a0696090" -const zenETHEquivalent = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const zenETHEquivalent = ADDRESSES.ethereum.WETH; module.exports = {} diff --git a/projects/maple/index.js b/projects/maple/index.js index 5a13c00a8a..f151ff0221 100644 --- a/projects/maple/index.js +++ b/projects/maple/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking, } = require("../helper/staking") @@ -6,7 +7,7 @@ const { PublicKey } = require('@solana/web3.js') const { getLogs } = require('../helper/cache/getLogs') const MapleTreasury = "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDC = ADDRESSES.ethereum.USDC; const chain = 'ethereum' /*** Solana TVL Portions ***/ @@ -16,7 +17,7 @@ const TVL_DATA_SIZE = 8; const PROGRAM_ID = "5D9yi4BKrxF8h65NkVE1raCCWFKUs5ngub2ECxhvfaZe"; let _tvl -const usdc = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' +const usdc = ADDRESSES.solana.USDC function getTvl(borrowed = false) { return async () => { diff --git a/projects/market.xyz/index.js b/projects/market.xyz/index.js index 8cd571c4ca..ff1b5f7fea 100644 --- a/projects/market.xyz/index.js +++ b/projects/market.xyz/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi"); const { @@ -10,7 +11,7 @@ const fusePoolLensAddress = { fantom: "0x5aB6215AB8344C28B899efdE93BEe47B124200Fb", }; -const WETH = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'; +const WETH = ADDRESSES.ethereum.WETH; async function getFusePools( timestamp, diff --git a/projects/maximizer/index.js b/projects/maximizer/index.js index ee19b854c4..1672dfe000 100644 --- a/projects/maximizer/index.js +++ b/projects/maximizer/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require("bignumber.js"); const { sumTokensAndLPsSharedOwners, unwrapUniswapLPs } = require("../helper/unwrapLPs"); const sdk = require("@defillama/sdk"); @@ -16,14 +17,14 @@ const BenqiAllocator = '0x1e3834DA9a9B4d4016427554Ef31ff4e1F41d4Ed'; const MAXI = "0x7C08413cbf02202a1c13643dB173f2694e0F73f0"; const SMAXI = "0xEcE4D1b3C2020A312Ec41A7271608326894076b4"; -const DAIe = "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70"; -const USDC = "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"; -const USDCe = "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664"; -const WAVAX = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"; +const DAIe = ADDRESSES.avax.DAI; +const USDC = ADDRESSES.avax.USDC; +const USDCe = ADDRESSES.avax.USDC_e; +const WAVAX = ADDRESSES.avax.WAVAX; const PNG = "0x60781C2586D68229fde47564546784ab3fACA982"; const QI = "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5"; -const JOE = "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd"; -const XJOE = "0x57319d41F71E81F3c65F2a47CA4e001EbAFd4F33"; +const JOE = ADDRESSES.avax.JOE; +const XJOE = ADDRESSES.avax.xJOE; const ISA = "0x3EeFb18003D033661f84e48360eBeCD181A84709"; const PTP = "0x22d4002028f537599bE9f666d1c4Fa138522f9c8"; const VEPTP = "0x5857019c749147EEE22b1Fe63500F237F3c1B692"; diff --git a/projects/mdex/subgraphs.js b/projects/mdex/subgraphs.js index 675ba61ff7..85fe892b61 100644 --- a/projects/mdex/subgraphs.js +++ b/projects/mdex/subgraphs.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, gql } = require("graphql-request"); const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); @@ -44,7 +45,7 @@ const graphQueries = { }; // --- We need to token as ref for the balances object --- -const usdtToken = "0xdac17f958d2ee523a2206206994597c13d831ec7"; +const usdtToken = ADDRESSES.ethereum.USDT; function getMDEXLiquidity(block, chain) { return request(graphUrls[chain], graphQueries[chain], { diff --git a/projects/meanfinance/addresses.js b/projects/meanfinance/addresses.js index c11345c9aa..9e3a094f00 100644 --- a/projects/meanfinance/addresses.js +++ b/projects/meanfinance/addresses.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const V1_POOLS = [ - { pool: '0x8124cD94629Bd7e902D9B7dabDcef71F9847b232', tokenA: '0x6B175474E89094C44Da98b954EedeAC495271d0F', tokenB: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' }, - { pool: '0x9a2789dd698D010f3d6Bb5Bf865369A734D43f83', tokenA: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', tokenB: '0x6B175474E89094C44Da98b954EedeAC495271d0F' }, - { pool: '0xa649C9306896f90d6f8a3366f29be10557461144', tokenA: '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e', tokenB: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' }, - { pool: '0xC62D0265ADCe0719373661FFF26d93980f5e6Fc0', tokenA: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', tokenB: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' }, - { pool: '0xAc324adB90eDA530884eB0f5BE58614c6249484a', tokenA: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', tokenB: '0xD291E7a03283640FDc51b121aC401383A46cC623' }, - { pool: '0x82Eb5b1F3A2286903F5918f8a42Cc84A2ea500fb', tokenA: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', tokenB: '0xdAC17F958D2ee523a2206206994597C13D831ec7' }, - { pool: '0x59aCef0FC104EDe425DF5CD3a1677A09e7e025cD', tokenA: '0x2602278EE1882889B946eb11DC0E810075650983', tokenB: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' }, + { pool: '0x8124cD94629Bd7e902D9B7dabDcef71F9847b232', tokenA: ADDRESSES.ethereum.DAI, tokenB: ADDRESSES.ethereum.WETH }, + { pool: '0x9a2789dd698D010f3d6Bb5Bf865369A734D43f83', tokenA: ADDRESSES.ethereum.WBTC, tokenB: ADDRESSES.ethereum.DAI }, + { pool: '0xa649C9306896f90d6f8a3366f29be10557461144', tokenA: ADDRESSES.ethereum.YFI, tokenB: ADDRESSES.ethereum.WETH }, + { pool: '0xC62D0265ADCe0719373661FFF26d93980f5e6Fc0', tokenA: ADDRESSES.ethereum.USDC, tokenB: ADDRESSES.ethereum.WETH }, + { pool: '0xAc324adB90eDA530884eB0f5BE58614c6249484a', tokenA: ADDRESSES.ethereum.WETH, tokenB: '0xD291E7a03283640FDc51b121aC401383A46cC623' }, + { pool: '0x82Eb5b1F3A2286903F5918f8a42Cc84A2ea500fb', tokenA: ADDRESSES.ethereum.WETH, tokenB: ADDRESSES.ethereum.USDT }, + { pool: '0x59aCef0FC104EDe425DF5CD3a1677A09e7e025cD', tokenA: '0x2602278EE1882889B946eb11DC0E810075650983', tokenB: ADDRESSES.ethereum.WETH }, ] const TOKENS_IN_LEGACY_VERSIONS = { @@ -15,31 +16,31 @@ const TOKENS_IN_LEGACY_VERSIONS = { '0x296f55f8fb28e498b858d0bcda06d955b2cb3f97', // STG '0x298b9b95708152ff6968aafd889c6586e9169f1d', // sBTC '0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6', // LINK - '0x4200000000000000000000000000000000000006', // WETH - '0x4200000000000000000000000000000000000042', // OP - '0x5029c236320b8f15ef0a657054b84d90bfbeded3', // BitANT + ADDRESSES.tombchain.FTM, // WETH + ADDRESSES.optimism.OP, // OP + ADDRESSES.optimism.BitANT, // BitANT '0x50c5725949a6f0c72e6c4a641f24049a917db0cb', // LYRA '0x65559aa14915a70190438ef90104769e5e890a00', // ENS '0x68f180fcce6836688e9084f035309e29bf0a2095', // WBTC '0x6fd9d7ad17242c41f7131d257212c54a0e816691', // UNI - '0x7f5c764cbc14f9669b88837ca1490cca17c31607', // USDC + ADDRESSES.optimism.USDC, // USDC '0x7fb688ccf682d58f86d7e38e03f9d22e7705448b', // RAI '0x8700daec35af8ff88c16bdf0418774cb3d7599b4', // SNX - '0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9', // sUSD - '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58', // USDT + ADDRESSES.optimism.sUSD, // sUSD + ADDRESSES.optimism.USDT, // USDT '0x9bcef72be871e61ed4fbbc7630889bee758eb81d', // rETH '0x9e1028f5f1d5ede59748ffcee5532509976840e0', // PERP - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', // DAI + ADDRESSES.optimism.DAI, // DAI '0xe0bb0d3de8c10976511e5030ca403dbf4c25165b', // 0xBTC - '0xe405de8f52ba7559f9df3c368500b6e6ae6cee49', // sETH + ADDRESSES.optimism.sETH, // sETH '0xf98dcd95217e15e05d8638da4c91125e59590b07', // KROM ], polygon: [ '0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a', // SUSHI '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', // WMATIC '0x172370d5cd63279efa6d502dab29171933a610af', // CRV - '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', // WBTC - '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC + ADDRESSES.polygon.WBTC, // WBTC + ADDRESSES.polygon.USDC, // USDC '0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b', // AVAX '0x3066818837c5e6ed6601bd5a91b0762877a6b731', // UMA '0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4', // stMATIC @@ -49,16 +50,16 @@ const TOKENS_IN_LEGACY_VERSIONS = { '0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39', // LINK '0x5fe2b58c013d7601147dcdd68c143a77499f5531', // GRT '0x6f7c932e7684666c9fd1d44527765433e01ff61d', // MKR - '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', // WETH + ADDRESSES.polygon.WETH_1, // WETH '0x831753dd7087cac61ab5644b308642cc1c33dc13', // QUICK '0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c', // COMP - '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', // DAI + ADDRESSES.polygon.DAI, // DAI '0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3', // BAL '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4', // MANA '0xa3fa99a148fa48d14ed51d610c367c61876997f1', // miMATIC '0xb33eaad8d922b1083446dc23f610c2567fb5180f', // UNI '0xbbba073c31bf03b8acf7c28ef0738decf3695683', // SAND - '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', // USDT + ADDRESSES.polygon.USDT, // USDT '0xd6df932a45c0f255f85145f286ea0b292b21c90b', // AAVE '0xda537104d6a5edd53c6fbba9a898708e465260b6', // YFI ] diff --git a/projects/megatonfi/index.js b/projects/megatonfi/index.js index 9d3dabac93..c4941228a2 100644 --- a/projects/megatonfi/index.js +++ b/projects/megatonfi/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { get } = require('../helper/http') const { transformDexBalances } = require('../helper/portedTokens') -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null module.exports = { misrepresentedTokens: true, diff --git a/projects/mensa/index.js b/projects/mensa/index.js index f30159963d..831e4fdc08 100644 --- a/projects/mensa/index.js +++ b/projects/mensa/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abi.json'); @@ -68,7 +69,7 @@ async function tvl(_, _ethBlock, chainBlocks) { balances[transform(_item.address)] = balanceOfResults.output[_i].output; }) - balances['fantom:0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83'] = balance_ftm + balances['fantom:' + ADDRESSES.fantom.WFTM] = balance_ftm return balances; diff --git a/projects/mento/index.js b/projects/mento/index.js index b8ae201102..202a0d84a7 100644 --- a/projects/mento/index.js +++ b/projects/mento/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, } = require('../helper/unwrapLPs') const { sumTokensExport, } = require('../helper/sumTokens') @@ -13,7 +14,7 @@ module.exports = { ethereum: { tvl: sumTokensExport({ owners: ['0xe1955eA2D14e60414eBF5D649699356D8baE98eE', '0x8331C987D9Af7b649055fa9ea7731d2edbD58E6B', '0x26ac3A7b8a675b741560098fff54F94909bE5E73', '0x16B34Ce9A6a6F7FC2DD25Ba59bf7308E7B38E186', ], - tokens: [nullAddress, '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0x6b175474e89094c44da98b954eedeac495271d0f', ], + tokens: [nullAddress, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.DAI, ], chain: 'ethereum', }) }, diff --git a/projects/meowfinance/index.js b/projects/meowfinance/index.js index c25122dd5c..1c7ba69695 100644 --- a/projects/meowfinance/index.js +++ b/projects/meowfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { pool2Exports } = require("../helper/pool2"); @@ -10,10 +11,10 @@ const meowFtm = "0x150Aeb5389d56E258c2bbb42c7e67e944EDEE913"; const treasuryContract = "0x7d25f49C648B2a12B5f530Df929204352cb6080e"; const translate = { - "0x049d68029688eabf473097a2fc38ef61633a3c7a": - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e": - "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.fantom.fUSDT]: + ADDRESSES.ethereum.USDT, + [ADDRESSES.fantom.DAI]: + ADDRESSES.ethereum.DAI, }; const workers = [ diff --git a/projects/mercurial.js b/projects/mercurial.js index 83b8cf2097..a5f1da1153 100644 --- a/projects/mercurial.js +++ b/projects/mercurial.js @@ -1,90 +1,91 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens2 } = require("./helper/solana"); async function tvl() { const tokensAndOwners = [ // PAI-3Pool - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', '2dc3UgMuVkASzW4sABDjDB5PjFbPTncyECUnZL73bmQR'], - ['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', '2dc3UgMuVkASzW4sABDjDB5PjFbPTncyECUnZL73bmQR'], + [ADDRESSES.solana.USDC, '2dc3UgMuVkASzW4sABDjDB5PjFbPTncyECUnZL73bmQR'], + [ADDRESSES.solana.USDT, '2dc3UgMuVkASzW4sABDjDB5PjFbPTncyECUnZL73bmQR'], ['Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS', '2dc3UgMuVkASzW4sABDjDB5PjFbPTncyECUnZL73bmQR'], // UST-3Pool ['CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm','FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], - ['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB','FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], + [ADDRESSES.solana.USDC,'FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], + [ADDRESSES.solana.USDT,'FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], // pSOL-2Pool - ['9EaLkQrbjmbbuZG9Wdpo8qfNUEjHATJFSycEmw6f1rGX','8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], - ['So11111111111111111111111111111111111111112','8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], + [ADDRESSES.solana.pSOL,'8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], + [ADDRESSES.solana.SOL,'8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], // wUSD-4Pool - ['EjmyN6qEC1Tf1JxiG1ae7UTJhUxSwk1TCWNWqxWV4J6o','3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], + [ADDRESSES.solana.DAI,'3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], ['A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM','3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], + [ADDRESSES.solana.USDC,'3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], ['Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1','3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], // stSOL-2Pool - ['So11111111111111111111111111111111111111112','pG6noYMPVR9ykNgD4XSNa6paKKGGwciU2LckEQPDoSW'], + [ADDRESSES.solana.SOL,'pG6noYMPVR9ykNgD4XSNa6paKKGGwciU2LckEQPDoSW'], ['7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj','pG6noYMPVR9ykNgD4XSNa6paKKGGwciU2LckEQPDoSW'], // mSOL-2Pool - ['So11111111111111111111111111111111111111112','GcJckEnDiWjpjQ8sqDKuNZjJUKAFZSiuQZ9WmuQpC92a'], + [ADDRESSES.solana.SOL,'GcJckEnDiWjpjQ8sqDKuNZjJUKAFZSiuQZ9WmuQpC92a'], ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So','GcJckEnDiWjpjQ8sqDKuNZjJUKAFZSiuQZ9WmuQpC92a'], // wbBUSD-4Pool - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], - ['8qJSyQprMC57TWKaYEmetUR3UUiTP2M3hXdcvFhkZdmv','D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], - ['FCqfQSujuPxy6V42UvafBhsysWtEq1vhjfMN1PUbgaxA','D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], - ['5RpUwQ8wtdPCZHhu6MERp2RGrpobsbZ6MH5dDHkUjs2','D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.USDC,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.USDTbs,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.USDCbs,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.BUSDbs,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], // UXD-3Pool ['7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT','62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], - ['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB','62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], + [ADDRESSES.solana.USDC,'62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], + [ADDRESSES.solana.USDT,'62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], // USTv2-3Pool ['9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i','44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], - ['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB','44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], + [ADDRESSES.solana.USDC,'44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], + [ADDRESSES.solana.USDT,'44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], // USDH-3Pool ['USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX','F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], - ['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB','F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], + [ADDRESSES.solana.USDC,'F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], + [ADDRESSES.solana.USDT,'F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], // aUSDC-4Pool - ['DdFPRnccQqLD4zCHrBqdY95D6hvw6PLWp9DEXj1fLCL9','5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], - ['8Yv9Jz4z7BUHP68dz8E8m3tMe6NKgpMUKn8KVqrPA6Fr','5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], - ['eqKJTf1Do4MDPyKisMYqVaUFpkEFAs3riGF3ceDH2Ca','5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.aeUSDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.aaUSDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.apUSDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.USDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], // acUSD-3Pool ['A96PoNcxa9LMxcF9HhKAfA1p3M1dGbubPMWf19gHAkgJ','FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], ['EwxNF8g9UfmsJVcZFTpL9Hx5MCkoQFoJi6XNWzKf1j8e','FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], + [ADDRESSES.solana.USDC,'FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], // fUSD-3Pool ['B7mXkkZgn7abwz1A3HnKkb18Y6y18WcbeSkh1DuLMkee','EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], - ['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB','EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], + [ADDRESSES.solana.USDC,'EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], + [ADDRESSES.solana.USDT,'EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], // USN-4Pool ['EwxNF8g9UfmsJVcZFTpL9Hx5MCkoQFoJi6XNWzKf1j8e','CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], - ['Grk6b4UMRWkgyq4Y6S1BnNRF4hRgtnMFp7Sorkv6Ez4u','CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], + [ADDRESSES.solana.afUSDC,'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], ['PUhuAtMHsKavMTwZsLaDeKy2jb7ciETHJP7rhbKLJGY','CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], + [ADDRESSES.solana.USDC,'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], // abBUSD-4Pool - ['8XSsNvaKU9FDhYWAv7Yc7qSNwuJSzVrXBNEk7AFiWF69','89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v','89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], - ['E77cpQ4VncGmcAXX16LHFFzNBEBb2U7Ar7LBmZNfCgwL','89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], + [ADDRESSES.solana.abUSDC,'89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], + [ADDRESSES.solana.USDC,'89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], + [ADDRESSES.solana.abUSDT,'89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], ['6nuaX3ogrr2CaoAPjtaKHAoBNWok32BMcRozuf32s2QF','89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], // aaUSDT-4Pool ['DNhZkUaxHXYvpxZ7LNnHtss8sQgdAfd1ZYS1fB7LKWUZ','A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], - ['Bn113WT6rbdgwrm12UJtnmNqGqZjY4it2WoUQuQopFVn','A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], - ['FwEHs3kJEdMa2qZHv7SgzCiFXUQPEycEXksfBkwmS8gj','A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], - ['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB','A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], + [ADDRESSES.solana.aeUSDT,'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], + [ADDRESSES.solana.aaUSDT,'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], + [ADDRESSES.solana.USDT,'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], ] diff --git a/projects/metaid/index.js b/projects/metaid/index.js index f7ad62ea0e..3062fdd046 100644 --- a/projects/metaid/index.js +++ b/projects/metaid/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') -const USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f" -const wkava = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b" +const USDC = ADDRESSES.telos.ETH +const wkava = ADDRESSES.kava.WKAVA const MetaId = "0x8dD02F065EE650787A414568a13948629fa21333" diff --git a/projects/metalswap/index.js b/projects/metalswap/index.js index a9637d3b4a..84701992a4 100644 --- a/projects/metalswap/index.js +++ b/projects/metalswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require('../helper/staking') const { pool2UniV3 } = require('../helper/pool2') const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); @@ -9,10 +10,10 @@ const config = { toa: [ [nullAddress, '0xaAA50f60a256b74D1C71ED4AD739836b50059201'], // ETH pool legacy [nullAddress,'0x9494c9FfE0735832885269a10c910CDb227a7B0F'], // ETH pool new - ['0xdac17f958d2ee523a2206206994597c13d831ec7', '0x51bb873D5b68309cf645e84234bC290b7D991D2C'], //usdt pool legacy - ['0xdac17f958d2ee523a2206206994597c13d831ec7', '0x2535D0578562C88c1c875075A1085a4AD3117b20'], //usdt pool new - ['0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', '0xdCE224F9299CDd66e4D01D196d4cabce35a2F478'], //wbtc pool legacy - ['0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', '0x725fbd08e4c5d4b5978E48667d96D03F9B1C4d3A'], //wbtc pool new + [ADDRESSES.ethereum.USDT, '0x51bb873D5b68309cf645e84234bC290b7D991D2C'], //usdt pool legacy + [ADDRESSES.ethereum.USDT, '0x2535D0578562C88c1c875075A1085a4AD3117b20'], //usdt pool new + [ADDRESSES.ethereum.WBTC, '0xdCE224F9299CDd66e4D01D196d4cabce35a2F478'], //wbtc pool legacy + [ADDRESSES.ethereum.WBTC, '0x725fbd08e4c5d4b5978E48667d96D03F9B1C4d3A'], //wbtc pool new ['0x45804880De22913dAFE09f4980848ECE6EcbAf78', '0x787c68f6bCAb352Ec871C522d038bc7A30268020'], //paxg pool ], token: '0x3E5D9D8a63CC8a88748f229999CF59487e90721e', diff --git a/projects/metareserve/index.js b/projects/metareserve/index.js index c3aa5795a4..ea0144b2b6 100644 --- a/projects/metareserve/index.js +++ b/projects/metareserve/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const power = "0x000c6322Df760155bBe4F20F2EDD8F4Cd35733A6"; const staking = "0x5c643737AF2aD7A0B9ae62158b715793505967bE"; const treasury = "0x6651BDeE6A47F6962C86d680b498DC492a7E78C8"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0xA1A64b7D85B92A19fdb628557cC44bCb40284B65", true] // POWER-BUSD ]; diff --git a/projects/metavault-bo/index.js b/projects/metavault-bo/index.js index b0797cb824..577e5109f2 100644 --- a/projects/metavault-bo/index.js +++ b/projects/metavault-bo/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { polygon: { - tvl: sumTokensExport({ owner: '0x6fd5b386d8bed29b3b62c0856250cdd849b3564d', tokens: ['0x2791bca1f2de4661ed88a30c99a7a9449aa84174']}) + tvl: sumTokensExport({ owner: '0x6fd5b386d8bed29b3b62c0856250cdd849b3564d', tokens: [ADDRESSES.polygon.USDC]}) } } \ No newline at end of file diff --git a/projects/metavault/index.js b/projects/metavault/index.js index 3957c75722..d4f00986ca 100644 --- a/projects/metavault/index.js +++ b/projects/metavault/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const readerAbi = require("./reader.json"); @@ -6,8 +7,8 @@ const { staking } = require("../helper/staking"); const { sumTokens2 } = require('../helper/unwrapLPs'); const { default: BigNumber } = require("bignumber.js"); -const DAI_ADDRESS = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; -const USDC_ADDRESS = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; +const DAI_ADDRESS = ADDRESSES.ethereum.DAI; +const USDC_ADDRESS = ADDRESSES.ethereum.USDC; const MVLP_ADDRESS = "0x9F4f8bc00F48663B7C204c96b932C29ccc43A2E8"; const MVLP_DECIMALS = 18; @@ -22,7 +23,7 @@ const READER_CONTRACT = "0x01dd8B434A83cbdDFa24f2ef1fe2D6920ca03734"; // getToke const stakingAddress = "0x42162457006DB4DA3a7af5B53DFee5A891243b4D"; // Governance Staking const stakingTokenAddress = "0x788B6D2B37Aa51D916F2837Ae25b05f0e61339d1"; // MVD -const ADDRESS_ZERO = "0x0000000000000000000000000000000000000000"; +const ADDRESS_ZERO = ADDRESSES.null; async function getTvl(timestamp, block) { const toa = [ diff --git a/projects/metaversepro/index.js b/projects/metaversepro/index.js index cd169cebed..fad5b9cb7b 100644 --- a/projects/metaversepro/index.js +++ b/projects/metaversepro/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0xb874ac3a21e3ffe06fb4b6dcf9b62c7ea753a9a0" module.exports = ohmTvl(treasury, [ //WBNB - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], + [ADDRESSES.bsc.WBNB, false], //BUSD - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], + [ADDRESSES.bsc.BUSD, false], //Pancake LP ["0x512385e505615eb30ec80A2915575E344ACf792A", true], //Pancake LPs 1 @@ -15,5 +16,5 @@ module.exports = ohmTvl(treasury, [ //Pancake LPs 3 ["0x1c8ed2f2cef333aa43f1ba9a4589899c53787d2f", true], // USDC - ["0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", false] + [ADDRESSES.bsc.USDC, false] ], "bsc", "0xb91db0c2551aae4784119ce4c33234c9e3c9af71", "0x0a2046C7fAa5a5F2b38C0599dEB4310AB781CC83", undefined, undefined, false) \ No newline at end of file diff --git a/projects/metronome-synth/index.js b/projects/metronome-synth/index.js index 836b4d274b..454c2bf01d 100644 --- a/projects/metronome-synth/index.js +++ b/projects/metronome-synth/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs") module.exports = { @@ -5,12 +6,12 @@ module.exports = { tvl: sumTokensExport({ owner: '0x3691ef68ba22a854c36bc92f6b5f30473ef5fb0a', tokens: [ - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, "0xd1C117319B3595fbc39b471AB1fd485629eb05F2", "0x853d955aCEf822Db058eb8505911ED77F175b99e", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WBTC, "0xa8b607Aa09B6A2E306F93e74c282Fb13f6A80452", "0xc14900dFB1Aa54e7674e1eCf9ce02b3b35157ba5", "0xac3E018457B222d93114458476f3E3416Abbe38F", diff --git a/projects/midasdao.js b/projects/midasdao.js index 6009a2faa7..b31982111b 100644 --- a/projects/midasdao.js +++ b/projects/midasdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require("./helper/unwrapLPs"); const sdk = require('@defillama/sdk'); @@ -7,7 +8,7 @@ const CROWN = "0x39912d83acb4a373321387300f4fbe88aa5d6f14"; const JoePair = "0x089a9BF16453b519Fab02e40d143C0dcF9083778"; const TREASURY = "0x6D9Cfb705C7b7A5ca1C4565A47Fa1b26FC1bE3d0"; const MIM = "0x130966628846BFd36ff31a822705796e8cb8C18D"; -const WAVAX = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" +const WAVAX = ADDRESSES.avax.WAVAX const staking = async (timestamp, ethBlock, chainBlocks) => { const balances = {}; diff --git a/projects/mimo/index.js b/projects/mimo/index.js index 2f841dd8b8..6f772e0c68 100755 --- a/projects/mimo/index.js +++ b/projects/mimo/index.js @@ -1,29 +1,30 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); const config = { ethereum: { vaultCore: ['0x4026BdCD023331D52533e3374983ded99CcBB6d4'], collaterals: [ - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', //wETH - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', //wBTC - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', //USDC + ADDRESSES.ethereum.WETH, //wETH + ADDRESSES.ethereum.WBTC, //wBTC + ADDRESSES.ethereum.USDC, //USDC ], }, polygon: { vaultCore: ['0x03175c19cb1d30fa6060331a9ec181e04cac6ab0'], collaterals: [ '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', //wMATIC - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', //wETH - '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', //wBTC - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', //USDC + ADDRESSES.polygon.WETH_1, //wETH + ADDRESSES.polygon.WBTC, //wBTC + ADDRESSES.polygon.USDC, //USDC ], }, fantom: { vaultCore: ['0xB2b4feB22731Ae013344eF63B61f4A0e09fa370e'], collaterals:[ - '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', //wFTM + ADDRESSES.fantom.WFTM, //wFTM '0x74b23882a30290451A17c44f4F05243b6b58C76d', //ETH '0x321162Cd933E2Be498Cd2267a90534A804051b11', //BTC - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', //USDC + ADDRESSES.fantom.USDC, //USDC ], } } diff --git a/projects/mindgames/index.js b/projects/mindgames/index.js index 77fefaad40..4c7b0e4246 100644 --- a/projects/mindgames/index.js +++ b/projects/mindgames/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') const xCRX = "0x35AfE95662fdf442762a11E4eD5172C81fBceF7e"; const CRX = "0xb21Be1Caf592A5DC1e75e418704d1B6d50B0d083"; @@ -16,7 +17,7 @@ module.exports = { owner: xCRX, tokens: [CRX], chain: 'arbitrum', - coreAssets: ['0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8'], + coreAssets: [ADDRESSES.arbitrum.USDC], lps: ['0xf7305D209BFeCF40Bd53ccBdbe5303B3153d0660'] }) }, diff --git a/projects/miningtycoon/index.js b/projects/miningtycoon/index.js index 8190d02a52..46e6a372cc 100644 --- a/projects/miningtycoon/index.js +++ b/projects/miningtycoon/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const tokenFarm = '0xBdfbeecF52bCfF5aa8cc1B8A4B737B2Af3D1BA2F'; @@ -10,7 +11,7 @@ const bsc_tokenFarm = '0xA05Cbf21620553Ade9a3368f1b20D81eEe74a1FC'; const bsc_tokenFarm2 = '0x973fEAf394F5E882B0F8a9B5CDC0b3E28AA08926'; const bsc_NTToken = '0xfbcf80ed90856AF0d6d9655F746331763EfDb22c'; -const bsc_USDTToken = '0x55d398326f99059fF775485246999027B3197955'; +const bsc_USDTToken = ADDRESSES.bsc.USDT; async function tvl(timestamp, ethBlock, chainBlocks) { let balances = {}; diff --git a/projects/minipanther/index.js b/projects/minipanther/index.js index ed3cad3994..938a01f152 100644 --- a/projects/minipanther/index.js +++ b/projects/minipanther/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0xBc461eA008c586a1721c6bF6a712f38e199A3Ce7" @@ -5,11 +6,11 @@ const miniPantherToken = "0x3264810174f577F82DDD4FD08818F368AC363505" const stakingAddress = "0x7dc10Ade8599bf5033577F60C6740479aa39DB41" const treasuryTokens = [ ["0x9cbccdaf10153edd092817a013470a0693852a77", false], //PantherUSD - ["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", false], //WFTM + [ADDRESSES.fantom.WFTM, false], //WFTM ["0x321162Cd933E2Be498Cd2267a90534A804051b11", false], //WBTC ["0x74b23882a30290451A17c44f4F05243b6b58C76d", false], //WETH - ["0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", false], //DAI - ["0x82f0b8b456c1a451378467398982d4834b6829c1", false], //MIM + [ADDRESSES.fantom.DAI, false], //DAI + [ADDRESSES.fantom.MIM, false], //MIM ["0x761D6a950c8F441D616f34d6D918230936a3F27b", true], //MiniPanther-DAI ] diff --git a/projects/minmax-finance/index.js b/projects/minmax-finance/index.js index a989579b0f..30f9052021 100644 --- a/projects/minmax-finance/index.js +++ b/projects/minmax-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs'); const MINMAX_B3_POOL = '0x09A1B7d922BcfECa097b06498Bc992A83b0BCc42'; @@ -14,27 +15,27 @@ const MINMAX_XIM_M3_METAPOOL = '0x7B24cAA6a497bc79FDfBAeb8A71a38F15eB3d7F7'; const tokens = { // BUSD - '0xacee9b11cd4b3f57e58880277ac72c8c41abe4e4':[MINMAX_E4_POOL, MINMAX_XIM_E3_POOL], // decimal: 18 + [ADDRESSES.iotex.ioBUSD]:[MINMAX_E4_POOL, MINMAX_XIM_E3_POOL], // decimal: 18 // USDC - '0x3B2bf2b523f54C4E454F08Aa286D03115aFF326c':[MINMAX_E4_POOL, MINMAX_XIM_E3_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 6 + [ADDRESSES.iotex.ioUSDC]:[MINMAX_E4_POOL, MINMAX_XIM_E3_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 6 // USDT - '0x6fbCdc1169B5130C59E72E51Ed68A84841C98cd1':[MINMAX_E4_POOL, MINMAX_USDT_POOL, MINMAX_XIM_E3_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 6 + [ADDRESSES.iotex.ioUSDT]:[MINMAX_E4_POOL, MINMAX_USDT_POOL, MINMAX_XIM_E3_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 6 // DAI - '0x1CbAd85Aa66Ff3C12dc84C5881886EEB29C1bb9b':[MINMAX_E4_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 18 + [ADDRESSES.iotex.ioDAI]:[MINMAX_E4_POOL, MINMAX_E3_POOL, MINMAX_XIM_E3_METAPOOL], // decimal: 18 // BUSD_b - '0x84abcb2832be606341a50128aeb1db43aa017449':[MINMAX_B3_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 + [ADDRESSES.iotex.BUSD_bsc]:[MINMAX_B3_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 // USDC_b - '0x037346E5a5722957Ac2cAb6ceb8c74fC18Cea91D':[MINMAX_B3_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 + [ADDRESSES.iotex.USDC_b]:[MINMAX_B3_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 // USDT_b - '0x42C9255D5e522e83B16ea11a3BA04c2D3AfCA079':[MINMAX_B3_POOL, MINMAX_USDT_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 + [ADDRESSES.iotex.USDT_b]:[MINMAX_B3_POOL, MINMAX_USDT_POOL, MINMAX_XIM_B3_POOL, MINMAX_XIM_B3_METAPOOL], // decimal: 18 // DAI_m - '0x62a9d987cbf4c45a550deed5b57b200d7a319632':[MINMAX_M3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 18 + [ADDRESSES.iotex.DAI_matic]:[MINMAX_M3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 18 // USDT_m - '0x3cdb7c48e70b854ed2fa392e21687501d84b3afc':[MINMAX_M3_POOL, MINMAX_USDT_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 6 + [ADDRESSES.iotex.USDT_matic]:[MINMAX_M3_POOL, MINMAX_USDT_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 6 // USDC_m - '0xc04da3a99d17135857bb937d2fbb321d3b6c6a81':[MINMAX_M3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 6 + [ADDRESSES.iotex.USDC_matic]:[MINMAX_M3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_M3_METAPOOL], // decimal: 6 // XIM - '0xec690cdd448e3cbb51ed135df72301c3265a8f80': [MINMAX_XIM_B3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_E3_POOL, MINMAX_XIM_E3_METAPOOL, MINMAX_XIM_B3_METAPOOL, MINMAX_XIM_M3_METAPOOL] // decimal: 6 + [ADDRESSES.iotex.XIM]: [MINMAX_XIM_B3_POOL, MINMAX_XIM_M3_POOL, MINMAX_XIM_E3_POOL, MINMAX_XIM_E3_METAPOOL, MINMAX_XIM_B3_METAPOOL, MINMAX_XIM_M3_METAPOOL] // decimal: 6 }; async function tvl(_, _b, {iotex: block}) { diff --git a/projects/minotaur-money/index.js b/projects/minotaur-money/index.js index 3f47ab1e19..ea0fd70eaf 100644 --- a/projects/minotaur-money/index.js +++ b/projects/minotaur-money/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const mino = "0x3A1138075bd97a33F23A87824b811146FA44288E"; @@ -8,7 +9,7 @@ const tokens = [ ["0xf2001b145b43032aaf5ee2884e456ccd805f677d", false], // DAI ["0xf5a5f547612e95c688971fb68334a80ceb3c542b", true], // MINO-DAI ["0x1c139f4b953ce0c0f6aa1cd1755727ad5aba5080", true], // MINO-WCRO - ["0x062e66477faf219f25d27dced647bf57c3107d52", false], // WBTC + [ADDRESSES.cronos.WBTC, false], // WBTC ["0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23", false], // WCRO ["0xe44fd7fcb2b1581822d0c862b68222998a0c299a", false] // WETH ]; @@ -17,7 +18,7 @@ module.exports = { misrepresentedTokens: true, ...ohmTvl(treasury, tokens, "cronos", staking, mino, addr=>{ if (addr.toLowerCase() === "0xe6052a9a4c0a2f14adc9876a3a1a7b2882f5f139") { - return "0x0000000000085d4780b73119b644ae5ecd22b376" + return ADDRESSES.ethereum.TUSD } return `cronos:${addr}` }, undefined, false) diff --git a/projects/mirrosset/index.js b/projects/mirrosset/index.js index f3d7f10051..d71954349e 100644 --- a/projects/mirrosset/index.js +++ b/projects/mirrosset/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') -const USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f" +const USDC = ADDRESSES.telos.ETH const mUSDC = "0x79568bEfa9bF339e76bE12813cf7430018E1AB58" const MortgagePool = "0xA6d5df932FFE35810389e00D1A3a698a44A14E85" const InsurancePool = "0x587Abb291379Ea84AcE583aB07A13109b9B3F347" diff --git a/projects/mm-stableswap-polygon/index.js b/projects/mm-stableswap-polygon/index.js index 064fa622cd..863c32dff7 100644 --- a/projects/mm-stableswap-polygon/index.js +++ b/projects/mm-stableswap-polygon/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, } = require('../helper/unwrapLPs') const pools = { '3MM Basepool': { owner: '0x690BBaa9EDBb762542FD198763092eaB2B2A5350', tokens: [ - '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', // USDT - '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC - '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', // DAI + ADDRESSES.polygon.USDT, // USDT + ADDRESSES.polygon.USDC, // USDC + ADDRESSES.polygon.DAI, // DAI ] } } diff --git a/projects/mm-stableswap/index.js b/projects/mm-stableswap/index.js index e8c2f7d340..6a9e1175c4 100644 --- a/projects/mm-stableswap/index.js +++ b/projects/mm-stableswap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const MM3BasePool = "0x61bB2F4a4763114268a47fB990e633Cb40f045F8"; const DAI = "0xF2001B145b43032AAF5Ee2884e456CCd805F677D"; -const USDT = "0x66e428c3f67a68878562e79A0234c1F83c208770"; -const USDC = "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59"; +const USDT = ADDRESSES.cronos.USDT; +const USDC = ADDRESSES.cronos.USDC; async function tvl(timestamp, block, chainBlocks) { diff --git a/projects/mobius/index.js b/projects/mobius/index.js index 4adf8e6277..dab40934c3 100644 --- a/projects/mobius/index.js +++ b/projects/mobius/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') let pools = [ @@ -5,7 +6,7 @@ let pools = [ "name": "USDC (Portal)", "address": "0xc0ba93d4aaf90d39924402162ee4a213300d1d60", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0x37f750B7cC259A2f741AF45294f6a16572CF5cAd" ], "lp": "0xe10fd4788a76d19ba0110b1bfda5e13d35ed4359" @@ -14,7 +15,7 @@ let pools = [ "name": "Staked CELO", "address": "0xebf0536356256f8ff2a5eb6c65800839801d8b95", "tokens": [ - "0x471EcE3750Da237f93B8E339c536989b8978a438", + ADDRESSES.celo.CELO, "0xC668583dcbDc9ae6FA3CE46462758188adfdfC24" ], "lp": "0x4730ff6bc3008a40cf74d660d3f20d5b51646da3" @@ -23,8 +24,8 @@ let pools = [ "name": "UST (Allbridge)", "address": "0x9f4adbd0af281c69a582eb2e6fa2a594d4204cae", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", - "0xEd193C4E69F591E42398eF54DEa65aa1bb02835c" + ADDRESSES.celo.cUSD, + ADDRESSES.celo.atUST ], "lp": "0x9438e7281d7e3e99a9dd21e0ead9c6a254e17ab2" }, @@ -41,7 +42,7 @@ let pools = [ "name": "USDC (Optics V2)", "address": "0x9906589ea8fd27504974b7e8201df5bbde986b03", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0xef4229c8c3250C675F21BCefa42f58EfbfF6002a" ], "lp": "0x39b6f09ef97db406ab78d869471adb2384c494e3" @@ -50,8 +51,8 @@ let pools = [ "name": "DAI (Optics V2)", "address": "0xf3f65dfe0c8c8f2986da0fec159abe6fd4e700b4", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", - "0x90Ca507a5D4458a4C6C6249d186b6dCb02a5BCCd" + ADDRESSES.celo.cUSD, + ADDRESSES.celo.DAI ], "lp": "0x274dd2df039f1f6131419c82173d97770e6af6b7" }, @@ -60,7 +61,7 @@ let pools = [ "address": "0xaefc4e8cf655a182e8346b24c8abce45616ee0d2", "tokens": [ "0xD629eb00dEced2a080B7EC630eF6aC117e614f1b", - "0xBAAB46E28388d2779e6E31Fd00cF0e5Ad95E327B" + ADDRESSES.celo.WBTC ], "lp": "0x20d7274c5af4f9de6e8c93025e44af3979d9ab2b" }, @@ -68,7 +69,7 @@ let pools = [ "name": "pUSDC (Optics V2)", "address": "0xcce0d62ce14fb3e4363eb92db37ff3630836c252", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0x1bfc26cE035c368503fAE319Cc2596716428ca44" ], "lp": "0x68b239b415970dd7a5234a9701cbb5bfab544c7c" @@ -77,8 +78,8 @@ let pools = [ "name": "USDC (Optics V1)", "address": "0xa5037661989789d0310ac2b796fa78f1b01f195d", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", - "0x2A3684e9Dc20B857375EA04235F2F7edBe818FA7" + ADDRESSES.celo.cUSD, + ADDRESSES.celo.USDC ], "lp": "0xd7bf6946b740930c60131044bd2f08787e1ddbd4" }, @@ -86,8 +87,8 @@ let pools = [ "name": "aaUSDC (Allbridge)", "address": "0x0986b42f5f9c42feeef66fc23eba9ea1164c916d", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", - "0xb70e0a782b058BFdb0d109a3599BEc1f19328E36" + ADDRESSES.celo.cUSD, + ADDRESSES.celo.aaUSDC ], "lp": "0x730e677f39c4ca96012c394b9da09a025e922f81" }, @@ -95,7 +96,7 @@ let pools = [ "name": "Poof cUSD V2", "address": "0xa2f0e57d4ceacf025e81c76f28b9ad6e9fbe8735", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0xEadf4A7168A82D30Ba0619e64d5BCf5B30B45226" ], "lp": "0x07e137e5605e15c93f22545868fa70cecfcbbffe" @@ -104,7 +105,7 @@ let pools = [ "name": "Poof CELO V2", "address": "0xfc9e2c63370d8deb3521922a7b2b60f4cff7e75a", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0x301a61D01A63c8D670c2B8a43f37d12eF181F997" ], "lp": "0xaffd8d6b5e5a0e25034dd3d075532f9ce01c305c" @@ -122,7 +123,7 @@ let pools = [ "name": "Poof cUSD V1", "address": "0x02db089fb09fda92e05e92afcd41d9aafe9c7c7c", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0xB4aa2986622249B1F45eb93F28Cfca2b2606d809" ], "lp": "0x18d71b8664e69d6dd61c79247dbf12bfaaf66c10" @@ -131,8 +132,8 @@ let pools = [ "name": "asUSDC (Allbridge)", "address": "0x63c1914bf00a9b395a2bf89aada55a5615a3656e", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", - "0xCD7D7Ff64746C1909E44Db8e95331F9316478817" + ADDRESSES.celo.cUSD, + ADDRESSES.celo.asUSDC ], "lp": "0xafee90ab6a2d3b265262f94f6e437e7f6d94e26e" }, @@ -140,7 +141,7 @@ let pools = [ "name": "pUSDC (Optics V1)", "address": "0x2080aaa167e2225e1fc9923250ba60e19a180fb2", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0xcC82628f6A8dEFA1e2B0aD7ed448bef3647F7941" ], "lp": "0xf5b454cf47caca418d95930aa03975ee4bf409bc" @@ -167,8 +168,8 @@ let pools = [ "name": "USDT (Moss)", "address": "0xdbf27fd2a702cc02ac7acf0aea376db780d53247", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", - "0xcFFfE0c89a779c09Df3DF5624f54cDf7EF5fDd5D" + ADDRESSES.celo.cUSD, + ADDRESSES.celo.cUSDT ], "lp": "0xc7a4c6ef4a16dc24634cc2a951ba5fec4398f7e0" }, @@ -176,8 +177,8 @@ let pools = [ "name": "USDC (Moss)", "address": "0x0ff04189ef135b6541e56f7c638489de92e9c778", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", - "0x93DB49bE12B864019dA9Cb147ba75cDC0506190e" + ADDRESSES.celo.cUSD, + ADDRESSES.celo.cUSDC ], "lp": "0x635aec36c4b61bac5eb1c3eee191147d006f8a21" }, @@ -185,7 +186,7 @@ let pools = [ "name": "Poof Celo V1", "address": "0x413ffcc28e6cdde7e93625ef4742810fe9738578", "tokens": [ - "0x471EcE3750Da237f93B8E339c536989b8978a438", + ADDRESSES.celo.CELO, "0xE74AbF23E1Fdf7ACbec2F3a30a772eF77f1601E1" ], "lp": "0x4d6b17828d0173668e8eb730106444556a98c0f9" @@ -212,7 +213,7 @@ let pools = [ "name": "cUSD (Mento 1:1 Pool)", "address": "0xfa3df877f98ac5ecd87456a7accaa948462412f0", "tokens": [ - "0x765DE816845861e75A25fCA122bb6898B8B1282a", + ADDRESSES.celo.cUSD, "0x37f750B7cC259A2f741AF45294f6a16572CF5cAd" ], "lp": "0x552b9aa0eee500c60f09456e49fbc1096322714c" diff --git a/projects/mobiusfinance/index.js b/projects/mobiusfinance/index.js index 7932a96d46..ce29bcbbc2 100644 --- a/projects/mobiusfinance/index.js +++ b/projects/mobiusfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const formatBytes32String = require('ethers').utils.formatBytes32String; const { sumTokens, } = require('../helper/unwrapLPs') const { transformPolygonAddress } = require('../helper/portedTokens') @@ -11,7 +12,7 @@ const ResolverJson = { const sdk = require('@defillama/sdk') const chain = 'polygon' -const nullAddr = "0x0000000000000000000000000000000000000000" +const nullAddr = ADDRESSES.null const motToken = '0x2db0Db271a10661e7090b6758350E18F6798a49D' async function tvl(ts, _block, { polygon: block }) { diff --git a/projects/mojitoswap/index.js b/projects/mojitoswap/index.js index 2ec6c36d45..9d024d674c 100644 --- a/projects/mojitoswap/index.js +++ b/projects/mojitoswap/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { stakings } = require('../helper/staking') const masterchefAddress = "0x25c6d6a65c3ae5d41599ba2211629b24604fea4f"; const masterchefV2Address = "0xfdfcE767aDD9dCF032Cbd0DE35F0E57b04495324"; -const mjtAddress = "0x2ca48b4eea5a731c2b54e7c3944dbdb87c0cfb6f"; +const mjtAddress = ADDRESSES.kcc.MJT; module.exports = { misrepresentedTokens: true, diff --git a/projects/monox/index.js b/projects/monox/index.js index 88f1aa6468..7a949855bc 100644 --- a/projects/monox/index.js +++ b/projects/monox/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {sumTokensSharedOwners} = require('../helper/unwrapLPs') async function eth(timestamp, ethBlock, chainBlocks){ @@ -6,10 +7,10 @@ async function eth(timestamp, ethBlock, chainBlocks){ await sumTokensSharedOwners(balances, [ "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", "0x92e187a03b6cd19cb6af293ba17f2745fd2357d5", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC ], ["0x59653E37F8c491C3Be36e5DD4D503Ca32B5ab2f4"], ethBlock) return balances } @@ -18,10 +19,10 @@ async function polygon(timestamp, ethBlock, chainBlocks){ const block = chainBlocks.polygon const balances = {} await sumTokensSharedOwners(balances, [ - "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + ADDRESSES.polygon.WBTC, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.WETH_1, "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", ], ["0x3826367A5563eCE9C164eFf9701146d96cC70AD9"], block, "polygon") return balances diff --git a/projects/moola/index.js b/projects/moola/index.js index 15d8e9d717..a97c2d72ad 100644 --- a/projects/moola/index.js +++ b/projects/moola/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { aaveChainTvl } = require('../helper/aave') const { singleAssetV1Market } = require('../aave/v1') const sdk = require('@defillama/sdk') const v1PoolCore = "0xAF106F8D4756490E7069027315F4886cc94A8F73" -const gasAsset = "0x471ece3750da237f93b8e339c536989b8978a438" +const gasAsset = ADDRESSES.celo.CELO function lending(borrowed) { return async (timestamp, ethBlock, {celo: block}) => { diff --git a/projects/moondao/index.js b/projects/moondao/index.js index 28eea1e633..01234074c9 100644 --- a/projects/moondao/index.js +++ b/projects/moondao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0xeC2aE8A3E2692E4b0836AB5cf88104d101DEBEf4" @@ -5,7 +6,7 @@ module.exports = ohmTvl(treasury, [ //DAI ["0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844", false], //USDC - ["0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", false], + [ADDRESSES.moonriver.USDC, false], //solarbeam LP ["0xdbf638d800190271f5473e76898c6c8e741cba51", true], ], "moonriver", "0x534F861B6BaFdF030E5b469D2d763834163f522f", "0x761cb807bFbF14A4f4bA980f29F43F009F6a18c0") \ No newline at end of file diff --git a/projects/moonswap/onchain.js b/projects/moonswap/onchain.js index 3ca01fdebd..bc5bace50e 100644 --- a/projects/moonswap/onchain.js +++ b/projects/moonswap/onchain.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const factoryAbi = require("../helper/abis/factory.json"); const token0 = 'address:token0' @@ -91,11 +92,11 @@ function getTokenId(address) { switch(address) { case '0x98878b06940ae243284ca214f92bb71a2b032b8a': return ['moonriver', 18] - case '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d': + case [ADDRESSES.moonriver.USDC]: return ['usd-coin', 6] - case '0xb44a9b6905af7c801311e8f4e76932ee959c663c': + case [ADDRESSES.moonriver.USDT]: return ['tether', 6] - case '0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c': + case [ADDRESSES.moonriver.ETH]: return ['ethereum', 18] case '0x5d9ab5522c64e1f6ef5e3627eccc093f56167818': return ['binance-usd', 18] diff --git a/projects/moremoney/StakingMetadata.js b/projects/moremoney/StakingMetadata.js index 649ab1c7b6..be3848899b 100644 --- a/projects/moremoney/StakingMetadata.js +++ b/projects/moremoney/StakingMetadata.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null const sdk = require("@defillama/sdk"); const addresses = require("./addresses.json"); diff --git a/projects/moremoney/StrategyMetadata.js b/projects/moremoney/StrategyMetadata.js index 00cf73535e..db7aabaf93 100644 --- a/projects/moremoney/StrategyMetadata.js +++ b/projects/moremoney/StrategyMetadata.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const StrategyViewer = require("./StrategyViewer.json"); const addresses = require("./addresses.json"); @@ -9,11 +10,11 @@ async function useStrategyMetadata(block) { const token2Strat = { ["0xE5e9d67e93aD363a50cABCB9E931279251bBEFd0"]: curAddresses.YieldYakStrategy2, - ["0x152b9d0FdC40C096757F570A51E494bd4b943E50"]: + [ADDRESSES.avax.BTC_b]: curAddresses.YieldYakStrategy2, ["0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"]: curAddresses.YieldYakStrategy2, - ["0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"]: + [ADDRESSES.avax.WAVAX]: curAddresses.YieldYakAVAXStrategy2, ["0x9e295B5B976a184B14aD8cd72413aD846C299660"]: curAddresses.YieldYakPermissiveStrategy2, @@ -23,11 +24,11 @@ async function useStrategyMetadata(block) { const tokens = Object.keys(token2Strat); const strats = Object.values(token2Strat); - tokens.push("0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"); + tokens.push(ADDRESSES.avax.WAVAX); strats.push(curAddresses.AltYieldYakAVAXStrategy2); - tokens.push("0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"); + tokens.push(ADDRESSES.avax.WAVAX); strats.push(curAddresses.OldYieldYakAVAXStrategy2); - tokens.push("0x152b9d0FdC40C096757F570A51E494bd4b943E50"); + tokens.push(ADDRESSES.avax.BTC_b); strats.push(curAddresses.AltYieldYakStrategy2); tokens.push("0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"); strats.push(curAddresses.AltYieldYakStrategy2); @@ -52,13 +53,13 @@ async function useLegacyIsolatedStrategyMetadata(block) { curAddresses.YieldYakStrategy, ["0x59414b3089ce2AF0010e7523Dea7E2b35d776ec7"]: curAddresses.YieldYakStrategy, - ["0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd"]: + [ADDRESSES.avax.JOE]: curAddresses.YieldYakStrategy, - ["0xd586e7f844cea2f87f50152665bcbc2c279d8d70"]: + [ADDRESSES.avax.DAI]: curAddresses.YieldYakStrategy, ["0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5"]: curAddresses.YieldYakStrategy, - ["0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664"]: + [ADDRESSES.avax.USDC_e]: curAddresses.YieldYakStrategy, ["0xA389f9430876455C36478DeEa9769B7Ca4E3DDB1"]: curAddresses.YieldYakStrategy, @@ -72,7 +73,7 @@ async function useLegacyIsolatedStrategyMetadata(block) { curAddresses.MultiTraderJoeMasterChef3Strategy, }; // const masterChef2Tokens = [ - // '0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33', + // ADDRESSES.avax.xJOE, // '0xa389f9430876455c36478deea9769b7ca4e3ddb1', // '0xed8cbd9f0ce3c6986b22002f03c6475ceb7a6256', // ].map(getAddress); @@ -83,7 +84,7 @@ async function useLegacyIsolatedStrategyMetadata(block) { //legacy legacyTokens.push("0x454E67025631C065d3cFAD6d71E6892f74487a15"); legacyStrats.push(curAddresses.YieldYakStrategy); - legacyTokens.push("0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd"); + legacyTokens.push(ADDRESSES.avax.JOE); legacyStrats.push(curAddresses.sJoeStrategy); const stratViewer = await sdk.api.abi.call({ diff --git a/projects/moret/index.js b/projects/moret/index.js index 0938e11303..c177434d55 100644 --- a/projects/moret/index.js +++ b/projects/moret/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const markets = ['0xE15A3a1d19a48c0b1dB46C3F69b9A2F258B56963', // ETH pool '0xDf316b15B0d54C3159Be342377E73C8120e23f92', // BTC pool '0xe39b7E5F04FCD8abde312E5B7a4c49Ed1C686A49' // GHST pool ] -const tvlTokens = ['0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', // WETH - '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', // WBTC +const tvlTokens = [ADDRESSES.polygon.WETH_1, // WETH + ADDRESSES.polygon.WBTC, // WBTC '0x385Eeac5cB85A38A9a07A70c73e0a3271CfB54A7', // GHST - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' // USDC + ADDRESSES.polygon.USDC // USDC ] module.exports = { diff --git a/projects/morpho/addresses.js b/projects/morpho/addresses.js index 800ce689fb..124146bdad 100644 --- a/projects/morpho/addresses.js +++ b/projects/morpho/addresses.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { morphoCompoundMainnetLens: "0x930f1b46e1d081ec1524efd95752be3ece51ef67", cEth: "0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5", - wEth: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + wEth: ADDRESSES.ethereum.WETH } \ No newline at end of file diff --git a/projects/mosquitos-finance/index.js b/projects/mosquitos-finance/index.js index b3fd895e44..698f72ac45 100644 --- a/projects/mosquitos-finance/index.js +++ b/projects/mosquitos-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const { default: BigNumber } = require("bignumber.js"); const { getResource, getResources, coreTokens } = require("../helper/chain/aptos"); diff --git a/projects/mover/index.js b/projects/mover/index.js index f373146161..9da9737c5f 100644 --- a/projects/mover/index.js +++ b/projects/mover/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const baseLedgerAbi = require("./baseLedgerPoolAbi.json"); const savingsPoolAbi = require("./savingsPoolAbi.json"); @@ -14,8 +15,8 @@ const MOVER_WETH_SLP = "0x87b918e76c92818DB0c76a4E174447aeE6E6D23f"; const savingsPool = "0xAF985437DCA19DEFf89e61F83Cd526b272523719"; const savingsPlusPolygonPool = "0x77D5333d97A092cA01A783468E53E550C379dc3C"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; -const USDCinPolygon = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"; +const USDC = ADDRESSES.ethereum.USDC; +const USDCinPolygon = ADDRESSES.polygon.USDC; const baseLedgerPool = '0x1f15F293C1Cd3d05d58d3EdeAf0C72c5A2dfeaFf'; const UBT = '0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e'; diff --git a/projects/mtgo/index.js b/projects/mtgo/index.js index 3877987625..e0276e1c12 100644 --- a/projects/mtgo/index.js +++ b/projects/mtgo/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumLPWithOnlyOneTokenOtherThanKnown, } = require("./../helper/unwrapLPs"); @@ -6,7 +7,7 @@ const lpToken = "0x2a382b6d2dac1cba6e4820fd04e3c2c14e1aa7b2"; const treasuryAddress = "0xdE2957506B6dC883963fbE9cE45a94a8A22c6006"; const mtgoToken = "0x1bc8547e3716680117d7ba26dcf07f2ed9162cd0"; const poolAddress = "0x1781d2e9b4c7c0a3657411a64d2c1dfc50118772"; -const wiotx = "0xA00744882684C3e4747faEFD68D283eA44099D03"; +const wiotx = ADDRESSES.iotex.WIOTX; const erc20Tokens = [ ["0x1bc8547e3716680117d7ba26dcf07f2ed9162cd0", false], // MTGO ]; diff --git a/projects/multialt-stacking/index.js b/projects/multialt-stacking/index.js index 0b284b0043..58f325229a 100644 --- a/projects/multialt-stacking/index.js +++ b/projects/multialt-stacking/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const masterchef = "0xFFd33A71411fbA8B989Eca9F99EE7a908a2dEf4F"; -const token_USDT = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; -const token_USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f"; +const token_USDT = ADDRESSES.moonriver.USDT; +const token_USDC = ADDRESSES.telos.ETH; module.exports = { kava: { diff --git a/projects/multichainMiner.js b/projects/multichainMiner.js index df7e16b6f5..a7e927b00a 100644 --- a/projects/multichainMiner.js +++ b/projects/multichainMiner.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getChainTransform, getFixBalances } = require("./helper/portedTokens"); const minedTokens = { 'cake': '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', - 'busd': '0xe9e7cea3dedca5984780bafc599bd69add087d56', + 'busd': ADDRESSES.bsc.BUSD, 'matic': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', - 'ftm': '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83', - 'avax': '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', - 'usdc': '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // polygon + 'ftm': ADDRESSES.fantom.WFTM, + 'avax': ADDRESSES.avax.WAVAX, + 'usdc': ADDRESSES.polygon.USDC, // polygon 'doge': '0xba2ae424d960c26247dd6c32edc70b295c744c43', // bsc - 'eth': '0x2170ed0880ac9a755fd29b2688956bd959f933f8' // bsc + 'eth': ADDRESSES.bsc.ETH // bsc }; const minerContracts = { 'cake': '0xD5d38f1815b4555527DE075a584268E08c5909EA', diff --git a/projects/muuu/tvl.js b/projects/muuu/tvl.js index 1816338c3a..6ef2139158 100644 --- a/projects/muuu/tvl.js +++ b/projects/muuu/tvl.js @@ -1,44 +1,45 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumberJs = require("bignumber.js"); const ABI = require("./abi.json"); const { toBigNumberJsOrZero } = require("./utils.js"); -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const ZERO_ADDRESS = ADDRESSES.null; const REGISTRY_ADDRESS = "0xDA820e20A89928e43794645B9A9770057D65738B"; const BOOSTER_ADDRESS = "0x6d12e3dE6dAcDBa2779C4947c0F718E13b78cfF4"; const MUKGL_ADDRESS = "0x5eaAe8435B178d4677904430BAc5079e73aFa56e"; const MUUU_REWARDS_ADDRESS = "0xB2ae0CF4819f2BE89574D3dc46D481cf80C7a255"; const TOKENS = { // USDC - "0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98": - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [ADDRESSES.moonbeam.USDC]: + ADDRESSES.ethereum.USDC, // USDT - "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283": - "0xdac17f958d2ee523a2206206994597c13d831ec7", + [ADDRESSES.astar.USDT]: + ADDRESSES.ethereum.USDT, // DAI - "0x6De33698e9e9b787e09d3Bd7771ef63557E148bb": - "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.DAI]: + ADDRESSES.ethereum.DAI, // Starlay lUSDC -> USDC - "0xC404E12D3466acCB625c67dbAb2E1a8a457DEf3c": - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [ADDRESSES.astar.lUSDC]: + ADDRESSES.ethereum.USDC, // Starlay lUSDT -> USDT - "0x430D50963d9635bBef5a2fF27BD0bDDc26ed691F": - "0xdac17f958d2ee523a2206206994597c13d831ec7", + [ADDRESSES.astar.lUSDT]: + ADDRESSES.ethereum.USDT, // Starlay lDAI -> DAI - "0x4dd9c468A44F3FEF662c35c1E9a6108B70415C2c": - "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.lDAI]: + ADDRESSES.ethereum.DAI, // BUSD - "0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E": - "0x4fabb145d64652a948d72533023f6e7a623c7c53", + [ADDRESSES.oasis.ceUSDT]: + ADDRESSES.ethereum.BUSD, // 3KGL -> DAI(TMP) "0x18BDb86E835E9952cFaA844EB923E470E832Ad58": - "0x6b175474e89094c44da98b954eedeac495271d0f", + ADDRESSES.ethereum.DAI, // BAI -> DAI(TMP) - "0x733ebcC6DF85f8266349DEFD0980f8Ced9B45f35": - "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.BAI]: + ADDRESSES.ethereum.DAI, // oUSD -> DAI(TMP) - "0x29F6e49c6E3397C3A84F715885F9F233A441165C": - "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.oUSD]: + ADDRESSES.ethereum.DAI, }; const transformTokenAddress = (address) => TOKENS[address]; diff --git a/projects/mymetatrader/index.js b/projects/mymetatrader/index.js index 62167f09df..2f9c3025c1 100644 --- a/projects/mymetatrader/index.js +++ b/projects/mymetatrader/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); const vault = "0x992EB7040b66b13abEa94E2621D4E61d5CE608BD"; -const usdc = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; +const usdc = ADDRESSES.arbitrum.USDC; const stakingPool = "0xBdB00022030C9D715A10F2fCeDb19e99020Aa357"; const mmtToken = "0x27d8de4c30ffde34e982482ae504fc7f23061f61"; diff --git a/projects/naos/index.js b/projects/naos/index.js index 24633702cc..60a261e5c7 100644 --- a/projects/naos/index.js +++ b/projects/naos/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking, stakings } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); @@ -12,7 +13,7 @@ const AssessorAbi = "uint256:seniorDebt" const BSC_NAOS_ADDRESS = "0x758d08864fb6cce3062667225ca10b8f00496cc2"; const CAKE_BNB_NAOS_LP_ADDRESS = "0xcaa662ad41a662b81be2aea5d59ec0697628665f"; const BSC_BOOST_POOL = "0x3dcd32dd2b225749aa830ca3b4f2411bfeb03db4"; -const BUSD_CONTRACT_ADDRESS = "0xe9e7cea3dedca5984780bafc599bd69add087d56"; +const BUSD_CONTRACT_ADDRESS = ADDRESSES.bsc.BUSD; const BUSD_CONTRACT_HOLDER = [ "0x9591ff9c5070107000155ff6c5ce049aa1443dd3", // Formation "0xb9ece39b356d5c0842301b42a716e4385617c871", // Transmuter @@ -42,7 +43,7 @@ const UNI_ETH_NAOS_LP_ADDRESS = "0x9b577e849b128ee1a69144b218e809b8bb98c35d"; const NAOS_ADDRESS = "0x4a615bb7166210cce20e6642a6f8fb5d4d044496"; const NUSD_3CRV_LP_ADDRESS = "0x67d9eAe741944D4402eB0D1cB3bC3a168EC1764c"; -const DAI_CONTRACT_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f"; +const DAI_CONTRACT_ADDRESS = ADDRESSES.ethereum.DAI; const DAI_CONTRACT_HOLDER = [ "0x9Ddceb30515eD297C1B72Ff8F848F254104b7A12", // Formation "0x3ED6355Ad74605c0b09415d6B0b29a294Fd31265", // Transmuter diff --git a/projects/nava-finance/index.js b/projects/nava-finance/index.js index e145b3a39b..f2ebd6cc26 100644 --- a/projects/nava-finance/index.js +++ b/projects/nava-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { unknownTombs, sumUnknownTokens } = require('../helper/unknownTokens') const { staking } = require('../helper/staking'); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -13,7 +14,7 @@ const pool2lps = [ ]; const genesisPool = '0xb9F9993f0D4A63344D9571387E18f659B6AE5447' const OORT = '0x3D1BBD0eC9Af25e8f12383d9F6a6bbFa6DfeF06F' -const WREI = '0x2545AF3D8b11e295bB7aEdD5826021AB54F71630' +const WREI = ADDRESSES.rei.WREI const OORT_LP = '0xB95783dCE72CF2C7fa13a6b3D7399A4223259878' // module.exports = { // ...tombTvl(bond, share, rewardPool, boardroom, pool2lps, "rei", undefined, false, pool2lps[1]) diff --git a/projects/nearpad/index.js b/projects/nearpad/index.js index 6310cf696c..6b4e53c048 100644 --- a/projects/nearpad/index.js +++ b/projects/nearpad/index.js @@ -1,18 +1,19 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const tokens = [ "0x885f8CF6E45bdd3fdcDc644efdcd0AC93880c781", "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB", - "0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d", - "0x4988a896b1227218e4A686fdE5EabdcAbd91571f", + ADDRESSES.aurora.NEAR, + ADDRESSES.aurora.USDT_e, "0xe3520349F477A5F6EB06107066048508498A291b", - "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802", + ADDRESSES.aurora.USDC_e, "0xF4eB217Ba2454613b15dBdea6e5f22276410e89e", - "0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79", + ADDRESSES.aurora.AURORA, "0xFa94348467f64D5A457F75F8bc40495D33c65aBB", "0x74974575d2f1668c63036d51ff48dbaa68e52408", "0xdcD6D4e2B3e1D1E1E6Fa8C21C8A323DcbecfF970", - "0xDA2585430fEf327aD8ee44Af8F1f989a2A91A3d2", + ADDRESSES.aurora.FRAX, ]; diff --git a/projects/nemesis-dao/index.js b/projects/nemesis-dao/index.js index 3a10cb8787..7af04cc022 100644 --- a/projects/nemesis-dao/index.js +++ b/projects/nemesis-dao/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0xdffb6fb92e3f54c0daa59e5af3f47fd58824562a" module.exports = ohmTvl(treasury, [ //BUSD - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], + [ADDRESSES.bsc.BUSD, false], //Pancake LP ["0x6b0a3e71b69ab49ddea0ed23bef48f78bf9509aa", true], ], "bsc", "0xfd562672bf1da0f80d43f26bfc4ca19121ba661b", "0x8AC9DC3358A2dB19fDd57f433ff45d1fc357aFb3") \ No newline at end of file diff --git a/projects/neopin-staking/index.js b/projects/neopin-staking/index.js index b96b352764..c0c792fae7 100644 --- a/projects/neopin-staking/index.js +++ b/projects/neopin-staking/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getStakedTron } = require('../helper/chain/tron'); const { staking } = require('../helper/staking') const { sumTokensExport } = require('../helper/sumTokens'); @@ -13,7 +14,7 @@ module.exports = { ], tokens: [nullAddress], }), - staking: staking('0x306ee01a6ba3b4a8e993fa2c1adc7ea24462000c', '0xe06597d02a2c3aa7a9708de2cfa587b128bd3815', 'klaytn'), + staking: staking('0x306ee01a6ba3b4a8e993fa2c1adc7ea24462000c', ADDRESSES.klaytn.NPT, 'klaytn'), }, tron: { tvl: async () => { diff --git a/projects/nereus/index.js b/projects/nereus/index.js index 0e70e35204..12b134729f 100644 --- a/projects/nereus/index.js +++ b/projects/nereus/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const tokenAndContract = [ - ["0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", "0x6d9336ce867606Dcb1aeC02C8Ef0EDF0FF22d247"], // nWAVAX - ["0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", "0x92F79834fC52f0Aa328f991C91185e081ea4f957"], // nWETH + [ADDRESSES.avax.WAVAX, "0x6d9336ce867606Dcb1aeC02C8Ef0EDF0FF22d247"], // nWAVAX + [ADDRESSES.avax.WETH_e, "0x92F79834fC52f0Aa328f991C91185e081ea4f957"], // nWETH ["0x50b7545627a5162F82A992c33b87aDc75187B218", "0x3D8231cE419886a5D400dD5a168C8917aEeAB25C"], // nWBTC - ["0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", "0x6Ce0e6e81Dc7A5D997E6169cD5f8C982DA83e49e"], // nDAI - ["0xc7198437980c041c805A1EDcbA50c1Ce5db95118", "0x29F511e6f62118b27D9B47d1AcD6fDd5cD0B4C64"], // nUSDT - ["0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", "0x723191E7F8D87eC22E682c13Df504E5E3432e53E"] // nUSDC + [ADDRESSES.avax.DAI, "0x6Ce0e6e81Dc7A5D997E6169cD5f8C982DA83e49e"], // nDAI + [ADDRESSES.avax.USDT_e, "0x29F511e6f62118b27D9B47d1AcD6fDd5cD0B4C64"], // nUSDT + [ADDRESSES.avax.USDC_e, "0x723191E7F8D87eC22E682c13Df504E5E3432e53E"] // nUSDC ] async function tvl(timestamp, block, chainBlocks) { diff --git a/projects/nerve/index.js b/projects/nerve/index.js index 314688b7eb..7637b89e75 100644 --- a/projects/nerve/index.js +++ b/projects/nerve/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokensExport } = require('../helper/unwrapLPs') @@ -5,19 +6,19 @@ const xnrvAddress = '0x15B9462d4Eb94222a7506Bc7A25FB27a2359291e' const nrv = "0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096" const tokens = { - busd: '0xe9e7cea3dedca5984780bafc599bd69add087d56', - usdt: '0x55d398326f99059ff775485246999027b3197955', - usdc: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', + busd: ADDRESSES.bsc.BUSD, + usdt: ADDRESSES.bsc.USDT, + usdc: ADDRESSES.bsc.USDC, } const ownerTokens = [ [ [tokens.busd, tokens.usdt, tokens.usdc,], '0x1b3771a66ee31180906972580ade9b81afc5fcdc' ], - [ ['0x54261774905f3e6e9718f2abb10ed6555cae308a', '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c'], '0x6C341938bB75dDe823FAAfe7f446925c66E6270c' ], - [ ['0x2170ed0880ac9a755fd29b2688956bd959f933f8', '0x6f817a0ce8f7640add3bc0c1c2298635043c2423'], '0x146CD24dCc9f4EB224DFd010c5Bf2b0D25aFA9C0' ], + [ ['0x54261774905f3e6e9718f2abb10ed6555cae308a', ADDRESSES.bsc.BTCB], '0x6C341938bB75dDe823FAAfe7f446925c66E6270c' ], + [ [ADDRESSES.bsc.ETH, '0x6f817a0ce8f7640add3bc0c1c2298635043c2423'], '0x146CD24dCc9f4EB224DFd010c5Bf2b0D25aFA9C0' ], [ ['0x07663837218a003e66310a01596af4bf4e44623d'], '0x0eafaa7ed9866c1f08ac21dd0ef3395e910f7114' ], - [ ['0x049d68029688eabf473097a2fc38ef61633a3c7a'], '0xd0fBF0A224563D5fFc8A57e4fdA6Ae080EbCf3D3' ], + [ [ADDRESSES.fantom.fUSDT], '0xd0fBF0A224563D5fFc8A57e4fdA6Ae080EbCf3D3' ], [ ['0x23396cf899ca06c4472205fc903bdb4de249d6fc'], '0x2dcCe1586b1664f41C72206900e404Ec3cA130e0' ], ] diff --git a/projects/neutra-finance/index.js b/projects/neutra-finance/index.js index 0388b64d00..b379d45ee2 100644 --- a/projects/neutra-finance/index.js +++ b/projects/neutra-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); @@ -6,7 +7,7 @@ module.exports = { arbitrum: { tvl: sumTokensExport({ owner: '0x6bfa4f1dfafeb9c37e4e8d436e1d0c5973e47e25', - tokens: ['0x1addd80e6039594ee970e5872d247bf0414c8903', '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1',], + tokens: [ADDRESSES.arbitrum.fsGLP, ADDRESSES.optimism.DAI,], }), } }; \ No newline at end of file diff --git a/projects/nft20.js b/projects/nft20.js index d43f5e247f..8751ae41dc 100644 --- a/projects/nft20.js +++ b/projects/nft20.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk") const axios = require("axios") const { staking } = require("./helper/staking"); @@ -20,14 +21,14 @@ const contracts = { '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f', // univ2_factory_ethereum, '0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac' // sushiv1_factory_ethereum ], - weth: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + weth: ADDRESSES.ethereum.WETH, univ3_factory: '0x1f98431c8ad98523631ae4a59f267346ea31f984', transform: addr => addr, }, polygon: { nft20_rest_api: nft20_rest_api_base + '&network=1', uni_v2_factories: ['0xc35DADB65012eC5796536bD9864eD8773aBc74C4'], // sushiv1_factory_polygon - weth: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + weth: ADDRESSES.polygon.WETH_1, univ3_factory: [], transform: addr => `polygon:${addr}`, } @@ -76,7 +77,7 @@ function chainTvl(chain) { }) ).output - const LPs = [...uni_v2_LPs, ...uni_v3_LPs].filter(lp => lp.output !== '0x0000000000000000000000000000000000000000') + const LPs = [...uni_v2_LPs, ...uni_v3_LPs].filter(lp => lp.output !== ADDRESSES.null) const weth_LPs = ( await sdk.api.abi.multiCall({ calls: LPs.map(pool => ({ diff --git a/projects/nft360/index.js b/projects/nft360/index.js index 4f3c1339de..052fe969ec 100644 --- a/projects/nft360/index.js +++ b/projects/nft360/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); -const token_USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f"; -const token_USDT = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; +const token_USDC = ADDRESSES.telos.ETH; +const token_USDT = ADDRESSES.moonriver.USDT; const masterchef = "0x061362b6c0676fA9995A15D7fFcaef0323A9dF2F"; module.exports = { diff --git a/projects/nftx/index.js b/projects/nftx/index.js index 1d364d144b..49cdb51366 100644 --- a/projects/nftx/index.js +++ b/projects/nftx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { gql } = require("graphql-request"); const { blockQuery } = require('../helper/http') const { getTokenPrices } = require('../helper/unknownTokens') @@ -6,11 +7,11 @@ const { getChainTransform } = require('../helper/portedTokens') const config = { ethereum: { - weth: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + weth: ADDRESSES.ethereum.WETH, graphUrl: 'https://graph-proxy.nftx.xyz/c/shared/subgraphs/name/nftx-project/nftx-v2-1-mainnet' }, arbitrum: { - weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + weth: ADDRESSES.arbitrum.WETH, graphUrl: 'https://graph-proxy.nftx.xyz/shared/subgraphs/name/nftx-project/nftx-v2-arbitrum' }, } diff --git a/projects/noaharkdao/index.js b/projects/noaharkdao/index.js index da7c7ce04c..5296523773 100644 --- a/projects/noaharkdao/index.js +++ b/projects/noaharkdao/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const nrk = "0x61a47034276eb993e1c5e67bf1375ad0a48f10f6"; const stakingContract = "0xe830a08D4A794DEDB03A0B46cA7BBC8468ADc47B"; const treasury = "0x64E5dd04123BFF64a9eD7fe5b902720E63C422F0"; const treasuryTokens = [ - ["0xd586e7f844cea2f87f50152665bcbc2c279d8d70", false], // DAI + [ADDRESSES.avax.DAI, false], // DAI ["0x790c840b774d8f02ebdad9ddb74331614b535cef", true] // NRK-DAI SLP ] diff --git a/projects/nomad/index.js b/projects/nomad/index.js index c2c23909ed..fd528b033a 100644 --- a/projects/nomad/index.js +++ b/projects/nomad/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // proxy contract: // https://github.com/nomad-xyz/config/blob/main/production.json // token holdings: @@ -20,15 +21,15 @@ const TOKEN_ADDRESSES = [ }, { // USDC - 'ethereum': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' + 'ethereum': ADDRESSES.ethereum.USDC }, { // DAI - 'ethereum': '0x6B175474E89094C44Da98b954EedeAC495271d0F' + 'ethereum': ADDRESSES.ethereum.DAI }, { // USDT - 'ethereum': '0xdAC17F958D2ee523a2206206994597C13D831ec7' + 'ethereum': ADDRESSES.ethereum.USDT }, { // FXS @@ -36,11 +37,11 @@ const TOKEN_ADDRESSES = [ }, { // WETH - 'ethereum': '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' + 'ethereum': ADDRESSES.ethereum.WETH }, { // WBTC - 'ethereum': '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' + 'ethereum': ADDRESSES.ethereum.WBTC }, { // IAG diff --git a/projects/nomiswap/index.js b/projects/nomiswap/index.js index fc629b62b2..9b6858670d 100644 --- a/projects/nomiswap/index.js +++ b/projects/nomiswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require("../helper/unknownTokens"); const { stakings } = require("../helper/staking"); const sdk = require('@defillama/sdk') @@ -10,7 +11,7 @@ const factories = [constantProductFactory, stableSwapFactory].map(factory => get useDefaultCoreAssets: true })) -const NMX = "0xd32d01a43c869edcd1117c640fbdcfcfd97d9d65" +const NMX = ADDRESSES.bsc.NMX const stakingPools = [ // Staking pool diff --git a/projects/nord-finance/config.js b/projects/nord-finance/config.js index 72fc02a5ee..69cb32924c 100644 --- a/projects/nord-finance/config.js +++ b/projects/nord-finance/config.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { ethereum: { toa: [ - ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0x53E1c9750014C7Cf8303D69A3CA06A555C739DD0'], - ['0xdAC17F958D2ee523a2206206994597C13D831ec7', '0xCD4F2844b11A4515398fD2201247Cf2ed411245f'], - ['0x6B175474E89094C44Da98b954EedeAC495271d0F', '0x6Db6ABb2a55154C385e90d3fD05EE8ca46e3BA35'], - ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - ['0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - ['0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - ['0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - ['0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - ['0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], - ['0xd533a949740bb3306d119cc777fa900ba034cd52', '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], + [ADDRESSES.ethereum.USDC, '0x53E1c9750014C7Cf8303D69A3CA06A555C739DD0'], + [ADDRESSES.ethereum.USDT, '0xCD4F2844b11A4515398fD2201247Cf2ed411245f'], + [ADDRESSES.ethereum.DAI, '0x6Db6ABb2a55154C385e90d3fD05EE8ca46e3BA35'], + [ADDRESSES.ethereum.USDC, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], + [ADDRESSES.ethereum.WBTC, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], + [ADDRESSES.ethereum.WETH, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], + [ADDRESSES.ethereum.UNI, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], + [ADDRESSES.ethereum.AAVE, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], + [ADDRESSES.ethereum.MATIC, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], + [ADDRESSES.ethereum.CRV, '0xD824fDFEdbE9b99F0B27e911Ad963Ec4544dF2Dc'], ], staking: [ ['0x6e9730ecffbed43fd876a264c982e254ef05a0de', '0x2b9a023415f0feeb88597c1a7d09fdefa0ef5614'], @@ -21,16 +22,16 @@ module.exports = { }, polygon: { toa: [ - ['0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', '0x8a5Ae804Da4924081663D4C5DaB4DC9BB7092E2E'], - ['0xc2132D05D31c914a87C6611C10748AEb04B58e8F', '0xa4dbb459fb9051b976947d2d8ab74477e1720a73'], - ['0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', '0xeE2dEf710a8a0021DCbF99C4cD7f69Dc536fc57b'], - ['0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - ['0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], + [ADDRESSES.polygon.USDC, '0x8a5Ae804Da4924081663D4C5DaB4DC9BB7092E2E'], + [ADDRESSES.polygon.USDT, '0xa4dbb459fb9051b976947d2d8ab74477e1720a73'], + [ADDRESSES.polygon.DAI, '0xeE2dEf710a8a0021DCbF99C4cD7f69Dc536fc57b'], + [ADDRESSES.polygon.WBTC, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], + [ADDRESSES.polygon.WETH_1, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ['0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ['0xb33eaad8d922b1083446dc23f610c2567fb5180f', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ['0xd6df932a45c0f255f85145f286ea0b292b21c90b', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ['0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - ['0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], + [ADDRESSES.polygon.USDC, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ], staking: [ ['0xf6f85b3f9fd581c2ee717c404f7684486f057f95', '0xf0882a08D855ec8Ad3f25087dE3FB311A5344b20'], @@ -39,9 +40,9 @@ module.exports = { }, avax: { toa: [ - ['0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', '0xAA1110b6A39647f93dfBbc6345216912E1dee6FF'], - ['0xc7198437980c041c805A1EDcbA50c1Ce5db95118', '0xFbb37792f98fd57AC1f2f20b151e2db5cceF7F11'], - ['0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', '0xaF3745feCEe0a79c5F19991291Cd60B716C4F698'], + [ADDRESSES.avax.USDC_e, '0xAA1110b6A39647f93dfBbc6345216912E1dee6FF'], + [ADDRESSES.avax.USDT_e, '0xFbb37792f98fd57AC1f2f20b151e2db5cceF7F11'], + [ADDRESSES.avax.DAI, '0xaF3745feCEe0a79c5F19991291Cd60B716C4F698'], ], staking: [ ['0x8965349fb649a33a30cbfda057d8ec2c48abe2a2', '0x1929aED2175688252C9388df11B162F7303ff926'], diff --git a/projects/northpole/index.js b/projects/northpole/index.js index 22b7b93215..cf9a40dbba 100644 --- a/projects/northpole/index.js +++ b/projects/northpole/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abi.json') @@ -15,7 +16,7 @@ async function tvl(timestamp, ethBlock, chainBlocks) { })).output.map(t => t.output); return { - "0xdac17f958d2ee523a2206206994597c13d831ec7": Number(tvl) / 10 ** 12 + [ADDRESSES.ethereum.USDT]: Number(tvl) / 10 ** 12 } } diff --git a/projects/nsure/index.js b/projects/nsure/index.js index e3037a33d1..7c2172a23d 100644 --- a/projects/nsure/index.js +++ b/projects/nsure/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -22,7 +23,7 @@ const constant = { }; async function purchase(block) { - let weth = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'; + let weth = ADDRESSES.ethereum.WETH; let _purchasePool; const [surplus, treasury] = await Promise.all([ sdk.api.abi.call({ @@ -62,7 +63,7 @@ async function underwriting(block) { async function startEth(block) { let capitalAddr = '0xa6b658Ce4b1CDb4E7d8f97dFFB549B8688CAFb84' - let ethAddr = '0x0000000000000000000000000000000000000000' + let ethAddr = ADDRESSES.null let trueBalance = 0; let _ethBalance = await sdk.api.eth.getBalance({ target: capitalAddr, block: block }); diff --git a/projects/nucleon/index.js b/projects/nucleon/index.js index 5f9368b054..2c2f51f4a5 100644 --- a/projects/nucleon/index.js +++ b/projects/nucleon/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require("../helper/unknownTokens"); const MasterchefV2 = "0xeced26633b5c2d7124b5eae794c9c32a8b8e7df2"; @@ -7,7 +8,7 @@ const XCFX_TokenAddress = "0x889138644274a7dc602f25a7e7d53ff40e6d0091"; const CFX_NUT_LP_TokenAddress = "0xd9d5748cb36a81fe58f91844f4a0412502fd3105"; const CFX_XCFX_LP_TokenAddress = "0x949b78ef2c8d6979098e195b08f27ff99cb20448"; -const WCFX = "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b"; +const WCFX = ADDRESSES.conflux.WCFX; module.exports = { conflux: { diff --git a/projects/nuon/index.js b/projects/nuon/index.js index 7c15418337..8bafe1b8ee 100644 --- a/projects/nuon/index.js +++ b/projects/nuon/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { arbitrum: { - tvl: sumTokensExport({ owner: '0x27788F93eEbB53728b887f13c16AdA286e1b6e92' ,tokens: ['0x82af49447d8a07e3bd95bd0d56f35241523fbab1', '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9']}) + tvl: sumTokensExport({ owner: '0x27788F93eEbB53728b887f13c16AdA286e1b6e92' ,tokens: [ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDT]}) } } \ No newline at end of file diff --git a/projects/octane/index.js b/projects/octane/index.js index bbc89d3626..e2d10d5e3a 100644 --- a/projects/octane/index.js +++ b/projects/octane/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { pool2s } = require('../helper/pool2') const { stakings } = require('../helper/staking') const venusFinanceAbi = require("../cookfinance/venusFinanceAbi.json"); @@ -31,7 +32,7 @@ async function tvl(timestamp, _, { bsc: block }) { }), ]) if (vToken === '0xa07c5b74c9b40447a954e1466938b865b6bbea36') - token = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c' + token = ADDRESSES.bsc.WBNB else token = (await sdk.api.abi.call({ target: vToken, diff --git a/projects/oddz/index.js b/projects/oddz/index.js index ea68ae1087..f180e07082 100644 --- a/projects/oddz/index.js +++ b/projects/oddz/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); async function getTotalCollateral(pools, chain, block) { const balances = {}; @@ -21,8 +22,8 @@ const bscPools = [ // pool, token, representation [ "0x99f29c537c70897f60c9774d3f13bd081D423467", - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", - "bsc:0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + ADDRESSES.bsc.USDC, + "bsc:" + ADDRESSES.bsc.USDC, ], // oUSD ]; @@ -42,8 +43,8 @@ const bscPool2 = [ ], // sODDZ [ "0x3c2c77353E2F6AC1578807b6b2336Bf3a3CbB014", - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "bsc:0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + ADDRESSES.bsc.WBNB, + "bsc:" + ADDRESSES.bsc.WBNB, ], // ODDZ-BNB ]; @@ -52,8 +53,8 @@ const avaxPools = [ // pool, token, representation [ "0x6a165bA195D9d331b2A1C9648328d409aA599465", - "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", - "avax:0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", + ADDRESSES.avax.USDC_e, + "avax:" + ADDRESSES.avax.USDC_e, ], // oUSD ]; @@ -73,8 +74,8 @@ const avaxPool2 = [ ], // sODDZ [ "0x3c2c77353E2F6AC1578807b6b2336Bf3a3CbB014", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - "avax:0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + ADDRESSES.avax.WAVAX, + "avax:" + ADDRESSES.avax.WAVAX, ], // ODDZ-AVAX ]; diff --git a/projects/ohmw/index.js b/projects/ohmw/index.js index 070d99f238..468da5f5d4 100644 --- a/projects/ohmw/index.js +++ b/projects/ohmw/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const { getFixBalancesSync } = require('../helper/portedTokens') module.exports= { ...ohmTvl("0xE0Fe9Af0208ba444F81eDF348F23bd1A91Dc395E", [ ["0x11bbB41B3E8baf7f75773DB7428d5AcEe25FEC75", false], // USDC - ["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", false], // WETH + [ADDRESSES.ethereum.WETH, false], // WETH ["0x2569134cbe40da06C1c9c1A24A7E1D2641099cA6", true], // OHMW-ETHW SLP ], "ethpow", "0x55C07a8AB97DAF79D478fE2bC2090858F0708AFF", "0xA5174cB46A15bD7d90Af7664372b1f4207a9ABea",undefined, getFixBalancesSync('ethpow')) } \ No newline at end of file diff --git a/projects/oin-finance/index.js b/projects/oin-finance/index.js index b8aba4e409..369dccdcdc 100644 --- a/projects/oin-finance/index.js +++ b/projects/oin-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require("bignumber.js"); const axios = require("axios"); const BYTES = "100000000"; @@ -96,7 +97,7 @@ module.exports = { }, harmony: { tvl: getStaking('harmony', [ - ['0xcf664087a5bb0237a0bad6742852ec6c8d69a27a', '0xD018669755ad1e8c10807836A4729DCDEE8f036d'], // WONE + [ADDRESSES.harmony.WONE, '0xD018669755ad1e8c10807836A4729DCDEE8f036d'], // WONE ['0xb6768223895acc78efba06c28fdd8940f95a8ec2', '0x014186Ea70568806c2eEFeeaa1D2A71c18B9B95a'], // VIPER-LP ]), }, diff --git a/projects/olivedao/index.js b/projects/olivedao/index.js index a3bc049e28..77654254ac 100644 --- a/projects/olivedao/index.js +++ b/projects/olivedao/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const {transformPolygonAddress} = require('../helper/portedTokens'); const ethPool = "0x8e300739960457B532Af3bEd62475B790e0Dee5E" const usdcPool = "0x05a37e1745926D8725A6C5dbD7Fd9873Dd9E356e" -const usdcMatic = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" -const wethMatic = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" +const usdcMatic = ADDRESSES.polygon.USDC +const wethMatic = ADDRESSES.polygon.WETH_1 async function tvl(_timestamp, ethBlock, chainBlocks) { const balances = {}; diff --git a/projects/omicron/index.js b/projects/omicron/index.js index eca79c7fd2..696db9b0e9 100644 --- a/projects/omicron/index.js +++ b/projects/omicron/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x9EF8600b0f107c083F9df557e0Ddf12E071E75fe" module.exports = ohmTvl(treasury, [ //USDC - ["0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", false], + [ADDRESSES.arbitrum.USDC, false], //MIM - ["0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", false], + [ADDRESSES.arbitrum.MIM, false], //sushi LP ["0xe4ad045abb586dbdae6b11a4d2c6ff5434b93ed1", true], // diff --git a/projects/onc/index.js b/projects/onc/index.js index c8949044a2..c1b71cdddf 100644 --- a/projects/onc/index.js +++ b/projects/onc/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { @@ -5,7 +6,7 @@ module.exports = { era: { tvl: sumTokensExport({ owner: "0x581f87De7a655f50932F706873fcc7024d2309Fa", tokens: [ - "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", // USDC + ADDRESSES.era.USDC, // USDC "0x4BEf76b6b7f2823C6c1f4FcfEACD85C24548ad7e", // DAI ] }), @@ -13,25 +14,25 @@ module.exports = { kava: { tvl: sumTokensExport({ owner: "0x481654217A24B43fB63a7761d7033Fdf9361eAB6", tokens: [ - "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b", // WKAVA + ADDRESSES.kava.WKAVA, // WKAVA ] }), }, arbitrum: { tvl: sumTokensExport({ owner: "0xc9cb7AB00802165e316A6f8c241E87E0Ee72e787", tokens: [ - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC - "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", // USDT - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", // DAI + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.optimism.DAI, // DAI ] }), }, bsc: { tvl: sumTokensExport({ owner: "0x7c24b813089675cf5484afa4850FE9276D97b461", tokens: [ - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", // BUSD - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", // USDC - "0x55d398326f99059fF775485246999027B3197955", // USDT + ADDRESSES.bsc.BUSD, // BUSD + ADDRESSES.bsc.USDC, // USDC + ADDRESSES.bsc.USDT, // USDT "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", // DAI ] }), @@ -39,9 +40,9 @@ module.exports = { avax: { tvl: sumTokensExport({ owner: "0xD5a7Df8B56d285011AbE406235109c029F45797A", tokens: [ - "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", // USDC - "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", // USDT - "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", // DAI + ADDRESSES.avax.USDC, // USDC + ADDRESSES.avax.USDt, // USDT + ADDRESSES.avax.DAI, // DAI ] }), }, diff --git a/projects/ondofinance-v1/index.js b/projects/ondofinance-v1/index.js index f0094939d8..330a12b39a 100644 --- a/projects/ondofinance-v1/index.js +++ b/projects/ondofinance-v1/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -5,7 +6,7 @@ const { default: BigNumber } = require("bignumber.js"); const { getBlock } = require("../helper/http"); const NEAR_TOKEN = "0x85f17cf997934a597031b2e18a9ab6ebd4b9f6a4"; -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH = ADDRESSES.ethereum.WETH; async function addEthBalances(addresses, block, balances) { await Promise.all( @@ -60,7 +61,7 @@ const data = { "0xc770eefad204b5180df6a14ee197d99d808ee52d", "0xc7283b66eb1eb5fb86327f08e1b5816b0720212b", "0xa693B19d2931d498c5B318dF961919BB4aee87a5", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + ADDRESSES.ethereum.WETH, "0x85f17cf997934a597031b2e18a9ab6ebd4b9f6a4", ], }; diff --git a/projects/one-ring/index.js b/projects/one-ring/index.js index 0a56ed8608..f8e671959c 100644 --- a/projects/one-ring/index.js +++ b/projects/one-ring/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { @@ -5,9 +6,9 @@ const { transformPolygonAddress, } = require("../helper/portedTokens"); const VAULT_CONTRACT_FANTOM = "0x4e332D616b5bA1eDFd87c899E534D996c336a2FC"; -const DAI_ADDRSSS_FANTOM = "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E"; +const DAI_ADDRSSS_FANTOM = ADDRESSES.fantom.DAI; const VAULT_CONTRACT_POLYGON = "0x6C89E1cD0aa5F62cA2260709BC3895A4Cb735f6c"; -const DAI_ADDRESS_POLYGON = "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063"; +const DAI_ADDRESS_POLYGON = ADDRESSES.polygon.DAI; async function tvlFantom(timestamp, block, chainBlocks) { const balances = {}; diff --git a/projects/onedaofinance/index.js b/projects/onedaofinance/index.js index ff822425b4..fdccd8a4a4 100644 --- a/projects/onedaofinance/index.js +++ b/projects/onedaofinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const { getFixBalancesSync } = require('../helper/portedTokens') @@ -17,7 +18,7 @@ module.exports= { ["0x4f658217f163509115b6e1fbba37cd9aefbdba12", true], // ODAO-DAI SLP ["0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f", false], // USDT ["0x985458e523db3d53125813ed68c274899e9dfab4", false], // USDC - ["0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", false], // WONE + [ADDRESSES.harmony.WONE, false], // WONE ["0x224e64ec1bdce3870a6a6c777edd450454068fec", false] // WUST ], "harmony", "0x9cAc73eA219e5F8a96485c937E2C8A617f7F4f37", "0x947394294F75D7502977AC6813FD99f77C2931ec",addr=>{ return replacements[addr] || `harmony:${addr}`}, getFixBalancesSync('harmony')) diff --git a/projects/optidoge/index.js b/projects/optidoge/index.js index b920dce941..5952b44af6 100644 --- a/projects/optidoge/index.js +++ b/projects/optidoge/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const {pool2Exports} = require("../helper/pool2") const {stakingUnknownPricedLP} = require("../helper/staking") -const weth = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const weth = ADDRESSES.ethereum.WETH async function tvl(time, _ethBlock, {optimism: block}){ const eth = await sdk.api.eth.getBalance({ target: '0xc911523c466b4E1dADE1bac9A2D4ceA3F9E1A2ae', diff --git a/projects/optifi/index.js b/projects/optifi/index.js index 4dbb1a83dc..b203bea557 100644 --- a/projects/optifi/index.js +++ b/projects/optifi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { Program } = require("@project-serum/anchor"); const { getProvider, sumTokens2, } = require("../helper/solana"); const idl = require('./idl.json') @@ -14,7 +15,7 @@ async function tvl() { } const tokens = [ - 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC + ADDRESSES.solana.USDC, // USDC ] const serumPCVaults = [ diff --git a/projects/optinyan/index.js b/projects/optinyan/index.js index e4e25bf553..a075ac1808 100644 --- a/projects/optinyan/index.js +++ b/projects/optinyan/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const weth = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const weth = ADDRESSES.ethereum.WETH async function tvl(time, _ethBlock, {optimism: block}){ const eth = await sdk.api.eth.getBalance({ target: '0x6F7Fe8b33358a3F4313421186b98CA78127C6DB6', diff --git a/projects/opyn-gamma/gamma_avax.js b/projects/opyn-gamma/gamma_avax.js index 486cacc762..a3c07443f3 100644 --- a/projects/opyn-gamma/gamma_avax.js +++ b/projects/opyn-gamma/gamma_avax.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const marginPool = "0xCCF6629aEaB734E621Cc59EBb0297196774fDb9D"; -const wavax = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7'.toLowerCase() +const wavax = ADDRESSES.avax.WAVAX.toLowerCase() module.exports = sumTokensExport({ owner: marginPool, tokens: [wavax]}) diff --git a/projects/opyn-gamma/gamma_polygon.js b/projects/opyn-gamma/gamma_polygon.js index 1dd5d44ab9..5d90744054 100644 --- a/projects/opyn-gamma/gamma_polygon.js +++ b/projects/opyn-gamma/gamma_polygon.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const marginPool = "0x30ae5debc9edf60a23cd19494492b1ef37afa56d"; -const WETH = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"; +const WETH = ADDRESSES.polygon.WETH_1; const collateralAssets = ['0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', - '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', - '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', WETH, ] + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.WBTC, WETH, ] const { sumTokensExport } = require('../helper/unwrapLPs') diff --git a/projects/opyn-squeeth/index.js b/projects/opyn-squeeth/index.js index b7f8559505..c33c840b9d 100644 --- a/projects/opyn-squeeth/index.js +++ b/projects/opyn-squeeth/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const START_BLOCK = 13982541; const controller = "0x64187ae08781B09368e6253F9E94951243A493D5".toLowerCase(); -const ETH = '0x0000000000000000000000000000000000000000'; -const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'.toLowerCase(); +const ETH = ADDRESSES.null; +const WETH = ADDRESSES.ethereum.WETH.toLowerCase(); const uniPool = '0x82c427adfdf2d245ec51d8046b41c4ee87f0d29c'; diff --git a/projects/oraichain.js b/projects/oraichain.js index 6125c68852..26db097ac4 100644 --- a/projects/oraichain.js +++ b/projects/oraichain.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("./helper/unwrapLPs") const { transformBscAddress } = require("./helper/portedTokens"); const BigNumber = require('bignumber.js'); const { sumSingleBalance } = require("@defillama/sdk/build/generalUtil"); -const usdtAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7'; +const usdtAddress = ADDRESSES.ethereum.USDT; const oraichainToken = { 'bsc': '0xa325ad6d9c92b55a3fc5ad7e412b1518f96441c0', diff --git a/projects/orbitbridge/index.js b/projects/orbitbridge/index.js index 654b92cf20..d8c2c57980 100644 --- a/projects/orbitbridge/index.js +++ b/projects/orbitbridge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { get } = require('../helper/http') const { getConfig } = require('../helper/cache') @@ -24,17 +25,17 @@ const vaults = { const farms = { bsc: [ - '0x0000000000000000000000000000000000000000',// BNB - '0x55d398326f99059ff775485246999027b3197955',// USDT-B - '0xe9e7cea3dedca5984780bafc599bd69add087d56',// BUSD + ADDRESSES.null,// BNB + ADDRESSES.bsc.USDT,// USDT-B + ADDRESSES.bsc.BUSD,// BUSD '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82',// CAKE ], ethereum: [ - '0x0000000000000000000000000000000000000000',// ETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',// USDT - '0x6B175474E89094C44Da98b954EedeAC495271d0F',// DAI - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',// USDC - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',// WBTC + ADDRESSES.null,// ETH + ADDRESSES.ethereum.USDT,// USDT + ADDRESSES.ethereum.DAI,// DAI + ADDRESSES.ethereum.USDC,// USDC + ADDRESSES.ethereum.WBTC,// WBTC ] } @@ -111,7 +112,7 @@ module.exports = { tvl: async () => { let ton_vault = "EQAtkbV8ysI75e7faO8Ihu0mFtmsg-osj7gmrTg_mljVRccy" const res = await get(`https://tonapi.io/v1/account/getInfo?account=${ton_vault}`) - return await transformBalances('ton', {"0x0000000000000000000000000000000000000000": res.balance}) + return await transformBalances('ton', {[ADDRESSES.null]: res.balance}) } }, } \ No newline at end of file diff --git a/projects/orcadao/index.js b/projects/orcadao/index.js index 50737ff714..2ab76ac03e 100644 --- a/projects/orcadao/index.js +++ b/projects/orcadao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -18,7 +19,7 @@ const banksAndCollateral = [ ["0x330cc45c8f60fef7f9d271a7512542b3d201a48d","0x64D56b4B6C844015EC07e52A1267D5d5d4F4E5BD"], // YAK BENQI WBTC ["0x9669fe1ea0d8883661289461b90a10b71ae400ee","0xEa03cDCdD912522400d21Ee89A5bC46Bffe11AC3"], // YAK BENQI DAI ["0x07b0e11d80ccf75cb390c9be6c27f329c119095a","0xAf8d16500A58b868C34be9106d674b820d67C979"], // YAK BENQI USDT - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7","0xC029713E92383426C9b387b124C0BF6271d08b80"], // AVAX + [ADDRESSES.avax.WAVAX,"0xC029713E92383426C9b387b124C0BF6271d08b80"], // AVAX ["0x8b414448de8b609e96bd63dcf2a8adbd5ddf7fdd","0x2b583646EC93245562Fd08A3b5f44Aa55417766B"], // YAK BENQI AVAX ["0x0eac97a78a93b75549d49145df41dbe9cd520874","0xd694F97dd5874fA4e712FDFB781231D93642D29b"], // YAK BENQI USDC ["0x957ca4a4aa7cdc866cf430bb140753f04e273bc0","0x8aee038726715d78C49dFb2f12e76DE70C2F48eC"], // YAK AAVE AVAX @@ -28,22 +29,22 @@ const banksAndCollateral = [ ["0x3a91a592a06390ca7884c4d9dd4cba2b4b7f36d1","0xa1A34E32c24911daA45e338dB9D785c1b323F280"], // YAK JOE ["0x0f7f48d4b66bf5a53d4f21fa6ffca45f70cef770","0x18419976Ba05dd9cE44544B8d91590704aFA4a29"], // YAK AAVE WBTC ["0xbf5bffbf7d94d3b29abe6eb20089b8a9e3d229f7","0xC09caDDA753c54292BeB1D10429bD175556b8b5E"], // YAK QI - ["0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab","0x4805D6563B36a02C5012c11d6e15552f50066d58"], // WETH + [ADDRESSES.avax.WETH_e,"0x4805D6563B36a02C5012c11d6e15552f50066d58"], // WETH ["0x50b7545627a5162f82a992c33b87adc75187b218","0x1eA60d781376C06693dFB21d7e5951cAEc13F7E4"], // WBTC ] const translateToken = { - "0x957ca4a4aa7cdc866cf430bb140753f04e273bc0": "avax:0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + "0x957ca4a4aa7cdc866cf430bb140753f04e273bc0": "avax:" + ADDRESSES.avax.WAVAX, "0x0f7f48d4b66bf5a53d4f21fa6ffca45f70cef770": "avax:0x50b7545627a5162f82a992c33b87adc75187b218", - "0xb634a71a54d3382ff6896eb22244b4a4e54c0a82": "avax:0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", - "0x3a91a592a06390ca7884c4d9dd4cba2b4b7f36d1": "avax:0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", + "0xb634a71a54d3382ff6896eb22244b4a4e54c0a82": "avax:" + ADDRESSES.avax.WETH_e, + "0x3a91a592a06390ca7884c4d9dd4cba2b4b7f36d1": "avax:" + ADDRESSES.avax.JOE, "0x8b414448de8b609e96bd63dcf2a8adbd5ddf7fdd": "avax:0x8729438eb15e2c8b576fcc6aecda6a148776c0f5", "0x4084f32a91f4d8636ca08386efe70c6e302f1d84": "avax:0x5947bb275c521040051d82396192181b413227a3", - "0x9669fe1ea0d8883661289461b90a10b71ae400ee": "avax:0xd586e7f844cea2f87f50152665bcbc2c279d8d70", + "0x9669fe1ea0d8883661289461b90a10b71ae400ee": "avax:" + ADDRESSES.avax.DAI, "0x330cc45c8f60fef7f9d271a7512542b3d201a48d": "avax:0x50b7545627a5162f82a992c33b87adc75187b218", - "0x07b0e11d80ccf75cb390c9be6c27f329c119095a": "avax:0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", - "0x0eac97a78a93b75549d49145df41dbe9cd520874": "avax:0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", - "0x7d2d076000611e44740d636843384412399e31b9": "avax:0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", + "0x07b0e11d80ccf75cb390c9be6c27f329c119095a": "avax:" + ADDRESSES.avax.USDt, + "0x0eac97a78a93b75549d49145df41dbe9cd520874": "avax:" + ADDRESSES.avax.USDC_e, + "0x7d2d076000611e44740d636843384412399e31b9": "avax:" + ADDRESSES.avax.WETH_e, "0xbf5bffbf7d94d3b29abe6eb20089b8a9e3d229f7": "avax:0x8729438eb15e2c8b576fcc6aecda6a148776c0f5" } @@ -76,7 +77,7 @@ async function borrowed(timestamp, block, chainBlocks) { } const treasuryContract = "0x10131d4f3193a59A46d3ab57D765f2604e77B4E3"; -const usdc = "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664" +const usdc = ADDRESSES.avax.USDC_e const ocraAvaiPGL = "0x1A9Bd67c82C0e8E47C3ad2FA772FCb9B7A831A37"; const orcaWavaxPGL = "0x73e6CB72a79dEa7ed75EF5eD6f8cFf86C9128eF5"; const avaiUsdc = "0xeD7a2B4054757Cfdb632Af15Ad528624F0fFf3B0"; diff --git a/projects/orcus/index.js b/projects/orcus/index.js index 0859e1c732..84c5a3f6b3 100644 --- a/projects/orcus/index.js +++ b/projects/orcus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/unwrapLPs') const { getTokenPrices } = require('../helper/unknownTokens') const { getFixBalances } = require('../helper/portedTokens') @@ -8,8 +9,8 @@ const sdk = require('@defillama/sdk') const chain = 'astar' const MASTER_CHEF = '0xfa1Cfa75bFae8303A9Fe8aF711AacD59015eE6d4' -const USDC = '0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98' -const ibUSDC = '0xC404E12D3466acCB625c67dbAb2E1a8a457DEf3c' +const USDC = ADDRESSES.moonbeam.USDC +const ibUSDC = ADDRESSES.astar.lUSDC const ORU = '0xCdB32eEd99AA19D39e5d6EC45ba74dC4afeC549F' const STAKE_ADDRESS = '0x243e038685209B9B68e0521bD5838C6C937d666A' const BANK_SAFE = '0xd89dEa2daC8Fb73F4107C2cbeA5Eb36dab511F64' diff --git a/projects/ordernchaos/index.js b/projects/ordernchaos/index.js index 265e8f134a..6ccd1a3b0d 100644 --- a/projects/ordernchaos/index.js +++ b/projects/ordernchaos/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getChainTransform} = require("../helper/portedTokens") const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); -const DAI = "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70" -const USDC = "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E" -const USDT = "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7" +const DAI = ADDRESSES.avax.DAI +const USDC = ADDRESSES.avax.USDC +const USDT = ADDRESSES.avax.USDt const collateralAddr = [ diff --git a/projects/oreoswap/index.js b/projects/oreoswap/index.js index 528b1073fc..634dfcd861 100644 --- a/projects/oreoswap/index.js +++ b/projects/oreoswap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') const uniTvl = getUniTVL({ factory: '0x20fAfD2B0Ba599416D75Eb54f48cda9812964f46', useDefaultCoreAssets: true }) const masterchef = '0xa481384653c484901b301634086c8625e550bbec' const masterchefOld = '0xeb66b69d1cc6ef04575a11d4b0a6427b1cdacc45' const oreo = '0x319e222De462ac959BAf2aEc848697AeC2bbD770' -const weth = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' +const weth = ADDRESSES.arbitrum.WETH module.exports = { misrepresentedTokens: true, diff --git a/projects/orio/index.js b/projects/orio/index.js index 5ccc9bdf27..5ce2a5d348 100644 --- a/projects/orio/index.js +++ b/projects/orio/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const chain = 'ethereum' @@ -6,10 +7,10 @@ async function tvl(_, _b, { [ chain]: block }) { '0x335DE1cB210B6d981EF3c5253ed7A39456Ee8F1D' ] const tokens = [ - '0x4Fabb145d64652a948d72533023f6E7A623C7C53',//busd - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',//usdc - '0xdac17f958d2ee523a2206206994597c13d831ec7',//usdt - '0x6b175474e89094c44da98b954eedeac495271d0f',//dai + ADDRESSES.ethereum.BUSD,//busd + ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.USDT,//usdt + ADDRESSES.ethereum.DAI,//dai '0x8e870d67f660d95d5be530380d0ec0bd388289e1',//usdp ] return sumTokens2({ chain, block, owners, tokens, }) diff --git a/projects/orion-money/index.js b/projects/orion-money/index.js index 4db42e1f8f..9200342341 100644 --- a/projects/orion-money/index.js +++ b/projects/orion-money/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require('../helper/unwrapLPs') const fundedContracts = [ '0xefe0fed2b728b9711030e7643e98477957df9809', //TransparentUpgradeableProxy '0xd9184981bbab68e05eafd631dd2f8cbaf47e3e13' //TransparentUpgradeableProxy ]; const stable = [ - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', //'USDC' : - '0xdac17f958d2ee523a2206206994597c13d831ec7', //'USDT' : - '0x6b175474e89094c44da98b954eedeac495271d0f', //'DAI' : + ADDRESSES.ethereum.USDC, //'USDC' : + ADDRESSES.ethereum.USDT, //'USDT' : + ADDRESSES.ethereum.DAI, //'DAI' : '0xa47c8bf37f92abed4a126bda807a7b7498661acd', //'wUST' : - '0x4fabb145d64652a948d72533023f6e7a623c7c53', //'BUSD' : + ADDRESSES.ethereum.BUSD, //'BUSD' : '0x853d955acef822db058eb8505911ed77f175b99e' //'FRAX' : ]; const anchor = [ diff --git a/projects/overnight-daiPlus/index.js b/projects/overnight-daiPlus/index.js index 17a8009338..8bf8a4b570 100644 --- a/projects/overnight-daiPlus/index.js +++ b/projects/overnight-daiPlus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const m2m = { @@ -6,8 +7,8 @@ const m2m = { } const assets = { - optimism: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", //DAI - arbitrum: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", //DAI + optimism: ADDRESSES.optimism.DAI, //DAI + arbitrum: ADDRESSES.optimism.DAI, //DAI } const abi = "uint256:totalNetAssets" diff --git a/projects/overnight-usdPlus/index.js b/projects/overnight-usdPlus/index.js index af2f34cfe7..3bc1210b19 100644 --- a/projects/overnight-usdPlus/index.js +++ b/projects/overnight-usdPlus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const m2m = { @@ -9,11 +10,11 @@ const m2m = { } const assets = { - polygon: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", //USDC - bsc: "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", //BUSD - optimism: "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", //USDC - arbitrum: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", //USDC - era: "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4", + polygon: ADDRESSES.polygon.USDC, //USDC + bsc: ADDRESSES.bsc.BUSD, //BUSD + optimism: ADDRESSES.optimism.USDC, //USDC + arbitrum: ADDRESSES.arbitrum.USDC, //USDC + era: ADDRESSES.era.USDC, } const abi = "uint256:totalNetAssets" diff --git a/projects/overnight-usdtPlus/index.js b/projects/overnight-usdtPlus/index.js index b9bbbfa59d..7b6e5ecf18 100644 --- a/projects/overnight-usdtPlus/index.js +++ b/projects/overnight-usdtPlus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const m2m = { @@ -5,7 +6,7 @@ const m2m = { } const assets = { - bsc: "0x55d398326f99059fF775485246999027B3197955", //USDT + bsc: ADDRESSES.bsc.USDT, //USDT } const abi = "uint256:totalNetAssets" diff --git a/projects/oxygen/index.js b/projects/oxygen/index.js index 68143effc6..455bb17b7e 100644 --- a/projects/oxygen/index.js +++ b/projects/oxygen/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getProvider } = require('../helper/solana') const BigNumber = require('bignumber.js') const { PublicKey } = require('@solana/web3.js') @@ -16,12 +17,12 @@ const MINTS = [ }, { symbol: 'SOL', - mintAddress: 'So11111111111111111111111111111111111111112', + mintAddress: ADDRESSES.solana.SOL, decimals: 9, }, { symbol: 'USDC', - mintAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', + mintAddress: ADDRESSES.solana.USDC, decimals: 6, }, { @@ -31,7 +32,7 @@ const MINTS = [ }, { symbol: 'USDT', - mintAddress: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', + mintAddress: ADDRESSES.solana.USDT, decimals: 6, }, ]; diff --git a/projects/paladin-dao/index.js b/projects/paladin-dao/index.js index d925661e7e..ed1cd89d60 100644 --- a/projects/paladin-dao/index.js +++ b/projects/paladin-dao/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const token = "0xb4da413d7643000a84c5b62bfb1bf2077604b165"; const tokenStake = "0x7B73d56c53059699003ac11aF4308f6bEb4877FF"; const treasury = "0x6382192259f45a7acDa2A08cc30ce9FaF0e1863E"; const tokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0x103900036e483c85ea4748b6733f621b8df21e2d", true] // PAL-BUSD ]; diff --git a/projects/paladinfinance/index.js b/projects/paladinfinance/index.js index c63a6aecc9..f38de2ad1f 100644 --- a/projects/paladinfinance/index.js +++ b/projects/paladinfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumSingleBalance } = require("@defillama/sdk/build/generalUtil"); const abi = require("./abi.json"); @@ -48,7 +49,7 @@ async function ethTvl(timestamp, block) { //If stkAAVE address then change token address to AAVE address if (token === "0x4da27a545c0c5B758a6BA100e3a049001de870f5") { - token = "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"; + token = ADDRESSES.ethereum.AAVE; } let tvl = BigNumber(underlyingBalances.output[i].output).plus(totalBorrowed.output[i].output).minus(totalReserve.output[i].output).toFixed(0); sumSingleBalance(balances, token, tvl) diff --git a/projects/palmaswap/index.js b/projects/palmaswap/index.js index 4d529d894b..fbcaf19e97 100644 --- a/projects/palmaswap/index.js +++ b/projects/palmaswap/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') const uniTvl = getUniTVL({ factory: '0xb8b9a4d9beE1fB41b03edfa47640b1dadF49EDd2', useDefaultCoreAssets: true, }) const masterchef = '0x41338973c89Aa4bb47aFDCb29c5D74F81b8416A4' const palma = '0xC2B82A3b2240509D54FbF3f1AC9fc2cA094a6f9c' -const weth = '0x40375C92d9FAf44d2f9db9Bd9ba41a3317a2404f' +const weth = ADDRESSES.core.WCORE module.exports = { misrepresentedTokens: true, diff --git a/projects/papa-dao/index.js b/projects/papa-dao/index.js index 926f63b937..d601d5eda2 100644 --- a/projects/papa-dao/index.js +++ b/projects/papa-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0x3C8e800B9f12771A5f150D0943De968ABc7A7bE1"; @@ -5,9 +6,9 @@ module.exports = ohmTvl(treasuryAddress, [ //MIM ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], //USDT.e - ["0xc7198437980c041c805a1edcba50c1ce5db95118", false], + [ADDRESSES.avax.USDT_e, false], //wAVAX - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], + [ADDRESSES.avax.WAVAX, false], //JOE LP ["0xa03a99cd3d553fe9ebbccecabcb8c47100482f72", true] , //JOE LP diff --git a/projects/paperdao/index.js b/projects/paperdao/index.js index c69b6cccdc..d70f520098 100644 --- a/projects/paperdao/index.js +++ b/projects/paperdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require("../helper/compound"); const blacklist = [ @@ -10,5 +11,5 @@ const blacklist = [ module.exports = { methodology: `As in Compound Finance, TVL counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are counted as "Borrowed" TVL and can be toggled towards the regular TVL.`, - ethpow: compoundExports("0x5e496e7F241B13c514A78B7E840bc3cC744D7215", "ethpow", "0xb9e008f2C039fB994C8adD806F8aF709899aA95e", '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' , undefined, undefined, {blacklistedTokens: blacklist}) + ethpow: compoundExports("0x5e496e7F241B13c514A78B7E840bc3cC744D7215", "ethpow", "0xb9e008f2C039fB994C8adD806F8aF709899aA95e", ADDRESSES.ethereum.WETH , undefined, undefined, {blacklistedTokens: blacklist}) } \ No newline at end of file diff --git a/projects/parasset/index.js b/projects/parasset/index.js index 1f4e5dca71..ba61075e30 100644 --- a/projects/parasset/index.js +++ b/projects/parasset/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakings } = require("../helper/staking"); const PUSDMorPool = "0x505eFcC134552e34ec67633D1254704B09584227"; // Mortgage-PUSD pool contract const PETHMorPool = "0x9a5C88aC0F209F284E35b4306710fEf83b8f9723"; //Mortgage-PETH pool contract const NEST = "0x04abeda201850ac0124161f037efd70c74ddc74c"; -const ETH = "0x0000000000000000000000000000000000000000"; +const ETH = ADDRESSES.null; const PUSDInsPool = "0x79025438C04Ae6A683Bcc7f7c51a01Eb4C2DDabA"; //Insurance-USD pool contract const PUSD = "0xCCEcC702Ec67309Bc3DDAF6a42E9e5a6b8Da58f0"; -const USDT = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; +const USDT = ADDRESSES.ethereum.USDT; const PETHInsPool = "0x0bd32fFC80d5B98E403985D4446AE3BA67528C2e"; //Insurance-ETH pool contract const PETH = "0x53f878fb7ec7b86e4f9a0cb1e9a6c89c0555fbbd"; diff --git a/projects/peakdefi/index.js b/projects/peakdefi/index.js index 6692a9f1ba..5562ba3b41 100644 --- a/projects/peakdefi/index.js +++ b/projects/peakdefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking'); @@ -5,7 +6,7 @@ const { staking } = require('../helper/staking'); const peakAddress = '0x630d98424eFe0Ea27fB1b3Ab7741907DFFEaAd78' const tokens = [ - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + ADDRESSES.ethereum.USDC, ] const funds = { diff --git a/projects/peardao/index.js b/projects/peardao/index.js index e7048efcd0..dc18cc4df3 100644 --- a/projects/peardao/index.js +++ b/projects/peardao/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require('../helper/staking'); const { pool2 } = require('../helper/pool2'); const { sumTokensExport } = require('../helper/unwrapLPs') const PEX_TOKEN_CONTRACT = '0x6a0b66710567b6beb81A71F7e9466450a91a384b'; -const BUSD_TOKEN_CONTRACT = '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56'; -const USDT_TOKEN_CONTRACT = '0x55d398326f99059ff775485246999027b3197955'; -const USDC_TOKEN_CONTRACT = '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d'; -const WBNB_TOKEN_CONTRACT = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c'; -const BTCB_TOKEN_CONTRACT = '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c'; +const BUSD_TOKEN_CONTRACT = ADDRESSES.bsc.BUSD; +const USDT_TOKEN_CONTRACT = ADDRESSES.bsc.USDT; +const USDC_TOKEN_CONTRACT = ADDRESSES.bsc.USDC; +const WBNB_TOKEN_CONTRACT = ADDRESSES.bsc.WBNB; +const BTCB_TOKEN_CONTRACT = ADDRESSES.bsc.BTCB; const USTC_TOKEN_CONTRACT = '0x23396cF899Ca06c4472205fC903bDB4de249D6fC'; const PEX_BNB_LP_CONTRACT = '0x5ca96E8bDe0Bc587DaC9e02422Fd205b1102DAa4'; diff --git a/projects/pegasusdao.js b/projects/pegasusdao.js index 8b971fa6bb..8bc80b6bc6 100644 --- a/projects/pegasusdao.js +++ b/projects/pegasusdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { tombTvl } = require("./helper/tomb"); const sdk = require("@defillama/sdk"); const { getChainTransform } = require("./helper/portedTokens"); @@ -15,7 +16,7 @@ const shareLps = "0x72c1f5fb7e5513a07e1ff663ad861554887a0a0a"; const genesisPool = "0x64bfCBe4480B53E8234Ca258a96720F29fe6A6fB"; const genesisTokens = [ "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23", - "0xc21223249ca28397b4b6541dffaecc539bff0c59", + ADDRESSES.cronos.USDC, "0x97749c9b61f878a880dfe312d2594ae07aed7656", "0xb8df27c687c6af9afe845a2afad2d01e199f4878", "0x43713f13a350d104319126c13cd7402822a44f6b" diff --git a/projects/pegasusdao/index.js b/projects/pegasusdao/index.js index bffc637124..e1240030ca 100644 --- a/projects/pegasusdao/index.js +++ b/projects/pegasusdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {ohmTvl} = require("../helper/ohm"); const sus = "0x5b5Fe1238aca91C65683aCd7f9D9Bf922e271EAA"; @@ -5,6 +6,6 @@ const stakingContract = ""; const treasury = "0x7310855e0Aa8B110925fdE0100b01c62984d2a3C"; const treasuryTokens = [ - ["0xc21223249CA28397B4B6541dfFaEcC539BfF0c59", false], // USDC + [ADDRESSES.cronos.USDC, false], // USDC ["0xAE182Db2F7897D7678c5099C1e52A1c802580827", true], // SUS-USDC CRONA LPS ] \ No newline at end of file diff --git a/projects/pegasusfinance/index.js b/projects/pegasusfinance/index.js index 61acf32a6c..98aee5bb23 100644 --- a/projects/pegasusfinance/index.js +++ b/projects/pegasusfinance/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const LIQUIDITY_POOL_CONTRACT = "0x7398c321449d836cec83582a678ccb8650360a18"; -const WETH_OPTIMISM = "0x4200000000000000000000000000000000000006"; +const WETH_OPTIMISM = ADDRESSES.tombchain.FTM; module.exports = { methodology: "WETH supplied to liquidity pool + leftover weth in treasury", diff --git a/projects/pembrock/index.js b/projects/pembrock/index.js index 90c9ae58ef..58c357215b 100644 --- a/projects/pembrock/index.js +++ b/projects/pembrock/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { BigNumber } = require('bignumber.js'); const { call, addTokenBalances, sumSingleBalance } = require('../helper/chain/near'); @@ -41,7 +42,7 @@ async function tvl() { async function staking() { const balances = {}; - sumSingleBalance(balances, "token.pembrock.near", await call('staking.v1.pembrock.near', "get_total_staked", {})) + sumSingleBalance(balances, ADDRESSES.near.PEMBROCK, await call('staking.v1.pembrock.near', "get_total_staked", {})) return balances; } diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index 134fddbef2..4a944260f3 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, sumTokensExport, } = require('../helper/unwrapLPs'); const config = { @@ -5,9 +6,9 @@ const config = { [[nullAddress], '0x882260324AD5A87bF5007904B4A8EF87023c856A'], // ETH [ [ - '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC + ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.WBTC, // WBTC ], '0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83' ] diff --git a/projects/percent/index.js b/projects/percent/index.js index 9391d3b968..6d141a89f8 100644 --- a/projects/percent/index.js +++ b/projects/percent/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { stakings } = require("../helper/staking"); @@ -5,7 +6,7 @@ const { getCompoundV2Tvl } = require("../helper/compound"); const comptroller = "0xf47dD16553A934064509C40DC5466BBfB999528B"; const pETH = "0x45F157b3d3d7C415a0e40012D64465e3a0402C64"; -const pETHEquivalent = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const pETHEquivalent = ADDRESSES.ethereum.WETH; const pool2Contract = "0x23b53026187626Ed8488e119767ACB2Fe5F8de4e"; const lpOfPool2 = "0xEB85B2E12320a123d447Ca0dA26B49E666b799dB"; diff --git a/projects/perp/index.js b/projects/perp/index.js index 2ea517f9bd..278930687f 100644 --- a/projects/perp/index.js +++ b/projects/perp/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getChainTransform } = require('../helper/portedTokens'); const { staking } = require("../helper/staking"); const insuranceFund = "0x8C29F6F7fc1999aB84b476952E986F974Acb3824" const clearingHouse = "0x5d9593586b4B5edBd23E7Eba8d88FD8F09D83EBd" -const usdcXdai = "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83" +const usdcXdai = ADDRESSES.xdai.USDC const perpToken = "0xbC396689893D065F41bc2C6EcbeE5e0085233447" const stakingContract = "0x0f346e19F01471C02485DF1758cfd3d624E399B4" @@ -35,7 +36,7 @@ module.exports = { staking: staking(stakingContract, perpToken) }, optimism:{ - tvl: staking("0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", "0x7f5c764cbc14f9669b88837ca1490cca17c31607", "optimism") + tvl: staking("0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", ADDRESSES.optimism.USDC, "optimism") }, } \ No newline at end of file diff --git a/projects/perp88/index.js b/projects/perp88/index.js index 91f9eecbb2..3e4413ec72 100644 --- a/projects/perp88/index.js +++ b/projects/perp88/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const tokens = { "WMATIC": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", - "WETH": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "WBTC": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - "DAI": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "USDT": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" + "WETH": ADDRESSES.polygon.WETH_1, + "WBTC": ADDRESSES.polygon.WBTC, + "DAI": ADDRESSES.polygon.DAI, + "USDC": ADDRESSES.polygon.USDC, + "USDT": ADDRESSES.polygon.USDT } const POOL_DIAMOND_CONTRACT = '0xE7D96684A56e60ffBAAe0fC0683879da48daB383'; diff --git a/projects/phezzan/index.js b/projects/phezzan/index.js index 24a4b00ea6..667ba03854 100644 --- a/projects/phezzan/index.js +++ b/projects/phezzan/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/unknownTokens') const { toUSDTBalances } = require('../helper/balances') const { get } = require('../helper/http') @@ -18,8 +19,8 @@ async function offers() { const Contracts = { kava: { - wkava: "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b", - usdc: "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", + wkava: ADDRESSES.kava.WKAVA, + usdc: ADDRESSES.telos.ETH, perpV1Result: "0x46bC4858F5BEE5AeB09bEB5906D7eFE92Ba50851", fundingResult: "0xDe7570E5835B6045C6AB360222887bAED21Be5EA", // Funding P1P1TradeResult: "0x49Ef8ca9A80B701E470EB70C835b361a99091278", // Staking diff --git a/projects/phission-finance/index.js b/projects/phission-finance/index.js index 36040ffdb0..af8f50d528 100644 --- a/projects/phission-finance/index.js +++ b/projects/phission-finance/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unknownTokens') -const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; +const WETH = ADDRESSES.ethereum.WETH; const GOV_POOL = '0x18174E80335B9fCbc8ac0AB7f40F25aba878ccCC'; const SPLIT_CONTRACT = '0x5b38A73f9dB3F5e12BB4dCb5a434FB3bd3972E53'; const STAKING_CONTRACT = '0x569a157eac744b87a42314e8fc03a2e648ea33a2' diff --git a/projects/phoenix-bonds/index.js b/projects/phoenix-bonds/index.js index 9d67711c6c..f7611db8eb 100644 --- a/projects/phoenix-bonds/index.js +++ b/projects/phoenix-bonds/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { call } = require('../helper/chain/near') async function tvl() { const linear_price = await call( - 'linear-protocol.near', + ADDRESSES.near.LINA, 'ft_price', {} ); diff --git a/projects/phoenix/index.js b/projects/phoenix/index.js index bbd9cabfc1..91cc615959 100644 --- a/projects/phoenix/index.js +++ b/projects/phoenix/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); @@ -8,7 +9,7 @@ const bscpool = '0xBB8dA4ed33388A0eAc442eD1f28474413FC9d7a7'; const wanpool = '0xBB8dA4ed33388A0eAc442eD1f28474413FC9d7a7'; //const wanOptionFactorySc = new wanWeb3.eth.Contract(optionFactoryAbi,wanOptionFactory); -let usd = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +let usd = ADDRESSES.ethereum.USDC; async function polygon(timestamp, _, {polygon: block }) { let totalSupply = (await sdk.api.abi.call({ diff --git a/projects/photon-protocol/index.js b/projects/photon-protocol/index.js index 29f3055529..0028dd3dab 100644 --- a/projects/photon-protocol/index.js +++ b/projects/photon-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakingUnknownPricedLP } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -6,7 +7,7 @@ const stakingContract = "0x81177472Ce36A9b1AB573804CD215C72cEb76F36"; const photonbusd = "0xEBAa17dA7D5C616441290669E9D2c982c8B1Da25"; //PHOTON-BUSD const treasury = "0x0f90591b01DE6F832e8B8E4ec3525efD423BCaD1"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ]; async function tvl (timestamp, block, chainBlocks) { diff --git a/projects/pidao-finance/index.js b/projects/pidao-finance/index.js index 70a7d6339b..cc57fb54ac 100644 --- a/projects/pidao-finance/index.js +++ b/projects/pidao-finance/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x458B737d87C40252EC11b160C76bb1C53F248b28" module.exports = ohmTvl(treasury, [ //busd - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], + [ADDRESSES.bsc.BUSD, false], //busd-usd - ["0x55d398326f99059ff775485246999027b3197955", false], + [ADDRESSES.bsc.USDT, false], //TrueUSD - ["0x14016e85a25aeb13065688cafb43044c2ef86784", false], + [ADDRESSES.bsc.BTUSD, false], //MDEX LP ["0x149a712378aba63882c1d372739eb47a6fd0e12e", true], //Pancake LPs diff --git a/projects/piggy/index.js b/projects/piggy/index.js index 25e789bdf4..ea209dff27 100644 --- a/projects/piggy/index.js +++ b/projects/piggy/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {getLiquityTvl} = require('../helper/liquity') -const BNB_ADDRESS = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; +const BNB_ADDRESS = ADDRESSES.bsc.WBNB; // TroveManager holds total system collateral (deposited BNB) const TROVE_MANAGER_ADDRESS = "0xb283466d09177c5C6507785d600caFDFa538C65C"; diff --git a/projects/pika.js b/projects/pika.js index 11646f0e11..50d584e44c 100644 --- a/projects/pika.js +++ b/projects/pika.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens2 } = require('./helper/unwrapLPs') const chain = 'optimism' @@ -5,7 +6,7 @@ async function tvl(_, _b, { [ chain]: block }) { const owners = [ '0x2FaE8C7Edd26213cA1A88fC57B65352dbe353698', '0xD5A8f233CBdDb40368D55C3320644Fb36e597002', ] - const tokens = ['0x7f5c764cbc14f9669b88837ca1490cca17c31607'] + const tokens = [ADDRESSES.optimism.USDC] return sumTokens2({ chain, block, owners, tokens, }) } diff --git a/projects/pinkpea/index.js b/projects/pinkpea/index.js index da92779bcb..478c015870 100644 --- a/projects/pinkpea/index.js +++ b/projects/pinkpea/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./lens.json"); const { ethers } = require("ethers"); const vaultLensAddress = "0x64958a77bE17f3B840d66260CB088f4C8dB1f47C"; -const zeroAddress = "0x0000000000000000000000000000000000000000"; +const zeroAddress = ADDRESSES.null; const tokenDecimals = { "0x53ff774ebE8Bf7E03df8D73D3E9915b2Ca4eC40E": 6, @@ -47,7 +48,7 @@ async function tvl(timestamp, ethBlock, chainBlocks) { Number(ethers.utils.formatUnits(data.tokenPrice, decimal)); }); return { - "aurora:0x4988a896b1227218e4A686fdE5EabdcAbd91571f": totalTvl * 1000000, + ["aurora:" + ADDRESSES.aurora.USDT_e]: totalTvl * 1000000, }; } module.exports = { diff --git a/projects/pirex/index.js b/projects/pirex/index.js index c62f0b000f..50ffe51b0b 100644 --- a/projects/pirex/index.js +++ b/projects/pirex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -6,7 +7,7 @@ const PirexCVX = "0x35A398425d9f1029021A92bc3d2557D42C8588D7"; const CVXLocker = "0x72a19342e8F1838460eBFCCEf09F6585e32db86E"; const pxGMX = "0x9a592b4539e22eeb8b2a3df679d572c7712ef999"; const pxGLP = "0x0eac365e4d7de0e293078bd771ba7d0ba9a4c892" -const GMX = "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a"; +const GMX = ADDRESSES.arbitrum.GMX; const GLP = "0x4277f8F2c384827B5273592FF7CeBd9f2C1ac258"; async function ethereum(ts, block, _, { api }) { diff --git a/projects/planet-finance/index.js b/projects/planet-finance/index.js index be6ef93676..4b6b0b3814 100644 --- a/projects/planet-finance/index.js +++ b/projects/planet-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -6,14 +7,14 @@ const { getPoolInfo } = require("../helper/masterchef.js"); const { transformBscAddress } = require("../helper/portedTokens"); const replacements = { - "0xa8Bb71facdd46445644C277F9499Dd22f6F0A30C": - "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", //beltBNB -> wbnb - "0x9cb73F20164e399958261c289Eb5F9846f4D1404": - "0x55d398326f99059ff775485246999027b3197955", // 4belt -> usdt - "0x51bd63F240fB13870550423D208452cA87c44444": - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", //beltBTC-> - "0xAA20E8Cb61299df2357561C2AC2e1172bC68bc25": - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", //beltETH-> + [ADDRESSES.bsc.beltBNB]: + ADDRESSES.bsc.WBNB, //beltBNB -> wbnb + [ADDRESSES.bsc.Belt4]: + ADDRESSES.bsc.USDT, // 4belt -> usdt + [ADDRESSES.bsc.beltBTC]: + ADDRESSES.bsc.BTCB, //beltBTC-> + [ADDRESSES.bsc.beltETH]: + ADDRESSES.bsc.ETH, //beltETH-> }; // liquidity pools diff --git a/projects/planet-green/index.js b/projects/planet-green/index.js index 550a683517..ecc94e63a8 100644 --- a/projects/planet-green/index.js +++ b/projects/planet-green/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { compoundExports } = require("../helper/compound"); const { staking } = require("../helper/staking.js"); @@ -9,14 +10,14 @@ const compoundTVL1 = compoundExports( '0xF54f9e7070A1584532572A6F640F09c606bb9A83', 'bsc', '0x24664791B015659fcb71aB2c9C0d56996462082F', - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c' + ADDRESSES.bsc.WBNB ) const compoundTVL2 = compoundExports( '0x1e0C9D09F9995B95Ec4175aaA18b49f49f6165A3', 'bsc', '0x190354707Ad8221bE30bF5f097fa51C9b1EbdB29', - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c' + ADDRESSES.bsc.WBNB ) // node test.js projects/green-planet/index.js diff --git a/projects/plutusDAO/index.js b/projects/plutusDAO/index.js index 33d1ea8519..05c2097e74 100644 --- a/projects/plutusDAO/index.js +++ b/projects/plutusDAO/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking, } = require("../helper/staking"); const { sumUnknownTokens } = require('../helper/unknownTokens'); @@ -13,7 +14,7 @@ const plsJones = "0xe7f6C3c1F0018E4C08aCC52965e5cbfF99e34A44"; const plsJonesFarm = "0x23B87748b615096d1A0F48870daee203A720723D"; const plsSpa = "0x0D111e482146fE9aC9cA3A65D92E65610BBC1Ba6"; const plsSpaFarm = "0x73e7c78E8a85C074733920f185d1c78163b555C8"; -const plvGlpToken = "0x5326E71Ff593Ecc2CF7AcaE5Fe57582D6e74CFF1"; +const plvGlpToken = ADDRESSES.arbitrum.plvGLP; const plgGlpPlutusChef = "0x4E5Cf54FdE5E1237e80E87fcbA555d829e1307CE"; const dpxPlsDpxMasterChef = "0xA61f0d1d831BA4Be2ae253c13ff906d9463299c2"; diff --git a/projects/pods-yield/constants.js b/projects/pods-yield/constants.js index 529cdd4035..06e5b1b0bc 100644 --- a/projects/pods-yield/constants.js +++ b/projects/pods-yield/constants.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { - ADDRESS_ZERO: '0x0000000000000000000000000000000000000000', + ADDRESS_ZERO: ADDRESSES.null, EXPIRATION_START_FROM: 1605000000, NETWORK_MAINNET: { id: 1, diff --git a/projects/podsfinance/constants.js b/projects/podsfinance/constants.js index 4987fb49bb..f9a95a1821 100644 --- a/projects/podsfinance/constants.js +++ b/projects/podsfinance/constants.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { - ADDRESS_ZERO: '0x0000000000000000000000000000000000000000', + ADDRESS_ZERO: ADDRESSES.null, OPTION_TYPE_PUT: 0, OPTION_TYPE_CALL: 1, EXPIRATION_START_FROM: 1605000000, diff --git a/projects/polkaex/index.js b/projects/polkaex/index.js index be1e58750f..efa127ba80 100644 --- a/projects/polkaex/index.js +++ b/projects/polkaex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { stakings } = require("../helper/staking"); const { getFixBalances } = require('../helper/portedTokens'); @@ -11,42 +12,42 @@ const FACTORIES = { const NATIVE_TOKENS = { WASTAR: "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720", - WSDN: "0x0f933Dc137D21cA519ae4C7E93f87a4C8EF365Ef", - WBNB: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", - WETH: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + WSDN: ADDRESSES.shiden.WSDN, + WBNB: ADDRESSES.bsc.WBNB, + WETH: ADDRESSES.ethereum.WETH } const TOKENS = { astar: { - USDC: "0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98", - USDT: "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283", - DOT: "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF", + USDC: ADDRESSES.moonbeam.USDC, + USDT: ADDRESSES.astar.USDT, + DOT: ADDRESSES.astar.DOT, WASTAR: NATIVE_TOKENS.WASTAR, }, shiden: { - // KAC: "0xb12c13e66ade1f72f71834f2fc5082db8c091358", - STND: "0x722377A047e89CA735f09Eb7CccAb780943c4CB4", - USDC: "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", - USDT: "0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b", - JPYC: "0x735aBE48e8782948a37C7765ECb76b98CdE97B0F", - BNB: "0x332730a4f6e03d9c55829435f10360e13cfa41ff", - BUSD: "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a", - ETH: "0x765277EebeCA2e31912C9946eAe1021199B39C61", + // KAC: ADDRESSES.harmony.AVAX, + STND: ADDRESSES.shiden.STND, + USDC: ADDRESSES.telos.ETH, + USDT: ADDRESSES.telos.USDC, + JPYC: ADDRESSES.shiden.JPYC, + BNB: ADDRESSES.dogechain.BUSD, + BUSD: ADDRESSES.shiden.BUSD, + ETH: ADDRESSES.shiden.ETH, WSDN: NATIVE_TOKENS.WSDN }, bsc: { - BUSD: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + BUSD: ADDRESSES.bsc.BUSD, WBNB: NATIVE_TOKENS.WBNB }, ethereum: { - USDC: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + USDC: ADDRESSES.ethereum.USDC, WETH: NATIVE_TOKENS.WETH } } const PKEX = { astar: "0x1fE622E91e54D6AD00B01917351Ea6081426764A", - shiden: "0xDC42728B0eA910349ed3c6e1c9Dc06b5FB591f98", + shiden: ADDRESSES.dogechain.MATIC, ethereum: "0xe6f143a0e0a8f24f6294ce3432ea10fad0206920", bsc: "0x68edF56289134b41C6583c0e8fc29fbD7828aCa4", polygon: "0xd13eB71515DC48a8a367D12F844e5737bab415dF" diff --git a/projects/polygon/index.js b/projects/polygon/index.js index 71302f546e..96d9f1e166 100644 --- a/projects/polygon/index.js +++ b/projects/polygon/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') async function tvl(_, block) { - const etherAddress = '0x0000000000000000000000000000000000000000' + const etherAddress = ADDRESSES.null const posEtherPredicate = '0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30' const posERC20Predicate = '0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf' const plasmaDepositManager = '0x401F6c983eA34274ec46f84D70b31C151321188b' - const maticToken = '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0' + const maticToken = ADDRESSES.ethereum.MATIC const stakeManager = '0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908' const toa = [ @@ -15,13 +16,13 @@ async function tvl(_, block) { ] const erc20Tokens = [ - '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', - '0x6b175474e89094c44da98b954eedeac495271d0f', + ADDRESSES.ethereum.MATIC, + ADDRESSES.ethereum.DAI, '0x3F382DbD960E3a9bbCeaE22651E88158d2791550', - '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', - '0x514910771af9ca656af840dff83e8264ecf986ca', + ADDRESSES.ethereum.AAVE, + ADDRESSES.ethereum.LINK, '0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d', - '0xD533a949740bb3306d119CC777fa900bA034cd52', + ADDRESSES.ethereum.CRV, '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', '0xba100000625a3754423978a60c9317c58a424e3d', '0x4b520c812e8430659fc9f12f6d0c39026c83588d', @@ -31,10 +32,10 @@ async function tvl(_, block) { '0x56d811088235F11C8920698a204A5010a788f4b3', '0xcfcecfe2bd2fed07a9145222e8a7ad9cf1ccd22a', // '0x17ac188e09a7890a1844e5e65471fe8b0ccfadf3', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + ADDRESSES.ethereum.USDC, '0x3845badAde8e6dFF049820680d1F14bD3903a5d0', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - '0xdac17f958d2ee523a2206206994597c13d831ec7', + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.USDT, '0xe0cca86b254005889ac3a81e737f56a14f4a38f5', '0x09617f6fd6cf8a71278ec86e23bbab29c04353a7', '0xd2ba23de8a19316a638dc1e7a9adda1d74233368', @@ -45,7 +46,7 @@ async function tvl(_, block) { '0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4', '0x0335a7610d817aeca1bebbefbd392ecc2ed587b8', '0xcc4ae94372da236e9b113132e0c46c68704246b9', - '0x0000000000085d4780B73119b644AE5ecd22b376', + ADDRESSES.ethereum.TUSD, '0xff56cc6b1e6ded347aa0b7676c85ab0b3d08b0fa', '0x0a6e18fb2842855c3af925310b0f50a4bfa17909', '0x8ffe40a3d0f80c0ce6b203d5cdc1a6a86d9acaea', @@ -62,11 +63,11 @@ async function tvl(_, block) { '0x8b3870df408ff4d7c3a26df852d41034eda11d81', '0xb705268213d593b8fd88d3fdeff93aff5cbdcfae', '0xdb25f211ab05b1c97d595516f45794528a807ad8', - '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', + ADDRESSES.ethereum.UNI, '0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202', '0x3593d125a4f7849a1b059e64f4517a86dd60c95d', '0x6f40d4a6237c257fff2db00fa0510deeecd303eb', - '0x5a98fcbea516cf06857215779fd812ca3bef1b32', + ADDRESSES.ethereum.LIDO, '0xb4d930279552397bba2ee473229f89ec245bc365', '0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f', '0x544c42fbb96b39b21df61cf322b5edc285ee7429', diff --git a/projects/polymarket.js b/projects/polymarket.js index ce6283c831..55d4f557f6 100644 --- a/projects/polymarket.js +++ b/projects/polymarket.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { request, } = require("graphql-request"); const { BigNumber } = require("bignumber.js"); @@ -75,7 +76,7 @@ async function getMarketsLiquidity_graphql(timestamp, block, chainBlocks) { // const polymarket_api_url = 'https://strapi-matic.poly.market/markets?_limit=-1&_sort=closed_time:desc' // &active=true const conditionalTokensContract = '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045' -const polygonUsdcContract = '0x2791bca1f2de4661ed88a30c99a7a9449aa84174' +const polygonUsdcContract = ADDRESSES.polygon.USDC async function polygon(timestamp, block, chainBlocks) { // Get markets liquidity using API diff --git a/projects/polynomial-earn/index.js b/projects/polynomial-earn/index.js index 0e34b7c214..8f005cf93d 100644 --- a/projects/polynomial-earn/index.js +++ b/projects/polynomial-earn/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const BigNumber = require('bignumber.js') const abi = require('./abi.json') @@ -19,8 +20,8 @@ const MAINNET_SETH = '0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb' //Optimism Synths to Mainnet Synths const L2toL1Synths = { - '0xe405de8f52ba7559f9df3c368500b6e6ae6cee49': MAINNET_SETH, - '0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9': MAINNET_SUSD, + [ADDRESSES.optimism.sETH]: MAINNET_SETH, + [ADDRESSES.optimism.sUSD]: MAINNET_SUSD, '0x298b9b95708152ff6968aafd889c6586e9169f1d': '0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6', '0xc5db22719a06418028a40a9b5e9a7c02959d0d08': '0xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6' } diff --git a/projects/polyo-exchange/index.js b/projects/polyo-exchange/index.js index a47abc4a42..3d98b3c4fc 100644 --- a/projects/polyo-exchange/index.js +++ b/projects/polyo-exchange/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') // polyo Asset Address @@ -7,10 +8,10 @@ const Asset_P01_USDC = "0x17B308e859FD8ccC3D27EC290Fe5220c01188E52"; const Asset_P01_USDT = "0x2d7FA7402569e061A2218dc4e7Ac79281a8C4fB5"; // underlyingToken Address -const BUSD = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; +const BUSD = ADDRESSES.bsc.BUSD; const DAI = "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3"; -const USDC = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"; -const USDT = "0x55d398326f99059fF775485246999027B3197955"; +const USDC = ADDRESSES.bsc.USDC; +const USDT = ADDRESSES.bsc.USDT; async function tvl(timestamp, ethereumBlock, chainBlocks) { const chain = 'bsc' diff --git a/projects/polyquity/index.js b/projects/polyquity/index.js index 86080f8e9f..e231e6c8a2 100644 --- a/projects/polyquity/index.js +++ b/projects/polyquity/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const MATIC_ADDRESS = '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0'; +const MATIC_ADDRESS = ADDRESSES.ethereum.MATIC; const MATIC_TROVE_MANAGER_ADDRESS = "0xA2A065DBCBAE680DF2E6bfB7E5E41F1f1710e63b"; -const USDC_ADDRESS = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; +const USDC_ADDRESS = ADDRESSES.ethereum.USDC; const USDC_TROVE_MANAGER_ADDRESS = "0x09273531f634391dE6be7e63C819F4ccC086F41c"; async function tvl(_, _ethBlock, chainBlocks) { diff --git a/projects/polyroll.js b/projects/polyroll.js index 33b233cb51..ef1040de6b 100644 --- a/projects/polyroll.js +++ b/projects/polyroll.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require('./helper/unwrapLPs'); const { transformPolygonAddress } = require('./helper/portedTokens'); const tokens = [ ['0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', false], //WMATIC - ['0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', false], //WETH - ['0xc2132d05d31c914a87c6611c10748aeb04b58e8f', false], //USDT + [ADDRESSES.polygon.WETH_1, false], //WETH + [ADDRESSES.polygon.USDT, false], //USDT ['0x831753dd7087cac61ab5644b308642cc1c33dc13', false] //QUICK ]; const fundedContracts = [ diff --git a/projects/poofcash/index.js b/projects/poofcash/index.js index 55342fd1f2..88105e08e6 100644 --- a/projects/poofcash/index.js +++ b/projects/poofcash/index.js @@ -1,35 +1,36 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const tokens = [ { holder: "0x5b46A20284366F5e79D9B3e5e2FA0F5702b8C72F", // wmcUSD currency: "celo-dollar", - tokenAddress: "0x918146359264C492BD6934071c6Bd31C854EDBc3", // mcUSD + tokenAddress: ADDRESSES.celo.mcUSD, // mcUSD }, { holder: "0xD96A74081440C28E9a3c09a3256D6e0454c52E41", // wmcUSD 2 currency: "celo-dollar", - tokenAddress: "0x918146359264C492BD6934071c6Bd31C854EDBc3", // mcUSD + tokenAddress: ADDRESSES.celo.mcUSD, // mcUSD }, { holder: "0xd3D7831D502Ab85319E1F0A18109aa9aBEBC2603", // wmCELO currency: "celo", - tokenAddress: "0x7D00cd74FF385c955EA3d79e47BF06bD7386387D", // mCELO + tokenAddress: ADDRESSES.celo.mCELO, // mCELO }, { holder: "0x337ddAD7Fcb34E93a54a7B6df7C8Bae00fA91D09", // wmCELO 2 currency: "celo", - tokenAddress: "0x7D00cd74FF385c955EA3d79e47BF06bD7386387D", // mCELO + tokenAddress: ADDRESSES.celo.mCELO, // mCELO }, { holder: "0xb7e4e9329DA677969376cc76e87938563B07Ac6A", // wmcEUR currency: "celo-euro", - tokenAddress: "0xE273Ad7ee11dCfAA87383aD5977EE1504aC07568", // mcEUR + tokenAddress: ADDRESSES.celo.mCEUR, // mcEUR }, { holder: "0xAb32a0b6d427ce11a4cEf7Be174A3F291a2753E6", // wmcEUR 2 currency: "celo-euro", - tokenAddress: "0xE273Ad7ee11dCfAA87383aD5977EE1504aC07568", // mcEUR + tokenAddress: ADDRESSES.celo.mCEUR, // mcEUR }, ]; diff --git a/projects/pooltogether/index.js b/projects/pooltogether/index.js index 7c6ca4537f..fc879665c7 100644 --- a/projects/pooltogether/index.js +++ b/projects/pooltogether/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { request, gql } = require("graphql-request"); const abi = require('./abi.json') @@ -89,11 +90,11 @@ async function eth(timestamp, block) { async function polygon(timestamp, block, chainBlocks) { return getChainBalances([{ id: "0x887E17D791Dcb44BfdDa3023D26F7a04Ca9C7EF4", - underlyingCollateralToken: "0xdac17f958d2ee523a2206206994597c13d831ec7" + underlyingCollateralToken: ADDRESSES.ethereum.USDT }, { id: "0xee06abe9e2af61cabcb13170e01266af2defa946", - underlyingCollateralToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + underlyingCollateralToken: ADDRESSES.ethereum.USDC }], 'polygon', chainBlocks.polygon) } diff --git a/projects/popcorn/constants.js b/projects/popcorn/constants.js index 510c1a94eb..d223f8a253 100644 --- a/projects/popcorn/constants.js +++ b/projects/popcorn/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const ADDRESSES_ = { ethereum: { @@ -12,8 +13,8 @@ const ADDRESSES_ = { pop: "0xd0cd466b34a24fcb2f87676278af2005ca8a78c4", - usdc: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - dai: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + usdc: ADDRESSES.ethereum.USDC, + dai: ADDRESSES.ethereum.DAI, // for butter setBasicIssuanceModule: "0xd8EF3cACe8b4907117a45B0b125c68560532F94D", @@ -49,7 +50,7 @@ const ADDRESSES_ = { }, polygon: { pop: "0xc5b57e9a1e7914fda753a88f24e5703e617ee50c", - usdc: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + usdc: ADDRESSES.polygon.USDC, popLocker: "0xe8af04AD759Ad790Aa5592f587D3cFB3ecC6A9dA", rewardsEscrow: "0xa82cAA79F35f7d6B6f1EC1971878F3474C894565", diff --git a/projects/popsicle/index.js b/projects/popsicle/index.js index bc4b68440c..9da49e89c3 100644 --- a/projects/popsicle/index.js +++ b/projects/popsicle/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const poolInfoAbi = require("../helper/abis/masterchef.json"); const { sumTokensAndLPsSharedOwners, sumTokens2 } = require('../helper/unwrapLPs'); @@ -71,7 +72,7 @@ async function fantomStaking(timestamp, block, chainBlocks) { return sumTokens2({ tokensAndOwners: [ ['0xf16e81dce15b08f326220742020379b855b87df9', '0xaE2e07276A77DAdE3378046eEd92FfDE3995b0D5'], // ICE - ['0x7f620d7d0b3479b1655cefb1b0bc67fb0ef4e443', '0xBC8d95Ab498502242b41fdaD30bDFfC841f436e2'], // nICE + [ADDRESSES.fantom.nICE, '0xBC8d95Ab498502242b41fdaD30bDFfC841f436e2'], // nICE ], chain: 'fantom', block: chainBlocks.fantom, diff --git a/projects/portfinance/index.js b/projects/portfinance/index.js index 1cc1422bf9..19362999ea 100644 --- a/projects/portfinance/index.js +++ b/projects/portfinance/index.js @@ -1,18 +1,19 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/solana') async function tvl() { const tokensAndOwners = [ /// Main Pool - ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], - ["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], - ["So11111111111111111111111111111111111111112", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], + [ADDRESSES.solana.USDC, "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], + [ADDRESSES.solana.USDT, "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], + [ADDRESSES.solana.SOL, "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], - ["9EaLkQrbjmbbuZG9Wdpo8qfNUEjHATJFSycEmw6f1rGX", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], + [ADDRESSES.solana.pSOL, "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["2poo1w1DL6yd2WNTCnNTzDqkC6MBXq7axo77P16yrBuf", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], ["9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i", "8x2uay8UgrLiX8AAYyF6AkK9z91nNtN6aLwfqPkf6TAQ"], @@ -25,19 +26,19 @@ async function tvl() { ["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", "GU1nCjN7mcLiSX1dtBw2t9agYCw3ybXfu1me41Q2tGT3"], ["Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS", "GU1nCjN7mcLiSX1dtBw2t9agYCw3ybXfu1me41Q2tGT3"], ["9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E", "GU1nCjN7mcLiSX1dtBw2t9agYCw3ybXfu1me41Q2tGT3"], - ["So11111111111111111111111111111111111111112", "GU1nCjN7mcLiSX1dtBw2t9agYCw3ybXfu1me41Q2tGT3"], + [ADDRESSES.solana.SOL, "GU1nCjN7mcLiSX1dtBw2t9agYCw3ybXfu1me41Q2tGT3"], /// UXD Innovation Zone ["7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT", "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], - ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], - ["Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], - ["So11111111111111111111111111111111111111112", "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], + [ADDRESSES.solana.USDC, "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], + [ADDRESSES.solana.USDT, "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], + [ADDRESSES.solana.SOL, "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], ["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", "Hy6gCkJyMmWMaoxLyzELRReLzdBdZ1YEjNGjQzF9LDPa"], /// Hedge Innovation Zone ["9iLH8T7zoWhY7sBmj1WK9ENbWdS1nL8n9wAxaeRitTa6", "4bf5HQQZ9qtGGCuxYNnhiTrKpTMTX6HSoLy5a7wUjCEb"], ["9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E", "4bf5HQQZ9qtGGCuxYNnhiTrKpTMTX6HSoLy5a7wUjCEb"], - ["So11111111111111111111111111111111111111112", "4bf5HQQZ9qtGGCuxYNnhiTrKpTMTX6HSoLy5a7wUjCEb"], + [ADDRESSES.solana.SOL, "4bf5HQQZ9qtGGCuxYNnhiTrKpTMTX6HSoLy5a7wUjCEb"], ["mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", "4bf5HQQZ9qtGGCuxYNnhiTrKpTMTX6HSoLy5a7wUjCEb"], ] diff --git a/projects/prdt/index.js b/projects/prdt/index.js index b9ba880655..2a7560fb5e 100644 --- a/projects/prdt/index.js +++ b/projects/prdt/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); -const USDTpolygon = "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"; -const USDTbsc = "0x55d398326f99059fF775485246999027B3197955"; +const USDTpolygon = ADDRESSES.polygon.USDT; +const USDTbsc = ADDRESSES.bsc.USDT; const config = { bsc: { diff --git a/projects/predy/index.js b/projects/predy/index.js index 1333f9b0d2..f1f288f02e 100644 --- a/projects/predy/index.js +++ b/projects/predy/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokensExport } = require('../helper/unwrapLPs') const BigNumber = require("bignumber.js"); @@ -7,8 +8,8 @@ const v202Address = '0xAdBAeE9665C101413EbFF07e20520bdB67C71AB6'; const v3Address = '0x4006A8840F8640A7D8F46D2c3155a58c76eCD56e'; const v320Address = '0x68a154fB3e8ff6e4DA10ECd54DEF25D9149DDBDE'; -const WETH_CONTRACT = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"; -const USDC_CONTRACT = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"; +const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; +const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; const abi = { v3: { diff --git a/projects/premia/index.js b/projects/premia/index.js index f3798bbcf4..1af30cb2f1 100644 --- a/projects/premia/index.js +++ b/projects/premia/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokens } = require("../helper/unwrapLPs"); @@ -12,8 +13,8 @@ const PREMIA_OPTIONS_CONTRACT_ETH = const PREMIA_OPTIONS_CONTRACT_BSC = "0x8172aAC30046F74907a6b77ff7fC867A6aD214e4"; -const erc20DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; -const erc20BUSD = "0xe9e7cea3dedca5984780bafc599bd69add087d56"; +const erc20DAI = ADDRESSES.ethereum.DAI; +const erc20BUSD = ADDRESSES.bsc.BUSD; const calcTvl = async (balances, chain, block, premiaOptionsContract) => { const erc20TokensLength = ( diff --git a/projects/premia/v1.js b/projects/premia/v1.js index 5cb8a87863..d1d49afc5e 100644 --- a/projects/premia/v1.js +++ b/projects/premia/v1.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, gql } = require("graphql-request"); const sdk = require('@defillama/sdk') @@ -52,8 +53,8 @@ const graphUrls = { bsc: 'https://api.thegraph.com/subgraphs/name/premiafinance/premia-bsc', }; const denominators = { - ethereum: "0x6b175474e89094c44da98b954eedeac495271d0f", //DAI - bsc: "0xe9e7cea3dedca5984780bafc599bd69add087d56", //BUSD + ethereum: ADDRESSES.ethereum.DAI, //DAI + bsc: ADDRESSES.bsc.BUSD, //BUSD } module.exports = function v1Tvl(chain) { diff --git a/projects/primitive/v1.js b/projects/primitive/v1.js index 9c7b5514e3..2e2ed8db1e 100644 --- a/projects/primitive/v1.js +++ b/projects/primitive/v1.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const BigNumber = require('bignumber.js') const getCacheBalances = 'function getCacheBalances() view returns (uint256, uint256)' @@ -13,7 +14,7 @@ const { getLogs } = require('../helper/cache/getLogs') const START_BLOCK = 11142900 const REGISTRY = '0x16274044dab9635Df2B5AeAF7CeCb5f381c71680' const FACTORY = '0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac' -const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' +const ZERO_ADDRESS = ADDRESSES.null module.exports = async function tvl(_, block, _1, { api }) { diff --git a/projects/privcash/config.js b/projects/privcash/config.js index b1c7f1d5ce..511b74e700 100644 --- a/projects/privcash/config.js +++ b/projects/privcash/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress } = require('../helper/unwrapLPs') module.exports = { @@ -13,7 +14,7 @@ module.exports = { ], }, { - tokens: ['0xfa9343c3897324496a05fc75abed6bac29f8a40f'], // USDC + tokens: [ADDRESSES.telos.ETH], // USDC holders: [ "0xe4e992802314dbbd8BB9d050afae19ca1c45cB1A", // 10 "0x8DFB4d1925cC8C7446AfA92f1cDd6c8be567Ae7C", // 100 diff --git a/projects/proteo-farms/index.js b/projects/proteo-farms/index.js index cb1668185a..76cc93009b 100644 --- a/projects/proteo-farms/index.js +++ b/projects/proteo-farms/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/chain/elrond') const { get } = require('../helper/http') const sdk = require('@defillama/sdk') @@ -11,10 +12,10 @@ async function getPrices() { async function _getPrices() { const getApi = ({ token1, token2 }) => `https://api.multiversx.com/mex/pairs/${token1}/${token2}?fields=price` const lps = [ - // { lp: 'PROTEOEGLD-baf054', token1: 'PROTEO-0c7311', token2: 'WEGLD-bd4d79', }, - { lp: 'ZPAYWEGLD-34e5c1', token1: 'ZPAY-247875', token2: 'WEGLD-bd4d79', }, - { lp: 'AEROWEGLD-81cc37', token1: 'AERO-458bbf', token2: 'WEGLD-bd4d79', }, - { lp: 'KROUSDC-7787ab', token1: 'USDC-c76f1f', token2: 'KRO-df97ec', }, + // { lp: 'PROTEOEGLD-baf054', token1: 'PROTEO-0c7311', token2: ADDRESSES.elrond.WEGLD, }, + { lp: 'ZPAYWEGLD-34e5c1', token1: ADDRESSES.elrond.ZPAY, token2: ADDRESSES.elrond.WEGLD, }, + { lp: 'AEROWEGLD-81cc37', token1: ADDRESSES.elrond.AERO, token2: ADDRESSES.elrond.WEGLD, }, + { lp: 'KROUSDC-7787ab', token1: 'USDC-c76f1f', token2: ADDRESSES.elrond.KRO, }, ] const prices = {} @@ -29,8 +30,8 @@ async function getPrices() { async function tvl() { const tokensAndOwners = [ - ['0x0000000000000000000000000000000000000000', 'erd1qqqqqqqqqqqqqpgqwqxfv48h9ssns5cc69yudvph297veqeeznyqr4l930'], - ['0x0000000000000000000000000000000000000000', 'erd1qqqqqqqqqqqqqpgqyhj3hk6kkw7405j42g20th3g2h5s8076znyqrpe2pr'], + [ADDRESSES.null, 'erd1qqqqqqqqqqqqqpgqwqxfv48h9ssns5cc69yudvph297veqeeznyqr4l930'], + [ADDRESSES.null, 'erd1qqqqqqqqqqqqqpgqyhj3hk6kkw7405j42g20th3g2h5s8076znyqrpe2pr'], ['USDC-c76f1f', 'erd1qqqqqqqqqqqqqpgq3lh80a92d49am3t2pfzheapdxtykzt5kznyqsjhfrx'], ['USDC-c76f1f', 'erd1qqqqqqqqqqqqqpgq25l7fgjdecaanxuuzxnquzs7k80q6mqaznyqzjclf5'], ['ZPAYWEGLD-34e5c1', 'erd1qqqqqqqqqqqqqpgqrpa6ezy0q4xuj6y9plgv85va43x7wy3dznyqr2rwcz'], diff --git a/projects/prxy/index.js b/projects/prxy/index.js index 9906220f04..2fa417bf2b 100644 --- a/projects/prxy/index.js +++ b/projects/prxy/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = "uint256:getTVLInUsd"; const axios = require("axios"); -const usdc = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const usdc = ADDRESSES.ethereum.USDC; const prxy = "0xab3d689c22a2bb821f50a4ff0f21a7980dcb8591"; const prxyTransformed = `polygon:${prxy}`; -const wbtc = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"; +const wbtc = ADDRESSES.ethereum.WBTC; const btcpx = "0x9C32185b81766a051E08dE671207b34466DD1021"; const farmProxy = "0x256116a8Ea8bAd13897462117d88082C464B68e1"; @@ -79,7 +80,7 @@ async function farmPrxyStaking(timestamp, ethBlock, chainBlocks){ chain: "polygon" })).output; -return {'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': farmStaking} +return {[ADDRESSES.ethereum.USDC]: farmStaking} } diff --git a/projects/pumpkin-dao/index.js b/projects/pumpkin-dao/index.js index c8b78974be..92327e523d 100644 --- a/projects/pumpkin-dao/index.js +++ b/projects/pumpkin-dao/index.js @@ -1,15 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0x0DEA39519cb8c7c549e321d3020E96f91Ed36Ed3"; module.exports = ohmTvl(treasuryAddress, [ //DAI - ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], + [ADDRESSES.fantom.DAI, false], //wFTM - ["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", false], + [ADDRESSES.fantom.WFTM, false], //SPOOKY LP ["0xdf42866dc8fa6a962124b5d9eb8c91fa447f4feb", true] , //SPOOKY LP ["0x01e7f6506bc3661dc690a0a076ace9d3d0253d92", true] ], "fantom", "0x5d189D8224a9aFBc3eC69bedBe2f6dd89B937E73", "0x8eDDA0107D661E82df660DBa01Ff1D40FA17B70c" , addr=> - addr.toLowerCase()==="0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e"?"0x6b175474e89094c44da98b954eedeac495271d0f":`fantom:${addr}` + addr.toLowerCase()===ADDRESSES.fantom.DAI?[ADDRESSES.ethereum.DAI]:`fantom:${addr}` , undefined, false) \ No newline at end of file diff --git a/projects/pxswap/index.js b/projects/pxswap/index.js index 41c41a6080..f3db5efae1 100644 --- a/projects/pxswap/index.js +++ b/projects/pxswap/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { sumTokensExport } = require('../helper/unwrapLPs') const contract = "0x638B06F80FB28F109E65C9d5cC585aDf9A0c3f9f" -const usdcToken = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f" +const usdcToken = ADDRESSES.telos.ETH module.exports = { kava: { tvl: sumTokensExport({ owner: contract, tokens: [usdcToken]}) }, diff --git a/projects/qidao/index.js b/projects/qidao/index.js index cceb6d69f3..70eded0080 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); const sdk = require("@defillama/sdk"); @@ -186,15 +187,15 @@ const config = { ], // amWBTC // anchor [ - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + ADDRESSES.polygon.USDC, "0x947D711C25220d8301C087b25BA111FE8Cbf6672", ], //USDC [ - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + ADDRESSES.polygon.USDT, "0xa4742A65f24291AA421497221AaF64c70b098d98", ], //USDT [ - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + ADDRESSES.polygon.DAI, "0x6062E92599a77E62e0cC9749261eb2eaC3aBD44F", ], //DAI ] diff --git a/projects/qilin/index.js b/projects/qilin/index.js index 782ab5611b..2135110787 100644 --- a/projects/qilin/index.js +++ b/projects/qilin/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { sumTokensExport } = require('../helper/unwrapLPs') const contract = "0x57A0B07dcD834cAbB844BEc8E7903A3B2faE6245" -const usdcToken = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" +const usdcToken = ADDRESSES.ethereum.USDC module.exports = { ethereum: { tvl: sumTokensExport({ owner: contract, tokens: [usdcToken]}) }, diff --git a/projects/quasar-swap/index.js b/projects/quasar-swap/index.js index 9a0b0abff1..950c31d241 100644 --- a/projects/quasar-swap/index.js +++ b/projects/quasar-swap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') //const { masterChefExports } = require('../helper/masterchef'); // const { sumTokens2 } = require("../helper/unwrapLPs"); const { getUniTVL, sumUnknownTokens } = require("../helper/unknownTokens"); @@ -7,7 +8,7 @@ const { getUniTVL, sumUnknownTokens } = require("../helper/unknownTokens"); const sntNova = "0x657a66332a65b535da6c5d67b8cd1d410c161a08"; const qsrToken = "0x356c044B99e9378C1B28A1cAb2F95Cd65E877F33"; // const qsrLP = "0xf8c1b66e95790467819bb25f852e37b59e47c16d" -const nUSD = "0x1F5396f254EE25377A5C1b9c6BfF5f44e9294fFF" +const nUSD = ADDRESSES.nova.NUSD const sntQsrFarm = "0x0e9768b0199e7b31852b4effb70031d860b812d6"; // const sntNusdFarm = "0x050bc8fa6da93dff0d7629923e0972c0aecebb9e"; const poolAuto = "0x71da5557c9D89a0b34Ef3A6FE0EcC750c93996e9"; diff --git a/projects/qubit/index.js b/projects/qubit/index.js index 8500c0432e..5815aa0bc4 100644 --- a/projects/qubit/index.js +++ b/projects/qubit/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const BigNumber = require("bignumber.js"); const qBnb = "0xbE1B5D17777565D67A5D2793f879aBF59Ae5D351"; // qBNB -const wBnb = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; //wBNB +const wBnb = ADDRESSES.bsc.WBNB; //wBNB const qoreComptroller = "0xf70314eb9c7fe7d88e6af5aa7f898b3a162dcd48"; const dashboardKlaytn = "0x9A47D707FDffC561E3598990f25d3874af448568"; diff --git a/projects/quoll/index.js b/projects/quoll/index.js index debd8046d0..c8799c1233 100644 --- a/projects/quoll/index.js +++ b/projects/quoll/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { ethers: {BigNumber} } = require("ethers") const { staking } = require("../helper/staking"); @@ -64,7 +65,7 @@ async function voterProxyBalances(block) { return underlyingAmounts.output .map((a, i) => { if (masterWombatVoterProxyBalances.output[i].output.amount === '0') return; - if (underlyingTokens.output[i].output.toLowerCase() === '0xE85aFCcDaFBE7F2B096f268e31ccE3da8dA2990A'.toLowerCase()) return; // disable aBNBc (ankr bnb) + if (underlyingTokens.output[i].output.toLowerCase() === ADDRESSES.bsc.ankrBNB.toLowerCase()) return; // disable aBNBc (ankr bnb) return ({amount: a.output.amount, token: underlyingTokens.output[i].output}) }).filter(i => i); } diff --git a/projects/rabbitfinance/index.js b/projects/rabbitfinance/index.js index 863dbf75ed..48b248c793 100644 --- a/projects/rabbitfinance/index.js +++ b/projects/rabbitfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { staking } = require("../helper/staking"); @@ -27,10 +28,10 @@ const bscTvl = async (timestamp, ethBlock, { [chain]: block }) => { // ).map((addr) => addr.contract_address); const poolsInfo = [ - '0x55d398326f99059ff775485246999027b3197955', - '0xe9e7cea3dedca5984780bafc599bd69add087d56', - '0x2170ed0880ac9a755fd29b2688956bd959f933f8', - '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.ETH, + ADDRESSES.bsc.BTCB, '0x95a1199eba84ac5f19546519e287d43d2f0e1b41', '0x3ee2200efb3400fabb9aacf31297cbdd1d435d47', '0x9c65ab58d8d978db963e63f2bfb7121627e3a739', diff --git a/projects/rabbitx/index.js b/projects/rabbitx/index.js index cec06935ce..88cf728584 100644 --- a/projects/rabbitx/index.js +++ b/projects/rabbitx/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: sumTokensExport({ owner: '0xFc7f884DE22a59c0009C91733196b012Aecb8F41', tokens: ['0xdac17f958d2ee523a2206206994597c13d831ec7']}) + tvl: sumTokensExport({ owner: '0xFc7f884DE22a59c0009C91733196b012Aecb8F41', tokens: [ADDRESSES.ethereum.USDT]}) } } \ No newline at end of file diff --git a/projects/radao/index.js b/projects/radao/index.js index 305d5e460d..775f61b5b2 100644 --- a/projects/radao/index.js +++ b/projects/radao/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0x652A6F3459B276887bf2Fe9fb0FF810c9B24e1E3"; -const BUSD = "0xe9e7cea3dedca5984780bafc599bd69add087d56"; +const BUSD = ADDRESSES.bsc.BUSD; const RaStaking = "0xf45aE86eD6C7d7A6b6C4640e04FEc228641D4C64"; const RA = "0xcc238200cFfdA7A5E2810086c26d5334e64F1155"; diff --git a/projects/radioshack/index.js b/projects/radioshack/index.js index 6f1a8ac0ad..1b8a3d7218 100644 --- a/projects/radioshack/index.js +++ b/projects/radioshack/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { getUniTVL } = require('../helper/unknownTokens') @@ -13,7 +14,7 @@ const chainConfig = { }, polygon: { factory: '0xB581D0A3b7Ea5cDc029260e989f768Ae167Ef39B', - radio: '0x613a489785C95afEB3b404CC41565cCff107B6E0', + radio: ADDRESSES.polygon.RADIO, shack: '0x6E65Ae5572DF196FAe40Be2545Ebc2A9A24eAcE9', stakingContracts: ['0x1D72b58d2b73942451b1D0DFE2B6ef2c5a52a301', '0x01d97Df7dc98E97da0c14ffB27Adf00fda0245DD', '0x9E8C85c40001a7264a1a1B11999F8f7b0503D60a'], }, diff --git a/projects/ragnarokdao/index.js b/projects/ragnarokdao/index.js index 74af7084bf..9f9d0b6357 100644 --- a/projects/ragnarokdao/index.js +++ b/projects/ragnarokdao/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasury = "0xfa9cCe3098C02F770DcB2D17Df9B8f5331bE86D0"; const rgk = "0x46fccf447f74ec97a521615fce111118597071f7"; const stakingContract = "0xeb6B44834E002ECDEAdF9E61448B21cCc33284ca"; const mim = "0x130966628846bfd36ff31a822705796e8cb8c18d"; -const usdc = "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664"; +const usdc = ADDRESSES.avax.USDC_e; const rgkMimJLP = "0xE8419ecDA1C76c38800b21e7D43BDB6B02f51ACE"; module.exports = { ...ohmTvl( diff --git a/projects/ram.js b/projects/ram.js index d72e7beaac..d6f67cd28f 100644 --- a/projects/ram.js +++ b/projects/ram.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('./helper/coreAssets.json') const {usdCompoundExports} = require("./helper/compound"); const controllerAddress = "0x0d4fe8832857Bb557d8CFCf3737cbFc8aE784106"; module.exports = { timetravel: true, // but we don't have a thundercore archive node atm - thundercore: usdCompoundExports(controllerAddress, "thundercore", "0xeF5A0CE54a519B1Db3F350EB902C4cFbf7671D88", undefined, { cetheEquivalent: '0x413cEFeA29F2d07B8F2acFA69d92466B9535f717' }) + thundercore: usdCompoundExports(controllerAddress, "thundercore", "0xeF5A0CE54a519B1Db3F350EB902C4cFbf7671D88", undefined, { cetheEquivalent: ADDRESSES.thundercore.WTT }) }; diff --git a/projects/rari/index.js b/projects/rari/index.js index f235779b61..6cfcc141c1 100644 --- a/projects/rari/index.js +++ b/projects/rari/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { requery } = require("../helper/requery"); const abi = require("./abi"); @@ -28,18 +29,18 @@ const fusePoolLensAddress = '0x8dA38681826f4ABBe089643D2B3fE4C6e4730493' const fusePoolDirectoryAddress = '0x835482FE0532f169024d5E9410199369aAD5C77E' const rariGovernanceTokenUniswapDistributorAddress = '0x1FA69a416bCF8572577d3949b742fBB0a9CD98c7' const sushiETHRGTPairAddress = '0x18a797c7c70c1bf22fdee1c09062aba709cacf04' -const WETHTokenAddress = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const WETHTokenAddress = ADDRESSES.ethereum.WETH const RGTTokenAddress = '0xD291E7a03283640FDc51b121aC401383A46cC623' const RGTETHSushiLPTokenAddress = '0x18a797c7c70c1bf22fdee1c09062aba709cacf04' -const ETHAddress = '0x0000000000000000000000000000000000000000' +const ETHAddress = ADDRESSES.null const bigNumZero = BigNumber('0') const tokenMapWithKeysAsSymbol = { - 'DAI': '0x6b175474e89094c44da98b954eedeac495271d0f', - 'USDC': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - 'USDT': '0xdac17f958d2ee523a2206206994597c13d831ec7', - 'TUSD': '0x0000000000085d4780b73119b644ae5ecd22b376', - 'BUSD': '0x4fabb145d64652a948d72533023f6e7a623c7c53', + 'DAI': ADDRESSES.ethereum.DAI, + 'USDC': ADDRESSES.ethereum.USDC, + 'USDT': ADDRESSES.ethereum.USDT, + 'TUSD': ADDRESSES.ethereum.TUSD, + 'BUSD': ADDRESSES.ethereum.BUSD, 'SUSD': '0x57ab1ec28d129707052df4df418d58a2d46d5f51', 'MUSD': '0xe2f2a5c287993345a840db3b0845fbc70f5935a5' } diff --git a/projects/ray/index.js b/projects/ray/index.js index c12790da00..2c9f4b208a 100644 --- a/projects/ray/index.js +++ b/projects/ray/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); -const ETH_ADDRESS = '0x0000000000000000000000000000000000000000'; -const WETH_ADDRESS = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; +const ETH_ADDRESS = ADDRESSES.null; +const WETH_ADDRESS = ADDRESSES.ethereum.WETH; const SAI_ADDRESS = '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359'; -const DAI_ADDRESS = '0x6B175474E89094C44Da98b954EedeAC495271d0F'; -const USDC_ADDRESS = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; +const DAI_ADDRESS = ADDRESSES.ethereum.DAI; +const USDC_ADDRESS = ADDRESSES.ethereum.USDC; const tokenAddresses = [ ETH_ADDRESS, diff --git a/projects/realt.js b/projects/realt.js index 9f07e1d089..e5d501ff7e 100644 --- a/projects/realt.js +++ b/projects/realt.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk") const BigNumber = require("bignumber.js") const { getConfig } = require('./helper/cache') // Loop through all RealT tokens listed by realt.community API and accumulate tokenprice * supply, where supply is biggest of xdai or mainnet // See https://api.realt.community/ for reference -const xdai_usdc = 'xdai:0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83' +const xdai_usdc = 'xdai:' + ADDRESSES.xdai.USDC async function xdaiTvl(timestamp, block, chainBlocks) { let realt_tokens = await getConfig('realt', 'https://api.realt.community/v1/token') diff --git a/projects/redacted/index.js b/projects/redacted/index.js index c8cb5c7b81..b93d970007 100644 --- a/projects/redacted/index.js +++ b/projects/redacted/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners, unwrapUniswapV3NFTs, genericUnwrapCvx } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') const { BigNumber } = require('ethers') @@ -10,7 +11,7 @@ const CVX = '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b' const cvxCRV = '0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7' const FXS = '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0' const veFXS = '0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0' -const CRV = '0xD533a949740bb3306d119CC777fa900bA034cd52' +const CRV = ADDRESSES.ethereum.CRV const veCRV = '0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2' const sOHM = '0x04906695D6D12CF5459975d7C3C03356E4Ccd460' const OHM = '0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5' @@ -38,7 +39,7 @@ async function tvl(timestamp, block, chainBlocks){ // BTRFLY/ETH Curve LP ['0x7483Dd57f6488b0e194A151C57Df6Ec85C00aCE9', false], // USDC - ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', false], + [ADDRESSES.ethereum.USDC, false], // FRAX ['0x853d955aCEf822Db058eb8505911ED77F175b99e', false], ], treasuries, block) diff --git a/projects/reflexer/index.js b/projects/reflexer/index.js index 96390f0d46..8c696fd367 100644 --- a/projects/reflexer/index.js +++ b/projects/reflexer/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -10,7 +11,7 @@ const sdk = require("@defillama/sdk"); async function tvl(timestamp, block) { // WETH ERC20 contract - const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; + const weth = ADDRESSES.ethereum.WETH; // Contract holding all of the WETH balance in the system const ethCollateralJoin = "0x2D3cD7b81c93f188F3CB8aD87c8Acc73d6226e3A"; diff --git a/projects/relayChain/index.js b/projects/relayChain/index.js index bc653ae613..86e4644e8f 100644 --- a/projects/relayChain/index.js +++ b/projects/relayChain/index.js @@ -1,56 +1,57 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getChainTransform } = require('../helper/portedTokens'); const { sumTokens } = require('../helper/unwrapLPs') -const usdtEth = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; -const daiEth = "0x6b175474e89094c44da98b954eedeac495271d0f"; -const wbtcEth = "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"; -const usdcEth = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; -const wethEth = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const usdtEth = ADDRESSES.ethereum.USDT; +const daiEth = ADDRESSES.ethereum.DAI; +const wbtcEth = ADDRESSES.ethereum.WBTC; +const usdcEth = ADDRESSES.ethereum.USDC; +const wethEth = ADDRESSES.ethereum.WETH; const relayEth = "0x5D843Fa9495d23dE997C394296ac7B4D721E841c"; const xcasEth = "0x7659CE147D0e714454073a5dd7003544234b6Aa0"; -const trueUSDEth = "0x0000000000085d4780B73119b644AE5ecd22b376"; +const trueUSDEth = ADDRESSES.ethereum.TUSD; const zeroEth = "0xF0939011a9bb95c3B791f0cb546377Ed2693a574"; const dxpEth="0x88aa4a6C5050b9A1b2Aa7e34D0582025cA6AB745"; -const usdtBsc = "0x55d398326f99059fF775485246999027B3197955"; +const usdtBsc = ADDRESSES.bsc.USDT; const daiBsc = "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3"; -const usdcBsc = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"; -const busdBsc = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; -const ethBsc = "0x2170Ed0880ac9A755fd29B2688956BD959F933F8"; -const wbnbBsc = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; +const usdcBsc = ADDRESSES.bsc.USDC; +const busdBsc = ADDRESSES.bsc.BUSD; +const ethBsc = ADDRESSES.bsc.ETH; +const wbnbBsc = ADDRESSES.bsc.WBNB; const relayBsc = "0xE338D4250A4d959F88Ff8789EaaE8c32700BD175"; -const daiAvax = "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70"; -const wavax = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"; +const daiAvax = ADDRESSES.avax.DAI; +const wavax = ADDRESSES.avax.WAVAX; const wbtcAvax = "0x50b7545627a5162F82A992c33b87aDc75187B218"; -const usdcAvax = "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664"; -const usdtAvax = "0xc7198437980c041c805A1EDcbA50c1Ce5db95118"; +const usdcAvax = ADDRESSES.avax.USDC_e; +const usdtAvax = ADDRESSES.avax.USDT_e; -const wHeco = "0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F"; +const wHeco = ADDRESSES.heco.WHT; const wbtcHeco = "0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa"; const ethHeco = "0x64FF637fB478863B7468bc97D30a5bF3A428a1fD"; -const usdcHeco = "0x9362Bbef4B8313A8Aa9f0c9808B80577Aa26B73B"; -const daiHeco = "0x3D760a45D0887DFD89A2F5385a236B29Cb46ED2a"; +const usdcHeco = ADDRESSES.heco.USDC_HECO; +const daiHeco = ADDRESSES.heco.DAI_HECO; const husdHeco = "0x0298c2b32eaE4da002a15f36fdf7615BEa3DA047"; const miMatic = "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1"; const wmatic = "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"; -const wethMatic = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"; -const wbtcMatic = "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6"; -const usdcMatic = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"; -const daiMatic = "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063"; -const usdtMatic = "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"; +const wethMatic = ADDRESSES.polygon.WETH_1; +const wbtcMatic = ADDRESSES.polygon.WBTC; +const usdcMatic = ADDRESSES.polygon.USDC; +const daiMatic = ADDRESSES.polygon.DAI; +const usdtMatic = ADDRESSES.polygon.USDT; -const usdtMoonriver = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; +const usdtMoonriver = ADDRESSES.moonriver.USDT; const daiMoonriver = "0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844"; -const usdcMoonriver = "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D"; +const usdcMoonriver = ADDRESSES.moonriver.USDC; const wbtcMoonriver = "0xE6a991Ffa8CfE62B0bf6BF72959A3d4f11B2E0f5"; const wethMoonriver = "0x3Ca3fEFA944753b43c751336A5dF531bDD6598B6"; const relayMoonriver = "0xAd7F1844696652ddA7959a49063BfFccafafEfe7"; @@ -59,9 +60,9 @@ const wMOVR = "0x98878B06940aE243284CA214f92Bb71a2b032B8A"; const usdtFantom = "0x1B27A9dE6a775F98aaA5B90B62a4e2A0B84DbDd9"; const relayFantom = "0x338003E074DabFec661E1901bdB397aF9Cab6A76"; -const daiFantom = "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e"; -const usdcFantom = "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75"; -const wFantom = "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"; +const daiFantom = ADDRESSES.fantom.DAI; +const usdcFantom = ADDRESSES.fantom.USDC; +const wFantom = ADDRESSES.fantom.WFTM; const btcFantom = "0x321162Cd933E2Be498Cd2267a90534A804051b11"; @@ -70,59 +71,59 @@ const relayHarmony = "0x0e4d3a20b757cea2a0910129991b9d42cc2be188"; const daiHarmony = "0xEf977d2f931C1978Db5F6747666fa1eACB0d0339"; const usdcHarmony = "0x985458e523db3d53125813ed68c274899e9dfab4"; const busdHarmony = "0xe176ebe47d621b984a73036b9da5d834411ef734"; -const woneOne = "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a"; +const woneOne = ADDRESSES.harmony.WONE; const wsdnShiden = "0x1a6a12953d5439e8965d94d3d8452464fbd53e30"; -const usdtShiden = "0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b"; -const usdcShiden = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f"; -const busdShiden = "0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a"; +const usdtShiden = ADDRESSES.telos.USDC; +const usdcShiden = ADDRESSES.telos.ETH; +const busdShiden = ADDRESSES.shiden.BUSD; -const usdcMetis = "0xea32a96608495e54156ae48931a7c20f0dcc1a21"; -const usdtMetis = "0xbb06dca3ae6887fabf931640f67cab3e3a16f4dc"; -const relayMetis = "0xfe282Af5f9eB59C30A3f78789EEfFA704188bdD4"; -const maticMetis = "0x4b9D2923D875edF43980BF5dddDEde3Fb20fC742"; +const usdcMetis = ADDRESSES.metis.m_USDC; +const usdtMetis = ADDRESSES.metis.m_USDT; +const relayMetis = ADDRESSES.metis.RELAY; +const maticMetis = ADDRESSES.metis.MATIC; const mimMetis = "0x44Dd7C98885cD3086E723B8554a90c9cC4089C4C"; -const ftmMetis = "0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8" -const metis = "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000"; -const wbtcMetis = "0xa5B55ab1dAF0F8e1EFc0eB1931a957fd89B918f4"; -const avaxMetis = "0xE253E0CeA0CDD43d9628567d097052B33F98D611"; -const daiMetis = "0x4651B38e7ec14BB3db731369BFE5B08F2466Bd0A"; +const ftmMetis = ADDRESSES.oasis.USDT +const metis = ADDRESSES.metis.Metis; +const wbtcMetis = ADDRESSES.metis.WBTC; +const avaxMetis = ADDRESSES.metis.rAVAX; +const daiMetis = ADDRESSES.metis.DAI; const mdaiMetis="0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0"; -const usdtCronos = "0x66e428c3f67a68878562e79A0234c1F83c208770"; +const usdtCronos = ADDRESSES.cronos.USDT; const daiCronos = "0xF2001B145b43032AAF5Ee2884e456CCd805F677D"; -const usdcCronos = "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59"; -const wbtcCronos = "0x062e66477faf219f25d27dced647bf57c3107d52"; +const usdcCronos = ADDRESSES.cronos.USDC; +const wbtcCronos = ADDRESSES.cronos.WBTC; const wethCronos = "0xe44fd7fcb2b1581822d0c862b68222998a0c299a"; const relayCronos = "0x9C29650a1B273A031A35F3121914aae882B144A4"; -const busdCronos = "0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8"; +const busdCronos = ADDRESSES.oasis.USDT; const wCronos = "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23"; -const usdtIoTex = "0x6fbCdc1169B5130C59E72E51Ed68A84841C98cd1"; -const daiIoTex = "0x1CbAd85Aa66Ff3C12dc84C5881886EEB29C1bb9b"; -const usdcIoTex = "0x3B2bf2b523f54C4E454F08Aa286D03115aFF326c"; -const busdIoTex = "0xacee9b11cd4b3f57e58880277ac72c8c41abe4e4"; -const wIotex = "0xa00744882684c3e4747faefd68d283ea44099d03"; +const usdtIoTex = ADDRESSES.iotex.ioUSDT; +const daiIoTex = ADDRESSES.iotex.ioDAI; +const usdcIoTex = ADDRESSES.iotex.ioUSDC; +const busdIoTex = ADDRESSES.iotex.ioBUSD; +const wIotex = ADDRESSES.iotex.WIOTX; -const usdtOptimism = "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"; -const daiOptimism = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"; +const usdtOptimism = ADDRESSES.optimism.USDT; +const daiOptimism = ADDRESSES.optimism.DAI; const wbtcOptimism = "0x68f180fcCe6836688e9084f035309E29Bf0A2095"; -const wbtcArbitrum = "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"; -const usdtArbitrum = "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"; -const daiArbitrum = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"; +const wbtcArbitrum = ADDRESSES.arbitrum.WBTC; +const usdtArbitrum = ADDRESSES.arbitrum.USDT; +const daiArbitrum = ADDRESSES.optimism.DAI; @@ -170,7 +171,7 @@ async function ethTvl(timestamp, ethBlock) { }) tokenBalance = (await sdk.api.eth.getBalance({ target: eth1Addr })).output; - sdk.util.sumSingleBalance(balances, "ethereum:" + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", tokenBalance) + sdk.util.sumSingleBalance(balances, "ethereum:" + ADDRESSES.ethereum.WETH, tokenBalance) return sumTokens(balances, toa, ethBlock) } diff --git a/projects/ren/index.js b/projects/ren/index.js index fc9c935264..3ce3d800d7 100644 --- a/projects/ren/index.js +++ b/projects/ren/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, gql } = require("graphql-request"); const sdk = require("@defillama/sdk"); const { getTokenSupply } = require('../helper/solana') @@ -96,7 +97,7 @@ async function polygon(timestamp, ethBlock, chainBlocks) { async function arbitrum(timestamp, ethBlock, chainBlocks) { return { "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d": (await sdk.api.erc20.totalSupply({ - target: "0xdbf31df14b66535af65aac99c32e9ea844e14501", + target: ADDRESSES.fantom.renBTC, chain: "arbitrum", block: chainBlocks.arbitrum })).output diff --git a/projects/reserve/index.js b/projects/reserve/index.js index 08c785988d..9a5f142178 100644 --- a/projects/reserve/index.js +++ b/projects/reserve/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require("../helper/unwrapLPs.js"); @@ -8,10 +9,10 @@ const rsr = "0x320623b8E4fF03373931769A31Fc52A4E78B5d70"; async function tvl(_time, block, _, { api }) { // First section is for RSV which will soon be deprecated const ownerTokens = [[[ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", //usdc + ADDRESSES.ethereum.USDC, //usdc "0x8e870d67f660d95d5be530380d0ec0bd388289e1", //pax - "0x0000000000085d4780B73119b644AE5ecd22b376", //tusd - "0x4Fabb145d64652a948d72533023f6E7A623C7C53", //busd + ADDRESSES.ethereum.TUSD, //tusd + ADDRESSES.ethereum.BUSD, //busd ], vault]] const creationLogs = await _getLogs(api) diff --git a/projects/rhea/index.js b/projects/rhea/index.js index 2a70a01c6c..62dd90e398 100644 --- a/projects/rhea/index.js +++ b/projects/rhea/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const KDAI_RHEA_LP = "0x0b8ac02bf51e1c3a809f8f773dd44025c31c4467"; -const KDAI = "0x5c74070fdea071359b86082bd9f9b3deaafbe32b"; +const KDAI = ADDRESSES.klaytn.KDAI; const TREASURY = "0x32F71263CF373d726f4e45286Bbb6935d553E8D0"; const RHEA = "0x0758fb651282581f86316514e8f5021493e9ed83"; const STAKING_ADDR = "0xee0f2e95e69d4246f8267be6d0f2610ce75d993c"; diff --git a/projects/ribbon-earn/index.js b/projects/ribbon-earn/index.js index c14a017761..55a9bbe9ab 100644 --- a/projects/ribbon-earn/index.js +++ b/projects/ribbon-earn/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const abi = require("../ribbon/abi.json") const { sumTokensExport } = require('../helper/unwrapLPs'); @@ -8,8 +9,8 @@ const rearnUSDC = "0x84c2b16FA6877a8fF4F3271db7ea837233DFd6f0"; const rearnstETH = "0xCE5513474E077F5336cf1B33c1347FDD8D48aE8c"; // Ethereum Assets -const usdc = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; -const steth = "0xae7ab96520de3a18e5e111b5eaab095312d7fe84"; +const usdc = ADDRESSES.ethereum.USDC; +const steth = ADDRESSES.ethereum.STETH; async function addVaults({ balances, chain, vaults, block, transformAddress = a => a }) { const { output: balanceRes } = await sdk.api.abi.multiCall({ diff --git a/projects/ribbon/evm.js b/projects/ribbon/evm.js index f6fe4c9364..1d8c5385ea 100644 --- a/projects/ribbon/evm.js +++ b/projects/ribbon/evm.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { staking } = require("../helper/staking"); @@ -37,26 +38,26 @@ const pauserAvax = "0xf08d6a9c2C5a2Dc9B8645c5Ac0b529D4046D19aa"; const rearnUSDC = "0x84c2b16FA6877a8fF4F3271db7ea837233DFd6f0"; // Ethereum Assets -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; -const wbtc = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"; -const usdc = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; -const aave = "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9"; +const weth = ADDRESSES.ethereum.WETH; +const wbtc = ADDRESSES.ethereum.WBTC; +const usdc = ADDRESSES.ethereum.USDC; +const aave = ADDRESSES.ethereum.AAVE; const perp = "0xbC396689893D065F41bc2C6EcbeE5e0085233447"; const ape = "0x4d224452801ACEd8B2F0aebE155379bb5D594381"; const bal = "0xba100000625a3754423978a60c9317c58a424e3D"; -const reth = "0xae78736Cd615f374D3085123A210448E74Fc6393"; -const steth = "0xae7ab96520de3a18e5e111b5eaab095312d7fe84"; +const reth = ADDRESSES.ethereum.RETH; +const steth = ADDRESSES.ethereum.STETH; const spell = "0x090185f2135308BaD17527004364eBcC2D37e5F6"; const badger = "0x3472A5A71965499acd81997a54BBA8D852C6E53d"; -const wsteth = "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0"; -const ldo = "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32"; +const wsteth = ADDRESSES.ethereum.WSTETH; +const ldo = ADDRESSES.ethereum.LIDO; const rbnWeth = "0xdb44a4a457c87225b5ba45f27b7828a4cc03c112"; -const uni = "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"; +const uni = ADDRESSES.ethereum.UNI; // Avalanche Assets -const wavax = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"; +const wavax = ADDRESSES.avax.WAVAX; const savax = "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"; -const usdce = "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664"; +const usdce = ADDRESSES.avax.USDC_e; async function addVaults({ balances, chain, vaults, block, transformAddress = a => a }) { const { output: balanceRes } = await sdk.api.abi.multiCall({ @@ -130,7 +131,7 @@ module.exports = { bsc: { tvl: sumTokensExport({ tokensAndOwners: [ - ['0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', '0xC56d5a5BE96B5fB51C2bA5cBC59AfE77198838F7'], // BNB Theta vault + [ADDRESSES.bsc.WBNB, '0xC56d5a5BE96B5fB51C2bA5cBC59AfE77198838F7'], // BNB Theta vault ] }) } diff --git a/projects/rikkei-finance/index.js b/projects/rikkei-finance/index.js index 048c5c3540..9ce99e76ab 100644 --- a/projects/rikkei-finance/index.js +++ b/projects/rikkei-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require("../helper/compound"); module.exports = { @@ -6,7 +7,7 @@ module.exports = { '0x4f3e801Bd57dC3D641E72f2774280b21d31F64e4', 'bsc', '0x157822aC5fa0Efe98daa4b0A55450f4a182C10cA', - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c' + ADDRESSES.bsc.WBNB ) } }; \ No newline at end of file diff --git a/projects/rising-undead/index.js b/projects/rising-undead/index.js index 5fce4d8231..37fe07560a 100644 --- a/projects/rising-undead/index.js +++ b/projects/rising-undead/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); const owner = "0xc732471083342a842a728221878327c8DeE8aEDB"; const tokens = [ - {symbol: "WKAVA", address: "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b" }, - {symbol: "ETH", address: "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D" }, - {symbol: "USDC", address: "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f" }, - {symbol: "USDT", address: "0xB44a9B6905aF7c801311e8F4E76932ee959c663C" }, + {symbol: "WKAVA", address: ADDRESSES.kava.WKAVA }, + {symbol: "ETH", address: ADDRESSES.moonriver.USDC }, + {symbol: "USDC", address: ADDRESSES.telos.ETH }, + {symbol: "USDT", address: ADDRESSES.moonriver.USDT }, ] module.exports = { diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js index bdddf1b61e..a41df23714 100644 --- a/projects/risk-harbor/index.js +++ b/projects/risk-harbor/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { queryV1Beta1, @@ -16,23 +17,23 @@ const networks = { vaults: [ // [underwritingAsset, vaultAddress] [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + ADDRESSES.ethereum.USDC, "0x83944C256e5C057A246aE1b1945934440eb35Af6", ], [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + ADDRESSES.ethereum.USDC, "0x8D999a2f262FfDA47A734B987D1A15bc984e45Be", ], [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + ADDRESSES.ethereum.USDC, "0x0881Ec8e0e743906E1c1dFeE8Ae12BfDc0611b24", ], [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + ADDRESSES.ethereum.USDC, "0x8529687adD661120C9E23E366Cc7F545f1A03ADf", ], [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + ADDRESSES.ethereum.USDC, "0x61635d1De721DD1DB35f8aCFD0f1ea367dF65671", ], ], @@ -40,15 +41,15 @@ const networks = { arbitrum: { vaults: [ [ - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + ADDRESSES.arbitrum.USDC, "0x207472891AF32F5636c35d9ca8e17464Df7108bB", ], [ - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + ADDRESSES.arbitrum.USDC, "0xbcA81A2118982182d897845571BE950aE94C619c", ], [ - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + ADDRESSES.arbitrum.USDC, "0x2DafE4DD7C661c2CEaf967d51206f5130AA32782", ], ], @@ -57,7 +58,7 @@ const networks = { vaultManager: "0xBf8c506a56F355d2340F37a91FA6569737b08254", vaults: [ [ - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", + ADDRESSES.avax.USDC, "0x2DafE4DD7C661c2CEaf967d51206f5130AA32782", ], [ @@ -66,11 +67,11 @@ const networks = { "0x2DafE4DD7C661c2CEaf967d51206f5130AA32782", ], [ - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", + ADDRESSES.avax.USDC, "0xBe09C11d28683E283fdf7566DE1685A6A221B6bf", ], [ - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", + ADDRESSES.avax.USDC, "0xBe09C11d28683E283fdf7566DE1685A6A221B6bf", ], ], @@ -78,7 +79,7 @@ const networks = { fantom: { vaults: [ [ - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", + ADDRESSES.fantom.USDC, "0xca67B16b02E418CFbC9EF287C7C20B77dbb665f2", ], ], @@ -86,7 +87,7 @@ const networks = { aurora: { vaults: [ [ - "0xb12bfca5a55806aaf64e99521918a4bf0fc40802", + ADDRESSES.aurora.USDC_e, "0x8D999a2f262FfDA47A734B987D1A15bc984e45Be", ], ], @@ -95,7 +96,7 @@ const networks = { vaultManager: "0x7c1187AF4D6B23F7f7682799454168E24bC06EED", vaults: [ [ - "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + ADDRESSES.optimism.USDC, "0xfB969b45Fa9186CD8B420407552aD447F7c3817b", ], ], diff --git a/projects/risq.js b/projects/risq.js index 32670d0633..4a66cec738 100644 --- a/projects/risq.js +++ b/projects/risq.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { transformBscAddress } = require('./helper/portedTokens'); const bnbPool = "0x55D10490C500FBF334C0fD91A0b205a5D64b9367"; //BNB_POOL -const WBNBAddresss = "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c"; +const WBNBAddresss = ADDRESSES.bsc.WBNB; const poolsV1 = [ "0x3BEC8B9e416d65209eB5432aDDCb38146E977CcB", //WBTC_POOL @@ -17,8 +18,8 @@ const poolsV1 = [ ]; const tokens = [ - "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", //WBTC - "0x2170ed0880ac9a755fd29b2688956bd959f933f8", //WETH + ADDRESSES.bsc.BTCB, //WBTC + ADDRESSES.bsc.ETH, //WETH "0x8ff795a6f4d97e7887c79bea79aba5cc76444adf", //BCH "0x4338665cbb7b2485a8855a139b75d5e34ab0db94", //LTC "0x52ce071bd9b1c4b00a0b92d298c512478cad67e8", //COMP diff --git a/projects/rocifiv1/index.js b/projects/rocifiv1/index.js index 207b2098c2..053acce371 100644 --- a/projects/rocifiv1/index.js +++ b/projects/rocifiv1/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') -const USDC = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"; -const WETH = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" +const USDC = ADDRESSES.polygon.USDC; +const WETH = ADDRESSES.polygon.WETH_1 const ROCI_POOLS = [ '0x883F10Dc3960493f38F69b8696dC331D22fdEd76', diff --git a/projects/rocketpool/index.js b/projects/rocketpool/index.js index 4531c423b7..fead07a1d6 100644 --- a/projects/rocketpool/index.js +++ b/projects/rocketpool/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const abi = require('./abi.json') @@ -5,7 +6,7 @@ const rocketMinipoolManager = '0x6293B8abC1F36aFB22406Be5f96D893072A8cF3a' const rocketVault = '0x3bDC69C4E5e13E52A65f5583c23EFB9636b469d6' const rocketNodeStaking_contract = '0x3019227b2b8493e45Bf5d25302139c9a2713BF15' -const weth = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const weth = ADDRESSES.ethereum.WETH const rpl = '0xd33526068d116ce69f19a9ee46f0bd304f21a51f' async function tvl(timestamp, ethBlock, chainBlocks) { diff --git a/projects/rose-finance/index.js b/projects/rose-finance/index.js index f37296f695..bdd7b2ede8 100644 --- a/projects/rose-finance/index.js +++ b/projects/rose-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, unknownTombs } = require("../helper/unknownTokens"); const token = "0x07D49375A3213eF25aAA47C97A2d23A754bB8f8a"; @@ -23,5 +24,5 @@ module.exports = unknownTombs({ module.exports.arbitrum.tvl = sumTokensExport({ owner: GenMasterchef, - tokens: ['0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8'] + tokens: [ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC] }) diff --git a/projects/rose/index.js b/projects/rose/index.js index bb3fb23785..3f6d920792 100644 --- a/projects/rose/index.js +++ b/projects/rose/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { default: BigNumber } = require("bignumber.js"); @@ -13,16 +14,16 @@ const rusdPool = "0x79B0a67a4045A7a8DC04b17456F4fe15339cBA34"; // token addresses const DAI = "0xe3520349F477A5F6EB06107066048508498A291b"; -const USDC = "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802"; -const USDT = "0x4988a896b1227218e4A686fdE5EabdcAbd91571f"; -const FRAX = "0xda2585430fef327ad8ee44af8f1f989a2a91a3d2"; +const USDC = ADDRESSES.aurora.USDC_e; +const USDT = ADDRESSES.aurora.USDT_e; +const FRAX = ADDRESSES.aurora.FRAX; const UST = "0x5ce9F0B6AFb36135b5ddBF11705cEB65E634A9dC"; -const MAI = "0xdFA46478F9e5EA86d57387849598dbFB2e964b02"; +const MAI = ADDRESSES.moonbeam.MAI; // const BUSD = "0x5C92A4A7f59A9484AFD79DbE251AD2380E589783"; const RUSD = "0x19cc40283B057D6608C22F1D20F17e16C245642E"; const ROSE = "0xdcD6D4e2B3e1D1E1E6Fa8C21C8A323DcbecfF970"; const STROSE = "0xe23d2289FBca7De725DC21a13fC096787A85e16F"; -const NEAR = "0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d"; +const NEAR = ADDRESSES.aurora.NEAR; const WETH = "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB"; const WBTC = "0xf4eb217ba2454613b15dbdea6e5f22276410e89e"; diff --git a/projects/routerprotocol/index.js b/projects/routerprotocol/index.js index d3f0334c40..c8fafab9c4 100644 --- a/projects/routerprotocol/index.js +++ b/projects/routerprotocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') const NATIVE_ADDRESS = "NATIVE"; @@ -6,83 +7,83 @@ const config = { arbitrum: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", decimals: 6 }, - { name: "weth", address: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", decimals: 18 }, + { name: "usd-coin", address: ADDRESSES.arbitrum.USDC, decimals: 6 }, + { name: "weth", address: ADDRESSES.arbitrum.WETH, decimals: 18 }, ] }, avax: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", decimals: 6 }, + { name: "usd-coin", address: ADDRESSES.avax.USDC_e, decimals: 6 }, { name: "wbnb", address: "0x264c1383EA520f73dd837F915ef3a732e204a493", decimals: 18 }, - { name: "wrapped-avax", address: "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", decimals: 18 }, - { name: "weth", address: "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", decimals: 18 }, + { name: "wrapped-avax", address: ADDRESSES.avax.WAVAX, decimals: 18 }, + { name: "weth", address: ADDRESSES.avax.WETH_e, decimals: 18 }, ] }, fantom: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", decimals: 6 }, + { name: "usd-coin", address: ADDRESSES.fantom.USDC, decimals: 6 }, { name: "wmatic", address: "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", decimals: 18 }, { name: "wbnb", address: "0x27f26F00e1605903645BbaBC0a73E35027Dccd45", decimals: 18 }, { name: "wrapped-avax", address: "0x511D35c52a3C244E7b8bd92c0C297755FbD89212", decimals: 18 }, - { name: "wrapped-fantom", address: "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", decimals: 18 }, + { name: "wrapped-fantom", address: ADDRESSES.fantom.WFTM, decimals: 18 }, { name: "weth", address: "0x74b23882a30290451A17c44f4F05243b6b58C76d", decimals: 18 }, ] }, optimism: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", decimals: 6 }, - { name: "weth", address: "0x4200000000000000000000000000000000000006", decimals: 18 }, + { name: "usd-coin", address: ADDRESSES.optimism.USDC, decimals: 6 }, + { name: "weth", address: ADDRESSES.tombchain.FTM, decimals: 18 }, ] }, polygon: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", decimals: 6 }, + { name: "usd-coin", address: ADDRESSES.polygon.USDC, decimals: 6 }, { name: "mimatic", address: "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1", decimals: 18 }, { name: "route", address: "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4", decimals: 18 }, { name: "wmatic", address: "0x4c28f48448720e9000907bc2611f73022fdce1fa", decimals: 18 }, { name: "dfyn-network", address: "0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97", decimals: 18 }, - { name: "wbnb", address: "0x5c4b7CCBF908E64F32e12c6650ec0C96d717f03F", decimals: 18 }, + { name: "wbnb", address: ADDRESSES.polygon.BNB, decimals: 18 }, { name: "wrapped-avax", address: "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b", decimals: 18 }, { name: "wrapped-fantom", address: "0xC9c1c1c20B3658F8787CC2FD702267791f224Ce1", decimals: 18 }, - { name: "weth", address: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", decimals: 18 }, + { name: "weth", address: ADDRESSES.polygon.WETH_1, decimals: 18 }, ] }, bsc: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", decimals: 18 }, + { name: "usd-coin", address: ADDRESSES.bsc.USDC, decimals: 18 }, { name: "wmatic", address: "0xcc42724c6683b7e57334c4e856f4c9965ed682bd", decimals: 18 }, - { name: "wbnb", address: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", decimals: 18 }, + { name: "wbnb", address: ADDRESSES.bsc.WBNB, decimals: 18 }, { name: "binance-peg-avalanche", address: "0x1CE0c2827e2eF14D5C4f29a091d735A204794041", decimals: 18 }, { name: "wrapped-fantom", address: "0xAD29AbB318791D579433D831ed122aFeAf29dcfe", decimals: 18 }, - { name: "weth", address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", decimals: 18 }, + { name: "weth", address: ADDRESSES.bsc.ETH, decimals: 18 }, ] }, ethereum: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", decimals: 6 }, + { name: "usd-coin", address: ADDRESSES.ethereum.USDC, decimals: 6 }, { name: "route", address: "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4", decimals: 18 }, - { name: "wmatic", address: "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", decimals: 18 }, + { name: "wmatic", address: ADDRESSES.ethereum.MATIC, decimals: 18 }, { name: "dfyn-network", address: "0x9695e0114e12C0d3A3636fAb5A18e6b737529023", decimals: 18 }, - { name: "wbnb", address: "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", decimals: 18 }, + { name: "wbnb", address: ADDRESSES.ethereum.BNB, decimals: 18 }, { name: "avalanche-wormhole", address: "0x85f138bfEE4ef8e540890CFb48F620571d67Eda3", decimals: 18 }, - { name: "fantom", address: "0x4E15361FD6b4BB609Fa63C81A2be19d873717870", decimals: 18 }, - { name: "weth", address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", decimals: 18 }, + { name: "fantom", address: ADDRESSES.ethereum.FTM, decimals: 18 }, + { name: "weth", address: ADDRESSES.ethereum.WETH, decimals: 18 }, { name: "wrapped-cro", address: "0xA0b73E1Ff0B80914AB6fe0444E65848C4C34450b", decimals: 18 }, ] }, aurora: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802", decimals: 6 }, + { name: "usd-coin", address: ADDRESSES.aurora.USDC_e, decimals: 6 }, { name: "weth", address: "0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB", decimals: 18 }, - { name: "wmatic", address: "0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8", decimals: 18 }, - { name: "wbnb", address: "0x2bF9b864cdc97b08B6D79ad4663e71B8aB65c45c", decimals: 18 }, + { name: "wmatic", address: ADDRESSES.oasis.USDT, decimals: 18 }, + { name: "wbnb", address: ADDRESSES.syscoin.USDC, decimals: 18 }, { name: "wrapped-avax", address: "0x80A16016cC4A2E6a2CACA8a4a498b1699fF0f844", decimals: 18 }, ], }, @@ -95,19 +96,19 @@ const config = { cronos: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59", decimals: 6 }, + { name: "usd-coin", address: ADDRESSES.cronos.USDC, decimals: 6 }, { name: "wrapped-cro", address: "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23", decimals: 18 }, { name: "wmatic", address: "0xad79AC3c5a5c15C6B9194F5568e451b3fc3C2B40", decimals: 18 }, - { name: "wbnb", address: "0xfa9343c3897324496a05fc75abed6bac29f8a40f", decimals: 18 }, - { name: "wrapped-avax", address: "0x765277eebeca2e31912c9946eae1021199b39c61", decimals: 18 }, + { name: "wbnb", address: ADDRESSES.telos.ETH, decimals: 18 }, + { name: "wrapped-avax", address: ADDRESSES.shiden.ETH, decimals: 18 }, { name: "weth", address: "0xe44Fd7fCb2b1581822D0c862B68222998a0c299a", decimals: 18 }, - { name: "wrapped-fantom", address: "0xB44a9B6905aF7c801311e8F4E76932ee959c663C", decimals: 18 }, + { name: "wrapped-fantom", address: ADDRESSES.moonriver.USDT, decimals: 18 }, ], }, kava: { contractAddress: "0x6e14f48576265272B6CAA3A7cC500a26050Be64E", tokens: [ - { name: "usd-coin", address: "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", decimals: 6 }, + { name: "usd-coin", address: ADDRESSES.telos.ETH, decimals: 6 }, ], }, } diff --git a/projects/rubic/index.js b/projects/rubic/index.js index 914356c364..952db83665 100644 --- a/projects/rubic/index.js +++ b/projects/rubic/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const solana = require('../helper/solana') const { stakings } = require('../helper/staking'); @@ -22,17 +23,17 @@ const pools = { }; const usdcByChain = { - bsc: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', - ethereum: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - polygon: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', - fantom: '0x04068da6c83afcfa0e13ba15a6696662335d5b75', - avax: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', + bsc: ADDRESSES.bsc.USDC, + ethereum: ADDRESSES.ethereum.USDC, + polygon: ADDRESSES.polygon.USDC, + fantom: ADDRESSES.fantom.USDC, + avax: ADDRESSES.avax.USDC_e, harmony: '0x985458e523db3d53125813ed68c274899e9dfab4', - moonriver: '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', - arbitrum: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - aurora: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802', - solana: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', - kava: '0xfA9343C3897324496A05fC75abeD6bAC29f8A40f' + moonriver: ADDRESSES.moonriver.USDC, + arbitrum: ADDRESSES.arbitrum.USDC, + aurora: ADDRESSES.aurora.USDC_e, + solana: ADDRESSES.solana.USDC, + kava: ADDRESSES.telos.ETH } function chainTvl(chain) { diff --git a/projects/rubicon/index.js b/projects/rubicon/index.js index 5f7ad1b245..32f6290c20 100644 --- a/projects/rubicon/index.js +++ b/projects/rubicon/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {transformOptimismAddress} = require('../helper/portedTokens') const {sumTokensAndLPsSharedOwners} = require('../helper/unwrapLPs') const tokens = [ - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", //USDC + ADDRESSES.optimism.USDC, //USDC "0x68f180fcce6836688e9084f035309e29bf0a2095", //WBTC - "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", //DAI - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", //USDT + ADDRESSES.optimism.DAI, //DAI + ADDRESSES.optimism.USDT, //USDT "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", //SNX - "0x4200000000000000000000000000000000000006", //ETH - "0x4200000000000000000000000000000000000042" //OP + ADDRESSES.tombchain.FTM, //ETH + ADDRESSES.optimism.OP //OP ] const owners = [ diff --git a/projects/ruby-exchange-stable/index.js b/projects/ruby-exchange-stable/index.js index e66f1295fb..bba6b7561d 100644 --- a/projects/ruby-exchange-stable/index.js +++ b/projects/ruby-exchange-stable/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { europa: { tvl: sumTokensExport({ ownerTokens: [ [ [ - '0x73d22d8a2D1f59Bf5Bcf62cA382481a2073FAF58', - '0x1c0491E3396AD6a35f061c62387a95d7218FC515', - '0x5F795bb52dAC3085f578f4877D450e2929D2F13d', - '0xD05C4be5f3be302d376518c9492EC0147Fa5A718', + ADDRESSES.europa.USDP, + ADDRESSES.europa.USDT, + ADDRESSES.europa.USDC, + ADDRESSES.europa.DAI, ], '0x45c550dc634bcc271c092a20d36761d3bb834e5d'] ] })} diff --git a/projects/rubydex/index.js b/projects/rubydex/index.js index 6a14e3bb33..ce5198f8e4 100644 --- a/projects/rubydex/index.js +++ b/projects/rubydex/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); -const ARBITRUM_USDT = '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9'; +const ARBITRUM_USDT = ADDRESSES.arbitrum.USDT; const VAULT_CONTRACT = '0xa55D96B2EC5c5899fC69886CACfCba65b91bf8B6'; module.exports = { diff --git a/projects/rubyfinance/index.js b/projects/rubyfinance/index.js index d7ec589bf1..b1cea165c4 100644 --- a/projects/rubyfinance/index.js +++ b/projects/rubyfinance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); const { getFixBalances } = require("../helper/portedTokens"); const { getTokenPrices } = require("../helper/unknownTokens") const { stakingUnknownPricedLP } = require("../helper/staking") -const wkavaAddress = "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b"; +const wkavaAddress = ADDRESSES.kava.WKAVA; const rshareTokenAddress = "0x5547F680Ad0104273d0c007073B87f98dEF199c6"; const rshareRewardPoolAddress = "0x63c8069EE16BA666800cECaFd99f4C75ad6dd7Aa"; const genesisPoolAddress = "0x0D6f8847EdB9ea4203241529ee753f6b26920f11"; diff --git a/projects/rugdao/index.js b/projects/rugdao/index.js index 56751521a6..49657a9e06 100644 --- a/projects/rugdao/index.js +++ b/projects/rugdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x9e0eE5E4c93e300fF024518d090f98c719504560"; @@ -7,9 +8,9 @@ module.exports = ohmTvl( //MIM ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], //USDT - ["0xc7198437980c041c805a1edcba50c1ce5db95118", false], + [ADDRESSES.avax.USDT_e, false], //USDC - ["0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", false], + [ADDRESSES.avax.USDC_e, false], // RUG-MIM JLP ["0x8b667C1e422c08f9874709939Bc90E71c2BEA167", true] ], diff --git a/projects/ryoshi/index.js b/projects/ryoshi/index.js index dd549a8aec..951d7cf81a 100644 --- a/projects/ryoshi/index.js +++ b/projects/ryoshi/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { masterchefExports } = require('../helper/unknownTokens') -const wDoge = '0xB7ddC6414bf4F5515b52D8BdD69973Ae205ff101' -const nullAddress = '0x0000000000000000000000000000000000000000' +const wDoge = ADDRESSES.dogechain.WWDOGE +const nullAddress = ADDRESSES.null module.exports = masterchefExports({ diff --git a/projects/rysk/index.js b/projects/rysk/index.js index e3770b8575..2f65c945eb 100644 --- a/projects/rysk/index.js +++ b/projects/rysk/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') @@ -13,9 +14,9 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, balances, tokensAndOwners: [ - ['0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', '0xc10b976c671ce9bff0723611f01422acbae100a5'], // LP - ['0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool - ['0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool + [ADDRESSES.arbitrum.USDC, '0xc10b976c671ce9bff0723611f01422acbae100a5'], // LP + [ADDRESSES.arbitrum.USDC, '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool + [ADDRESSES.arbitrum.WETH, '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool ] }) } diff --git a/projects/safedollar/index.js b/projects/safedollar/index.js index ba1fa0e21f..22069ad8de 100644 --- a/projects/safedollar/index.js +++ b/projects/safedollar/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const farmUtils = require('./farm-utils'); const BigNumber = require('bignumber.js'); @@ -9,7 +10,7 @@ const utils = require('../helper/utils'); const Contracts = { SafeAssets: [{ collateralAddress: "0x736Fb0CbB5F55941ecF6A811be4926c2cFa4dD4b", - address: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" + address: ADDRESSES.polygon.USDC },{ collateralAddress: "0xbd75b2a992ea83abed729e60022c9fe8fe539e54", address: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" diff --git a/projects/safeohm/index.js b/projects/safeohm/index.js index 94abfb2c6d..a5eb06e187 100644 --- a/projects/safeohm/index.js +++ b/projects/safeohm/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x16d657D5CfD6D7f894BFdB2F5481f8a23bDce269" module.exports = ohmTvl(treasury, [ - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], + [ADDRESSES.bsc.WBNB, false], ["0xb2e7793aad96e4e3048e0eb8d091e13a12087a52", true], ], "bsc", "0x7C340D53252A5b921754A436Ce3211Ac6E0F267D", "0xBDaa094a95e452c6bA175cE9EdfeFBa04e6a51Ac") \ No newline at end of file diff --git a/projects/sakeperp/index.js b/projects/sakeperp/index.js index 334cbdcf84..20d230a11c 100644 --- a/projects/sakeperp/index.js +++ b/projects/sakeperp/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -8,7 +9,7 @@ const bscSake = "0x8BD778B12b15416359A227F0533Ce2D91844e1eD"; const bscFactory = "0xA534cf041Dcd2C95B4220254A0dCb4B905307Fd8"; const bscSakebar = "0xbC83FAdA7D0881F772daaB2B4295F949FA309B59"; const perpVault = "0xa34dA41edB2b15A20893d2208377E24D8dcdeB6e"; -const bUsd = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; +const bUsd = ADDRESSES.bsc.BUSD; async function tvl(factory, block, chain) { let balances = {}; diff --git a/projects/salem/index.js b/projects/salem/index.js index 8a8bc8229e..915b93a4e2 100644 --- a/projects/salem/index.js +++ b/projects/salem/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { addFundsInMasterChef } = require("../helper/masterchef"); const { stakingUnknownPricedLP } = require("../helper/staking"); @@ -27,8 +28,8 @@ const ftmPool2 = [ ] const translate = { - "0xb44a9b6905af7c801311e8f4e76932ee959c663c": "fantom:0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", - "0xf2001b145b43032aaf5ee2884e456ccd805f677d": "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.moonriver.USDT]: "fantom:" + ADDRESSES.fantom.WFTM, + "0xf2001b145b43032aaf5ee2884e456ccd805f677d": ADDRESSES.ethereum.DAI, "0x7dff46370e9ea5f0bad3c4e29711ad50062ea7a4": "bsc:0x570a5d26f7765ecb712c0924e4de545b89fd43df" }; diff --git a/projects/samodao/index.js b/projects/samodao/index.js index 8d7c105e1d..e03b48b92b 100644 --- a/projects/samodao/index.js +++ b/projects/samodao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); @@ -5,7 +6,7 @@ const token = "0xcd7CBc46d083A245B45E22Cb4bE2c569947Ce896"; const tokenStaking = "0x082e884e640eC62C67ea3dC791793E4dF2C46c2D"; const treasury = "0xBB575FbDd418E9e8405D97A33043818A379CD2Ca"; const treasurytokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0x4a49858B15F934306725B32582FFa55f95D9F90a", true] // CAKE LP (samoDAO-BUSD) ] diff --git a/projects/sashimiswap/index.js b/projects/sashimiswap/index.js index b292dd2c54..600ab661e4 100644 --- a/projects/sashimiswap/index.js +++ b/projects/sashimiswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const {uniTvlExport} = require("../helper/calculateUniTvl"); const { compoundExports } = require("../helper/compound"); @@ -6,17 +7,17 @@ const { staking } = require("../helper/staking"); const factoryETH = "0xF028F723ED1D0fE01cC59973C49298AA95c57472"; const comprollerETH = "0xB5d53eC97Bed54fe4c2b77f275025c3fc132D770"; const sIETH = "0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82"; -const WETHEquivalent = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const WETHEquivalent = ADDRESSES.ethereum.WETH; const factoryBSC = "0x1DaeD74ed1dD7C9Dabbe51361ac90A69d851234D"; const comprollerBSC = "0x88fEf82FDf75E32e4BC0e662d67CfcEF4838F026"; const sIBNB = "0x6Df484F552115fa7F54bE4A6D7aE2999cadB2324"; -const WBNBEquivalent = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; +const WBNBEquivalent = ADDRESSES.bsc.WBNB; const factoryHECO = "0xC28E27870558cF22ADD83540d2126da2e4b464c2"; const comprollerHECO = "0x6Cb9d7ecf84b0d3E7704ed91046e16f9D45C00FA"; const sIHT = "0xf13d3E10DEE31b80887422c89285112Dd00ce0B5"; -const WHTEquivalent = "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f"; +const WHTEquivalent = ADDRESSES.heco.WHT; const {tvl: ethMarketsTvl, borrowed: borrowedEth} = compoundExports( comprollerETH, diff --git a/projects/scientixfinance/index.js b/projects/scientixfinance/index.js index c376765495..79d32727ba 100644 --- a/projects/scientixfinance/index.js +++ b/projects/scientixfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*================================================== Modules ==================================================*/ @@ -16,7 +17,7 @@ const Farm = '0x68145F3319F819b8E01Dfa3c094fa8205E9EfB9a'; const VotingEscrow = '0xF92aBA2A79dC133278DE2CDDB38Db775A4b5B024'; // Token -const BUSD = "0xe9e7cea3dedca5984780bafc599bd69add087d56"; +const BUSD = ADDRESSES.bsc.BUSD; const ibALPACA = "0xf1be8ecc990cbcb90e166b71e368299f0116d421"; const scUSD = "0x0E5C2b15666EEE4b66788E45CF4Da0392C070fa7"; const SCIX = "0x2CFC48CdFea0678137854F010b5390c5144C0Aa5"; diff --git a/projects/scion-finance/addresses.js b/projects/scion-finance/addresses.js index f3277a765a..b0d1ee3554 100644 --- a/projects/scion-finance/addresses.js +++ b/projects/scion-finance/addresses.js @@ -1,4 +1,5 @@ -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const ADDRESSES = require('../helper/coreAssets.json') +const USDC = ADDRESSES.ethereum.USDC; module.exports = { moonriver: [ diff --git a/projects/scream/index.js b/projects/scream/index.js index f992f35803..26b8f3ef01 100644 --- a/projects/scream/index.js +++ b/projects/scream/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getCompoundV2Tvl } = require('../helper/compound') const { transformFantomAddress } = require('../helper/portedTokens') const { staking } = require('../helper/staking') @@ -7,7 +8,7 @@ function lending(borrowed) { const transformAdress = await transformFantomAddress() const balances = await getCompoundV2Tvl("0x260e596dabe3afc463e75b6cc05d8c46acacfb09", "fantom", addr => { if (addr === "0xAd84341756Bf337f5a0164515b1f6F993D194E1f") { - return "0x0000000000085d4780b73119b644ae5ecd22b376" + return ADDRESSES.ethereum.TUSD } return transformAdress(addr) }, undefined, undefined, borrowed)(...params) diff --git a/projects/securedao/index.js b/projects/securedao/index.js index 02e9af33f4..7d9391d5d8 100644 --- a/projects/securedao/index.js +++ b/projects/securedao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {ohmTvl} = require("../helper/ohm"); const scr = "0x8183C18887aC4386CE09Dbdf5dF7c398DAcB2B5a"; @@ -7,7 +8,7 @@ const stakingContract = "0x3d97040e407078823891C59BB07eadb2dDF3AE32" module.exports = { misrepresentedTokens: true, ...ohmTvl(treasury, [ - ["0x82f0b8b456c1a451378467398982d4834b6829c1", false], // MIM + [ADDRESSES.fantom.MIM, false], // MIM ["0x468c174cc015d4a697586C0a99F95E045F7e6f91", true] // scrMim SPIRIT LP ], "fantom", stakingContract, scr, undefined, undefined, false) } \ No newline at end of file diff --git a/projects/seeder/index.js b/projects/seeder/index.js index c7a48f3d5b..adf7db3294 100644 --- a/projects/seeder/index.js +++ b/projects/seeder/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { transformBscAddress } = require("../helper/portedTokens"); @@ -6,7 +7,7 @@ const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); const farmContract = "0x1aF28E7b1A03fA107961897a28449F4F9768ac75"; const bankContract = "0x99dD1c7a2893931D209fA5C57FE65f34d4C11db8"; const LEAF = "0x1cbddf83de068464eba3a4e319bd3197a7eea12c"; -const WBNB = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; +const WBNB = ADDRESSES.bsc.WBNB; const bscTvl = async (chainBlocks) => { const balances = {}; diff --git a/projects/senpai/index.js b/projects/senpai/index.js index c8f3e72380..08b229e9b9 100644 --- a/projects/senpai/index.js +++ b/projects/senpai/index.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {ohmTvl} = require('../helper/ohm') const transforms = { - "0xf74195bb8a5cf652411867c5c2c5b8c2a402be35": "0x6b175474e89094c44da98b954eedeac495271d0f", - "0x66a2a913e447d6b4bf33efbec43aaef87890fbbc": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [ADDRESSES.boba.DAI]: ADDRESSES.ethereum.DAI, + [ADDRESSES.boba.USDC]: ADDRESSES.ethereum.USDC, } module.exports={ ...ohmTvl("0xbfFC76cDC85A496404662dc7D8A270cE9567C544", [ - ["0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35", false], //dai + [ADDRESSES.boba.DAI, false], //dai ["0xF582bC0437a1F1D0476f3a0c8efeEc8d05E6bc96", true], ["0x32fDfeA5CdCe7E417818ed5093E8bD4cA85dfE06", true], - ["0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", false] //usdc + [ADDRESSES.boba.USDC, false] //usdc ], "boba", "0xAECFc89Da2f125D893Da6Fb6d157b5DfF1F0aD9E", "0xaC3a4aF1778203c8B651dAfA73cEd5b79c80F239", addr=> transforms[addr.toLowerCase()] , diff --git a/projects/sentiment/index.js b/projects/sentiment/index.js index 85fcf39b83..8a820defe4 100644 --- a/projects/sentiment/index.js +++ b/projects/sentiment/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { graphFetchById } = require('../helper/http') async function tvl(timestamp, ethBlock, { arbitrum: block }, { api }) { @@ -14,7 +15,7 @@ async function tvl(timestamp, ethBlock, { arbitrum: block }, { api }) { api.multiCall({ target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", calls: userAccounts, abi: "function getBorrows(address account) view returns (uint256)", }), ]) for (let i = 0; i < equity.length; i++) - api.add('0x82af49447d8a07e3bd95bd0d56f35241523fbab1', equity[i] - borrows[i], {}) + api.add(ADDRESSES.arbitrum.WETH, equity[i] - borrows[i], {}) } module.exports = { diff --git a/projects/set-protocol/v1.js b/projects/set-protocol/v1.js index fe2b1d23c3..4f154b7d34 100644 --- a/projects/set-protocol/v1.js +++ b/projects/set-protocol/v1.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); @@ -9,19 +10,19 @@ Settings const cTokenDecimalScale = BigNumber("10").pow(18); const tokens = [ - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC - '0x514910771AF9Ca656af840dff83E8264EcF986CA', // LINK + ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.LINK, // LINK '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359', // SAI - '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.USDC, // USDC '0x39AA39c021dfbaE8faC545936693aC917d5E7563', // cUSDC '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', // cDAI ] const cTokensMap = { - '0x39AA39c021dfbaE8faC545936693aC917d5E7563': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // cUSDC: USDC - '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643': '0x6B175474E89094C44Da98b954EedeAC495271d0F' // cDAI: DAI + '0x39AA39c021dfbaE8faC545936693aC917d5E7563': ADDRESSES.ethereum.USDC, // cUSDC: USDC + '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643': ADDRESSES.ethereum.DAI // cDAI: DAI } /*================================================== diff --git a/projects/sft-protocol/index.js b/projects/sft-protocol/index.js index a3f0f02f24..283f4db2a8 100644 --- a/projects/sft-protocol/index.js +++ b/projects/sft-protocol/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {sumTokens2} = require('../helper/unwrapLPs'); const {utils} = require("ethers"); const {get} = require('../helper/http'); const tokens = [ - '0x0000000000000000000000000000000000000000', // FIL + ADDRESSES.null, // FIL ] const getActiveMinersFromRPC = async () => { diff --git a/projects/shadecash/index.js b/projects/shadecash/index.js index db7d98e6b0..f03bb42deb 100644 --- a/projects/shadecash/index.js +++ b/projects/shadecash/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/unwrapLPs') const addresses = require('./contracts.json') const { transformFantomAddress } = require("../helper/portedTokens"); @@ -6,14 +7,14 @@ const {staking} = require('../helper/staking'); const {pool2} = require('../helper/pool2') const tokens = { - "USDC": "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", + "USDC": ADDRESSES.fantom.USDC, "xBOO": "0xa48d959AE2E88f1dAA7D5F611E01908106dE7598", "SHADE": "0x3A3841f5fa9f2c283EA567d5Aeea3Af022dD2262" }; async function tvl(_, _ethBlock, chainBlocks) { let balances = { - "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83": 0 + [ADDRESSES.fantom.WFTM]: 0 } let calls = []; @@ -24,9 +25,9 @@ async function tvl(_, _ethBlock, chainBlocks) { block: chainBlocks['fantom'], chain: "fantom" }).then(b => { - balances["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"] = + balances[ADDRESSES.fantom.WFTM] = Number(b.output) + - Number(balances["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83"]); + Number(balances[ADDRESSES.fantom.WFTM]); }); } // GET ERC20 BALANCES diff --git a/projects/sharedstake/index.js b/projects/sharedstake/index.js index 9bd72b48d7..5dae9057b0 100644 --- a/projects/sharedstake/index.js +++ b/projects/sharedstake/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const {unwrapUniswapLPs} = require('../helper/unwrapLPs') -const wethAddress = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const wethAddress = ADDRESSES.ethereum.WETH const sgtStakingPool = "0xc637dB981e417869814B2Ea2F1bD115d2D993597" const sgt = "0x84810bcF08744d5862B8181f12d17bfd57d3b078" const pool2StakingPool = "0x64A1DB33f68695df773924682D2EFb1161B329e8" diff --git a/projects/sheesha.js b/projects/sheesha.js index 972a062be2..2562c0a91d 100644 --- a/projects/sheesha.js +++ b/projects/sheesha.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumLPWithOnlyOneToken } = require("./helper/unwrapLPs"); const { stakingUnknownPricedLP } = require("./helper/staking"); async function pool2(timestamp, block, chainBlocks) { const balances = {}; - await sumLPWithOnlyOneToken(balances, "0xB31Ecb43645EB273210838e710f2692CC6b30a11", "0x5d350F07c1D9245c1Ecb7c622c67EDD49c6a0A35", "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`) + await sumLPWithOnlyOneToken(balances, "0xB31Ecb43645EB273210838e710f2692CC6b30a11", "0x5d350F07c1D9245c1Ecb7c622c67EDD49c6a0A35", ADDRESSES.bsc.WBNB, chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`) return balances } diff --git a/projects/shell/index.js b/projects/shell/index.js index 6c0cec1f2c..c66fc55209 100644 --- a/projects/shell/index.js +++ b/projects/shell/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, sumTokensExport, } = require('../helper/unwrapLPs'); const OCEAN_CONTRACT = '0xC32eB36f886F638fffD836DF44C124074cFe3584'; -const DAI_CONTRACT = '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1'; -const USDC_CONTRACT = '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8'; -const USDT_CONTRACT = '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9'; -const WBTC_CONTRACT = '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f'; +const DAI_CONTRACT = ADDRESSES.optimism.DAI; +const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; +const USDT_CONTRACT = ADDRESSES.arbitrum.USDT; +const WBTC_CONTRACT = ADDRESSES.arbitrum.WBTC; const WSTETH_CONTRACT = '0x5979D7b546E38E414F7E9822514be443A4800529'; const ARB_CONTRACT = '0x912ce59144191c1204e64559fe8253a0e49e6548'; diff --git a/projects/sherlock/index.js b/projects/sherlock/index.js index e1e605cb46..7c11bbbd08 100644 --- a/projects/sherlock/index.js +++ b/projects/sherlock/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abi.json'); const usdcabi = require('./usdcabi.json'); const sherlockV2abi = require('./sherlockV2abi.json'); const BigNumber = require("bignumber.js"); -const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; +const USDC = ADDRESSES.ethereum.USDC; const SherlockContract = '0xacbBe1d537BDa855797776F969612df7bBb98215'; const SherlockV2Contract = '0x0865a889183039689034dA55c1Fd12aF5083eabF'; diff --git a/projects/shibance-bsc/constants/bsc/tokens.js b/projects/shibance-bsc/constants/bsc/tokens.js index 66a265ade1..5140a1a7a5 100644 --- a/projects/shibance-bsc/constants/bsc/tokens.js +++ b/projects/shibance-bsc/constants/bsc/tokens.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const tokens = { bnb: { symbol: "BNB", @@ -24,7 +25,7 @@ const tokens = { wbnb: { symbol: "wBNB", address: { - 56: "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + 56: ADDRESSES.bsc.WBNB, 97: "0xae13d989dac2f0debff460ac112a837c89baa7cd", }, decimals: 18, @@ -33,7 +34,7 @@ const tokens = { busd: { symbol: "BUSD", address: { - 56: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + 56: ADDRESSES.bsc.BUSD, 97: "0x8301f2213c0eed49a7e28ae4c3e91722919b8b47", }, decimals: 18, @@ -42,7 +43,7 @@ const tokens = { usdt: { symbol: "USDT", address: { - 56: "0x55d398326f99059ff775485246999027b3197955", + 56: ADDRESSES.bsc.USDT, 97: "0x9D4BB7939D27D3bd7F425744DFBf7eE777490388", }, decimals: 18, diff --git a/projects/shibance-bsc/constants/kcc/tokens.js b/projects/shibance-bsc/constants/kcc/tokens.js index 4e5d9de11d..f99759f16c 100644 --- a/projects/shibance-bsc/constants/kcc/tokens.js +++ b/projects/shibance-bsc/constants/kcc/tokens.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../../helper/coreAssets.json') const tokens = { bnb: { symbol: "BNB", @@ -22,7 +23,7 @@ const tokens = { wbnb: { symbol: "wBNB", address: { - 321: "0x4446fc4eb47f2f6586f9faab68b3498f86c07521", + 321: ADDRESSES.kcc.WKCS, }, decimals: 18, projectLink: "https://www.kcc.io/", @@ -30,7 +31,7 @@ const tokens = { busd: { symbol: "BUSD", address: { - 321: "0x0039f574ee5cc39bdd162e9a88e3eb1f111baf48", + 321: ADDRESSES.kcc.USDT, }, decimals: 18, projectLink: "https://www.kcc.io/", @@ -38,7 +39,7 @@ const tokens = { usdc: { symbol: "USDC", address: { - 321: "0x980a5afef3d17ad98635f6c5aebcbaeded3c3430", + 321: ADDRESSES.kcc.USDC, }, decimals: 18, projectLink: "https://www.kcc.io/", diff --git a/projects/shibance-bsc/index.js b/projects/shibance-bsc/index.js index 5661d118fa..cfc420d444 100644 --- a/projects/shibance-bsc/index.js +++ b/projects/shibance-bsc/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require("bignumber.js"); const { getBalanceNumber } = require('./format'); const chains = require('./constants/chain'); @@ -74,7 +75,7 @@ async function getTvl(chain, timestamp, _ethBlock, chainBlocks) { const balances = {}; const usdMappings = { - 'bsc' : '0x4fabb145d64652a948d72533023f6e7a623c7c53' + 'bsc' : ADDRESSES.ethereum.BUSD } const baseToken = usdMappings[chain]; balances[`${chain}:${baseToken}`] = tvl.toNumber(); diff --git a/projects/shibui/index.js b/projects/shibui/index.js index cea8b3181e..5f2242bb84 100644 --- a/projects/shibui/index.js +++ b/projects/shibui/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); const { pool2s } = require("../helper/pool2"); @@ -6,8 +7,8 @@ const CHAINS = ["boba"]; const Boba_SHIBUI = "0xf08ad7c3f6b1c6843ba027ad54ed8ddb6d71169b"; -const Boba_BOBA = "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7"; -const Boba_USDT = "0x5de1677344d3cb0d7d465c10b72a8f60699c062d"; +const Boba_BOBA = ADDRESSES.boba.BOBA; +const Boba_USDT = ADDRESSES.boba.USDT; const Boba_SHIBUI_WETH = "0xcE9F38532B3d1e00a88e1f3347601dBC632E7a82"; const Boba_SHIBUI_USDT = "0x3f714fe1380ee2204ca499d1d8a171cbdfc39eaa"; const Boba_4Koyo = "0xDAb3Fc342A242AdD09504bea790f9b026Aa1e709"; diff --git a/projects/shield/index.js b/projects/shield/index.js index 98984c951d..526c871f47 100644 --- a/projects/shield/index.js +++ b/projects/shield/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') -const USDT = "0x55d398326f99059fF775485246999027B3197955"; +const USDT = ADDRESSES.bsc.USDT; const publicPool = "0x65081C21228dc943f47b1Cdb394Eb8db022bc744"; const privatePool = "0xFa4e13EfAf2C90D6Eaf5033A4f3cB189ee4eF189"; diff --git a/projects/shiftdollar/index.js b/projects/shiftdollar/index.js index e04d053a37..2d46a70db1 100644 --- a/projects/shiftdollar/index.js +++ b/projects/shiftdollar/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { tombTvl } = require('../helper/tomb') @@ -6,7 +7,7 @@ const SHIFT = "0x4f9bd6be8455ee2b3c7ff76bbb885e6654797137"; const SFSHARE = "0xE64fF204Df5f3D03447dA4895C6DA1fB590F1290"; const boardroom = "0x251672021bE4Cbf8eD5a6Acb66478a29c95c7Cb5"; const rewardPool = "0x585ab630996dB20F7aCc0dbC48e7c332620E7D59"; -const USDC = "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59" +const USDC = ADDRESSES.cronos.USDC const factory = "0x9fB58aBA4a3aD49d273b42cb8F495C58e9a8d14F" const lps = [ "0xCbEA9C785D0D6233d3F965baC901ea42A7a3B05c", diff --git a/projects/singularityDAO/index.js b/projects/singularityDAO/index.js index 3c405f2a36..226ba618b2 100644 --- a/projects/singularityDAO/index.js +++ b/projects/singularityDAO/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const http = require("../helper/http"); const sdk = require("@defillama/sdk"); @@ -121,12 +122,12 @@ async function staking(ts, block) { async function tvlBNB(ts, EthBlock, { bsc: block }) { const tokensAndOwners = [ - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", DYNASETSBNB], // BNB - ["0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", DYNASETSBNB], // BUSD + [ADDRESSES.bsc.WBNB, DYNASETSBNB], // BNB + [ADDRESSES.bsc.BUSD, DYNASETSBNB], // BUSD ["0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", DYNASETSBNB], // BDOT - ["0x2170Ed0880ac9A755fd29B2688956BD959F933F8", DYNASETSBNB], // BETH + [ADDRESSES.bsc.ETH, DYNASETSBNB], // BETH ["0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", DYNASETSBNB], // BXRP - ["0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", DYNASETSBNB], // WBTC + [ADDRESSES.bsc.BTCB, DYNASETSBNB], // WBTC ["0x1CE0c2827e2eF14D5C4f29a091d735A204794041", DYNASETSBNB], // BAVAX ["0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", DYNASETSBNB], // BADA ["0xCC42724C6683B7E57334c4E856f4c9965ED682bD", DYNASETSBNB], // BMATIC diff --git a/projects/sio2/constants.js b/projects/sio2/constants.js index 9e38813747..d20518235f 100644 --- a/projects/sio2/constants.js +++ b/projects/sio2/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const DEFAULT_DECIMALS = 18 const DOT_TOKEN = "polkadot" @@ -7,27 +8,27 @@ const TOKENS = { // WASTR "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720": "astar", // DOT - "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF": DOT_TOKEN, + [ADDRESSES.astar.DOT]: DOT_TOKEN, // BAI - "0x733ebcC6DF85f8266349DEFD0980f8Ced9B45f35": "bai-stablecoin", + [ADDRESSES.astar.BAI]: "bai-stablecoin", // USDC - "0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [ADDRESSES.moonbeam.USDC]: ADDRESSES.ethereum.USDC, // USDT - "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283": - "0xdac17f958d2ee523a2206206994597c13d831ec7", + [ADDRESSES.astar.USDT]: + ADDRESSES.ethereum.USDT, // BUSD - "0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E": "binance-usd", + [ADDRESSES.oasis.ceUSDT]: "binance-usd", // DAI - "0x6De33698e9e9b787e09d3Bd7771ef63557E148bb": - "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.DAI]: + ADDRESSES.ethereum.DAI, // WETH - "0x81ECac0D6Be0550A00FF064a4f9dd2400585FE9c": - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + [ADDRESSES.moonbeam.USDT]: + ADDRESSES.ethereum.WETH, // wBTC - "0xad543f18cFf85c77E140E3E5E3c3392f6Ba9d5CA": - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [ADDRESSES.astar.WBTC]: + ADDRESSES.ethereum.WBTC, // BNB - "0x7f27352D5F83Db87a5A3E00f4B07Cc2138D8ee52": "binancecoin", + [ADDRESSES.milkomeda.BNB]: "binancecoin", }; module.exports = { diff --git a/projects/sio2/sio2.js b/projects/sio2/sio2.js index e0edb4b8ee..b240a28edc 100644 --- a/projects/sio2/sio2.js +++ b/projects/sio2/sio2.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { default: BigNumber } = require("bignumber.js"); @@ -29,7 +30,7 @@ async function getReserves(block) { const validProtocolDataHelpers = protocolDataHelpers .filter( - (helper) => helper.output !== "0x0000000000000000000000000000000000000000" + (helper) => helper.output !== ADDRESSES.null ) .map((p) => p.output); diff --git a/projects/sirius-finance/constants.js b/projects/sirius-finance/constants.js index eb050cb000..63486dab00 100644 --- a/projects/sirius-finance/constants.js +++ b/projects/sirius-finance/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /*** Astar Addresses ***/ const usdPoolAddress = "0x417E9d065ee22DFB7CC6C63C403600E27627F333"; @@ -15,26 +16,26 @@ const AvaultPoolAddress = "0xD8Bc543273B0E19eed34a295614963720c89f9e4" const SRS = "0x9448610696659de8F72e1831d392214aE1ca4838" const VotingEscrow = "0xc9D383f1e6E5270D77ad8e198729e237b60b6397" -const DAI = '0x6De33698e9e9b787e09d3Bd7771ef63557E148bb' -const USDC = '0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98' -const USDT = '0x3795C36e7D12A8c252A20C5a7B455f7c57b60283' -const BUSD = '0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E' -const oUSD = '0x29F6e49c6E3397C3A84F715885F9F233A441165C'; -const BAI = '0x733ebcC6DF85f8266349DEFD0980f8Ced9B45f35'; -const LDAI = '0x4dd9c468A44F3FEF662c35c1E9a6108B70415C2c' -const LUSDC = '0xc404e12d3466accb625c67dbab2e1a8a457def3c' -const LUSDT = '0x430D50963d9635bBef5a2fF27BD0bDDc26ed691F' -const LBUSD = '0xb7aB962c42A8Bb443e0362f58a5A43814c573FFb' -const JPYC = '0x431d5dff03120afa4bdf332c61a6e1766ef37bdb' -const WBTC = '0xad543f18cff85c77e140e3e5e3c3392f6ba9d5ca' -const WETH = '0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c' -const WBNB = '0x7f27352d5f83db87a5a3e00f4b07cc2138d8ee52' -const nASTR = '0xE511ED88575C57767BAfb72BfD10775413E3F2b0' +const DAI = ADDRESSES.astar.DAI +const USDC = ADDRESSES.moonbeam.USDC +const USDT = ADDRESSES.astar.USDT +const BUSD = ADDRESSES.oasis.ceUSDT +const oUSD = ADDRESSES.astar.oUSD; +const BAI = ADDRESSES.astar.BAI; +const LDAI = ADDRESSES.astar.lDAI +const LUSDC = ADDRESSES.astar.lUSDC +const LUSDT = ADDRESSES.astar.lUSDT +const LBUSD = ADDRESSES.astar.lBUSD +const JPYC = ADDRESSES.astar.JPYC +const WBTC = ADDRESSES.astar.WBTC +const WETH = ADDRESSES.moonbeam.USDT +const WBNB = ADDRESSES.milkomeda.BNB +const nASTR = ADDRESSES.astar.nASTR const wASTR = '0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720' -const aBaiUsdc = '0xDBd71969aC2583A9A20Af3FB81FE9C20547f30F3' -const aDaiUsdc = '0x9914Bff0437f914549c673B34808aF6020e2B453' -const aBusdUsdc = '0x347e53263F8fb843EC605A1577eC7C8c0cAC7a58' -const aUsdtUsdc = '0x02Dac4898B2c2cA9D50fF8D6a7726166CF7bCFD0' +const aBaiUsdc = ADDRESSES.astar.aBaiUsdc +const aDaiUsdc = ADDRESSES.astar.aDaiUsdc +const aBusdUsdc = ADDRESSES.astar.aBusdUsdc +const aUsdtUsdc = ADDRESSES.astar.aUsdtUsdc module.exports = { diff --git a/projects/skeleton/index.js b/projects/skeleton/index.js index f4921b054a..5ed7340038 100644 --- a/projects/skeleton/index.js +++ b/projects/skeleton/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { getParamCalls } = require('../helper/utils') const masterChefContract = "0x4fff737de45da4886f711b2d683fb6A6cf62C60C"; -const USDC = "0x04068da6c83afcfa0e13ba15a6696662335d5b75"; +const USDC = ADDRESSES.fantom.USDC; const chain = 'fantom' const ftmTvl = async (_, _b, { fantom: block }) => { diff --git a/projects/smartcredit.js b/projects/smartcredit.js index d4c30455f5..1ce29666de 100644 --- a/projects/smartcredit.js +++ b/projects/smartcredit.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { GraphQLClient, } = require('graphql-request') const sdk = require('@defillama/sdk') const { default: BigNumber } = require('bignumber.js') @@ -14,7 +15,7 @@ async function getStats() { function replaceEth(addr) { if (addr.toLowerCase() === '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee') - return '0x0000000000000000000000000000000000000000' + return ADDRESSES.null return addr } diff --git a/projects/smurfmoney/index.js b/projects/smurfmoney/index.js index 86d24bd8f5..ff519ee693 100644 --- a/projects/smurfmoney/index.js +++ b/projects/smurfmoney/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { addFundsInMasterChef } = require("../helper/masterchef"); const clever = "0x465bc6d1ab26efa74ee75b1e565e896615b39e79"; @@ -9,8 +10,8 @@ async function tvl (timestamp, block, chainBlocks) { let balances = {}; await addFundsInMasterChef(balances, clevermasterchef, chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`, undefined, [mushy, clever], true, true, clever); await addFundsInMasterChef(balances, mushymasterchef, chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`, undefined, [mushy, clever], true, true, mushy); - balances["0x6b175474e89094c44da98b954eedeac495271d0f"] = balances["fantom:0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E"]; - delete balances["fantom:0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E"]; + balances[ADDRESSES.ethereum.DAI] = balances["fantom:" + ADDRESSES.fantom.DAI]; + delete balances["fantom:" + ADDRESSES.fantom.DAI]; return balances; } diff --git a/projects/snowdogdao/index.js b/projects/snowdogdao/index.js index d8974dc243..152c9005d0 100644 --- a/projects/snowdogdao/index.js +++ b/projects/snowdogdao/index.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') module.exports=ohmTvl("0xC0E7DA06e56727F3B55B24F58e9503FdaAfb2a68", [ //mim ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], //wavax - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false], + [ADDRESSES.avax.WAVAX, false], //spell ["0xce1bffbd5374dac86a2893119683f4911a2f7814", false], //joe - ["0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", false], + [ADDRESSES.avax.JOE, false], //weth - ["0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", false], + [ADDRESSES.avax.WETH_e, false], //LP_sdog_mim ["0xa3f1f5076499ec37d5bb095551f85ab5a344bb58", true] ], "avax", "0xc970dab38627bc7Ba1487754d832A327E0e626Cd", "0xde9e52f1838951e4d2bb6c59723b003c353979b6") \ No newline at end of file diff --git a/projects/snowflake/constants.js b/projects/snowflake/constants.js index 6a61bb7ce9..10b6fc4dd1 100644 --- a/projects/snowflake/constants.js +++ b/projects/snowflake/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') /** * lp token addresses */ @@ -7,9 +8,9 @@ const MAIN_USDT_LP = "0x3dc2a544A3A9C4D86d58D52bCaD1ECA8c1EC2361"; const MAIN_DAI_LP = "0x59a49E5bd704fC70E2cD9fe3d4D5D03991278015"; const MAIN_MAI_LP = "0xD0dCF24aA7784e34F022AdF43447578e54e2a695"; -const USDC = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"; -const USDT = "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"; -const DAI = "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063"; +const USDC = ADDRESSES.polygon.USDC; +const USDT = ADDRESSES.polygon.USDT; +const DAI = ADDRESSES.polygon.DAI; const MAI = "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1"; module.exports = { diff --git a/projects/snowswap.js b/projects/snowswap.js index 7c8fdfdfe0..f70ae28211 100644 --- a/projects/snowswap.js +++ b/projects/snowswap.js @@ -1,19 +1,20 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { staking } = require('./helper/staking'); const { sumTokens2, } = require('./helper/unwrapLPs'); -const wBTC = '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599' +const wBTC = ADDRESSES.ethereum.WBTC const y2DAI = { addr: "0xacd43e627e64355f1861cec6d3a6688b31a6f952", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///y2DAI yv const y2USDC = { addr: "0x597ad1e0c13bfe8025993d9e79c69e1c0233522e", dec: 6, getPrice: false, type: 'yv', pfsDec: 18 } ///y2USDC yv const y2USDT = { addr: "0x2f08119c6f07c006695e079aafc638b8789faf18", dec: 6, getPrice: false, type: 'yv', pfsDec: 18 } ///y2USDT yv const Y2TUSD = { addr: "0x37d19d1c4e1fa9dc47bd1ea12f742a0887eda74a", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///Y2TUSD yv const yyDAIT = { addr: "0x5dbcf33d8c2e976c6b560249878e6f1491bca25c", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///yyDAI+yUSDC+yUSDT+yTUSD hbtc const yyDAIB = { addr: "0x2994529c0652d127b7842094103715ec5299bbed", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///yyDAI+yUSDC+yUSDT+yBUSD hbtc -const WETH = { addr: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", dec: 18, get getPrice() { return this.addr }, type: '' } ///WETH crvETH +const WETH = { addr: ADDRESSES.ethereum.WETH, dec: 18, get getPrice() { return this.addr }, type: '' } ///WETH crvETH const eCRV = { addr: "0xa3d87fffce63b53e0d54faa1cc983b7eb0b74a9c", dec: 18, getPrice: WETH.getPrice, type: '' } ///eCRV crvETH const steCRV = { addr: "0x06325440d014e39736583c165c2963ba99faf14e", dec: 18, getPrice: WETH.getPrice, type: '' } ///steCRV crvETH const ankrCRV = { addr: "0xaa17a236f2badc98ddc0cf999abb47d47fc0a6cf", dec: 18, getPrice: WETH.getPrice, type: '' } ///ankrCRV crvETH -const usdc = { addr: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", dec: 6, getPrice: false, type: '' } ///fUSD +const usdc = { addr: ADDRESSES.ethereum.USDC, dec: 6, getPrice: false, type: '' } ///fUSD const fUSDC = { addr: "0xf0358e8c3cd5fa238a29301d0bea3d63a17bedbe", dec: 6, getPrice: false, type: 'yv', pfsDec: 6 } ///fUSD const fUSDT = { addr: "0x053c80ea73dc6941f518a68e2fc52ac45bde7c9c", dec: 6, getPrice: false, type: 'yv', pfsDec: 6 } ///fUSD const fDAI = { addr: "0xab7fa2b2985bccfc13c6d86b1d5a17486ab1e04c", dec: 18, getPrice: false, type: 'yv', pfsDec: 18 } ///fUSD @@ -32,9 +33,9 @@ const ycrvRenWSBTC = { addr: '0x7ff566e1d69deff32a7b244ae7276b9f90e9d0f6', dec: // TODO: the next should be yv const fcrvRenWBTC = { addr: '0x5f18c75abdae578b483e5f43f12a39cf75b973a9', dec: 18, getPrice: wBTC, type: '', pfsDec: 18 } ///btcSnow -const polyDai = { addr: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", dec: 18, getPrice: false } ///penguin -const polyUsdc = { addr: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", dec: 6, getPrice: false } ///penguin -const polyUSDT = { addr: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", dec: 6, getPrice: false } ///penguin +const polyDai = { addr: ADDRESSES.polygon.DAI, dec: 18, getPrice: false } ///penguin +const polyUsdc = { addr: ADDRESSES.polygon.USDC, dec: 6, getPrice: false } ///penguin +const polyUSDT = { addr: ADDRESSES.polygon.USDT, dec: 6, getPrice: false } ///penguin const snow = { addr: '0xfe9a29ab92522d14fc65880d817214261d8479ae', dec: 18, get getPrice() { return this.addr } } ///Frosty diff --git a/projects/soda-protocol/index.js b/projects/soda-protocol/index.js index 1fc3e83172..b9c4ae64ba 100644 --- a/projects/soda-protocol/index.js +++ b/projects/soda-protocol/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/solana') async function tvl() { const owner = '5cv5tMwrCMAVbwAC5icUPB5XB4qQpsaf3KaGP7Ygdomc' const tokens = [ "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E", - "So11111111111111111111111111111111111111112", + ADDRESSES.solana.SOL, "SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt", - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", + ADDRESSES.solana.USDC, + ADDRESSES.solana.USDT, "2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk", "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", ] diff --git a/projects/solace-finance/config.js b/projects/solace-finance/config.js index 7ea017e1e5..e37a4cad95 100644 --- a/projects/solace-finance/config.js +++ b/projects/solace-finance/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { ethereum: { solace: '0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', @@ -9,23 +10,23 @@ module.exports = { TokenTicker: "FRAX", }, { - PoolToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + PoolToken: ADDRESSES.ethereum.USDC, TokenTicker: "USDC", }, { - PoolToken: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + PoolToken: ADDRESSES.ethereum.USDT, TokenTicker: "USDT", }, { - PoolToken: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + PoolToken: ADDRESSES.ethereum.DAI, TokenTicker: "DAI", }, { - PoolToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + PoolToken: ADDRESSES.ethereum.WETH, TokenTicker: "WETH", }, { - PoolToken: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + PoolToken: ADDRESSES.ethereum.WBTC, TokenTicker: "WBTC", }, ] @@ -43,23 +44,23 @@ module.exports = { TokenTicker: "FRAX", }, { - PoolToken: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + PoolToken: ADDRESSES.polygon.USDC, TokenTicker: "USDC", }, { - PoolToken: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + PoolToken: ADDRESSES.polygon.USDT, TokenTicker: "USDT", }, { - PoolToken: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + PoolToken: ADDRESSES.polygon.DAI, TokenTicker: "DAI", }, { - PoolToken: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + PoolToken: ADDRESSES.polygon.WETH_1, TokenTicker: "WETH", }, { - PoolToken: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + PoolToken: ADDRESSES.polygon.WBTC, TokenTicker: "WBTC", }, ] @@ -70,23 +71,23 @@ module.exports = { lp: '0xdDAdf88b007B95fEb42DDbd110034C9a8e9746F2', tokens: [ { - PoolToken: "0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d", + PoolToken: ADDRESSES.aurora.NEAR, TokenTicker: "WNEAR", }, { - PoolToken: "0x8BEc47865aDe3B172A928df8f990Bc7f2A3b9f79", + PoolToken: ADDRESSES.aurora.AURORA, TokenTicker: "AURORA", }, { - PoolToken: "0xDA2585430fEf327aD8ee44Af8F1f989a2A91A3d2", + PoolToken: ADDRESSES.aurora.FRAX, TokenTicker: "FRAX", }, { - PoolToken: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802", + PoolToken: ADDRESSES.aurora.USDC_e, TokenTicker: "USDC", }, { - PoolToken: "0x4988a896b1227218e4A686fdE5EabdcAbd91571f", + PoolToken: ADDRESSES.aurora.USDT_e, TokenTicker: "USDT", }, { diff --git a/projects/solarbeam/index.js b/projects/solarbeam/index.js index d9e941fbfd..a59a5ff7eb 100644 --- a/projects/solarbeam/index.js +++ b/projects/solarbeam/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); @@ -51,13 +52,13 @@ const stableSwapPools = { const stableSwapTokens = { USDC: { - address: '0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D', + address: ADDRESSES.moonriver.USDC, decimals: 6, symbol: 'USDC', gecko: 'usd-coin' }, USDT: { - address: '0xB44a9B6905aF7c801311e8F4E76932ee959c663C', + address: ADDRESSES.moonriver.USDT, decimals: 6, symbol: 'USDT', gecko: 'tether' @@ -113,7 +114,7 @@ const stableSwapTokens = { WBTC: { symbol: 'WBTC', name: 'Wrapped BTC', - address: '0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8', + address: ADDRESSES.oasis.USDT, decimals: 8, gecko: 'bitcoin' } @@ -168,9 +169,9 @@ const dexTVL = getUniTVL({ coreAssets: [ '0xf50225a84382c74CbdeA10b0c176f71fc3DE0C4d', // moonriver "0x98878B06940aE243284CA214f92Bb71a2b032B8A", // WMOVR - // "0xb44a9b6905af7c801311e8f4e76932ee959c663c", // usdt - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", // usdc - "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", // eth + // ADDRESSES.moonriver.USDT, // usdt + ADDRESSES.moonriver.USDC, // usdc + ADDRESSES.moonriver.ETH, // eth ] }) diff --git a/projects/solhero/index.js b/projects/solhero/index.js index 3cac3ab0b6..1a941679b1 100644 --- a/projects/solhero/index.js +++ b/projects/solhero/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const utils = require('../helper/utils') const { getConnection } = require('../helper/solana') const BigNumber = require('bignumber.js') @@ -8,11 +9,11 @@ const poolInfoKey = new PublicKey('CsMSJ2wJAsQBNZU9LuL3FAx2Do9ndY4Ae15JAXhFMc1p' const decimals = { 'Hero6s7zJXsw9hfCXLVR5stLqgCok3E7CCkpQEoLAk2g': 6, // HERO - 'So11111111111111111111111111111111111111112': 9, // SOL + [ADDRESSES.solana.SOL]: 9, // SOL '4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R': 6, // RAY 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So': 9, // mSOL - 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v': 6, // USDC - 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB': 6, // USDT + [ADDRESSES.solana.USDC]: 6, // USDC + [ADDRESSES.solana.USDT]: 6, // USDT 'rEmtKCiw6DQL8kAaGzhSryqnqNckYabPxTNXDdj2Jur': 6, // hero-usdc 'Epm4KfTj4DMrvqn6Bwg2Tr2N8vhQuNbuK8bESFp4k33K': 9, // sol-usdt '8HoQnePLqPj4M7PUDzfw8e3Ymdwgc7NLGnaTUapubyvu': 9, // sol-usdc @@ -188,7 +189,7 @@ async function staking() { var tvl = new BigNumber(0) - var solPrice = await getTokenPrice('So11111111111111111111111111111111111111112') + var solPrice = await getTokenPrice(ADDRESSES.solana.SOL) var amounts = [] @@ -237,7 +238,7 @@ async function farmPool() { var tvl = new BigNumber(0) - var solPrice = await getTokenPrice('So11111111111111111111111111111111111111112') + var solPrice = await getTokenPrice(ADDRESSES.solana.SOL) var amounts = [] @@ -283,7 +284,7 @@ async function lpTvl() { var tvl = new BigNumber(0) - var solPrice = await getTokenPrice('So11111111111111111111111111111111111111112') + var solPrice = await getTokenPrice(ADDRESSES.solana.SOL) var lpTvl = await getHeroLp() lpTvl = lpTvl.div(solPrice) diff --git a/projects/solo/index.js b/projects/solo/index.js index 1b0df6dfaa..f05218d92b 100644 --- a/projects/solo/index.js +++ b/projects/solo/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require("bignumber.js") const abi = require('./abi.json'); @@ -14,9 +15,9 @@ const VAULT_POLYGON = "0xE95876787B055f1b9E4cfd5d3e32BDe302BF789d" const VAULT_OEC = "0xa8AF3199aCE72E47c1DEb56E58BEA1CD41C37c22" const USDT_HECO = "0xa71EdC38d189767582C38A3145b5873052c3e47a" -const USDT_BSC = "0x55d398326f99059fF775485246999027B3197955" -const USDT_POLYGON = "0xc2132D05D31c914a87C6611C10748AEb04B58e8F" -const USDT_OEC = "0x382bB369d343125BfB2117af9c149795C6C65C50" +const USDT_BSC = ADDRESSES.bsc.USDT +const USDT_POLYGON = ADDRESSES.polygon.USDT +const USDT_OEC = ADDRESSES.okexchain.USDT const tvlHeco = async (timestamp, blockETH, chainBlocks) => { let block = chainBlocks[CHAIN_HECO]; diff --git a/projects/soulswap/index.js b/projects/soulswap/index.js index 2ec11bd38e..c4f86c5b24 100644 --- a/projects/soulswap/index.js +++ b/projects/soulswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { calculateUsdSoulTvl } = require('./helper/getUsdSoulTvl.js') const { staking } = require('../helper/staking.js'); const { underworldLending } = require('./underworld-lending.js') @@ -5,18 +6,18 @@ const { underworldLending } = require('./underworld-lending.js') const factory_fantom = '0x1120e150dA9def6Fe930f4fEDeD18ef57c0CA7eF' const farm_fantom = '0xb898226dE3c5ca980381fE85F2Bc10e35e00634c' const soul_fantom = '0xe2fb177009ff39f52c0134e8007fa0e4baacbd07' -const wftm_fantom = '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83' +const wftm_fantom = ADDRESSES.fantom.WFTM const rndm_fantom = '0x49ac072c793fb9523f0688a0d863aadfbfb5d475' -const usdc_fantom = '0x04068da6c83afcfa0e13ba15a6696662335d5b75' +const usdc_fantom = ADDRESSES.fantom.USDC const wbtc_fantom = '0x321162cd933e2be498cd2267a90534a804051b11' const factory_avax = '0x5BB2a9984de4a69c05c996F7EF09597Ac8c9D63a' const farm_avax = '0xB1e330401c920077Ddf157AbA5594238d36b54B1' const soul_avax = '0x11d6DD25c1695764e64F439E32cc7746f3945543' -const wavax_avax = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7' -const usdc_avax = '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E' +const wavax_avax = ADDRESSES.avax.WAVAX +const usdc_avax = ADDRESSES.avax.USDC const wbtc_avax = '0x50b7545627a5162F82A992c33b87aDc75187B218' -const weth_avax = '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB' +const weth_avax = ADDRESSES.avax.WETH_e const wl_fantom = [ usdc_fantom, soul_fantom, rndm_fantom, wbtc_fantom ] const wl_avax = [ usdc_avax, soul_avax, wbtc_avax, weth_avax ] diff --git a/projects/soyfinance/index.js b/projects/soyfinance/index.js index 2bccdac4e5..4b64eca10c 100644 --- a/projects/soyfinance/index.js +++ b/projects/soyfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') module.exports = { @@ -20,7 +21,7 @@ module.exports = { }, bittorrent: { tvl: getUniTVL({ - factory: '0xbf6c50889d3a620eb42c0f188b65ade90de958c4', + factory: ADDRESSES.callisto.BUSDT, chain: 'bittorrent', useDefaultCoreAssets: true, }) diff --git a/projects/spartacus/index.js b/projects/spartacus/index.js index 617a89235c..1140a93591 100644 --- a/projects/spartacus/index.js +++ b/projects/spartacus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') const { transformFantomAddress } = require('../helper/portedTokens') @@ -9,8 +10,8 @@ async function tvl(time, ethBlock, chainBlocks) { const balances = {} const transform = await transformFantomAddress() await sumTokensAndLPsSharedOwners(balances, [ - ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], - ["0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", false], // FTM asset + [ADDRESSES.fantom.DAI, false], + [ADDRESSES.fantom.WFTM, false], // FTM asset ["0xfa5a5f0bc990be1d095c5385fff6516f6e03c0a7", true] ], [treasury], chainBlocks.fantom, "fantom", transform) return balances diff --git a/projects/spiral-fi-mixer/index.js b/projects/spiral-fi-mixer/index.js index 732b986ef7..53fb51dc32 100644 --- a/projects/spiral-fi-mixer/index.js +++ b/projects/spiral-fi-mixer/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { era: { - tvl: sumTokensExport({ owner: '0xcd98e2C68248de044c3E44144C34D9EBb09337a9', tokens: ['0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4']}) + tvl: sumTokensExport({ owner: '0xcd98e2C68248de044c3E44144C34D9EBb09337a9', tokens: [ADDRESSES.era.USDC]}) } } \ No newline at end of file diff --git a/projects/squid-dao/index.js b/projects/squid-dao/index.js index e8381c45b2..51679a4ca5 100644 --- a/projects/squid-dao/index.js +++ b/projects/squid-dao/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x61d8a57b3919e9F4777C80b6CF1138962855d2Ca" module.exports = ohmTvl(treasury, [ - ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", false], + [ADDRESSES.ethereum.WETH, false], ["0xfad704847967d9067df7a60910399155fca43fe8", true] ], "ethereum", "0x5895b13da9beb11e36136817cdcf3c4fcb16aaea", "0x21ad647b8f4fe333212e735bfc1f36b4941e6ad2") \ No newline at end of file diff --git a/projects/squidstake/index.js b/projects/squidstake/index.js index 3615c85885..c2bcdd77b9 100644 --- a/projects/squidstake/index.js +++ b/projects/squidstake/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { transformBscAddress } = require("../helper/portedTokens"); const { addFundsInMasterChef } = require("../helper/masterchef"); @@ -11,7 +12,7 @@ const squidBnbLP = "0x2e0484D3684701dC032f29cce59c785A5837B34E"; const solWbnbLP = { lpToken: "0x9d5B48AD38748c6DBD77399eccE3FD8B6f980456", token0: ["solana"], - token1: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + token1: ADDRESSES.bsc.WBNB, }; const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)'; diff --git a/projects/stabilizefi/index.js b/projects/stabilizefi/index.js index 9bd38c9ce2..f7ad8696a5 100644 --- a/projects/stabilizefi/index.js +++ b/projects/stabilizefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { getLiquityTvl } = require("../helper/liquity"); const { pool2 } = require('../helper/pool2'); @@ -10,16 +11,16 @@ const FARM_ADDRESS_SET_USDC = "0xAA31D7Bc8186888D9Eebb5524C47268E4bC87496" const LP_ADDRESS_SET_USDC = "0x31fa3838788A07607D95C9c640D041eAec649f50" // system coll -const AVAX_ADDRESS = '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'; +const AVAX_ADDRESS = ADDRESSES.avax.WAVAX; const AVAX_TROVE_MANAGER_ADDRESS = "0x7551A127C41C85E1412EfE263Cadb49900b0668C"; -const ETH_ADDRESS = '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab'; +const ETH_ADDRESS = ADDRESSES.avax.WETH_e; const ETH_TROVE_MANAGER_ADDRESS = "0x7837C2dB2d004eB10E608d95B2Efe8cb57fd40b4"; const BTC_ADDRESS = '0x50b7545627a5162f82a992c33b87adc75187b218'; const BTC_TROVE_MANAGER_ADDRESS = "0x56c194F1fB30F8cdd49E7351fC9C67d8C762a86F"; -const DAI_ADDRESS = '0xd586e7f844cea2f87f50152665bcbc2c279d8d70'; +const DAI_ADDRESS = ADDRESSES.avax.DAI; const DAI_TROVE_MANAGER_ADDRESS = "0x54b35c002468a5Cc2BD1428C011857d26463ecbC"; diff --git a/projects/stabl/index.js b/projects/stabl/index.js index 8d282b980c..fdfba33a84 100644 --- a/projects/stabl/index.js +++ b/projects/stabl/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const vaults = { @@ -5,7 +6,7 @@ const vaults = { } const assets = { - polygon: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", //USDC + polygon: ADDRESSES.polygon.USDC, //USDC } const abi = "uint256:checkBalance" diff --git a/projects/stablekoi/index.js b/projects/stablekoi/index.js index 799bb8432e..fba993ed4a 100644 --- a/projects/stablekoi/index.js +++ b/projects/stablekoi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require("../helper/unwrapLPs"); const { getFixBalances } = require("../helper/portedTokens"); const { GraphQLClient, gql } = require("graphql-request"); @@ -99,7 +100,7 @@ const v1Pools = [ }, { "symbol": "USDC|bsc", - "address": "0xfA307CfdEA89DC197A346c338a98aC85d517af6e", + "address": ADDRESSES.godwoken_v1.USDC_bsc, } ] }, @@ -127,7 +128,7 @@ const v1Pools = [ }, { "symbol": "USDT|bsc", - "address": "0xDFF2faCdFe47C1D5b51f18231f900949F1d5988f", + "address": ADDRESSES.godwoken_v1.USDT_bsc, } ] }, @@ -137,11 +138,11 @@ const v1Pools = [ "tokens": [ { "symbol": "WBTC|eth", - "address": "0x82455018F2c32943b3f12F4e59D0DA2FAf2257Ef", + "address": ADDRESSES.godwoken_v1.WBTC_eth, }, { "symbol": "BTCB|bsc", - "address": "0xEF2439e020509259FA603c34B35A81FFe676CFB4", + "address": ADDRESSES.godwoken_v1.BTCB_bsc, } ] } diff --git a/projects/stablz/index.js b/projects/stablz/index.js index fd13aaab03..9c3e33e54f 100644 --- a/projects/stablz/index.js +++ b/projects/stablz/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); -const USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7"; +const USDT = ADDRESSES.ethereum.USDT; const STABLZ_CANNAVEST_RWA_POOL = "0xa030f3e984A08B5Ada0377A9f4EaAF846E6A2cB0"; async function borrowed(_, block, _1, { api }) { diff --git a/projects/stacker/index.js b/projects/stacker/index.js index 570509cff4..b882d291df 100644 --- a/projects/stacker/index.js +++ b/projects/stacker/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const vaults = [ // farm, token used - ['0x067b9FE006E16f52BBf647aB6799f87566480D2c', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'], // USDC - ['0x70e51DFc7A9FC391995C2B2f027BC49D4fe01577', '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'], // WETH - ['0x17E9ed51feD2F190D50f5bd4f1a8C9CbCd36162A', '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'], // WBTC + ['0x067b9FE006E16f52BBf647aB6799f87566480D2c', ADDRESSES.ethereum.USDC], // USDC + ['0x70e51DFc7A9FC391995C2B2f027BC49D4fe01577', ADDRESSES.ethereum.WETH], // WETH + ['0x17E9ed51feD2F190D50f5bd4f1a8C9CbCd36162A', ADDRESSES.ethereum.WBTC], // WBTC ] async function tvl(timestamp, block, chainBlocks) { diff --git a/projects/stafi/index.js b/projects/stafi/index.js index b39be88f9b..8b8622cb76 100644 --- a/projects/stafi/index.js +++ b/projects/stafi/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const {chainExports} = require('../helper/exports') const {usdtAddress} = require('../helper/balances') const {getApiTvl} = require('../helper/historicalApi'); const { fetchURL } = require('../helper/utils'); -const wethAddress = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const wethAddress = ADDRESSES.ethereum.WETH async function ethereum(timestamp, block) { const supply = await sdk.api.erc20.totalSupply({ diff --git a/projects/stakedao/index.js b/projects/stakedao/index.js index bb29a55831..56a43ede52 100644 --- a/projects/stakedao/index.js +++ b/projects/stakedao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abi.json') const { sumTokens2 } = require('../helper/unwrapLPs') @@ -77,13 +78,13 @@ async function tvl(timestamp, block, _, { api }) { const angle_sanUSDC_V3 = { contract: angle_protocol.locker, sanUsdcEurGauge: '0x51fE22abAF4a26631b2913E417c0560D547797a7', - usdcToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + usdcToken: ADDRESSES.ethereum.USDC, abi: 'balanceOf', } const angle_sanDAI_V3 = { contract: angle_protocol.locker, sanDaiEurGauge: '0x8E2c0CbDa6bA7B65dbcA333798A3949B07638026', - daiToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F', + daiToken: ADDRESSES.ethereum.DAI, abi: 'balanceOf', } const angle_sanFRAX_V3 = { diff --git a/projects/stakedotlink/index.js b/projects/stakedotlink/index.js index 9045332c7d..c345f9cb13 100644 --- a/projects/stakedotlink/index.js +++ b/projects/stakedotlink/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const sdlToken = "0xA95C5ebB86E0dE73B4fB8c47A45B792CFeA28C23"; const sdlStakingPool = "0xAEF186611EC96427d161107fFE14bba8aA1C2284"; -const linkToken = "0x514910771af9ca656af840dff83e8264ecf986ca"; +const linkToken = ADDRESSES.ethereum.LINK; const linkStakingPool = "0xb8b295df2cd735b15BE5Eb419517Aa626fc43cD5"; async function tvl(timestamp, ethBlock, chainBlocks) { diff --git a/projects/stakehound/index.js b/projects/stakehound/index.js index 64a64b7239..dfe1e698e9 100644 --- a/projects/stakehound/index.js +++ b/projects/stakehound/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); -const wethAddress = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const wethAddress = ADDRESSES.ethereum.WETH async function tvl(timestamp, block) { const supply = await sdk.api.erc20.totalSupply({ diff --git a/projects/stakesteak/index.js b/projects/stakesteak/index.js index 828993fa5a..f254b23a9c 100644 --- a/projects/stakesteak/index.js +++ b/projects/stakesteak/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {addFundsInMasterChef} = require('../helper/masterchef') const sdk = require('@defillama/sdk') const {staking} = require('../helper/staking') const {transformFantomAddress} = require('../helper/portedTokens') const poolInfoAbi = 'function getPoolInfo(uint256 _pid) view returns (tuple(address stakingToken, uint256 stakingTokenTotalAmount, uint32 lastRewardTime, uint256[] AccRewardsPerShare, uint256[] AllocPoints))' -const tusd = "0x0000000000085d4780b73119b644ae5ecd22b376" +const tusd = ADDRESSES.ethereum.TUSD const ifusd = "0x9fC071cE771c7B27b7d9A57C32c0a84c18200F8a" async function tvl(_t, _b, chainBlocks){ diff --git a/projects/stakewise/index.js b/projects/stakewise/index.js index bcf39ecb60..bdf505188a 100644 --- a/projects/stakewise/index.js +++ b/projects/stakewise/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js') const { getLogs } = require('../helper/cache/getLogs') -const wethAddress = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +const wethAddress = ADDRESSES.ethereum.WETH async function tvl(timestamp, block, _1, { api }) { const supply = await sdk.api.erc20.totalSupply({ diff --git a/projects/standcash/index.js b/projects/standcash/index.js index fb5b061000..2fbf23e79f 100644 --- a/projects/standcash/index.js +++ b/projects/standcash/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -40,15 +41,15 @@ const poolContracts = [ const tokenAddresses = [ //USDT - "0xdac17f958d2ee523a2206206994597c13d831ec7", + ADDRESSES.ethereum.USDT, //USDC - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + ADDRESSES.ethereum.USDC, //FRAX "0x853d955acef822db058eb8505911ed77f175b99e", //ESD "0x36F3FD68E7325a35EB768F1AedaAe9EA0689d723", //DAI - "0x6b175474e89094c44da98b954eedeac495271d0f", + ADDRESSES.ethereum.DAI, //BAC "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a", //AETH diff --git a/projects/starbank/index.js b/projects/starbank/index.js index 67b4fe0a7c..4b1d55824e 100644 --- a/projects/starbank/index.js +++ b/projects/starbank/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); module.exports = { @@ -6,11 +7,11 @@ module.exports = { owner: '0x18df7884DEa0B24334800C8b05763112Eb592ce0', tokens: [ '0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720', - '0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98', - '0x3795C36e7D12A8c252A20C5a7B455f7c57b60283', - '0x75364D4F779d0Bd0facD9a218c67f87dD9Aff3b4', - '0x6De33698e9e9b787e09d3Bd7771ef63557E148bb', - '0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E', + ADDRESSES.moonbeam.USDC, + ADDRESSES.astar.USDT, + ADDRESSES.astar.SDN, + ADDRESSES.astar.DAI, + ADDRESSES.oasis.ceUSDT, ], }) } diff --git a/projects/starfish-finance/index.js b/projects/starfish-finance/index.js index 5ec7980ef1..e04e94d4b7 100644 --- a/projects/starfish-finance/index.js +++ b/projects/starfish-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking.js"); const { onChainTvl } = require("../helper/balancer"); @@ -13,15 +14,15 @@ module.exports = { tvl: onChainTvl('0x496F6125E1cd31f268032bd4cfaA121D203639b7', 3258352, { preLogTokens: [ '0xEa093b81ca103585FC8Df82CB3D5D7F2e394AB70', - '0x75364D4F779d0Bd0facD9a218c67f87dD9Aff3b4', + ADDRESSES.astar.SDN, '0xEe8138B3bd03905cF84aFE10cCD0dCcb820eE08E', - '0x733ebcC6DF85f8266349DEFD0980f8Ced9B45f35', - '0x6De33698e9e9b787e09d3Bd7771ef63557E148bb', - '0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF', + ADDRESSES.astar.BAI, + ADDRESSES.astar.DAI, + ADDRESSES.astar.DOT, '0x5E60Af4d06A9fc89eb47B39b5fF1b1b42a19ef39', - '0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98', + ADDRESSES.moonbeam.USDC, '0xfFFfffFF000000000000000000000001000007C0', - '0x3795C36e7D12A8c252A20C5a7B455f7c57b60283', + ADDRESSES.astar.USDT, ] }), staking: staking(addresses.astar.seanStaking, addresses.astar.seanToken,), diff --git a/projects/starfish-liq-staking/index.js b/projects/starfish-liq-staking/index.js index 1cf16b04e2..ba01ddbbbd 100644 --- a/projects/starfish-liq-staking/index.js +++ b/projects/starfish-liq-staking/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { astar: { tvl: async (_, _1, _2, { api }) => { const bal = await api.call({ abi: 'uint256:internalDotBalance', target: '0x5E60Af4d06A9fc89eb47B39b5fF1b1b42a19ef39'}) - api.add('0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF', bal) + api.add(ADDRESSES.astar.DOT, bal) } } } \ No newline at end of file diff --git a/projects/stargate-finance/index.js b/projects/stargate-finance/index.js index 229f79c51a..e5d541b91a 100644 --- a/projects/stargate-finance/index.js +++ b/projects/stargate-finance/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0xA2B48Ad28c09cc64CcCf9eD73e1EfceD052877d5"; module.exports = ohmTvl(treasuryAddress, [ //BSC-USD - ["0x55d398326f99059ff775485246999027b3197955", false], + [ADDRESSES.bsc.USDT, false], //BUSD - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], + [ADDRESSES.bsc.BUSD, false], //BABY LP ["0xd397a40884ce00e662b419673e0b15cae628877f", true] , //Pancake LP diff --git a/projects/stargatefinance/index.js b/projects/stargatefinance/index.js index 2195e9fa8f..5c6978ff5b 100644 --- a/projects/stargatefinance/index.js +++ b/projects/stargatefinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json") const { nullAddress, sumTokens2, } = require('../helper/unwrapLPs') @@ -35,7 +36,7 @@ module.exports = { goerli:{ tvl: async (_, _b, _cb, { api, })=>{ return { - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": await api.call({ abi: 'erc20:balanceOf', target: "0xdD69DB25F6D620A7baD3023c5d32761D353D3De9", params:["0x88124ef4a9ec47e691f254f2e8e348fd1e341e9b"] }) + [ADDRESSES.ethereum.WETH]: await api.call({ abi: 'erc20:balanceOf', target: "0xdD69DB25F6D620A7baD3023c5d32761D353D3De9", params:["0x88124ef4a9ec47e691f254f2e8e348fd1e341e9b"] }) } } } diff --git a/projects/starlay/constanrs.js b/projects/starlay/constanrs.js index 8f84b0f069..7ffd11a729 100644 --- a/projects/starlay/constanrs.js +++ b/projects/starlay/constanrs.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const DEFAULT_DECIMALS = 18 const TOKEN_INFO = { @@ -5,36 +6,36 @@ const TOKEN_INFO = { ausd: { key: "acala-dollar", decimals:12 } } -const LAY_ADDRESS = "0xc4335B1b76fA6d52877b3046ECA68F6E708a27dd" +const LAY_ADDRESS = ADDRESSES.astar.LAY const TOKENS = { // WASTR "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720": "astar", // WETH - "0x81ECac0D6Be0550A00FF064a4f9dd2400585FE9c": - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + [ADDRESSES.moonbeam.USDT]: + ADDRESSES.ethereum.WETH, // wBTC - "0xad543f18cFf85c77E140E3E5E3c3392f6Ba9d5CA": - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [ADDRESSES.astar.WBTC]: + ADDRESSES.ethereum.WBTC, // SDN - "0x75364D4F779d0Bd0facD9a218c67f87dD9Aff3b4": "shiden", + [ADDRESSES.astar.SDN]: "shiden", // USDC - "0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98": - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [ADDRESSES.moonbeam.USDC]: + ADDRESSES.ethereum.USDC, // USDT - "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283": - "0xdac17f958d2ee523a2206206994597c13d831ec7", + [ADDRESSES.astar.USDT]: + ADDRESSES.ethereum.USDT, // DAI - "0x6De33698e9e9b787e09d3Bd7771ef63557E148bb": - "0x6b175474e89094c44da98b954eedeac495271d0f", + [ADDRESSES.astar.DAI]: + ADDRESSES.ethereum.DAI, // BUSD - "0x4Bf769b05E832FCdc9053fFFBC78Ca889aCb5E1E": "binance-usd", + [ADDRESSES.oasis.ceUSDT]: "binance-usd", // MATIC - "0xdd90E5E87A2081Dcf0391920868eBc2FFB81a1aF": "matic-network", + [ADDRESSES.astar.MATIC]: "matic-network", // BNB - "0x7f27352D5F83Db87a5A3E00f4B07Cc2138D8ee52": "binancecoin", + [ADDRESSES.milkomeda.BNB]: "binancecoin", // DOT - "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF": TOKEN_INFO.dot.key, + [ADDRESSES.astar.DOT]: TOKEN_INFO.dot.key, // aUSD "0xfFFFFfFF00000000000000010000000000000001": TOKEN_INFO.ausd.key, // LAY diff --git a/projects/starlay/starlay.js b/projects/starlay/starlay.js index 4f2cb85a8d..138be8e7c8 100644 --- a/projects/starlay/starlay.js +++ b/projects/starlay/starlay.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { default: BigNumber } = require("bignumber.js"); @@ -28,7 +29,7 @@ async function getReserves(block) { ).output; const validProtocolDataHelpers = protocolDataHelpers .filter( - (helper) => helper.output !== "0x0000000000000000000000000000000000000000" + (helper) => helper.output !== ADDRESSES.null ) .map((p) => p.output); diff --git a/projects/steakbank/index.js b/projects/steakbank/index.js index 7f24ddeed2..9a4f7c52c8 100644 --- a/projects/steakbank/index.js +++ b/projects/steakbank/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const abis = require('./abis.json') const stakingContract = "0x79DB0dAa012F4b98F332A9D45c80A1A3FFaa6f9a" -const wbnb = "bsc:0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c" +const wbnb = "bsc:" + ADDRESSES.bsc.WBNB async function tvl(timestamp, ethBlock, chainBlocks){ const stakedBNB = await sdk.api.abi.call({ diff --git a/projects/stellaswap.js b/projects/stellaswap.js index 3e8fc3d4ef..2a28df226a 100644 --- a/projects/stellaswap.js +++ b/projects/stellaswap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { getUniTVL } = require('./helper/unknownTokens') const { staking } = require('./helper/staking') const sdk = require('@defillama/sdk') @@ -47,7 +48,7 @@ module.exports = { misrepresentedTokens: true, moonbeam: { tvl: sdk.util.sumChainTvls([dexTVL, stablePoolTVL]), - staking: staking('0x06A3b410b681c82417A906993aCeFb91bAB6A080', '0x0E358838ce72d5e61E0018a2ffaC4bEC5F4c88d2', 'moonbeam') + staking: staking('0x06A3b410b681c82417A906993aCeFb91bAB6A080', ADDRESSES.moonbeam.STELLA, 'moonbeam') } } diff --git a/projects/steth-win/index.js b/projects/steth-win/index.js index 08bc9848f8..281458b084 100644 --- a/projects/steth-win/index.js +++ b/projects/steth-win/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); const POOL_CONTRACT = '0x2758b8d894b08342f0d00ac5f9466fdc795e4618'; -const STETH_CONTRACT = '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'; +const STETH_CONTRACT = ADDRESSES.ethereum.STETH; module.exports = { methodology: 'Counts the number of stETH tokens in the pool and calculates its TVL', diff --git a/projects/stfil/index.js b/projects/stfil/index.js index 11adf1db8c..62785876ad 100644 --- a/projects/stfil/index.js +++ b/projects/stfil/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {sumTokens2} = require('../helper/unwrapLPs'); const {utils} = require("ethers"); const {get} = require('../helper/http'); const poolAddr = '0xC8E4EF1148D11F8C557f677eE3C73901CD796Bf6' // pool address const tokens = [ - '0x0000000000000000000000000000000000000000', // FIL + ADDRESSES.null, // FIL ] const getActiveMinersFromRPC = async () => { diff --git a/projects/stipend.js b/projects/stipend.js index 2f07f953be..1a63e27412 100644 --- a/projects/stipend.js +++ b/projects/stipend.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { staking } = require("./helper/staking.js"); module.exports = { kava: { tvl: staking( "0xfc30fE377f7E333cC1250B7768107a7Da0277c44", - "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b", + ADDRESSES.kava.WKAVA, ) } }; diff --git a/projects/stlos-liquid-staking/index.js b/projects/stlos-liquid-staking/index.js index 9dc8558013..39c9136879 100644 --- a/projects/stlos-liquid-staking/index.js +++ b/projects/stlos-liquid-staking/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const sTlosAbi = require("./sTlos.json"); -const sTLOS = "0xb4b01216a5bc8f1c8a33cd990a1239030e60c905"; +const sTLOS = ADDRESSES.telos.STLOS; async function tvl(timestamp, _, { telos: block }) { const pooledTLOS = await sdk.api.abi.call({ diff --git a/projects/stonedefi/index.js b/projects/stonedefi/index.js index f4f09d247d..0dd3242770 100644 --- a/projects/stonedefi/index.js +++ b/projects/stonedefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const {BigNumber} = require("bignumber.js"); @@ -135,7 +136,7 @@ module.exports = { pool2: pool2s([bsccakevault, stbnbcakevault], [stbnbcakelp, bsccakelp], "bsc", addr=>{ addr = addr.toLowerCase(); if (addr === "0xd523a3c371c0c301794120c7ca9639f22c02839a") { - return "bsc:0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" + return "bsc:" + ADDRESSES.bsc.WBNB } else if (addr === "0xf7fb08c187e6cd1f2149e6c818d0b6d4d4ef1430") { return "0xe63d6b308bce0f6193aec6b7e6eba005f41e36ab" diff --git a/projects/strike/index.js b/projects/strike/index.js index c93a23b020..40f8308780 100644 --- a/projects/strike/index.js +++ b/projects/strike/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {fullCoumpoundExports} = require('../helper/compound') const comptroller = "0xe2e17b2CBbf48211FA7eB8A875360e5e39bA2602" -module.exports=fullCoumpoundExports(comptroller, "ethereum", "0xbEe9Cf658702527b0AcB2719c1FAA29EdC006a92", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2") \ No newline at end of file +module.exports=fullCoumpoundExports(comptroller, "ethereum", "0xbEe9Cf658702527b0AcB2719c1FAA29EdC006a92", ADDRESSES.ethereum.WETH) \ No newline at end of file diff --git a/projects/strips/index.js b/projects/strips/index.js index e285ac2af0..0068a5f02d 100644 --- a/projects/strips/index.js +++ b/projects/strips/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abi = require('./abi.json'); const stripsContract = '0xFC03E4A954B7FF631e4a32360CaebB27B6849457'; -const usdc = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'; +const usdc = ADDRESSES.ethereum.USDC; const chain = 'arbitrum'; async function getMarkets(block) { diff --git a/projects/sturdy/index.js b/projects/sturdy/index.js index ced46b9041..55d306c74b 100644 --- a/projects/sturdy/index.js +++ b/projects/sturdy/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { aaveV2Export, } = require('../helper/aave'); const { mergeExports, } = require('../helper/utils'); @@ -8,7 +9,7 @@ module.exports = mergeExports([ { misrepresentedTokens: true, ethereum: aaveV2Export('0xA422CA380bd70EeF876292839222159E41AAEe17', { useOracle: true }), - fantom: aaveV2Export('0x7ff2520cd7b76e8c49b5db51505b842d665f3e9a', { useOracle: true, baseCurrency: '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e' }), + fantom: aaveV2Export('0x7ff2520cd7b76e8c49b5db51505b842d665f3e9a', { useOracle: true, baseCurrency: ADDRESSES.fantom.DAI }), methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.. TVL is calculated by getting the market addresses from comptroller and calling the getCash() on-chain method to get the amount of tokens locked in each of these addresses, then we get the price of each token from coingecko. To view the Borrowed amounts along with the currently liquidity, click the 'Borrowed' check box", } ]) diff --git a/projects/sugarswap/index.js b/projects/sugarswap/index.js index cadf7af546..5d565e21ce 100644 --- a/projects/sugarswap/index.js +++ b/projects/sugarswap/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') const uniTvl = getUniTVL({ factory: '0x1486397B3C0e6fEB8c483faD2F03E8c404cAEDe7', useDefaultCoreAssets: true }) const masterchef = '0x45eecDADa0B58B0E78F94549F65FDAF447b35c17' const sugar = '0xd3ccBF3867FF0204730173eB4cad3C4B5fd07c69' -const weth = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' +const weth = ADDRESSES.arbitrum.WETH module.exports = { misrepresentedTokens: true, diff --git a/projects/summitdefi/index.js b/projects/summitdefi/index.js index cbf1851cc0..2d3b40002b 100644 --- a/projects/summitdefi/index.js +++ b/projects/summitdefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); const abi = require("./abi.json"); @@ -152,7 +153,7 @@ async function staking(timestamp, block, chainBlocks) { block, chain })).output; - sdk.util.sumSingleBalance(balances, "fantom:0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", BigNumber(summitInEverest).times(summitValueInUSDC).toFixed(0)); + sdk.util.sumSingleBalance(balances, "fantom:" + ADDRESSES.fantom.DAI, BigNumber(summitInEverest).times(summitValueInUSDC).toFixed(0)); return balances; } diff --git a/projects/sun/index.js b/projects/sun/index.js index 72a83ffdbd..0232070e18 100644 --- a/projects/sun/index.js +++ b/projects/sun/index.js @@ -1,58 +1,59 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { getTokenBalance, getTrxBalance, unverifiedCall, sumTokens } = require('../helper/chain/tron'); const pools = [ { pool: 'TKcEU8ekq2ZoFzLSGFYCUY6aocJBX9X31b', stablecoins: [ - "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", // USDT + ADDRESSES.tron.USDT, // USDT "TMwFHYXLJaRUPeW6421aqXL4ZEzPRFGkGT", // // USDJ "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", // // TUSD ] }, { pool: 'TKVsYedAY23WFchBniU7kcx1ybJnmRSbGt', stablecoins: [ // USDD 3pool - "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", // USDT - "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", // USDD + ADDRESSES.tron.USDT, // USDT + ADDRESSES.tron.USDD, // USDD "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", // // TUSD ] }, { pool: 'TAUGwRhmCP518Bm4VBqv7hDun9fg8kYjC4', stablecoins: [ // USDD 2pool - "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", // USDD - "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", // USDT + ADDRESSES.tron.USDD, // USDD + ADDRESSES.tron.USDT, // USDT ] }, { pool: 'TQx6CdLHqjwVmJ45ecRzodKfVumAsdoRXH', stablecoins: [ - "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", // // USDC + ADDRESSES.tron.USDC, // // USDC ] }, { pool: 'TB6zgiG14iQkNxqU4mYe7cMiS5aCYfyidL', stablecoins: [ - "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", // // USDC + ADDRESSES.tron.USDC, // // USDC ] }, { pool: 'TNTfaTpkdd4AQDeqr8SGG7tgdkdjdhbP5c', stablecoins: [ // USDD 2pool - "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", // USDD - "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", // USDT + ADDRESSES.tron.USDD, // USDD + ADDRESSES.tron.USDT, // USDT ] }, { pool: 'TExeaZuD5YPi747PN5yEwk3Ro9eT2jJfB6', stablecoins: [ // USDC 2pool - "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", // // USDC - "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", // USDT + ADDRESSES.tron.USDC, // // USDC + ADDRESSES.tron.USDT, // USDT ] }, { pool: 'TS8d3ZrSxiGZkqhJqMzFKHEC1pjaowFMBJ', stablecoins: [ // new TUSD 2pool "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", // // TUSD - "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", // USDT + ADDRESSES.tron.USDT, // USDT ] }, { pool: 'TE7SB1v9vRbYRe5aJMWQWp9yfE2k9hnn3s', stablecoins: [ // new USDD/2USD - "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", // // USDC + ADDRESSES.tron.USDC, // // USDC ] }, { @@ -62,7 +63,7 @@ const pools = [ }, { pool: 'TLssvTsY4YZeDPwemQvUzLdoqhFCbVxDGo', stablecoins: [ // new USDC/2USD - "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", // USDD + ADDRESSES.tron.USDD, // USDD ] } ] diff --git a/projects/superbots/index.js b/projects/superbots/index.js index b070cb5ed8..a5dcb72c1a 100644 --- a/projects/superbots/index.js +++ b/projects/superbots/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { pool2 } = require('../helper/pool2') const { staking } = require('../helper/staking') const vault_tokens = [ - '0xe9e7cea3dedca5984780bafc599bd69add087d56', // BUSD - '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', // WBNB - '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', // BTCB - '0x2170ed0880ac9a755fd29b2688956bd959f933f8', // WETH + ADDRESSES.bsc.BUSD, // BUSD + ADDRESSES.bsc.WBNB, // WBNB + ADDRESSES.bsc.BTCB, // BTCB + ADDRESSES.bsc.ETH, // WETH ] const vaults = [ '0x4558684869b1f814b4d8b177dcb0a2e10f4e007d', diff --git a/projects/sushiswap-kashi/kashi-lending.js b/projects/sushiswap-kashi/kashi-lending.js index ca93ff369a..bff62c3ff6 100644 --- a/projects/sushiswap-kashi/kashi-lending.js +++ b/projects/sushiswap-kashi/kashi-lending.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { request, gql } = require("graphql-request"); const { getBlock } = require("../helper/http"); @@ -59,8 +60,8 @@ function kashiLending(chain, borrowed) { kashiPairs.map(async (pair) => { if ( - pair.asset.id === "0x0000000000000000000000000000000000000000" || - pair.collateral.id === "0x0000000000000000000000000000000000000000" + pair.asset.id === ADDRESSES.null || + pair.collateral.id === ADDRESSES.null ) { return; } diff --git a/projects/sushiswap/historical.js b/projects/sushiswap/historical.js index f1d5d957f8..97278060cf 100644 --- a/projects/sushiswap/historical.js +++ b/projects/sushiswap/historical.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { getChainTvl } = require('../helper/getUniSubgraphTvl') const {staking} = require('../helper/staking') @@ -31,7 +32,7 @@ const subgraphChainTvls = Object.keys(subgraphs).reduce((obj, chain) => ({ }), {}) const xSUSHI = "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272" -const SUSHI = "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" +const SUSHI = ADDRESSES.ethereum.SUSHI subgraphChainTvls.ethereum.staking = staking(xSUSHI, SUSHI, 'ethereum'); diff --git a/projects/sushiswap/index.js b/projects/sushiswap/index.js index 8edede279a..7eaf665f7c 100644 --- a/projects/sushiswap/index.js +++ b/projects/sushiswap/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {staking} = require('../helper/staking') const { getExports } = require('../helper/heroku-api') const indexExports = require('./api') const xSUSHI = "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272" -const SUSHI = "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" +const SUSHI = ADDRESSES.ethereum.SUSHI // const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) // // module.exports = { diff --git a/projects/suter-shield/index.js b/projects/suter-shield/index.js index e8dc49815d..f47367ef18 100644 --- a/projects/suter-shield/index.js +++ b/projects/suter-shield/index.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require("bignumber.js") // ETH -const ETH_COIN = '0x0000000000000000000000000000000000000000'; +const ETH_COIN = ADDRESSES.null; const SUTER_ETH_V1 = '0x02b4E089E96a0A672dE0a0d93E2869B899b15a44'; const SUTER_ETH_V2 = '0x934cc5704165711296207b5AFc87933AE0685a4C'; -const USDT_COIN = '0xdAC17F958D2ee523a2206206994597C13D831ec7'; +const USDT_COIN = ADDRESSES.ethereum.USDT; const SUTER_USDT_V1 = '0x29abf1a011cdfb9548dc8faa6d19b1b39808bf58'; const SUTER_USDT_V2 = '0xB8fcF79EAd34E98e45fc21E5dB1C5C561d906371'; -const DAI_COIN = '0x6B175474E89094C44Da98b954EedeAC495271d0F'; +const DAI_COIN = ADDRESSES.ethereum.DAI; const SUTER_DAI_V1 = '0x54A8e0C76Eec21DD30842FbbcA2D336669102b77'; const SUTER_DAI_V2 = '0xbdf418486D438e44F5aAC6aF86330dA638ea70AD'; @@ -18,13 +19,13 @@ const SUTER_COIN = '0xAA2ce7Ae64066175E0B90497CE7d9c190c315DB4'; const SUTER_SUTER_V1 = '0xab4e72599e2cec5dcc8249657833b3408905900e'; // BSC -// const BNB_COIN = '0x0000000000000000000000000000000000000000'; +// const BNB_COIN = ADDRESSES.null; // WBNB -const BNB_COIN = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c'; +const BNB_COIN = ADDRESSES.bsc.WBNB; const SUTER_BNB_V1 = '0x2A00d7d2de1E147a3BCAa122B4EC5D6f9F0c1147'; const SUTER_BNB_V2 = '0x5bb6eE37a6503fe381207c3BAC0Aa6d7B33590Fa'; -const BUSD_COIN = '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56'; +const BUSD_COIN = ADDRESSES.bsc.BUSD; const SUTER_BUSD_V1 = '0xe557c77Ed24df7cDF21ED55a8C56Ea36CeBD5BD2'; const SUTER_BUSD_V2 = '0x382926Ba4D92E5d7652A85Aa7085Ffb15b6b6C89'; diff --git a/projects/svn/index.js b/projects/svn/index.js index 114b3a93df..d0d8cf77d5 100644 --- a/projects/svn/index.js +++ b/projects/svn/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { stakingPricedLP } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -5,7 +6,7 @@ const token0Abi = 'address:token0' const token1Abi = 'address:token1' const { default: BigNumber } = require("bignumber.js"); -let token = "0x654bAc3eC77d6dB497892478f854cF6e8245DcA9"; +let token = ADDRESSES.cronos.SVN; let share = "0xf8b9facB7B4410F5703Eb29093302f2933D6E1Aa"; const rewardPool = "0xA51054BDf0910E3cE9B233e6B5BdDc0931b2E2ED"; const masonry = "0x2CcbFD9598116cdF9B94fF734ece9dCaF4c9d471"; @@ -93,7 +94,7 @@ async function tvl(timestamp, block, chainBlocks) { "cronos", (addr) => `cronos:${addr}` ); - delete balances['cronos:0x654bac3ec77d6db497892478f854cf6e8245dca9']; + delete balances['cronos:' + ADDRESSES.cronos.SVN]; return balances; } diff --git a/projects/swampfinance/index.js b/projects/swampfinance/index.js index 4f87a741e0..674d31402a 100644 --- a/projects/swampfinance/index.js +++ b/projects/swampfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { yieldHelper, } = require("../helper/yieldHelper") module.exports = yieldHelper({ @@ -5,5 +6,5 @@ module.exports = yieldHelper({ chain: 'bsc', masterchef: '0x33AdBf5f1ec364a4ea3a5CA8f310B597B8aFDee3', nativeToken: '0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d', - blacklistedTokens: ['0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c'] + blacklistedTokens: [ADDRESSES.bsc.BTCB] }) \ No newline at end of file diff --git a/projects/swapmatic/index.js b/projects/swapmatic/index.js index 6a82b18512..868193d1a7 100644 --- a/projects/swapmatic/index.js +++ b/projects/swapmatic/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const BigNumber = require('bignumber.js'); const { getLogs } = require('../helper/cache/getLogs') const START_BLOCK = 3285065 - 1; const FACTORY = '0x90D882B2789523403ff263D1F93Ead986c38446C'; -const MATIC = '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0'.toLowerCase(); +const MATIC = ADDRESSES.ethereum.MATIC.toLowerCase(); async function tvl(_, _block, cb, { api }) { const chain = 'polygon' diff --git a/projects/swapsicle/index.js b/projects/swapsicle/index.js index 3490ad8419..e0bf73fcad 100644 --- a/projects/swapsicle/index.js +++ b/projects/swapsicle/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { ethers } = require("ethers"); const { getUniTVL } = require('../helper/unknownTokens') @@ -7,14 +8,14 @@ const BigNumber = require("bignumber.js"); const iceBoxABI = require("./iceBoxABI.json"); const iceVaultABI = require("./icevaultABI.json"); -const WAVAX = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7' -//const WTLOS = '0xd102ce6a4db07d247fcc28f366a623df0938ca9e' +const WAVAX = ADDRESSES.avax.WAVAX +//const WTLOS = ADDRESSES.telos.WTLOS const contracts = { avax: { factory: "0x9c60c867ce07a3c403e2598388673c10259ec768", pops: "0x240248628B7B6850352764C5dFa50D1592A033A8", - usdc: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + usdc: ADDRESSES.avax.USDC, stakingContract_sPOPS: "0x5108176bC1B7e72440e6B48862c51d7eB0AEd5c4", stakingContract_IB: "0x6aA10ead8531504a8A3B04a9BfCFd18108F2d2c2", stakingContract_IB2: "0x737CAE995aCec229a6958B49f6d3eB9F383480Ab", @@ -44,7 +45,7 @@ const contracts = { stakingContract_IB: '0xac448d75e945923b176ebca4ff2b5a82de73f812', stakingContract_IB2: '0x08010b76d4b03cabcfb0f6ba9db7de8336c715fe', pops: "0x173fd7434b8b50df08e3298f173487ebdb35fd14", - stlos: "0xB4B01216a5Bc8F1C8A33CD990A1239030E60C905" + stlos: ADDRESSES.telos.STLOS } } @@ -59,7 +60,7 @@ function getTLOSAddress(address) { // AVAX (ETH) staking product async function iceBox(contract, block, chain) { let balances = { - "0x0000000000000000000000000000000000000000": ( + [ADDRESSES.null]: ( await sdk.api.eth.getBalance({ target: contract, block, chain: chain }) ).output, }; @@ -86,7 +87,7 @@ async function stakedAVAXIceBox(timestamp, ethBlock, chainBlocks) { const block = chainBlocks.avax; const ibBalance = await iceBox(contracts.avax.stakingContract_IB, block, 'avax'); - balances[getAVAXAddress(WAVAX)] = ibBalance["0x0000000000000000000000000000000000000000"]; + balances[getAVAXAddress(WAVAX)] = ibBalance[ADDRESSES.null]; return balances; } @@ -96,7 +97,7 @@ async function stakedAVAXIceBox2(timestamp, ethBlock, chainBlocks) { const block = chainBlocks.avax; const ibBalance2 = await iceBox(contracts.avax.stakingContract_IB2, block, 'avax'); - balances[getAVAXAddress(WAVAX)] = ibBalance2["0x0000000000000000000000000000000000000000"] + balances[getAVAXAddress(WAVAX)] = ibBalance2[ADDRESSES.null] return balances; } diff --git a/projects/swerve.js b/projects/swerve.js index db69f7aa07..fccd5a440f 100644 --- a/projects/swerve.js +++ b/projects/swerve.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const BigNumber = require("bignumber.js"); const sdk = require("@defillama/sdk"); const { get } = require('./helper/http') @@ -16,7 +17,7 @@ let coinDecimals = [ '0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa': '18', '0x0316EB71485b0Ab14103307bf65a021042c6d380': '18', '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D': '8', - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599': '8', + [ADDRESSES.ethereum.WBTC]: '8', '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6': '18', '0x196f4727526eA7FB1e17b2071B3d8eAA38486988': '18', '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5': '18', @@ -26,7 +27,7 @@ let coinDecimals = [ '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd': '2', //GUSD '0x39AA39c021dfbaE8faC545936693aC917d5E7563': '8', //cUSD '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643': '8', //cDAI - '0xdAC17F958D2ee523a2206206994597C13D831ec7': '6', //USDT + [ADDRESSES.ethereum.USDT]: '6', //USDT '0x73a052500105205d34Daf004eAb301916DA8190f': '18', //yTUSD '0xd6aD7a6750A7593E092a9B218d66C0A814a3436e': '6', ///yUSDC '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01': '18', ///yDAI @@ -40,10 +41,10 @@ let coinDecimals = [ '0xC2cB1040220768554cf699b0d863A3cd4324ce32': '18', ///y2DAI '0xE6354ed5bC4b393a5Aad09f21c46E101e692d447': '6', ///y2USDT '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51': '18', //sUSD - '0x6B175474E89094C44Da98b954EedeAC495271d0F': '18', //DAI - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48': '6', //USDC + [ADDRESSES.ethereum.DAI]: '18', //DAI + [ADDRESSES.ethereum.USDC]: '6', //USDC '0x5BC25f649fc4e26069dDF4cF4010F9f706c23831': '18', //dusd - '0x0000000000085d4780B73119b644AE5ecd22b376': '18' + [ADDRESSES.ethereum.TUSD]: '18' } ] @@ -69,9 +70,9 @@ async function tvl(ts, block) { ) const balances = {} - const wBTC = '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599' + const wBTC = ADDRESSES.ethereum.WBTC sdk.util.sumSingleBalance(balances, wBTC, btcTVL * 1e8) - sdk.util.sumSingleBalance(balances, '0xdac17f958d2ee523a2206206994597c13d831ec7', tvl * 1e6) // add as usdt + sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.USDT, tvl * 1e6) // add as usdt return balances; } diff --git a/projects/swim/config.js b/projects/swim/config.js index f033bd4124..68dc4e7723 100644 --- a/projects/swim/config.js +++ b/projects/swim/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { solana: { tvl: { @@ -5,12 +6,12 @@ module.exports = { { pool: 'AfhhYsLMXXyDxQ1B7tNqLTXXDHYtDxCzPcnXWXzHAvDb', // Hexapool tokens: [ - 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // Solana-USDC - 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', // Solana-USDT + ADDRESSES.solana.USDC, // Solana-USDC + ADDRESSES.solana.USDT, // Solana-USDT 'A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM', // Eth-USDC 'Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1', // Eth-USDT - '5RpUwQ8wtdPCZHhu6MERp2RGrpobsbZ6MH5dDHkUjs2', // Bsc-BUSD - '8qJSyQprMC57TWKaYEmetUR3UUiTP2M3hXdcvFhkZdmv', // Bsc-USDT + ADDRESSES.solana.BUSDbs, // Bsc-BUSD + ADDRESSES.solana.USDTbs, // Bsc-USDT ], symbols: [ "usd-coin", diff --git a/projects/swivel/index.js b/projects/swivel/index.js index 30a3e23955..b925e62ef3 100644 --- a/projects/swivel/index.js +++ b/projects/swivel/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unknownTokens"); module.exports = { @@ -13,12 +14,12 @@ module.exports = { ], tokens: [ "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI - "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.USDC, // USDC "0x39AA39c021dfbaE8faC545936693aC917d5E7563", // cUSDC, // "0xEb91861f8A4e1C12333F42DCE8fB0Ecdc28dA716", // eUSDC - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // Lido stETH - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", // Lido wstETH + ADDRESSES.ethereum.STETH, // Lido stETH + ADDRESSES.ethereum.WSTETH, // Lido wstETH "0x5E8422345238F34275888049021821E8E08CAa1f", // frxETH "0xac3E018457B222d93114458476f3E3416Abbe38F" // sfrxETH ] diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 3ba7b6a362..c9f6e2117c 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { chains: [ { name: 'ethereum', - stable: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC + stable: ADDRESSES.ethereum.USDC, // USDC holders: [ '0xb80fDAA74dDA763a8A158ba85798d373A5E84d84', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -10,7 +11,7 @@ module.exports = { }, { name: 'bsc', - stable: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD + stable: ADDRESSES.bsc.BUSD, // BUSD holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 @@ -19,7 +20,7 @@ module.exports = { }, { name: 'avax', - stable: '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', // USDC.e + stable: ADDRESSES.avax.USDC_e, // USDC.e holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0xE75C7E85FE6ADd07077467064aD15847E6ba9877', // portal v2 @@ -29,7 +30,7 @@ module.exports = { }, { name: 'polygon', - stable: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC + stable: ADDRESSES.polygon.USDC, // USDC holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -40,7 +41,7 @@ module.exports = { }, { name: 'telos', - stable: '0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b', // USDC + stable: ADDRESSES.telos.USDC, // USDC holders: [ '0x17A0E3234f00b9D7028e2c78dB2caa777F11490F', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -49,7 +50,7 @@ module.exports = { }, { name: 'aurora', - stable: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802', // USDC + stable: ADDRESSES.aurora.USDC_e, // USDC holders: [ '0x17A0E3234f00b9D7028e2c78dB2caa777F11490F', // portal v1 '0x7Ff7AdE2A214F9A4634bBAA4E870A5125dA521B8', // v1 pool with BNB chain @@ -58,14 +59,14 @@ module.exports = { }, // { // name: 'milkomeda', - // stable: '0x42110A5133F91B49E32B671Db86E2C44Edc13832', // sUSDC + // stable: ADDRESSES.milkomeda.sUSDC, // sUSDC // holders: [ // '0x3Cd5343546837B958a70B82E3F9a0E857d0b5fea', // portal v1 // ] // }, { name: 'boba', - stable: '0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc', // USDC + stable: ADDRESSES.boba.USDC, // USDC holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -75,35 +76,35 @@ module.exports = { }, { name: 'boba_avax', - stable: '0x126969743a6d300bab08F303f104f0f7DBAfbe20', // USDC.e + stable: ADDRESSES.boba_avax.USDC_e, // USDC.e holders: [ '0xd8db4fb1fEf63045A443202d506Bcf30ef404160', // portal v2 ] }, { name: 'boba_bnb', - stable: '0x9F98f9F312D23d078061962837042b8918e6aff2', // USDC + stable: ADDRESSES.boba_bnb.USDC, // USDC holders: [ '0x6148FD6C649866596C3d8a971fC313E5eCE84882', // pool v2 ] }, { name: 'kava', - stable: '0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', // USDC + stable: ADDRESSES.telos.ETH, // USDC holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, { name: 'era', - stable: '0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4', // USDC + stable: ADDRESSES.era.USDC, // USDC holders: [ '0x39dE19C9fF25693A2311AAD1dc5C790194084A39', // portal v2 ] }, { name: 'arbitrum', - stable: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', // USDC + stable: ADDRESSES.arbitrum.USDC, // USDC holders: [ '0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9', // portal v2 ] diff --git a/projects/symphony/index.js b/projects/symphony/index.js index 431c7d979a..05145fe349 100644 --- a/projects/symphony/index.js +++ b/projects/symphony/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getConfig } = require('../helper/cache') const abi = require('./abi.json'); @@ -7,7 +8,7 @@ const yoloAddress = { 'polygon': "0x935b97586FE291750F46Bf4eD7BeB8E1c3d110A2", 'optimism': "0x3Ff61F4d7e1d912CA3Cb342581B2e764aE24d017" } -const zeroAddress = '0x0000000000000000000000000000000000000000'; +const zeroAddress = ADDRESSES.null; const TOKENLIST_URL = "https://raw.githubusercontent.com/symphony-finance/token-list/master/symphony.tokenlist.json"; const calcTvl = async (balances, id, chain, block, transformAddress) => { diff --git a/projects/synapse/config.js b/projects/synapse/config.js index 2d7eb44f7b..5c1d1a4ffa 100644 --- a/projects/synapse/config.js +++ b/projects/synapse/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { ethereum: { tvl: { @@ -5,9 +6,9 @@ module.exports = { { pool: '0x1116898dda4015ed8ddefb84b6e8bc24528af2d8', tokens: [ - "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC - "0xdac17f958d2ee523a2206206994597c13d831ec7", // USDT + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDT, // USDT ] }, ], @@ -15,17 +16,17 @@ module.exports = { address: '0x2796317b0fF8538F253012862c06787Adfb8cEb6', tokens: [ '0x98585dfc8d9e7d48f0b1ae47ce33332cf4237d96', // NEWO - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + ADDRESSES.ethereum.WETH, // WETH '0x0ab87046fBb341D058F17CBC4c1133F25a20a52f', // gOHM '0x71ab77b7dbb4fa7e017bc15090b2163221420282', // HIGH '0x853d955acef822db058eb8505911ed77f175b99e', // FRAX '0xbaac2b4491727d78d2b78815144570b9f2fe8899', // DOG '0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f', // SDT - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC - '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDT, // USDT '0xb753428af26e81097e7fd17f40c88aaa3e04902c', // SFI - '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // wBTC + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.WBTC, // wBTC '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', // agEUR '0x0642026E7f0B6cCaC5925b4E7Fa61384250e1701', // H2O '0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B', // USDB @@ -44,14 +45,14 @@ module.exports = { pool: '0xE27BFf97CE92C3e1Ff7AA9f86781FDd6D48F5eE9', tokens: [ // '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', // neth - '0x121ab82b49B2BC4c7901CA46B8277962b4350204', // weth + ADDRESSES.optimism.WETH, // weth ] }, { pool: '0xF44938b0125A6662f9536281aD2CD6c499F22004', tokens: [ - // '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', // nusd - '0x7f5c764cbc14f9669b88837ca1490cca17c31607', // usdc + // ADDRESSES.metis.SYN, // nusd + ADDRESSES.optimism.USDC, // usdc ] }, ], @@ -62,10 +63,10 @@ module.exports = { bridge: { address: '0xC05e61d0E7a63D27546389B7aD62FdFf5A91aACE', tokens: [ - '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', // WAVAX + ADDRESSES.avax.WAVAX, // WAVAX '0x1f1e7c893855525b303f99bdf5c3c05be09ca251', // SYN '0x321E7092a180BB43555132ec53AaA65a5bF84251', // gOHM - '0x152b9d0FdC40C096757F570A51E494bd4b943E50', // BTC.b + ADDRESSES.avax.BTC_b, // BTC.b '0x5aB7084CB9d270c2Cb052dd30dbecBCA42F8620c', // USDB '0x62edc0692BD897D2295872a9FFCac5425011c661', // GMX ] @@ -74,9 +75,9 @@ module.exports = { { pool: '0xED2a7edd7413021d440b09D654f3b87712abAB66', tokens: [ - "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", // DAI - "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", // USDC - "0xc7198437980c041c805a1edcba50c1ce5db95118", // USDT + ADDRESSES.avax.DAI, // DAI + ADDRESSES.avax.USDC_e, // USDC + ADDRESSES.avax.USDT_e, // USDT // "0xCFc37A6AB183dd4aED08C204D1c2773c0b1BDf46", // nusd ] }, @@ -100,7 +101,7 @@ module.exports = { { pool: '0xCb6674548586F20ca39C97A52A0ded86f48814De', tokens: [ - "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59", // DAI + ADDRESSES.cronos.USDC, // DAI // "0x396c9c192dd323995346632581BEF92a31AC623b", // nusd ] }, @@ -114,7 +115,7 @@ module.exports = { tokens: [ '0x5f4bde007dc06b867f86ebfe4802e34a1ffeed63', // HIGH '0xaA88C603d142C371eA0eAC8756123c5805EdeE03', // DOG - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD + ADDRESSES.bsc.BUSD, // BUSD '0x0FE9778c005a5A6115cBE12b0568a2d50b765A51', // NFD '0x130025eE738A66E691E6A7a62381CB33c6d9Ae83', // JUMP '0xc8699AbBba90C7479dedcCEF19eF78969a2fc608', // USDB @@ -124,9 +125,9 @@ module.exports = { { pool: '0x28ec0B36F0819ecB5005cAB836F4ED5a2eCa4D13', tokens: [ - "0xe9e7cea3dedca5984780bafc599bd69add087d56", // BUSD - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", // USDC - "0x55d398326f99059ff775485246999027b3197955", // USDT + ADDRESSES.bsc.BUSD, // BUSD + ADDRESSES.bsc.USDC, // USDC + ADDRESSES.bsc.USDT, // USDT // "0x23b891e5c62e0955ae2bd185990103928ab817b3", // nusd ] }, @@ -146,9 +147,9 @@ module.exports = { { pool: '0x85fCD7Dd0a1e1A9FCD5FD886ED522dE8221C3EE5', tokens: [ - "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", // DAI - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", // USDC - "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", // USDT + ADDRESSES.polygon.DAI, // DAI + ADDRESSES.polygon.USDC, // USDC + ADDRESSES.polygon.USDT, // USDT // "0xb6c473756050de474286bed418b77aeac39b02af", // nusd ] }, @@ -161,7 +162,7 @@ module.exports = { address: '0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b', tokens: [ '0x91fa20244Fb509e8289CA630E5db3E9166233FDc', // gOHM - '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', // wFTM + ADDRESSES.fantom.WFTM, // wFTM '0x6Fc9383486c163fA48becdEC79d6058f984f62cA', // USDB ] }, @@ -169,17 +170,17 @@ module.exports = { { pool: '0x85662fd123280827e11c59973ac9fcbe838dc3b4', tokens: [ - "0x04068da6c83afcfa0e13ba15a6696662335d5b75", // USDC - "0x049d68029688eabf473097a2fc38ef61633a3c7a", // fUSDT + ADDRESSES.fantom.USDC, // USDC + ADDRESSES.fantom.fUSDT, // fUSDT // "0xED2a7edd7413021d440b09D654f3b87712abAB66", // nusd ] }, { - pool: '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', + pool: ADDRESSES.arbitrum.nUSD, tokens: [ - "0x82f0b8b456c1a451378467398982d4834b6829c1", // MIM - "0x04068da6c83afcfa0e13ba15a6696662335d5b75", // USDC - "0x049d68029688eabf473097a2fc38ef61633a3c7a", // USDT + ADDRESSES.fantom.MIM, // MIM + ADDRESSES.fantom.USDC, // USDC + ADDRESSES.fantom.fUSDT, // USDT // "0xED2a7edd7413021d440b09D654f3b87712abAB66", // nusd ] }, @@ -187,7 +188,7 @@ module.exports = { pool: '0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1', tokens: [ "0x74b23882a30290451A17c44f4F05243b6b58C76d", // weth - // "0x67c10c397dd0ba417329543c1a40eb48aaa7cd00", // neth + // ADDRESSES.metis.SYN, // neth ] }, ] @@ -204,16 +205,16 @@ module.exports = { { pool: '0x753bb855c8fe814233d26Bb23aF61cb3d2022bE5', tokens: [ - "0xd203De32170130082896b4111eDF825a4774c18E", // weth + ADDRESSES.boba.WETH, // weth // "0x96419929d7949D6A801A6909c145C8EEf6A40431", // neth ] }, { pool: '0x75FF037256b36F15919369AC58695550bE72fead', tokens: [ - "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35", // DAI - "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", // USDC - "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d", // USDT + ADDRESSES.boba.DAI, // DAI + ADDRESSES.boba.USDC, // USDC + ADDRESSES.boba.USDT, // USDT // "0x6B4712AE9797C199edd44F897cA09BC57628a1CF", // nusd ] }, @@ -232,14 +233,14 @@ module.exports = { { pool: '0x09fec30669d63a13c666d2129230dd5588e2e240', tokens: [ - "0x420000000000000000000000000000000000000a", // weth + ADDRESSES.metis.WETH, // weth // "0x931b8f17764362a3325d30681009f0edd6211231", // neth ] }, { pool: '0x555982d2E211745b96736665e19D9308B615F78e', tokens: [ - "0xea32a96608495e54156ae48931a7c20f0dcc1a21", // USDC + ADDRESSES.metis.m_USDC, // USDC // "0x961318fc85475e125b99cc9215f62679ae5200ab", // nusd ] }, @@ -251,32 +252,32 @@ module.exports = { bridge: { address: '0x6F4e8eBa4D337f874Ab57478AcC2Cb5BACdc19c9', tokens: [ - '0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a', + ADDRESSES.arbitrum.GMX, ] }, pools: [ { pool: '0xa067668661C84476aFcDc6fA5D758C4c01C34352', tokens: [ - "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", // weth + ADDRESSES.arbitrum.WETH, // weth // "0x3ea9b0ab55f34fb188824ee288ceaefc63cf908e", // neth ] }, { pool: '0x9Dd329F5411466d9e0C488fF72519CA9fEf0cb40', tokens: [ - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", // USDT - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", // USDC - // "0x2913e812cf0dcca30fb28e6cac3d2dcff4497688", // nusd + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.arbitrum.USDC, // USDC + // ADDRESSES.arbitrum.nUSD, // nusd ] }, { pool: '0x0Db3FE3B770c95A0B99D1Ed6F2627933466c0Dd8', tokens: [ - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", // USDT - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", // USDC - "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", // MIM - // "0x2913e812cf0dcca30fb28e6cac3d2dcff4497688", // nusd + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.MIM, // MIM + // ADDRESSES.arbitrum.nUSD, // nusd ] }, ] @@ -293,9 +294,9 @@ module.exports = { { pool: '0xcEf6C2e20898C2604886b888552CA6CcF66933B0', tokens: [ - "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802", // USDC - "0x4988a896b1227218e4A686fdE5EabdcAbd91571f", // USDT - // "0x07379565cD8B0CaE7c60Dc78e7f601b34AF2A21c", // nusd + ADDRESSES.aurora.USDC_e, // USDC + ADDRESSES.aurora.USDT_e, // USDT + // ADDRESSES.aurora.nUSD, // nusd ] }, ] @@ -306,8 +307,8 @@ module.exports = { bridge: { address: '0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b', tokens: [ - '0x72cb10c6bfa5624dd07ef608027e366bd690048f', // JEWEL - '0xa9ce83507d872c5e1273e745abcfda849daa654f', // xJEWEL + ADDRESSES.harmony.JEWEL, // JEWEL + ADDRESSES.harmony.xJEWEL, // xJEWEL '0x24eA0D436d3c2602fbfEfBe6a16bBc304C963D04', // DFKTEARS ] }, @@ -322,16 +323,16 @@ module.exports = { ] }, { - pool: '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', + pool: ADDRESSES.arbitrum.nUSD, tokens: [ "0x6983d1e6def3690c4d616b13597a09e6193ea013", // 1ETH - // "0x0b5740c6b4a97f90ef2f0220651cca420b868ffb", // neth + // ADDRESSES.optimism.gOHM, // neth ] }, { pool: '0x00A4F57D926781f62D09bb05ec76e6D8aE4268da', tokens: [ - "0xb12c13e66ade1f72f71834f2fc5082db8c091358", // avax + ADDRESSES.harmony.AVAX, // avax // "???", // synAvax ] }, @@ -367,23 +368,23 @@ module.exports = { }, pools: [ { - pool: '0x07379565cD8B0CaE7c60Dc78e7f601b34AF2A21c', + pool: ADDRESSES.aurora.nUSD, tokens: [ - "0x4e71a2e537b7f9d9413d3991d37958c0b5e1e503", // NOTE + ADDRESSES.canto.NOTE, // NOTE // "0xd8836af2e565d3befce7d906af63ee45a57e8f80", // nUSD ] }, { pool: '0x273508478e099Fdf953349e6B3704E7c3dEE91a5', tokens: [ - "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd", // USDC + ADDRESSES.functionx.WFX, // USDC // "0xd8836af2e565d3befce7d906af63ee45a57e8f80", // nusd ] }, { pool: '0xF60F88bA0CB381b8D8A662744fF93486273c22F9', tokens: [ - "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", // cantoETH + ADDRESSES.functionx.PURSE, // cantoETH // "0x09fec30669d63a13c666d2129230dd5588e2e240", // nETH ] }, @@ -408,7 +409,7 @@ module.exports = { pool: '0xfdbad1699a550f933efebf652a735f2f89d3833c', tokens: [ "0xd6dab4cff47df175349e6e7ee2bf7c40bb8c05a3", // USDT - "0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167", // o.USDT + ADDRESSES.klaytn.oUSDT, // o.USDT ] }, ] diff --git a/projects/synapse/index.js b/projects/synapse/index.js index 214b382bd7..ef55e2cbea 100644 --- a/projects/synapse/index.js +++ b/projects/synapse/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens, } = require("../helper/unwrapLPs") const { sumSingleBalance, TOKEN_LIST, getDenomBalance, } = require('../helper/chain/terra') const sdk = require("@defillama/sdk") const { getChainTransform, getFixBalances } = require("../helper/portedTokens") const config = require("./config") -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null Object.keys(config).forEach(chain => { const chainExport = { diff --git a/projects/syncdex-finance/index.js b/projects/syncdex-finance/index.js index 04db3fbd43..dda3a87a1f 100644 --- a/projects/syncdex-finance/index.js +++ b/projects/syncdex-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const native_staking_contract = "0x9212456Da7804245BDF02e7294E4f36D27f9c2B1"; @@ -9,9 +10,9 @@ const sydx_usdc_farming_contract = "0x75aC887df149076b7DF4deAA0267711475b71572"; const usdc_usdplus_farming_contract = "0xF0B42d393eAB886bd9310AaF0A2B1eDbaaD31fdE" const assets = [ - "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", - "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", - "0x0000000000000000000000000000000000000000", // This is address of native token (ETH), you can check native_staking_contract + ADDRESSES.era.USDC, + ADDRESSES.era.WETH, + ADDRESSES.null, // This is address of native token (ETH), you can check native_staking_contract "0x8E86e46278518EFc1C5CEd245cBA2C7e3ef11557" ]; const SYNC_DEX = '0x3a34FA9a1288597Ad6C1Da709f001D37FeF8b19e' diff --git a/projects/synlev.js b/projects/synlev.js index 8e675589af..ab041be759 100644 --- a/projects/synlev.js +++ b/projects/synlev.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk") -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH = ADDRESSES.ethereum.WETH; async function tvl(ts, block) { const balances = {} const { output: balance1 } = await sdk.api.eth.getBalance({ target: '0xFf40827Ee1c4Eb6052044101E1C6E28DBe1440e3', block }) diff --git a/projects/synthetix/api.js b/projects/synthetix/api.js index bedf71b8d0..1850690eed 100644 --- a/projects/synthetix/api.js +++ b/projects/synthetix/api.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); const abi = require('./abi.json'); @@ -21,7 +22,7 @@ const synthetixStates = { optimism: '0x8377b25B8564f6Be579865639776c5082CB37163' // It's Issuer, not SynthetixState but has the same issuanceRatio function } const synthetixs = { - ethereum: '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F', + ethereum: ADDRESSES.ethereum.SNX, optimism: '0x8700daec35af8ff88c16bdf0418774cb3d7599b4' } const snxGraphEndpoints = { @@ -29,7 +30,7 @@ const snxGraphEndpoints = { optimism: 'https://api.thegraph.com/subgraphs/name/0xngmi/snx-lite-optimism-regenesis' } const ethStaking = "0xc1aae9d18bbe386b102435a8632c8063d31e747c" -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" +const weth = ADDRESSES.ethereum.WETH function chainTvl(chain) { return async (timestamp, ethBlock, chainBlocks) => { diff --git a/projects/synthetix/apiCache.js b/projects/synthetix/apiCache.js index ff8300cddd..735e61a8fd 100644 --- a/projects/synthetix/apiCache.js +++ b/projects/synthetix/apiCache.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); const abi = require('./abi.json'); @@ -24,7 +25,7 @@ const synthetixStates = { optimism: '0x8377b25B8564f6Be579865639776c5082CB37163' // It's Issuer, not SynthetixState but has the same issuanceRatio function } const synthetixs = { - ethereum: '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F', + ethereum: ADDRESSES.ethereum.SNX, optimism: '0x8700daec35af8ff88c16bdf0418774cb3d7599b4' } const snxGraphEndpoints = { @@ -32,7 +33,7 @@ const snxGraphEndpoints = { optimism: 'https://api.thegraph.com/subgraphs/name/0xngmi/snx-lite-optimism-regenesis' } const ethStaking = "0xc1aae9d18bbe386b102435a8632c8063d31e747c" -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" +const weth = ADDRESSES.ethereum.WETH function chainTvl(chain) { return async (timestamp, ethBlock, chainBlocks) => { diff --git a/projects/taichi/index.js b/projects/taichi/index.js index 7c3e1539cc..f6ad6dd63b 100644 --- a/projects/taichi/index.js +++ b/projects/taichi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0xD4b0DC48AB6BD7907E3698A62CCD1DBE2d46d310" @@ -5,9 +6,9 @@ module.exports = { deadFrom: 1648765747, ...ohmTvl(treasury, [ //BUSD - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], + [ADDRESSES.bsc.BUSD, false], //WBNB - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], + [ADDRESSES.bsc.WBNB, false], //pancakeswap LP ["0x5ef473d91e89c613b3e5138fa8279884bf5b7adf", true], ], "bsc", "0xb12Ef3033D5CE0F3f80f3A15dE7E90Cd87a5973e", "0xe49bfc53a195a62d78a941a1967d7b0f83a47c14") diff --git a/projects/talentprotocol/index.js b/projects/talentprotocol/index.js index 5b9daa817e..4ce8d9ea7b 100644 --- a/projects/talentprotocol/index.js +++ b/projects/talentprotocol/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const cUSDTokenAddress = "0x765DE816845861e75A25fCA122bb6898B8B1282a" +const cUSDTokenAddress = ADDRESSES.celo.cUSD const stakingContract = "0x8ea91a982d93836415CE3abbaf12d59fb8cE3Ff8" diff --git a/projects/tbill.js b/projects/tbill.js index 51a20e63a9..4ab4a7a815 100644 --- a/projects/tbill.js +++ b/projects/tbill.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); async function tvl(timestamp, _, { theta: block }) { return { "theta-fuel": ( await sdk.api.eth.getBalance({ - target: "0x4dc08b15ea0e10b96c41aec22fab934ba15c983e", + target: ADDRESSES.theta.WTFUEL, block, chain: "theta", decimals: 18, diff --git a/projects/tbtc/index.js b/projects/tbtc/index.js index 8b28482c38..214a888e48 100644 --- a/projects/tbtc/index.js +++ b/projects/tbtc/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') async function tvl(ts, block) { return { - '0x18084fba666a33d37592fa2633fd49a74dd93a88': (await sdk.api.erc20.totalSupply({ target: '0x18084fba666a33d37592fa2633fd49a74dd93a88', block })).output + [ADDRESSES.ethereum.tBTC]: (await sdk.api.erc20.totalSupply({ target: ADDRESSES.ethereum.tBTC, block })).output } } diff --git a/projects/teddy/index.js b/projects/teddy/index.js index 678449fd6f..5ee6503f97 100644 --- a/projects/teddy/index.js +++ b/projects/teddy/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); @@ -11,7 +12,7 @@ const TEDDY = "0x094bd7b2d99711a1486fb94d4395801c6d0fddcc"; const stakingPool2Contract = "0x9717Ff7406Be065EA177bA9ab1bE704060Af8370"; const WAVAX_TSD_PGL = "0x67E395B6ACd948931eeE8F52C7c1Fe537E7f1a7a"; -const NATIVE_ADDRESS = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7"; +const NATIVE_ADDRESS = ADDRESSES.avax.WAVAX; //const LUSD_TOKEN_ADDRESS = "0x5f98805a4e8be255a32880fdec7f6728c6568ba0"; const TROVE_MANAGER_ADDRESS = "0xd22b04395705144Fd12AfFD854248427A2776194"; diff --git a/projects/tegro/index.js b/projects/tegro/index.js index 13c2fcb3e7..21cea4235c 100644 --- a/projects/tegro/index.js +++ b/projects/tegro/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { get } = require('../helper/http') const { transformDexBalances } = require('../helper/portedTokens') const sdk = require('@defillama/sdk') -const nullAddress = '0x0000000000000000000000000000000000000000' +const nullAddress = ADDRESSES.null module.exports = { misrepresentedTokens: true, diff --git a/projects/templar/index.js b/projects/templar/index.js index 65e3b0fb8a..f2e2cdaed8 100644 --- a/projects/templar/index.js +++ b/projects/templar/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const {staking} = require("../helper/staking"); const {sumTokensAndLPsSharedOwners} = require("../helper/unwrapLPs"); @@ -13,8 +14,8 @@ async function bscTvl(timestamp, block, chainBlocks) { await sumTokensAndLPsSharedOwners( balances, [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], // WBNB + [ADDRESSES.bsc.BUSD, false], // BUSD + [ADDRESSES.bsc.WBNB, false], // WBNB ["0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba", false], // MIM ["0x9911e98974d0badde85bd5f4d1f93087aa3ec5fa", true], // MIM-BUSD CAKELP ["0xbf598a387c5f96f8bac9bdccf8fb68bc189cdff7", true], // TEM-MIM CAKELP @@ -62,7 +63,7 @@ async function harmonyTvl (timestamp, block, chainBlocks) { await sumTokensAndLPsSharedOwners(balances, [ ["0xef977d2f931c1978db5f6747666fa1eacb0d0339", false], // DAI ["0xeed838406194feba1bd654cfdf85a941ac0944bc", true], // TEM DAI SLP - ["0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", false] // WONE + [ADDRESSES.harmony.WONE, false] // WONE ], [harmonyTreasury], chainBlocks.harmony, "harmony", addr=> { addr = addr.toLowerCase(); if (addr == "0xd754ae7bb55feb0c4ba6bc037b4a140f14ebe018") { diff --git a/projects/templedao/index.js b/projects/templedao/index.js index 739b105295..1d52c4cc63 100644 --- a/projects/templedao/index.js +++ b/projects/templedao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); const { sumTokens, sumTokens2, unwrapUniswapV3NFTs } = require("../helper/unwrapLPs") @@ -16,7 +17,7 @@ const auraLocker = '0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC'; const templeTreasuryContract = "0x5c8898f8e0f9468d4a677887bc03ee2659321012"; const FRAX = "0x853d955acef822db058eb8505911ed77f175b99e"; const FXS = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0"; -const CVX_FXS = "0xFEEf77d3f69374f66429C91d732A244f074bdf74"; +const CVX_FXS = ADDRESSES.ethereum.cvxFXS; const AURA = '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF' const TEMPLE_DENDEND1 = '0x8A5058100E60e8F7C42305eb505B12785bbA3BcA'; const TEMPLE_DENDEND2 = '0xb0D978C8Be39C119922B99f483cD8C4092f0EA56'; diff --git a/projects/tempodao/index.js b/projects/tempodao/index.js index a0af66dd95..97279e02c2 100644 --- a/projects/tempodao/index.js +++ b/projects/tempodao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0xd069c8c4aD8CCE7076BdD1dca8AA9199dC980Ea8"; @@ -7,5 +8,5 @@ module.exports = ohmTvl(treasuryAddress, [ //JOE LP ["0x720dd9292b3d0dd78c9afa57afd948c2ea2d50d8", true], // WAVAX - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false] + [ADDRESSES.avax.WAVAX, false] ], "avax", "0x6323c227f71b30babdd6fe84093027079a955662", "0x88a425b738682f58c0ff9fcf2cceb47a361ef4cf") \ No newline at end of file diff --git a/projects/tempus.js b/projects/tempus.js index 2c71ab3c4e..3e62811b4b 100644 --- a/projects/tempus.js +++ b/projects/tempus.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f"; -const YFI = "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e"; -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const USDT = ADDRESSES.ethereum.USDT; +const USDC = ADDRESSES.ethereum.USDC +const DAI = ADDRESSES.ethereum.DAI; +const YFI = ADDRESSES.ethereum.YFI; +const WETH = ADDRESSES.ethereum.WETH; const CHAIN_DATA = { ethereum: { diff --git a/projects/tender-finance/index.js b/projects/tender-finance/index.js index e91dfff289..bc9ca25784 100644 --- a/projects/tender-finance/index.js +++ b/projects/tender-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require("../helper/compound"); module.exports = { @@ -5,5 +6,5 @@ module.exports = { [1678190400,"Oracle Exploit"] ], methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets.", - arbitrum: compoundExports('0xeed247Ba513A8D6f78BE9318399f5eD1a4808F8e', 'arbitrum', '0x0706905b2b21574DEFcF00B5fc48068995FCdCdf', '0x82af49447d8a07e3bd95bd0d56f35241523fbab1') + arbitrum: compoundExports('0xeed247Ba513A8D6f78BE9318399f5eD1a4808F8e', 'arbitrum', '0x0706905b2b21574DEFcF00B5fc48068995FCdCdf', ADDRESSES.arbitrum.WETH) }; diff --git a/projects/tezos-baking/index.js b/projects/tezos-baking/index.js index 1d9eacc2c0..b19412e8a2 100644 --- a/projects/tezos-baking/index.js +++ b/projects/tezos-baking/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/sumTokens') module.exports = { tezos: { - tvl: sumTokensExport({ owner: 'KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5', tokens: [nullAddress, 'KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn'] }), + tvl: sumTokensExport({ owner: 'KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5', tokens: [nullAddress, ADDRESSES.tezos.tzBTC] }), }, methodology: "Liquidity on tezos' tzBTC-XTZ pair" } \ No newline at end of file diff --git a/projects/thales/index.js b/projects/thales/index.js index 47dec6df39..67580bbe76 100644 --- a/projects/thales/index.js +++ b/projects/thales/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking') @@ -7,11 +8,11 @@ const { dodoPool2 } = require('../helper/pool2') const ethMarketsManager = "0x5ed98Ebb66A929758C7Fe5Ac60c979aDF0F4040a" const ETH_SUSD = "0x57ab1ec28d129707052df4df418d58a2d46d5f51" const ETH_THALES = "0x8947da500eb47f82df21143d0c01a29862a8c3c5" -const ETH_WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" -const ETH_USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +const ETH_WETH = ADDRESSES.ethereum.WETH +const ETH_USDC = ADDRESSES.ethereum.USDC const opMarketsManager = "0xBE086E0A2c588Ad64C8530048cE4356190D6a6F3" -const OP_SUSD = "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9" +const OP_SUSD = ADDRESSES.optimism.sUSD const opThalesStaking = "0xc392133eea695603b51a5d5de73655d571c2ce51" const opThalesAmm = "0x5ae7454827d83526261f3871c1029792644ef1b1" const opThalesLpToken = "0xac6705BC7f6a35eb194bdB89066049D6f1B0B1b5"; @@ -21,11 +22,11 @@ const opSportsMarketsManager = "0xFBffEbfA2bF2cF84fdCf77917b358fC59Ff5771e" const opSportsAmm = "0x170a5714112daEfF20E798B6e92e25B86Ea603C1" const polygonMarketsManager = "0x85f1B57A1D3Ac7605de3Df8AdA056b3dB9676eCE" -const polygon_USDC = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" +const polygon_USDC = ADDRESSES.polygon.USDC const polygonThalesAmm = "0x9b6d76B1C6140FbB0ABc9C4a348BFf4e4e8a1213" const arbitrumMarketsManager = "0x95d93c88c1b5190fA7FA4350844e0663e5a11fF0" -const arbitrum_USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" +const arbitrum_USDC = ADDRESSES.arbitrum.USDC const arbitrumThalesAMM = "0x2b89275efB9509c33d9AD92A4586bdf8c4d21505" @@ -33,11 +34,11 @@ const L2toL1Synths = { //THALES "0x217d47011b23bb961eb6d93ca9945b7501a5bb11": ETH_THALES, // sUSD - "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9": ETH_SUSD, + [ADDRESSES.optimism.sUSD]: ETH_SUSD, // WETH - "0x4200000000000000000000000000000000000006": ETH_WETH, + [ADDRESSES.tombchain.FTM]: ETH_WETH, // USDC - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": ETH_USDC, + [ADDRESSES.polygon.USDC]: ETH_USDC, } const transform = (addr)=>{ diff --git a/projects/the-idols/index.js b/projects/the-idols/index.js index 929ecfa073..d9a0bb3cf5 100644 --- a/projects/the-idols/index.js +++ b/projects/the-idols/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x439cac149b935ae1d726569800972e1669d17094" const virtue_token = "0x9416ba76e88d873050a06e5956a3ebf10386b863" const stakingAddress = "0x0dd5a35fe4cd65fe7928c7b923902b43d6ea29e7" const treasuryTokens = [ - ["0xae7ab96520de3a18e5e111b5eaab095312d7fe84", false], //stETH + [ADDRESSES.ethereum.STETH, false], //stETH ] module.exports = ohmTvl(treasury, treasuryTokens, "ethereum", stakingAddress, virtue_token, undefined, undefined, true) \ No newline at end of file diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js index 54f067bfd9..065d97c40d 100644 --- a/projects/thetanuts/index.js +++ b/projects/thetanuts/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') // Ethereum Vaults @@ -70,41 +71,41 @@ const bobaPutVault = '0xff5fe7909fc4d0d6643f1e8be8cba72610d0b485' const arbCallVault = '0x0833EC3262Dcc417D88f85Ed5E1EBAf768080f41' // Ethereum Assets -const weth = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' -const usdc = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' -const wbtc = '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' +const weth = ADDRESSES.ethereum.WETH +const usdc = ADDRESSES.ethereum.USDC +const wbtc = ADDRESSES.ethereum.WBTC const ust = '0xa693b19d2931d498c5b318df961919bb4aee87a5' const tUSDC = '0x9f238fae3d1f1982716f136836fc2c0d1c2928ab' const tAlgo = '0x0354762a3c01730d07d2f7098365d64dc81b565d' const bit = '0x1a4b46696b2bb4794eb3d4c26f1c55f9170fa4c5' // Avalanche Assets -const wavax = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7' -const usdce = '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664' -const usdc_avax = '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E' +const wavax = ADDRESSES.avax.WAVAX +const usdce = ADDRESSES.avax.USDC_e +const usdc_avax = ADDRESSES.avax.USDC // Fantom Assets -const wftm = '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83' -const fusdc = '0x04068da6c83afcfa0e13ba15a6696662335d5b75' +const wftm = ADDRESSES.fantom.WFTM +const fusdc = ADDRESSES.fantom.USDC // Binance Smart Chain Assets -const busd = '0xe9e7cea3dedca5984780bafc599bd69add087d56' +const busd = ADDRESSES.bsc.BUSD const ada = '0x3ee2200efb3400fabb9aacf31297cbdd1d435d47' const bch = '0x8ff795a6f4d97e7887c79bea79aba5cc76444adf' -const wbnb = '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c' +const wbnb = ADDRESSES.bsc.WBNB const woo = '0x4691937a7508860F876c9c0a2a617E7d9E945D4B' // Polygon Assets const wmatic = '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270' -const pousdc = '0x2791bca1f2de4661ed88a30c99a7a9449aa84174' +const pousdc = ADDRESSES.polygon.USDC const ust_matic_wormhole = '0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59' // Aurora Assets -const near = '0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d' +const near = ADDRESSES.aurora.NEAR // Boba Assets -let boba = '0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7' -const bobaUSDC = '0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc' +let boba = ADDRESSES.boba.BOBA +const bobaUSDC = ADDRESSES.boba.USDC // Arbitrum assets let arb = '0x912ce59144191c1204e64559fe8253a0e49e6548' diff --git a/projects/thorusfi/index.js b/projects/thorusfi/index.js index 1c796a5e84..ffbe60e5e4 100644 --- a/projects/thorusfi/index.js +++ b/projects/thorusfi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { getUniTVL } = require('../helper/unknownTokens') @@ -7,7 +8,7 @@ const thorusMaster_avax = "0x871d68cFa4994170403D9C1c7b3D3E037c76437d"; const THO_avax = "0xAE4AA155D2987B454C29450ef4f862CF00907B61"; const thorusMaster_moonbeam = "0xEeB84a24e10502D8A5c97B11df381D1550B25b9d"; -const THO_moonbeam = "0x735aBE48e8782948a37C7765ECb76b98CdE97B0F"; +const THO_moonbeam = ADDRESSES.shiden.JPYC; module.exports = { diff --git a/projects/tidalfinance/index.js b/projects/tidalfinance/index.js index 39d83d3309..fa4fb8eefb 100644 --- a/projects/tidalfinance/index.js +++ b/projects/tidalfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { transformPolygonAddress } = require("../helper/portedTokens"); @@ -9,7 +10,7 @@ const sellerContract = "0xc73C6C3e80C28dBc55F65bBdC895E828bb98C72d"; const stakingContract = "0x21edB57A75ee69BCe0Fe3D0EfC5674bcF1D5BF93"; // Tokens -const USDC = "0x2791bca1f2de4661ed88a30c99a7a9449aa84174"; +const USDC = ADDRESSES.polygon.USDC; const TIDAL = "0xB41EC2c036f8a42DA384DDE6ADA79884F8b84b26"; /*** Staking of native token (TIDAL) TVL portion ***/ diff --git a/projects/tinlake/index.js b/projects/tinlake/index.js index 6451e8f215..98bcfc2275 100644 --- a/projects/tinlake/index.js +++ b/projects/tinlake/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require("bignumber.js"); const { graphQuery } = require('../helper/http') const data = {} @@ -14,7 +15,7 @@ query GET_TOTAL_TOKEN_TVL { } } `; -const dai = "0x6b175474e89094c44da98b954eedeac495271d0f" +const dai = ADDRESSES.ethereum.DAI async function getData(api) { return graphQuery(subgraphUrl, graphTotalTokenTVLQuery, { api, }) diff --git a/projects/tipidao/index.js b/projects/tipidao/index.js index 843fc1994f..0996f7b100 100644 --- a/projects/tipidao/index.js +++ b/projects/tipidao/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const tpd = "0xd0253dbe5606c9fa01db67eb10be5c3675c2b117"; const tpdStaking = "0xAeab776bE63580cB86309CedB49769e6526abbf4"; const treasury = "0x3287f25f8F29e5d65cE566E5a2a1bd336431d8db"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], // WBNB + [ADDRESSES.bsc.BUSD, false], // BUSD + [ADDRESSES.bsc.WBNB, false], // WBNB ["0x50bc855ad6a3983589927e5bf3ac0688364ffa64", true] // TPD-BUSD CAKE LP ]; diff --git a/projects/tokemak/index.js b/projects/tokemak/index.js index 96f46636f6..00be3bc583 100644 --- a/projects/tokemak/index.js +++ b/projects/tokemak/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { sumTokens, sumTokens2, } = require('../helper/unwrapLPs') const abi = require("../pendle/abi.json"); @@ -19,8 +20,8 @@ const cvxBoosterAddress = "0xF403C135812408BFbE8713b5A23a04b3D48AAE31"; const degenesisContract = "0xc803737D3E12CC4034Dde0B2457684322100Ac38"; const wethPool = "0xD3D13a578a53685B4ac36A1Bab31912D2B2A2F36"; const usdcPool = "0x04bda0cf6ad025948af830e75228ed420b0e860d"; -const usdc = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const usdc = ADDRESSES.ethereum.USDC; +const weth = ADDRESSES.ethereum.WETH; const ohmPool = "0xe7a7D17e2177f66D035d9D50A7f48d8D8E31532D"; const ohm = "0x383518188C0C6d7730D91b2c03a03C837814a899"; const gohmPool = "0x41f6a95Bacf9bC43704c4A4902BA5473A8B00263"; @@ -31,16 +32,16 @@ const fxsPool = "0xADF15Ec41689fc5b6DcA0db7c53c9bFE7981E655"; const fxs = "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0"; const tcrPool = "0x15A629f0665A3Eb97D7aE9A7ce7ABF73AeB79415"; const tcr = "0x9C4A4204B79dd291D6b6571C5BE8BbcD0622F050"; -const toke = "0x2e9d63788249371f1dfc918a52f8d799f4a38c94"; +const toke = ADDRESSES.ethereum.TOKE; const rtoke1 = "0xa760e26aA76747020171fCF8BdA108dFdE8Eb930"; const rtoke2 = "0x96f98ed74639689c3a11daf38ef86e59f43417d3"; const rtoke3 = "0xA374A62DdBd21e3d5716cB04821CB710897c0972"; const sushiPool = "0xf49764c9C5d644ece6aE2d18Ffd9F1E902629777"; -const sushi = "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2"; +const sushi = ADDRESSES.ethereum.SUSHI; const fraxPool = "0x94671A3ceE8C7A12Ea72602978D1Bb84E920eFB2"; const frax = "0x853d955acef822db058eb8505911ed77f175b99e"; const daiPool = "0x0CE34F4c26bA69158BC2eB8Bf513221e44FDfB75"; -const dai = "0x6b175474e89094c44da98b954eedeac495271d0f"; +const dai = ADDRESSES.ethereum.DAI; const feiPool = "0x03DccCd17CC36eE61f9004BCfD7a85F58B2D360D"; const fei = "0x956F47F50A910163D8BF957Cf5846D573E7f87CA"; const lusdPool = "0x9eEe9eE0CBD35014e12E1283d9388a40f69797A3"; @@ -52,7 +53,7 @@ const fox = "0xc770eefad204b5180df6a14ee197d99d808ee52d"; const apwPool = "0xDc0b02849Bb8E0F126a216A2840275Da829709B0"; const apw = "0x4104b135dbc9609fc1a9490e61369036497660c8"; const snxPool = "0xeff721Eae19885e17f5B80187d6527aad3fFc8DE"; -const snx = "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"; +const snx = ADDRESSES.ethereum.SNX; const gamma = '0x6bea7cfef803d1e3d5f7c0103f7ded065644e197'; const gammaPool = '0x2Fc6e9c1b2C07E18632eFE51879415a580AD22E1'; const mim = '0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3'; @@ -63,7 +64,7 @@ const uni = "0x5fa464cefe8901d66c09b85d5fcdc55b3738c688"; const uniStaking = "0x1b429e75369ea5cd84421c1cc182cee5f3192fd3"; const alusd = "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9"; const alusdPool = "0x7211508D283353e77b9A7ed2f22334C219AD4b4C"; -const steth = "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"; +const steth = ADDRESSES.ethereum.STETH; const crvSteth = "0xDC24316b9AE028F1497c275EB9192a3Ea0f67022"; const myc = "0x4b13006980acb09645131b91d259eaa111eaf5ba"; const mycPool = "0x061aee9ab655e73719577EA1df116D7139b2A7E7"; diff --git a/projects/tokenlon/index.js b/projects/tokenlon/index.js index 1b5670e2cc..d898b00d1c 100644 --- a/projects/tokenlon/index.js +++ b/projects/tokenlon/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { covalentGetTokens } = require("../helper/http"); @@ -29,7 +30,7 @@ const STAGES_STAKING_CONTRACTS = [ // Receives rewards/fee from AMM wrapper via reward distributor on WETH shape, some are sold for LON... const MULTISIG_ONE = "0x3557BD3d422300198719710Cc3f00194E1c20A46"; -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH = ADDRESSES.ethereum.WETH; const ethTvl = async (timestamp, block) => { const amm_wrapper_addr = ( diff --git a/projects/tomb/index.js b/projects/tomb/index.js index 584b3f6205..14db39e8c5 100644 --- a/projects/tomb/index.js +++ b/projects/tomb/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumTokens2 } = require("../helper/unwrapLPs"); @@ -41,12 +42,12 @@ async function staking(timestamp, _b, { [chain]: block }) { async function lif3GenesisTVL(timestamp, _b, { [chain]: block }) { const tokens = [ - '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83', // WFTM - '0x04068da6c83afcfa0e13ba15a6696662335d5b75', // USDC + ADDRESSES.fantom.WFTM, // WFTM + ADDRESSES.fantom.USDC, // USDC '0x321162Cd933E2Be498Cd2267a90534A804051b11', // BTC '0x74b23882a30290451A17c44f4F05243b6b58C76d', // ETH - '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e', // DAI - '0x82f0b8b456c1a451378467398982d4834b6829c1', // MIM + ADDRESSES.fantom.DAI, // DAI + ADDRESSES.fantom.MIM, // MIM '0x8d7d3409881b51466b483b11ea1b8a03cded89ae', // BASED '0x49c290ff692149a4e16611c694fded42c954ab7a', // BSHARE '0x09e145a1d53c0045f41aeef25d8ff982ae74dd56', // Zoo diff --git a/projects/topshelf/index.js b/projects/topshelf/index.js index 8e94205327..8613122276 100644 --- a/projects/topshelf/index.js +++ b/projects/topshelf/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {getLiquityTvl} = require('../helper/liquity') const sdk = require('@defillama/sdk'); const { sumTokens } = require('../helper/unwrapLPs'); @@ -9,8 +10,8 @@ async function fantomCurveLps(timestamp, ethBlock, chainBlocks){ ["0x8b63f036f5a34226065bc0a7b0ae5bb5eba1ff3d", "0x59f58431d4cba2b7e9e8d78f064a8fa24c5134bf"], //ftm ], chainBlocks.fantom, "fantom", addr=>{ return "fantom:"+{ - "0x6ef78ad4a40e9a6c81b9229de3ecc33ce591bc34":"0x82f0b8b456c1a451378467398982d4834b6829c1", - "0x8b63f036f5a34226065bc0a7b0ae5bb5eba1ff3d":"0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", + "0x6ef78ad4a40e9a6c81b9229de3ecc33ce591bc34":ADDRESSES.fantom.MIM, + "0x8b63f036f5a34226065bc0a7b0ae5bb5eba1ff3d":ADDRESSES.fantom.WFTM, }[addr.toLowerCase()] }) return balances @@ -20,15 +21,15 @@ module.exports = { timetravel: true, methodology: "Deposited AVAX, BNB and FTM on all three chains as well as deposits in staking pools. g3CRV is replaced by MIM", bsc:{ - tvl: getLiquityTvl("0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", "0x15102B7579aE3b913B0cbb2edE791fC58C528195", "bsc") + tvl: getLiquityTvl(ADDRESSES.bsc.WBNB, "0x15102B7579aE3b913B0cbb2edE791fC58C528195", "bsc") }, avax:{ - tvl: getLiquityTvl("0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", "0x41c36D163DB9e58608F4B354FfB3893EF472E9fd", "avax") + tvl: getLiquityTvl(ADDRESSES.avax.WAVAX, "0x41c36D163DB9e58608F4B354FfB3893EF472E9fd", "avax") }, fantom:{ tvl: sdk.util.sumChainTvls([ - getLiquityTvl("0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", "0x5420d619823b7d836341524C55f3c24B4D497c72", "fantom"), - getLiquityTvl("0x82f0b8b456c1a451378467398982d4834b6829c1", "0x16E900A379873351D6922881388548e4eee5c611", "fantom"), + getLiquityTvl(ADDRESSES.fantom.WFTM, "0x5420d619823b7d836341524C55f3c24B4D497c72", "fantom"), + getLiquityTvl(ADDRESSES.fantom.MIM, "0x16E900A379873351D6922881388548e4eee5c611", "fantom"), fantomCurveLps ]) } diff --git a/projects/tornadao/index.js b/projects/tornadao/index.js index 9b0a594279..01531ccddc 100644 --- a/projects/tornadao/index.js +++ b/projects/tornadao/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x68bb6883B44F4Ab37596b6189FAe354E937D4990" module.exports = ohmTvl(treasury, [ ["0x130966628846bfd36ff31a822705796e8cb8c18d", false],//mim - ["0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", false],//avax + [ADDRESSES.avax.WAVAX, false],//avax ["0xaef85b5b06b13b79b17fd684b1f04035570a9ae0", true],//joeLP ["0xe750f3b821d4bc696f977756cd3b1b5e0ae00647", true],//joeLP ], "avax", "0x39Af1EB019750aDc3Ea89D80080079F64D5432dB", "0xb80323c7aa915cb960b19b5cca1d88a2132f7bd1") \ No newline at end of file diff --git a/projects/tornado/config.js b/projects/tornado/config.js index daff20f108..65df9122a7 100644 --- a/projects/tornado/config.js +++ b/projects/tornado/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress } = require('../helper/unwrapLPs') module.exports = { @@ -12,7 +13,7 @@ module.exports = { ], }, { - tokens: ['0x6b175474e89094c44da98b954eedeac495271d0f'], // DAI + tokens: [ADDRESSES.ethereum.DAI], // DAI holders: [ "0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3", "0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144", @@ -21,7 +22,7 @@ module.exports = { ], }, { - tokens: ['0xdac17f958d2ee523a2206206994597c13d831ec7'], // USDT + tokens: [ADDRESSES.ethereum.USDT], // USDT holders: [ "0x169AD27A470D064DEDE56a2D3ff727986b15D52B", "0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f", @@ -30,7 +31,7 @@ module.exports = { ], }, { - tokens: ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'], // USDC + tokens: [ADDRESSES.ethereum.USDC], // USDC holders: [ "0xd96f2B1c14Db8458374d9Aca76E26c3D18364307", "0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D", @@ -38,7 +39,7 @@ module.exports = { ], }, { - tokens: ['0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'], // WBTC + tokens: [ADDRESSES.ethereum.WBTC], // WBTC holders: [ "0x178169B423a011fff22B9e3F3abeA13414dDD0F1", "0x610B717796ad172B316836AC95a2ffad065CeaB4", diff --git a/projects/toros/config.js b/projects/toros/config.js index 75bc853c0c..ecc5b3a2c6 100644 --- a/projects/toros/config.js +++ b/projects/toros/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { transformPolygonAddress, transformOptimismAddress, @@ -8,13 +9,13 @@ const CONFIG_DATA = { transformAddress: transformPolygonAddress, dhedgeFactory: "0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0", torosMultisigManager: "0x090e7fbd87a673ee3d0b6ccacf0e1d94fb90da59", - daiToken: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + daiToken: ADDRESSES.polygon.DAI, }, optimism: { transformAddress: transformOptimismAddress, dhedgeFactory: "0x5e61a079A178f0E5784107a4963baAe0c5a680c6", torosMultisigManager: "0x813123a13d01d3f07d434673fdc89cbba523f14d", - daiToken: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + daiToken: ADDRESSES.optimism.DAI, }, }; diff --git a/projects/tortuga/index.js b/projects/tortuga/index.js index 409dba541a..99a92d21aa 100644 --- a/projects/tortuga/index.js +++ b/projects/tortuga/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { aQuery } = require('../helper/chain/aptos') module.exports = { diff --git a/projects/toucan-protocol/config.js b/projects/toucan-protocol/config.js index 72a5c2a8e8..21fe7468ca 100644 --- a/projects/toucan-protocol/config.js +++ b/projects/toucan-protocol/config.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const CONFIG_DATA = { celo: { bct: "0x0CcB0071e8B8B716A2a5998aB4d97b83790873Fe", - nct: "0x02De4766C272abc10Bc88c220D214A26960a7e92", + nct: ADDRESSES.celo.NCT, }, polygon: { bct: "0x2F800Db0fdb5223b3C3f354886d907A671414A7F", diff --git a/projects/tracerdao/index.js b/projects/tracerdao/index.js index cec7c3911b..ad13ea73a6 100644 --- a/projects/tracerdao/index.js +++ b/projects/tracerdao/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') -const USDC = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"; +const USDC = ADDRESSES.arbitrum.USDC; const chain = 'arbitrum' // Both v1 and v2 factories diff --git a/projects/traddify/index.js b/projects/traddify/index.js index 20c806847a..3979591dbc 100644 --- a/projects/traddify/index.js +++ b/projects/traddify/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') const contract = "0xA7f3d2dEa7a53E7A9FEbBdE5Cf7C69d39D065030" @@ -5,6 +6,6 @@ const contract = "0xA7f3d2dEa7a53E7A9FEbBdE5Cf7C69d39D065030" module.exports = { methodology: `We count the WKAVA on ${contract}`, kava: { - tvl: sumTokensExport({ tokens: [nullAddress, '0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', ], owner: contract}) + tvl: sumTokensExport({ tokens: [nullAddress, ADDRESSES.kava.WKAVA, ], owner: contract}) } } diff --git a/projects/traderjoe-lend/index.js b/projects/traderjoe-lend/index.js index b0c77dda05..bd737341da 100644 --- a/projects/traderjoe-lend/index.js +++ b/projects/traderjoe-lend/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getCompoundV2Tvl } = require('../helper/compound'); @@ -13,7 +14,7 @@ module.exports = { "avax", addr => `avax:${addr}`, "0xC22F01ddc8010Ee05574028528614634684EC29e", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + ADDRESSES.avax.WAVAX, false ), borrowed: getCompoundV2Tvl( @@ -21,7 +22,7 @@ module.exports = { "avax", addr => `avax:${addr}`, "0xC22F01ddc8010Ee05574028528614634684EC29e", - "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + ADDRESSES.avax.WAVAX, true ), } diff --git a/projects/traderjoe/index.js b/projects/traderjoe/index.js index 9ea3fea1bc..fccffafee0 100644 --- a/projects/traderjoe/index.js +++ b/projects/traderjoe/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking'); -const joeBar = "0x57319d41F71E81F3c65F2a47CA4e001EbAFd4F33"; -const joeToken = "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd"; +const joeBar = ADDRESSES.avax.xJOE; +const joeToken = ADDRESSES.avax.JOE; const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const { getUniTVL } = require('../helper/unknownTokens'); const graphUrls = { diff --git a/projects/trainswap/index.js b/projects/trainswap/index.js index 436d6b79b3..3fb73cbfa5 100644 --- a/projects/trainswap/index.js +++ b/projects/trainswap/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') const uniTvl = getUniTVL({ factory: '0x15fA42586c30E87CA49f0Fe262bbb73E89da1cad', useDefaultCoreAssets: true, }) const masterchef = '0x8b804321b8D094D8C9bB3bFF8CC580087E8d13E0' const train = '0x52DA160e9a8CeF972FF0A797D4902eD67589f64C' -const weth = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' +const weth = ADDRESSES.arbitrum.WETH module.exports = { misrepresentedTokens: true, diff --git a/projects/tranche/index.js b/projects/tranche/index.js index fe539ae64e..6796d3d525 100644 --- a/projects/tranche/index.js +++ b/projects/tranche/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokens } = require('../helper/unwrapLPs') @@ -81,7 +82,7 @@ function tvl(chain) { chain })).output; - balances['0x514910771af9ca656af840dff83e8264ecf986ca'] = + balances[ADDRESSES.ethereum.LINK] = balances[cLINK] * (exchangeRate / 10 ** 28); delete balances[cLINK]; } diff --git a/projects/tranquil/index.js b/projects/tranquil/index.js index 78b4173472..e58a44ff23 100644 --- a/projects/tranquil/index.js +++ b/projects/tranquil/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { BigNumber } = require("bignumber.js"); const {compoundExports, getCompoundV2Tvl} = require('../helper/compound') @@ -5,7 +6,7 @@ const { uniTvlExport } = require('../helper/calculateUniTvl.js'); const { getFixBalancesSync } = require("../helper/portedTokens"); const tqOne = "0x34B9aa82D89AE04f0f546Ca5eC9C93eFE1288940"; // tqONE -const wOne = "0xcf664087a5bb0237a0bad6742852ec6c8d69a27a"; +const wOne = ADDRESSES.harmony.WONE; const stONEAddr = "0x22D62b19b7039333ad773b7185BB61294F3AdC19"; // stONE ERC20 contract const tranqToken = "0xcf1709ad76a79d5a60210f23e81ce2460542a836"; diff --git a/projects/trapeza-protocol/index.js b/projects/trapeza-protocol/index.js index 808c5cd9eb..250b68315e 100644 --- a/projects/trapeza-protocol/index.js +++ b/projects/trapeza-protocol/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const fidl = "0x414a36a4b79Ee1D4b454AB798E4179ffC00b1641"; const fidlStaking = "0x2D1E126b0700D419f8B742118Fb4fa1dEc8c4a62"; const treasury = "0x282cBA0034b8Ce7394c0737F0571945e15Ed242E"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0x08DBeFd8f7ACa80729267a84df012eA0f203cFa8", true] // FIDL-BUSD CAKE LP ]; diff --git a/projects/trava/index.js b/projects/trava/index.js index 78e70b57b1..11181a71e2 100644 --- a/projects/trava/index.js +++ b/projects/trava/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { default: BigNumber } = require('bignumber.js'); const abi = require('./abi.json'); @@ -88,11 +89,11 @@ async function getTVL(block, chain, tTokenList) { let addressToAdd; if (tTokenList[i].reserve == "0xfb6115445Bff7b52FeB98650C87f44907E58f802" && chain == "bsc") { // aave dont have bsc address on coingecko - addressToAdd = "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9" - } else if (tTokenList[i].reserve == "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E" && chain == "fantom"){ - addressToAdd = "0x6b175474e89094c44da98b954eedeac495271d0f" - } else if (tTokenList[i].reserve == "0x049d68029688eAbF473097a2fC38ef61633A3C7A" && chain == "fantom"){ - addressToAdd = "0xdac17f958d2ee523a2206206994597c13d831ec7" + addressToAdd = ADDRESSES.ethereum.AAVE + } else if (tTokenList[i].reserve == ADDRESSES.fantom.DAI && chain == "fantom"){ + addressToAdd = ADDRESSES.ethereum.DAI + } else if (tTokenList[i].reserve == ADDRESSES.fantom.fUSDT && chain == "fantom"){ + addressToAdd = ADDRESSES.ethereum.USDT } else { addressToAdd = chain + ":" + tTokenList[i].reserve diff --git a/projects/traverse/index.js b/projects/traverse/index.js index eed7bb48b2..443f843bc2 100644 --- a/projects/traverse/index.js +++ b/projects/traverse/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm'); const verse = "0xB72ab6f7177bBb41eFcC17D817778d77460259F1"; @@ -5,7 +6,7 @@ const staking = "0x3fb7931f7BFA9f318Fbf2346f568802a76531774"; const treasury = "0x623845e7961F7A2E535885F983a804608b69D026" const treasuryTokens = [ - ["0xd586e7f844cea2f87f50152665bcbc2c279d8d70", false], // DAI + [ADDRESSES.avax.DAI, false], // DAI ["0xbf56ea8a64faf58889584930716e655317d22ea6", true] // VERSE-DAI ]; diff --git a/projects/treasury/1inch.js b/projects/treasury/1inch.js index 5aa38605d4..64f8ca4cd5 100644 --- a/projects/treasury/1inch.js +++ b/projects/treasury/1inch.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const oneInchTreasury = "0x7951c7ef839e26F63DA87a42C9a87986507f1c07"; @@ -7,11 +8,11 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.WBTC,//WBTC ], owners: [oneInchTreasury], ownTokens: [ONE_INCH] diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js index fe4524512f..04d55b01c5 100644 --- a/projects/treasury/aave.js +++ b/projects/treasury/aave.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryContractsETH = [ @@ -20,7 +21,7 @@ const treasuryContractsAvax = [ const aaveTreasuryOptimism = ["0xB2289E329D2F85F1eD31Adbb30eA345278F21bcf"] const aaveTreasuryArbitrum = ["0x053D55f9B5AF8694c503EB288a1B7E552f590710"] -const AAVE = "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9"; +const AAVE = ADDRESSES.ethereum.AAVE; const AAVEPOLYGON = '0xD6DF932A45C0f255f85145f286eA0b292B21C90B'; const AAVEAVAX = '0x63a72806098bd3d9520cc43356dd78afe5d386d9'; const AAVEARBITRUM = '0xba5ddd1f9d7f570dc94a51479a000e3bce967196'; @@ -31,44 +32,44 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC + ADDRESSES.ethereum.USDC, // USDC '0xBcca60bB61934080951369a648Fb03DF4F96263C', // aUSDC '0xd24946147829DEaA935bE2aD85A3291dbf109c80', // ammUSDC '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', // aEthUSDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI + ADDRESSES.ethereum.DAI, // DAI '0x028171bca77440897b824ca71d1c56cac55b68a3', // aDAI '0x79bE75FFC64DD58e66787E4Eae470c8a1FD08ba4', // ammDAI '0x018008bfb33d285247A21d44E50697654f754e63', // aEthDAI - '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + ADDRESSES.ethereum.USDT, // USDT '0x3ed3b47dd13ec9a98b44e6204a523e766b225811', // aUSDT '0x17a79792Fe6fE5C95dFE95Fe3fCEE3CAf4fE4Cb7', // ammUSDT '0xFFC97d72E13E01096502Cb8Eb52dEe56f74DAD7B', // aAAVE '0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9', // aEthAAVE - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC + ADDRESSES.ethereum.WBTC, // WBTC '0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656', // aWBTC '0x13B2f6928D7204328b0E8E4BCd0379aA06EA21FA', // ammWBTC '0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8', // aEthWBTC - '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', // wstETH + ADDRESSES.ethereum.WSTETH, // wstETH '0x0B925eD163218f6662a35e0f0371Ac234f9E9371', // aEthwstETH '0xba100000625a3754423978a60c9317c58a424e3D', // BAL - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH + ADDRESSES.ethereum.WETH, // WETH '0x030bA81f1c18d280636F32af80b9AAd02Cf0854e', // aWETH '0xf9Fb4AD91812b704Ba883B11d2B576E890a6730A', // ammWETH '0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', // aEthWETH - '0xd533a949740bb3306d119cc777fa900ba034cd52', // CRV + ADDRESSES.ethereum.CRV, // CRV '0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1', // aCRV - '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F', // SNX + ADDRESSES.ethereum.SNX, // SNX '0x35f6B052C598d933D69A4EEC4D04c73A191fE6c2', // aSNX - '0x514910771af9ca656af840dff83e8264ecf986ca', // LINK + ADDRESSES.ethereum.LINK, // LINK '0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0', // aLINK '0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a', // aEthLINK '0xba100000625a3754423978a60c9317c58a424e3d', // BAL '0x272F97b7a56a387aE942350bBC7Df5700f8a4576', // aBAL - '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', // UNI + ADDRESSES.ethereum.UNI, // UNI '0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1', // aUNI - '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', // MKR + ADDRESSES.ethereum.MKR, // MKR '0xc713e5E149D5D0715DcD1c156a020976e7E56B88', // aMKR - '0x4Fabb145d64652a948d72533023f6E7A623C7C53', // BUSD + ADDRESSES.ethereum.BUSD, // BUSD '0xA361718326c15715591c299427c62086F69923D9', // aBUSD '0x853d955acef822db058eb8505911ed77f175b99e', // FRAX '0xd4937682df3C8aEF4FE912A96A74121C0829E664', // aFRAX @@ -78,7 +79,7 @@ module.exports = treasuryExports({ '0xce1871f791548600cb59efbefFC9c38719142079', // aLUSD '0x056fd409e1d7a124bd7017459dfea2f387b6d5cd', // GUSD '0xD37EE7e4f452C6638c96536e68090De8cBcdb583', // aGUSD - '0x0000000000085d4780b73119b644ae5ecd22b376', // TUSD + ADDRESSES.ethereum.TUSD, // TUSD '0x101cc05f4A51C0319f570d5E146a8C625198e636', // aTUSD '0x8e870d67f660d95d5be530380d0ec0bd388289e1', // USDP '0x2e8F4bdbE3d47d7d7DE490437AeA9915D930F1A3', // aUSDP @@ -88,7 +89,7 @@ module.exports = treasuryExports({ '0x6F634c6135D2EBD550000ac92F494F9CB8183dAe', // aDPI '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', // ENS '0x9a14e23A58edf4EFDcB360f68cd1b95ce2081a2F', // aENS - '0xae7ab96520de3a18e5e111b5eaab095312d7fe84', // stETH + ADDRESSES.ethereum.STETH, // stETH '0x1982b2F5814301d4e9a8b0201555376e62F82428', // aSTETH '0xd46ba6d942050d489dbd938a2c909a5d5039a161', // AMPL '0x1E6bb68Acec8fefBD87D192bE09bb274170a0548', // aAMPL @@ -96,7 +97,7 @@ module.exports = treasuryExports({ '0x683923dB55Fead99A79Fa01A27EeC3cB19679cC3', // aFEI '0xa693b19d2931d498c5b318df961919bb4aee87a5', // UST '0xc2e2152647F4C26028482Efaf64b2Aa28779EFC4', // aUST - '0x0d8775f648430679a709e98d2b0cb6250d2887ef', // BAT + ADDRESSES.ethereum.BAT, // BAT '0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1', // aBAT '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b', // CVX '0x952749E07d7157bb9644A894dFAF3Bad5eF6D918', // aCVX @@ -114,7 +115,7 @@ module.exports = treasuryExports({ '0x514cd6756CCBe28772d4Cb81bC3156BA9d1744aa', // aRENFIL '0xe41d2489571d322189246dafa5ebde1f4699f498', // ZRX '0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e', // aZRX - '0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e', // YFI + ADDRESSES.ethereum.YFI, // YFI '0x5165d24277cD063F5ac44Efd447B27025e888f37', // aYFI '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272', // xSUSHI '0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a', // aXSUSHI @@ -125,21 +126,21 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', // DAI + ADDRESSES.polygon.DAI, // DAI '0x27F8D03b3a2196956ED754baDc28D73be8830A6e', // amDAI '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aPOLDAI - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', // USDC + ADDRESSES.polygon.USDC, // USDC '0x1a13F4Ca1d028320A707D99520AbFefca3998b7F', // amUSDC '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aPolUSDC - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', // USDT + ADDRESSES.polygon.USDT, // USDT '0x60D55F02A771d515e077c9C2403a1ef324885CeC', // amUSDT '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aPolUSDT '0x1d2a0E5EC8E5bBDCA5CB219e649B565d8e5c3360', // amAAVE '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aPolAAVE - '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', // WBTC + ADDRESSES.polygon.WBTC, // WBTC '0x5c2ed810328349100A66B82b78a1791B101C9D61', // amWBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aPolWBTC - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', // WETH + ADDRESSES.polygon.WETH_1, // WETH '0x28424507fefb6f7f8E9D3860F56504E4e5f5f390', // amWETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aPolWETH '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC @@ -181,24 +182,24 @@ module.exports = treasuryExports({ }, avax: { tokens: [ - '0xd586e7f844cea2f87f50152665bcbc2c279d8d70', // DAI + ADDRESSES.avax.DAI, // DAI '0x47AFa96Cdc9fAb46904A55a6ad4bf6660B53c38a', // avDAI '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aAvaDAI - '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', // USDC + ADDRESSES.avax.USDC_e, // USDC '0x46A51127C3ce23fb7AB1DE06226147F446e4a857', // avUSDC '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aAvaUSDC - '0xc7198437980c041c805a1edcba50c1ce5db95118', // USDT + ADDRESSES.avax.USDT_e, // USDT '0x532E6537FEA298397212F09A61e03311686f548e', // avUSDT '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aAvaUSDT '0xD45B7c061016102f9FA220502908f2c0f1add1D7', // avAAVE '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aAvaAAVE - '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', // WAVAX + ADDRESSES.avax.WAVAX, // WAVAX '0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B', // avWAVAX '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aAvaWAVAX '0x50b7545627a5162f82a992c33b87adc75187b218', // WBTC '0x686bEF2417b6Dc32C50a3cBfbCC3bb60E1e9a15D', // aWBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aAvaWBTC - '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab', // WETH + ADDRESSES.avax.WETH_e, // WETH '0x53f7c5869a859F0AeC3D334ee8B4Cf01E3492f21', // aWETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aAvaWETH '0x5947bb275c521040051d82396192181b413227a3', // LINK @@ -209,7 +210,7 @@ module.exports = treasuryExports({ '0x8Eb270e296023E9D92081fdF967dDd7878724424', // aAvaMAI '0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be', // sAVAX '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aAvaSAVAX - '0x152b9d0fdc40c096757f570a51e494bd4b943e50', // BTC.b + ADDRESSES.avax.BTC_b, // BTC.b '0x8ffDf2DE812095b1D19CB146E4c004587C0A0692', // aAvaBTC.b ], owners: treasuryContractsAvax, @@ -217,20 +218,20 @@ module.exports = treasuryExports({ }, arbitrum: { tokens: [ - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', // DAI + ADDRESSES.optimism.DAI, // DAI '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aArbDAI '0xd22a58f79e9481d1a88e00c343885a588b34b68b', // EURS '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aArbEURS - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC + ADDRESSES.arbitrum.USDC, // USDC '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aArbUSDC - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT + ADDRESSES.arbitrum.USDT, // USDT '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aArbUSDT '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aArbAAVE - '0xf97f4df75117a78c1a5a0dbb814af92458539fb4', // LINK + ADDRESSES.arbitrum.LINK, // LINK '0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530', // aArbLINK - '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', // WBTC + ADDRESSES.arbitrum.WBTC, // WBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aArbWBTC - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', // WETH + ADDRESSES.arbitrum.WETH, // WETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aArbWETH ], owners: aaveTreasuryArbitrum, @@ -238,19 +239,19 @@ module.exports = treasuryExports({ }, optimism: { tokens: [ - '0x4200000000000000000000000000000000000006', // WETH + ADDRESSES.tombchain.FTM, // WETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aOptWETH '0x68f180fcce6836688e9084f035309e29bf0a2095', // WBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aOptWBTC - '0x4200000000000000000000000000000000000042', // OP + ADDRESSES.optimism.OP, // OP '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aOptOP - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', // DAI + ADDRESSES.optimism.DAI, // DAI '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aOptDAI - '0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9', // sUSD + ADDRESSES.optimism.sUSD, // sUSD '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aOptSUSD - '0x7f5c764cbc14f9669b88837ca1490cca17c31607', // USDC + ADDRESSES.optimism.USDC, // USDC '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aOptUSDC - '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58', // USDT + ADDRESSES.optimism.USDT, // USDT '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aOptUSDT '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aOptAAVE '0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6', // LINK diff --git a/projects/treasury/aavegotchi.js b/projects/treasury/aavegotchi.js index c47eb5986c..9d03142c42 100644 --- a/projects/treasury/aavegotchi.js +++ b/projects/treasury/aavegotchi.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const aavegotchiTreasury2 = "0xFFE6280ae4E864D9aF836B562359FD828EcE8020"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0x6B175474E89094C44Da98b954EedeAC495271d0F'//DAI + ADDRESSES.ethereum.DAI//DAI ], owners: [aavegotchiTreasury2], ownTokens: [GHST], diff --git a/projects/treasury/abracadabra.js b/projects/treasury/abracadabra.js index 008c162de7..e465ad52b3 100644 --- a/projects/treasury/abracadabra.js +++ b/projects/treasury/abracadabra.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const mainnetTeamTokens = "0x5A7C5505f3CFB9a0D9A8493EC41bf27EE48c406D"; @@ -10,12 +11,12 @@ module.exports = treasuryExports({ tokens: [ nullAddress, SPELL, - "0xdac17f958d2ee523a2206206994597c13d831ec7", // USDT + ADDRESSES.ethereum.USDT, // USDT "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", // MIM - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC - "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI - "0xd533a949740bb3306d119cc777fa900ba034cd52", // CRV - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // wETH + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.CRV, // CRV + ADDRESSES.ethereum.WETH, // wETH "0x4d224452801aced8b2f0aebe155379bb5d594381", // APE // Yearn vaults "0x27B5739e22ad9033bcBf192059122d163b60349D", // st-yCRV @@ -39,9 +40,9 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x912CE59144191C1204E64559FE8253a0e49E6548", // ARB - "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", // MIM - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", // USDC - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", // USDT + ADDRESSES.arbitrum.MIM, // MIM + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDT, // USDT // Magic autocompounders "0x85667409a723684fe1e57dd1abde8d88c2f54214", // magicGLP ], diff --git a/projects/treasury/alchemix.js b/projects/treasury/alchemix.js index c547e2d915..790573554d 100644 --- a/projects/treasury/alchemix.js +++ b/projects/treasury/alchemix.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const alchemixTreasury = "0x8392F6669292fA56123F71949B52d883aE57e225"; @@ -8,11 +9,11 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT ], owners: [alchemixTreasury], ownTokens: [ALCX], diff --git a/projects/treasury/alyx.js b/projects/treasury/alyx.js index 5a34e1251e..6f4efa1681 100644 --- a/projects/treasury/alyx.js +++ b/projects/treasury/alyx.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x576182b7a1b0bC67701ead28a087228c50Aa0982"; @@ -8,8 +9,8 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "0x55d398326f99059fF775485246999027B3197955" + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.USDT ], owners: [treasury] }, diff --git a/projects/treasury/apollox.js b/projects/treasury/apollox.js index 2e09237750..24734afccf 100644 --- a/projects/treasury/apollox.js +++ b/projects/treasury/apollox.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); @@ -15,7 +16,7 @@ module.exports = treasuryExports({ owners: [treasury], ownTokens:['0x78f5d389f5cdccfc41594abab4b0ed02f31398b3'], tokens: [ - '0x55d398326f99059ff775485246999027b3197955', + ADDRESSES.bsc.USDT, ] } }); \ No newline at end of file diff --git a/projects/treasury/aragon.js b/projects/treasury/aragon.js index 09b79f7877..456f90fd37 100644 --- a/projects/treasury/aragon.js +++ b/projects/treasury/aragon.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const aragonTreasury = "0xfb633F47A84a1450EE0413f2C32dC1772CcAea3e"; @@ -9,12 +10,12 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984',//UNI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.UNI,//UNI '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS - '0x4Fabb145d64652a948d72533023f6E7A623C7C53',//BUSD + ADDRESSES.ethereum.BUSD,//BUSD '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT '0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c',//yyDAI+yUSDC+yUSDT+yTUSD '0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F',//GTC diff --git a/projects/treasury/archimedes.js b/projects/treasury/archimedes.js index 69fa6deb14..058bbb8527 100644 --- a/projects/treasury/archimedes.js +++ b/projects/treasury/archimedes.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x29520fd76494Fd155c04Fa7c5532D2B2695D68C6"; @@ -9,8 +10,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//usdc - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//usdt + ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.USDT,//usdt '0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86',//ousd ], owners: [treasury], diff --git a/projects/treasury/atlas-usv.js b/projects/treasury/atlas-usv.js index caf71d6c55..f5feb2c25f 100644 --- a/projects/treasury/atlas-usv.js +++ b/projects/treasury/atlas-usv.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryContractsETH = ["0x8739f0EeF3163C3db7b994d0e301BC375d757aF6"]; @@ -19,7 +20,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0x6B175474E89094C44Da98b954EedeAC495271d0F', + ADDRESSES.ethereum.DAI, ], owners: treasuryContractsETH, ownTokens: [USV], @@ -28,7 +29,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, '0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', //mimatic - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', //DAI + ADDRESSES.polygon.DAI, //DAI '0x104592a158490a9228070E0A8e5343B499e125D0', // frax ], owners: treasuryContractsMATIC, @@ -36,7 +37,7 @@ module.exports = treasuryExports({ }, avax: { tokens: [ - '0xd586e7f844cea2f87f50152665bcbc2c279d8d70', // DAI + ADDRESSES.avax.DAI, // DAI ], owners: treasuryContractsAvax, ownTokens: [USVAVAX], @@ -44,7 +45,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', //DAI - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', //busd + ADDRESSES.bsc.BUSD, //busd ], owners: treasuryContractsBSC, ownTokens: [USVBSC], diff --git a/projects/treasury/augury.js b/projects/treasury/augury.js index c3d4b9079e..74fd0ff434 100644 --- a/projects/treasury/augury.js +++ b/projects/treasury/augury.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const DeveloperTeamWallet = "0xE2E26BAc2ff37A7aE219EcEF74C5A1Bf95d5f854"; const amWMATIC = "0x8df3aad3a84da6b69a4da8aec3ea40d9091b2ac4"; const OMEN = "0x76e63a3E7Ba1e2E61D3DA86a87479f983dE89a7E"; @@ -8,7 +9,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ polygon: { - tokens: [ nullAddress, amWMATIC, QUICK, '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', '0x8a953cfe442c5e8855cc6c61b1293fa648bae472', '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', ], + tokens: [ nullAddress, amWMATIC, QUICK, ADDRESSES.polygon.USDC, '0x8a953cfe442c5e8855cc6c61b1293fa648bae472', ADDRESSES.polygon.USDT, ], owners: [DeveloperTeamWallet], ownTokens: [ OMEN], }, diff --git a/projects/treasury/aura.js b/projects/treasury/aura.js index 63b5af1334..0e7b430431 100644 --- a/projects/treasury/aura.js +++ b/projects/treasury/aura.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xfc78f8e1Af80A3bF5A1783BB59eD2d1b10f78cA9"; @@ -12,8 +13,8 @@ module.exports = treasuryExports({ ], tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.WETH, // WETH "0xba100000625a3754423978a60c9317c58a424e3D", // BAL "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0x0d02755a5700414B26FF040e1dE35D337DF56218", // BEND diff --git a/projects/treasury/badger-dao.js b/projects/treasury/badger-dao.js index 944c3f8050..24be6a83ec 100644 --- a/projects/treasury/badger-dao.js +++ b/projects/treasury/badger-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury_vault = "0xD0A7A8B98957b9CD3cFB9c0425AbE44551158e9e"; @@ -31,14 +32,14 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",//WBTC - "0x6B175474E89094C44Da98b954EedeAC495271d0F",//DAI - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",//USDC - "0xdAC17F958D2ee523a2206206994597C13D831ec7",//USDT + ADDRESSES.ethereum.WBTC,//WBTC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.USDT,//USDT "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0",//LUSD "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656",//aWBTC - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",//WETH - "0xae78736Cd615f374D3085123A210448E74Fc6393",//rETH + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.RETH,//rETH "0x25f0b7c3A7A43b409634a5759526560cC3313d75", // cvxBADGERFRAX-f "0xaad4ee162dbc9c25cca26ba4340b36e3ef7c1a80", // aura50rETH-50BADGER-vault "0x4efc8ded860bc472fa8d938dc3fd4946bc1a0a18", // aura20WBTC-80BADGER-vault diff --git a/projects/treasury/balancer.js b/projects/treasury/balancer.js index 96a4c60ab5..c04fa822e6 100644 --- a/projects/treasury/balancer.js +++ b/projects/treasury/balancer.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const eth = "0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f"; @@ -12,15 +13,15 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", // LDO - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.LIDO, // LDO + ADDRESSES.ethereum.USDC, // USDC "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", // GTC "0xCFEAead4947f0705A14ec42aC3D44129E1Ef3eD5", // NOTE - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH + ADDRESSES.ethereum.WETH, // WETH "0x2d94AA3e47d9D5024503Ca8491fcE9A2fB4DA198", // BANK - "0x6B175474E89094C44Da98b954EedeAC495271d0F", // DAI + ADDRESSES.ethereum.DAI, // DAI "0x226f7b842E0F0120b7E194D05432b3fd14773a9D", // UNN - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH + ADDRESSES.ethereum.STETH, // stETH "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE ], owners: [eth], @@ -29,8 +30,8 @@ module.exports = treasuryExports({ arbitrum: { owners: ['0xaf23dc5983230e9eeaf93280e312e57539d098d0'], tokens: [ - "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", // WETH - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", // USDC + ADDRESSES.arbitrum.WETH, // WETH + ADDRESSES.arbitrum.USDC, // USDC ], ownTokens: ['0xbc2597d3f1f9565100582cde02e3712d03b8b0f6'], } diff --git a/projects/treasury/banklessdao.js b/projects/treasury/banklessdao.js index 83b15cdfce..fd512861b0 100644 --- a/projects/treasury/banklessdao.js +++ b/projects/treasury/banklessdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const banklessDaoTreasury = "0xf26d1Bb347a59F6C283C53156519cC1B1ABacA51"; @@ -9,23 +10,23 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC '0x81f8f0bb1cB2A06649E51913A151F0E7Ef6FA321',//VITA - '0xae78736Cd615f374D3085123A210448E74Fc6393',//rETH - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.RETH,//rETH + ADDRESSES.ethereum.DAI,//DAI '0x3541A5C1b04AdABA0B83F161747815cd7B1516bC',//KNIGHT '0xfb5453340C03db5aDe474b27E68B6a9c6b2823Eb',//ROBOT - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH + ADDRESSES.ethereum.WETH,//WETH '0xFca59Cd816aB1eaD66534D82bc21E7515cE441CF',//RARI '0x956F47F50A910163D8BF957Cf5846D573E7f87CA',//FEI '0x0954906da0Bf32d5479e25f46056d22f08464cab',//INDEX '0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828',//UMA '0xbC396689893D065F41bc2C6EcbeE5e0085233447',//PERP '0xD56daC73A4d6766464b38ec6D91eB45Ce7457c44',//PAN - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.USDT,//USDT '0x69af81e73A73B40adF4f3d4223Cd9b1ECE623074',//MASK '0x3Ec8798B81485A254928B70CDA1cf0A2BB0B74D7',//GRO - '0x6B3595068778DD592e39A122f4f5a5cF09C90fE2',//SUSHI + ADDRESSES.ethereum.SUSHI,//SUSHI '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT ], owners: [banklessDaoTreasury], diff --git a/projects/treasury/bankofcronos.js b/projects/treasury/bankofcronos.js index 6d948f205a..d819e79e41 100644 --- a/projects/treasury/bankofcronos.js +++ b/projects/treasury/bankofcronos.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const teamTreasury = "0x1087234fe877721F30016ebeD5BEd061397C8851"; @@ -9,11 +10,11 @@ module.exports = treasuryExports({ cronos: { tokens: [ nullAddress, - '0xc21223249CA28397B4B6541dfFaEcC539BfF0c59',//USDC + ADDRESSES.cronos.USDC,//USDC '0x26043Aaa4D982BeEd7750e2D424547F5D76951d4',//CUSD '0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23',//WCRO '0xe44Fd7fCb2b1581822D0c862B68222998a0c299a',//WETH - '0x062E66477Faf219F25D27dCED647BF57C3107d52',//WBTC + ADDRESSES.cronos.WBTC,//WBTC ], owners: [teamTreasury], ownTokens: [BOC, pBOC], diff --git a/projects/treasury/battlefly.js b/projects/treasury/battlefly.js index 85476bc4df..5f4c8cc99d 100644 --- a/projects/treasury/battlefly.js +++ b/projects/treasury/battlefly.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', // WETH - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', // DAI + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.WETH, // WETH + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.optimism.DAI, // DAI ], owners: ['0xF5411006eEfD66c213d2fd2033a1d340458B7226'], ownTokens: ['0x872bAD41CFc8BA731f811fEa8B2d0b9fd6369585', '0x539bde0d7dbd336b79148aa742883198bbf60342'], diff --git a/projects/treasury/beanstalk.js b/projects/treasury/beanstalk.js index 5982c10b42..5df3969b82 100644 --- a/projects/treasury/beanstalk.js +++ b/projects/treasury/beanstalk.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const bean = "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab"; const sprout = "0xb7ab3f0667eFF5e2299d39C23Aa0C956e8982235"; @@ -5,7 +6,7 @@ const farms = "0x21DE18B6A8f78eDe6D16C50A167f6B222DC08DF7"; const tokens = [ nullAddress, "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.USDC, // USDC ]; module.exports = treasuryExports({ ethereum: { diff --git a/projects/treasury/beethovenx.js b/projects/treasury/beethovenx.js index 1a34d371b9..9d5a528483 100644 --- a/projects/treasury/beethovenx.js +++ b/projects/treasury/beethovenx.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const ftm = "0xa1e849b1d6c2fd31c63eef7822e9e0632411ada7"; @@ -6,9 +7,9 @@ const eth = "0xea06e1b4259730724885a39ce3ca670efb020e26"; const ftmTokens = [ nullAddress, - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", // USDC + ADDRESSES.fantom.USDC, // USDC "0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE", // BOO - "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", // WFTM + ADDRESSES.fantom.WFTM, // WFTM "0xc5713B6a0F26bf0fdC1c52B90cd184D950be515C", // LINSPIRIT "0xde5ed76e7c05ec5e4572cfc88d1acea165109e44", // DEUS "0xc3f069d7439baf6d4d6e9478d9cc77778e62d147", // FLIBERO @@ -26,7 +27,7 @@ const ftmOwnTokens = [ const opTokens = [ nullAddress, - "0x4200000000000000000000000000000000000042", // OP + ADDRESSES.optimism.OP, // OP "0xFdb794692724153d1488CcdBE0C56c252596735F", // LDO "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921", // BAL "0x38f79beFfC211c6c439b0A3d10A0A673EE63AFb4", // BPT-rETH-ETH-gauge diff --git a/projects/treasury/benddao.js b/projects/treasury/benddao.js index 868c89bb06..9c9dfe75e0 100644 --- a/projects/treasury/benddao.js +++ b/projects/treasury/benddao.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC '0x4d224452801aced8b2f0aebe155379bb5d594381',//APE ], owners: ['0x472FcC65Fab565f75B1e0E861864A86FE5bcEd7B'], diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 4ea3849849..35a58c6bc5 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const bitdaoTreasury1 = "0x78605Df79524164911C144801f41e9811B7DB73D"; @@ -9,10 +10,10 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT '0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9',//FTT '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272',//xSUSHI ], diff --git a/projects/treasury/cap.js b/projects/treasury/cap.js index 5fca04230a..b73b640e8a 100644 --- a/projects/treasury/cap.js +++ b/projects/treasury/cap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') const contracts = { @@ -5,7 +6,7 @@ const contracts = { "treasuryV2": "0x1058AFe66BB5b79C295CCCE51016586949Bc4e8d", }; const cap = "0x031d35296154279dc1984dcd93e392b1f946737b"; -const usdc = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"; +const usdc = ADDRESSES.arbitrum.USDC; module.exports = { arbitrum: { diff --git a/projects/treasury/convex.js b/projects/treasury/convex.js index 62316340b3..00fb69e2ff 100644 --- a/projects/treasury/convex.js +++ b/projects/treasury/convex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const convexTreasuryVault = "0x1389388d01708118b497f59521f6943Be2541bb7"; const cvx = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; @@ -7,13 +8,13 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xD533a949740bb3306d119CC777fa900bA034cd52", // CRV - "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", // SNX + ADDRESSES.ethereum.CRV, // CRV + ADDRESSES.ethereum.SNX, // SNX "0x31429d1856aD1377A8A0079410B297e1a9e214c2", // ANGLE - "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", // LDO + ADDRESSES.ethereum.LIDO, // LDO "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", // ALCX "0x92E187a03B6CD19CB6AF293ba17F2745Fd2357D5", // DUCK - "0x4E15361FD6b4BB609Fa63C81A2be19d873717870", // FTM + ADDRESSES.ethereum.FTM, // FTM "0x3472A5A71965499acd81997a54BBA8D852C6E53d", // BADGER "0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2", // MTA "0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26", // OGN diff --git a/projects/treasury/crabada.js b/projects/treasury/crabada.js index 114d54c223..bf57db68b1 100644 --- a/projects/treasury/crabada.js +++ b/projects/treasury/crabada.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const CRA = "0xa32608e873f9ddef944b24798db69d80bbb4d1ed"; @@ -19,7 +20,7 @@ const lpTokens = [ "0x565d20BD591b00EAD0C927e4b6D7DD8A33b0B319", // WAVAX-TUS JLP "0x21889033414f652f0fD0e0f60a3fc0221d870eE4", // CRA-TUS JLP "0x134905461773eF228b66CEBd5E1FF06D7CC79B12", // TUS-CRAM JLP - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664" // USDC + ADDRESSES.avax.USDC_e // USDC ]; module.exports = { diff --git a/projects/treasury/cubo.js b/projects/treasury/cubo.js index 684b721e9b..86451c3f43 100644 --- a/projects/treasury/cubo.js +++ b/projects/treasury/cubo.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryContract = "0xb495ffc5acd7e2fd909c23c30d182e6719fbe9ec"; const CUBO_TOKEN = "0x381d168DE3991c7413d46e3459b48A5221E3dfE4"; -const DAI = '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063' +const DAI = ADDRESSES.polygon.DAI const DRAGON_QUICK = '0xf28164a485b0b2c90639e47b0f377b4a438a16b1' const MOO_CRV_TriCrypto = '0x5A0801BAd20B6c62d86C566ca90688A6b9ea1d3f' const MOO_AM3CRV = '0xAA7C2879DaF8034722A0977f13c343aF0883E92e' diff --git a/projects/treasury/defender.js b/projects/treasury/defender.js index dd5f66b4b8..ac67ec12a6 100644 --- a/projects/treasury/defender.js +++ b/projects/treasury/defender.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const treasuryContractsBSC = [ @@ -6,6 +7,6 @@ const treasuryContractsBSC = [ module.exports = { bsc: { - tvl: sumTokensExport({ owners: treasuryContractsBSC, tokens: ['0x2170ed0880ac9a755fd29b2688956bd959f933f8']}), + tvl: sumTokensExport({ owners: treasuryContractsBSC, tokens: [ADDRESSES.bsc.ETH]}), }, }; diff --git a/projects/treasury/dex.js b/projects/treasury/dex.js index ab4cc5c3c4..67ba126788 100644 --- a/projects/treasury/dex.js +++ b/projects/treasury/dex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); @@ -9,8 +10,8 @@ const TOKENS = { DEXSHARE: '0xf4914e6d97a75f014acfcf4072f11be5cffc4ca6', DEXIRA: '0x147e07976e1ae78287c33aafaab87760d32e50a5', WDHEX_DEXSARE: '0x6647047433df4cfc9912d092fd155b9d972a4a85', - BNB: '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', - USDC: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d' + BNB: ADDRESSES.bsc.WBNB, + USDC: ADDRESSES.bsc.USDC }; diff --git a/projects/treasury/dfyn.js b/projects/treasury/dfyn.js index c485217695..10d6d79db7 100644 --- a/projects/treasury/dfyn.js +++ b/projects/treasury/dfyn.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x5C35D4BcF0827a22370915E75c387EC470338c10"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + ADDRESSES.arbitrum.USDC, "0x8971dFb268B961a9270632f28B24F2f637c94244" ], owners: [Treasury], diff --git a/projects/treasury/dodo.js b/projects/treasury/dodo.js index 4f6ec0583a..1b00da8390 100644 --- a/projects/treasury/dodo.js +++ b/projects/treasury/dodo.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const dodoTreasury = "0xAB21016BD4127638b8c555e36636449b33dF1C38"; @@ -9,8 +10,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//TETHER - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDT,//TETHER + ADDRESSES.ethereum.USDC,//USDC ], owners: [dodoTreasury], ownTokens: [DODO], @@ -18,10 +19,10 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', // WBTC - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', // WETH - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT + ADDRESSES.arbitrum.WBTC, // WBTC + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.WETH, // WETH + ADDRESSES.arbitrum.USDT, // USDT ], owners: ['0x01d3e7271c278aa3aa56eeba6a109b2c200679fa'], ownTokens: ['0x69eb4fa4a2fbd498c257c57ea8b7655a2559a581'], diff --git a/projects/treasury/dopex.js b/projects/treasury/dopex.js index ec6149244e..2c5eb5e8c8 100644 --- a/projects/treasury/dopex.js +++ b/projects/treasury/dopex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x2fa6F21eCfE274f594F470c376f5BDd061E08a37"; @@ -10,7 +11,7 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', + ADDRESSES.arbitrum.USDT, '0x7418F5A2621E13c05d1EFBd71ec922070794b90a' ], owners: [Treasury], diff --git a/projects/treasury/dxdao.js b/projects/treasury/dxdao.js index fd6877a850..29c4962a91 100644 --- a/projects/treasury/dxdao.js +++ b/projects/treasury/dxdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x519b70055af55a007110b4ff99b0ea33071c720a"; @@ -8,18 +9,18 @@ module.exports = treasuryExports({ tokens: [ nullAddress, '0x6cAcDB97e3fC8136805a9E7c342d866ab77D0957',//swapr - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//dai + ADDRESSES.ethereum.DAI,//dai '0xFe2e637202056d30016725477c5da089Ab0A043A',//seth2 - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//usdc + ADDRESSES.ethereum.USDC,//usdc '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//lusd - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//steth + ADDRESSES.ethereum.STETH,//steth '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens - '0xae78736Cd615f374D3085123A210448E74Fc6393',//reth + ADDRESSES.ethereum.RETH,//reth '0x20BC832ca081b91433ff6c17f85701B6e92486c5',//reth2 '0xEd91879919B71bB6905f23af0A68d231EcF87b14',//dmg '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d',//pnk '0xF5581dFeFD8Fb0e4aeC526bE659CFaB1f8c781dA',//hopr - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth + ADDRESSES.ethereum.WETH,//weth ], owners: [treasury], ownTokens: [DXD], diff --git a/projects/treasury/dydx.js b/projects/treasury/dydx.js index e56c6d2f02..cdfb684d8e 100644 --- a/projects/treasury/dydx.js +++ b/projects/treasury/dydx.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const dydxTreasury = "0xE710CEd57456D3A16152c32835B5FB4E72D9eA5b"; @@ -9,7 +10,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//TETHER + ADDRESSES.ethereum.USDT,//TETHER ], owners: [dydxTreasury], ownTokens: [DYDX], diff --git a/projects/treasury/empyreal.js b/projects/treasury/empyreal.js index 66c5bb506d..8ab7f54d84 100644 --- a/projects/treasury/empyreal.js +++ b/projects/treasury/empyreal.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xF548a58DB6d86d466acd00Fc0F6De3b39Ea129D7"; @@ -11,7 +12,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x912CE59144191C1204E64559FE8253a0e49E6548", //ARB - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", //USDC + ADDRESSES.arbitrum.USDC, //USDC ], owners: [treasury], ownTokens: [EMP], diff --git a/projects/treasury/ens.js b/projects/treasury/ens.js index ad4ac0dd0d..bccda8e5fa 100644 --- a/projects/treasury/ens.js +++ b/projects/treasury/ens.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7"; @@ -11,7 +12,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //USDC + ADDRESSES.ethereum.USDC, //USDC ], owners: [treasury, vestingAddress], ownTokens: [ENS], diff --git a/projects/treasury/eth-foundation.js b/projects/treasury/eth-foundation.js index f5b6c6e3b0..49d31c2c28 100644 --- a/projects/treasury/eth-foundation.js +++ b/projects/treasury/eth-foundation.js @@ -1,17 +1,18 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae"; -const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; -const ETH = "0x0000000000000000000000000000000000000000"; +const WETH = ADDRESSES.ethereum.WETH; +const ETH = ADDRESSES.null; module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //USDC + ADDRESSES.ethereum.USDC, //USDC "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", //OMG - "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", //BNB + ADDRESSES.ethereum.BNB, //BNB ], owners: [treasury], diff --git a/projects/treasury/euler.js b/projects/treasury/euler.js index 6d544cf049..1f52231c83 100644 --- a/projects/treasury/euler.js +++ b/projects/treasury/euler.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xcAD001c30E96765aC90307669d578219D4fb1DCe"; @@ -6,8 +7,8 @@ const eul = "0xd9Fcd98c322942075A5C3860693e9f4f03AAE07b"; module.exports = treasuryExports({ ethereum: { tokens: [ - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC - "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDT, // USDT "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", // GRT ], owners: [treasury], diff --git a/projects/treasury/fantohm-dao.js b/projects/treasury/fantohm-dao.js index 5d7bf63baf..f4c196a5cb 100644 --- a/projects/treasury/fantohm-dao.js +++ b/projects/treasury/fantohm-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xA3b52d5A6d2f8932a5cD921e09DA840092349D71"; @@ -7,9 +8,9 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x6Fc9383486c163fA48becdEC79d6058f984f62cA",//USDB - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75",//USDC - "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E",//DAI - "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83",//WFTM + ADDRESSES.fantom.USDC,//USDC + ADDRESSES.fantom.DAI,//DAI + ADDRESSES.fantom.WFTM,//WFTM ], owners: [treasury,], }, diff --git a/projects/treasury/flair-dex.js b/projects/treasury/flair-dex.js index 075869547d..e4a699a819 100644 --- a/projects/treasury/flair-dex.js +++ b/projects/treasury/flair-dex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const FLDXTreasury = "0xAD276dA5aAad4181B991fd93Bc7dCCFb46811003"; @@ -7,12 +8,12 @@ module.exports = treasuryExports({ avax: { tokens: [ nullAddress, - "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",//USDT - "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",//USDT.e - "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",//AVAX - "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",//USDC - "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664",//USDC.e - "0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39",//BUSD + ADDRESSES.avax.USDt,//USDT + ADDRESSES.avax.USDT_e,//USDT.e + ADDRESSES.avax.WAVAX,//AVAX + ADDRESSES.avax.USDC,//USDC + ADDRESSES.avax.USDC_e,//USDC.e + ADDRESSES.polygon.BUSD,//BUSD "0x1C1CDF8928824dac36d84B3486D598B9799bA6c0",//aBASED "0x107D2b7C619202D994a4d044c762Dd6F8e0c5326",//FLDX ], diff --git a/projects/treasury/floor-dao.js b/projects/treasury/floor-dao.js index bc82b6f58c..80d6a9bfcd 100644 --- a/projects/treasury/floor-dao.js +++ b/projects/treasury/floor-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const floorTreasury1 = "0x91E453f442d25523F42063E1695390e325076ca2"; @@ -10,8 +11,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDC,//USDC ], owners: [floorTreasury1, floorTreasury2], ownTokens: [FLOOR], diff --git a/projects/treasury/friendswithbenefits.js b/projects/treasury/friendswithbenefits.js index 5649b07999..a21757781d 100644 --- a/projects/treasury/friendswithbenefits.js +++ b/projects/treasury/friendswithbenefits.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x33e626727B9Ecf64E09f600A1E0f5adDe266a0DF"; @@ -9,8 +10,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',//usdc - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth + ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.WETH,//weth '0xBcca60bB61934080951369a648Fb03DF4F96263C',//ausdc '0x9355372396e3F6daF13359B7b607a3374cc638e0',//whale ], diff --git a/projects/treasury/gale.js b/projects/treasury/gale.js index 6433cb116c..f392989820 100644 --- a/projects/treasury/gale.js +++ b/projects/treasury/gale.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const config = { @@ -6,7 +7,7 @@ const config = { tokenContract: "0x627E86E9eC832b59018Bf91456599e752288Aa97", liquidityContract: "0x1fC3152de89b0c6c36F0d330b7Be369d6dDB219F", vaultContract: "0x973Abe726E3e37bbD8501B2D8909Fa59535Babdd", - busd: '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', + busd: ADDRESSES.bsc.BUSD, } } diff --git a/projects/treasury/gearbox.js b/projects/treasury/gearbox.js index ac56fe5503..45b2ffaee4 100644 --- a/projects/treasury/gearbox.js +++ b/projects/treasury/gearbox.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); // Treasury @@ -10,11 +11,11 @@ module.exports = treasuryExports({ tokens: [ // Ethereum Assets nullAddress, - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - '0x6b175474e89094c44da98b954eedeac495271d0f', - "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",//wsteth + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WSTETH,//wsteth ], owners: [treasury], ownTokens: [GEAR] diff --git a/projects/treasury/gitcoin.js b/projects/treasury/gitcoin.js index 397e90c2f7..4241f7d2b2 100644 --- a/projects/treasury/gitcoin.js +++ b/projects/treasury/gitcoin.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x57a8865cfB1eCEf7253c27da6B4BC3dAEE5Be518"; @@ -9,7 +10,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //USDC + ADDRESSES.ethereum.USDC, //USDC '0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3',//rad '0xE54f9E6Ab80ebc28515aF8b8233c1aeE6506a15E',//pasta ], diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index 46bef8d67b..513cbfa7b3 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x4971DD016127F390a3EF6b956Ff944d0E2e1e462"; @@ -12,25 +13,25 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //USDC + ADDRESSES.ethereum.USDC, //USDC '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',//cDAI '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT - '0xD533a949740bb3306d119CC777fa900bA034cd52',//CRV + ADDRESSES.ethereum.CRV,//CRV '0xba100000625a3754423978a60c9317c58a424e3D',//BAL '0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B',//CVX '0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB',//COW - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH + ADDRESSES.ethereum.STETH,//stETH '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb',//ankETH '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d',//PNK - '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',//wstETH + ADDRESSES.ethereum.WSTETH,//wstETH '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA '0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf',//GEN '0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6',//RDN '0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb',//INST '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX - '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32',//LDO + ADDRESSES.ethereum.LIDO,//LDO ], owners: [treasury, treasury1, treasury2, treasury3, vestingAddress], ownTokens: [GNO], diff --git a/projects/treasury/gooddollar.js b/projects/treasury/gooddollar.js index 65884cec8b..1b2d0ac08e 100644 --- a/projects/treasury/gooddollar.js +++ b/projects/treasury/gooddollar.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('../gooddollar/abi.json'); const BigNumber = require("bignumber.js"); const tokens = { aUSDC: "0xbcca60bb61934080951369a648fb03df4f96263c", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", + DAI: ADDRESSES.ethereum.DAI, cDAI: "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", Gfuse: "0x495d133B938596C9984d462F007B676bDc57eCEC", // GoodDollar on Fuse FUSE: "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", // Fuse on Mainnet diff --git a/projects/treasury/gyro.js b/projects/treasury/gyro.js index 9db3c32feb..1ebab7b62c 100644 --- a/projects/treasury/gyro.js +++ b/projects/treasury/gyro.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x8b1522402fece066d83e0f6c97024248be3c8c01"; @@ -9,8 +10,8 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',//BUSD - '0x55d398326f99059fF775485246999027B3197955',//BSC-USD + ADDRESSES.bsc.BUSD,//BUSD + ADDRESSES.bsc.USDT,//BSC-USD ], owners: [Treasury], ownTokens: [GYRO], diff --git a/projects/treasury/idle-dao.js b/projects/treasury/idle-dao.js index dd4e17c9fc..30734a70ce 100644 --- a/projects/treasury/idle-dao.js +++ b/projects/treasury/idle-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); //eth @@ -21,19 +22,19 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //USDC + ADDRESSES.ethereum.USDC, //USDC "0x4da27a545c0c5B758a6BA100e3a049001de870f5", //stkAAVE - "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", //BNB + ADDRESSES.ethereum.BNB, //BNB "0xc00e94Cb662C3520282E6f5717214004A7f26888",//comp "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51",//sUSD "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919",//RAI - "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2",//sushi - "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",//matic - "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32",//ldo + ADDRESSES.ethereum.SUSHI,//sushi + ADDRESSES.ethereum.MATIC,//matic + ADDRESSES.ethereum.LIDO,//ldo "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF",//alcx - "0x6B175474E89094C44Da98b954EedeAC495271d0F",//dai - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",//steth - "0x514910771AF9Ca656af840dff83E8264EcF986CA",//link + ADDRESSES.ethereum.DAI,//dai + ADDRESSES.ethereum.STETH,//steth + ADDRESSES.ethereum.LINK,//link ], owners: [treasury, treasury1, treasury2, treasury3, treasury4, treasury5], ownTokens: [IDLE], @@ -42,10 +43,10 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0xf28164A485B0B2C90639E47b0f377b4a438a16B1",//dquick - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",//dai + ADDRESSES.polygon.DAI,//dai "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619",//weth - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",//usdc + ADDRESSES.polygon.WETH_1,//weth + ADDRESSES.polygon.USDC,//usdc "0x580A84C73811E1839F75d86d75d88cCa0c241fF4",//QI ], owners: [treasuryPolygon, treasuryPolygon1], diff --git a/projects/treasury/india-covid-relief-fund.js b/projects/treasury/india-covid-relief-fund.js index 7596c76a0d..b58138f414 100644 --- a/projects/treasury/india-covid-relief-fund.js +++ b/projects/treasury/india-covid-relief-fund.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x68A99f89E475a078645f4BAC491360aFe255Dff1"; @@ -10,28 +11,28 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//usdc - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//usdt - '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0',//matic - '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2',//mkr + ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.USDT,//usdt + ADDRESSES.ethereum.MATIC,//matic + ADDRESSES.ethereum.MKR,//mkr '0x6810e776880C02933D47DB1b9fc05908e5386b96',//gno - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//dai + ADDRESSES.ethereum.DAI,//dai ], owners: [Treasury], }, bsc: { tokens: [ nullAddress, - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',//busd - '0x55d398326f99059fF775485246999027B3197955',//busd usdc - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',//wbnb + ADDRESSES.bsc.BUSD,//busd + ADDRESSES.bsc.USDT,//busd usdc + ADDRESSES.bsc.WBNB,//wbnb ], owners: [Treasury_bsc] }, tron: { tokens: [ nullAddress, - 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', + ADDRESSES.tron.USDT, ], owners: [Treasury_trx] }, diff --git a/projects/treasury/instadapp.js b/projects/treasury/instadapp.js index 6b349fd6d7..992516ce46 100644 --- a/projects/treasury/instadapp.js +++ b/projects/treasury/instadapp.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0xf81ab897e3940e95d749ff2e1f8d38f9b7cbe3cf"; @@ -6,9 +7,9 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + ADDRESSES.arbitrum.USDC, "0x8971dFb268B961a9270632f28B24F2f637c94244", - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" + ADDRESSES.optimism.DAI ], owners: [Treasury], }, diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index c78cc3f25e..03f8ba311c 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const inv = "0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68"; @@ -10,17 +11,17 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0x6B175474E89094C44Da98b954EedeAC495271d0F", // DAI - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.USDC, // USDC "0x865377367054516e17014CcdED1e7d814EDC9ce4", // DOLA - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // WBTC - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH - "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", // YFI + ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.YFI, // YFI "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", // AURA "0xba100000625a3754423978a60c9317c58a424e3D", // BAL "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT - "0xFEEf77d3f69374f66429C91d732A244f074bdf74", // cvxFXS - "0xD533a949740bb3306d119CC777fa900bA034cd52", // CRV + ADDRESSES.ethereum.cvxFXS, // cvxFXS + ADDRESSES.ethereum.CRV, // CRV "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", // CVX "0x4C2e59D098DF7b6cBaE0848d66DE2f8A4889b9C3", // FODL "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE @@ -43,7 +44,7 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", // USDC + ADDRESSES.optimism.USDC, // USDC "0x8aE125E8653821E851F12A49F7765db9a9ce7384", // DOLA ], owners: [opmultisig], @@ -52,7 +53,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", // WBNB + ADDRESSES.bsc.WBNB, // WBNB "0x2F29Bc0FFAF9bff337b31CBe6CB5Fb3bf12e5840", // DOLA // "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D", // veTHE ], diff --git a/projects/treasury/ipor.js b/projects/treasury/ipor.js index 111bd173f6..da53c3474d 100644 --- a/projects/treasury/ipor.js +++ b/projects/treasury/ipor.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const { unwrapUniswapV3NFTs, @@ -11,7 +12,7 @@ const ipor = "0x1e4746dC744503b53b4A082cB3607B169a289090"; const univ3 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88"; const tokens = [ nullAddress, - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH + ADDRESSES.ethereum.WETH, // WETH ]; async function ownTokens(timestamp, block) { diff --git a/projects/treasury/jade-protocol.js b/projects/treasury/jade-protocol.js index 1f88d600d6..2059b5be2f 100644 --- a/projects/treasury/jade-protocol.js +++ b/projects/treasury/jade-protocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x6f0bc6217faa5a2f503c057ee6964b756a09ae2c"; @@ -15,8 +16,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // wbtc + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.WBTC, // wbtc '0xac3E018457B222d93114458476f3E3416Abbe38F', // sfrxETH '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0', // FXS ], @@ -25,30 +26,30 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',//busd + ADDRESSES.bsc.BUSD,//busd ], owners: [treasuryBSC], }, avax: { tokens: [ nullAddress, - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E',//usdc + ADDRESSES.avax.USDC,//usdc ], owners: [treasuryAVAX] }, optimism: { tokens: [ nullAddress, - '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', //usdc + ADDRESSES.optimism.USDC, //usdc ], owners: [treasuryOP] }, arbitrum: { tokens: [ nullAddress, - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', //usdc + ADDRESSES.arbitrum.USDC, //usdc '0x0C4681e6C0235179ec3D4F4fc4DF3d14FDD96017', //rdnt - '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a',//gmx + ADDRESSES.arbitrum.GMX,//gmx ], owners: [treasuryARB, treasuryARB2] } diff --git a/projects/treasury/jonesdao.js b/projects/treasury/jonesdao.js index f12a6d4756..3ed620b710 100644 --- a/projects/treasury/jonesdao.js +++ b/projects/treasury/jonesdao.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const treasury = "0xFa82f1bA00b0697227E2Ad6c668abb4C50CA0b1F"; const jones = "0x10393c20975cF177a3513071bC110f7962CD67da"; const tokens = [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC + ADDRESSES.arbitrum.USDC, // USDC "0x3d9907F9a368ad0a51Be60f7Da3b97cf940982D8", // GRAIL - "0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A", // MIM + ADDRESSES.arbitrum.MIM, // MIM "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL "0x616279fF3dBf57A55e3d1F2E309e5D704E4e58Ae", // jGLP-USDC CMLT-LP "0x2bcd0aac7D98697D8760fB291625829113E354e7", // jUSDC-WETH CMLT-LP diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index 912287469e..edecd49a62 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const jpegd = "0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3"; @@ -11,14 +12,14 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC - "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH - "0x6B175474E89094C44Da98b954EedeAC495271d0F", // DAI - "0x0000000000085d4780B73119b644AE5ecd22b376", // TUSD + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.TUSD, // TUSD "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", // CVX "0x853d955aCEf822Db058eb8505911ED77F175b99e", // FRAX - "0x514910771AF9Ca656af840dff83E8264EcF986CA", // LINK + ADDRESSES.ethereum.LINK, // LINK "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", // cvxCRV "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE ], diff --git a/projects/treasury/just-yield.js b/projects/treasury/just-yield.js index 6b11244e5d..48b09d9d24 100644 --- a/projects/treasury/just-yield.js +++ b/projects/treasury/just-yield.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const Treasury = "0xeCa31b3cbD0C65CC3Ea2DE2338693B74445B0c2C"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',//weth + ADDRESSES.arbitrum.WETH,//weth ], owners: [Treasury], }, diff --git a/projects/treasury/keeperdao.js b/projects/treasury/keeperdao.js index a18256ff76..62c1a3ac15 100644 --- a/projects/treasury/keeperdao.js +++ b/projects/treasury/keeperdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const keeperDaoTreasury = "0x9a67F1940164d0318612b497E8e6038f902a00a4"; @@ -8,13 +9,13 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC '0xFe2e637202056d30016725477c5da089Ab0A043A',//sETH2 - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0xae78736Cd615f374D3085123A210448E74Fc6393',//rETH - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.RETH,//rETH + ADDRESSES.ethereum.STETH,//stETH + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.WBTC,//WBTC '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D'//renBTC ], diff --git a/projects/treasury/king-finance.js b/projects/treasury/king-finance.js index 569132ed0d..6c339ddef4 100644 --- a/projects/treasury/king-finance.js +++ b/projects/treasury/king-finance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const TREASURY1 = '0x2eecdb4631c3d2f49d56b4cbfede4c7b23151337' @@ -9,8 +10,8 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', - '0x55d398326f99059fF775485246999027B3197955', + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.USDT, ], owners: [TREASURY1, TREASURY2, TREASURY3, TREASURY4,], ownTokens: ['0x74f08aF7528Ffb751e3A435ddD779b5C4565e684'], diff --git a/projects/treasury/klima-dao.js b/projects/treasury/klima-dao.js index 671d8f3bf8..7644248adc 100644 --- a/projects/treasury/klima-dao.js +++ b/projects/treasury/klima-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const klimaTreasury1 = "0x7dd4f0b986f032a44f913bf92c9e8b7c17d77ad7"; @@ -10,7 +11,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, '0x2F800Db0fdb5223b3C3f354886d907A671414A7F', // BCT - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', // USDC + ADDRESSES.polygon.USDC, // USDC '0xD838290e877E0188a4A44700463419ED96c16107', // NCT '0xAa7DbD1598251f856C12f63557A4C4397c253Cea', // MCO2 '0x2B3eCb0991AF0498ECE9135bcD04013d7993110c', // UBO diff --git a/projects/treasury/kromatika.js b/projects/treasury/kromatika.js index fd05129b03..4138998da8 100644 --- a/projects/treasury/kromatika.js +++ b/projects/treasury/kromatika.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x8e35cc21fbcade0a5483ce430e0d5456086a36d3"; @@ -9,7 +10,7 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + ADDRESSES.arbitrum.USDC, "0x8971dFb268B961a9270632f28B24F2f637c94244" ], owners: [Treasury], diff --git a/projects/treasury/lido.js b/projects/treasury/lido.js index dbd00ebf86..1e57744ca2 100644 --- a/projects/treasury/lido.js +++ b/projects/treasury/lido.js @@ -1,17 +1,18 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const LidoTreasury = "0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"; -const LDO = "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32"; +const LDO = ADDRESSES.ethereum.LIDO; module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH - '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0',//MATIC - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.STETH,//stETH + ADDRESSES.ethereum.MATIC,//MATIC + ADDRESSES.ethereum.USDC,//USDC '0x2eE543b8866F46cC3dC93224C6742a8911a59750',//MVDG '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA diff --git a/projects/treasury/liondex.js b/projects/treasury/liondex.js index 532476687e..77ff4835d0 100644 --- a/projects/treasury/liondex.js +++ b/projects/treasury/liondex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x7fca3bf8adc4e143bd789aecda36c0ce34f1d75b"; @@ -9,7 +10,7 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + ADDRESSES.arbitrum.USDC, "0x8971dFb268B961a9270632f28B24F2f637c94244", "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" ], diff --git a/projects/treasury/liquity-treasury.js b/projects/treasury/liquity-treasury.js index 18c732cec4..0c77e22448 100644 --- a/projects/treasury/liquity-treasury.js +++ b/projects/treasury/liquity-treasury.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xF06016D822943C42e3Cb7FC3a6A3B1889C1045f8"; @@ -14,9 +15,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.DAI,//DAI '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//LUSD - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//usdc + ADDRESSES.ethereum.USDC,//usdc '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//grt '0x41545f8b9472D758bB669ed8EaEEEcD7a9C4Ec29',//fort ], @@ -26,7 +27,7 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - '0x4200000000000000000000000000000000000042', //OP + ADDRESSES.optimism.OP, //OP '0x73cb180bf0521828d8849bc8CF2B920918e23032', //USD+ '0x3c8B650257cFb5f272f799F5e2b4e65093a11a05',//velo ], diff --git a/projects/treasury/looksrare.js b/projects/treasury/looksrare.js index 9c421dc619..06d772b563 100644 --- a/projects/treasury/looksrare.js +++ b/projects/treasury/looksrare.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress } = require("../helper/treasury"); const { unwrapUniswapV3NFTs, @@ -10,7 +11,7 @@ const looks = "0xf4d2888d29D722226FafA5d9B24F9164c092421E"; const tokens = [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.USDC, // USDC "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE ]; diff --git a/projects/treasury/lsdx-finance.js b/projects/treasury/lsdx-finance.js index 3a90e81b87..78d3af5d10 100644 --- a/projects/treasury/lsdx-finance.js +++ b/projects/treasury/lsdx-finance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const Treasury = "0xb966b7038A2b42A0419457dA4F4d2FBa23097aE1"; @@ -8,9 +9,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.STETH,//stETH + ADDRESSES.ethereum.USDC,//USDC ], owners: [Treasury], ownTokens: [LSD], diff --git a/projects/treasury/mahadao.js b/projects/treasury/mahadao.js index 0d4789e0eb..ad79733cd5 100644 --- a/projects/treasury/mahadao.js +++ b/projects/treasury/mahadao.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require("../helper/unwrapLPs.js"); const eth = { - weth: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + weth: ADDRESSES.ethereum.WETH, arth: "0x8CC0F052fff7eaD7f2EdCCcaC895502E884a8a71", treasury: "0x43c958affe41d44f0a02ae177b591e93c86adbea", }; diff --git a/projects/treasury/maker.js b/projects/treasury/maker.js index 4f5d39edec..dcbcadd4f1 100644 --- a/projects/treasury/maker.js +++ b/projects/treasury/maker.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB"; -const MKR = "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2"; -const DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F" +const MKR = ADDRESSES.ethereum.MKR; +const DAI = ADDRESSES.ethereum.DAI module.exports = treasuryExports({ @@ -12,7 +13,7 @@ module.exports = treasuryExports({ '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens '0x4da27a545c0c5B758a6BA100e3a049001de870f5',//staave '0xc00e94Cb662C3520282E6f5717214004A7f26888',//comp - '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9',//aave + ADDRESSES.ethereum.AAVE,//aave '0x8f8221aFbB33998d8584A2B05749bA73c37a938a',//req ], owners: [treasury], diff --git a/projects/treasury/maple.js b/projects/treasury/maple.js index 7355bcc8b2..afa6572b74 100644 --- a/projects/treasury/maple.js +++ b/projects/treasury/maple.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const MapleTreasury = "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDC = ADDRESSES.ethereum.USDC; module.exports = { ethereum: { diff --git a/projects/treasury/metacartel.js b/projects/treasury/metacartel.js index c326d2999a..4a3ba04981 100644 --- a/projects/treasury/metacartel.js +++ b/projects/treasury/metacartel.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x4570b4fAF71E23942B8B9F934b47ccEdF7540162"; @@ -7,10 +8,10 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//usdc + ADDRESSES.ethereum.WETH,//weth + ADDRESSES.ethereum.USDC,//usdc '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//flx - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//dai + ADDRESSES.ethereum.DAI,//dai '0xfb5453340C03db5aDe474b27E68B6a9c6b2823Eb',//robot '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919',//rai ], diff --git a/projects/treasury/metronome.js b/projects/treasury/metronome.js index c5e85fd7e5..3864a96938 100644 --- a/projects/treasury/metronome.js +++ b/projects/treasury/metronome.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xc897b98272aa23714464ea2a0bd5180f1b8c0025"; @@ -10,9 +11,9 @@ module.exports = treasuryExports({ tokens: [ nullAddress, '0x64351fC9810aDAd17A690E4e1717Df5e7e085160',//msETH - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//usdc - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//dai - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth + ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.DAI,//dai + ADDRESSES.ethereum.WETH,//weth '0x1b40183EFB4Dd766f11bDa7A7c3AD8982e998421',//vsp ], owners: [treasury, vestingAddress], diff --git a/projects/treasury/mimo-protocol.js b/projects/treasury/mimo-protocol.js index b9df0b7388..54d41e12d1 100644 --- a/projects/treasury/mimo-protocol.js +++ b/projects/treasury/mimo-protocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x25Fc7ffa8f9da3582a36633d04804F0004706F9b"; @@ -18,9 +19,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT - '0xD533a949740bb3306d119CC777fa900bA034cd52',//CRV - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDT,//USDT + ADDRESSES.ethereum.CRV,//CRV + ADDRESSES.ethereum.USDC,//USDC '0xba100000625a3754423978a60c9317c58a424e3D',//BAL '0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7',//cvxCRV '0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D',//LQTY @@ -38,13 +39,13 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174'//USDC + ADDRESSES.polygon.USDC//USDC ] }, fantom: { tokens: [ nullAddress, - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75'//USDC + ADDRESSES.fantom.USDC//USDC ] } }) \ No newline at end of file diff --git a/projects/treasury/moret.js b/projects/treasury/moret.js index 7bf7e24d88..b249a9720c 100644 --- a/projects/treasury/moret.js +++ b/projects/treasury/moret.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const treasury = "0x015B5FD572De0a7C1478075e1710a0505184520d"; @@ -8,8 +9,8 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',//USDC - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619'//weth + ADDRESSES.polygon.USDC,//USDC + ADDRESSES.polygon.WETH_1//weth ], owners: [treasury], ownTokens: [MOR], diff --git a/projects/treasury/mstable.js b/projects/treasury/mstable.js index 0d5c777697..56ce9a58da 100644 --- a/projects/treasury/mstable.js +++ b/projects/treasury/mstable.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const mStableTreasury1 = "0x3dd46846eed8D147841AE162C8425c08BD8E1b41"; @@ -10,17 +11,17 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT '0xc00e94Cb662C3520282E6f5717214004A7f26888',//COMP '0x4da27a545c0c5B758a6BA100e3a049001de870f5',//stkAAVE '0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84',//icETH '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS - '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984',//UNI + ADDRESSES.ethereum.UNI,//UNI '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH + ADDRESSES.ethereum.STETH,//stETH ], owners: [mStableTreasury1], ownTokens: [META, mUSD], diff --git a/projects/treasury/mycelium.js b/projects/treasury/mycelium.js index f42a8513bb..2c78684c46 100644 --- a/projects/treasury/mycelium.js +++ b/projects/treasury/mycelium.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', // WETH + ADDRESSES.arbitrum.WETH, // WETH '0x432502a764abec914f940916652ce55885323cda', ], owners: ['0x9f59e27fd6c8d96dfb89da58c0c98bac07e7a21a'], diff --git a/projects/treasury/nemesis.js b/projects/treasury/nemesis.js index 256622cc15..ac3e4935c6 100644 --- a/projects/treasury/nemesis.js +++ b/projects/treasury/nemesis.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const nemeTreasury1 = "0xdFFb6FB92E3F54C0DAa59e5af3f47fD58824562a"; @@ -9,7 +10,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',//BUSD + ADDRESSES.bsc.BUSD,//BUSD ], owners: [nemeTreasury1], ownTokens: [NMS], diff --git a/projects/treasury/nexus-mutual.js b/projects/treasury/nexus-mutual.js index 0ed6d9bfd5..990774f0d1 100644 --- a/projects/treasury/nexus-mutual.js +++ b/projects/treasury/nexus-mutual.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const communityFund = "0x586b9b2F8010b284A0197f392156f1A7Eb5e86e9"; @@ -8,9 +9,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT + ADDRESSES.ethereum.USDT, // USDT "0x2ba592F78dB6436527729929AAf6c908497cB200", // CREAM - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.USDC, // USDC "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE ], ownTokens: [nxm, wNxm], diff --git a/projects/treasury/nftx.js b/projects/treasury/nftx.js index 56d7b0533c..1e18e88496 100644 --- a/projects/treasury/nftx.js +++ b/projects/treasury/nftx.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const nftxDao = "0x40D73Df4F99bae688CE3C23a01022224FE16C7b2"; @@ -6,7 +7,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC ], owners: [nftxDao] }, diff --git a/projects/treasury/nouns.js b/projects/treasury/nouns.js index ac4dbc0357..9897ca0b46 100644 --- a/projects/treasury/nouns.js +++ b/projects/treasury/nouns.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x0BC3807Ec262cB779b38D65b38158acC3bfedE10"; @@ -6,8 +7,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //USDC - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",//stETH + ADDRESSES.ethereum.USDC, //USDC + ADDRESSES.ethereum.STETH,//stETH ], owners: [treasury,], }, diff --git a/projects/treasury/oasisswapdex.js b/projects/treasury/oasisswapdex.js index 660c2cf512..b2032aabe2 100644 --- a/projects/treasury/oasisswapdex.js +++ b/projects/treasury/oasisswapdex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xe0a9B8DeF6d85eb7D828f706635402334D564b0f"; @@ -7,7 +8,7 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", //USDC + ADDRESSES.arbitrum.USDC, //USDC ], owners: [treasury, MultisigTreasury], }, diff --git a/projects/treasury/ovr.js b/projects/treasury/ovr.js index b18abdea2c..33f71f57f6 100644 --- a/projects/treasury/ovr.js +++ b/projects/treasury/ovr.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, } = require("../helper/treasury"); const OVR = { @@ -5,7 +6,7 @@ const OVR = { polygon: "0x1631244689EC1fEcbDD22fb5916E920dFC9b8D30", }; -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f"; +const DAI = ADDRESSES.ethereum.DAI; const IBCO = "0x8c19cF0135852BA688643F57d56Be72bB898c411"; module.exports = treasuryExports({ diff --git a/projects/treasury/paladin-finance.js b/projects/treasury/paladin-finance.js index 03f878c1e1..1f22c3cbc2 100644 --- a/projects/treasury/paladin-finance.js +++ b/projects/treasury/paladin-finance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xb95A4779CceDc53010EF0df8Bf8Ed6aEB0E8c2B2"; @@ -11,9 +12,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT - '0xD533a949740bb3306d119CC777fa900bA034cd52',//CRV - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDT,//USDT + ADDRESSES.ethereum.CRV,//CRV + ADDRESSES.ethereum.USDC,//USDC '0xba100000625a3754423978a60c9317c58a424e3D',//BAL '0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7',//cvxCRV '0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D',//LQTY @@ -22,7 +23,7 @@ module.exports = treasuryExports({ '0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F',//SDT '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490',//3CRV '0x4104b135DBC9609Fc1A9490E61369036497660c8',//APY - '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32',//LDO + ADDRESSES.ethereum.LIDO,//LDO ], owners: [treasury, treasury1, ], diff --git a/projects/treasury/parrot-protocol.js b/projects/treasury/parrot-protocol.js index 6c69658db9..3e57af2334 100644 --- a/projects/treasury/parrot-protocol.js +++ b/projects/treasury/parrot-protocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x0B70A2653B6E7BF44A3c80683E9bD9B90489F92A"; @@ -6,9 +7,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.STETH,//stETH + ADDRESSES.ethereum.WBTC,//WBTC ], owners: [treasury], }, diff --git a/projects/treasury/peardao.js b/projects/treasury/peardao.js index c86482f56d..19c17a34cc 100644 --- a/projects/treasury/peardao.js +++ b/projects/treasury/peardao.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') -const BUSD_TOKEN_CONTRACT = '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56'; -const USDT_TOKEN_CONTRACT = '0x55d398326f99059ff775485246999027b3197955'; -const USDC_TOKEN_CONTRACT = '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d'; -const WBNB_TOKEN_CONTRACT = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c'; -const BTCB_TOKEN_CONTRACT = '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c'; +const BUSD_TOKEN_CONTRACT = ADDRESSES.bsc.BUSD; +const USDT_TOKEN_CONTRACT = ADDRESSES.bsc.USDT; +const USDC_TOKEN_CONTRACT = ADDRESSES.bsc.USDC; +const WBNB_TOKEN_CONTRACT = ADDRESSES.bsc.WBNB; +const BTCB_TOKEN_CONTRACT = ADDRESSES.bsc.BTCB; const USTC_TOKEN_CONTRACT = '0x23396cF899Ca06c4472205fC903bDB4de249D6fC'; const TREASURY_ADDRESS = '0x263e0910C8c1B77B80CB9947B0FAC3735a6FEf4C'; diff --git a/projects/treasury/pegasusfinance.js b/projects/treasury/pegasusfinance.js index efd98e2769..a60beb31e1 100644 --- a/projects/treasury/pegasusfinance.js +++ b/projects/treasury/pegasusfinance.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryContract = "0x680b96DDC962349f59F54FfBDe2696652669ED60"; -const WETH_OPTIMISM = "0x4200000000000000000000000000000000000006"; +const WETH_OPTIMISM = ADDRESSES.tombchain.FTM; diff --git a/projects/treasury/perion.js b/projects/treasury/perion.js index a27c0022e7..bf25dc5a5f 100644 --- a/projects/treasury/perion.js +++ b/projects/treasury/perion.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const PERC = '0x60bE1e1fE41c1370ADaF5d8e66f07Cf1C2Df2268'; const treasuryContractsETH = [ @@ -8,11 +9,11 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC + ADDRESSES.ethereum.USDC, // USDC '0x60bE1e1fE41c1370ADaF5d8e66f07Cf1C2Df2268', // PERC '0x549020a9Cb845220D66d3E9c6D9F9eF61C981102', // SIDIUS '0x34Be5b8C30eE4fDe069DC878989686aBE9884470', //SENATE - '0xdAC17F958D2ee523a2206206994597C13D831ec7', //USDT + ADDRESSES.ethereum.USDT, //USDT ], owners: treasuryContractsETH, ownTokens: [PERC], diff --git a/projects/treasury/perpetual-protocol.js b/projects/treasury/perpetual-protocol.js index 0a7e622879..720990d2d4 100644 --- a/projects/treasury/perpetual-protocol.js +++ b/projects/treasury/perpetual-protocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const perpProtocolTreasury = "0xD374225abB84DCA94e121F0B8A06B93E39aD7a99"; @@ -12,9 +13,9 @@ module.exports = treasuryExports({ '0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84',//DHT '0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F',//SDT '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b',//DPI - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC '0xE0e05c43c097B0982Db6c9d626c4eb9e95C3b9ce',//USF - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.DAI,//DAI '0x1337DEF16F9B486fAEd0293eb623Dc8395dFE46a' //ARMOR ], owners: [perpProtocolTreasury], diff --git a/projects/treasury/piedao.js b/projects/treasury/piedao.js index 4687d58591..93c905cbb6 100644 --- a/projects/treasury/piedao.js +++ b/projects/treasury/piedao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const pieDaoTreasury = "0x3bCF3Db69897125Aa61496Fc8a8B55A5e3f245d5"; @@ -10,10 +11,10 @@ module.exports = treasuryExports({ nullAddress, '0x31429d1856aD1377A8A0079410B297e1a9e214c2',//ANGLE '0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26',//OGN - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.DAI,//DAI '0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B',//TRIBE '0x090185f2135308BaD17527004364eBcC2D37e5F6',//SPELL - '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F',//SNX + ADDRESSES.ethereum.SNX,//SNX '0xdB25f211AB05b1c97D595516F45794528a807ad8',//EURS '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6',//STG '0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68',//INV @@ -27,8 +28,8 @@ module.exports = treasuryExports({ '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919',//RAI '0x3472A5A71965499acd81997a54BBA8D852C6E53d',//BADGER '0x3Ec8798B81485A254928B70CDA1cf0A2BB0B74D7',//GRO - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84' //stETH + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.STETH //stETH ], owners: [pieDaoTreasury], ownTokens: [DOUGH, DOUGH_LP], diff --git a/projects/treasury/platypus.js b/projects/treasury/platypus.js index d0dfc148fa..96f5b70c33 100644 --- a/projects/treasury/platypus.js +++ b/projects/treasury/platypus.js @@ -1,20 +1,21 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x068e297e8FF74115C9E1C4b5B83B700FdA5aFdEB"; const tokens = [ nullAddress, - "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", // DAI + ADDRESSES.avax.DAI, // DAI "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE", // sAVAX - "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", // USDC - "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", // USDT.e - "0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39", // BUSD - "0x152b9d0FdC40C096757F570A51E494bd4b943E50", // BTC.b - "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", // USDt + ADDRESSES.avax.USDC, // USDC + ADDRESSES.avax.USDT_e, // USDT.e + ADDRESSES.polygon.BUSD, // BUSD + ADDRESSES.avax.BTC_b, // BTC.b + ADDRESSES.avax.USDt, // USDt "0xF7D9281e8e363584973F946201b82ba72C965D27", // yyAVAX - "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd", // JOE + ADDRESSES.avax.JOE, // JOE "0x026187BdbC6b751003517bcb30Ac7817D5B766f8", // H2O - "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", // WAVAX + ADDRESSES.avax.WAVAX, // WAVAX "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5", // QI "0xd9D90f882CDdD6063959A9d837B05Cb748718A05", // MORE "0x77777777777d4554c39223C354A05825b2E8Faa3", // YETI diff --git a/projects/treasury/pleasrdao.js b/projects/treasury/pleasrdao.js index 6a795d2af4..c72b7d0528 100644 --- a/projects/treasury/pleasrdao.js +++ b/projects/treasury/pleasrdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const pleasrDaoTreasury = "0xF5c27c6fE782cbB5c85989ea3e75754748153459"; @@ -6,7 +7,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC '0x300a902513815028e97FC79E92082Ce6a98d3b74',//SOX '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF '0xBf9e72eEb5adB8B558334c8672950B7a379D4266',//CUBT diff --git a/projects/treasury/pooltogether.js b/projects/treasury/pooltogether.js index b4e2c57771..9e219bf46f 100644 --- a/projects/treasury/pooltogether.js +++ b/projects/treasury/pooltogether.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress } = require("../helper/treasury"); const { unwrapUniswapV3NFTs, @@ -13,15 +14,15 @@ const POOL = "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e"; const tokens = [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //USDC - "0x6B175474E89094C44Da98b954EedeAC495271d0F", //DAI + ADDRESSES.ethereum.USDC, //USDC + ADDRESSES.ethereum.DAI, //DAI "0x028171bCA77440897B824Ca71D1c56caC55b68A3", //aDAI - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", //WETH - "0xdAC17F958D2ee523a2206206994597C13D831ec7", //USDT + ADDRESSES.ethereum.WETH, //WETH + ADDRESSES.ethereum.USDT, //USDT "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", //GTC "0x4da27a545c0c5B758a6BA100e3a049001de870f5", //stkAAVE "0xdd4d117723C257CEe402285D3aCF218E9A8236E1", // ptausdc - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH + ADDRESSES.ethereum.STETH, // stETH "0xD5f60154BEf3564EbFBe9bB236595f0da548a742", // spethwin ]; @@ -51,7 +52,7 @@ module.exports = { tvl: sumTokensExport({ tokens: [ nullAddress, - "0x4200000000000000000000000000000000000042", // OP + ADDRESSES.optimism.OP, // OP ], owners: [optreasury], }), diff --git a/projects/treasury/premia.js b/projects/treasury/premia.js index de7903b22c..c915b7a41c 100644 --- a/projects/treasury/premia.js +++ b/projects/treasury/premia.js @@ -1,16 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', // WBTC - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', // WETH - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', // DAI + ADDRESSES.arbitrum.WBTC, // WBTC + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.WETH, // WETH + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.optimism.DAI, // DAI '0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60', // LDO - '0xf97f4df75117a78c1a5a0dbb814af92458539fb4', // LINK + ADDRESSES.arbitrum.LINK, // LINK '0x82e3a8f066a6989666b031d916c43672085b1582', // YEARN ], owners: ['0xa079c6b032133b95cf8b3d273d27eeb6b110a469'], diff --git a/projects/treasury/puli.js b/projects/treasury/puli.js index 47c1c5b36d..810239d770 100644 --- a/projects/treasury/puli.js +++ b/projects/treasury/puli.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/unknownTokens') // const PULI_TOKEN_STAKING_CONTRACT = '0x864d434308997e9648838d23f3eedf5d0fd17bea'; const chain = 'bsc' @@ -11,14 +12,14 @@ module.exports = { tokensAndOwners: [ [nullAddress, TREASURY1], [nullAddress, TREASURY2], - ['0xe9e7cea3dedca5984780bafc599bd69add087d56', TREASURY1], + [ADDRESSES.bsc.BUSD, TREASURY1], ['0xC17c30e98541188614dF99239cABD40280810cA3', TREASURY1], - ['0x55d398326f99059fF775485246999027B3197955', TREASURY1], + [ADDRESSES.bsc.USDT, TREASURY1], ['0x3FF5cbE338153063D8251d2B6a22A437EC09Eef3', TREASURY1], ['0x3FF5cbE338153063D8251d2B6a22A437EC09Eef3', TREASURY2], - ['0xe9e7cea3dedca5984780bafc599bd69add087d56', TREASURY2], + [ADDRESSES.bsc.BUSD, TREASURY2], ['0xC17c30e98541188614dF99239cABD40280810cA3', TREASURY2], - ['0x55d398326f99059fF775485246999027B3197955', TREASURY2], + [ADDRESSES.bsc.USDT, TREASURY2], ], }) } diff --git a/projects/treasury/railgun.js b/projects/treasury/railgun.js index ec56a2a580..4b3de9f795 100644 --- a/projects/treasury/railgun.js +++ b/projects/treasury/railgun.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { tokens } = require("../helper/chain/algorand"); const { nullAddress, treasuryExports } = require("../helper/treasury"); @@ -16,13 +17,13 @@ module.exports = treasuryExports({ tokens: [ // Ethereum Assets nullAddress, - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",//weth + ADDRESSES.ethereum.WETH,//weth "0x295B42684F90c77DA7ea46336001010F2791Ec8c",//xi - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",//usdc - "0xdAC17F958D2ee523a2206206994597C13D831ec7",//usdt - "0x6B175474E89094C44Da98b954EedeAC495271d0F",//dai + ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.USDT,//usdt + ADDRESSES.ethereum.DAI,//dai "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0",//fxs - "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",//wsteth + ADDRESSES.ethereum.WSTETH,//wsteth "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B",//cvx "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D",//renbtc "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7",//cvxcrv @@ -30,16 +31,16 @@ module.exports = treasuryExports({ "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3",//mim "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0",//lusd "0x090185f2135308BaD17527004364eBcC2D37e5F6",//spell - "0x4Fabb145d64652a948d72533023f6E7A623C7C53",//busd + ADDRESSES.ethereum.BUSD,//busd "0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0",//albt - "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F",//snx + ADDRESSES.ethereum.SNX,//snx "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a",//bst - "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE",//shib - "0x514910771AF9Ca656af840dff83E8264EcF986CA",//link + ADDRESSES.ethereum.INU,//shib + ADDRESSES.ethereum.LINK,//link "0x21381e026Ad6d8266244f2A583b35F9E4413FA2a",//form - "0x2e9d63788249371f1DFC918a52f8d799F4a38C94",//toke + ADDRESSES.ethereum.TOKE,//toke "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E",//ilv - "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2",//mkr + ADDRESSES.ethereum.MKR,//mkr "0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed",//tsuka "0x853d955acef822db058eb8505911ed77f175b99e",//frax "0x2223bF1D7c19EF7C06DAB88938EC7B85952cCd89",//kxa @@ -48,8 +49,8 @@ module.exports = treasuryExports({ "0xf65B5C5104c4faFD4b709d9D60a185eAE063276c",//tru "0x3597bfd533a99c9aa083587b074434e61eb0a258",//dent "0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25",//slp - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",//uni - "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0",//matic + ADDRESSES.ethereum.UNI,//uni + ADDRESSES.ethereum.MATIC,//matic "0x9aE380F0272E2162340a5bB646c354271c0F5cFC",//cnc "0x07bac35846e5ed502aa91adf6a9e7aa210f2dcbe",//erowan "0xfb7b4564402e5500db5bb6d63ae671302777c75a",//dext @@ -65,13 +66,13 @@ module.exports = treasuryExports({ tokens: [ // bsc Assets nullAddress, - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",//wbnb - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56",//busd + ADDRESSES.bsc.WBNB,//wbnb + ADDRESSES.bsc.BUSD,//busd "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3",//dai - "0x55d398326f99059fF775485246999027B3197955",//bsc-usd + ADDRESSES.bsc.USDT,//bsc-usd "0x39cC67690D0F2d4aCD68d3d9B612a80D780b84c0",//agro "0xbF7c81FFF98BbE61B40Ed186e4AfD6DDd01337fe",//egld - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",//usdc + ADDRESSES.bsc.USDC,//usdc "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",//cake "0xAdBAF88B39D37Dc68775eD1541F1bf83A5A45feB",//coti "0xBfACD29427fF376FF3BC22dfFB29866277cA5Fb4",//pstn @@ -85,13 +86,13 @@ module.exports = treasuryExports({ tokens: [ // polygon Assets nullAddress, - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619",//weth - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",//usdc - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",//usdt - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",//dai + ADDRESSES.polygon.WETH_1,//weth + ADDRESSES.polygon.USDC,//usdc + ADDRESSES.polygon.USDT,//usdt + ADDRESSES.polygon.DAI,//dai "0x1a3acf6D19267E2d3e7f898f42803e90C9219062",//fxs - "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",//wsteth - "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",//wbtc + ADDRESSES.ethereum.WSTETH,//wsteth + ADDRESSES.polygon.WBTC,//wbtc "0xE5417Af564e4bFDA1c483642db72007871397896",//gns "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",//avax "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39",//link @@ -99,13 +100,13 @@ module.exports = treasuryExports({ "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic "0x752d59604d72b6DC44196f4A39A3f07779417407",//methmoon "0x8f006D1e1D9dC6C98996F50a4c810F17a47fBF19",//nsfw - "0xDBf31dF14B66535aF65AaC99C32e9eA844e14501",//renbtc + ADDRESSES.fantom.renBTC,//renbtc "0x9c891326Fd8b1a713974f73bb604677E1E63396D",//islami "0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89",//frax "0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B",//bob "0x580A84C73811E1839F75d86d75d88cCa0c241fF4",//qi "0x980111ae1B84E50222C8843e3A7a038F36Fecd2b",//stack - "0xB5C064F955D8e7F38fE0460C556a72987494eE17",//quick + ADDRESSES.polygon.QUICK,//quick "0x6C0AB120dBd11BA701AFF6748568311668F63FE0",//apw "0xE0339c80fFDE91F3e20494Df88d4206D86024cdF",//elon ], @@ -116,10 +117,10 @@ module.exports = treasuryExports({ tokens: [ // arbitrum assets nullAddress, - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth - "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", - "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" + ADDRESSES.arbitrum.WETH,//weth + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.USDC ], owners: [arbitrumTreasury], ownTokens: [] diff --git a/projects/treasury/rarible.js b/projects/treasury/rarible.js index 4c7dd7e114..c1cc92f36e 100644 --- a/projects/treasury/rarible.js +++ b/projects/treasury/rarible.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const rarTreasury = "0xFDfF6b56CcE39482032b27140252FF4F16432785"; @@ -10,11 +11,11 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT ], owners: [rarTreasury, rarTreasury1], ownTokens: [RARI], diff --git a/projects/treasury/revoluzion.js b/projects/treasury/revoluzion.js index ee305f354a..dc8b4b0ef4 100644 --- a/projects/treasury/revoluzion.js +++ b/projects/treasury/revoluzion.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require('../helper/unknownTokens') const REVOLUZION_TOKEN_CONTRACT = '0x7D89c67d3c4E72E8c5c64BE201dC225F99d16aCa'; const REVOLUZION_DIAMOND_HAND_CONTRACT = '0xA72a15369Fe9840a20c40F18b1695eF168fFFa77'; const REVOLUZION_DIVIDEND_CONTRACT = '0x23259212B5CD09A511440b9DD472d339C716dEb5'; -const BUSD = '0xe9e7cea3dedca5984780bafc599bd69add087d56' +const BUSD = ADDRESSES.bsc.BUSD module.exports = { bsc: { diff --git a/projects/treasury/ribbon.js b/projects/treasury/ribbon.js index 311e75a76b..1bf66deed4 100644 --- a/projects/treasury/ribbon.js +++ b/projects/treasury/ribbon.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); // Treasury @@ -9,17 +10,17 @@ module.exports = treasuryExports({ tokens: [ // Ethereum Assets nullAddress, - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", // wstETH - "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", // LDO - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // WBTC - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC - "0xae78736Cd615f374D3085123A210448E74Fc6393", // rETH - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH + ADDRESSES.ethereum.WSTETH, // wstETH + ADDRESSES.ethereum.LIDO, // LDO + ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.RETH, // rETH + ADDRESSES.ethereum.STETH, // stETH "0xba100000625a3754423978a60c9317c58a424e3D", // BAL "0x4d224452801ACEd8B2F0aebE155379bb5D594381", // APE "0x090185f2135308BaD17527004364eBcC2D37e5F6", // SPELL - "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", // UNI + ADDRESSES.ethereum.UNI, // UNI "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE", // yvUSDC "0x25751853Eab4D0eB3652B5eB6ecB102A2789644B", // rETH-THETA diff --git a/projects/treasury/saddle.js b/projects/treasury/saddle.js index dd64d2b1ae..21e629170a 100644 --- a/projects/treasury/saddle.js +++ b/projects/treasury/saddle.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ @@ -6,7 +7,7 @@ module.exports = treasuryExports({ '0x5575552988a3a80504bbaeb1311674fcfd40ad4b', '0x2cab3abfc1670d1a452df502e216a66883cdf079', '0x17fc002b466eec40dae837fc4be5c67993ddbd6f', - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', + ADDRESSES.arbitrum.USDC, ], owners: ['0x8e6e84ddab9d13a17806d34b097102605454d147'], ownTokens: [], diff --git a/projects/treasury/sakai-vault.js b/projects/treasury/sakai-vault.js index 04e0e88f7b..a264569734 100644 --- a/projects/treasury/sakai-vault.js +++ b/projects/treasury/sakai-vault.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const Treasury = "0x6b269c07e8f94f0fa1769cbd362879afea0206db"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0x55d398326f99059fF775485246999027B3197955" + ADDRESSES.bsc.USDT ], owners: [Treasury], ownTokens: [SAKAI], diff --git a/projects/treasury/shapeshift.js b/projects/treasury/shapeshift.js index c5f4209440..103205cfb2 100644 --- a/projects/treasury/shapeshift.js +++ b/projects/treasury/shapeshift.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const shaTreasury = "0x90A48D5CF7343B08dA12E067680B4C6dbfE551Be"; @@ -10,13 +11,13 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//LUSD - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT '0x6f80310CA7F2C654691D1383149Fa1A57d8AB1f8',//SILO - '0x2e9d63788249371f1DFC918a52f8d799F4a38C94',//TOKE + ADDRESSES.ethereum.TOKE,//TOKE ], owners: [shaTreasury], ownTokens: [FOX], diff --git a/projects/treasury/shibui.js b/projects/treasury/shibui.js index b0285ed1b1..851bc8f5d4 100644 --- a/projects/treasury/shibui.js +++ b/projects/treasury/shibui.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const CHAINS = ["boba"]; const Boba_SHIBUI = "0xf08ad7c3f6b1c6843ba027ad54ed8ddb6d71169b"; -const Boba_BOBA = "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7"; -const Boba_USDT = "0x5de1677344d3cb0d7d465c10b72a8f60699c062d"; +const Boba_BOBA = ADDRESSES.boba.BOBA; +const Boba_USDT = ADDRESSES.boba.USDT; const Boba_SHIBUI_WETH = "0xcE9F38532B3d1e00a88e1f3347601dBC632E7a82"; const Boba_SHIBUI_USDT = "0x3f714fe1380ee2204ca499d1d8a171cbdfc39eaa"; const Boba_4Koyo = "0xDAb3Fc342A242AdD09504bea790f9b026Aa1e709"; diff --git a/projects/treasury/spartacus.js b/projects/treasury/spartacus.js index 3a6aec1432..b81b51ec62 100644 --- a/projects/treasury/spartacus.js +++ b/projects/treasury/spartacus.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const sparTreasury1 = "0x8CFA87aD11e69E071c40D58d2d1a01F862aE01a8"; @@ -9,8 +10,8 @@ module.exports = treasuryExports({ fantom: { tokens: [ nullAddress, - '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E',//DAI - '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83',//WFTM + ADDRESSES.fantom.DAI,//DAI + ADDRESSES.fantom.WFTM,//WFTM ], owners: [sparTreasury1], ownTokens: [SPA], diff --git a/projects/treasury/spookyswap.js b/projects/treasury/spookyswap.js index 6b1351d9d1..3df62f4649 100644 --- a/projects/treasury/spookyswap.js +++ b/projects/treasury/spookyswap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const multisig = "0x1A11f5DF739bEca4974aCE4d8E5CE5ef5D854889"; @@ -6,11 +7,11 @@ module.exports = treasuryExports({ fantom: { tokens: [ nullAddress, - "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", // DAI + ADDRESSES.fantom.DAI, // DAI "0x74b23882a30290451A17c44f4F05243b6b58C76d", // ETH "0xF24Bcf4d1e507740041C9cFd2DddB29585aDCe1e", // BEETS - "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", // WFTM - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", // USDC + ADDRESSES.fantom.WFTM, // WFTM + ADDRESSES.fantom.USDC, // USDC ], owners: [multisig], ownTokens: ["0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE"], diff --git a/projects/treasury/stakedao.js b/projects/treasury/stakedao.js index 45298c3f5d..081783476f 100644 --- a/projects/treasury/stakedao.js +++ b/projects/treasury/stakedao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const eth = "0xF930EBBd05eF8b25B1797b9b2109DDC9B0d43063"; @@ -6,21 +7,21 @@ const avax = "0x69D6C2ACb2485D629E184BC4E1DD972D8DDD8669"; const ethTokens = [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.USDC, // USDC "0x31429d1856aD1377A8A0079410B297e1a9e214c2", // ANGLE - "0xD533a949740bb3306d119CC777fa900bA034cd52", // CRV + ADDRESSES.ethereum.CRV, // CRV "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", // 3CRV "0xc2544A32872A91F4A553b404C6950e89De901fdb", // FPIS "0xba100000625a3754423978a60c9317c58a424e3D", // BAL "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", // ALCX - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH + ADDRESSES.ethereum.WETH, // WETH "0x65Ef703f5594D2573eb71Aaf55BC0CB548492df4", // MULTI "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8", // agEUR "0xcAfE001067cDEF266AfB7Eb5A286dCFD277f3dE5", // PSP "0x4104b135DBC9609Fc1A9490E61369036497660c8", // APW - "0x514910771AF9Ca656af840dff83E8264EcF986CA", // LINK + ADDRESSES.ethereum.LINK, // LINK "0x579CEa1889991f68aCc35Ff5c3dd0621fF29b0C9", // IQ - "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", // AAVE + ADDRESSES.ethereum.AAVE, // AAVE "0x1b40183EFB4Dd766f11bDa7A7c3AD8982e998421", // VSP "0x6f80310CA7F2C654691D1383149Fa1A57d8AB1f8", // SILO "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", // FRAX3CRV-f diff --git a/projects/treasury/stargate.js b/projects/treasury/stargate.js index 6375e38706..9fc4f752db 100644 --- a/projects/treasury/stargate.js +++ b/projects/treasury/stargate.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const eth = "0x65bb797c2B9830d891D87288F029ed8dACc19705"; @@ -13,7 +14,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.USDC, // USDC "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", // 3CRV DAI/USDC/USDT "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", // cvxCRV @@ -21,7 +22,7 @@ module.exports = treasuryExports({ "0xFCc5c47bE19d06BF83eB04298b026F81069ff65b", // yCRV "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", // auraBAl "0xA13a9247ea42D743238089903570127DdA72fE44", // bb-a-USD - "0xFEEf77d3f69374f66429C91d732A244f074bdf74", // cvxFXS + ADDRESSES.ethereum.cvxFXS, // cvxFXS "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC", // crvFRAX "0xfA0F307783AC21C39E939ACFF795e27b650F6e68", // S*FRAX "0x0Faf1d2d3CED330824de3B8200fc8dc6E397850d", // S*DAI @@ -49,7 +50,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0x55d398326f99059fF775485246999027B3197955", // BSC_USD + ADDRESSES.bsc.USDT, // BSC_USD "0x98a5737749490856b401DB5Dc27F522fC314A4e1", // S*BUSD "0x4e145a589e4c03cBe3d28520e4BF3089834289Df", // S*USDD "0x7BfD7f2498C4796f10b6C611D9db393D3052510C", // S*MAI @@ -65,7 +66,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x1c272232Df0bb6225dA87f4dEcD9d37c32f63Eea", // S*FRAX - "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", // USDC + ADDRESSES.avax.USDC, // USDC "0x8736f92646B2542B3e5F3c63590cA7Fe313e283B", // S*MAI "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", // S*USDt "0xEAe5c2F6B25933deB62f754f239111413A0A25ef", // S*USDt @@ -80,7 +81,7 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", // USDC + ADDRESSES.polygon.USDC, // USDC "0x1c272232Df0bb6225dA87f4dEcD9d37c32f63Eea", // S*DAI "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", // S*USDT "0x8736f92646B2542B3e5F3c63590cA7Fe313e283B", // S*miMATIC @@ -97,7 +98,7 @@ module.exports = treasuryExports({ owners: [arbitrum], tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC + ADDRESSES.arbitrum.USDC, // USDC "0xaa4BF442F024820B2C28Cd0FD72b82c63e66F56C", // S*FRAX "0xF39B7Be294cB36dE8c510e267B82bb588705d977", // S*MAI "0x915A55e36A01285A14f05dE6e81ED9cE89772f8e", // S*SGETH @@ -113,8 +114,8 @@ module.exports = treasuryExports({ owners: [optimism], tokens: [ nullAddress, - "0x4200000000000000000000000000000000000042", // OP - "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", // USDC + ADDRESSES.optimism.OP, // OP + ADDRESSES.optimism.USDC, // USDC "0x165137624F1f692e69659f944BF69DE02874ee27", // S*DAI "0x368605D9C6243A80903b9e326f1Cddde088B8924", // S*FRAX "0x3533F5e279bDBf550272a199a223dA798D9eff78", // S*LUSD @@ -134,7 +135,7 @@ module.exports = treasuryExports({ owners: [fantom], tokens: [ nullAddress, - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", // USDC + ADDRESSES.fantom.USDC, // USDC "0x12edeA9cd262006cC3C4E77c90d2CD2DD4b1eb97", // S*USDC ], ownTokens: [ @@ -145,7 +146,7 @@ module.exports = treasuryExports({ metis: { owners: [metis], tokens: [ - "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", // METIS + ADDRESSES.metis.Metis, // METIS ], ownTokens: [], }, diff --git a/projects/treasury/sushiswap.js b/projects/treasury/sushiswap.js index f75c0fb68e..ee1e6fcbe8 100644 --- a/projects/treasury/sushiswap.js +++ b/projects/treasury/sushiswap.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const sushiSwapTreasury = "0xe94B5EEC1fA96CEecbD33EF5Baa8d00E4493F4f3"; -const SUSHI = "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2"; +const SUSHI = ADDRESSES.ethereum.SUSHI; module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC ], owners: [sushiSwapTreasury], ownTokens: [SUSHI], diff --git a/projects/treasury/synthetix.js b/projects/treasury/synthetix.js index 68352e66df..4c7988c3b7 100644 --- a/projects/treasury/synthetix.js +++ b/projects/treasury/synthetix.js @@ -1,21 +1,22 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const synthetixTreasury = "0x99f4176ee457afedffcb1839c7ab7a030a5e4a92"; -const SNX = "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"; +const SNX = ADDRESSES.ethereum.SNX; module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B',//CVX - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51',//sUSD - '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32',//LIDO + ADDRESSES.ethereum.LIDO,//LIDO '0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3',//RAD ], owners: [synthetixTreasury], diff --git a/projects/treasury/thales.js b/projects/treasury/thales.js index 8994b94c43..7e81671b66 100644 --- a/projects/treasury/thales.js +++ b/projects/treasury/thales.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x2902E381c9Caacd17d25a2e008db0a9a4687FDBF"; @@ -9,7 +10,7 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + ADDRESSES.arbitrum.USDC, "0x8971dFb268B961a9270632f28B24F2f637c94244" ], owners: [Treasury], diff --git a/projects/treasury/tokemak.js b/projects/treasury/tokemak.js index ee67dbcb2e..267a248281 100644 --- a/projects/treasury/tokemak.js +++ b/projects/treasury/tokemak.js @@ -1,23 +1,24 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x8b4334d4812C530574Bd4F2763FcD22dE94A969B"; const tokens = [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.STETH, // stETH "0x9C4A4204B79dd291D6b6571C5BE8BbcD0622F050", // TCR "0x4104b135DBC9609Fc1A9490E61369036497660c8", // APW "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237", // Uniswap FXS/FRAX LP - "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", // LDO + ADDRESSES.ethereum.LIDO, // LDO "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", // stkCvxCrv "0x04906695D6D12CF5459975d7C3C03356E4Ccd460", // sOHM ]; const ownTokens = [ - "0x2e9d63788249371f1DFC918a52f8d799F4a38C94", // TOKE + ADDRESSES.ethereum.TOKE, // TOKE ]; module.exports = treasuryExports({ diff --git a/projects/treasury/tokenIon.js b/projects/treasury/tokenIon.js index 6372f32379..17d29fb2aa 100644 --- a/projects/treasury/tokenIon.js +++ b/projects/treasury/tokenIon.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); // Receives rewards/fee from AMM wrapper via reward distributor on WETH shape, some are sold for LON... @@ -6,28 +7,28 @@ const MULTISIG_ONE = "0x3557BD3d422300198719710Cc3f00194E1c20A46"; module.exports = { ethereum: { tvl: (_, block) => sumTokens2({ owner: MULTISIG_ONE, tokens: [ - '0xdac17f958d2ee523a2206206994597c13d831ec7', + ADDRESSES.ethereum.USDT, '0x55d31f68975e446a40a2d02ffa4b0e1bfb233c2f', '0x8E870D67F660D95d5be530380D0eC0bd388289E1', //USDP - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', //USDC - '0x0000000000085d4780B73119b644AE5ecd22b376', //TUSD - '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', //UNI - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC - '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', // MATIC - '0x4Fabb145d64652a948d72533023f6E7A623C7C53', // BUSD + ADDRESSES.ethereum.USDC, //USDC + ADDRESSES.ethereum.TUSD, //TUSD + ADDRESSES.ethereum.UNI, //UNI + ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.MATIC, // MATIC + ADDRESSES.ethereum.BUSD, // BUSD '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', // FEI - '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI + ADDRESSES.ethereum.DAI, // DAI '0xba100000625a3754423978a60c9317c58a424e3D', // BAL - '0x4E15361FD6b4BB609Fa63C81A2be19d873717870', // FTM + ADDRESSES.ethereum.FTM, // FTM '0xdd974D5C2e2928deA5F71b9825b8b646686BD200', // KNC - '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', // AAVE - '0xD533a949740bb3306d119CC777fa900bA034cd52', // CRV + ADDRESSES.ethereum.AAVE, // AAVE + ADDRESSES.ethereum.CRV, // CRV '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942', // MANA - '0x514910771AF9Ca656af840dff83E8264EcF986CA', // LINK + ADDRESSES.ethereum.LINK, // LINK '0xc944E90C64B2c07662A292be6244BDf05Cda44a7', // GRT '0xc944E90C64B2c07662A292be6244BDf05Cda44a7', // UMA - '0x6B3595068778DD592e39A122f4f5a5cF09C90fE2', // SUSHI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH + ADDRESSES.ethereum.SUSHI, // SUSHI + ADDRESSES.ethereum.WETH, // WETH '0xE41d2489571d322189246DaFA5ebDe1F4699F498', // zRX '0x408e41876cCCDC0F92210600ef50372656052a38', // ren '0xc00e94Cb662C3520282E6f5717214004A7f26888', // COMP diff --git a/projects/treasury/traderjoe.js b/projects/treasury/traderjoe.js index f84573ab6b..588f8fa391 100644 --- a/projects/treasury/traderjoe.js +++ b/projects/treasury/traderjoe.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const multisig = "0xD858eBAa943b4C2fb06BA0Ba8920A132fd2410eE"; @@ -6,8 +7,8 @@ const multisig3 = "0x8F38558188FAe593E8E6347F124351CF4fDd032D" module.exports = treasuryExports({ avax: { - tokens: [nullAddress, "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"], + tokens: [nullAddress, ADDRESSES.avax.USDC], owners: [multisig, multisig2, multisig3], - ownTokens: ["0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd"], + ownTokens: [ADDRESSES.avax.JOE], }, }); diff --git a/projects/treasury/treasure-dao.js b/projects/treasury/treasure-dao.js index 38320b933b..a82f81614f 100644 --- a/projects/treasury/treasure-dao.js +++ b/projects/treasury/treasure-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); @@ -12,8 +13,8 @@ module.exports = treasuryExports({ ], tokens: [ nullAddress, - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", // USDC - "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", // WETH + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.WETH, // WETH "0xb7e50106a5bd3cf21af210a755f9c8740890a8c9", // SLP ], }, diff --git a/projects/treasury/umamifinance.js b/projects/treasury/umamifinance.js index 97198cb0b6..b52c48690b 100644 --- a/projects/treasury/umamifinance.js +++ b/projects/treasury/umamifinance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const owners = [ @@ -15,11 +16,11 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0x1aDDD80E6039594eE970E5872D247bf0414C8903", // fsGLP - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", // USDT - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", // wETH - "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a", // GMX + ADDRESSES.arbitrum.fsGLP, // fsGLP + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.arbitrum.WETH, // wETH + ADDRESSES.arbitrum.GMX, // GMX "0x55ff62567f09906a85183b866df84bf599a4bf70", // KROM "0x3d9907f9a368ad0a51be60f7da3b97cf940982d8", // GRAIL "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL diff --git a/projects/treasury/uniswap.js b/projects/treasury/uniswap.js index 0ec0d4f49e..d202db5cef 100644 --- a/projects/treasury/uniswap.js +++ b/projects/treasury/uniswap.js @@ -1,21 +1,22 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const uniTreasury1 = "0x1a9c8182c09f50c8318d769245bea52c32be35bc"; const uniTreasury2 = "0x4b4e140D1f131fdaD6fb59C13AF796fD194e4135"; const uniTreasury3 = "0x3D30B1aB88D487B0F3061F40De76845Bec3F1e94"; -const UNI = "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"; +const UNI = ADDRESSES.ethereum.UNI; module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT ], owners: [uniTreasury1, uniTreasury2, uniTreasury3], ownTokens: [UNI], diff --git a/projects/treasury/uwulend.js b/projects/treasury/uwulend.js index 12a2932182..a4c392cab2 100644 --- a/projects/treasury/uwulend.js +++ b/projects/treasury/uwulend.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xc671a6b1415de6549b05775ee4156074731190c6"; @@ -7,10 +8,10 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x29127fE04ffa4c32AcAC0fFe17280ABD74eAC313", // SIFU - "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT - "0x6B175474E89094C44Da98b954EedeAC495271d0F", // DAI + ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.DAI, // DAI "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", // MIM - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // WBTC + ADDRESSES.ethereum.WBTC, // WBTC "0xb95BD0793bCC5524AF358ffaae3e38c3903C7626", // uDAI "0x24959F75d7BDA1884f1Ec9861f644821Ce233c7D", // uUSDT "0x8C240C385305aeb2d5CeB60425AABcb3488fa93d", // uFRAX diff --git a/projects/treasury/velodrome.js b/projects/treasury/velodrome.js index 0dae35b1a1..36a7ae4f26 100644 --- a/projects/treasury/velodrome.js +++ b/projects/treasury/velodrome.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const team = "0xb074ec6c37659525EEf2Fb44478077901F878012"; @@ -5,21 +6,21 @@ const treasury = "0xe7D7ce84D45e43F06cD5CaA1d9c42374b8776fb0"; const tokens = [ nullAddress, - "0x4200000000000000000000000000000000000042", // OP - "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", // USDC - "0x4200000000000000000000000000000000000006", // WETH + ADDRESSES.optimism.OP, // OP + ADDRESSES.optimism.USDC, // USDC + ADDRESSES.tombchain.FTM, // WETH "0x73cb180bf0521828d8849bc8CF2B920918e23032", // USD+ - "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", // sUSD - "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", // sETH + ADDRESSES.optimism.sUSD, // sUSD + ADDRESSES.optimism.sETH, // sETH "0xB153FB3d196A8eB25522705560ac152eeEc57901", // MIM - "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", // USDT + ADDRESSES.optimism.USDT, // USDT "0xd52f94DF742a6F4B4C8b033369fE13A41782Bf44", // L2DAO "0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED", // agEUR "0xc3864f98f2a61A7cAeb95b039D031b4E2f55e0e9", // OpenX "0x61BAADcF22d2565B0F471b291C475db5555e0b76", // AELIN "0x79AF5dd14e855823FA3E9ECAcdF001D99647d043", // jEUR "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819", // LUSD - "0xdFA46478F9e5EA86d57387849598dbFB2e964b02", // MAI + ADDRESSES.moonbeam.MAI, // MAI "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d", // QI "0x9Bcef72be871e61ED4fBbc7630889beE758eb81D", // rETH "0xE3AB61371ECc88534C522922a026f2296116C109", // SPELL diff --git a/projects/treasury/venus.js b/projects/treasury/venus.js index 7f1b6cf420..e4ff6d42de 100644 --- a/projects/treasury/venus.js +++ b/projects/treasury/venus.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const venusTreasury = "0xF322942f644A996A617BD29c16bd7d231d9F35E9"; @@ -11,11 +12,11 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0x55d398326f99059fF775485246999027B3197955',//bsc-usdc - '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',//usdc - '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c',//BTCB + ADDRESSES.bsc.USDT,//bsc-usdc + ADDRESSES.bsc.USDC,//usdc + ADDRESSES.bsc.BTCB,//BTCB '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3',//DAI - '0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B',//BETH + ADDRESSES.bsc.BETH,//BETH ], owners: [venusTreasury], diff --git a/projects/treasury/void.js b/projects/treasury/void.js index 57617017c3..b03ab9f1d1 100644 --- a/projects/treasury/void.js +++ b/projects/treasury/void.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xf0a793024Ac47e421EB8c4673212dfCcE42f4a97"; @@ -11,7 +12,7 @@ module.exports = treasuryExports({ ], tokens: [ nullAddress, - "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", // DAI + ADDRESSES.fantom.DAI, // DAI "0xfC66Ac63D414d3CF3dcdDa9e60742F6E789205e3", // SpookySwap VOID-DAI LP ], }, diff --git a/projects/treasury/volta.js b/projects/treasury/volta.js index 7c2350d65c..7d82d482de 100644 --- a/projects/treasury/volta.js +++ b/projects/treasury/volta.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); @@ -12,12 +13,12 @@ module.exports = treasuryExports({ ], tokens: [ nullAddress, - "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", // USDT - "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", // DAI - "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", // USDC + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.optimism.DAI, // DAI + ADDRESSES.arbitrum.USDC, // USDC "0xd85E038593d7A098614721EaE955EC2022B9B91B", // gDAI "0xd92Be5A1c565Db5256cDD537B875ED46111Bd8b0", // VOLT2USD3CRV-f - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", // WETH + ADDRESSES.arbitrum.WETH, // WETH "0x39ff5098081FBE1ab241c31Fe0a9974FE9891d04", // voltGNS ], }, diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js index 1a33ceb87b..defc625186 100644 --- a/projects/treasury/wonderland.js +++ b/projects/treasury/wonderland.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports, getComplexTreasury } = require("../helper/treasury"); //eth @@ -21,11 +22,11 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT '0xFcF8eda095e37A41e002E266DaAD7efC1579bc0A',//flex '0xdB25f211AB05b1c97D595516F45794528a807ad8',//eurs '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6',//stg @@ -36,7 +37,7 @@ module.exports = treasuryExports({ avax: { tokens: [ nullAddress, - "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",//usdte + ADDRESSES.avax.USDT_e,//usdte "0x39fC9e94Caeacb435842FADeDeCB783589F50f5f",//knc "0x63682bdc5f875e9bf69e201550658492c9763f89",//bsgg ], @@ -46,8 +47,8 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth - "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a",//gmx + ADDRESSES.arbitrum.WETH,//weth + ADDRESSES.arbitrum.GMX,//gmx "0xd2D1162512F927a7e282Ef43a362659E4F2a728F",//sbfGMX ], owners: [TreasuryArbitrum] diff --git a/projects/treasury/y2k.js b/projects/treasury/y2k.js index ae7a891ef8..f757f76f14 100644 --- a/projects/treasury/y2k.js +++ b/projects/treasury/y2k.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', // USDC - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', // WETH - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT - '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', // DAI + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.WETH, // WETH + ADDRESSES.arbitrum.USDT, // USDT + ADDRESSES.optimism.DAI, // DAI '0x569061e2d807881f4a33e1cbe1063bc614cb75a4', '0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c', '0xfb5e6d0c1dfed2ba000fbc040ab8df3615ac329c', diff --git a/projects/treasury/yearn.js b/projects/treasury/yearn.js index 6a86d571a6..006ffcefcb 100644 --- a/projects/treasury/yearn.js +++ b/projects/treasury/yearn.js @@ -1,25 +1,26 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const yearnTreasury = "0x93a62da5a14c80f265dabc077fcee437b1a0efde"; const yearnTreasury1 = "0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52"; const yearnTreasuryarb = "0xb6bc033d34733329971b938fef32fad7e98e56ad" -const YEARN = "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e"; +const YEARN = ADDRESSES.ethereum.YFI; module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490',//3crv - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT - '0xD533a949740bb3306d119CC777fa900bA034cd52',//CRV + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT + ADDRESSES.ethereum.CRV,//CRV '0xba100000625a3754423978a60c9317c58a424e3D',//BAL '0x31429d1856aD1377A8A0079410B297e1a9e214c2',//ANGLE '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51',//sUSD - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC + ADDRESSES.ethereum.WBTC,//WBTC ], owners: [yearnTreasury,yearnTreasury1], ownTokens: [YEARN], diff --git a/projects/trickortreat/index.js b/projects/trickortreat/index.js index e4f3f4abf2..33574c2e1b 100644 --- a/projects/trickortreat/index.js +++ b/projects/trickortreat/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const {addFundsInMasterChef} = require("../helper/masterchef"); const {pool2BalanceFromMasterChefExports} = require("../helper/pool2"); @@ -7,8 +8,8 @@ const masterchef = "0x2755AC6BD7BDbaCbdE08504f45f73D150Ee660F5"; const trick = "0xA5aFce54270D9afA6a80464bBD383BE506888e6A"; const translate = { - "fantom:0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E": "0x6b175474e89094c44da98b954eedeac495271d0f", - "fantom:0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8": "0x514910771af9ca656af840dff83e8264ecf986ca" + ["fantom:" + ADDRESSES.fantom.DAI]: ADDRESSES.ethereum.DAI, + "fantom:0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8": ADDRESSES.ethereum.LINK } const wMEMO = "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b" diff --git a/projects/trisolaris.js b/projects/trisolaris.js index d8be0aecb0..773321a384 100644 --- a/projects/trisolaris.js +++ b/projects/trisolaris.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { getUniTVL } = require('./helper/unknownTokens') const sdk = require('@defillama/sdk') const { sumTokens2 } = require('./helper/unwrapLPs') @@ -16,23 +17,23 @@ async function stableswapTVL(_, _b, { [chain]: block }) { contract: '0x458459E48dbAC0C8Ca83F8D0b7b29FEfE60c3970', tokens: [ '0x5183e1b1091804bc2602586919e6880ac1cf2896', - '0x4988a896b1227218e4a686fde5eabdcabd91571f', - '0xb12bfca5a55806aaf64e99521918a4bf0fc40802', + ADDRESSES.aurora.USDT_e, + ADDRESSES.aurora.USDC_e, ], }, { name: 'USDC/USDT', contract: '0x13e7a001EC72AB30D66E2f386f677e25dCFF5F59', tokens: [ - '0x4988a896b1227218e4a686fde5eabdcabd91571f', - '0xb12bfca5a55806aaf64e99521918a4bf0fc40802', + ADDRESSES.aurora.USDT_e, + ADDRESSES.aurora.USDC_e, ], }, { name: 'nUSD-USDC/USDT', contract: '0x3CE7AAD78B9eb47Fd2b487c463A17AAeD038B7EC', tokens: [ - '0x07379565cd8b0cae7c60dc78e7f601b34af2a21c', + ADDRESSES.aurora.nUSD, ], }, ] diff --git a/projects/tropicalfinance/index.js b/projects/tropicalfinance/index.js index 94b14256e4..b86658f4e0 100644 --- a/projects/tropicalfinance/index.js +++ b/projects/tropicalfinance/index.js @@ -1,18 +1,19 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getUniTVL } = require('../helper/unknownTokens') const { default: BigNumber } = require('bignumber.js'); const { staking } = require('../helper/staking') -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04"; -const DAIQUIRI = "0x24d8d5Cbc14FA6A740c3375733f0287188F8dF3b"; +const WBCH = ADDRESSES.smartbch.WBCH; +const DAIQUIRI = ADDRESSES.smartbch.DAIQUIRI; const MARGARITA = "0xe935C33b314330C773f9A135C0c8D8E857588609"; const FACTORY = "0x138504000feaEd02AD75B1e8BDb904f51C445F4C"; const MASTERCHEF_DAIQUIRI = "0xE4D74Af73114F72bD0172fc7904852Ee2E2b47B0"; const MASTERCHEF_MARGARITA = "0x428a6C7dEEdB7c26948c1e72Bba8d5FB5e7b6B0A" const COREASSETNAME = "bitcoin-cash"; const CHAIN = "smartbch"; -const FLEXUSD = "0x7b2B3C5308ab5b2a1d9a94d20D35CCDf61e05b72"; -const LAW = "0x0b00366fBF7037E9d75E4A569ab27dAB84759302"; +const FLEXUSD = ADDRESSES.smartbch.flexUSD; +const LAW = ADDRESSES.smartbch.LAW; const CLY = "0x7642Df81b5BEAeEb331cc5A104bd13Ba68c34B91"; const bchMasterChef = async (timestamp, ethBlock, {[CHAIN]: block}) => { diff --git a/projects/trufin/index.js b/projects/trufin/index.js index 8e25ed882f..89ea9c5f50 100644 --- a/projects/trufin/index.js +++ b/projects/trufin/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require('./abi.json') const TRUSTAKE_CONTRACT_ADDR = "0xcfab8530ccf1f9936daede537d6ebbc75289006d" -const MATIC_TOKEN_ADDR = "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0" +const MATIC_TOKEN_ADDR = ADDRESSES.ethereum.MATIC async function tvl(timestamp, block, chainBlocks, { api }) { const totalShares = (await api.call({ abi: abi.totalShares, target: TRUSTAKE_CONTRACT_ADDR, })) diff --git a/projects/trustswap/index.js b/projects/trustswap/index.js index 958bbb7945..56d6468f50 100644 --- a/projects/trustswap/index.js +++ b/projects/trustswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -5,9 +6,9 @@ const staking_contract = "0x5A753021CE28CBC5A7c51f732ba83873D673d8cC"; const assets = [ // other tokens which probably for some reason was sent to the contract accidentally - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.UNI, ]; const stakingTvl = async (timestamp, ethBlock, chainBlocks) => { diff --git a/projects/typhoon.js b/projects/typhoon.js index 1f199ec80e..e919f9fe1e 100644 --- a/projects/typhoon.js +++ b/projects/typhoon.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require('@defillama/sdk'); const tornado = '0x9cDb933eDab885bB767658B9ED5C3800bc1d761B'; const reserve = '0xC9B4Dff1ce5384C7014579099e63EA0092e14eD5'; -const weth = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'; +const weth = ADDRESSES.ethereum.WETH; async function tvl(timestamp, block) { return { [weth] : Number((await sdk.api.eth.getBalance({ diff --git a/projects/tzwrap/tokens.js b/projects/tzwrap/tokens.js index 13277cf574..4a9de54197 100644 --- a/projects/tzwrap/tokens.js +++ b/projects/tzwrap/tokens.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // info taken from https://indexer.app.tzwrap.com/v1/configuration module.exports = [ @@ -5,126 +6,126 @@ module.exports = [ "ethereumSymbol": "LEO", "ethereumName": "Bitfinex LEO Token", "ethereumContractAddress": "0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "BUSD", "ethereumName": "Binance USD", - "ethereumContractAddress": "0x4fabb145d64652a948d72533023f6e7a623c7c53", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.BUSD, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e }, { "ethereumSymbol": "LINK", "ethereumName": "ChainLink Token", - "ethereumContractAddress": "0x514910771af9ca656af840dff83e8264ecf986ca", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.LINK, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e }, { "ethereumSymbol": "DAI", "ethereumName": "Dai Stablecoin", - "ethereumContractAddress": "0x6b175474e89094c44da98b954eedeac495271d0f", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.DAI, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e }, { "ethereumSymbol": "SUSHI", "ethereumName": "SushiToken", - "ethereumContractAddress": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "ethereumContractAddress": ADDRESSES.ethereum.SUSHI, + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "HT", "ethereumName": "Huobi Token", "ethereumContractAddress": "0x6f259637dcd74c767781e37bc6133cd6a68aa161", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "OKB", "ethereumName": "OKB", "ethereumContractAddress": "0x75231f58b43240c9718dd58b4967c5114342a86c", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "AAVE", "ethereumName": "Aave Token", - "ethereumContractAddress": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "ethereumContractAddress": ADDRESSES.ethereum.AAVE, + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "PAX", "ethereumName": "Paxos Standard", "ethereumContractAddress": "0x8e870d67f660d95d5be530380d0ec0bd388289e1", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "MKR", "ethereumName": "Maker", - "ethereumContractAddress": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "ethereumContractAddress": ADDRESSES.ethereum.MKR, + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "HUSD", "ethereumName": "HUSD", "ethereumContractAddress": "0xdf574c24545e5ffecb9a659c229253d4111d87e1", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "UNI", "ethereumName": "Uniswap", - "ethereumContractAddress": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "ethereumContractAddress": ADDRESSES.ethereum.UNI, + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "WBTC", "ethereumName": "Wrapped BTC", - "ethereumContractAddress": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.WBTC, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e }, { "ethereumSymbol": "FTT", "ethereumName": "FTX Token", "ethereumContractAddress": "0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "MATIC", "ethereumName": "Matic Token", - "ethereumContractAddress": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.MATIC, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e }, { "ethereumSymbol": "CRO", "ethereumName": "Crypto.com Coin", "ethereumContractAddress": "0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "USDC", "ethereumName": "USD Coin", - "ethereumContractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.USDC, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e }, { "ethereumSymbol": "CEL", "ethereumName": "Celsius Network", "ethereumContractAddress": "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "COMP", "ethereumName": "Compound", "ethereumContractAddress": "0xc00e94cb662c3520282e6f5717214004a7f26888", - "tezosWrappingContract": "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ" + "tezosWrappingContract": ADDRESSES.tezos.AAVE }, { "ethereumSymbol": "WETH", "ethereumName": "Wrapped Ether", - "ethereumContractAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.WETH, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e }, { "ethereumSymbol": "USDT", "ethereumName": "Tether USD", - "ethereumContractAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "tezosWrappingContract": "KT1UsSfaXyqcjSVPeiD7U1bWgKy3taYN7NWY" + "ethereumContractAddress": ADDRESSES.ethereum.USDT, + "tezosWrappingContract": ADDRESSES.tezos.WETH_e } ] \ No newline at end of file diff --git a/projects/ubiquitydao/index.js b/projects/ubiquitydao/index.js index c66363cdce..7b31e8314d 100644 --- a/projects/ubiquitydao/index.js +++ b/projects/ubiquitydao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const crvPool = "0x20955CB69Ae1515962177D164dfC9522feef567E"; @@ -25,7 +26,7 @@ async function tvl(timestamp, block) { poolBalances.forEach((p) => { let token = p.input.target; if (token === "0x0F644658510c95CB46955e55D7BA9DDa9E9fBEc6") { - token = "0x6b175474e89094c44da98b954eedeac495271d0f"; + token = ADDRESSES.ethereum.DAI; } sdk.util.sumSingleBalance(balances, token, p.output); }); diff --git a/projects/ultronStakingHub/index.js b/projects/ultronStakingHub/index.js index 8a513d3f66..28d215e849 100644 --- a/projects/ultronStakingHub/index.js +++ b/projects/ultronStakingHub/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/unknownTokens') @@ -7,7 +8,7 @@ module.exports = { tvl: () => ({}), staking: staking({ owner: '0xd130811147bb87f313c555e5281b94b9e71b480a', - tokens: ['0x3a4F06431457de873B588846d139EC0d86275d54'], + tokens: [ADDRESSES.ultron.wULX], chain: 'ultron' }) } diff --git a/projects/ultronSwap/index.js b/projects/ultronSwap/index.js index 18e1c342a9..4c19a4bba6 100644 --- a/projects/ultronSwap/index.js +++ b/projects/ultronSwap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') module.exports = { @@ -10,7 +11,7 @@ module.exports = { }), staking: staking({ owner: '0xf26E50c26Ed51AbeC4078380Ed1F13440011F2A1', - tokens: ['0x3a4F06431457de873B588846d139EC0d86275d54'], + tokens: [ADDRESSES.ultron.wULX], chain: 'ultron' }) } diff --git a/projects/umamifinance/index.js b/projects/umamifinance/index.js index 25d26ca0e0..4931358fc5 100644 --- a/projects/umamifinance/index.js +++ b/projects/umamifinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require("../helper/staking"); const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); @@ -11,7 +12,7 @@ const OHM_STAKING_sUMAMI = "0xc9ecFeF2fac1E38b951B8C5f59294a8366Dfbd81"; // glpUSDC vault is now deprecated const glpUSDC = "0x2e2153fd13459eba1f277ab9acd624f045d676ce"; const glpInitBlock = 18703806; -const USDC = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"; +const USDC = ADDRESSES.arbitrum.USDC; module.exports = { doublecounted: true, diff --git a/projects/unamano/index.js b/projects/unamano/index.js index 397994c351..8b64744266 100644 --- a/projects/unamano/index.js +++ b/projects/unamano/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const abis = { @@ -9,7 +10,7 @@ module.exports = { ethereum:{ tvl: async (_, b, cb, { api }) => { const info = await api.fetchList({ lengthAbi: abis.poolLength, itemAbi: abis.poolInfo, target: '0x078aadff42c94b01f135b0ab1d4b794902c67c3f'}) - return sumTokens2({ api, tokens: ['0xae7ab96520de3a18e5e111b5eaab095312d7fe84'], owners: info.map(i => i.una.assetManagementAddr)}) + return sumTokens2({ api, tokens: [ADDRESSES.ethereum.STETH], owners: info.map(i => i.una.assetManagementAddr)}) }, }, } diff --git a/projects/unbk/fantom-yields.js b/projects/unbk/fantom-yields.js index 8fff40fe1e..9112413a9b 100644 --- a/projects/unbk/fantom-yields.js +++ b/projects/unbk/fantom-yields.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { fyields: [ { - yieldBearingAsset: "0x82f0B8B456c1A451378467398982d4834b6829c1", //MIM + yieldBearingAsset: ADDRESSES.fantom.MIM, //MIM yieldProxy: "0xf730167FC2aF7a02db63d3e8CE54179A70Ea72b7", chain: "fantom", router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", }, { - yieldBearingAsset: "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", //WFTM + yieldBearingAsset: ADDRESSES.fantom.WFTM, //WFTM yieldProxy: "0xa6Dd261D8801457d4B66a6b5C262E04931C36E99", chain: "fantom", router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", @@ -25,7 +26,7 @@ module.exports = { router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", }, { - yieldBearingAsset: "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", //USDC + yieldBearingAsset: ADDRESSES.fantom.USDC, //USDC yieldProxy: "0xc0Cf1846134D90CDA5eC8244fe8c992F7A96500F", chain: "fantom", router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", @@ -37,13 +38,13 @@ module.exports = { router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", }, { - yieldBearingAsset: "0x049d68029688eAbF473097a2fC38ef61633A3C7A", //fUSDT + yieldBearingAsset: ADDRESSES.fantom.fUSDT, //fUSDT yieldProxy: "0xD30303241c53097FEa1f6D75f4f0a77FEF22d435", chain: "fantom", router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", }, { - yieldBearingAsset: "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", //DAI + yieldBearingAsset: ADDRESSES.fantom.DAI, //DAI yieldProxy: "0xf58e5571FaEB95C703e0eBb4fDFC2eb7dB18FC53", chain: "fantom", router: "0xa2E7017FA7f38BE3eE2F6BBcA09BDBF286Bb46DD", diff --git a/projects/unfederalreserve/index.js b/projects/unfederalreserve/index.js index 0796d56e0b..baf5f92b33 100644 --- a/projects/unfederalreserve/index.js +++ b/projects/unfederalreserve/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {fullCoumpoundExports} = require('../helper/compound') -module.exports=fullCoumpoundExports("0x3105D328c66d8d55092358cF595d54608178E9B5", "ethereum", "0xFaCecE87e14B50eafc85C44C01702F5f485CA460", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2") \ No newline at end of file +module.exports=fullCoumpoundExports("0x3105D328c66d8d55092358cF595d54608178E9B5", "ethereum", "0xFaCecE87e14B50eafc85C44C01702F5f485CA460", ADDRESSES.ethereum.WETH) \ No newline at end of file diff --git a/projects/unicrypt/config.js b/projects/unicrypt/config.js index 27173207d1..bf1944cc9a 100644 --- a/projects/unicrypt/config.js +++ b/projects/unicrypt/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') // const { ethereum } = require(".") const { getNumLockedTokens, getLockedTokenAtIndex, @@ -24,7 +25,7 @@ const { getNumLockedTokens, getLockedTokenAtIndex, const tokens = { uncx_eth: '0xaDB2437e6F65682B85F814fBc12FeC0508A7B1D0', - weth: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' + weth: ADDRESSES.ethereum.WETH } const governanceTokens = { // UNCX diff --git a/projects/unidex/index.js b/projects/unidex/index.js index dae1dc8ddf..8ba83dba56 100644 --- a/projects/unidex/index.js +++ b/projects/unidex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') async function FantomTvl(_time, _ethBlock, { fantom: block }) { @@ -6,8 +7,8 @@ async function FantomTvl(_time, _ethBlock, { fantom: block }) { "usdcPool": "0x7A494C755911Ce06444C47248108439a06Ac028C", "daiPool": "0xc451df1b05828519c014cb967ef1a614bd41834d", }; - const usdc = "0x04068da6c83afcfa0e13ba15a6696662335d5b75"; - const dai = "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E"; + const usdc = ADDRESSES.fantom.USDC; + const dai = ADDRESSES.fantom.DAI; const chain = 'fantom' const tokens = [usdc, dai, nullAddress] const owners = Object.values(contracts) @@ -29,7 +30,7 @@ async function MetisTvl(_time, _ethBlock, { metis: block }) { "metisPool": "0x9Ba3db52BC401F4EF8ba23e56268C3AdE0290837", "wethPool": "0xb3D7D548dA38Dac2876Da57842a3cbaaf9a3bD96", }; - const weth = "0x420000000000000000000000000000000000000a"; + const weth = ADDRESSES.metis.WETH; const chain = 'metis' const tokens = [weth, nullAddress] const owners = Object.values(contracts) @@ -40,7 +41,7 @@ async function OpTvl(_time, _ethBlock, { optimism: block }) { const contracts = { "daiPool": "0xCdDF71750E596b4C38785afFEc3bd4C9bff43f6F", }; - const dai = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"; + const dai = ADDRESSES.optimism.DAI; const chain = 'optimism' const tokens = [dai] const owners = Object.values(contracts) @@ -51,7 +52,7 @@ async function zkSyncTvl(_time, _ethBlock, { era: block }) { const contracts = { "usdcPool": "0xa41A6a4A04E711B53a82E594CeB525e89206627A", }; - const usdc = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; + const usdc = ADDRESSES.era.USDC; const chain = 'era' const tokens = [usdc] const owners = Object.values(contracts) @@ -62,7 +63,7 @@ async function BscTvl(_time, _ethBlock, { bsc: block }) { const contracts = { "busdPool": "0xa8D4bd632f394CED42BD439Bc34F09198072e519", }; - const busd = "0xe9e7cea3dedca5984780bafc599bd69add087d56"; + const busd = ADDRESSES.bsc.BUSD; const chain = 'bsc' const tokens = [busd] const owners = Object.values(contracts) diff --git a/projects/unifi-protocol/index.js b/projects/unifi-protocol/index.js index 1c08c6e170..bec9285299 100644 --- a/projects/unifi-protocol/index.js +++ b/projects/unifi-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { staking } = require('../helper/staking') const { getTokenBalance } = require('../helper/chain/tron'); @@ -73,7 +74,7 @@ const dexExports = { tron: { tvl: async () => { return { - "tether": await getTokenBalance('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'), + "tether": await getTokenBalance(ADDRESSES.tron.USDT, 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'), "tron": await getTokenBalance('TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR', 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'), } } diff --git a/projects/union-finance/index.js b/projects/union-finance/index.js index 2c1d587f8b..531aabed72 100644 --- a/projects/union-finance/index.js +++ b/projects/union-finance/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const config = { ethereum: { userManager: "0x49c910Ba694789B58F53BFF80633f90B8631c195", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", + DAI: ADDRESSES.ethereum.DAI, uDAI: "0x954F20DF58347b71bbC10c94827bE9EbC8706887", }, arbitrum: { userManager: "0xb71F3D4342AaE0b8D531E14D2CF2F45d6e458A5F", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", + DAI: ADDRESSES.ethereum.DAI, uDAI: "0x954F20DF58347b71bbC10c94827bE9EbC8706887", }, }; diff --git a/projects/unipower/index.js b/projects/unipower/index.js index e0767b8c94..7d582b450f 100644 --- a/projects/unipower/index.js +++ b/projects/unipower/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); @@ -8,7 +9,7 @@ const POWER_eth = "0xF2f9A7e93f845b3ce154EfbeB64fB9346FCCE509"; // ETH Prime Part const ethPrimeContract = "0xe40e1531a4B56fB65571AD2ca43Dc0048a316a2D"; -const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const WETH = ADDRESSES.ethereum.WETH; // PowerDAO Part const liquidityVaultContracts = [ diff --git a/projects/uniswap/v1.js b/projects/uniswap/v1.js index 5bac2d56d2..2ddde5bdf0 100644 --- a/projects/uniswap/v1.js +++ b/projects/uniswap/v1.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); const { getLogs } = require('../helper/cache/getLogs') const START_BLOCK = 6627917; const FACTORY = '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95'; -const ETH = '0x0000000000000000000000000000000000000000'.toLowerCase(); +const ETH = ADDRESSES.null.toLowerCase(); async function tvl(timestamp, block, _1, { api }) { const logs = (await getLogs({ diff --git a/projects/unit.js b/projects/unit.js index 461ed89395..0c2f41b667 100644 --- a/projects/unit.js +++ b/projects/unit.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens } = require('./helper/unwrapLPs'); @@ -9,15 +10,15 @@ async function tvl(ts, block) { '0x92e187a03b6cd19cb6af293ba17f2745fd2357d5', '0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44', '0x2ba592F78dB6436527729929AAf6c908497cB200', - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + ADDRESSES.ethereum.WETH, '0x0Ae055097C6d159879521C384F1D2123D1f195e6', - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + ADDRESSES.ethereum.USDC, '0xbC396689893D065F41bc2C6EcbeE5e0085233447', - '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', - '0x4e15361fd6b4bb609fa63c81a2be19d873717870', - '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e', - '0xD533a949740bb3306d119CC777fa900bA034cd52', - '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', + ADDRESSES.ethereum.AAVE, + ADDRESSES.ethereum.FTM, + ADDRESSES.ethereum.YFI, + ADDRESSES.ethereum.CRV, + ADDRESSES.ethereum.SUSHI, '0x4688a8b1f292fdab17e9a90c8bc379dc1dbd8713', '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272', '0xb753428af26e81097e7fd17f40c88aaa3e04902c', @@ -25,10 +26,10 @@ async function tvl(ts, block) { '0x3472A5A71965499acd81997a54BBA8D852C6E53d', '0xc5bddf9843308380375a611c18b50fb9341f502a', //apecrv '0x1337def16f9b486faed0293eb623dc8395dfe46a', //armor - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', //wbtc + ADDRESSES.ethereum.WBTC, //wbtc '0xeb4c2781e4eba804ce9a9803c67d0893436bb27d', //renbtc '0xd291e7a03283640fdc51b121ac401383a46cc623', - '0x6b175474e89094c44da98b954eedeac495271d0f', //dai + ADDRESSES.ethereum.DAI, //dai ]; const toa = tokens.map(t => [t, pool]) return sumTokens({}, toa, block) diff --git a/projects/unitrade/index.js b/projects/unitrade/index.js index 17bf1e9939..9c1c0a8962 100644 --- a/projects/unitrade/index.js +++ b/projects/unitrade/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const gatewayAbi = require("./gateway.abi.json"); @@ -91,7 +92,7 @@ async function tvl(_, block) { const combinedETHBalances = parseInt(ethBalanceGateway) + parseInt(ethBalanceOrderbook); - balances["0x0000000000000000000000000000000000000000"] = combinedETHBalances.toFixed(0); + balances[ADDRESSES.null] = combinedETHBalances.toFixed(0); return balances; } diff --git a/projects/universe/index.js b/projects/universe/index.js index 2a6378f971..6995120515 100644 --- a/projects/universe/index.js +++ b/projects/universe/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const {unwrapUniswapLPs} = require('../helper/unwrapLPs') @@ -5,13 +6,13 @@ const STAKING_ADDRESS = '0x2d615795a8bdb804541C69798F13331126BA0c09'; const USDC_TOKEN = { symbol: 'USDC', - address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + address: ADDRESSES.ethereum.USDC, decimals: 6, }; const AAVE_TOKEN = { symbol: 'AAVE', - address: '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', + address: ADDRESSES.ethereum.AAVE, decimals: 18, }; @@ -29,19 +30,19 @@ const COMP_TOKEN = { const SNX_TOKEN = { symbol: 'SNX', - address: '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f', + address: ADDRESSES.ethereum.SNX, decimals: 18, }; const SUSHI_TOKEN = { symbol: 'SUSHI', - address: '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', + address: ADDRESSES.ethereum.SUSHI, decimals: 18, }; const LINK_TOKEN = { symbol: 'LINK', - address: '0x514910771af9ca656af840dff83e8264ecf986ca', + address: ADDRESSES.ethereum.LINK, decimals: 18, }; diff --git a/projects/uniwhale/index.js b/projects/uniwhale/index.js index 5c7e70b1ac..d384ff2f86 100644 --- a/projects/uniwhale/index.js +++ b/projects/uniwhale/index.js @@ -1,4 +1,5 @@ -const USDT = "0x55d398326f99059fF775485246999027B3197955"; +const ADDRESSES = require('../helper/coreAssets.json') +const USDT = ADDRESSES.bsc.USDT; const UNIWHALE_LIQUIDITY_POOL = "0xBdeCAFd9096D43616a8E0eB8F3fa0865fD4769E7"; const UNIWHALE_MARGIN_POOL = "0xBB1B941aB76fAE4e9F552B860eFaC1F367AC9bCc"; const { sumTokensExport } = require('../helper/unwrapLPs') diff --git a/projects/unore/index.js b/projects/unore/index.js index 59d0d61429..5c753ee175 100644 --- a/projects/unore/index.js +++ b/projects/unore/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') const ethSSIPEth = '0x29B4b8674D93b36Bf651d0b86A8e5bE3c378aCF4' @@ -8,8 +9,8 @@ const config = { uToken: '0x474021845c4643113458ea4414bdb7fb74a01a77', tokensAndOwners: [ [nullAddress, ethSSIPEth], - ['0xdac17f958d2ee523a2206206994597c13d831ec7', '0x920d510d5c70c01989b66f4e24687dddb988ddae'], - ['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xfdfaa453ef3709d2c26ecf43786a14ab8bf27e36'], + [ADDRESSES.ethereum.USDT, '0x920d510d5c70c01989b66f4e24687dddb988ddae'], + [ADDRESSES.ethereum.USDC, '0xfdfaa453ef3709d2c26ecf43786a14ab8bf27e36'], ], pools: [ '0x1eECc8C8298ed9Bd46c147D44E2D7A7BfACE2034', // UNO SSRP @@ -21,11 +22,11 @@ const config = { bsc: { uToken: '0x474021845C4643113458ea4414bdb7fB74A01A77', tokensAndOwners: [ - ['0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', '0xEcE9f1A3e8bb72b94c4eE072D227b9c9ba4cd750'], - ['0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', '0x0b5C802ecA88161B5daed08e488C83d819a0cD02'], - ['0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', '0x2cd32dF1C436f8dE6e09d1A9851945c56bcEd32a'], - ['0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', '0xFC9a02a13B19F65219034AB03ADcD8CAdf275f35'], - ['0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', '0x456d60a7E2a2DA97BDb43759Cf63f7acbC3a700a'], + [ADDRESSES.bsc.USDC, '0xEcE9f1A3e8bb72b94c4eE072D227b9c9ba4cd750'], + [ADDRESSES.bsc.USDC, '0x0b5C802ecA88161B5daed08e488C83d819a0cD02'], + [ADDRESSES.bsc.USDC, '0x2cd32dF1C436f8dE6e09d1A9851945c56bcEd32a'], + [ADDRESSES.bsc.USDC, '0xFC9a02a13B19F65219034AB03ADcD8CAdf275f35'], + [ADDRESSES.bsc.USDC, '0x456d60a7E2a2DA97BDb43759Cf63f7acbC3a700a'], ], pools: [ '0xFC9a02a13B19F65219034AB03ADcD8CAdf275f35', // Zeus V2 @@ -35,7 +36,7 @@ const config = { kava: { tokensAndOwners: [ [nullAddress, kavaSSIPKava], - ['0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', '0x6cEC77829F474b56c327655f3281739De112B019'], + [ADDRESSES.telos.ETH, '0x6cEC77829F474b56c327655f3281739De112B019'], ] } } diff --git a/projects/unusdao/index.js b/projects/unusdao/index.js index a364d66d35..0b0855278c 100644 --- a/projects/unusdao/index.js +++ b/projects/unusdao/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const udo = "0xB91Ec4F9D7D12A1aC145A7Ae3b78AFb45856C9c8"; const treasuryContract = "0x01CDdb5C0986B8521F93A9A5C6d84D6994a82742"; const stakingContract = "0xC34AF465Aac5928afec7e3642BD8Ca7873a7F2b2"; -const busd = "0xe9e7cea3dedca5984780bafc599bd69add087d56"; -const usdt = "0x55d398326f99059ff775485246999027b3197955"; +const busd = ADDRESSES.bsc.BUSD; +const usdt = ADDRESSES.bsc.USDT; const udoBusd = "0x364952dC20b5720b7fd3e73141cF6A85d9af8643"; module.exports = { diff --git a/projects/v3s-finance/index.js b/projects/v3s-finance/index.js index e6a8449fb3..b2a10dca2b 100644 --- a/projects/v3s-finance/index.js +++ b/projects/v3s-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { addFundsInMasterChef } = require("../helper/masterchef"); const { stakingUnknownPricedLP, stakingPricedLP } = require("../helper/staking"); const farmUtils = require("./farm-utils"); @@ -14,7 +15,7 @@ const v3sVvspAddress = "0x57b975364140e4a8d1C96FAa00225b855BaB0E8E"; const vShareCroAddress = "0xcb0704BC4E885384ac96F0ED22B9204C3adD91AD" const vShareRewardsAddr = "0x569608516A81C0B1247310A3E0CD001046dA0663"; -const usdc = "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59".toLowerCase(); +const usdc = ADDRESSES.cronos.USDC.toLowerCase(); async function tvl(timestamp, block, chainBlocks) { let balances = {}; diff --git a/projects/vee-finance/index.js b/projects/vee-finance/index.js index 9f16299229..e8b32ad3ef 100644 --- a/projects/vee-finance/index.js +++ b/projects/vee-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {getCompoundV2Tvl} = require('../helper/compound') const sdk = require('@defillama/sdk') @@ -7,16 +8,16 @@ module.exports={ tvl: sdk.util.sumChainTvls([ //V1&V2 on Avalanche getCompoundV2Tvl("0xA67DFeD73025b0d61F2515c531dd8D25D4Cfd0Db", "avax", addr=>`avax:${addr}`), - getCompoundV2Tvl("0x43AAd7d8Bc661dfA70120865239529ED92Faa054", "avax", addr=>`avax:${addr}`, "0x6481490DBb6Bd0e8b7CB7E1317470f6d08aDa5A2", "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"), + getCompoundV2Tvl("0x43AAd7d8Bc661dfA70120865239529ED92Faa054", "avax", addr=>`avax:${addr}`, "0x6481490DBb6Bd0e8b7CB7E1317470f6d08aDa5A2", ADDRESSES.avax.WAVAX), getCompoundV2Tvl("0xAF7f6F7a1295dEDF52a01F5c3f04Ad1b502CdA6a", "avax", addr=>`avax:${addr}`), - getCompoundV2Tvl("0xeEf69Cab52480D2BD2D4A3f3E8F5CcfF2923f6eF", "avax", addr=>`avax:${addr}`, "0x125605c515e3f75CAd62d3613c97A76F13d73A64", "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"), + getCompoundV2Tvl("0xeEf69Cab52480D2BD2D4A3f3E8F5CcfF2923f6eF", "avax", addr=>`avax:${addr}`, "0x125605c515e3f75CAd62d3613c97A76F13d73A64", ADDRESSES.avax.WAVAX), ]) }, heco: { tvl: sdk.util.sumChainTvls([ //V1 on Heco getCompoundV2Tvl("0x484C6e804cD4Cc27fCFbCf06748d6b4BCA47db84", "heco", addr=>`heco:${addr}`), - getCompoundV2Tvl("0x2a144ACaef8fb9258e4f2c2018945a76fE7342E2", "heco", addr=>`heco:${addr}`, "0x0F75aBfef98dAaa7A8170ddA97c8100a65ABA3cC", "0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F"), + getCompoundV2Tvl("0x2a144ACaef8fb9258e4f2c2018945a76fE7342E2", "heco", addr=>`heco:${addr}`, "0x0F75aBfef98dAaa7A8170ddA97c8100a65ABA3cC", ADDRESSES.heco.WHT), ]) } } diff --git a/projects/vela-exchange/index.js b/projects/vela-exchange/index.js index 33411b30c0..1b58d46f33 100644 --- a/projects/vela-exchange/index.js +++ b/projects/vela-exchange/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking") module.exports = { methodology: "Counts USDC deposited to trade and to mint VLP. Staking counts VELA deposited to earn eVELA", arbitrum: { - tvl: staking('0x5957582f020301a2f732ad17a69ab2d8b2741241', '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8'), + tvl: staking('0x5957582f020301a2f732ad17a69ab2d8b2741241', ADDRESSES.arbitrum.USDC), staking: staking('0xfC527781Ae973f8131dC26dDDb2Adb080c1C1F59', '0x088cd8f5eF3652623c22D48b1605DCfE860Cd704'), }, hallmarks: [ diff --git a/projects/velaro/index.js b/projects/velaro/index.js index 4224944c97..f82eb66d54 100644 --- a/projects/velaro/index.js +++ b/projects/velaro/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const chain = 'velas' module.exports = { @@ -5,15 +6,15 @@ module.exports = { tvl: async (_, _b, { [chain]: block }) => { return sumTokens2({ tokensAndOwners: [ - ['0xe41c4324dCbD2926481101f8580D13930AFf8A75', '0xbd183a60274289A7c20250a890500D2a37dEf319'], // VLX + [ADDRESSES.velas.WVLX, '0xbd183a60274289A7c20250a890500D2a37dEf319'], // VLX ['0xaBf26902Fd7B624e0db40D31171eA9ddDf078351', '0x2Fee5293050FFfC3bd583d59f077e2b4900F57c8'], // WAG - ['0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C', '0x899F26dc6Bc085fb9cB82AAdF25Db8820F272ED4'], // WBTC + [ADDRESSES.moonriver.ETH, '0x899F26dc6Bc085fb9cB82AAdF25Db8820F272ED4'], // WBTC ['0x7b714BC5dD176EaA198fe6C07E415a87A40dc858', '0x7171d1E1097d726E5f4BBc8236A8E108E21024e3'], // WAG_VLXVDGT ['0x72eB7CA07399Ec402c5b7aa6A65752B6A1Dc0C27', '0x1e217990818518Dc37B0fFA2ffE3AA110b02F18c'], // ASTRO - ['0x2B8e9cD44C9e09D936149549a8d207c918ecB5C4', '0xc0D16c7Cd5Fc18526Dc78Ea530e56129EB979C96'], // BNB - ['0xc9b3aA6E91d70f4ca0988D643Ca2bB93851F3de4', '0x92C2cA50f74A8Fe36b4DCffB2cc6A274fA61CB34'], // FTM - ['0x6ab0B8C1a35F9F4Ce107cCBd05049CB1Dbd99Ec5', '0xd10f8CD5d56aaa58f59B25C928f372F66899e9B3'], // MATIC - ['0xc111c29A988AE0C0087D97b33C6E6766808A3BD3', '0x4368d9F91C40EA8Ac9F11A4f9289889f56D32Df8'], // BUSD + [ADDRESSES.velas._BNB, '0xc0D16c7Cd5Fc18526Dc78Ea530e56129EB979C96'], // BNB + [ADDRESSES.velas.FTM, '0x92C2cA50f74A8Fe36b4DCffB2cc6A274fA61CB34'], // FTM + [ADDRESSES.velas._MATIC, '0xd10f8CD5d56aaa58f59B25C928f372F66899e9B3'], // MATIC + [ADDRESSES.velas.BUSD, '0x4368d9F91C40EA8Ac9F11A4f9289889f56D32Df8'], // BUSD ], resolveLP: true, chain, block diff --git a/projects/velhalla.js b/projects/velhalla.js index 6dd903b937..7c4ceb9579 100644 --- a/projects/velhalla.js +++ b/projects/velhalla.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const owner = "0x7DeD7f9D3dF541190F666FB6897483e46D54e948"; -const target = "0x8d9fb713587174ee97e91866050c383b5cee6209"; +const target = ADDRESSES.velas.SCAR; async function staking(timestamp, block, chainBlocks) { return { diff --git a/projects/venus.js b/projects/venus.js index 3b89325ac2..29dfd3d48d 100644 --- a/projects/venus.js +++ b/projects/venus.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('./helper/coreAssets.json') const {fullCoumpoundExports} = require('./helper/compound'); const replace = { - "0x250632378e573c6be1ac2f97fcdf00515d0aa91b": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // beth->weth - "0xfb6115445bff7b52feb98650c87f44907e58f802": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", // aave + [ADDRESSES.bsc.BETH]: ADDRESSES.ethereum.WETH, // beth->weth + "0xfb6115445bff7b52feb98650c87f44907e58f802": ADDRESSES.ethereum.AAVE, // aave } -module.exports = fullCoumpoundExports("0xfd36e2c2a6789db23113685031d7f16329158384", "bsc", "0xA07c5b74C9B40447a954e1466938b865b6BBea36", "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", addr=>{ +module.exports = fullCoumpoundExports("0xfd36e2c2a6789db23113685031d7f16329158384", "bsc", "0xA07c5b74C9B40447a954e1466938b865b6BBea36", ADDRESSES.bsc.WBNB, addr=>{ return replace[addr.toLowerCase()] || `bsc:${addr}` }) diff --git a/projects/versedex/index.js b/projects/versedex/index.js index 7c63e3d356..12b7031ab7 100644 --- a/projects/versedex/index.js +++ b/projects/versedex/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') -const FLEXUSD = "0x7b2B3C5308ab5b2a1d9a94d20D35CCDf61e05b72"; -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04"; +const FLEXUSD = ADDRESSES.smartbch.flexUSD; +const WBCH = ADDRESSES.smartbch.WBCH; const SBCH_FACTORY = "0x16bc2B187D7C7255b647830C05a6283f2B9A3AF8"; -const DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; -const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const DAI = ADDRESSES.ethereum.DAI; +const WETH = ADDRESSES.ethereum.WETH; const ETH_FACTORY = "0xee3E9E46E34a27dC755a63e2849C9913Ee1A06E2"; module.exports = { diff --git a/projects/vertex/index.js b/projects/vertex/index.js index 6122e29f19..4dc863f946 100644 --- a/projects/vertex/index.js +++ b/projects/vertex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') const config = { @@ -15,7 +16,7 @@ module.exports = { arbitrum: { tvl: sumTokensExport({ owners: [config.clearinghouse, config.endpoint], - tokens: ['0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8'], + tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC], }) } } \ No newline at end of file diff --git a/projects/vesq/index.js b/projects/vesq/index.js index e646343253..01cf8e6b39 100644 --- a/projects/vesq/index.js +++ b/projects/vesq/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0x8c7290399cecbbbf31e471951cc4c2ce91f5073c" const vsq_token = "0x29f1e986fca02b7e54138c04c4f503dddd250558" const stakingAddress = "0x2f3e9e54bd4513d1b49a6d915f9a83310638cfc2" const treasuryTokens = [ - ["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", false], //DAI + [ADDRESSES.polygon.DAI, false], //DAI ["0x2e1ad108ff1d8c782fcbbb89aad783ac49586756", false], //TUSD ["0xa3fa99a148fa48d14ed51d610c367c61876997f1", false], //MAI ["0x45c32fa6df82ead1e2ef74d17b76547eddfaff89", false], //FRAX diff --git a/projects/vesta/index.js b/projects/vesta/index.js index b2c43ad6ec..a970a8fdfe 100644 --- a/projects/vesta/index.js +++ b/projects/vesta/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { sumBalancerLps, } = require("../helper/unwrapLPs.js"); const { transformArbitrumAddress } = require("../helper/portedTokens"); const VaultTokens = { gOHM: "0x8d9ba570d6cb60c7e3e0f31343efe75ab8e65fb1", - ETH: "0x0000000000000000000000000000000000000000", - renBTC: "0xdbf31df14b66535af65aac99c32e9ea844e14501", + ETH: ADDRESSES.null, + renBTC: ADDRESSES.fantom.renBTC, DPX: "0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55", - GMX: "0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a", + GMX: ADDRESSES.arbitrum.GMX, GLP: "0x2f546ad4edd93b956c8999be404cdcafde3e89ae" } diff --git a/projects/viperswap/index.js b/projects/viperswap/index.js index 6d0b04b688..695e155e56 100644 --- a/projects/viperswap/index.js +++ b/projects/viperswap/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { uniTvlExport } = require("../helper/calculateUniTvl"); const { staking } = require("../helper/staking"); const factory = "0x7d02c116b98d0965ba7b642ace0183ad8b8d2196"; -const viper = "0xea589e93ff18b1a1f1e9bac7ef3e86ab62addc79"; +const viper = ADDRESSES.harmony.VIPER; const xviper = "0xe064a68994e9380250cfee3e8c0e2ac5c0924548"; diff --git a/projects/visor/index.js b/projects/visor/index.js index 6c75ef1154..4e906b0f2d 100644 --- a/projects/visor/index.js +++ b/projects/visor/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const hypervisorAbi = require("./abis/hypervisor.json"); const { staking } = require("../helper/staking"); @@ -36,7 +37,7 @@ const HYPE_REGISTRY = { /* List of bad addresses added to registries that need to be excluded manually */ const blacklist = { - ethereum: ["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"], + ethereum: [ADDRESSES.ethereum.WBTC], polygon: ["0xa9782a2c9c3fb83937f14cdfac9a6d23946c9255"], }; diff --git a/projects/volmex/index.js b/projects/volmex/index.js index f664bd9e6b..257e0d3063 100644 --- a/projects/volmex/index.js +++ b/projects/volmex/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const {sumTokens} = require('../helper/unwrapLPs') -const dai = "0x6b175474e89094c44da98b954eedeac495271d0f" -const usdc = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" +const dai = ADDRESSES.ethereum.DAI +const usdc = ADDRESSES.ethereum.USDC async function eth(timestamp, block) { const balances = {} await sumTokens(balances, [ @@ -14,8 +15,8 @@ async function eth(timestamp, block) { return balances } -const polygonDai = "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063" -const polygonUsdc = "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" +const polygonDai = ADDRESSES.polygon.DAI +const polygonUsdc = ADDRESSES.polygon.USDC async function polygon(timestamp, block, chainBlocks) { const balances = {} await sumTokens(balances, [ @@ -27,8 +28,8 @@ async function polygon(timestamp, block, chainBlocks) { return balances } -const arbitrumDai = "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1" -const arbitrumUsdc = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" +const arbitrumDai = ADDRESSES.optimism.DAI +const arbitrumUsdc = ADDRESSES.arbitrum.USDC async function arbitrum(timestamp, block, chainBlocks) { const balances = {} await sumTokens(balances, [ diff --git a/projects/volta-dao/index.js b/projects/volta-dao/index.js index 43c7b4bca9..07edfae28e 100644 --- a/projects/volta-dao/index.js +++ b/projects/volta-dao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakingUnknownPricedLP } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const sdk = require("@defillama/sdk"); @@ -7,7 +8,7 @@ const ftmToken = "0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"; const ftmStaking = "0xc6a54adddf7463f73a4c5a8e3e480bc798cf8a09"; const ftmTreasury = "0x05ab17e4dfa87ef4ac487ed20cfcc2ae75c2a792"; const ftmTokens = [ - ["0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", false], + [ADDRESSES.fantom.DAI, false], ["0x78b51a1fd7524186982c2cb8982df312b1e896a8", true] ]; @@ -15,7 +16,7 @@ const avaxToken = "0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"; const avaxStaking = "0xfae672012b90cfb6bf245ac072a3aca374604b17"; const avaxTreasury = "0x05ab17e4dfa87ef4ac487ed20cfcc2ae75c2a792"; const avaxTokens = [ - ["0xd586e7f844cea2f87f50152665bcbc2c279d8d70", false], + [ADDRESSES.avax.DAI, false], ["0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8", true] ] @@ -41,8 +42,8 @@ async function tokenPrice(block, chain, lp, unlisted, listed) { async function ftmTvl (timestamp, block, chainBlocks) { let balances = {}; await sumTokensAndLPsSharedOwners(balances, ftmTokens, [ftmTreasury], chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`); - const ratio = await tokenPrice(chainBlocks.fantom, "fantom", "0x78b51a1fd7524186982c2cb8982df312b1e896a8", ftmToken, "0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e"); - sdk.util.sumSingleBalance(balances, "fantom:0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e", BigNumber(balances["fantom:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]).times(ratio).toFixed(0)); + const ratio = await tokenPrice(chainBlocks.fantom, "fantom", "0x78b51a1fd7524186982c2cb8982df312b1e896a8", ftmToken, ADDRESSES.fantom.DAI); + sdk.util.sumSingleBalance(balances, "fantom:" + ADDRESSES.fantom.DAI, BigNumber(balances["fantom:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]).times(ratio).toFixed(0)); delete balances["fantom:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]; return balances; } @@ -50,8 +51,8 @@ async function ftmTvl (timestamp, block, chainBlocks) { async function avaxTvl (timestamp, block, chainBlocks) { let balances = {}; await sumTokensAndLPsSharedOwners(balances, avaxTokens, [avaxTreasury], chainBlocks.avax, "avax", addr=>`avax:${addr}`); - const ratio = await tokenPrice(chainBlocks.avax,"avax", "0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8", avaxToken, "0xd586e7f844cea2f87f50152665bcbc2c279d8d70"); - sdk.util.sumSingleBalance(balances, "avax:0xd586e7f844cea2f87f50152665bcbc2c279d8d70", BigNumber(balances["avax:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]).times(ratio).toFixed(0)); + const ratio = await tokenPrice(chainBlocks.avax,"avax", "0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8", avaxToken, ADDRESSES.avax.DAI); + sdk.util.sumSingleBalance(balances, "avax:" + ADDRESSES.avax.DAI, BigNumber(balances["avax:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]).times(ratio).toFixed(0)); delete balances["avax:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]; return balances; } diff --git a/projects/warpbond/index.js b/projects/warpbond/index.js index efa604cbba..8622bba30e 100644 --- a/projects/warpbond/index.js +++ b/projects/warpbond/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const token = "0x3F46a70adB395cddb81FF9bFE3B62aDae1B44816"; const stakingContract = "0xA828eB4565819d3A134930CffbFD17f3bEE61F6a"; const treasury = "0x64a999BF3405f53074Fe5F89aCB09B5E9b35F5d7"; const treasuryTokens = [ - ["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", false], // DAI + [ADDRESSES.polygon.DAI, false], // DAI ["0xa3fa99a148fa48d14ed51d610c367c61876997f1", false], // miMATIC ["0x2c9aed5b029dfd6b83c1214e528a276f41b8b527", true] // WARP-DAI SLP ] diff --git a/projects/wasabix/index.js b/projects/wasabix/index.js index 9f39ad4a0d..6245ab66c2 100644 --- a/projects/wasabix/index.js +++ b/projects/wasabix/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokens } = require("../helper/unwrapLPs") @@ -7,7 +8,7 @@ const { pool2s } = require('../helper/pool2') const tokens = { dai: { token:'DAI', - address:'0x6b175474e89094c44da98b954eedeac495271d0f', + address:ADDRESSES.ethereum.DAI, decimals:18, correspondingMintableToken: 'waUSD' }, @@ -19,7 +20,7 @@ const tokens = { }, wbtc: { token:'wBTC', - address:'0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + address:ADDRESSES.ethereum.WBTC, decimals:8, correspondingMintableToken: 'waBTC' }, @@ -48,7 +49,7 @@ const tokens = { }, weth: { token:'WETH', - address:'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + address:ADDRESSES.ethereum.WETH, decimals:18, correspondingMintableToken: 'waETH' }, @@ -65,7 +66,7 @@ const tokens = { }, usdc: { token: 'usdc', - address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + address: ADDRESSES.ethereum.USDC, decimals: 6 } } @@ -221,7 +222,7 @@ const tokensPolygon = { }, usdc: { token: 'USDC', - address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', + address: ADDRESSES.polygon.USDC, decimals: 6, }, pusd: { @@ -335,7 +336,7 @@ const tokensBSC = { }, wbnb: { token:'WBNB', - address:'0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', + address:ADDRESSES.bsc.WBNB, decimals:18, correspondingMintableToken: 'waBNB' }, @@ -347,7 +348,7 @@ const tokensBSC = { }, busd: { token: 'BUSD', - address: '0xe9e7cea3dedca5984780bafc599bd69add087d56', + address: ADDRESSES.bsc.BUSD, decimals: 18, correspondingMintableToken: 'waBUSD' } @@ -371,7 +372,7 @@ const collectorsBSC = [ }, ] -const busd = 'bsc:0xe9e7cea3dedca5984780bafc599bd69add087d56' +const busd = 'bsc:' + ADDRESSES.bsc.BUSD async function bsc(timestamp, block, chainBlocks) { let balances = {}; diff --git a/projects/waterloan/index.js b/projects/waterloan/index.js index 678564d2b0..5208580da9 100644 --- a/projects/waterloan/index.js +++ b/projects/waterloan/index.js @@ -1,15 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getV2Reserves, getTvl, getBorrowed } = require("../helper/aave"); const addressesProviderRegistry = { "csc": "0x9D15cf1a8ebF191A0df57fA0362ba535F371883b", "smartbch": "0xF7d79dC3A3e78745abEbE5A0e8d4735F02A854B9" } -const USDT = "0x398dcA951cD4fc18264d995DCD171aa5dEbDa129"; +const USDT = ADDRESSES.csc.USDT; const USDC = "0xF335B2440e62A953a42865aDf7bD73F4C6671A7b"; -const FLEXUSD = "0x7b2B3C5308ab5b2a1d9a94d20D35CCDf61e05b72"; +const FLEXUSD = ADDRESSES.smartbch.flexUSD; const EBEN = "0x77CB87b57F54667978Eb1B199b28a0db8C8E1c0B"; -const WBCH = "0x3743eC0673453E5009310C727Ba4eaF7b3a1cc04"; +const WBCH = ADDRESSES.smartbch.WBCH; const MIST = "0x5fA664f69c2A4A3ec94FaC3cBf7049BD9CA73129"; function waterloan(chain, borrowed) { @@ -42,14 +43,14 @@ function waterloan(chain, borrowed) { } const erc20Map = { - "0xE6f8988d30614afE4F7124b76477Add79c665822": + [ADDRESSES.csc.WCET]: "0x081f67afa0ccf8c7b17540767bbe95df2ba8d97f", // CET "0x1D7C98750A47762FA8B45c6E3744aC6704F44698": "0x2731d151CBDf84A8A4C6d9D0BaE74012Db51E428", // IFT - "0x398dcA951cD4fc18264d995DCD171aa5dEbDa129": - "0xdac17f958d2ee523a2206206994597c13d831ec7", // USDT + [ADDRESSES.csc.USDT]: + ADDRESSES.ethereum.USDT, // USDT "0xF335B2440e62A953a42865aDf7bD73F4C6671A7b": - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC + ADDRESSES.ethereum.USDC, // USDC "0x9F4165009e93b7f5BA61A477ad08Cd3D1aD8aa36": "0x0b342c51d1592c41068d5d4b4da4a68c0a04d5a4", // ONES diff --git a/projects/wbtc.js b/projects/wbtc.js index 1dfc6cacc9..83a24d49a8 100644 --- a/projects/wbtc.js +++ b/projects/wbtc.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require('@defillama/sdk') async function tvl(ts, block) { return { - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599': (await sdk.api.erc20.totalSupply({ target: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', block })).output + [ADDRESSES.ethereum.WBTC]: (await sdk.api.erc20.totalSupply({ target: ADDRESSES.ethereum.WBTC, block })).output } } diff --git a/projects/weldfinance/index.js b/projects/weldfinance/index.js index c6030e73b9..9206328818 100644 --- a/projects/weldfinance/index.js +++ b/projects/weldfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { masterchefExports, } = require("../helper/unknownTokens") const sdk = require('@defillama/sdk') @@ -7,7 +8,7 @@ async function verifyTvl() { briseSupply, ] = await sdk.api2.abi.multiCall({ abi: 'erc20:totalSupply', chain: 'kava', - calls: ['0x472402d47Da0587C1cf515DAfbAFc7bcE6223106', '0xea616011e5ac9a5b91e22cac59b4ec6f562b83f9',] + calls: [ADDRESSES.kava.USDk, ADDRESSES.kava.kBRISE,] }) usdkSupply /= 1e18 briseSupply /= 1e18 @@ -18,8 +19,8 @@ async function verifyTvl() { const bals = await sdk.api2.abi.multiCall({ abi: 'erc20:balanceOf', calls: [ - { target: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', params: fireBlockAccount }, - { target: '0xdac17f958d2ee523a2206206994597c13d831ec7', params: fireBlockAccount }, + { target: ADDRESSES.ethereum.USDC, params: fireBlockAccount }, + { target: ADDRESSES.ethereum.USDT, params: fireBlockAccount }, ], }) @@ -27,8 +28,8 @@ async function verifyTvl() { abi: 'erc20:balanceOf', chain: 'polygon', calls: [ - { target: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', params: fireBlockAccount }, - { target: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', params: fireBlockAccount }, + { target: ADDRESSES.polygon.USDC, params: fireBlockAccount }, + { target: ADDRESSES.polygon.USDT, params: fireBlockAccount }, ], }) @@ -50,7 +51,7 @@ module.exports = masterchefExports({ chain: 'kava', useDefaultCoreAssets: true, masterchef: '0xAbF3edbDf79dAfBBd9AaDBe2efEC078E557762D7', - nativeToken: '0xa0EEDa2e3075092d66384fe8c91A1Da4bcA21788' + nativeToken: ADDRESSES.kava.KFT }) module.exports.kava.tvl = sdk.util.sumChainTvls([module.exports.kava.tvl, verifyTvl]) \ No newline at end of file diff --git a/projects/welnance/index.js b/projects/welnance/index.js index 30180898be..6766cf201b 100644 --- a/projects/welnance/index.js +++ b/projects/welnance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require("../helper/compound"); const comptroller = "0xdc21c1dAF3277f07fFA6EB09fCD3E07EDc36DC0A"; @@ -9,7 +10,7 @@ module.exports = { ...compoundExports( comptroller, "bsc", "0x38e22c429e62530cbB59B90bF14a71346C727752", - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" + ADDRESSES.bsc.WBNB ), }, methodology: diff --git a/projects/westater/index.js b/projects/westater/index.js index b81e9297d0..7af5102ff5 100644 --- a/projects/westater/index.js +++ b/projects/westater/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { unwrapUniswapLPs } = require('../helper/unwrapLPs'); const BigNumber = require("bignumber.js"); @@ -35,7 +36,7 @@ const farms = [ ] function transform(tokenAddress){ - if(tokenAddress === "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f"){ + if(tokenAddress === ADDRESSES.heco.WHT){ return "0x6f259637dcd74c767781e37bc6133cd6a68aa161" } else { return `heco:${tokenAddress}` diff --git a/projects/whaleloans/index.js b/projects/whaleloans/index.js index 55733256f1..a5eccf52de 100644 --- a/projects/whaleloans/index.js +++ b/projects/whaleloans/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') // const { ohmTvl } = require('../helper/ohm') // const treasury = "0x39914b5b0687882659d74b7a82e07Ca3acBf9a8c" // module.exports = ohmTvl(treasury, [ // //WBNB -// ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], +// [ADDRESSES.bsc.WBNB, false], // //BUSD -// ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], +// [ADDRESSES.bsc.BUSD, false], // //USDC -// ["0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", false], +// [ADDRESSES.bsc.USDC, false], // //PancakeLP // ["0x63D9DEf04dcBf82870f46f50db5C1eFeCcb1Cd63", true], // ], "bsc", "0x5132e14a2673DA61581364d792E90B926F10bC8e", "0xfAAec9f866Fa7f34a2c31c2B11D1723Ad4a46446", undefined, undefined, true) diff --git a/projects/whiteheart/index.js b/projects/whiteheart/index.js index 54c398a7b4..e9b818adb8 100644 --- a/projects/whiteheart/index.js +++ b/projects/whiteheart/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const whbtc = "0xf19c3FAFB0171484d2301Af1838cB5C6Ea739dC4" const wheth = "0x33827D2d2a0f4533AC26083E6eaAe71D417cbBA0" const writeUSDC = "0xda0606037834f4279Dc590434231F1E01C468629" -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" -const wbtc = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" -const usdc = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" +const weth = ADDRESSES.ethereum.WETH +const wbtc = ADDRESSES.ethereum.WBTC +const usdc = ADDRESSES.ethereum.USDC async function tvl(_timestamp, ethBlock) { const balances = {}; diff --git a/projects/wonderland/index.js b/projects/wonderland/index.js index b703b2bbec..8f955b6450 100644 --- a/projects/wonderland/index.js +++ b/projects/wonderland/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const sdk = require("@defillama/sdk"); @@ -13,15 +14,14 @@ const Treasury_Avax = "0x88bbE6dE858B179841c8f49a56b99fb0522a263a"; async function avaxTvl(timestamp, ethBlock, chainBlocks) { const balances = {}; const transform = (addr) => - addr.toLowerCase() === "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7" - ? "0xdac17f958d2ee523a2206206994597c13d831ec7" - : `avax:${addr}`; + addr.toLowerCase() === ADDRESSES.avax.USDt + ? [ADDRESSES.ethereum.USDT]: `avax:${addr}`; await sumTokensAndLPsSharedOwners( balances, [ - ["0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", false], // USDT - ["0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", false], // USDC.e + [ADDRESSES.avax.USDt, false], // USDT + [ADDRESSES.avax.USDC_e, false], // USDC.e ["0x39fC9e94Caeacb435842FADeDeCB783589F50f5f", false], // KNC ["0x63682bDC5f875e9bF69E201550658492C9763F89", false], // BSGG ["0x0da67235dd5787d67955420c84ca1cecd4e5bb3b", false], //wMEMO @@ -52,7 +52,7 @@ async function ethTvl(timestamp, ethBlock, chainBlocks) { ["0x69570f3E84f51Ea70b7B68055c8d667e77735a25", false], // BSGG ["0x04906695D6D12CF5459975d7C3C03356E4Ccd460", false], // sOHM ["0x29127fE04ffa4c32AcAC0fFe17280ABD74eAC313", false], // sifu - ["0x0000000000085d4780B73119b644AE5ecd22b376", false], // TUSD + [ADDRESSES.ethereum.TUSD, false], // TUSD ["0x66761Fa41377003622aEE3c7675Fc7b5c1C2FaC5", false], // CPOOL ["0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", false], // ALCX ["0xdB25f211AB05b1c97D595516F45794528a807ad8", false], // EURS @@ -62,9 +62,9 @@ async function ethTvl(timestamp, ethBlock, chainBlocks) { ["0x0C10bF8FcB7Bf5412187A595ab97a3609160b5c6", false], // USDD ["0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", false], // STG ["0x6243d8CEA23066d098a15582d81a598b4e8391F4", false], // FLX - ["0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", false], // SNX - ["0xdAC17F958D2ee523a2206206994597C13D831ec7", false], // USDT - ["0x6B175474E89094C44Da98b954EedeAC495271d0F", false], // DAI + [ADDRESSES.ethereum.SNX, false], // SNX + [ADDRESSES.ethereum.USDT, false], // USDT + [ADDRESSES.ethereum.DAI, false], // DAI ], [Treasury_Eth], ethBlock, diff --git a/projects/wonderly/index.js b/projects/wonderly/index.js index 8764e4ed8a..f08be7318f 100644 --- a/projects/wonderly/index.js +++ b/projects/wonderly/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const Abis = require("./abi.json"); const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -5,7 +6,7 @@ const { staking } = require("../helper/staking"); const Contracts = { fantom: { - wftm: "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", + wftm: ADDRESSES.fantom.WFTM, gfx: "0xB6d8Ff34968e0712c56DE561b2f9Debd526a348c", bank: "0xeE5b6F97faaEB7f56Df1B433CC46d69e5659dF0B", multiFeeDistribution: "0x29f3e86280014d703BCaE532b6751fFa9Fca0df9", @@ -16,7 +17,7 @@ const Contracts = { ], }, arbitrum: { - weth: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + weth: ADDRESSES.arbitrum.WETH, afx: "0x42972EdecD94BDD19A622A6a419bDDed2de56E08", bank: "0xd73509D1B57bD99121AB30040227d51d295C159e", multiFeeDistribution: "0x564DdF4206994FA0Ad0d11947095cA3dfcb905e2", diff --git a/projects/woofi.js b/projects/woofi.js index eb637ad01a..d6804ef6ea 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -1,51 +1,52 @@ +const ADDRESSES = require('./helper/coreAssets.json') const { staking } = require('./helper/staking') const wooPPConfig = { fantom: [ - '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', // WFTM + ADDRESSES.fantom.WFTM, // WFTM '0x74b23882a30290451A17c44f4F05243b6b58C76d', // ETH '0x321162Cd933E2Be498Cd2267a90534A804051b11', // BTC '0x6626c47c00F1D87902fc13EECfaC3ed06D5E8D8a', // WOO - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', // USDC + ADDRESSES.fantom.USDC, // USDC ], bsc: [ - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB - '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', // ETH - '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', // BTC + ADDRESSES.bsc.WBNB, // WBNB + ADDRESSES.bsc.ETH, // ETH + ADDRESSES.bsc.BTCB, // BTC '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', // WOO - '0x55d398326f99059fF775485246999027B3197955', // USDT - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD + ADDRESSES.bsc.USDT, // USDT + ADDRESSES.bsc.BUSD, // BUSD ], avax: [ - '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', // WAVAX - '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', // WETH.e - '0x152b9d0FdC40C096757F570A51E494bd4b943E50', // BTC.b + ADDRESSES.avax.WAVAX, // WAVAX + ADDRESSES.avax.WETH_e, // WETH.e + ADDRESSES.avax.BTC_b, // BTC.b '0xaBC9547B534519fF73921b1FBA6E672b5f58D083', // WOO.e - '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', // USDC + ADDRESSES.avax.USDC, // USDC ], polygon: [ '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', // WETH - '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', // WBTC + ADDRESSES.polygon.WETH_1, // WETH + ADDRESSES.polygon.WBTC, // WBTC '0x1B815d120B3eF02039Ee11dC2d33DE7aA4a8C603', // WOO - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', // USDC + ADDRESSES.polygon.USDC, // USDC ], arbitrum: [ - '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', // WETH - '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', // WBTC + ADDRESSES.arbitrum.WETH, // WETH + ADDRESSES.arbitrum.WBTC, // WBTC '0xcAFcD85D8ca7Ad1e1C6F82F651fA15E33AEfD07b', // WOO '0x912CE59144191C1204E64559FE8253a0e49E6548', // ARB - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', // USDC + ADDRESSES.arbitrum.USDC, // USDC ], optimism: [ - '0x4200000000000000000000000000000000000006', // WETH + ADDRESSES.tombchain.FTM, // WETH '0x68f180fcCe6836688e9084f035309E29Bf0A2095', // WBTC - '0x4200000000000000000000000000000000000042', // OP - '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', // USDC + ADDRESSES.optimism.OP, // OP + ADDRESSES.optimism.USDC, // USDC ], era: [ - "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", // WETH - "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", // USDC + ADDRESSES.era.WETH, // WETH + ADDRESSES.era.USDC, // USDC ], } diff --git a/projects/wowswap/constants.js b/projects/wowswap/constants.js index 84db9ded23..8e29e0ff8a 100644 --- a/projects/wowswap/constants.js +++ b/projects/wowswap/constants.js @@ -1,4 +1,5 @@ -const ADDRESS_ZERO = "0x0000000000000000000000000000000000000000" +const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESS_ZERO = ADDRESSES.null const chains = { "ethereum": { @@ -25,7 +26,7 @@ const chains = { "heco": { reserveFactory: "0x518C21A2Edc710b0c627DBbCb0Af34531Dd1724a", pairFactory: "0x86fEA7A7c7f2503cdDb4Ad0E4e7977E8bDcb1872", - WOW: "0xeFAeeE334F0Fd1712f9a8cc375f427D9Cdd40d73", + WOW: ADDRESSES.telos.USDT, xWOW: "0x72c0A253C84ADa1b1379b2A66ce51862d9bf159B", WOWLP: "0x5E5f16A910B7b44f4F8090798BaADEfBC1388253" }, @@ -55,7 +56,7 @@ const chains = { pairFactory: "0xA53230B6B6e7f4FDD0f65Af954F891A77351baBF", WOW: "0x527805F51C448155DfBDee04bD950036A52a21f0", xWOW: "0x3B642654c6a2C1ECe1d33cBF0EDBfDD970AEC35f", - WOWLP: "0x0000000000000000000000000000000000000000" + WOWLP: ADDRESSES.null } }; diff --git a/projects/wowswap/protocol.js b/projects/wowswap/protocol.js index 7c4eb50ee4..ad1004d21d 100644 --- a/projects/wowswap/protocol.js +++ b/projects/wowswap/protocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const BigNumber = require("bignumber.js"); @@ -46,7 +47,7 @@ async function getLiquidity(data, chain, block) { } async function getStakedLiquidity(chain, block) { - if (chains[chain].WOWLP === "0x0000000000000000000000000000000000000000") { + if (chains[chain].WOWLP === ADDRESSES.null) { const stakedLiquidity = await getLiquidity( { [chains[chain].WOW]: chains[chain].xWOW }, chain, diff --git a/projects/xWeowns/index.js b/projects/xWeowns/index.js index 12e9e08039..f65baa5499 100644 --- a/projects/xWeowns/index.js +++ b/projects/xWeowns/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const contracts = { "xWeowns": "0xaBA0Bb586335B938a7a817A900017D891268d32c", "USDT": "0x32D2b9bBCf25525b8D7E92CBAB14Ca1a5f347B14", - "USDTethereum": "0xdac17f958d2ee523a2206206994597c13d831ec7" + "USDTethereum": ADDRESSES.ethereum.USDT }; async function tvl(timestamp, block, chainBlocks) { diff --git a/projects/xdai/index.js b/projects/xdai/index.js index 73eaefbc20..8f5032cc3c 100644 --- a/projects/xdai/index.js +++ b/projects/xdai/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { covalentGetTokens } = require('../helper/http'); const tokenAddresses = [ '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', // SAI - '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + ADDRESSES.ethereum.DAI, // DAI //'0x06af07097c9eeb7fd685c692751d5C66db49c215' // CHAI "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI ]; diff --git a/projects/xdefi/index.js b/projects/xdefi/index.js index 23b24ed32d..37708c2ce2 100644 --- a/projects/xdefi/index.js +++ b/projects/xdefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BigNumber = require('bignumber.js') const { GraphQLClient, gql, request } = require('graphql-request') @@ -61,10 +62,10 @@ async function fetch() { } ` const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; - const wethAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; - const usdt = "0xdac17f958d2ee523a2206206994597c13d831ec7" - const dai = "0x6b175474e89094c44da98b954eedeac495271d0f" - const usdc = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + const wethAddress = ADDRESSES.ethereum.WETH; + const usdt = ADDRESSES.ethereum.USDT + const dai = ADDRESSES.ethereum.DAI + const usdc = ADDRESSES.ethereum.USDC const { tokenPrices } = await request(xdexApi, tokenPriceQuery, { ids: Object.keys(tokenDataWithLocked).concat(wethAddress) }) diff --git a/projects/xdollar-finance/index.js b/projects/xdollar-finance/index.js index b760b2ec90..e5aba723fb 100644 --- a/projects/xdollar-finance/index.js +++ b/projects/xdollar-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require('bignumber.js') const { transformBalances } = require('../helper/portedTokens.js') @@ -5,23 +6,23 @@ const { staking } = require('../helper/staking') const {getLiquityTvl} = require('../helper/liquity') -const ETH_ADDR = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; -const BTC_ADDR = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"; -const USDC_ADDR = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const ETH_ADDR = ADDRESSES.ethereum.WETH; +const BTC_ADDR = ADDRESSES.ethereum.WBTC; +const USDC_ADDR = ADDRESSES.ethereum.USDC; const iotexTMs = { - "0x366D48c04B0d315acF27Bd358558e92D4e2E9f3D": "0xa00744882684c3e4747faefd68d283ea44099d03", // WIOTX - "0x7204e2f210865aA1854F33B3532ab2DEb386CB59": "0xa00744882684c3e4747faefd68d283ea44099d03", // WIOTX v2 + "0x366D48c04B0d315acF27Bd358558e92D4e2E9f3D": ADDRESSES.iotex.WIOTX, // WIOTX + "0x7204e2f210865aA1854F33B3532ab2DEb386CB59": ADDRESSES.iotex.WIOTX, // WIOTX v2 } const iotexStableAPs = { - "0x8Af0EE5A98609fEdaf301Af74d3ca4Da614eaD43": "0x84abcb2832be606341a50128aeb1db43aa017449", // BUSD_b - "0xF524F844216069b167d65DCe68B24F3358260BD5": "0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1", // USDT - // "0x206aAF608d1DD7eA9Db4b8460B2Bf8647522f90a": "0xd6070ae98b8069de6b494332d1a1a81b6179d960", // any - "0x84724DAEC2943B1FDd5250ffcF64dfa290606250": "0x84abcb2832be606341a50128aeb1db43aa017449", // BUSD_b v2 - "0xc67cF429b055D664c7Ba06c9F5D17d0692C554fC": "0x6fbcdc1169b5130c59e72e51ed68a84841c98cd1", // USDT v2 + "0x8Af0EE5A98609fEdaf301Af74d3ca4Da614eaD43": ADDRESSES.iotex.BUSD_bsc, // BUSD_b + "0xF524F844216069b167d65DCe68B24F3358260BD5": ADDRESSES.iotex.ioUSDT, // USDT + // "0x206aAF608d1DD7eA9Db4b8460B2Bf8647522f90a": ADDRESSES.iotex.anyXIM, // any + "0x84724DAEC2943B1FDd5250ffcF64dfa290606250": ADDRESSES.iotex.BUSD_bsc, // BUSD_b v2 + "0xc67cF429b055D664c7Ba06c9F5D17d0692C554fC": ADDRESSES.iotex.ioUSDT, // USDT v2 } const ethStables = { - "0xC0eb7718fF1B5fBF11cd314CbC212c167bF341DB": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC + "0xC0eb7718fF1B5fBF11cd314CbC212c167bF341DB": ADDRESSES.ethereum.USDC, // USDC } // node test.js projects/xdollar-finance/index.js @@ -124,7 +125,7 @@ module.exports = { ]) }, arbitrum: { - tvl: getLiquityTvl('0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',"0x561d2d58bdad7a723a2cf71e8909a409dc2112ec", "arbitrum"), + tvl: getLiquityTvl(ADDRESSES.arbitrum.WETH,"0x561d2d58bdad7a723a2cf71e8909a409dc2112ec", "arbitrum"), staking: staking('0xc3fbc4056689cfab3f23809aa25004899ff4d75a','0x9eF758aC000a354479e538B8b2f01b917b8e89e7', 'arbitrum'), }, polygon: { @@ -132,7 +133,7 @@ module.exports = { staking: staking('0x3509f19581afedeff07c53592bc0ca84e4855475','0x3dc7b06dd0b1f08ef9acbbd2564f8605b4868eea', 'polygon'), }, avax: { - tvl: getLiquityTvl('0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7',"0x561d2d58bdad7a723a2cf71e8909a409dc2112ec", "avax"), + tvl: getLiquityTvl(ADDRESSES.avax.WAVAX,"0x561d2d58bdad7a723a2cf71e8909a409dc2112ec", "avax"), staking: staking('0x68738a47d40c34d890168ab7b612a6f649f395e4','0x9ef758ac000a354479e538b8b2f01b917b8e89e7', 'avax', 'polygon:0x3dc7b06dd0b1f08ef9acbbd2564f8605b4868eea'), }, hallmarks: [ diff --git a/projects/xenophon/index.js b/projects/xenophon/index.js index 006529b128..e7f1c07465 100644 --- a/projects/xenophon/index.js +++ b/projects/xenophon/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const xph = "0x3e29633846E8b857B7f6d7f293F895186804264b"; const treasury = "0x4b69C32450cE85d76aC94215fb81C21B434696eA"; const staking = "0xE90afe3349E42f416406c592f4B7192265085695"; const treasurytokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0x5866d1032b5b6001429Bf2A47B830bDC0DD138EA", true] // XPH-BUSD CAKE LP ] diff --git a/projects/xensa/index.js b/projects/xensa/index.js index 0e0c3af865..6ee65cbce2 100644 --- a/projects/xensa/index.js +++ b/projects/xensa/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abi.json'); @@ -34,7 +35,7 @@ async function tvl(timestamp, _ethBlock, chainBlocks) { }) const balances = {}; - balances['okexchain:0x8f8526dbfd6e38e3d8307702ca8469bae6c56c15'] = balance_okt + balances['okexchain:' + ADDRESSES.okexchain.WOKT] = balance_okt const transform = addr=>`okexchain:${addr}`// await transformAddress() sdk.util.sumMultiBalanceOf(balances, balanceOfResults, true, transform) diff --git a/projects/xeus/index.js b/projects/xeus/index.js index 2449252fbc..835a285d08 100644 --- a/projects/xeus/index.js +++ b/projects/xeus/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0xF1081555011689cCCfa29CCA6a9E6AFcB907B0bC" module.exports = ohmTvl(treasury, [ //BUSD - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], + [ADDRESSES.bsc.BUSD, false], //DAI ["0xE50c40B0B84946D7491337613059F181700ddBEa", false], //pancakeswap LP diff --git a/projects/xsigma/index.js b/projects/xsigma/index.js index fd9b1ed939..03f7066428 100644 --- a/projects/xsigma/index.js +++ b/projects/xsigma/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const SigThreePoolContract = "0x3333333ACdEdBbC9Ad7bda0876e60714195681c5"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; -const DAI = "0x6b175474e89094c44da98b954eedeac495271d0f"; -const USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7"; +const USDC = ADDRESSES.ethereum.USDC; +const DAI = ADDRESSES.ethereum.DAI; +const USDT = ADDRESSES.ethereum.USDT; const sigMasterchefContract = "0x98C32b59a0AC00Cd33750427b1A317eBcf84D0F7"; const SIG = "0x7777777777697cfeecf846a76326da79cc606517"; diff --git a/projects/xtoken/constants.js b/projects/xtoken/constants.js index 361fec40dd..b2d0ed44ec 100644 --- a/projects/xtoken/constants.js +++ b/projects/xtoken/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const DEC_18 = 10 ** 18; const xaaveaAddr = "0x80DC468671316E50D4E9023D3db38D3105c1C146"; const xaavebAddr = "0x704De5696dF237c5B9ba0De9ba7e0C63dA8eA0Df"; @@ -24,29 +25,29 @@ const alphaAddr = "0xa1faa113cbe53436df28ff0aee54275c13b40975"; const bntAddr = "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"; const kncAddr = "0xdd974d5c2e2928dea5f71b9825b8b646686bd200"; const snxAddr = "0xDC01020857afbaE65224CfCeDb265d1216064c59"; -const wbtcAddr = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"; -const wethAddr = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; -const snxTokenAddr = "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"; +const wbtcAddr = ADDRESSES.ethereum.WBTC; +const wethAddr = ADDRESSES.ethereum.WETH; +const snxTokenAddr = ADDRESSES.ethereum.SNX; const inchAddr = "0x111111111117dc0aa78b770fa6a738034120c302"; -const usdcAddr = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; -const aaveAddr = "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9"; +const usdcAddr = ADDRESSES.ethereum.USDC; +const aaveAddr = ADDRESSES.ethereum.AAVE; const xtkAddress = "0x7F3EDcdD180Dbe4819Bd98FeE8929b5cEdB3AdEB"; const xu3lpaAddrArbitrum = "0x9F8cFc08f781e1576A05d4d3669b3E6FF22913FF"; const xu3lpbAddrArbitrum = "0x216D135926f5EC9E5924564A342580B0b5A3bdc6"; const xbtc3xAddrArbitrum = "0x93B135416A1796707b273ad709099d47ADDA18D6"; const xeth3xAddrArbitrum = "0xc4C251c7d7c2F1165176e3BF503276fB0df05daa"; -const wbtcAddrArbitrum = "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"; -const wethAddrArbitrum = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"; +const wbtcAddrArbitrum = ADDRESSES.arbitrum.WBTC; +const wethAddrArbitrum = ADDRESSES.arbitrum.WETH; const X_ETH_3X = "xETH3x" const X_BTC_3X = "xBTC3x" const WBTC = "wbtc"; const WETH = "weth"; const QUOTER_ADDRESS = '0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6' -const usdcAddress = '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8' -const wethAddress = '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1' -const usdtAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7'; +const usdcAddress = ADDRESSES.arbitrum.USDC +const wethAddress = ADDRESSES.arbitrum.WETH +const usdtAddress = ADDRESSES.ethereum.USDT; const COINGECKO_API_URL = 'https://api.coingecko.com/api/v3/coins'; const urls = { "mainnet": "https://api.thegraph.com/subgraphs/name/xtokenmarket/terminal-mainnet", diff --git a/projects/xusdmoney/index.js b/projects/xusdmoney/index.js index 1c024953cf..9a08db546e 100644 --- a/projects/xusdmoney/index.js +++ b/projects/xusdmoney/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { pool2s } = require("../helper/pool2"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); @@ -13,9 +14,9 @@ const collateralPoolContracts = [ "0x75aAf03CBF330e2b3F0623c55B7a528CFCAE8d75", ]; -const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; -const DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; -const USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; +const WETH = ADDRESSES.ethereum.WETH; +const DAI = ADDRESSES.ethereum.DAI; +const USDC = ADDRESSES.ethereum.USDC; //const XUS = "0x875650dd46b60c592d5a69a6719e4e4187a3ca81"; const stakingContract = "0x6049B0831F8da67f3FE80f5FA07BD300E8f2F22C"; diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js index 85f1323107..be0a23649e 100644 --- a/projects/xy-finance/index.js +++ b/projects/xy-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { @@ -51,11 +52,11 @@ const yPoolDepositContract = { }, "USDT": { "contractAddress": "0x8e921191a9dc6832C1c360C7c7B019eFB7c29B2d", - "tokenAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7" + "tokenAddress": ADDRESSES.ethereum.USDT }, "USDC": { "contractAddress": "0xdD8B0995Cc92c7377c7bce2A097EC70f45A192D5", - "tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + "tokenAddress": ADDRESSES.ethereum.USDC }, "XY": { "contractAddress": "0x7fE09D2310A647c7C5043daE2053ff86956cE952", @@ -73,49 +74,49 @@ const yPoolDepositContract = { }, "USDT": { "contractAddress": "0x74A0EEA77e342323aA463098e959612d3Fe6E686", - "tokenAddress": "0x66e428c3f67a68878562e79A0234c1F83c208770" + "tokenAddress": ADDRESSES.cronos.USDT }, "USDC": { "contractAddress": "0x44a54941E572C526a599B0ebe27A14A5BF159333", - "tokenAddress": "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59" + "tokenAddress": ADDRESSES.cronos.USDC } }, "56": { "ETH": { "contractAddress": "0xa0ffc7eDB9DAa9C0831Cdf35b658e767ace33939", - "tokenAddress": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8" + "tokenAddress": ADDRESSES.bsc.ETH }, "USDT": { "contractAddress": "0xD195070107d853e55Dad9A2e6e7E970c400E67b8", - "tokenAddress": "0x55d398326f99059fF775485246999027B3197955" + "tokenAddress": ADDRESSES.bsc.USDT }, "USDC": { "contractAddress": "0x27C12BCb4538b12fdf29AcB968B71dF7867b3F64", - "tokenAddress": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" + "tokenAddress": ADDRESSES.bsc.USDC } }, "108": { "USDT": { "contractAddress": "0x74A0EEA77e342323aA463098e959612d3Fe6E686", - "tokenAddress": "0x4f3C8E20942461e2c3Bdd8311AC57B0c222f2b82" + "tokenAddress": ADDRESSES.thundercore.TT_USDT }, "USDC": { "contractAddress": "0x2641911948e0780e615A9465188D975Fa4A72f2c", - "tokenAddress": "0x22e89898A04eaf43379BeB70bf4E38b1faf8A31e" + "tokenAddress": ADDRESSES.thundercore.TT_USDC } }, "137": { "ETH": { "contractAddress": "0x29d91854B1eE21604119ddc02e4e3690b9100017", - "tokenAddress": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" + "tokenAddress": ADDRESSES.polygon.WETH_1 }, "USDT": { "contractAddress": "0x3243278E0F93cD6F88FC918E0714baF7169AFaB8", - "tokenAddress": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F" + "tokenAddress": ADDRESSES.polygon.USDT }, "USDC": { "contractAddress": "0xf4137e5D07b476e5A30f907C3e31F9FAAB00716b", - "tokenAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" + "tokenAddress": ADDRESSES.polygon.USDC } }, "250": { @@ -125,21 +126,21 @@ const yPoolDepositContract = { }, "USDT": { "contractAddress": "0xC255563d3Bc3Ed7dBbb8EaE076690497bfBf7Ef8", - "tokenAddress": "0x049d68029688eAbF473097a2fC38ef61633A3C7A" + "tokenAddress": ADDRESSES.fantom.fUSDT }, "USDC": { "contractAddress": "0x3A459695D49cD6B9637bC85B7ebbb04c5c3038c0", - "tokenAddress": "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75" + "tokenAddress": ADDRESSES.fantom.USDC } }, "321": { "USDT": { "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": "0x0039f574eE5cC39bdD162E9A88e3EB1f111bAF48" + "tokenAddress": ADDRESSES.kcc.USDT }, "USDC": { "contractAddress": "0xa274931559Fb054bF60e0C44355D3558bB8bC2E6", - "tokenAddress": "0x980a5AfEf3D17aD98635F6C5aebCBAedEd3c3430" + "tokenAddress": ADDRESSES.kcc.USDC } }, "42161": { @@ -149,25 +150,25 @@ const yPoolDepositContract = { }, "USDT": { "contractAddress": "0x7a483730AD5a845ED2962c49DE38Be1661D47341", - "tokenAddress": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" + "tokenAddress": ADDRESSES.arbitrum.USDT }, "USDC": { "contractAddress": "0x680ab543ACd0e52035E9d409014dd57861FA1eDf", - "tokenAddress": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" + "tokenAddress": ADDRESSES.arbitrum.USDC } }, "43114": { "ETH": { "contractAddress": "0xEFaaf68a9a8b7D93bb15D29c8B77FCe87Fcc91b8", - "tokenAddress": "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB" + "tokenAddress": ADDRESSES.avax.WETH_e }, "USDT": { "contractAddress": "0x3D2d1ce29B8bC997733D318170B68E63150C6586", - "tokenAddress": "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7" + "tokenAddress": ADDRESSES.avax.USDt }, "USDC": { "contractAddress": "0x21ae3E63E06D80c69b09d967d88eD9a98c07b4e4", - "tokenAddress": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E" + "tokenAddress": ADDRESSES.avax.USDC } }, "10": { @@ -177,41 +178,41 @@ const yPoolDepositContract = { }, "USDT": { "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58" + "tokenAddress": ADDRESSES.optimism.USDT }, "USDC": { "contractAddress": "0x1e4992E1Be86c9d8ed7dcBFcF3665FE568dE98Ab", - "tokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607" + "tokenAddress": ADDRESSES.optimism.USDC } }, "592": { "USDT": { "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": "0x3795C36e7D12A8c252A20C5a7B455f7c57b60283" + "tokenAddress": ADDRESSES.astar.USDT }, "USDC": { "contractAddress": "0xD236639F5B00BC6711aC799bac5AceaF788b2Aa3", - "tokenAddress": "0x6a2d262D56735DbA19Dd70682B39F6bE9a931D98" + "tokenAddress": ADDRESSES.moonbeam.USDC } }, "1285": { "USDT": { "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": "0xB44a9B6905aF7c801311e8F4E76932ee959c663C" + "tokenAddress": ADDRESSES.moonriver.USDT }, "USDC": { "contractAddress": "0x680ab543ACd0e52035E9d409014dd57861FA1eDf", - "tokenAddress": "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D" + "tokenAddress": ADDRESSES.moonriver.USDC } }, "8217": { "USDT": { "contractAddress": "0xF526EFc174b512e66243Cb52524C1BE720144e8d", - "tokenAddress": "0xceE8FAF64bB97a73bb51E115Aa89C17FfA8dD167" + "tokenAddress": ADDRESSES.klaytn.oUSDT }, "USDC": { "contractAddress": "0xB238d4339a44f93aBCF4071A9bB0f55D2403Fd84", - "tokenAddress": "0x754288077D0fF82AF7a5317C7CB8c444D421d103" + "tokenAddress": ADDRESSES.klaytn.oUSDC } }, } diff --git a/projects/yama-finance/index.js b/projects/yama-finance/index.js index cea5ed1d56..ff97168556 100644 --- a/projects/yama-finance/index.js +++ b/projects/yama-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') @@ -13,7 +14,7 @@ async function tvl(_, _b, _cb, { api, }) { }) const ownerTokens = [ - [['0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9'], '0x0e1Ddf8D61f0570Bf786594077CD431c727335A9'], // psm module + [[ADDRESSES.arbitrum.USDT], '0x0e1Ddf8D61f0570Bf786594077CD431c727335A9'], // psm module ] ownerTokens.push([logs.map(i => i.token), CDP]) diff --git a/projects/yaxis/index.js b/projects/yaxis/index.js index 6cc1acf0ac..29d3b30870 100644 --- a/projects/yaxis/index.js +++ b/projects/yaxis/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const { unwrapUniswapLPs, } = require("../helper/unwrapLPs"); @@ -61,7 +62,7 @@ async function tvl(timestamp, block) { }) ).output; - balances["0x0000000000000000000000000000000000000000"] = BigNumber(alethVault) + balances[ADDRESSES.null] = BigNumber(alethVault) .multipliedBy(eth) .dividedBy(crvTotalSupply) .toFixed(0); diff --git a/projects/yetiFinance/index.js b/projects/yetiFinance/index.js index 84ae78c4f5..19dd253676 100644 --- a/projects/yetiFinance/index.js +++ b/projects/yetiFinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const getAllCollateralAbi = 'function getAllCollateral() view returns (address[], uint256[])' @@ -114,7 +115,7 @@ async function tvl(_, _block, chainBlocks) { return { // In USDC, USDC has decimal of 6 - ["avax:0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"]: total / (10 ** 12) + ["avax:" + ADDRESSES.avax.USDC]: total / (10 ** 12) } } @@ -152,7 +153,7 @@ async function pool2(_, _block, chainBlocks) { const pool2ValueUSD = (YETIReserve * YETIPrice + AVAXReserve * AVAXPrice) / 10 ** 18 return { // In USDC, USDC has decimal of 6 - ["avax:0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"]: pool2ValueUSD / (10 ** 12) + ["avax:" + ADDRESSES.avax.USDC]: pool2ValueUSD / (10 ** 12) } } @@ -179,7 +180,7 @@ async function staking(_, _block, chainBlocks) { const stakingUSD = veYETIBalance * YETIPrice / (10 ** 18) return { // In USDC, USDC has decimal of 6 - ["avax:0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"]: stakingUSD / (10 ** 12) + ["avax:" + ADDRESSES.avax.USDC]: stakingUSD / (10 ** 12) } } diff --git a/projects/yfdai/index.js b/projects/yfdai/index.js index cd4c07a6f5..839ffc7445 100644 --- a/projects/yfdai/index.js +++ b/projects/yfdai/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const {sumTokens} = require('../helper/unwrapLPs') const yfdaiTokenAddress = "0xf4CD3d3Fda8d7Fd6C5a500203e38640A70Bf9577"; const YfDaiStakingAdddress = "0x44d771D0C998f524ff39aB6Df64B72bce1d09566"; const YfDaiSafetradeStakingAddress = "0x4599cDa238Fb71573fd5A0076C199320e09BCfF0"; -const weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" -const dai = "0x6b175474e89094c44da98b954eedeac495271d0f" +const weth = ADDRESSES.ethereum.WETH +const dai = ADDRESSES.ethereum.DAI const wethVault = "0x290e5484601986667dC6cA72119f2B85260Ca92E" const daiVault = "0x7e537E8B5028a32166F06C8664cdE9D608487428" const YfDaiETHLP72HRSVault = "0x75E9F410e8d1D7240b67ec6FE35FA37580b814d9"; diff --git a/projects/yieldyak-staked-avax/index.js b/projects/yieldyak-staked-avax/index.js index b89388c6a4..a7d151829a 100644 --- a/projects/yieldyak-staked-avax/index.js +++ b/projects/yieldyak-staked-avax/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const yieldYak_id = "45756385483164763772015628191198800763712771278583181747295544980036831301432"; @@ -16,7 +17,7 @@ async function avax(timestamp, ethBlock, chainBlocks, { api }) { }) return { - "avax:0x0000000000000000000000000000000000000000": supply * price / 1e18 + ["avax:" + ADDRESSES.null]: supply * price / 1e18 }; } diff --git a/projects/youves/data.js b/projects/youves/data.js index da96bf4da3..6ffea66b2b 100644 --- a/projects/youves/data.js +++ b/projects/youves/data.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const Ss = { id: 'tez', name: 'Tezos', @@ -275,47 +276,47 @@ const Ss = { }), youToken: Object.assign(Object.assign({ }, ws), { - contractAddress: 'KT1Xobej4mc6XgEjDoJoHtTKgbD1ELMvcQuL' + contractAddress: ADDRESSES.tezos.YOU }), uusdToken: Object.assign(Object.assign({ }, Ds), { - contractAddress: 'KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW' + contractAddress: ADDRESSES.tezos.uUSD }), udefiToken: Object.assign(Object.assign({ }, ks), { - contractAddress: 'KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW' + contractAddress: ADDRESSES.tezos.uUSD }), ubtcToken: Object.assign(Object.assign({ }, Ns), { - contractAddress: 'KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW' + contractAddress: ADDRESSES.tezos.uUSD }), tzbtcToken: Object.assign(Object.assign({ }, Bs), { - contractAddress: 'KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn' + contractAddress: ADDRESSES.tezos.tzBTC }), kusdToken: Object.assign(Object.assign({ }, Rs), { - contractAddress: 'KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV' + contractAddress: ADDRESSES.tezos.kUSD }), usdtzToken: Object.assign(Object.assign({ }, Ps), { - contractAddress: 'KT1LN4LPSqTMS7Sd2CJw4bbDGRkMv2t68Fy9' + contractAddress: ADDRESSES.tezos.USDtz }), usdtToken: Object.assign(Object.assign({ }, Fd), { - contractAddress: 'KT1XnTn74bUtxHfDtBmm2bGZAQfhPbvKWR8o' + contractAddress: ADDRESSES.tezos.USDt }), wusdcToken: Object.assign(Object.assign({ }, xs), { - contractAddress: 'KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ' + contractAddress: ADDRESSES.tezos.AAVE }), wwbtcToken: Object.assign(Object.assign({ }, Ms), { - contractAddress: 'KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ' + contractAddress: ADDRESSES.tezos.AAVE }), plentyToken: Object.assign(Object.assign({ }, Os), { - contractAddress: 'KT1GRSvLoikDsXujKgZPsGLX8k8VvR2Tq95b' + contractAddress: ADDRESSES.tezos.PLENTY }), tzbtcLP: Object.assign(Object.assign({ }, Ts), { diff --git a/projects/youves/index.js b/projects/youves/index.js index 9e1a388a28..f111fd00fb 100644 --- a/projects/youves/index.js +++ b/projects/youves/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { GraphQLClient, gql } = require("graphql-request"); const sdk = require("@defillama/sdk") const { addDexPosition, resolveLPPosition, getStorage, usdtAddressTezos, } = require('../helper/chain/tezos') @@ -25,7 +26,7 @@ const engines = { const uDEFI_LP = 'KT1H8sJY2VzrbiX4pYeUVsoMUd4iGw2DV7XH' const uDEFI_TOKEN = 'KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW-1' -const tzBTC_TOKEN = 'KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn' +const tzBTC_TOKEN = ADDRESSES.tezos.tzBTC async function fetchBalance(balances, token, engineAddress, decimals = 0, sharePrice) { @@ -65,7 +66,7 @@ async function tvl() { const balances = {} const sharePrice = await getTzBTCLPSharePrice() await Promise.all([ - // fetchBalance(balances, 'KT1XRPEPXbZK25r3Htzp2o1x7xdMMmfocKNW', engines.uDefiuUSDV2, 0), // disabling this because backing of uUSD is already counted in tvl + // fetchBalance(balances, ADDRESSES.tezos.uUSD, engines.uDefiuUSDV2, 0), // disabling this because backing of uUSD is already counted in tvl fetchBalance(balances, usdtAddressTezos, engines.uUSDUSDtV3, 0), fetchBalance(balances, tzBTC_TOKEN, engines.uUSDtzBTCV2, 0), fetchBalance(balances, tzBTC_TOKEN, engines.uUSDtzBTCV3, 0), diff --git a/projects/ysmart/index.js b/projects/ysmart/index.js index fa6e23aa18..e7b5ff08e8 100644 --- a/projects/ysmart/index.js +++ b/projects/ysmart/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const masterchef = "0x705A71efadD12faDac67600b666D8c0347848BD3"; -const token_USDC = "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f"; -const token_USDT = "0xB44a9B6905aF7c801311e8F4E76932ee959c663C"; +const token_USDC = ADDRESSES.telos.ETH; +const token_USDT = ADDRESSES.moonriver.USDT; module.exports = { kava: { diff --git a/projects/zencha/index.js b/projects/zencha/index.js index ce347ae248..ba46550394 100644 --- a/projects/zencha/index.js +++ b/projects/zencha/index.js @@ -1,19 +1,20 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require("../helper/unwrapLPs"); const swapFlashLoan = '0x2D027B49B8960810F84D5fE172d07FFf62311852'; const tokens = { DAI: { - boba: '0xf74195bb8a5cf652411867c5c2c5b8c2a402be35', - eth: '0x6b175474e89094c44da98b954eedeac495271d0f' + boba: ADDRESSES.boba.DAI, + eth: ADDRESSES.ethereum.DAI }, USDT: { - boba: '0x5de1677344d3cb0d7d465c10b72a8f60699c062d', - eth: '0xdac17f958d2ee523a2206206994597c13d831ec7' + boba: ADDRESSES.boba.USDT, + eth: ADDRESSES.ethereum.USDT }, USDC: { - boba: '0x66a2a913e447d6b4bf33efbec43aaef87890fbbc', - eth: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' + boba: ADDRESSES.boba.USDC, + eth: ADDRESSES.ethereum.USDC } }; diff --git a/projects/zeroshift/index.js b/projects/zeroshift/index.js index bf34a37167..425f78fda6 100644 --- a/projects/zeroshift/index.js +++ b/projects/zeroshift/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const zrst = "0xf436Ea4C4f2e49F0679895aEAE39dab698350eAa"; const stakingContract = "0xe41450704aB574968714b7548E9BcfF31A2183e0"; const treasury = "0x197123D62A2252c0Ac668a72BAAe39AF333843E0"; const treasuryTokens = [ - ["0xd586e7f844cea2f87f50152665bcbc2c279d8d70", false], // DAI + [ADDRESSES.avax.DAI, false], // DAI ["0xeebb1784296ad9f965e90e2cc3c4cf588daebc2d", true] // ZRST-DAI JLP ] diff --git a/projects/zerotwohm/index.js b/projects/zerotwohm/index.js index 791c032396..35fb92e455 100644 --- a/projects/zerotwohm/index.js +++ b/projects/zerotwohm/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const stakingContract = "0x06B4dFAbAf0fb0Cf813526572cc86B2695c9D050"; @@ -5,10 +6,10 @@ const Z2O = "0xdb96f8efd6865644993505318cc08FF9C42fb9aC"; const treasury = "0x00eFcbd55b59b5D08F3a7501C0Ddad34a57A3611"; const treasuryTokens = [ - ["0x82af49447d8a07e3bd95bd0d56f35241523fbab1", false], // WETH + [ADDRESSES.arbitrum.WETH, false], // WETH ["0x17fc002b466eec40dae837fc4be5c67993ddbd6f", false], // FRAX - ["0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", false], // WBTC - ["0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", false], // MIM + [ADDRESSES.arbitrum.WBTC, false], // WBTC + [ADDRESSES.arbitrum.MIM, false], // MIM ["0x79f12596b78f9e982bdab6e2d83d4bc155672372", false], // chMIM ["0x739ca6d71365a08f584c8fc4e1029045fa8abc4b", false], // wsOHM ["0x40c938444c725EA6eb6992ca71F94b6945b43335", true], // Z2O-MIM SLP diff --git a/projects/zest-protocol/index.js b/projects/zest-protocol/index.js index 3ecc9598c1..dee057d6a7 100644 --- a/projects/zest-protocol/index.js +++ b/projects/zest-protocol/index.js @@ -1,15 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const Abis = require("./abi.json"); const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const Contracts = { fantom: { - wftm: "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83", + wftm: ADDRESSES.fantom.WFTM, wethBank: "0xB717b014BC34fc904396585CbF4FC1B0BBe603B4", weth: "0x74b23882a30290451A17c44f4F05243b6b58C76d", zsp: "0x2C26617034C840C9412CD67aE0Fc68A6755D00BF", ftmz: "0x9e219b51891e2c62ea8a2ea438d331eae7c68484", - usdc: "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", + usdc: ADDRESSES.fantom.USDC, bank: "0x9fc3E5259Ba18BD13366D0728a256E703869F21D", multiFeeDistribution: "0x1b6deD5c603d66800B0DDf566Ec316a344C7BcaD", chef: "0xFdAa392FCF8946e8e658B9f36ffbE6659cB40edf", diff --git a/projects/zeus-finance/index.js b/projects/zeus-finance/index.js index 1563cc128d..a0be4f5b22 100644 --- a/projects/zeus-finance/index.js +++ b/projects/zeus-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {addFundsInMasterChef} = require("../helper/masterchef"); const {stakingUnknownPricedLP} = require("../helper/staking"); const {pool2BalanceFromMasterChefExports} = require("../helper/pool2") @@ -9,7 +10,7 @@ async function tvl(timestamp, block, chainBlocks) { let balances = {}; await addFundsInMasterChef(balances, masterchef, chainBlocks.cronos, "cronos", addr=>{ if (addr.toLowerCase() === "0xf2001b145b43032aaf5ee2884e456ccd805f677d") { - return "0x6b175474e89094c44da98b954eedeac495271d0f" + return ADDRESSES.ethereum.DAI } return `cronos:${addr}` }, undefined, [token], true, true, token); diff --git a/projects/zharta/index.js b/projects/zharta/index.js index b8b99b50ec..995b2d646c 100644 --- a/projects/zharta/index.js +++ b/projects/zharta/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require('../helper/unwrapLPs') // Vaults @@ -11,7 +12,7 @@ module.exports = { ethereum: { tvl: sumTokensExport({ owners: [collateralVault, punkVault, appraisalVault, LP_CORE], - tokens: ['0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'], + tokens: [ADDRESSES.ethereum.WETH], resolveNFTs: true, }), } diff --git a/projects/zigzag/index.js b/projects/zigzag/index.js index ca06dd27b3..a5e9308fcd 100644 --- a/projects/zigzag/index.js +++ b/projects/zigzag/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { get } = require('../helper/http') const { toUSDTBalances } = require('../helper/balances') const { sumTokensExport } = require('../helper/unwrapLPs') @@ -23,12 +24,12 @@ module.exports = { }, arbitrum: { tvl: sumTokensExport({ owner: '0xf4037f59c92c9893c43c2372286699430310cfe7', tokens: [ - '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8', - '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', - '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.WBTC, '0x912CE59144191C1204E64559FE8253a0e49E6548', - '0xf97f4df75117a78c1a5a0dbb814af92458539fb4', + ADDRESSES.arbitrum.LINK, ]}) } } diff --git a/projects/zkasino/index.js b/projects/zkasino/index.js index ef9c9f4e01..2066ae9a53 100644 --- a/projects/zkasino/index.js +++ b/projects/zkasino/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress, } = require('../helper/unwrapLPs') // https://docs.zkasino.io/developer/contracts @@ -14,16 +15,16 @@ const owners = [ const config = { bsc: { - tokens: ['0xe9e7cea3dedca5984780bafc599bd69add087d56', nullAddress,] + tokens: [ADDRESSES.bsc.BUSD, nullAddress,] }, polygon: { - tokens: ['0x2791bca1f2de4661ed88a30c99a7a9449aa84174', nullAddress,] + tokens: [ADDRESSES.polygon.USDC, nullAddress,] }, fantom: { - tokens: ['0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', nullAddress,] + tokens: [ADDRESSES.fantom.USDC, nullAddress,] }, arbitrum: { - tokens: ['0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', '0xADA42bb73b42e0472A994218fb3799dFCDA21237', '0x912CE59144191C1204E64559FE8253a0e49E6548', nullAddress,] + tokens: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC, '0xADA42bb73b42e0472A994218fb3799dFCDA21237', '0x912CE59144191C1204E64559FE8253a0e49E6548', nullAddress,] } } diff --git a/projects/zkswap/v1.js b/projects/zkswap/v1.js index d0004cf63f..1157345192 100644 --- a/projects/zkswap/v1.js +++ b/projects/zkswap/v1.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getLogs } = require('../helper/cache/getLogs') @@ -9,7 +10,7 @@ module.exports = async function tvl(timestamp, block, _1, { api }) { // ETH const ETHBalance = (await sdk.api.eth.getBalance({target: MAIN, block})).output; const balances = { - '0x0000000000000000000000000000000000000000': ETHBalance + [ADDRESSES.null]: ETHBalance } // ERC20 diff --git a/projects/zkswap/v2.js b/projects/zkswap/v2.js index f7fa430fe2..6f26e8d5b9 100644 --- a/projects/zkswap/v2.js +++ b/projects/zkswap/v2.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getLogs } = require('../helper/cache/getLogs') @@ -9,7 +10,7 @@ module.exports = async function tvl(timestamp, block, _1, { api }) { // ETH const ETHBalance = (await sdk.api.eth.getBalance({target: MAIN, block})).output; const balances = { - '0x0000000000000000000000000000000000000000': ETHBalance + [ADDRESSES.null]: ETHBalance } // ERC20 diff --git a/projects/zodiac/index.js b/projects/zodiac/index.js index 7d21294666..ed36b5a41c 100644 --- a/projects/zodiac/index.js +++ b/projects/zodiac/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require("../helper/ohm"); const treasuryAddress = "0xf73055C88f8cF87E0cfaE6773665943083609640"; -const USDT = "0x55d398326f99059ff775485246999027b3197955"; +const USDT = ADDRESSES.bsc.USDT; const Staking = "0x1450d20E99F7e8c27864a8D9e6E3d0694ed567DA"; const ZD = "0x98051143830fa99848E7059E97AcB03B3cc62403"; diff --git a/projects/zomb2/index.js b/projects/zomb2/index.js index 594f0a938b..54cd40a12a 100644 --- a/projects/zomb2/index.js +++ b/projects/zomb2/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { zombiTvl } = require("../zombi/zombi"); const token = "0xA87bcE04d4a396DF40cC1be3a21CF04592C08290"; @@ -14,7 +15,7 @@ const pool2LPs = [ ]; const listedTokenGeneris = [ - '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83',//wftm + ADDRESSES.fantom.WFTM,//wftm '0x74b23882a30290451A17c44f4F05243b6b58C76d',//weth '0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE',//boo '0xaD996A45fd2373ed0B10Efa4A8eCB9de445A4302',//alpaca diff --git a/projects/zombi/index.js b/projects/zombi/index.js index e0acab24b2..a85b2e2297 100644 --- a/projects/zombi/index.js +++ b/projects/zombi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { zombiTvl } = require("./zombi"); const token = "0xda5db6c2a2fd53a2d3fc4246bbd8acce5f93bae1"; @@ -11,7 +12,7 @@ const pool2LPs = [ "0x5db45a30732cf98fda72b9b91a0c554dc1f2e83b" ]; const listedTokenGeneris = [ - '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83',//wftm + ADDRESSES.fantom.WFTM,//wftm '0x74b23882a30290451A17c44f4F05243b6b58C76d',//weth '0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE',//boo '0xaD996A45fd2373ed0B10Efa4A8eCB9de445A4302'//alpaca diff --git a/projects/zoomswap/index.js b/projects/zoomswap/index.js index 051fbfcbe8..28f2a440b5 100644 --- a/projects/zoomswap/index.js +++ b/projects/zoomswap/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { masterChefExports, } = require("../helper/masterchef") const { mergeExports, } = require("../helper/utils") -const token1 = "0x86702a7f8898B172de396eB304d7D81207127915"; +const token1 = ADDRESSES.iotex.ZOOM; const token2 = "0xf87aed04889a1dd0159d9C22B0D57b345Ab16dDD"; const masterchef1 = "0x92F1a54835436Ad1858018f11d017fCE31756C17"; const masterchef2 = "0x1ba725d2ba56482f11fee3642f1c739d25018e4d"; diff --git a/projects/zootopia-finance/index.js b/projects/zootopia-finance/index.js index c07d0c3ad2..599b5d3511 100644 --- a/projects/zootopia-finance/index.js +++ b/projects/zootopia-finance/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') // ztp swap address const SWAP_ADDR = "0xCdD4396527b6681775173839002E6af201885CB8"; // stable coin address -const BUSD = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"; +const BUSD = ADDRESSES.bsc.BUSD; const DAI = "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3"; -const USDC = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"; -const USDT = "0x55d398326f99059fF775485246999027B3197955"; +const USDC = ADDRESSES.bsc.USDC; +const USDT = ADDRESSES.bsc.USDT; async function tvl(timestamp, ethereumBlock, { bsc: block }) { return sumTokens2({ chain: 'bsc', block, owner: SWAP_ADDR, tokens: [BUSD, DAI, USDC, USDT,]}) diff --git a/projects/zunami/index.js b/projects/zunami/index.js index 9888333c4d..21cd7b29e8 100644 --- a/projects/zunami/index.js +++ b/projects/zunami/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const zunamiContract = "0x2ffCC661011beC72e1A9524E12060983E74D14ce"; const zunamiHoldingsDecimals = 18; -const usdt = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; +const usdt = ADDRESSES.ethereum.USDT; const usdtDecimals = 6; async function ethTvl(timestamp, block) { diff --git a/utils/scripts/useTokenLabels.js b/utils/scripts/useTokenLabels.js index fd560c4369..e065d2b3f1 100644 --- a/utils/scripts/useTokenLabels.js +++ b/utils/scripts/useTokenLabels.js @@ -11,13 +11,11 @@ const { ibcChains } = require('../../projects/helper/tokenMapping') // const rootFolder = projectsDir + '/zharta' const rootFolder = projectsDir -const ignoredChains = ['algorand', 'defichain', ...ibcChains] +const ignoredChains = ['tezos', 'waves', 'algorand', 'klaytn', 'astar', 'iotex', 'elrond', 'defichain', 'cardano', ...ibcChains] function run() { ignoredChains.forEach(i => delete allLabels[i]) - console.table(Object.entries(allLabels).map(([c, mapping]) => { - return [c, Object.values(mapping).length] - }).sort((a, b) => b[1] - a[1])) + // console.table(Object.entries(allLabels).map(([c, mapping]) => { return [c, Object.values(mapping).length] }).sort((a, b) => b[1] - a[1])) // return; @@ -48,15 +46,15 @@ function updateFile(file) { }) } }) - if (updateFile) + if (!importedAddresses && updateFile) fileStr = requireStr + fileStr fs.writeFileSync(file, fileStr, { encoding: 'utf-8' }) function updateFileStr(label, address, file) { - if (!importedAddresses && !updateFile) { + if (!updateFile) { updateFile = (new RegExp(address, 'i')).test(fileStr) - if (updateFile) - console.log(updateFile, address, new RegExp(address, 'i'), file) + // if (updateFile) + // console.log(updateFile, address, new RegExp(address, 'i'), file) } if (!updateFile) return; const tokensBareRegex = new RegExp('["\']' + address + '["\']\\s*:', 'gi') From 89c5a6f9f3cf9fa57b2a274ca7bd5de6ef132a26 Mon Sep 17 00:00:00 2001 From: Seagram Date: Sun, 30 Apr 2023 06:54:02 +0900 Subject: [PATCH 0154/1354] Refactor using `flatMap` --- projects/tonic-cash/index.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/projects/tonic-cash/index.js b/projects/tonic-cash/index.js index d0495bc076..e4a5468b80 100644 --- a/projects/tonic-cash/index.js +++ b/projects/tonic-cash/index.js @@ -2,11 +2,9 @@ const { sumTokensExport } = require('../helper/unwrapLPs'); const config = require('./config.js'); Object.keys(config).forEach((chain) => { - const tokensAndOwners = config[chain] - .map(({ tokens, holders }) => - holders.map((o) => tokens.map((t) => [t, o])).flat() - ) - .flat(); + const tokensAndOwners = config[chain].flatMap(({ tokens, holders }) => + holders.flatMap(o => tokens.map(t => [t, o])) + ); module.exports[chain] = { tvl: sumTokensExport({ tokensAndOwners }), }; From 94598ae6ea2b456230cde38d125198977be4c2ae Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 29 Apr 2023 23:13:00 +0100 Subject: [PATCH 0155/1354] add fantom --- projects/treasury/aave.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js index fe4524512f..80fb846617 100644 --- a/projects/treasury/aave.js +++ b/projects/treasury/aave.js @@ -4,7 +4,8 @@ const treasuryContractsETH = [ "0x89c51828427f70d77875c6747759fb17ba10ceb0", //Aave Grants DAO "0xe3d9988f676457123c5fd01297605efdd0cba1ae", //Aave V1 Treasury "0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c", //Aave V2 Collector - "0x25f2226b597e8f9514b3f68f00f494cf4f286491" //Aave Ecosystem Reserve + "0x25f2226b597e8f9514b3f68f00f494cf4f286491", //Aave Ecosystem Reserve + "0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5", //V2 Incentives Controller ]; const treasuryContractsMATIC = [ @@ -17,6 +18,10 @@ const treasuryContractsAvax = [ "0x5ba7fd868c40c16f7aDfAe6CF87121E13FC2F7a0" //Aave V3 Treasury ]; +const treasuryContractsFantom = [ + "0xBe85413851D195fC6341619cD68BfDc26a25b928", //Treasury V3 +]; + const aaveTreasuryOptimism = ["0xB2289E329D2F85F1eD31Adbb30eA345278F21bcf"] const aaveTreasuryArbitrum = ["0x053D55f9B5AF8694c503EB288a1B7E552f590710"] @@ -25,6 +30,7 @@ const AAVEPOLYGON = '0xD6DF932A45C0f255f85145f286eA0b292B21C90B'; const AAVEAVAX = '0x63a72806098bd3d9520cc43356dd78afe5d386d9'; const AAVEARBITRUM = '0xba5ddd1f9d7f570dc94a51479a000e3bce967196'; const AAVEOPTIMISM = '0x76fb31fb4af56892a25e32cfc43de717950c9278'; +const AAVEFANTOM = "0xf329e36C7bF6E5E86ce2150875a84Ce77f477375"; module.exports = treasuryExports({ @@ -259,4 +265,19 @@ module.exports = treasuryExports({ owners: aaveTreasuryOptimism, ownTokens: [AAVEOPTIMISM], }, + fantom: { + tokens: [ + "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf", // aFanCRV + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", // aFanDAI + "0x191c10Aa4AF7C30e871E70C95dB0E4eb77237530", // aFanLINK + "0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA", // aFanSUSHI + "0x625E7708f30cA75bfd92586e17077590C60eb4cD", // aFanUSDC + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", // aFanUSDT + "0x078f358208685046a11C85e8ad32895DED33A249", // aFanWBTC + "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", // aFanWETH + "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97", // aFanWFTM + ], + owners: treasuryContractsFantom, + ownTokens: [AAVEFANTOM] + }, }) From ca18062d090061c2f69535a0c5f5c598e8ac1d9c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 01:40:16 +0200 Subject: [PATCH 0156/1354] bugfix --- projects/1swap/index.js | 96 +++++------------------------------------ 1 file changed, 11 insertions(+), 85 deletions(-) diff --git a/projects/1swap/index.js b/projects/1swap/index.js index 06de58b16c..83a9a0a020 100644 --- a/projects/1swap/index.js +++ b/projects/1swap/index.js @@ -1,7 +1,5 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); const abiMoonriver = require('./abi-moonriver.json'); +const { sumTokens2 } = require('../helper/unwrapLPs') const Contracts = { moonriver: { @@ -13,95 +11,23 @@ const Contracts = { '1s3pavaxusd': '0x7179F2C31763f395082489588534F4abb3Dd4Be6', '1s3pwanusd': '0x02A105939Dc0C47cb6bD04f320dAa77Bd9E3Bb0D', }, - ignoredLps: ['0x17da5445f3cd02b3f1cd820e6de55983fe80cf85'] , + ignoredLps: ['0x17da5445f3cd02b3f1cd820e6de55983fe80cf85'], } }; -const poolTvl = async (chain, poolAddress, block) => { - const [balances, tokens] = await Promise.all([ - sdk.api.abi.call({ - target: poolAddress, - abi: abiMoonriver.getTokenBalances, - chain: chain, - block, - }), - sdk.api.abi.call({ - target: poolAddress, - abi: abiMoonriver.getTokens, - chain: chain, - block, - }), - ]); - const sum = {}; - - tokens.output.forEach((token, i) => { - if ( - Contracts[chain].ignoredLps && - Contracts[chain].ignoredLps.includes(token.toLowerCase()) - ) { - return; - } - const [symbol, decimals] = getTokenId(token.toLowerCase()); - sum[symbol] = new BigNumber(balances.output[i]).div(new BigNumber(10).pow(decimals)).toNumber() - }); - - return sum; +const tvl = async (timestamp, ethBlock, chainBlocks, { api }) => { + const ownerTokens = [] + const poolTvl = async (pool) => { + ownerTokens.push([await api.call({ target: pool, abi: abiMoonriver.getTokens, }), pool]) + }; + const pools = Object.values(Contracts.moonriver.pools) + await Promise.all(pools.map(poolTvl)) + return sumTokens2({ api, ownerTokens, blacklistedTokens: pools}) }; -const moonriverTvl = async (timestamp, ethBlock, chainBlocks) => { - let block = chainBlocks['moonriver']; - const tvl = {}; - - for (let address of Object.values(Contracts.moonriver.pools)) { - const balances = await poolTvl( - 'moonriver', - address, - block, - ); - - Object.entries(balances).forEach(([token, value]) => { - sdk.util.sumSingleBalance(tvl, token, value); - }); - } - - return tvl; -}; - - -function getTokenId(address) { - switch(address) { - case [ADDRESSES.moonriver.USDC]: - return ['usd-coin', 6] - case [ADDRESSES.moonriver.USDT]: - return ['tether', 6] - case '0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844': - return ['dai', 18] - case '0x5d9ab5522c64e1f6ef5e3627eccc093f56167818': - return ['binance-usd', 18] - case '0x0cae51e1032e8461f4806e26332c030e34de3adb': - return ['magic-internet-money', 18] - case '0x965f84d915a9efa2dd81b653e3ae736555d945f4': - return ['frax', 18]; - case '0xd8b99eae34afdf1a9bfa5770066404ee4468d0f2': // AVAX bridge - return ['usd-coin', 6]; - case '0xf97c8556af29089d5d1627096958187b11f1915c': // AVAX bridge - return ['tether', 6]; - case '0x26dfff76d9123a1c79279abc29b676c48a8bd77e': // AVAX bridge - return ['dai', 18]; - case '0x748134b5f553f2bcbd78c6826de99a70274bdeb3': // WANCHAIN bridge - return ['usd-coin', 6]; - case '0xe936caa7f6d9f5c9e907111fcaf7c351c184cda7': // WANCHAIN bridge - return ['tether', 6]; - default: - return false; - } -} - - - module.exports = { moonriver: { - tvl: moonriverTvl, + tvl, }, }; From cc6a540eb2231247204defd0565cb9d41a54cc6d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 01:53:03 +0200 Subject: [PATCH 0157/1354] lint fixes --- projects/0xDAO/index.js | 4 ++-- projects/0xacid/index.js | 2 +- projects/2doge/index.js | 2 +- projects/ArchimedesFinance/index.js | 21 ++++----------------- projects/Caketomb/index.js | 2 -- projects/catsapes/index.js | 17 ----------------- projects/gysr/index.js | 4 ++-- projects/whaleloans/index.js | 16 ---------------- 8 files changed, 10 insertions(+), 58 deletions(-) diff --git a/projects/0xDAO/index.js b/projects/0xDAO/index.js index 09ba500316..b1b9238de2 100644 --- a/projects/0xDAO/index.js +++ b/projects/0xDAO/index.js @@ -11,7 +11,7 @@ const veAddress = "0xcBd8fEa77c2452255f59743f55A3Ea9d83b3c72b"; const oxSolidAddress = "0xDA0053F0bEfCbcaC208A3f867BB243716734D809"; const sanitize = require("./sanitizeWeb3Response.js"); -const { masterChefExports, standardPoolInfoAbi, addFundsInMasterChef } = require('../helper/masterchef') +const { standardPoolInfoAbi, addFundsInMasterChef } = require('../helper/masterchef') const sdk = require('@defillama/sdk') const { default: BigNumber } = require('bignumber.js') @@ -85,7 +85,7 @@ async function tvl(time, ethBlock, chainBlocks) { // Add pools const addPools = (pools, reservesData) => { - pools.forEach((pool, index) => { + pools.forEach((pool) => { const solidlyPoolAddress = pool.poolData.id; const reserveData = reservesData.find( (data) => data.id === solidlyPoolAddress diff --git a/projects/0xacid/index.js b/projects/0xacid/index.js index b0b314e1f8..ed924429df 100644 --- a/projects/0xacid/index.js +++ b/projects/0xacid/index.js @@ -1,4 +1,4 @@ -const { staking, stakingUnknownPricedLP } = require("../helper/staking"); +const { stakingUnknownPricedLP } = require("../helper/staking"); const ACID_STAKING = "0x00a842038a674616f6a97e62f80111a536778282"; const ACID_TOKEN = "0x29C1EA5ED7af53094b1a79eF60d20641987c867e"; diff --git a/projects/2doge/index.js b/projects/2doge/index.js index 84a90fd344..483866161f 100644 --- a/projects/2doge/index.js +++ b/projects/2doge/index.js @@ -1,6 +1,6 @@ const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { staking, stakingPricedLP } = require("../helper/staking"); +const { stakingPricedLP } = require("../helper/staking"); const tombTokenAddress = "0xDD057bCcB72982753266A903Feda154608e54468"; const tshareTokenAddress = "0x0c55339a139acd3a8ba07a9abad345b05c4bf804"; diff --git a/projects/ArchimedesFinance/index.js b/projects/ArchimedesFinance/index.js index 2fc7fc61c1..04e532b281 100644 --- a/projects/ArchimedesFinance/index.js +++ b/projects/ArchimedesFinance/index.js @@ -1,4 +1,3 @@ -const sdk = require('@defillama/sdk'); const curvePoolAbi = require('./curvePoolAbi.json'); const archimedesVaultAbi = require('./archimedesVaultAbi.json') const ERC20_TOKEN_3CRV = "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490"; @@ -8,26 +7,14 @@ const ARCHIMEDES_VAULT_OUSD = "0x4c12c57C37Ff008450A2597e810B51B2BbA0383A"; const ERC20_TOKEN_OUSD = "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86"; async function tvl(_, _1, _2, { api }) { - const balances = {}; - // 3CRV liquidity in LVUSD-3CRV curve pool - const { output: poolLiquidity3CRV } = await sdk.api.abi.call({ - target: POOL_CONTRACT_LVUSD_3CRV, - abi: curvePoolAbi.balances, - params: POOL_INDEX_3CRV - }); - - await sdk.util.sumSingleBalance(balances, ERC20_TOKEN_3CRV, poolLiquidity3CRV); + const poolLiquidity3CRV = await api.call({ target: POOL_CONTRACT_LVUSD_3CRV, abi: curvePoolAbi.balances, params: POOL_INDEX_3CRV }); // Total OUSD held in vault - const { output: totalAssetsOUSD } = await sdk.api.abi.call({ - target: ARCHIMEDES_VAULT_OUSD, - abi: archimedesVaultAbi.totalAssets - }); - - await sdk.util.sumSingleBalance(balances, ERC20_TOKEN_OUSD, totalAssetsOUSD); + const totalAssetsOUSD = await api.call({ target: ARCHIMEDES_VAULT_OUSD, abi: archimedesVaultAbi.totalAssets }); - return balances; + api.add(ERC20_TOKEN_3CRV, poolLiquidity3CRV) + api.add(ERC20_TOKEN_OUSD, totalAssetsOUSD) } module.exports = { diff --git a/projects/Caketomb/index.js b/projects/Caketomb/index.js index a52b60e15b..d95217c0cc 100644 --- a/projects/Caketomb/index.js +++ b/projects/Caketomb/index.js @@ -1,8 +1,6 @@ -const sdk = require("@defillama/sdk"); const {pool2Exports} = require("../helper/pool2"); const { staking } = require("../helper/staking"); -const token = "0xAB4F3fC9831dBC77424269B9255fC1A082AC9840"; const shares = "0x9f8349C33B942b6CBb15426E02b5Bbb77fAeB64f"; const shareRewardPool = "0x02361bAd5b50AfDDea2d8c4359a8C9595445a90D"; const boardroom = "0xcE2912101EF05034Eb2FA818dd6e57Ab09c8Ca73"; diff --git a/projects/catsapes/index.js b/projects/catsapes/index.js index 1938a4c3f8..ba0e5aee2e 100644 --- a/projects/catsapes/index.js +++ b/projects/catsapes/index.js @@ -1,27 +1,10 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') const { masterchefExports } = require('../helper/unknownTokens') const config = { kava: { SKILL_TOKEN_CONTRACT: '0x85602B00C9bd973B1Afb66EC140A62480CF812d3', - // STAKING: [ - // ADDRESSES.kava.WKAVA, - // ADDRESSES.shiden.ETH, - // ADDRESSES.telos.ETH, - // '0xB44a9B6905aF7c801311e8F4E76932ee959c663', - // ] } } - -// Object.keys(config).forEach(chain => { -// const { SKILL_TOKEN_CONTRACT, STAKING, } = config[chain] -// module.exports[chain] = { -// tvl: () => ({}), -// staking: sumTokensExport({ tokens: STAKING, owner: SKILL_TOKEN_CONTRACT }) -// } -// }) - module.exports = masterchefExports({ chain: 'kava', masterchef: config.kava.SKILL_TOKEN_CONTRACT, }) \ No newline at end of file diff --git a/projects/gysr/index.js b/projects/gysr/index.js index 26890e57b2..ae614ad969 100644 --- a/projects/gysr/index.js +++ b/projects/gysr/index.js @@ -8,7 +8,7 @@ const graphUrlMainnet = "https://api.thegraph.com/subgraphs/name/gysr-io/gysr"; const graphUrlPolygon = "https://api.thegraph.com/subgraphs/name/gysr-io/gysr-polygon"; const graphQuery = gql` query GET_TVL($block: Int) { - platform(id: ADDRESSES.null, block: { number: $block }) { + platform(id: "${ADDRESSES.null}", block: { number: $block }) { tvl } } @@ -36,7 +36,7 @@ async function polygon(_, ethBlock, chainBlocks) { graphUrlPolygon, graphQuery, { - block + block: block - 200 } ); diff --git a/projects/whaleloans/index.js b/projects/whaleloans/index.js index a5eccf52de..4812fe0571 100644 --- a/projects/whaleloans/index.js +++ b/projects/whaleloans/index.js @@ -1,19 +1,3 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// const { ohmTvl } = require('../helper/ohm') - -// const treasury = "0x39914b5b0687882659d74b7a82e07Ca3acBf9a8c" -// module.exports = ohmTvl(treasury, [ -// //WBNB -// [ADDRESSES.bsc.WBNB, false], -// //BUSD -// [ADDRESSES.bsc.BUSD, false], -// //USDC -// [ADDRESSES.bsc.USDC, false], -// //PancakeLP -// ["0x63D9DEf04dcBf82870f46f50db5C1eFeCcb1Cd63", true], -// ], "bsc", "0x5132e14a2673DA61581364d792E90B926F10bC8e", "0xfAAec9f866Fa7f34a2c31c2B11D1723Ad4a46446", undefined, undefined, true) - - // NOTE: treasury is emptied, token is worthless, adapter is left alone for historical data module.exports = { bsc: { From 7c1fc116aaac98ff285e28a27b6f1839674e4136 Mon Sep 17 00:00:00 2001 From: Sejal Chaudhari Date: Sun, 30 Apr 2023 11:13:28 +0530 Subject: [PATCH 0158/1354] Added adapter for Direct Exchange --- projects/direct-exchange/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/direct-exchange/index.js diff --git a/projects/direct-exchange/index.js b/projects/direct-exchange/index.js new file mode 100644 index 0000000000..c05adaeec9 --- /dev/null +++ b/projects/direct-exchange/index.js @@ -0,0 +1,16 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const chains = ['kava'] + +module.exports = { + misrepresentedTokens: true, + methodology: "Use Direct Exchange factory contract to get liquidity pools and token balances.", +}; + +chains.forEach(chain => { + module.exports[chain] = { + tvl: getUniTVL({ + factory: '0xcE08c3d20Ff00a9Cf0D28922768bD606592B5D4C', + useDefaultCoreAssets: true + }) + } +}) \ No newline at end of file From ad7bba2126cab5b5d83cb62ddfb282af9c975b62 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 11:31:04 +0200 Subject: [PATCH 0159/1354] hydradex: proxy via sushi server --- projects/hydradex-v3/api.js | 7 +++++++ projects/hydradex/api.js | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 projects/hydradex-v3/api.js diff --git a/projects/hydradex-v3/api.js b/projects/hydradex-v3/api.js new file mode 100644 index 0000000000..4645e33814 --- /dev/null +++ b/projects/hydradex-v3/api.js @@ -0,0 +1,7 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + ...getExports("hydradex-v3", ['hydra']), +} diff --git a/projects/hydradex/api.js b/projects/hydradex/api.js index a36cb65a85..9b31da47f1 100644 --- a/projects/hydradex/api.js +++ b/projects/hydradex/api.js @@ -1 +1,7 @@ -module.exports = require('../hydradex') \ No newline at end of file +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + ...getExports("hydradex", ['hydra']), +} From 9192f960252c706630f1310fd2167277d520de9d Mon Sep 17 00:00:00 2001 From: codehans <94654388+codehans@users.noreply.github.com> Date: Sun, 30 Apr 2023 11:00:17 +0100 Subject: [PATCH 0160/1354] dynamically fetch USK vaults --- projects/kujira/index.js | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/projects/kujira/index.js b/projects/kujira/index.js index bbb08be112..51a3a34a99 100644 --- a/projects/kujira/index.js +++ b/projects/kujira/index.js @@ -1,26 +1,10 @@ -const { get } = require("../helper/http"); -const { sumTokens, endPoints } = require('../helper/chain/cosmos') +const { sumTokens, queryContracts } = require('../helper/chain/cosmos') +const chain = "kujira"; async function tvl() { - const uskCDPs = [ - "kujira1ecgazyd0waaj3g7l9cmy5gulhxkps2gmxu9ghducvuypjq68mq2smfdslf", - "kujira1f2jt3f9gzajp5uupeq6xm20h90uzy6l8klvrx52ujaznc8xu8d7s6av27t", - "kujira1eydneup86kyhew5zqt5r7tkxefr3w5qcsn3ssrpcw9hm4npt3wmqa7as3u", - "kujira1fjews4jcm2yx7una77ds7jjjzlx5vgsessguve8jd8v5rc4cgw9s8rlff8", - "kujira1r80rh4t7zrlt8d6da4k8xptwywuv39esnt4ax7p7ca7ga7646xssrcu5uf", - "kujira1m0z0kk0qqug74n9u9ul23e28x5fszr628h20xwt6jywjpp64xn4qkxmjq3", - "kujira1pep6vkkjexjlsw3y5h4tj27g7s58vkypy8zg7f9qdvlh2992pncqduz84n", - "kujira1hjyjafrt09p4hwsnwch29nrrs40lprfgesqdy44wnp27td872hsse2rree", - "kujira1m4ves3ymz5hyrj3war3t7uxu9ewt8rwpunja87960n0gre3a5pzspgry4g", - "kujira1722g2rudg0rlw45nuuvjhg4a365xztfrdfjgyyfuzlmqmtu2plas34y6x3", - "kujira1twc28l5njc07xuxrs85yahy44y9lw5euwa7kpajc2zdh98w6uyksvjvruq", - "kujira1mjdmut3vq7n7zv6p9kdkdng0zpk2286qww0yy0ay4e8cvxd5p2zqvh9aqs" - ] - const owners = [ - ...uskCDPs, - ] - return sumTokens({ owners, chain: 'kujira' }) + const uskContracts = await queryContracts({ chain, codeId: 73 }); + return sumTokens({ owners: uskContracts, chain }) } module.exports = { From 71049b8633a086a82e2fe658276612542b34da0b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 12:07:37 +0200 Subject: [PATCH 0161/1354] refactor 1inch --- projects/1inch.js | 58 +++++++++----------------------------- projects/1inch/api.js | 8 +----- projects/1inch/apiCache.js | 54 +---------------------------------- projects/1inch/config.js | 19 +++++++++++-- 4 files changed, 33 insertions(+), 106 deletions(-) diff --git a/projects/1inch.js b/projects/1inch.js index 6abbb5eb1d..a50296c51d 100644 --- a/projects/1inch.js +++ b/projects/1inch.js @@ -1,57 +1,27 @@ const { sumTokens2, } = require('./helper/unwrapLPs') -const sdk = require('@defillama/sdk') -const { createIncrementArray } = require('./helper/utils') +const { getLogs } = require('./helper/cache/getLogs') -const abi = require("./mooniswap/abi.json"); const config = require("./1inch/config"); module.exports = {} -const minIndexes = { - ethereum: 30, - bsc: 136, -} Object.keys(config).forEach(chain => { - const { MooniswapFactory, blacklistedTokens } = config[chain] + const { blacklistedTokens = [], factories } = config[chain] module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const toa = [] - const pools = [] - const length = 10 - let i = minIndexes[chain] - - const { output: data1 } = await sdk.api.abi.multiCall({ - target: MooniswapFactory, - abi: abi.getPool, - calls: createIncrementArray(i * length).map(j => ({ params: j})), - chain, block, - }) - pools.push(...data1.map(i => i.output)) - let currentPools - do { - - const { output: data } = await sdk.api.abi.multiCall({ + tvl: async (_, _b, _2, { api }) => { + const ownerTokens = [] + for (const { MooniswapFactory, fromBlock} of factories) { + const logs = await getLogs({ + api, target: MooniswapFactory, - abi: abi.getPool, - calls: createIncrementArray(length).map(j => ({ params: j + i*length})), - chain, block, + topic: 'Deployed(address,address,address)', + eventAbi: 'event Deployed(address indexed mooniswap, address indexed token1, address indexed token2)', + onlyArgs: true, + fromBlock, }) - currentPools = data.map(i => i.output).filter(i => i) - pools.push(...currentPools) - i++ - } while(currentPools.length === length) - - const calls = pools.map(i => ({ target: i })) - const { output: tokensAll } = await sdk.api.abi.multiCall({ - abi: abi.getTokens, - calls, chain, block, - }) - - tokensAll.forEach(({ output: tokens, input: { target: pool } }) => { - tokens.forEach(i => toa.push([i, pool])) - }) - - return sumTokens2({ chain, block, tokensAndOwners: toa, blacklistedTokens, }) + logs.forEach(i => ownerTokens.push([[i.token1, i.token2], i.mooniswap])) + } + return sumTokens2({ api, ownerTokens, blacklistedTokens, }) } } }) \ No newline at end of file diff --git a/projects/1inch/api.js b/projects/1inch/api.js index 3d708e3675..cb3db3d5ba 100644 --- a/projects/1inch/api.js +++ b/projects/1inch/api.js @@ -1,7 +1 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("1inch", ['bsc', 'ethereum']), -} +module.exports = require('../1inch.js') \ No newline at end of file diff --git a/projects/1inch/apiCache.js b/projects/1inch/apiCache.js index 1f1047fdb2..cb3db3d5ba 100644 --- a/projects/1inch/apiCache.js +++ b/projects/1inch/apiCache.js @@ -1,53 +1 @@ -const abi = require("../mooniswap/abi.json"); -const config = require("./config") -const { sumTokens2, } = require('../helper/unwrapLPs') -const sdk = require('@defillama/sdk') -const { createIncrementArray } = require('../helper/utils') -const { getCache, setCache, } = require("../helper/cache"); - -const project = 'bulky/1inch' - -module.exports = {} -Object.keys(config).forEach(chain => { - const { MooniswapFactory, blacklistedTokens } = config[chain] - module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const cache = await getCache(project, chain) || { pools: {} } - if (!cache.pools) cache.pools = {} - const toa = [] - const pools = [] - const length = 5 - - let i = cache.lastI || Math.floor(Object.keys(cache.pools).length / length) - let currentPools - do { - const { output: data } = await sdk.api.abi.multiCall({ - target: MooniswapFactory, - abi: abi.getPool, - calls: createIncrementArray(length).map(j => ({ params: j + i * length })), - chain, block, - }) - currentPools = data.map(i => i.output).filter(i => i) - pools.push(...currentPools) - i++ - } while (currentPools.length === length) - - cache.lastI = i-1 - const calls = pools.map(i => ({ target: i })) - const { output: tokensAll } = await sdk.api.abi.multiCall({ - abi: abi.getTokens, - calls, chain, block, - }) - - tokensAll.forEach(({ output: tokens, input: { target: pool } }) => { - cache.pools[pool.toLowerCase()] = tokens - }) - - for (const [pool, tokens] of Object.entries(cache.pools)) - tokens.forEach(i => toa.push([i, pool])) - - await setCache(project, chain, cache) - return sumTokens2({ chain, block, tokensAndOwners: toa, blacklistedTokens, }) - } - } -}) \ No newline at end of file +module.exports = require('../1inch.js') \ No newline at end of file diff --git a/projects/1inch/config.js b/projects/1inch/config.js index d8027e2a11..9bc13975b0 100644 --- a/projects/1inch/config.js +++ b/projects/1inch/config.js @@ -1,11 +1,26 @@ module.exports = { ethereum: { - MooniswapFactory: '0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643', blacklistedTokens: ['0x58730ae0faa10d73b0cddb5e7b87c3594f7a20cb', '0x77777feddddffc19ff86db637967013e6c6a116c',], + factories: [{ + MooniswapFactory: '0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643', + fromBlock: 11607841, + }] }, + // polygon: { + // factories: [{ + // MooniswapFactory: '0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643', + // fromBlock: 36040621, + // }] + // }, bsc: { - MooniswapFactory: '0xd41b24bba51fac0e4827b6f94c0d6ddeb183cd64', + factories: [{ + MooniswapFactory: '0xd41b24bba51fac0e4827b6f94c0d6ddeb183cd64', + fromBlock: 4994614, + }, { + MooniswapFactory: '0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643', + fromBlock: 10588911, + }], blacklistedTokens: [ '0x6b175474e89094c44da98b954eedeac495271d0f', '0xae7ab96520de3a18e5e111b5eaab095312d7fe84', From 98b0ff7cd9aeb11fa9763e35b60e1b6049b2cdfa Mon Sep 17 00:00:00 2001 From: Kirin Date: Sun, 30 Apr 2023 17:44:16 +0700 Subject: [PATCH 0162/1354] Update Contratcs --- projects/templar/index.js | 180 ++++++++++++++++++++++---------------- 1 file changed, 105 insertions(+), 75 deletions(-) diff --git a/projects/templar/index.js b/projects/templar/index.js index 65e3b0fb8a..334c47c9ee 100644 --- a/projects/templar/index.js +++ b/projects/templar/index.js @@ -1,90 +1,120 @@ +const { stakings } = require("../helper/staking"); const sdk = require("@defillama/sdk"); -const {staking} = require("../helper/staking"); -const {sumTokensAndLPsSharedOwners} = require("../helper/unwrapLPs"); -const {getFixBalancesSync} = require("../helper/portedTokens"); +const { + sumTokensAndLPsSharedOwners, + unwrapUniswapV3NFTs, + sumTokens2, +} = require("../helper/unwrapLPs"); +const BigNumber = require("bignumber.js"); - -const bscTem = "0x19e6BfC1A6e4B042Fb20531244D47E252445df01"; +const bscOwner = "0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"; const bscStaking = "0xa1f61Ca61fe8655d2a204B518f6De964145a9324"; +const bscStakingV2 = "0xffC7B93b53BC5F4732b414295E989684702D0eb5"; const bscTreasuryContract = "0xd01e8D805BB310F06411e70Fd50eB58cAe2B4C27"; -async function bscTvl(timestamp, block, chainBlocks) { - let balances = {}; - await sumTokensAndLPsSharedOwners( +const bscTokens = { + BUSD: "0xe9e7cea3dedca5984780bafc599bd69add087d56", + WBNB: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + MIM: "0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba", + TM: "0x194d1D62d8d798Fcc81A6435e6d13adF8bcC2966", + DAI: "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", + TEM: "0x19e6BfC1A6e4B042Fb20531244D47E252445df01", + VBUSD: "0x95c78222B3D6e262426483D42CfA53685A67Ab9D", + VBTC: "0x882C173bC7Ff3b7786CA16dfeD3DFFfb9Ee7847B", +}; + +const ethTokens = { + USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7", +}; +const ethOwner = "0x4Bd973e98585b003c31f4C8b9d6eAC5d3293B1e5"; + +async function bscTvl(timestamp, _, chainBlocks) { + const chain = "bsc"; + const block = chainBlocks.bsc; + const balances = {}; + + // Add tokens Vault + await sumTokens2({ balances, - [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], // WBNB - ["0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba", false], // MIM - ["0x9911e98974d0badde85bd5f4d1f93087aa3ec5fa", true], // MIM-BUSD CAKELP - ["0xbf598a387c5f96f8bac9bdccf8fb68bc189cdff7", true], // TEM-MIM CAKELP - ["0x1ede821daade714edade648f525ada0c5fe4ee3a", true], // TEM-BUSD CAKELP - ], - [bscTreasuryContract], - chainBlocks.bsc, - "bsc", - (addr) => { - if (addr.toLowerCase() === "0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba") { - return "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3"; - } - return `bsc:${addr}`; - } - ); - return balances; -} + tokens: [bscTokens.TM, bscTokens.DAI, bscTokens.BUSD, bscTokens.WBNB], + owner: bscTreasuryContract, + chain, + transformAddress: (addr) => + addr === bscTokens.TM.toLowerCase() + ? `bsc:${bscTokens.BUSD}` + : `bsc:${addr}`, + }); + + // Add tokens UniswapV3LP + await unwrapUniswapV3NFTs({ + balances, + owners: ["0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"], + chain, + }); -const moonriverTem = "0xD86E3F7B2Ff4e803f90c799D702955003bcA9875"; -const moonriverStaking = "0xa1f61Ca61fe8655d2a204B518f6De964145a9324"; -const moonriverTreasuryContract = "0xd01e8D805BB310F06411e70Fd50eB58cAe2B4C27"; + // Add tokens Venus + for (const vToken of [bscTokens.VBUSD, bscTokens.VBTC]) { + let token; + const [{ output: balance }, { output: exchangeRateStored }] = + await Promise.all([ + sdk.api.abi.call({ + target: vToken, + params: [bscOwner], + abi: "erc20:balanceOf", + chain, + block, + }), + sdk.api.abi.call({ + target: vToken, + abi: "uint256:exchangeRateStored", + chain, + block, + }), + ]); + token = ( + await sdk.api.abi.call({ + target: vToken, + abi: "address:underlying", + chain, + block, + }) + ).output; -async function moonriverTvl (timestamp, block, chainBlocks) { - let balances = {}; - await sumTokensAndLPsSharedOwners(balances, [ - ["0x5eF6e7e82b2402d354a22a0714299920135B45bE", true], // temMim HBLP - ["0x0cae51e1032e8461f4806e26332c030e34de3adb", false], // MIM - ["0x98878B06940aE243284CA214f92Bb71a2b032B8A", false] // WMOVR - ], [moonriverTreasuryContract], chainBlocks.moonriver, "moonriver", addr=> { - if (addr.toLowerCase() === "0xd86e3f7b2ff4e803f90c799d702955003bca9875") { - return "bsc:0x19e6BfC1A6e4B042Fb20531244D47E252445df01" - } - return `moonriver:${addr}` - }) - return balances; + sdk.util.sumSingleBalance( + balances, + "bsc:" + token, + BigNumber((balance * exchangeRateStored) / 1e18).toFixed(0) + ); + } + + return balances; } +async function ethVaults(timestamp) { + const balances = {}; -const harmonyTem = "0xd754ae7bb55feb0c4ba6bc037b4a140f14ebe018"; -const harmonyStaking = "0xd86e3f7b2ff4e803f90c799d702955003bca9875"; -const harmonyTreasury = "0x92ae908d7bcf891ffa47ae10596e6a66cf43a77a"; + // Add tokens UniswapV3LP + await unwrapUniswapV3NFTs({ + balances, + owners: [ethOwner], + }); -async function harmonyTvl (timestamp, block, chainBlocks) { - let balances = {}; - await sumTokensAndLPsSharedOwners(balances, [ - ["0xef977d2f931c1978db5f6747666fa1eacb0d0339", false], // DAI - ["0xeed838406194feba1bd654cfdf85a941ac0944bc", true], // TEM DAI SLP - ["0xcf664087a5bb0237a0bad6742852ec6c8d69a27a", false] // WONE - ], [harmonyTreasury], chainBlocks.harmony, "harmony", addr=> { - addr = addr.toLowerCase(); - if (addr == "0xd754ae7bb55feb0c4ba6bc037b4a140f14ebe018") { - return `bsc:0x19e6BfC1A6e4B042Fb20531244D47E252445df01`; - } - return `harmony:${addr}`; - }); - getFixBalancesSync('harmony')(balances); - return balances; + await sumTokens2({ + balances, + tokens: [ethTokens.USDC, ethTokens.USDT], + owner: ethOwner, + }); + + return balances; } module.exports = { - bsc: { - tvl: bscTvl, - staking: staking(bscStaking, bscTem, "bsc") - }, - moonriver: { - tvl: moonriverTvl, - staking: staking(moonriverStaking, moonriverTem, "moonriver", "bsc:0x19e6BfC1A6e4B042Fb20531244D47E252445df01") - }, - harmony: { - tvl: harmonyTvl, - staking: staking(harmonyStaking, harmonyTem, "harmony", "bsc:0x19e6BfC1A6e4B042Fb20531244D47E252445df01") - }, -} + bsc: { + tvl: bscTvl, + staking: stakings([bscStaking, bscStakingV2], bscTokens.TEM, "bsc"), + }, + ethereum: { + tvl: ethVaults, + }, +}; From 9f664324ea3fcc60821ae1dd23c704552cda4e18 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 13:46:30 +0200 Subject: [PATCH 0163/1354] hydradex: minor fix --- projects/hydradex-v3/index.js | 2 +- projects/hydradex.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/hydradex-v3/index.js b/projects/hydradex-v3/index.js index 164e7814a4..f55e95c581 100644 --- a/projects/hydradex-v3/index.js +++ b/projects/hydradex-v3/index.js @@ -15,7 +15,7 @@ async function tvl(timestamp) { block } }) - return { tether: totalValueLockedUSD } + return { tether: +totalValueLockedUSD } } module.exports = { diff --git a/projects/hydradex.js b/projects/hydradex.js index 4e1a289325..109c65f220 100644 --- a/projects/hydradex.js +++ b/projects/hydradex.js @@ -15,7 +15,7 @@ async function tvl(timestamp) { block } }) - return { tether: totalLiquidityUSD } + return { tether: +totalLiquidityUSD } } module.exports = { From 8ebcc02ac975aa1e7f70e40b590ac40234be0b38 Mon Sep 17 00:00:00 2001 From: define Date: Sun, 30 Apr 2023 13:09:21 +0100 Subject: [PATCH 0164/1354] remove hastablepools from crhonos --- projects/chronos/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/chronos/index.js b/projects/chronos/index.js index e92e057991..e96355c3e2 100644 --- a/projects/chronos/index.js +++ b/projects/chronos/index.js @@ -5,6 +5,6 @@ module.exports = { misrepresentedTokens: true, methodology: `Uses factory(0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722) address to count liquidity in pools as TVL.`, arbitrum: { - tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true, hasStablePools: true }), + tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true, hasStablePools: false }), } }; From 7c5974845dc8106df9cadf90fe1796c8f1223fe2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 15:07:57 +0200 Subject: [PATCH 0165/1354] fix solidly cache bug --- projects/helper/cache/uniswap.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index a5fb16a5a5..2c0141ea31 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -142,7 +142,8 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, // if (cache.pairs.includes(null) || cache.token0s.includes(null) || cache.token1s.includes(null)) // cache.pairs = undefined } - if (!cache.pairs || (hasStablePools && !cache.symbols)) { + + if (!cache.pairs || (hasStablePools && (!cache.symbols || !cache.symbols.length))) { cache = { pairs: [], token0s: [], From d7c320872a641c2873722b51338f3c4fafce19d8 Mon Sep 17 00:00:00 2001 From: define Date: Sun, 30 Apr 2023 14:14:30 +0100 Subject: [PATCH 0166/1354] remove last commit --- projects/chronos/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/chronos/index.js b/projects/chronos/index.js index e96355c3e2..e92e057991 100644 --- a/projects/chronos/index.js +++ b/projects/chronos/index.js @@ -5,6 +5,6 @@ module.exports = { misrepresentedTokens: true, methodology: `Uses factory(0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722) address to count liquidity in pools as TVL.`, arbitrum: { - tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true, hasStablePools: false }), + tvl: getUniTVL({ factory: '0xCe9240869391928253Ed9cc9Bcb8cb98CB5B0722', useDefaultCoreAssets: true, hasStablePools: true }), } }; From 31c46e6e37f863c99645498d97d8d474b960b9ac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 18:58:33 +0200 Subject: [PATCH 0167/1354] update wonderland treasury --- projects/treasury/wonderland.js | 164 ++++++++++++++++++++------------ 1 file changed, 105 insertions(+), 59 deletions(-) diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js index 1a33ceb87b..0ee3494357 100644 --- a/projects/treasury/wonderland.js +++ b/projects/treasury/wonderland.js @@ -1,72 +1,118 @@ -const { nullAddress,treasuryExports, getComplexTreasury } = require("../helper/treasury"); - -//eth -const Treasury1 = "0x1c46450211cb2646cc1da3c5242422967ed9e04c"; -const Treasury2 = "0x355d72fb52ad4591b2066e43e89a7a38cf5cb341"; - -//avax -const TreasuryAVAX = "0x88bbe6de858b179841c8f49a56b99fb0522a263a" +const { nullAddress, treasuryExports, } = require("../helper/treasury"); +const sdk = require('@defillama/sdk') const TIME = "0xb54f16fb19478766a268f172c9480f8da1a7c9c3" +// Sources: https://wl-l.ink/Zapper/Treasury and https://docs.wonderland.money/ecosystem/contracts +const treasuries = [ + "0x1c46450211cb2646cc1da3c5242422967ed9e04c", "0x355d72fb52ad4591b2066e43e89a7a38cf5cb341", "0xb6b80f4ea8fb4117928d3c819e8ac6f1a3837baf", + "0x88bbe6de858b179841c8f49a56b99fb0522a263a", "0x32b5d1f1331f857d583b05ef50ab9636cdc090d9", "0x1de8a4c781ac134c1a7640aabe5929f4e1fe2f5b", + "0x694497072b2c43b737ae70bbd52694d61377344c", "0x004016b53f127c8f6f64cbf66330765dcf5dbe2a", "0xb96e3bf7d8939e9e17adcc26fdf47b6c7391eb6a", + "0xba90fabdde85191ae04bfdd8022f6d7b1f86c2f4", "0x5a4a936e90caf09590ac402b6e8d5435a5092a7a", "0x1724b987feb9651c466d9e66be4b74a7cedbf372" +] -// arbitrum - -const TreasuryArbitrum = "0x32b5d1f1331f857d583b05ef50ab9636cdc090d9" - -//polygon - -const TreasuryPolygon = "0x1de8a4c781ac134c1a7640aabe5929f4e1fe2f5b" +const ethWallet = '0x355d72fb52ad4591b2066e43e89a7a38cf5cb341' module.exports = treasuryExports({ ethereum: { - tokens: [ - nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT - '0xFcF8eda095e37A41e002E266DaAD7efC1579bc0A',//flex - '0xdB25f211AB05b1c97D595516F45794528a807ad8',//eurs - '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6',//stg - '0x29127fe04ffa4c32acac0ffe17280abd74eac313',//sifu - ], - owners: [Treasury1, Treasury2], + tokens: [ + nullAddress, + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + '0x55c08ca52497e2f1534b59e2917bf524d4765257', // uwu + '0xFEEf77d3f69374f66429C91d732A244f074bdf74', // cvxFXS + '0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027', // SLP + '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH + '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + '0xFcF8eda095e37A41e002E266DaAD7efC1579bc0A',//flex + '0xdB25f211AB05b1c97D595516F45794528a807ad8',//eurs + '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6',//stg + '0x29127fe04ffa4c32acac0ffe17280abd74eac313',//sifu + '0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d',//LQTY + '0x51144708b82eA3b5b1002C9DC38b71ec63b7e670',// uwu lend token + '0xdb1a8f07f6964efcfff1aa8025b8ce192ba59eba',// uwu lend token + '0x8c240c385305aeb2d5ceb60425aabcb3488fa93d',// uwu lend token + '0xc480a11a524e4db27c6d4e814b4d9b3646bc12fc',// uwu lend token + '0x8028ea7da2ea9bcb9288c1f6f603169b8aea90a6',// uwu lend token + '0x243387a7036bfcb09f9bf4eced1e60765d31aa70',// uwu lend token + '0xadfa5fa0c51d11b54c8a0b6a15f47987bd500086',// uwu lend token + '0x02738ef3f8d8d3161dbbedbda25574154c560dae',// uwu lend token + '0x6ace5c946a3abd8241f31f182c479e67a4d8fc8d',// uwu lend token + '0x67fadbd9bf8899d7c578db22d7af5e2e500e13e5',// uwu lend token + ], + owners: [ethWallet], + ownTokens: ['0x3b79a28264fc52c7b4cea90558aa0b162f7faf57'], }, avax: { tokens: [ - nullAddress, - "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",//usdte - "0x39fC9e94Caeacb435842FADeDeCB783589F50f5f",//knc - "0x63682bdc5f875e9bf69e201550658492c9763f89",//bsgg + nullAddress, + "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",//usdte + "0x39fC9e94Caeacb435842FADeDeCB783589F50f5f",//knc + "0x63682bdc5f875e9bf69e201550658492c9763f89",//bsgg + "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",//USDC + "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664",//USDC.e + "0x9e295b5b976a184b14ad8cd72413ad846c299660",//fsGLP + ], + owners: treasuries, + ownTokens: [TIME, '0x0da67235dd5787d67955420c84ca1cecd4e5bb3b'], + }, + arbitrum: { + tokens: [ + nullAddress, + "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth + "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a",//gmx + "0xd2D1162512F927a7e282Ef43a362659E4F2a728F",//sbfGMX + ], + owners: treasuries + }, + polygon: { + tokens: [ + nullAddress, + // "0xb08b3603C5F2629eF83510E6049eDEeFdc3A2D91",//cpool + ], + owners: treasuries + }, + bsc: { + tokens: [ + nullAddress, + "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",//USDC + ], + owners: treasuries + }, + fantom: { + tokens: [ + nullAddress, ], - owners: [TreasuryAVAX], - ownTokens: [TIME], + owners: treasuries }, - arbitrum: { - tokens: [ - nullAddress, - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth - "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a",//gmx - "0xd2D1162512F927a7e282Ef43a362659E4F2a728F",//sbfGMX - ], - owners: [TreasuryArbitrum] - }, - polygon: { - tokens: [ - nullAddress, - "0xb08b3603C5F2629eF83510E6049eDEeFdc3A2D91",//cpool - ], - owners: [TreasuryPolygon] - } + optimism: { + tokens: [ + nullAddress, + "0xdfa46478f9e5ea86d57387849598dbfb2e964b02",//MAI + "0x4200000000000000000000000000000000000006",//WETH + "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58",//USDT + ], + owners: treasuries + } }) -// Sources: https://wl-l.ink/Zapper/Treasury and https://docs.wonderland.money/ecosystem/contracts -const treasuries = [ - "0x1c46450211cb2646cc1da3c5242422967ed9e04c","0x355d72fb52ad4591b2066e43e89a7a38cf5cb341","0xb6b80f4ea8fb4117928d3c819e8ac6f1a3837baf", - "0x88bbe6de858b179841c8f49a56b99fb0522a263a","0x32b5d1f1331f857d583b05ef50ab9636cdc090d9","0x1de8a4c781ac134c1a7640aabe5929f4e1fe2f5b", - "0x694497072b2c43b737ae70bbd52694d61377344c","0x004016b53f127c8f6f64cbf66330765dcf5dbe2a","0xb96e3bf7d8939e9e17adcc26fdf47b6c7391eb6a", - "0xba90fabdde85191ae04bfdd8022f6d7b1f86c2f4","0x5a4a936e90caf09590ac402b6e8d5435a5092a7a","0x1724b987feb9651c466d9e66be4b74a7cedbf372" -] - -//getComplexTreasury(treasuries) \ No newline at end of file +module.exports.ethereum.tvl = sdk.util.sumChainTvls([module.exports.ethereum.tvl, uwuPositions]) +async function uwuPositions(_, _b, _cb, { api, }) { + // + // LUSD in stability pool + const {initialValue : LUSDBal} = await api.call({ abi: "function deposits(address) view returns (uint256 initialValue, address frontEndTag)", target: '0x66017D22b0f8556afDd19FC67041899Eb65a21bb', params: ethWallet }) + const uwuLPLocked= await api.call({ abi:"function lockedBalances(address user) view returns (uint256 total, uint256 unlockable, uint256 locked, tuple(uint256 amount, uint256 unlockTime)[] lockData)", target: '0x0a7b2a21027f92243c5e5e777aa30bb7969b0188', params: ethWallet }) + const [uDAI, vdDAI, uUSDT, vdUSDT] = await api.multiCall({ + abi: 'erc20:balanceOf', calls: [ + { target: '0xb95bd0793bcc5524af358ffaae3e38c3903c7626', params: ethWallet }, + { target: '0x1254b1fd988a1168e44a4588bb503a867f8e410f', params: ethWallet }, + { target: '0x24959f75d7bda1884f1ec9861f644821ce233c7d', params: ethWallet }, + { target: '0xaac1d67f1c17ec01593d76e831c51a4f458dc160', params: ethWallet }, + ] + }) + api.add('0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', LUSDBal) + api.add('0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027', uwuLPLocked.total) + api.add('0xb95bd0793bcc5524af358ffaae3e38c3903c7626', +uDAI - vdDAI) + api.add('0x24959f75d7bda1884f1ec9861f644821ce233c7d', +uUSDT - vdUSDT) + return api.getBalances() +} \ No newline at end of file From 189c64f2185bd1fb88a52c690892661e41c46bd0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Apr 2023 20:54:39 +0200 Subject: [PATCH 0168/1354] update ohm fork treasury info --- projects/BankOfCronos/index.js | 3 +- projects/atlas-usv/api.js | 8 ++++ projects/cerberusdao/api.js | 8 ++++ projects/fortress/api.js | 9 ++++ projects/fortunedao/api.js | 8 ++++ projects/galaxygoggle/index.js | 45 +----------------- projects/goblinscash/api.js | 8 ++++ projects/immortal/api.js | 8 ++++ projects/immortal/index.js | 4 +- projects/leaguedao/api.js | 8 ++++ projects/leaguedao/index.js | 2 +- projects/luxor/api.js | 8 ++++ projects/o2-dao/index.js | 36 +------------- projects/omicron/api.js | 8 ++++ projects/templar/api.js | 16 +++++++ projects/tipidao/api.js | 9 ++++ projects/tipidao/index.js | 16 ++++--- projects/treasury/bankofcronos.js | 4 +- projects/treasury/cerberusdao.js | 3 ++ projects/treasury/fortress.js | 3 ++ projects/treasury/fortunedao.js | 3 ++ projects/treasury/galaxygoogle.js | 55 ++++++++++++++++++++++ projects/treasury/goblinscash.js | 3 ++ projects/treasury/immortal.js | 5 ++ projects/treasury/leaguedao.js | 5 ++ projects/treasury/luxor.js | 5 ++ projects/treasury/o2-dao.js | 15 ++++++ projects/treasury/olympus-dao.js | 4 +- projects/treasury/omicron.js | 3 ++ projects/treasury/templar-dao.js | 5 ++ projects/treasury/tipidao.js | 3 ++ projects/treasury/volta-dao.js | 4 ++ projects/treasury/wagmidao.js | 78 +++++++++++++++++++++++++++++++ projects/volta-dao/api.js | 12 +++++ projects/wagmidao/index.js | 2 +- utils/testInteractive.js | 4 +- 36 files changed, 323 insertions(+), 97 deletions(-) create mode 100644 projects/atlas-usv/api.js create mode 100644 projects/cerberusdao/api.js create mode 100644 projects/fortress/api.js create mode 100644 projects/fortunedao/api.js create mode 100644 projects/goblinscash/api.js create mode 100644 projects/immortal/api.js create mode 100644 projects/leaguedao/api.js create mode 100644 projects/luxor/api.js create mode 100644 projects/omicron/api.js create mode 100644 projects/templar/api.js create mode 100644 projects/tipidao/api.js create mode 100644 projects/treasury/cerberusdao.js create mode 100644 projects/treasury/fortress.js create mode 100644 projects/treasury/fortunedao.js create mode 100644 projects/treasury/galaxygoogle.js create mode 100644 projects/treasury/goblinscash.js create mode 100644 projects/treasury/immortal.js create mode 100644 projects/treasury/leaguedao.js create mode 100644 projects/treasury/luxor.js create mode 100644 projects/treasury/o2-dao.js create mode 100644 projects/treasury/omicron.js create mode 100644 projects/treasury/templar-dao.js create mode 100644 projects/treasury/tipidao.js create mode 100644 projects/treasury/volta-dao.js create mode 100644 projects/treasury/wagmidao.js create mode 100644 projects/volta-dao/api.js diff --git a/projects/BankOfCronos/index.js b/projects/BankOfCronos/index.js index 9359ab82dc..5ed8f30754 100644 --- a/projects/BankOfCronos/index.js +++ b/projects/BankOfCronos/index.js @@ -7,7 +7,8 @@ const USDC_ADDRESS = "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59"; module.exports = { start: 6949784, cronos: { - tvl: sumTokensExport({ owner: BOC_TREASURY_ADDRESS, tokens: [CUSD_ADDRESS, USDC_ADDRESS]}), + // tvl: sumTokensExport({ owner: BOC_TREASURY_ADDRESS, tokens: [CUSD_ADDRESS, USDC_ADDRESS]}), + tvl: () => 0 }, methodology: "CDP collateral value + treasury mv", diff --git a/projects/atlas-usv/api.js b/projects/atlas-usv/api.js new file mode 100644 index 0000000000..98969bb597 --- /dev/null +++ b/projects/atlas-usv/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + polygon: { + tvl: () => 0, + staking: index.polygon.staking, + } +} \ No newline at end of file diff --git a/projects/cerberusdao/api.js b/projects/cerberusdao/api.js new file mode 100644 index 0000000000..b83e37f250 --- /dev/null +++ b/projects/cerberusdao/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + ethereum: { + tvl: () => 0, + staking: index.ethereum.staking, + } +} \ No newline at end of file diff --git a/projects/fortress/api.js b/projects/fortress/api.js new file mode 100644 index 0000000000..c96db138de --- /dev/null +++ b/projects/fortress/api.js @@ -0,0 +1,9 @@ +const index = require('./index') + +module.exports = { + avax: { + tvl: () => 0, + staking: index.avax.staking, + } +} + diff --git a/projects/fortunedao/api.js b/projects/fortunedao/api.js new file mode 100644 index 0000000000..3ff57ec34e --- /dev/null +++ b/projects/fortunedao/api.js @@ -0,0 +1,8 @@ +const index = require('../fortunedao.js') + +module.exports = { + cronos: { + tvl: () => 0, + staking: index.cronos.staking, + } +} \ No newline at end of file diff --git a/projects/galaxygoggle/index.js b/projects/galaxygoggle/index.js index 4f3ef05204..68016dc7c2 100644 --- a/projects/galaxygoggle/index.js +++ b/projects/galaxygoggle/index.js @@ -1,59 +1,18 @@ -const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); const GgStaking = "0xBD79c01140CeE7040f8F5E935B72e13540a801b6" const gg = "0xF2F7CE610a091B94d41D69f4fF1129434a82E2f0" -// https://app.galaxygoggle.money/#/bonds -const treasury = "0xD5F922e23693e552793fE0431F9a95ba67A60A23" -const dao = "0xDEEdd1646984F9372Cc9D3d7E13AC1606cC2B548" -const mim = "0x130966628846BFd36ff31a822705796e8cb8C18D" -const wavax = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" -const joe = "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" - -async function tvl(timestamp, block, chainBlocks) { - const balances = {}; - - await sumTokensAndLPsSharedOwners( - balances, - [ - [mim, false], - [wavax, false], - [joe, false], - ["0xe9E8d6b6ce6D94Fc9d724711e80784Ec096949Fc", true], // mim-gg - ], - [treasury, dao], - chainBlocks.avax, - 'avax', - addr=>`avax:${addr}` - ); - - return balances; -} - const bscGG = "0xcAf23964Ca8db16D816eB314a56789F58fE0e10e"; -const bscTreasury = "0xF76C9753507B3Df0867EB02D86d07C6fFcEecaf1"; const bscStaking = "0x97209Cf7a6FccC388eEfF85b35D858756f31690d"; -const treasuryTokensBSC = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD - ["0x13Cf29b3F58f777dDeD38278F7d938401f6b260c", true] // GG-BUSD -] - -async function bscTvl(timestamp, block, chainBlocks) { - let balances = {}; - await sumTokensAndLPsSharedOwners(balances, treasuryTokensBSC, [bscTreasury], chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`); - balances[`avax:${gg}`] = balances["bsc:0xcaf23964ca8db16d816eb314a56789f58fe0e10e"] || 0; - delete balances["bsc:0xcaf23964ca8db16d816eb314a56789f58fe0e10e"]; - return balances; -} module.exports = { avax:{ - tvl, + tvl: () => 0, staking: staking(GgStaking, gg, "avax") }, bsc: { - tvl: bscTvl, + tvl: () => 0, staking: staking(bscStaking, bscGG, "bsc", `avax:${gg}`) }, methodology: diff --git a/projects/goblinscash/api.js b/projects/goblinscash/api.js new file mode 100644 index 0000000000..988beab608 --- /dev/null +++ b/projects/goblinscash/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + smartbch: { + tvl: () => 0, + staking: index.smartbch.staking, + } +} \ No newline at end of file diff --git a/projects/immortal/api.js b/projects/immortal/api.js new file mode 100644 index 0000000000..a2a6e489ab --- /dev/null +++ b/projects/immortal/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + celo: { + tvl: () => 0, + staking: index.celo.staking, + } +} \ No newline at end of file diff --git a/projects/immortal/index.js b/projects/immortal/index.js index fe36dad803..7d3fa9b580 100644 --- a/projects/immortal/index.js +++ b/projects/immortal/index.js @@ -8,6 +8,4 @@ const tokens = [ ["0x7d63809EBF83EF54c7CE8dEd3591D4E8Fc2102eE", true] // IMMO-CUSD ] -module.exports = { - ...ohmTvl(treasury, tokens, "celo", stakingContract, immo) -} +module.exports =ohmTvl(treasury, tokens, "celo", stakingContract, immo) diff --git a/projects/leaguedao/api.js b/projects/leaguedao/api.js new file mode 100644 index 0000000000..b83e37f250 --- /dev/null +++ b/projects/leaguedao/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + ethereum: { + tvl: () => 0, + staking: index.ethereum.staking, + } +} \ No newline at end of file diff --git a/projects/leaguedao/index.js b/projects/leaguedao/index.js index ceaa353291..878ee94c22 100644 --- a/projects/leaguedao/index.js +++ b/projects/leaguedao/index.js @@ -27,7 +27,7 @@ module.exports = { [xyz, false], [ionx, false], [entr, false], - [leagUsdc, true], + [leagUsdc, false], ], "ethereum", stakingContract, diff --git a/projects/luxor/api.js b/projects/luxor/api.js new file mode 100644 index 0000000000..1a05bc80e7 --- /dev/null +++ b/projects/luxor/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + fantom: { + tvl: () => 0, + staking: index.fantom.staking, + } +} \ No newline at end of file diff --git a/projects/o2-dao/index.js b/projects/o2-dao/index.js index 9f056f915e..2db22ba5fc 100644 --- a/projects/o2-dao/index.js +++ b/projects/o2-dao/index.js @@ -1,47 +1,15 @@ -const { sumTokensAndLPsSharedOwners, sumLPWithOnlyOneTokenOtherThanKnown } = require("../helper/unwrapLPs"); const { stakingUnknownPricedLP } = require("../helper/staking"); -const sdk = require('@defillama/sdk') const transform = addr=>`avax:${addr}` const chain = "avax" -const wMEMO = "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b" -const time = "avax:0xb54f16fb19478766a268f172c9480f8da1a7c9c3" -const treasuryAddress = "0x10C12B7322Ac2c5a26bD9929ABc6e6b7997570ba"; const joeLP = "0x7bc2561d69b56fae9760df394a9fa9202c5f1f11" -const treasuryTokens = [ - // gOHM - ["0x321E7092a180BB43555132ec53AaA65a5bF84251", false], - // Joe LP - [joeLP, true], - //wMEMO - [wMEMO, false] -] -const stakingToken = "0xAA2439DBAd718c9329a5893A51a708C015F76346" -async function tvl(timestamp, ethBlock, chainBlocks) { - const block = chainBlocks[chain] - const balances = {} - await sumTokensAndLPsSharedOwners(balances, treasuryTokens.filter(t => t[1] === false), [treasuryAddress], block, chain, transform) - await Promise.all(treasuryTokens.filter(t => t[1] === true).map(t => - sumLPWithOnlyOneTokenOtherThanKnown(balances, t[0], treasuryAddress, stakingToken, block, chain, transform) - )) - const wmemoAddress = transform(wMEMO) - const memo = await sdk.api.abi.call({ - target: wMEMO, - abi: 'function wMEMOToMEMO(uint256 _amount) view returns (uint256)', - chain, - block: chainBlocks.avax, - params: [balances[wmemoAddress]] - }) - balances[time] = memo.output - delete balances[wmemoAddress] - return balances -} +const stakingToken = "0xAA2439DBAd718c9329a5893A51a708C015F76346" module.exports={ avax:{ - tvl, + tvl: () => 0, staking: stakingUnknownPricedLP("0x50971d6B5a3CCd79C516f914208C67C8104977dF", stakingToken, chain, joeLP, transform) } } \ No newline at end of file diff --git a/projects/omicron/api.js b/projects/omicron/api.js new file mode 100644 index 0000000000..469bda32f6 --- /dev/null +++ b/projects/omicron/api.js @@ -0,0 +1,8 @@ +const index = require('./index') + +module.exports = { + arbitrum: { + tvl: () => 0, + staking: index.arbitrum.staking, + } +} \ No newline at end of file diff --git a/projects/templar/api.js b/projects/templar/api.js new file mode 100644 index 0000000000..86cb8cd480 --- /dev/null +++ b/projects/templar/api.js @@ -0,0 +1,16 @@ +const index = require('./index') + +module.exports = { + bsc: { + tvl: () => 0, + staking: index.bsc.staking, + }, + moonriver: { + tvl: () => 0, + staking: index.moonriver.staking, + }, + harmony: { + tvl: () => 0, + staking: index.harmony.staking, + }, +} \ No newline at end of file diff --git a/projects/tipidao/api.js b/projects/tipidao/api.js new file mode 100644 index 0000000000..bea9ee8623 --- /dev/null +++ b/projects/tipidao/api.js @@ -0,0 +1,9 @@ +const index = require('./index') + +module.exports = { + bsc: { + tvl: () => 0, + staking: index.bsc.staking, + } +} + diff --git a/projects/tipidao/index.js b/projects/tipidao/index.js index 843fc1994f..d8ac5f2e51 100644 --- a/projects/tipidao/index.js +++ b/projects/tipidao/index.js @@ -1,15 +1,17 @@ -const { ohmTvl } = require("../helper/ohm"); +const { sumTokensExport } = require('../helper/unwrapLPs') const tpd = "0xd0253dbe5606c9fa01db67eb10be5c3675c2b117"; const tpdStaking = "0xAeab776bE63580cB86309CedB49769e6526abbf4"; const treasury = "0x3287f25f8F29e5d65cE566E5a2a1bd336431d8db"; const treasuryTokens = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD - ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", false], // WBNB - ["0x50bc855ad6a3983589927e5bf3ac0688364ffa64", true] // TPD-BUSD CAKE LP + "0xe9e7cea3dedca5984780bafc599bd69add087d56", // BUSD + "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", // WBNB + "0x50bc855ad6a3983589927e5bf3ac0688364ffa64" // TPD-BUSD CAKE LP ]; module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "bsc", tpdStaking, tpd, undefined, undefined, false) -} \ No newline at end of file + bsc: { + tvl: sumTokensExport({ owner: treasury, tokens: treasuryTokens}), + staking: sumTokensExport({ owner: tpdStaking, tokens: [tpd]}), + } +} diff --git a/projects/treasury/bankofcronos.js b/projects/treasury/bankofcronos.js index 6d948f205a..678cfdb475 100644 --- a/projects/treasury/bankofcronos.js +++ b/projects/treasury/bankofcronos.js @@ -1,6 +1,6 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); -const teamTreasury = "0x1087234fe877721F30016ebeD5BEd061397C8851"; +const teamTreasury = "0xBacF28BF21B374459C738289559EF89978D08102"; const BOC = "0xe5786DDFc4D6DcA0973D1c5b02987cBbac66ed87"; const pBOC = "0xF93fB4CDB0e40dbF33d2cDbf11D9516f6aDd7e8e"; @@ -16,6 +16,6 @@ module.exports = treasuryExports({ '0x062E66477Faf219F25D27dCED647BF57C3107d52',//WBTC ], owners: [teamTreasury], - ownTokens: [BOC, pBOC], + // ownTokens: [BOC, pBOC], }, }) diff --git a/projects/treasury/cerberusdao.js b/projects/treasury/cerberusdao.js new file mode 100644 index 0000000000..a869183ff5 --- /dev/null +++ b/projects/treasury/cerberusdao.js @@ -0,0 +1,3 @@ +module.exports = require("../cerberusdao/index"); + +delete module.exports.ethereum.staking \ No newline at end of file diff --git a/projects/treasury/fortress.js b/projects/treasury/fortress.js new file mode 100644 index 0000000000..30bcdc67e5 --- /dev/null +++ b/projects/treasury/fortress.js @@ -0,0 +1,3 @@ +module.exports = require("../fortress/index"); + +delete module.exports.avax.staking \ No newline at end of file diff --git a/projects/treasury/fortunedao.js b/projects/treasury/fortunedao.js new file mode 100644 index 0000000000..c895f4893f --- /dev/null +++ b/projects/treasury/fortunedao.js @@ -0,0 +1,3 @@ +module.exports = require("../fortunedao"); + +delete module.exports.cronos.staking \ No newline at end of file diff --git a/projects/treasury/galaxygoogle.js b/projects/treasury/galaxygoogle.js new file mode 100644 index 0000000000..d9c4e38269 --- /dev/null +++ b/projects/treasury/galaxygoogle.js @@ -0,0 +1,55 @@ +const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); + +const gg = "0xF2F7CE610a091B94d41D69f4fF1129434a82E2f0" + +// https://app.galaxygoggle.money/#/bonds +const treasury = "0xD5F922e23693e552793fE0431F9a95ba67A60A23" +const dao = "0xDEEdd1646984F9372Cc9D3d7E13AC1606cC2B548" +const mim = "0x130966628846BFd36ff31a822705796e8cb8C18D" +const wavax = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" +const joe = "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" + +async function tvl(timestamp, block, chainBlocks) { + const balances = {}; + + await sumTokensAndLPsSharedOwners( + balances, + [ + [mim, false], + [wavax, false], + [joe, false], + ["0xe9E8d6b6ce6D94Fc9d724711e80784Ec096949Fc", true], // mim-gg + ], + [treasury, dao], + chainBlocks.avax, + 'avax', + addr=>`avax:${addr}` + ); + + return balances; +} + +const bscTreasury = "0xF76C9753507B3Df0867EB02D86d07C6fFcEecaf1"; +const treasuryTokensBSC = [ + ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + ["0x13Cf29b3F58f777dDeD38278F7d938401f6b260c", true] // GG-BUSD +] + +async function bscTvl(timestamp, block, chainBlocks) { + let balances = {}; + await sumTokensAndLPsSharedOwners(balances, treasuryTokensBSC, [bscTreasury], chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`); + balances[`avax:${gg}`] = balances["bsc:0xcaf23964ca8db16d816eb314a56789f58fe0e10e"] || 0; + delete balances["bsc:0xcaf23964ca8db16d816eb314a56789f58fe0e10e"]; + return balances; +} + +module.exports = { + avax:{ + tvl, + }, + bsc: { + tvl: bscTvl, + }, + methodology: + "Counts tokens on the treasury for tvl and staked GG for staking", +}; diff --git a/projects/treasury/goblinscash.js b/projects/treasury/goblinscash.js new file mode 100644 index 0000000000..427f269753 --- /dev/null +++ b/projects/treasury/goblinscash.js @@ -0,0 +1,3 @@ +module.exports = require("../goblinscash/index"); + +delete module.exports.smartbch.staking \ No newline at end of file diff --git a/projects/treasury/immortal.js b/projects/treasury/immortal.js new file mode 100644 index 0000000000..54ec1ab413 --- /dev/null +++ b/projects/treasury/immortal.js @@ -0,0 +1,5 @@ +const olympus = require("../immortal/index"); + +module.exports = olympus; + +delete module.exports.celo.staking \ No newline at end of file diff --git a/projects/treasury/leaguedao.js b/projects/treasury/leaguedao.js new file mode 100644 index 0000000000..750746c490 --- /dev/null +++ b/projects/treasury/leaguedao.js @@ -0,0 +1,5 @@ +const olympus = require("../leaguedao/index"); + +module.exports = olympus; + +delete module.exports.ethereum.staking \ No newline at end of file diff --git a/projects/treasury/luxor.js b/projects/treasury/luxor.js new file mode 100644 index 0000000000..0c7e5cba3b --- /dev/null +++ b/projects/treasury/luxor.js @@ -0,0 +1,5 @@ +const olympus = require("../luxor/index"); + +module.exports = olympus; + +delete module.exports.fantom.staking \ No newline at end of file diff --git a/projects/treasury/o2-dao.js b/projects/treasury/o2-dao.js new file mode 100644 index 0000000000..3cf00e2722 --- /dev/null +++ b/projects/treasury/o2-dao.js @@ -0,0 +1,15 @@ +const { treasuryExports, } = require("../helper/treasury"); + + +module.exports = treasuryExports({ + avax: { + tokens: [ + '0x321E7092a180BB43555132ec53AaA65a5bF84251', + '0x7bc2561d69b56fae9760df394a9fa9202c5f1f11', + '0x0da67235dd5787d67955420c84ca1cecd4e5bb3b', + ], + owners: ['0x10c12b7322ac2c5a26bd9929abc6e6b7997570ba'], + resolveLP: true, + ownTokens: ['0xaa2439dbad718c9329a5893a51a708c015f76346'] + }, +}) diff --git a/projects/treasury/olympus-dao.js b/projects/treasury/olympus-dao.js index cb0bfc9455..85efc449f7 100644 --- a/projects/treasury/olympus-dao.js +++ b/projects/treasury/olympus-dao.js @@ -1,5 +1,3 @@ -const olympus = require("../olympus/index"); - -module.exports = olympus; +module.exports = require("../olympus/index"); delete module.exports.ethereum.staking \ No newline at end of file diff --git a/projects/treasury/omicron.js b/projects/treasury/omicron.js new file mode 100644 index 0000000000..18da651243 --- /dev/null +++ b/projects/treasury/omicron.js @@ -0,0 +1,3 @@ +module.exports = require("../omicron/index"); + +delete module.exports.arbitrum.staking \ No newline at end of file diff --git a/projects/treasury/templar-dao.js b/projects/treasury/templar-dao.js new file mode 100644 index 0000000000..208896bcfd --- /dev/null +++ b/projects/treasury/templar-dao.js @@ -0,0 +1,5 @@ +module.exports = require("../templar/index"); + +delete module.exports.bsc.staking +delete module.exports.moonriver.staking +delete module.exports.harmony.staking \ No newline at end of file diff --git a/projects/treasury/tipidao.js b/projects/treasury/tipidao.js new file mode 100644 index 0000000000..9190d18a5d --- /dev/null +++ b/projects/treasury/tipidao.js @@ -0,0 +1,3 @@ +module.exports = require("../tipidao/index"); + +delete module.exports.bsc.staking \ No newline at end of file diff --git a/projects/treasury/volta-dao.js b/projects/treasury/volta-dao.js new file mode 100644 index 0000000000..e292329620 --- /dev/null +++ b/projects/treasury/volta-dao.js @@ -0,0 +1,4 @@ +module.exports = require("../volta-dao/index"); + +delete module.exports.avax.staking +delete module.exports.fantom.staking \ No newline at end of file diff --git a/projects/treasury/wagmidao.js b/projects/treasury/wagmidao.js new file mode 100644 index 0000000000..f254a65283 --- /dev/null +++ b/projects/treasury/wagmidao.js @@ -0,0 +1,78 @@ +const sdk = require("@defillama/sdk"); +const abi = require("../wagmidao/abi.json"); +const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); +const { + getFixBalancesSync, +} = require("../helper/portedTokens"); + +const bondContracts = [ + //Bond 1USDC + "0xe443F63564216f60625520465F1324043fcC47b9", + //Bond GMI-1USDC + "0x8c4300a7A71efF73b24DCd8f849f82A8B36b5D8a", + //Bond WONE + "0xa31a22d9dec269f512cf62b83039190fbe67f7d2", + //Bond 1ETH + "0x08d44C114e3C0102ace43e9656f478DD4a71cD1D", + //Bond FAM + "0xEfb7DDE5261100a32657C9606507a130257D93c6", +]; + +const GMI = "0x8750f5651af49950b5419928fecefca7c82141e3"; + +const Treasury = async (timesamp, ethBlock, chainBlocks) => { + const balances = {}; + + const tokenAddresses = ( + await sdk.api.abi.multiCall({ + abi: abi.principal, + calls: bondContracts.map((bond) => ({ + target: bond, + })), + chain: "harmony", + block: chainBlocks["harmony"], + }) + ).output.map((t) => t.output); + + const tokenBalances = ( + await sdk.api.abi.multiCall({ + abi: abi.totalPrincipalReceived, + calls: bondContracts.map((bond) => ({ + target: bond, + })), + chain: "harmony", + block: chainBlocks["harmony"], + }) + ).output.map((b) => b.output); + + const lpPositions = []; + tokenAddresses.forEach((token, idx) => { + if (token == "0x73919726cC9d988cEa1a378772e5f775dF33C049") { + lpPositions.push({ token, balance: tokenBalances[idx] }); + } else { + sdk.util.sumSingleBalance( + balances, + `harmony:${token}`, + tokenBalances[idx] + ); + } + }); + + await unwrapUniswapLPs( + balances, + lpPositions, + chainBlocks["harmony"], + "harmony", + ); + + getFixBalancesSync('harmony')(balances); + + return balances; +}; + +module.exports = { + harmony: { + tvl: Treasury, + }, + methodology: "Counts liquidity on the Farms through Factory Contract, and counts Treasury as it is determined by bonding of assets. Staking refers to the staked GMI tokens", +}; diff --git a/projects/volta-dao/api.js b/projects/volta-dao/api.js new file mode 100644 index 0000000000..f7b075a2e5 --- /dev/null +++ b/projects/volta-dao/api.js @@ -0,0 +1,12 @@ +const index = require('./index') + +module.exports = { + fantom: { + tvl: () => 0, + staking: index.fantom.staking, + }, + avax: { + tvl: () => 0, + staking: index.avax.staking, + }, +} \ No newline at end of file diff --git a/projects/wagmidao/index.js b/projects/wagmidao/index.js index 7690efec4d..a7eca0699c 100644 --- a/projects/wagmidao/index.js +++ b/projects/wagmidao/index.js @@ -107,7 +107,7 @@ module.exports = { timetravel: true, harmony: { staking: Staking, - tvl: sdk.util.sumChainTvls([uniTvlExport(factory, 'harmony'), Treasury]), + tvl: sdk.util.sumChainTvls([uniTvlExport(factory, 'harmony'),]), }, methodology: "Counts liquidity on the Farms through Factory Contract, and counts Treasury as it is determined by bonding of assets. Staking refers to the staked GMI tokens", }; diff --git a/utils/testInteractive.js b/utils/testInteractive.js index 98159d1512..ba20144d5c 100644 --- a/utils/testInteractive.js +++ b/utils/testInteractive.js @@ -3,7 +3,7 @@ const childProcess = require('child_process') inquirer.registerPrompt('fuzzypath', require('inquirer-fuzzy-path')) console.log('Starting directory: ' + process.cwd()); try { - process.chdir('./projects/treasury'); + process.chdir('./projects/'); console.log('New directory: ' + process.cwd()); } catch (err) { @@ -57,7 +57,7 @@ async function runAdapter(adapterPath, debugMode) { const startTime = Date.now() - const child = childProcess.fork('../../test.js', [adapterPath], { + const child = childProcess.fork(__dirname +'/../test.js', [adapterPath], { env, }) From 1f8fab0302a095deef767852cde0a61118a71cb0 Mon Sep 17 00:00:00 2001 From: FN-TOKENS <84870847+dc199411@users.noreply.github.com> Date: Sun, 30 Apr 2023 16:43:43 -0400 Subject: [PATCH 0169/1354] Create index.js --- projects/MverseX/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/MverseX/index.js diff --git a/projects/MverseX/index.js b/projects/MverseX/index.js new file mode 100644 index 0000000000..3d4baf5f40 --- /dev/null +++ b/projects/MverseX/index.js @@ -0,0 +1,24 @@ +const {getUniTVL} = require('../helper/unknownTokens') + +module.exports = { + + misrepresentedTokens: true, + + kava:{ + + tvl: getUniTVL({ + + factory: '0xEFD3ad14E5cF09b0EbE435756337fb2e9D10Dc1a', + + fetchBalances: true, + + useDefaultCoreAssets: true, + + //hasStablePools: true, + + }) + + }, + +} + From 29b21528649dc812ec86bd4ec1d3b088cfb673f5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 00:30:22 +0200 Subject: [PATCH 0170/1354] minor refactor --- projects/MverseX/index.js | 24 ------------------------ projects/mversex/index.js | 8 ++++++++ 2 files changed, 8 insertions(+), 24 deletions(-) delete mode 100644 projects/MverseX/index.js create mode 100644 projects/mversex/index.js diff --git a/projects/MverseX/index.js b/projects/MverseX/index.js deleted file mode 100644 index 3d4baf5f40..0000000000 --- a/projects/MverseX/index.js +++ /dev/null @@ -1,24 +0,0 @@ -const {getUniTVL} = require('../helper/unknownTokens') - -module.exports = { - - misrepresentedTokens: true, - - kava:{ - - tvl: getUniTVL({ - - factory: '0xEFD3ad14E5cF09b0EbE435756337fb2e9D10Dc1a', - - fetchBalances: true, - - useDefaultCoreAssets: true, - - //hasStablePools: true, - - }) - - }, - -} - diff --git a/projects/mversex/index.js b/projects/mversex/index.js new file mode 100644 index 0000000000..e1bfac42b5 --- /dev/null +++ b/projects/mversex/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') +module.exports = { + misrepresentedTokens: true, + kava: { + tvl: getUniTVL({ factory: '0xEFD3ad14E5cF09b0EbE435756337fb2e9D10Dc1a', fetchBalances: true, useDefaultCoreAssets: true, }) + }, +} + From 721e24e647560c82796af66f0b708012b4b3ab65 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 00:39:40 +0200 Subject: [PATCH 0171/1354] remove mversex --- projects/mversex/index.js | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 projects/mversex/index.js diff --git a/projects/mversex/index.js b/projects/mversex/index.js deleted file mode 100644 index e1bfac42b5..0000000000 --- a/projects/mversex/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') -module.exports = { - misrepresentedTokens: true, - kava: { - tvl: getUniTVL({ factory: '0xEFD3ad14E5cF09b0EbE435756337fb2e9D10Dc1a', fetchBalances: true, useDefaultCoreAssets: true, }) - }, -} - From abeade879e6c61fb2b9ce335935fdba6c1216b0d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 00:44:35 +0200 Subject: [PATCH 0172/1354] minor refactor --- projects/direct-exchange/index.js | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/projects/direct-exchange/index.js b/projects/direct-exchange/index.js index c05adaeec9..f0ee996735 100644 --- a/projects/direct-exchange/index.js +++ b/projects/direct-exchange/index.js @@ -1,16 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') -const chains = ['kava'] - module.exports = { misrepresentedTokens: true, - methodology: "Use Direct Exchange factory contract to get liquidity pools and token balances.", -}; - -chains.forEach(chain => { - module.exports[chain] = { - tvl: getUniTVL({ - factory: '0xcE08c3d20Ff00a9Cf0D28922768bD606592B5D4C', - useDefaultCoreAssets: true - }) - } -}) \ No newline at end of file + kava: { + tvl: getUniTVL({ factory: '0xcE08c3d20Ff00a9Cf0D28922768bD606592B5D4C', fetchBalances: true, useDefaultCoreAssets: true, }) + }, +} From bd13a953042f2faceb5d0f844b80ef6cf5888327 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 1 May 2023 12:02:41 +0800 Subject: [PATCH 0173/1354] fix: empty block --- projects/goodentry/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/goodentry/index.js b/projects/goodentry/index.js index 04b15c69cd..7ce8473126 100644 --- a/projects/goodentry/index.js +++ b/projects/goodentry/index.js @@ -64,9 +64,7 @@ function geTvl() { try { aTokenAddress = (await sdk.api.abi.call({target: pool, abi: getReserveDataAbi, block, chain, params: atn})).output.aTokenAddress; balance = (await sdk.api.abi.call({target: atn, abi: balanceOfAbi, block, chain, params: aTokenAddress})).output; - } - catch(e) {} - try { + // if it's a ticker, can call underlying const underlying = (await sdk.api.abi.call({target: atn, abi: getUnderlyingAbi, block, chain, params: balance})).output; const token0 = (await sdk.api.abi.call({target: atn, abi: token0Abi, block, chain})).output.token; From 8129ca3c148640fb7d73bdbeaea192dc90c436ec Mon Sep 17 00:00:00 2001 From: Philipp mager Date: Mon, 1 May 2023 10:29:04 +0200 Subject: [PATCH 0174/1354] eris: add migaloo tvl --- projects/eris-protocol/index.js | 86 ++++++++++++++++++++++++--------- projects/helper/chain/cosmos.js | 37 ++++++++------ projects/helper/chains.json | 1 + 3 files changed, 85 insertions(+), 39 deletions(-) diff --git a/projects/eris-protocol/index.js b/projects/eris-protocol/index.js index 89dffd1fb3..6f54de004f 100644 --- a/projects/eris-protocol/index.js +++ b/projects/eris-protocol/index.js @@ -2,6 +2,7 @@ const { queryContract } = require("../helper/chain/terra"); const { queryContract: queryContractCosmos, getBalance, + getBalance2, } = require("../helper/chain/cosmos"); // For testing run @@ -55,19 +56,31 @@ const config = { coinGeckoId: "juno-network", hub: "juno17cya4sw72h4886zsm2lk3udxaw5m8ssgpsl6nd6xl6a4ukepdgkqeuv99x", }, + migaloo: { + coinGeckoId: "white-whale", + hub: "migaloo1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshqdky4", + voteEscrow: + "migaloo1hntfu45etpkdf8prq6p6la9tsnk3u3muf5378kds73c7xd4qdzysuv567q", + ampToken: + "factory/migaloo1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshqdky4/ampWHALE", + }, }; -async function tvlHub(chain) { - let chainConfig = config[chain]; - let coinGeckoId = chainConfig.coinGeckoId; - - const res = await queryContractCosmos({ - contract: chainConfig.hub, +async function getState(chain, contract) { + return queryContractCosmos({ + contract, chain, data: { state: {} }, }); +} - let tvl = +(res.tvl_uluna ?? res.tvl_utoken ?? 0) / 1e6; +async function tvlHub(chain, state) { + let chainConfig = config[chain]; + let coinGeckoId = chainConfig.coinGeckoId; + + state ||= await getState(chain, chainConfig.hub); + + let tvl = +(state.tvl_uluna ?? state.tvl_utoken ?? 0) / 1e6; return { [coinGeckoId]: tvl, }; @@ -77,11 +90,7 @@ async function tvlArbVault(chain) { let chainConfig = config[chain]; let coinGeckoId = chainConfig.coinGeckoId; - const res = await queryContractCosmos({ - contract: chainConfig.arbVault, - chain, - data: { state: {} }, - }); + const res = await getState(chain, chainConfig.arbVault); let tvl = +(res.balances.tvl_utoken ?? 0) / 1e6; return { @@ -89,20 +98,40 @@ async function tvlArbVault(chain) { }; } -async function tvlAmpGovernance(chain) { +async function tvlAmpGovernance(chain, state) { let chainConfig = config[chain]; - let coinGeckoId = chainConfig.coinGeckoIdAmp; - const res = await getBalance({ - owner: chainConfig.voteEscrow, - token: chainConfig.ampToken, - chain, - }); + let isTokenFactory = chainConfig.ampToken.startsWith("factory"); - let tvl = +(res.tvl_uluna ?? res.tvl_utoken ?? 0) / 1e6; - return { - [coinGeckoId]: tvl, - }; + let ampAmount = 0; + + if (isTokenFactory) { + let balances = await getBalance2({ + owner: chainConfig.voteEscrow, + token: isTokenFactory, + chain, + }); + + ampAmount = +(balances[chainConfig.ampToken] ?? 0); + } else { + ampAmount = await getBalance({ + owner: chainConfig.voteEscrow, + token: chainConfig.ampToken, + chain, + }); + } + + if (chainConfig.coinGeckoIdAmp) { + return { + [chainConfig.coinGeckoIdAmp]: ampAmount / 1e6, + }; + } else { + state ||= await getState(chain, chainConfig.hub); + let amount = (ampAmount / 1e6) * +state.exchange_rate; + return { + [chainConfig.coinGeckoId]: amount, + }; + } } async function farm2Tvl(farm) { @@ -183,6 +212,16 @@ function junoTvl() { return mergePromises([tvlHub("juno")]); } +async function migalooTvl() { + let chain = "migaloo"; + let chainConfig = config[chain]; + let state = await getState(chain, chainConfig.hub); + return await mergePromises([ + tvlHub(chain, state), + tvlAmpGovernance(chain, state), + ]); +} + function terra2Tvl() { return mergePromises([ tvlHub("terra2"), @@ -200,4 +239,5 @@ module.exports = { terra: { tvl: terraTvl }, kujira: { tvl: kujiraTvl }, juno: { tvl: junoTvl }, + migaloo: { tvl: migalooTvl }, }; diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 75fe59eee2..adaa03a30b 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -10,7 +10,6 @@ const { log } = require("../utils"); // https://cosmos-chain.directory/chains/cosmoshub // https://cosmos-chain.directory/chains const endPoints = { - crescent: "https://mainnet.crescent.network:1317", osmosis: "https://lcd.osmosis.zone", cosmos: "https://cosmoshub-lcd.stakely.io", @@ -21,9 +20,10 @@ const endPoints = { umee: "https://umee-api.polkachu.com", orai: "https://lcd.orai.io", juno: "https://lcd-juno.cosmostation.io", - cronos: 'https://lcd-crypto-org.cosmostation.io', - injective: 'https://lcd-injective.whispernode.com:443', -} + cronos: "https://lcd-crypto-org.cosmostation.io", + injective: "https://lcd-injective.whispernode.com:443", + migaloo: "https://migaloo-api.polkachu.com", +}; const chainSubpaths = { crescent: "crescent", @@ -32,7 +32,7 @@ const chainSubpaths = { }; function getEndpoint(chain) { - if (!endPoints[chain]) throw new Error("Chain not found: "+ chain); + if (!endPoints[chain]) throw new Error("Chain not found: " + chain); return endPoints[chain]; } @@ -64,24 +64,27 @@ async function queryV1Beta1({ chain, paginationKey, block, url } = {}) { } async function getTokenBalance({ token, owner, block, chain }) { - let denom = token.native_token?.denom - if (denom) return getDenomBalance({denom, owner, block, chain,}) - token = token.token.contract_addr - return getBalance({ token, owner, block, chain, }) + let denom = token.native_token?.denom; + if (denom) return getDenomBalance({ denom, owner, block, chain }); + token = token.token.contract_addr; + return getBalance({ token, owner, block, chain }); } function getToken(token) { - let denom = token.native_token?.denom - return denom ? denom : token.token.contract_addr + let denom = token.native_token?.denom; + return denom ? denom : token.token.contract_addr; } - async function getBalance({ token, owner, block, chain } = {}) { + const data = await queryContract({ + contract: token, + block, + chain, + data: { + balance: { address: owner }, + }, + }); - const data = await queryContract({ contract: token, block, chain, data: { - balance: { address: owner } - }}) - return Number(data.balance); } @@ -90,6 +93,7 @@ async function getDenomBalance({ denom, owner, block, chain } = {}) { if (block !== undefined) { endpoint += `?height=${block - (block % 100)}`; } + console.log("ENDPOINT:", endpoint); const data = (await axios.get(endpoint)).data.result; const balance = data.find((balance) => balance.denom === denom); @@ -205,6 +209,7 @@ module.exports = { endPoints, totalSupply, getBalance, + getBalance2, getDenomBalance, unwrapLp, query, diff --git a/projects/helper/chains.json b/projects/helper/chains.json index b484fd5bd1..1091ac54a9 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -111,6 +111,7 @@ "meta", "meter", "metis", + "migaloo", "milkomeda", "milkomeda_a1", "mixin", From bdf12041a3417a163b20bae1cc7e1309cbdf3370 Mon Sep 17 00:00:00 2001 From: Philipp mager Date: Mon, 1 May 2023 10:34:27 +0200 Subject: [PATCH 0175/1354] remove log --- projects/helper/chain/cosmos.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index adaa03a30b..48b610e057 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -93,7 +93,6 @@ async function getDenomBalance({ denom, owner, block, chain } = {}) { if (block !== undefined) { endpoint += `?height=${block - (block % 100)}`; } - console.log("ENDPOINT:", endpoint); const data = (await axios.get(endpoint)).data.result; const balance = data.find((balance) => balance.denom === denom); From cb479b30e89ff036ddb50d697c5fdffee121bc8c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 11:21:37 +0200 Subject: [PATCH 0176/1354] refactor notional v2 code --- projects/notional/index.js | 64 ++++++++++---------------------------- 1 file changed, 17 insertions(+), 47 deletions(-) diff --git a/projects/notional/index.js b/projects/notional/index.js index 520ab97844..8cf9b46e06 100644 --- a/projects/notional/index.js +++ b/projects/notional/index.js @@ -1,53 +1,23 @@ +const { sumTokens2 } = require('../helper/unwrapLPs'); const abi = require('./abi'); -const sdk = require('@defillama/sdk'); const v2Contract = "0x1344A36A1B56144C3Bc62E7757377D288fDE0369" -async function tvl (timestamp, block) { - const maxCurrencyId = (await sdk.api.abi.call({ - block, - target: v2Contract, - abi: abi['getMaxCurrencyId'] - })).output; - - const addressCalls = [] - for (let i = 1; i <= maxCurrencyId; i++) { - addressCalls.push({ - target: v2Contract, - params: i - }) - } - - const supportedTokens = (await sdk.api.abi.multiCall({ - calls: addressCalls, - target: v2Contract, - abi: abi['getCurrency'], - block, - })).output - - const balanceCalls = supportedTokens.map((s) => { - return { - // Target is the asset token address, first parameter, first slot in tuple - target: s.output[0][0], - params: v2Contract - } - }) - - const balances = (await sdk.api.abi.multiCall({ - calls: balanceCalls, - abi: 'erc20:balanceOf', - block - })).output - - const balanceMap = balances.reduce((obj, b) => { - obj[b.input.target] = b.output - return obj - }, {}) - - return balanceMap +async function tvl(timestamp, block, _, { api }) { + let tokens = await api.fetchList({ lengthAbi: abi.getMaxCurrencyId, itemAbi: abi.getCurrency, target: v2Contract, startFromOne: true, }) + tokens = tokens.flat().map(i => i[0]) + const tokenNames = await api.multiCall({ abi: 'string:name', calls: tokens, permitFailure: true, }) + const nwTokens = tokens.filter((v, i) => tokenNames[i] && tokenNames[i].startsWith('Notional Wrapped')) + let nwBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: nwTokens.map(i => ({ target: i, params: v2Contract}))}) + const underlyingTokens = await api.multiCall({ abi: 'address:underlying', calls: nwTokens}) + const exchangeRate = await api.multiCall({ abi: 'uint256:getExchangeRateView', calls: nwTokens}) + const tDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: nwTokens}) + const uDecimals =( await api.multiCall({ abi: 'erc20:decimals', calls: nwTokens, permitFailure: true,})).map(i => i ?? 18) + nwBals = nwBals.map((bal, i) => bal * (exchangeRate[i]/1e18) * (10 ** uDecimals[i] / 10 ** tDecimals[i])) + api.addTokens(underlyingTokens, nwBals) + return sumTokens2({ api, owner: v2Contract, tokens, blacklistedTokens: nwTokens }) } - module.exports = { - //start: 1602115200, // Oct-08-2020 12:00:00 AM +UTC - ethereum: { tvl }, - }; \ No newline at end of file +module.exports = { + ethereum: { tvl }, +}; \ No newline at end of file From 5e221635427f4b582efea955f290a7fc1388c505 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 12:29:22 +0200 Subject: [PATCH 0177/1354] minor fix --- projects/slsd/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/slsd/index.js b/projects/slsd/index.js index b5373d24fc..30fd8b8c9b 100644 --- a/projects/slsd/index.js +++ b/projects/slsd/index.js @@ -3,6 +3,8 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const FACTORY_CONTRACT = "0x253924C4D0806Fd6A81f72e0bEa400CD97c64700"; const SLSD_LP = '0x712Ed536645e66d0d8605d3cB22d1ed3b2Dc255B'; +const SLSD = '0xB668f51f1D63452b566456053fA348c3037E2B1F'; +const eSLSD = '0x2dd8f7378fce12c9dfe36a6c155fc2446d18b3f9'; const abis = { "getStakingTokens": "function getStakingTokens() view returns (address[])", "getStakingPoolAddress": "function getStakingPoolAddress(address) view returns (address)", @@ -17,13 +19,13 @@ async function tvl(_, _1, _2, { api }) { owners.push(owners[i]) } }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens: [SLSD_LP] }) + return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens: [SLSD_LP, SLSD, eSLSD,] }) } module.exports = { start: 17142918, ethereum: { tvl, - staking: staking('0xBE13DC5235a64d090E9c62952654DBF3c65199d9', SLSD_LP) + pool2: staking('0xBE13DC5235a64d090E9c62952654DBF3c65199d9', SLSD_LP) } }; From 57055233c7f8b2bbd6cfcae795c424f17abee73e Mon Sep 17 00:00:00 2001 From: codehans <94654388+codehans@users.noreply.github.com> Date: Mon, 1 May 2023 11:43:54 +0100 Subject: [PATCH 0178/1354] use cosmos.directory for lcd --- projects/helper/chain/cosmos.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 75fe59eee2..70072a4a9a 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -14,7 +14,7 @@ const endPoints = { crescent: "https://mainnet.crescent.network:1317", osmosis: "https://lcd.osmosis.zone", cosmos: "https://cosmoshub-lcd.stakely.io", - kujira: "https://lcd.kaiyo.kujira.setten.io", + kujira: "https://rest.cosmos.directory/kujira", comdex: "https://rest.comdex.one", terra: "https://terraclassic-lcd-server-01.stakely.io", terra2: "https://phoenix-lcd.terra.dev", From fdc340d39d599efb1f668208f285d58e7e516ad5 Mon Sep 17 00:00:00 2001 From: allush Date: Mon, 1 May 2023 13:46:34 +0300 Subject: [PATCH 0179/1354] feat: Symbiosis adds optimism --- projects/symbiosis-finance/config.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 3ba7b6a362..3e812fa8e6 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -108,5 +108,12 @@ module.exports = { '0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9', // portal v2 ] }, + { + name: 'optimism', + stable: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', // USDC + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From fdcb5c8fde90437d7ed4ca96eb6e9e667377668e Mon Sep 17 00:00:00 2001 From: define Date: Mon, 1 May 2023 12:36:07 +0100 Subject: [PATCH 0180/1354] treasuries adapters --- projects/treasury/axelar.js | 12 ++++++++++++ projects/treasury/insure-dao.js | 12 ++++++++++++ projects/treasury/liquity-treasury.js | 9 +++++++++ projects/treasury/relay.js | 12 ++++++++++++ projects/treasury/router.js | 12 ++++++++++++ projects/treasury/spherium.js | 12 ++++++++++++ projects/treasury/stake-dao.js | 12 ++++++++++++ projects/treasury/we-piggy.js | 12 ++++++++++++ projects/treasury/zero-swap.js | 12 ++++++++++++ projects/treasury/zyber-swap.js | 12 ++++++++++++ 10 files changed, 117 insertions(+) create mode 100644 projects/treasury/axelar.js create mode 100644 projects/treasury/insure-dao.js create mode 100644 projects/treasury/relay.js create mode 100644 projects/treasury/router.js create mode 100644 projects/treasury/spherium.js create mode 100644 projects/treasury/stake-dao.js create mode 100644 projects/treasury/we-piggy.js create mode 100644 projects/treasury/zero-swap.js create mode 100644 projects/treasury/zyber-swap.js diff --git a/projects/treasury/axelar.js b/projects/treasury/axelar.js new file mode 100644 index 0000000000..d9a19ed5d2 --- /dev/null +++ b/projects/treasury/axelar.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x8d9249e6049bb17c15007bc58a5bec12a5af4346"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/insure-dao.js b/projects/treasury/insure-dao.js new file mode 100644 index 0000000000..659b49ea45 --- /dev/null +++ b/projects/treasury/insure-dao.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xd076397ec36f1c92939bd8cda9f9f7734f308c4b"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/liquity-treasury.js b/projects/treasury/liquity-treasury.js index 18c732cec4..1269ed87e2 100644 --- a/projects/treasury/liquity-treasury.js +++ b/projects/treasury/liquity-treasury.js @@ -6,10 +6,13 @@ const treasury2 = "0xcCb2656afB1Cc4cB130e8C8C903ad674069c6FCD"; const treasuryOP = "0xd2D4e9024D8C90aB52032a9F1e0d92D4cE20191B"; const treasuryOP2 = "0x2f593f151aF4bb9A71bcA6cAce1d3c56C2844117"; +const treasuryARB = "0xc5adb3d91329e1600cbf573485b1d3207bcf6de2" + const LQTY = "0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d"; + module.exports = treasuryExports({ ethereum: { tokens: [ @@ -31,5 +34,11 @@ module.exports = treasuryExports({ '0x3c8B650257cFb5f272f799F5e2b4e65093a11a05',//velo ], owners: [treasuryOP, treasuryOP2], + }, + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasuryARB], } }) \ No newline at end of file diff --git a/projects/treasury/relay.js b/projects/treasury/relay.js new file mode 100644 index 0000000000..41c93ce360 --- /dev/null +++ b/projects/treasury/relay.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xf803dce584b7ecb57f90af0b85e67dac7e0da6d9"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/router.js b/projects/treasury/router.js new file mode 100644 index 0000000000..ad39b2f063 --- /dev/null +++ b/projects/treasury/router.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xdb8f4c4c68e5e5eb501fee1adaa87ee767bcade7"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/spherium.js b/projects/treasury/spherium.js new file mode 100644 index 0000000000..a347f04b2b --- /dev/null +++ b/projects/treasury/spherium.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x2c41fb81cfc64cd1373058f2a13289819641d223"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/stake-dao.js b/projects/treasury/stake-dao.js new file mode 100644 index 0000000000..c5569ad78b --- /dev/null +++ b/projects/treasury/stake-dao.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xfdb1157ac847d334b8912df1cd24a93ee22ff3d0"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/we-piggy.js b/projects/treasury/we-piggy.js new file mode 100644 index 0000000000..9be17cb8c9 --- /dev/null +++ b/projects/treasury/we-piggy.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x0d189fd8d46e43b2f13390de95d4f8e185eb3914"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/zero-swap.js b/projects/treasury/zero-swap.js new file mode 100644 index 0000000000..634bfcdb6c --- /dev/null +++ b/projects/treasury/zero-swap.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x70f4f7a85100348fc33f1d8005703c8953bc67fd"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/zyber-swap.js b/projects/treasury/zyber-swap.js new file mode 100644 index 0000000000..a313ffcc4b --- /dev/null +++ b/projects/treasury/zyber-swap.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x5be4fb908a43d61b1c8086fe62e39ae8ec483926"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file From 924f285e1b20991a971e8266187d123d35690339 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 1 May 2023 13:21:58 +0100 Subject: [PATCH 0181/1354] more treasuries --- projects/treasury/3xcalibur.js | 12 ++++++++++++ projects/treasury/across.js | 12 ++++++++++++ projects/treasury/apex-protocol.js | 12 ++++++++++++ projects/treasury/convex.js | 7 +++++++ projects/treasury/cryptex.js | 12 ++++++++++++ projects/treasury/cvi.js | 12 ++++++++++++ projects/treasury/frax.js | 9 +++++++++ projects/treasury/hegic.js | 12 ++++++++++++ projects/treasury/impermax.js | 12 ++++++++++++ projects/treasury/p-network.js | 12 ++++++++++++ projects/treasury/synapse.js | 12 ++++++++++++ 11 files changed, 124 insertions(+) create mode 100644 projects/treasury/3xcalibur.js create mode 100644 projects/treasury/across.js create mode 100644 projects/treasury/apex-protocol.js create mode 100644 projects/treasury/cryptex.js create mode 100644 projects/treasury/cvi.js create mode 100644 projects/treasury/hegic.js create mode 100644 projects/treasury/impermax.js create mode 100644 projects/treasury/p-network.js create mode 100644 projects/treasury/synapse.js diff --git a/projects/treasury/3xcalibur.js b/projects/treasury/3xcalibur.js new file mode 100644 index 0000000000..89d7333282 --- /dev/null +++ b/projects/treasury/3xcalibur.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x5f49174fdeb42959f3234053b18f5c4ad497cc55"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/across.js b/projects/treasury/across.js new file mode 100644 index 0000000000..02c9135dcf --- /dev/null +++ b/projects/treasury/across.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xd16d904b68429b93f1dfcd837f61aedcd224e8f4"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/apex-protocol.js b/projects/treasury/apex-protocol.js new file mode 100644 index 0000000000..9f1d5f8525 --- /dev/null +++ b/projects/treasury/apex-protocol.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xae792a7bf5f85a68ffe92bfbfa7a04c72d7cb095"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/convex.js b/projects/treasury/convex.js index 62316340b3..0650de290a 100644 --- a/projects/treasury/convex.js +++ b/projects/treasury/convex.js @@ -2,6 +2,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const convexTreasuryVault = "0x1389388d01708118b497f59521f6943Be2541bb7"; const cvx = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; const cvxCrv = "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7"; +const treasuryARB = "0x6111abf720051309012fcdbc2910054e41dcff8c" module.exports = treasuryExports({ ethereum: { @@ -22,4 +23,10 @@ module.exports = treasuryExports({ owners: [convexTreasuryVault], ownTokens: [cvx, cvxCrv], }, + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasuryARB], + }, }); diff --git a/projects/treasury/cryptex.js b/projects/treasury/cryptex.js new file mode 100644 index 0000000000..4f3d0603b6 --- /dev/null +++ b/projects/treasury/cryptex.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x9474b771fb46e538cfed114ca816a3e25bb346cf"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/cvi.js b/projects/treasury/cvi.js new file mode 100644 index 0000000000..b783f75290 --- /dev/null +++ b/projects/treasury/cvi.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x7f4b135782c4a3b1c78c93f23f2016cb5cd96cc8"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/frax.js b/projects/treasury/frax.js index bb6cd9e07c..6afee13fc0 100644 --- a/projects/treasury/frax.js +++ b/projects/treasury/frax.js @@ -4,6 +4,7 @@ const treasury = "0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48"; const fpis = "0xc2544A32872A91F4A553b404C6950e89De901fdb"; const fxs = "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0"; const frax = "0x853d955aCEf822Db058eb8505911ED77F175b99e"; +const treasuryarb = "0xe61d9ed1e5dc261d1e90a99304fadcef2c76fd10" module.exports = treasuryExports({ ethereum: { @@ -21,4 +22,12 @@ module.exports = treasuryExports({ ], ownTokens: [fpis, fxs, frax], }, + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [ + treasuryarb, + ], + }, }); diff --git a/projects/treasury/hegic.js b/projects/treasury/hegic.js new file mode 100644 index 0000000000..95de35b1ab --- /dev/null +++ b/projects/treasury/hegic.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xf15968a096fc8f47650001585d23bee819b5affb"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/impermax.js b/projects/treasury/impermax.js new file mode 100644 index 0000000000..8ec65d3c2a --- /dev/null +++ b/projects/treasury/impermax.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x7f959c082bc30f3ea88187fac1a640438ad7bf20"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/p-network.js b/projects/treasury/p-network.js new file mode 100644 index 0000000000..1bd37185b9 --- /dev/null +++ b/projects/treasury/p-network.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xcdb0b4b32d22084f6a20aeafaa389c9ed8865945"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file diff --git a/projects/treasury/synapse.js b/projects/treasury/synapse.js new file mode 100644 index 0000000000..c2f1e03460 --- /dev/null +++ b/projects/treasury/synapse.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x1d9bfc24d9e7eeda4119ceca11eaf4c24e622e62"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury,], + }, +}) \ No newline at end of file From 031294475bfac8d150f60b089426adb3c15ef31f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 15:04:05 +0200 Subject: [PATCH 0182/1354] add debtdao --- projects/debtdao/index.js | 92 +++++++++++++++++++++++++++++++++++++++ projects/mversex/index.js | 7 +++ 2 files changed, 99 insertions(+) create mode 100644 projects/debtdao/index.js create mode 100644 projects/mversex/index.js diff --git a/projects/debtdao/index.js b/projects/debtdao/index.js new file mode 100644 index 0000000000..8f7d5ae3f6 --- /dev/null +++ b/projects/debtdao/index.js @@ -0,0 +1,92 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + ethereum: { + moduleFactory: '0x00A3699F677C252CA32B887F9f66621920D392f8', + moduleFactoryStart: 16970379, + lineFactory: '0xc9ef6509a09b92043cedce689dfaa760048abd7f', + lineFactoryStart: 16970396, + }, + // xdai: { + // moduleFactory: '0x00A3699F677C252CA32B887F9f66621920D392f8', + // moduleFactoryStart: 27253390, + // lineFactory: '0xc9ef6509a09b92043cedce689dfaa760048abd7f', + // lineFactoryStart: 27253485, + // }, +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const { moduleFactory, moduleFactoryStart, lineFactory, lineFactoryStart, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const ownerTokens = [] + const escrowLogs = await getLogs({ + api, + target: moduleFactory, + topics: ['0x795112e1546f70e94f47252ccd7189f90d711b2e6557885dc3def7b589c7f7ac'], + eventAbi: 'event DeployedEscrow (address indexed deployedAt, uint32 indexed minCRatio, address indexed oracle, address owner)', + onlyArgs: true, + fromBlock: moduleFactoryStart, + }) + const lineLogs = await getLogs({ + api, + target: lineFactory, + topics: ['0xc043ebb31424e42a4ec1454f0de8a7ab9ba0443b8b556c538484c873ae8e64b5'], + eventAbi: 'event DeployedSecuredLine (address indexed deployedAt, address indexed escrow, address indexed spigot, address swapTarget, uint8 revenueSplit)', + onlyArgs: true, + fromBlock: lineFactoryStart, + }) + + await Promise.all(escrowLogs.map(async (log) => { + const escrow = log.deployedAt + const tokenLogs = await getLogs({ + api, + target: escrow, + topic: 'EnableCollateral(address)', + eventAbi: 'event EnableCollateral(address indexed token)', + onlyArgs: true, + fromBlock: moduleFactoryStart, + }) + ownerTokens.push([tokenLogs.map(i => i.token), escrow]) + })) + await Promise.all(lineLogs.map(async (log) => { + const target = log.deployedAt + const counts = await api.call({ abi: "function counts() view returns (uint256, uint256)", target }) + const calls = [] + for (let i = 0; i < counts[0]; i++) calls.push(i) + const proposals = await api.multiCall({ abi: "function ids(uint256) view returns (bytes32)", calls, target }) + const credits = await api.multiCall({ abi: "function credits(bytes32) view returns (uint256 deposit, uint256 principal, uint256 interestAccrued, uint256 interestRepaid, uint8 decimals, address token, address lender, bool isOpen)", calls: proposals, target }) + ownerTokens.push([credits.map(i => i.token), target]) + })) + return sumTokens2({ api, ownerTokens }) + }, + borrowed: async (_, _b, _cb, { api, }) => { + const lineLogs = await getLogs({ + api, + target: lineFactory, + topics: ['0xc043ebb31424e42a4ec1454f0de8a7ab9ba0443b8b556c538484c873ae8e64b5'], + eventAbi: 'event DeployedSecuredLine (address indexed deployedAt, address indexed escrow, address indexed spigot, address swapTarget, uint8 revenueSplit)', + onlyArgs: true, + fromBlock: lineFactoryStart, + }) + + await Promise.all(lineLogs.map(async (log) => { + const target = log.deployedAt + const counts = await api.call({ abi: "function counts() view returns (uint256, uint256)", target }) + const calls = [] + for (let i = 0; i < counts[0]; i++) calls.push(i) + const proposals = await api.multiCall({ abi: "function ids(uint256) view returns (bytes32)", calls, target }) + const credits = await api.multiCall({ abi: "function credits(bytes32) view returns (uint256 deposit, uint256 principal, uint256 interestAccrued, uint256 interestRepaid, uint8 decimals, address token, address lender, bool isOpen)", calls: proposals, target }) + credits.map(i => { + api.add(i.token, i.principal) + // api.add(i.token, i.interestAccrued) + // api.add(i.token, i.interestRepaid * -1) + }) + })) + } + } +}) \ No newline at end of file diff --git a/projects/mversex/index.js b/projects/mversex/index.js new file mode 100644 index 0000000000..b157b59a4d --- /dev/null +++ b/projects/mversex/index.js @@ -0,0 +1,7 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + kava: { + tvl: getUniTVL({ factory: "0xd72441aCa423dE457cF866aAD8083A403b11b08B", useDefaultCoreAssets: true, fetchBalances: true, }), + }, +}; From b5af6218b607032c73ddb3e3680320b5c89680f6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 15:22:06 +0200 Subject: [PATCH 0183/1354] add papr.wtf --- projects/papr-wtf/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/papr-wtf/index.js diff --git a/projects/papr-wtf/index.js b/projects/papr-wtf/index.js new file mode 100644 index 0000000000..a0c01135b4 --- /dev/null +++ b/projects/papr-wtf/index.js @@ -0,0 +1,20 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') + +async function tvl(_, _b, _cb, { api, }) { + + const controller = '0x3b29c19ff2fcea0ff98d0ef5b184354d74ea74b0' + const logs = await getLogs({ + api, + target: controller, + topic: 'AllowCollateral(address,bool)', + eventAbi: 'event AllowCollateral(address indexed collateral, bool isAllowed)', + onlyArgs: true, + fromBlock: 16592385, + }) + return sumTokens2({ api, owner: controller, tokens: logs.map(i => i.collateral)}) +} + +module.exports = { + ethereum: { tvl } +} From ea857e15b3082788c3734ad91bfdf25acfb21e28 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 16:44:12 +0200 Subject: [PATCH 0184/1354] LSDx refactor code --- projects/lsdx/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/lsdx/index.js b/projects/lsdx/index.js index 89ddbd7da0..787fd1c7b7 100644 --- a/projects/lsdx/index.js +++ b/projects/lsdx/index.js @@ -2,7 +2,9 @@ const { staking } = require("../helper/staking"); const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const FACTORY_CONTRACT = "0x3B4b6B14d07A645005658E6Ea697edb0BD7bf2b1"; -const LSD_LP = '0x3322f41dfa379B6D3050C1e271B0b435b3Ee3303' +const ETHx = '0x21ead867c8c5181854f6f8ce71f75b173d2bc16a' +const LSD = '0xfac77a24e52b463ba9857d6b758ba41ae20e31ff' +const LSD_LPs = ['0x3322f41dfa379B6D3050C1e271B0b435b3Ee3303', '0x3ab2ebbe52f4a80098a461cf9ecdade2ed645fc4'] const abis = { "getStakingTokens": "function getStakingTokens() view returns (address[])", "getStakingPoolAddress": "function getStakingPoolAddress(address) view returns (address)", @@ -17,13 +19,14 @@ async function tvl(_, _1, _2, { api }) { owners.push(owners[i]) } }) - return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens: [LSD_LP] }) + return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens: [...LSD_LPs, ETHx, LSD] }) } module.exports = { start: 16831303, ethereum: { tvl, - staking: staking('0x1D31755E03119311c7F00ae107874dddEC7573f3', LSD_LP) + pool2: staking(['0x1D31755E03119311c7F00ae107874dddEC7573f3', '0xE05630Da82604591F002b61F7116429CfDC4B542'], LSD_LPs), + staking: staking(['0xcA73C2aBA8EECb37EA1648999A7b08787b808ee2'], ETHx), } }; From 50d7be1d442e16dfafce62a3145c58b22c2e3e69 Mon Sep 17 00:00:00 2001 From: MirthFutures Date: Mon, 1 May 2023 10:51:18 -0400 Subject: [PATCH 0185/1354] Add zkSync to Beefy --- projects/beefy/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index 80f2fe078c..f26b625255 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -32,6 +32,7 @@ const chains = { heco: 128, polygon: 137, fantom: 250, + zksync: 324, metis: 1088, moonbeam: 1284, moonriver: 1285, From 1096c0ffde95152d65ff753d98923047607af58a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 16:56:26 +0200 Subject: [PATCH 0186/1354] Add ETHx --- projects/ethx/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/ethx/index.js diff --git a/projects/ethx/index.js b/projects/ethx/index.js new file mode 100644 index 0000000000..cb3a1cea9b --- /dev/null +++ b/projects/ethx/index.js @@ -0,0 +1,12 @@ +const { staking } = require('../helper/staking') + +module.exports = { + ethereum: { + tvl: staking('0x7b0Eff0C991F0AA880481FdFa5624Cb0BC9b10e1', [ + '0x0000000000000000000000000000000000000000', + '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', + '0x5E8422345238F34275888049021821E8E08CAa1f', + '0xae78736Cd615f374D3085123A210448E74Fc6393', + ]), + } +} \ No newline at end of file From 4fa28b26bf6c6637ad744717c319553fb0b2c8a9 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 1 May 2023 16:05:24 +0100 Subject: [PATCH 0187/1354] remaining treasuries --- projects/treasury/deri-protocol.js | 12 ++++++++++++ projects/treasury/futureswap.js | 12 ++++++++++++ projects/treasury/handlefi.js | 12 ++++++++++++ projects/treasury/lyra.js | 12 ++++++++++++ projects/treasury/o3-swap.js | 12 ++++++++++++ projects/treasury/open-oceans.js | 12 ++++++++++++ projects/treasury/qidao.js | 12 ++++++++++++ 7 files changed, 84 insertions(+) create mode 100644 projects/treasury/deri-protocol.js create mode 100644 projects/treasury/futureswap.js create mode 100644 projects/treasury/handlefi.js create mode 100644 projects/treasury/lyra.js create mode 100644 projects/treasury/o3-swap.js create mode 100644 projects/treasury/open-oceans.js create mode 100644 projects/treasury/qidao.js diff --git a/projects/treasury/deri-protocol.js b/projects/treasury/deri-protocol.js new file mode 100644 index 0000000000..56243093f9 --- /dev/null +++ b/projects/treasury/deri-protocol.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x20a5c32ee19bcdb2635455859e64ba5a1d1acab2"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/futureswap.js b/projects/treasury/futureswap.js new file mode 100644 index 0000000000..dbcde2ecee --- /dev/null +++ b/projects/treasury/futureswap.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xdb08917e0ae9075c6577b6a11d0bb78dfbc381e4"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/handlefi.js b/projects/treasury/handlefi.js new file mode 100644 index 0000000000..ef62616dfd --- /dev/null +++ b/projects/treasury/handlefi.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xac459b2b29401b5a4ea90de4320d0956cf86cdbd"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/lyra.js b/projects/treasury/lyra.js new file mode 100644 index 0000000000..6881e6b033 --- /dev/null +++ b/projects/treasury/lyra.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x2ccf21e5912e9ecccb0ecdee9744e5c507cf88ae"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/o3-swap.js b/projects/treasury/o3-swap.js new file mode 100644 index 0000000000..a8cf7a14d7 --- /dev/null +++ b/projects/treasury/o3-swap.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xb23d6fc44e40e56cb3b0d2c28ba3d7a170a07a49"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/open-oceans.js b/projects/treasury/open-oceans.js new file mode 100644 index 0000000000..8b3ce5c8b9 --- /dev/null +++ b/projects/treasury/open-oceans.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x61e807038ae880d964a15a57c8cc74a634bccc26"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + }, +}) \ No newline at end of file diff --git a/projects/treasury/qidao.js b/projects/treasury/qidao.js new file mode 100644 index 0000000000..09fbde3d48 --- /dev/null +++ b/projects/treasury/qidao.js @@ -0,0 +1,12 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xf32e759d5f1c63ed62042497d3a50f044ee0982b"; + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + }, +}) \ No newline at end of file From af1226f209d5f776efbb5fb4c934888fe3249900 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 1 May 2023 18:01:50 +0100 Subject: [PATCH 0188/1354] add ETH treasury address cryptex --- projects/treasury/cryptex.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/projects/treasury/cryptex.js b/projects/treasury/cryptex.js index 4f3d0603b6..8b9b47ec0a 100644 --- a/projects/treasury/cryptex.js +++ b/projects/treasury/cryptex.js @@ -1,12 +1,21 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); -const treasury = "0x9474b771fb46e538cfed114ca816a3e25bb346cf"; - +const treasuryARB = "0x9474b771fb46e538cfed114ca816a3e25bb346cf"; +const treasuryETH = "0xa54074b2cc0e96a43048d4a68472F7F046aC0DA8" +const ctx = "0x321C2fE4446C7c963dc41Dd58879AF648838f98D" module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, ], - owners: [treasury,], + owners: [treasuryARB], + }, + ethereum: { + tokens: [ + nullAddress, + ], + owners: [treasuryETH], + ownTokens: [ctx], + }, }) \ No newline at end of file From d3c11ee330cdf8204e96143815b083946619ad06 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 19:10:33 +0200 Subject: [PATCH 0189/1354] remove redundant code --- projects/notional/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/notional/index.js b/projects/notional/index.js index 8cf9b46e06..fbff298d43 100644 --- a/projects/notional/index.js +++ b/projects/notional/index.js @@ -11,9 +11,7 @@ async function tvl(timestamp, block, _, { api }) { let nwBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: nwTokens.map(i => ({ target: i, params: v2Contract}))}) const underlyingTokens = await api.multiCall({ abi: 'address:underlying', calls: nwTokens}) const exchangeRate = await api.multiCall({ abi: 'uint256:getExchangeRateView', calls: nwTokens}) - const tDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: nwTokens}) - const uDecimals =( await api.multiCall({ abi: 'erc20:decimals', calls: nwTokens, permitFailure: true,})).map(i => i ?? 18) - nwBals = nwBals.map((bal, i) => bal * (exchangeRate[i]/1e18) * (10 ** uDecimals[i] / 10 ** tDecimals[i])) + nwBals = nwBals.map((bal, i) => bal * (exchangeRate[i]/1e18)) api.addTokens(underlyingTokens, nwBals) return sumTokens2({ api, owner: v2Contract, tokens, blacklistedTokens: nwTokens }) } From 7b5a904b584e7d80ce03f2f3f55d35450452b097 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Mon, 1 May 2023 21:44:14 +0200 Subject: [PATCH 0190/1354] Add Blur Lend (Blend) adapter --- projects/blur-lend/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/blur-lend/index.js diff --git a/projects/blur-lend/index.js b/projects/blur-lend/index.js new file mode 100644 index 0000000000..0bc033ad33 --- /dev/null +++ b/projects/blur-lend/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +const collateralProxy = "0x29469395eAf6f95920E59F858042f0e28D98a20B" + +module.exports = { + misrepresentedTokens: true, + methodology: 'TVL counts NFTs used as collateral to take out loans', + ethereum: { + tvl: sumTokensExport({ owners: [collateralProxy], resolveNFTs: true, }), + } +} From e2ec4c02e238a8981f58baec8b5e9de724cb6bb0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 May 2023 21:53:14 +0200 Subject: [PATCH 0191/1354] track blend --- projects/blend/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/blend/index.js diff --git a/projects/blend/index.js b/projects/blend/index.js new file mode 100644 index 0000000000..061b46c0dd --- /dev/null +++ b/projects/blend/index.js @@ -0,0 +1,6 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const contract = '0x29469395eaf6f95920e59f858042f0e28d98a20b' + +module.exports = { + ethereum: { tvl: sumTokensExport({ owner: contract, resolveNFTs: true, }) } +} \ No newline at end of file From 7b888c063e07386f323dff659e1ecca548c3691b Mon Sep 17 00:00:00 2001 From: Roy Wang Date: Mon, 1 May 2023 16:19:02 -0500 Subject: [PATCH 0192/1354] feat: add zoodao tvl --- projects/zoodao/abis/battle-arena-abi.json | 3 ++ projects/zoodao/index.js | 44 ++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 projects/zoodao/abis/battle-arena-abi.json create mode 100644 projects/zoodao/index.js diff --git a/projects/zoodao/abis/battle-arena-abi.json b/projects/zoodao/abis/battle-arena-abi.json new file mode 100644 index 0000000000..fd649c183b --- /dev/null +++ b/projects/zoodao/abis/battle-arena-abi.json @@ -0,0 +1,3 @@ +{ + "sharesToTokens": "function sharesToTokens(uint256 sharesAmount) public returns (uint256 tokens)" +} diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js new file mode 100644 index 0000000000..761b56cd8b --- /dev/null +++ b/projects/zoodao/index.js @@ -0,0 +1,44 @@ +const sdk = require('@defillama/sdk'); +const battleArenaAbi = require('./abis/battle-arena-abi.json') + +const VAULT_CONTRACT = '0x1C55649f73CDA2f72CEf3DD6C5CA3d49EFcF484C'; +const BATTLE_ARENA_CONTRACT = '0x0ADeb5A930875606F325e114FD5147148e042828'; +const FRAX_TOKEN = "0x322e86852e492a7ee17f28a78c663da38fb33bfb" +const ZOODAO_TOKEN = "0x7cd3e6e1A69409deF0D78D17a492e8e143F40eC5" + +async function tvl(_, _1, _2, { api }) { + const balances = {}; + + const vaultStablecoinStaked = await api.call({ + abi: 'erc20:balanceOf', + target: VAULT_CONTRACT, + params: [BATTLE_ARENA_CONTRACT] + }); + + const totalFRAX = await api.call({ + abi: battleArenaAbi.sharesToTokens, + target: BATTLE_ARENA_CONTRACT, + params: [vaultStablecoinStaked] + }); + + // TOTAL FRAX BALANCE + await sdk.util.sumSingleBalance(balances, FRAX_TOKEN, totalFRAX, api.chain) + + const totalZooStaked = await api.call({ + abi: 'erc20:balanceOf', + target: ZOODAO_TOKEN, + params: [BATTLE_ARENA_CONTRACT] + }); + + // TOTAL ZOODAO BALANCE + await sdk.util.sumSingleBalance(balances, ZOODAO_TOKEN, totalZooStaked, api.chain) + + return balances; +} + +module.exports = { + methodology: "Counts the supplied value of FRAX and ZOO through ZooDAO's contracts", + moonbeam: { + tvl + }, +}; From bb91dc3ee76f5c09ce629874054b849fd8e643ee Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 2 May 2023 05:35:04 +0100 Subject: [PATCH 0193/1354] team depreciating moonriver --- projects/qidao/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/qidao/index.js b/projects/qidao/index.js index cceb6d69f3..8bfaeab84c 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -83,7 +83,7 @@ const config = { moonriver: { vaults: [ // "0x97D811A7eb99Ef4Cb027ad59800cE27E68Ee1109", - "0x4a0474E3262d4DB3306Cea4F207B5d66eC8E0AA9", + //"0x4a0474E3262d4DB3306Cea4F207B5d66eC8E0AA9", ] }, harmony: { From 62e35363ff6872428663edab52de3cfc59907a30 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 2 May 2023 10:08:16 +0100 Subject: [PATCH 0194/1354] add treasury iq --- projects/treasury/iq.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/treasury/iq.js diff --git a/projects/treasury/iq.js b/projects/treasury/iq.js new file mode 100644 index 0000000000..8860c33d75 --- /dev/null +++ b/projects/treasury/iq.js @@ -0,0 +1,22 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x56398b89d53e8731bca8c1b06886cfb14bd6b654"; +const IQ = "0x579CEa1889991f68aCc35Ff5c3dd0621fF29b0C9" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0xac3E018457B222d93114458476f3E3416Abbe38F", + "0x853d955aCEf822Db058eb8505911ED77F175b99e", + "0x9D45081706102E7aadDD0973268457527722E274", + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", + "0xEF9F994A74CB6EF21C38B13553caa2E3E15F69d0" + ], + owners: [treasury], + ownTokens: [IQ], + + }, +}) \ No newline at end of file From 199ae00925112e7b87be0f2f542dd88c0f5ea7ae Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 May 2023 11:53:42 +0200 Subject: [PATCH 0195/1354] add hallmark --- projects/level/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/level/index.js b/projects/level/index.js index d3dd617cd5..43cc4ac706 100644 --- a/projects/level/index.js +++ b/projects/level/index.js @@ -24,4 +24,7 @@ module.exports = { tvl, pool2: pool2(Contracts.Chef, Contracts.LVL_BNB_LP) }, + hallmarks: [ + [Math.floor(new Date('2023-05-01')/1e3), 'Protocol was hacked'], + ], }; From 8acc2dd5d94a9c475deda9d9a6fdf0ef07abcc8a Mon Sep 17 00:00:00 2001 From: 0xfluxdev <119039041+0xfluxdev@users.noreply.github.com> Date: Tue, 2 May 2023 13:21:27 +0200 Subject: [PATCH 0196/1354] Add Flux Exchange Adapter (#6141) * Update pull_request_template.md * feat: Add flux ftm adapter * chore : Edit template * chore : Add flux fantom adapter * fix : Undo changes to template * minor fix --------- Co-authored-by: fluxexchange <105048160+fluxexchange@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/flux-exchange/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/flux-exchange/index.js diff --git a/projects/flux-exchange/index.js b/projects/flux-exchange/index.js new file mode 100644 index 0000000000..4d05071180 --- /dev/null +++ b/projects/flux-exchange/index.js @@ -0,0 +1,13 @@ +const { staking } = require("../helper/staking"); +const { gmxExports } = require("../helper/gmx"); + +const FTMVault = "0xc050733A325eEe50E544AcCbD38F6DACEd60ea6D"; +const FTMStaking = "0x136F1bD4Bb930cD931Ed30310142c2f03a946AC0"; +const WFTM = "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"; + +module.exports = { + fantom: { + staking: staking(FTMStaking, WFTM), + tvl: gmxExports({ vault: FTMVault }) + } +}; \ No newline at end of file From 2ac0284a74294bb463f41db8935ea5ea6bbbcd6a Mon Sep 17 00:00:00 2001 From: define Date: Tue, 2 May 2023 12:40:58 +0100 Subject: [PATCH 0197/1354] neutra finance treasury --- projects/treasury/neutra-finance.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/treasury/neutra-finance.js diff --git a/projects/treasury/neutra-finance.js b/projects/treasury/neutra-finance.js new file mode 100644 index 0000000000..75c9f3fbd4 --- /dev/null +++ b/projects/treasury/neutra-finance.js @@ -0,0 +1,19 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xfba3b455211a3a09689788Ac3A14B4F8Baf012B4"; +const NEU = "0xdA51015b73cE11F77A115Bb1b8a7049e02dDEcf0"; +const esNEU = "0xdeBB612442159b34c24B7BAF20b1CC3218a06925" +const sbfNEU = "0x44F0685482A7180785e309947176C34D0A3d9187" + +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "0x422B5A91b5Cdef61D3400671CCdd5bE22C7CE655", + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + ], + owners: [treasury], + ownTokens: [NEU, esNEU, sbfNEU], + }, +}) \ No newline at end of file From 4cbfee71cfca91a64b2c4674f2826f0c0cd586fb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 May 2023 13:59:22 +0200 Subject: [PATCH 0198/1354] Neutra (#6143) * Update pull_request_template.md * feat: Add flux ftm adapter * chore : Edit template * chore : Add flux fantom adapter * fix : Undo changes to template * minor fix * neutra: add usdc vault --------- Co-authored-by: fluxexchange <105048160+fluxexchange@users.noreply.github.com> Co-authored-by: 0xfluxdev Co-authored-by: 0xfluxdev <119039041+0xfluxdev@users.noreply.github.com> --- projects/neutra-finance/index.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/projects/neutra-finance/index.js b/projects/neutra-finance/index.js index 0388b64d00..a25a14797f 100644 --- a/projects/neutra-finance/index.js +++ b/projects/neutra-finance/index.js @@ -1,12 +1,18 @@ -const { - sumTokensExport -} = require('../helper/unwrapLPs'); +const { sumTokens2 } = require('../helper/unwrapLPs') +async function tvl(_, _b, _cb, { api, }) { + const vaults = ['0x2a958665bc9a1680135241133569c7014230cb21'] + const tokens = await api.multiCall({ abi: 'address:token', calls: vaults }) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) + api.addTokens(tokens, bals) + return sumTokens2({ + api, + owners: ['0x6bfa4f1dfafeb9c37e4e8d436e1d0c5973e47e25'], + tokens: ['0x1addd80e6039594ee970e5872d247bf0414c8903', '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1',], + }) +} module.exports = { arbitrum: { - tvl: sumTokensExport({ - owner: '0x6bfa4f1dfafeb9c37e4e8d436e1d0c5973e47e25', - tokens: ['0x1addd80e6039594ee970e5872d247bf0414c8903', '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1',], - }), + tvl, } }; \ No newline at end of file From 51904bf5332e81f0c0ee5f5a82c45540a2513cb2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 May 2023 15:04:27 +0200 Subject: [PATCH 0199/1354] update flarefarm --- projects/flarefarm/index.js | 10 ++-------- projects/helper/coreAssets.json | 1 + 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/projects/flarefarm/index.js b/projects/flarefarm/index.js index 05605ef6bf..003657aa8c 100644 --- a/projects/flarefarm/index.js +++ b/projects/flarefarm/index.js @@ -1,4 +1,5 @@ const { sumUnknownTokens } = require("../helper/unknownTokens"); +const { staking } = require('../helper/staking') const WSGB = '0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED' const CANARY_DOLLAR = '0x70Ad7172EF0b131A1428D0c1F66457EB041f2176' const EXFI = '0xC348F894d0E939FE72c467156E6d7DcbD6f16e21'; @@ -45,13 +46,6 @@ async function pool2(timestamp, ethblock, { [chain]: block }) { ] return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) } -async function staking(timestamp, ethblock, { [chain]: block }) { - const tokens = [ - [SFIN, '0x554742076743b366504972F86609d64fd18BDC34'], - [SFIN,'0xd0dbAFF52224C0882cfaf1765f347Cb5e4364FA1'] - ] - return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, lps: ['0x48195Ca4D228ce487AE2AE1335B017a95493Ade6'] }) -} module.exports = { misrepresentedTokens: true, @@ -59,6 +53,6 @@ module.exports = { songbird: { tvl: farmTvl, pool2, - staking, + staking: staking(['0x554742076743b366504972F86609d64fd18BDC34', '0xd0dbAFF52224C0882cfaf1765f347Cb5e4364FA1'], SFIN), } }; \ No newline at end of file diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 487ba272ae..b8157d768a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1064,6 +1064,7 @@ "songbird": [ "0x02f0826ef6ad107cfc861152b32b52fd11bab9ed", "0x70ad7172ef0b131a1428d0c1f66457eb041f2176", + "0x0D94e59332732D18CF3a3D457A8886A2AE29eA1B", "0xc348f894d0e939fe72c467156e6d7dcbd6f16e21" ], "energi": [ From a9a161c22d175b582f2c7694096bcc9cf91e9989 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 May 2023 15:57:28 +0200 Subject: [PATCH 0200/1354] code refactor --- projects/goodentry/index.js | 112 ++++++++++-------------------------- 1 file changed, 29 insertions(+), 83 deletions(-) diff --git a/projects/goodentry/index.js b/projects/goodentry/index.js index 7ce8473126..f678373235 100644 --- a/projects/goodentry/index.js +++ b/projects/goodentry/index.js @@ -1,6 +1,4 @@ -const { aaveChainTvl,getData } = require("../helper/aave"); const abi = require('../helper/abis/aave.json'); -const sdk = require('@defillama/sdk'); const addressesProviderRegistry = '0x01b76559D512Fa28aCc03630E8954405BcBB1E02'; const balanceOfAbi = "function balanceOf(address account) view returns (uint256)"; @@ -12,92 +10,40 @@ const token1Abi = "function TOKEN1() view returns (address token, uint8 decimals // Aave helper doesnt recognize tokenized Uniswap positions, need to manually - -function geTvl() { - const chain = "arbitrum"; - return async (timestamp, ethBlock, { [chain]: block }) => { - const balances = {} - const addressesProviders = ( - await sdk.api.abi.call({ - target: addressesProviderRegistry, - abi: abi["getAddressesProvidersList"], - block, - chain - }) - ).output; - const validAddressesProviders = addressesProviders.filter((ap) => ap != "0x0000000000000000000000000000000000000000") - - const lendingPools = ( - await sdk.api.abi.multiCall({ - calls: validAddressesProviders.map((provider) => ({ - target: provider, - })), - abi: getLpAbi, - block, - chain - }) - ).output; - - const aTokens = ( - await sdk.api.abi.multiCall({ - calls: lendingPools.map((lp) => ({ - target: lp.output, - })), - abi: abi["getReservesList"], - block, - chain - }) - ).output - - // merge - const ge = {} - for (let k of lendingPools) ge[k.output] = {ap: k.input.target} - for (let k of aTokens) ge[k.input.target].aTokens = k.output - - const bals = (await Promise.all( - Object.keys(ge).map( async (pool) => { - const atns = ge[pool].aTokens; - const atnsRes = await Promise.all(atns.map(async (atn) => { - var aTokenAddress; - var balance = 0; - var res = {} - try { - aTokenAddress = (await sdk.api.abi.call({target: pool, abi: getReserveDataAbi, block, chain, params: atn})).output.aTokenAddress; - balance = (await sdk.api.abi.call({target: atn, abi: balanceOfAbi, block, chain, params: aTokenAddress})).output; - - // if it's a ticker, can call underlying - const underlying = (await sdk.api.abi.call({target: atn, abi: getUnderlyingAbi, block, chain, params: balance})).output; - const token0 = (await sdk.api.abi.call({target: atn, abi: token0Abi, block, chain})).output.token; - const token1 = (await sdk.api.abi.call({target: atn, abi: token1Abi, block, chain})).output.token; - - res[chain+":"+token0] = parseInt(underlying.token0Amount); - res[chain+":"+token1] = parseInt(underlying.token1Amount); - } - catch(e){ - // in case of error, return the base asset - res[chain+":"+atn] = parseInt(balance); - } - return res; - }).flat(2) - ) - return atnsRes; +async function tvl(timestamp, ethBlock, _, { api }) { + const addressesProviders = await api.call({ target: addressesProviderRegistry, abi: abi["getAddressesProvidersList"], }) + const validAddressesProviders = addressesProviders.filter((ap) => ap != "0x0000000000000000000000000000000000000000") + const lendingPools = await api.multiCall({ calls: validAddressesProviders, abi: getLpAbi, }) + const aTokens = await api.multiCall({ calls: lendingPools, abi: abi["getReservesList"], }) + + const ge = {} + lendingPools.forEach((v, i) => { + ge[v] = { aTokens: aTokens[i] } + }) + + await Promise.all( + Object.keys(ge).map(async (pool) => { + const aTokens = ge[pool].aTokens; + const aTokenAddresses = (await api.multiCall({ abi: getReserveDataAbi, calls: aTokens, target: pool })).map(i => i.aTokenAddress) + const bals = (await api.multiCall({ abi: balanceOfAbi, calls: aTokenAddresses.map((v, i) => ({ target: aTokens[i], params: v })) })) + const underlyings = await api.multiCall({ abi: getUnderlyingAbi, calls: aTokens.map((v, i) => ({ target: v, params: bals[i] })), permitFailure: true, }) + const token0s = await api.multiCall({ abi: token0Abi, calls: aTokens, permitFailure: true, }) + const token1s = await api.multiCall({ abi: token1Abi, calls: aTokens, permitFailure: true, }) + underlyings.forEach((v, i) => { + if (v) { + api.add(token0s[i].token, v.token0Amount) + api.add(token1s[i].token, v.token1Amount) + } else { + api.add(aTokens[i], bals[i]) + } }) - )).flat(2) - //aggregate tokens balances - for (let k of bals){ - for( const [key, bal] of Object.entries(k)){ - balances[key] = balances.hasOwnProperty(key) ? bal + balances[key] : bal - } - } - return balances - } + }) + ) } module.exports = { methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending", - arbitrum: { - tvl: geTvl(), - } + arbitrum: { tvl, } }; From 8b1e0dd6aa41dcabe1af17b9aeda7790378b3a61 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 May 2023 17:19:06 +0200 Subject: [PATCH 0201/1354] Cega-2 (#6144) * adding tvl for ethereum * get solana tvl * get ethereum products using cegaState instead of manually hardcoding * fix solana module export * change to balance object * distinguish between tvl and borrowed * code refactor --------- Co-authored-by: Felicia Chen --- projects/cega/abi.json | 8 ++++ projects/cega/evm.js | 83 ++++++++++++++++++++++++++++++++++ projects/cega/index.js | 69 ++-------------------------- projects/cega/solana.js | 64 ++++++++++++++++++++++++++ projects/gnd-protocol/index.js | 16 +++++++ 5 files changed, 176 insertions(+), 64 deletions(-) create mode 100644 projects/cega/abi.json create mode 100644 projects/cega/evm.js create mode 100644 projects/cega/solana.js create mode 100644 projects/gnd-protocol/index.js diff --git a/projects/cega/abi.json b/projects/cega/abi.json new file mode 100644 index 0000000000..eddc17011d --- /dev/null +++ b/projects/cega/abi.json @@ -0,0 +1,8 @@ +{ + "sumVaultUnderlyingAmounts": "uint256:sumVaultUnderlyingAmounts", + "queuedDepositsTotalAmount": "uint256:queuedDepositsTotalAmount", + "getProductNames": "string[]:getProductNames", + "products": "function products(string) view returns (address)", + "getLOVVaultMetadata": "function getLOVVaultMetadata(address productAddress, uint256 leverage) view returns (tuple(uint256 vaultStart, uint256 tradeDate, uint256 tradeExpiry, uint256 aprBps, uint256 tenorInDays, uint256 underlyingAmount, uint256 currentAssetAmount, uint256 totalCouponPayoff, uint256 vaultFinalPayoff, uint256 queuedWithdrawalsSharesAmount, uint256 queuedWithdrawalsCount, uint256 optionBarriersCount, uint256 leverage, address vaultAddress, uint8 vaultStatus, bool isKnockedIn, tuple(uint256 barrierBps, uint256 barrierAbsoluteValue, uint256 strikeBps, uint256 strikeAbsoluteValue, string asset, string oracleName, uint8 barrierType)[] optionBarriers)[])", + "getLOVProductQueuedDeposits": "function getLOVProductQueuedDeposits(address fcnProductAddress, uint256 leverage) view returns (uint256 totalQueuedDeposits)" +} \ No newline at end of file diff --git a/projects/cega/evm.js b/projects/cega/evm.js new file mode 100644 index 0000000000..5da9929ec5 --- /dev/null +++ b/projects/cega/evm.js @@ -0,0 +1,83 @@ +const abi = require("./abi.json"); + +const maxLeverage = 5; +const LOV_SUFFIX = "-lov"; +const CEGA_STATE = "0x0730AA138062D8Cc54510aa939b533ba7c30f26B"; +const CEGA_PRODUCT_VIEWER = "0x31C73c07Dbd8d026684950b17dD6131eA9BAf2C4"; +const usdcAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; + +// Funds are not lent out +const FCN_PURE_OPTIONS_ADDRESSES = [ + '0x042021d59731d3fFA908c7c4211177137Ba362Ea', // supercharger + '0x56F00A399151EC74cf7bE8DC38225363E84975E6', // go fast + '0x784e3C592A6231D92046bd73508B3aAe3A7cc815', // insanic +]; + +// Funds are lent out 100% +const FCN_BOND_AND_OPTIONS_ADDRESSES = [ + '0xAB8631417271Dbb928169F060880e289877Ff158', // starboard + '0xcf81b51AecF6d88dF12Ed492b7b7f95bBc24B8Af', // autopilot + '0x80ec1c0da9bfBB8229A1332D40615C5bA2AbbEA8', // cruise control + '0x94C5D3C2fE4EF2477E562EEE7CCCF07Ee273B108', // genesis basket +]; + +async function getProducts(api) { + const productNames = await api.call({ target: CEGA_STATE, abi: abi.getProductNames, }) + const LOVProductNames = productNames.filter(v => v.includes(LOV_SUFFIX)) + return api.multiCall({ target: CEGA_STATE, abi: abi.products, calls: LOVProductNames }) +} + + +async function getSumFCNProductDeposits(fcnProducts, api) { + return api.multiCall({ calls: fcnProducts, abi: abi.sumVaultUnderlyingAmounts, }) +} + +async function getSumFCNProductQueuedDeposits(fcnProducts, api) { + return api.multiCall({ calls: fcnProducts, abi: abi.queuedDepositsTotalAmount, }) +} + +function getLOVCalls(lovProducts) { + const calls = [] + for (const product of lovProducts) + for (let i = 2; i < maxLeverage; i++) + calls.push([product, i]) + return calls.map(i => ({ params: i})) +} + +async function getSumLOVProductDeposits(lovProducts, api) { + const calls = getLOVCalls(lovProducts) + return (await api.multiCall({ target: CEGA_PRODUCT_VIEWER, abi: abi.getLOVVaultMetadata, calls })).map(i => i.map(j => j.underlyingAmount)).flat() +} + +async function getSumLOVProductQueuedDeposits(lovProducts, api) { + const calls = getLOVCalls(lovProducts) + return await api.multiCall({ target: CEGA_PRODUCT_VIEWER, abi: abi.getLOVProductQueuedDeposits, calls }) +} + +async function getEthereumTvl(_, _1, _2, { api }) { + const lovProducts = await getProducts(api); + const results = await Promise.all([ + getSumFCNProductDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), + getSumFCNProductQueuedDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), + getSumLOVProductDeposits(lovProducts, api), + getSumLOVProductQueuedDeposits(lovProducts, api) + ]); + const sum = results.flat().flat().reduce((total, currentValue) => total + +currentValue, 0); + api.add(usdcAddress, sum) +} + +async function getBorrowedTvl(_, _1, _2, { api }) { + const results = await Promise.all([ + getSumFCNProductDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api), + getSumFCNProductQueuedDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api), + ]); + const sum = results.flat().flat().reduce((total, currentValue) => total + +currentValue, 0); + api.add(usdcAddress, sum) +} + +module.exports = { + ethereum: { + tvl: getEthereumTvl, + borrowed: getBorrowedTvl, + } +} \ No newline at end of file diff --git a/projects/cega/index.js b/projects/cega/index.js index ec0b9e361e..f6d5585f13 100644 --- a/projects/cega/index.js +++ b/projects/cega/index.js @@ -1,67 +1,8 @@ -const { Program } = require("@project-serum/anchor"); -const { getProvider, sumTokens2, getTokenBalance, } = require("../helper/solana"); -const sdk = require('@defillama/sdk') -const idl = require("./idl.json"); -const MM_multisigs = [ - '0xBdaF8c2BAA14f322e1429Ae3869B005590Ea1FF8', - '0x0fEcA1Ff36AbA721BAEd6C6248b6745C88AF1dDF', - '0x1d14E27221F1b3c690Fc3cced827bEE4892d0698', - '0x60daD1DF74F20fd6d6C07e6FC6153078Cd14a57c', - '0xC6589ad1eed78c50f28249D743A585f7053e7D2C', -] - -const vaultMintAuthority = '4nhbsUdKEwVQXuYDotgdQHoMWW83GvjXENwLsf9QrRJT' -const usdcTokenSpl = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' - -async function tvl() { - const products = await getProducts() - const tokenAccounts = [] - products.forEach(({ account: i }) => { - if (!i.isActive || Buffer.from(i.productName).toString().trim().includes("demo")) return; - tokenAccounts.push(i.productUnderlyingTokenAccount.toString()) - }); - - return sumTokens2({ balances: { - ['solana:'+usdcTokenSpl]: await getMMbalance() - }, owner: vaultMintAuthority, tokens: [usdcTokenSpl], tokenAccounts, }); -} - -async function borrowed() { - const products = await getProducts() - const balances = {} - const usdcBalance = await getTokenBalance(usdcTokenSpl, vaultMintAuthority) - sdk.util.sumSingleBalance(balances, usdcTokenSpl, -1 * usdcBalance, 'solana') - sdk.util.sumSingleBalance(balances, usdcTokenSpl, -1 * await getMMbalance(), 'solana') - products.forEach(({ account: i }) => { - if (!i.isActive || Buffer.from(i.productName).toString().trim().includes("demo")) return; - sdk.util.sumSingleBalance(balances,i.underlyingMint.toString(),+i.underlyingAmount, 'solana') - }); - return balances -} - -async function getProducts() { - const provider = getProvider(); - const programId = "3HUeooitcfKX1TSCx2xEpg2W31n6Qfmizu7nnbaEWYzs"; - const program = new Program(idl, programId, provider); - return program.account.product.all(); - -} - -async function getMMbalance() { - const { output: bals } = await sdk.api.abi.multiCall({ - target: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - abi: 'erc20:balanceOf', - calls: MM_multisigs.map(i => ({ params: i})), - }) - let total = 0 - bals.forEach(({ output: i}) => total += +i) - return total -} +const evm = require("./evm"); +const solana = require("./solana"); module.exports = { timetravel: false, - solana: { - tvl, - borrowed, - }, -}; + ...evm, + ...solana, +}; \ No newline at end of file diff --git a/projects/cega/solana.js b/projects/cega/solana.js new file mode 100644 index 0000000000..6c839e639e --- /dev/null +++ b/projects/cega/solana.js @@ -0,0 +1,64 @@ +const { Program } = require("@project-serum/anchor"); +const { getProvider} = require("../helper/solana"); +const sdk = require('@defillama/sdk') +const idl = require("./idl.json"); + +const usdcAddress = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; +const PURE_OPTIONS_PRODUCTS = [ + 'insanic-2', + 'supercharger', + 'go-fast-2' +] + +const OPTIONS_AND_BONDS_PRODUCTS = [ + 'genesis-basket-2', + 'starboard', + 'cruise-control-2', + 'autopilot' +] + +async function getProducts() { + const provider = getProvider(); + const programId = "3HUeooitcfKX1TSCx2xEpg2W31n6Qfmizu7nnbaEWYzs"; + const program = new Program(idl, programId, provider); + return program.account.product.all(); +} + +async function getSolanaTvl() { + const balances = {}; + const products = await getProducts() + let totalAmount = 0; + products.forEach(({ account: i }) => { + const productName = Buffer.from(i.productName).toString().trim(); + if (!i.isActive || productName.includes("test")) return; + const underlyingAmount = i.underlyingAmount.toNumber(); + if(PURE_OPTIONS_PRODUCTS.includes(productName)){ + totalAmount += underlyingAmount; + } + }); + await sdk.util.sumSingleBalance(balances, usdcAddress, totalAmount, "solana"); + return balances; +} + +async function getBorrowedTvl() { + const balances = {}; + const products = await getProducts() + let totalAmount = 0; + products.forEach(({ account: i }) => { + const productName = Buffer.from(i.productName).toString().trim(); + if (!i.isActive || productName.includes("test")) return; + const underlyingAmount = i.underlyingAmount.toNumber(); + if(OPTIONS_AND_BONDS_PRODUCTS.includes(productName)){ + totalAmount += underlyingAmount; + } + }); + await sdk.util.sumSingleBalance(balances, usdcAddress, totalAmount, "solana"); + return balances; +} + +module.exports = { + solana: { + tvl: getSolanaTvl, + borrowed: getBorrowedTvl, + } +} \ No newline at end of file diff --git a/projects/gnd-protocol/index.js b/projects/gnd-protocol/index.js new file mode 100644 index 0000000000..95ed43b8cb --- /dev/null +++ b/projects/gnd-protocol/index.js @@ -0,0 +1,16 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { staking } = require('../helper/staking') + +async function tvl(_, _b, _cb, { api, }) { + const farm = '0xd8769d8826149b137af488b1e9ac0e3afdbc058a' + await sumTokens2({ api, owner: farm, resolveUniV3: true, }) + const tokens = Object.keys(api.getBalances()).map(i => i.replace(/arbitrum:/gi, '')) + return sumTokens2({ api, owner: farm, tokens, }) + +} +module.exports = { + arbitrum: { + tvl, + staking: staking('0x535ec56479892d9C02fe2Bb86CeBF7ed62E81131', '0x40ea7f6d6964413d4a26a0a268542dae9f55768e') + } +} \ No newline at end of file From d732d7637e371c0b472ad8292adef8deef36369c Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 2 May 2023 16:37:43 +0100 Subject: [PATCH 0202/1354] add entities --- projects/entities/mt-gox.js | 14 ++++++++++++++ test.js | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 projects/entities/mt-gox.js diff --git a/projects/entities/mt-gox.js b/projects/entities/mt-gox.js new file mode 100644 index 0000000000..3adb8f9224 --- /dev/null +++ b/projects/entities/mt-gox.js @@ -0,0 +1,14 @@ +const { cexExports } = require('../helper/cex') + +const config = { + bitcoin: { + owners: [ + "bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6", //https://www.reddit.com/r/CryptoCurrency/comments/li1fw7/btc_silkroad_stash_seized_nov_2020_by_the_feds/ + 'bc1qmxjefnuy06v345v6vhwpwt05dztztmx4g3y7wp', + 'bc1qf2yvj48mzkj7uf8lc2a9sa7w983qe256l5c8fs', + 'bc1qe7nk2nlnjewghgw4sgm0r89zkjzsurda7z4rdg' + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/test.js b/test.js index 1ce36d2ace..c2c793a6d8 100644 --- a/test.js +++ b/test.js @@ -236,7 +236,7 @@ function checkExportKeys(module, filePath, chains) { || (filePath.length === 1 && !['.js', ''].includes(path.extname(filePath[0]))) // matches .../projects/projectXYZ.js or .../projects/projectXYZ || (filePath.length === 2 && !(['api.js', 'index.js', 'apiCache.js',].includes(filePath[1]) // matches .../projects/projectXYZ/index.js - || ['treasury',].includes(filePath[0]) // matches .../projects/treasury/project.js + || ['treasury', 'entities'].includes(filePath[0]) // matches .../projects/treasury/project.js ))) process.exit(0) From 6b4b198cbbd0d528dde730f7745c8e20ed4e85ed Mon Sep 17 00:00:00 2001 From: Jongsik Jung Date: Wed, 3 May 2023 17:20:18 +0900 Subject: [PATCH 0203/1354] add wemix staking --- projects/wemix-staking/index.js | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/wemix-staking/index.js diff --git a/projects/wemix-staking/index.js b/projects/wemix-staking/index.js new file mode 100644 index 0000000000..46857bc2e8 --- /dev/null +++ b/projects/wemix-staking/index.js @@ -0,0 +1,34 @@ +const sdk = require("@defillama/sdk"); +const BigNumber = require('bignumber.js'); + +const wwemix = '0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f' +const stakingContract = '0x6F3f44B0Cf7C751f2a44Faf6bFdd08e499Eb0973' + +async function tvl(chainBlocks, chain, transform=a=>a) { + let balances = {}; + + const lpBalance = (await sdk.api.abi.call({ + abi: "erc20:balanceOf", + params: stakingContract, + target: wwemix, + chain + }) + ).output + + balances = { wwemix: BigNumber(lpBalance).div(1e18) }; + + return balances; +} + +async function wemixTvl(timestamp, ethBlock, chainBlocks) { + let balances = await tvl(chainBlocks, 'wemix'); + + return balances; +} + +module.exports = { + wemix: { + tvl: () => ({}), + staking: wemixTvl, + }, +} \ No newline at end of file From 452a96c41d4986687657c7a794cd2a0085493b4b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 May 2023 11:58:15 +0200 Subject: [PATCH 0204/1354] minor fix --- projects/wemix-staking/index.js | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/projects/wemix-staking/index.js b/projects/wemix-staking/index.js index 46857bc2e8..79c8de660d 100644 --- a/projects/wemix-staking/index.js +++ b/projects/wemix-staking/index.js @@ -1,34 +1,11 @@ -const sdk = require("@defillama/sdk"); -const BigNumber = require('bignumber.js'); +const { staking } = require('../helper/staking') const wwemix = '0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f' const stakingContract = '0x6F3f44B0Cf7C751f2a44Faf6bFdd08e499Eb0973' -async function tvl(chainBlocks, chain, transform=a=>a) { - let balances = {}; - - const lpBalance = (await sdk.api.abi.call({ - abi: "erc20:balanceOf", - params: stakingContract, - target: wwemix, - chain - }) - ).output - - balances = { wwemix: BigNumber(lpBalance).div(1e18) }; - - return balances; -} - -async function wemixTvl(timestamp, ethBlock, chainBlocks) { - let balances = await tvl(chainBlocks, 'wemix'); - - return balances; -} - module.exports = { - wemix: { - tvl: () => ({}), - staking: wemixTvl, - }, + wemix: { + tvl: () => ({}), + staking: staking(stakingContract, wwemix), + }, } \ No newline at end of file From 1ced07cbf2fb60ae57930875b3bf7f8ae52a01e3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 May 2023 12:27:41 +0200 Subject: [PATCH 0205/1354] minor fix --- projects/zoodao/index.js | 37 ++++++++----------------------------- 1 file changed, 8 insertions(+), 29 deletions(-) diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js index 761b56cd8b..88e364acc0 100644 --- a/projects/zoodao/index.js +++ b/projects/zoodao/index.js @@ -1,5 +1,5 @@ -const sdk = require('@defillama/sdk'); -const battleArenaAbi = require('./abis/battle-arena-abi.json') +const battleArenaAbi = require('./abis/battle-arena-abi.json'); +const { staking } = require('../helper/staking'); const VAULT_CONTRACT = '0x1C55649f73CDA2f72CEf3DD6C5CA3d49EFcF484C'; const BATTLE_ARENA_CONTRACT = '0x0ADeb5A930875606F325e114FD5147148e042828'; @@ -7,38 +7,17 @@ const FRAX_TOKEN = "0x322e86852e492a7ee17f28a78c663da38fb33bfb" const ZOODAO_TOKEN = "0x7cd3e6e1A69409deF0D78D17a492e8e143F40eC5" async function tvl(_, _1, _2, { api }) { - const balances = {}; + const vaultStablecoinStaked = await api.call({ abi: 'erc20:balanceOf', target: VAULT_CONTRACT, params: [BATTLE_ARENA_CONTRACT] }); - const vaultStablecoinStaked = await api.call({ - abi: 'erc20:balanceOf', - target: VAULT_CONTRACT, - params: [BATTLE_ARENA_CONTRACT] - }); - - const totalFRAX = await api.call({ - abi: battleArenaAbi.sharesToTokens, - target: BATTLE_ARENA_CONTRACT, - params: [vaultStablecoinStaked] - }); - - // TOTAL FRAX BALANCE - await sdk.util.sumSingleBalance(balances, FRAX_TOKEN, totalFRAX, api.chain) - - const totalZooStaked = await api.call({ - abi: 'erc20:balanceOf', - target: ZOODAO_TOKEN, - params: [BATTLE_ARENA_CONTRACT] - }); - - // TOTAL ZOODAO BALANCE - await sdk.util.sumSingleBalance(balances, ZOODAO_TOKEN, totalZooStaked, api.chain) - - return balances; + // convert m.FRAX to FRAX + const totalFRAX = await api.call({ abi: battleArenaAbi.sharesToTokens, target: BATTLE_ARENA_CONTRACT, params: [vaultStablecoinStaked] }); + api.add(FRAX_TOKEN, totalFRAX) } module.exports = { methodology: "Counts the supplied value of FRAX and ZOO through ZooDAO's contracts", moonbeam: { - tvl + tvl, + staking: staking(BATTLE_ARENA_CONTRACT, ZOODAO_TOKEN) }, }; From 37356785b384086d59964c7b6fff4f574742f277 Mon Sep 17 00:00:00 2001 From: Igor Onyshchenko Date: Wed, 3 May 2023 13:51:12 +0300 Subject: [PATCH 0206/1354] feat: veax adapter --- projects/veax/index.js | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 projects/veax/index.js diff --git a/projects/veax/index.js b/projects/veax/index.js new file mode 100644 index 0000000000..5d2e974a78 --- /dev/null +++ b/projects/veax/index.js @@ -0,0 +1,67 @@ +const axios = require('axios'); +const { sumSingleBalance } = require('../helper/chain/near') + +const POOLS_SERVICE_URL = 'https://veax-liquidity-pool.veax.com/v1/rpc' + +const rpc = (url, method, params) => + axios.post( + POOLS_SERVICE_URL, + { + jsonrpc: '2.0', + method, + params, + id: '0', + }, + { + headers: { + 'Content-Type': 'application/json', + } + } + ) + .then(res => res.data.result); + +const fetchPools = (page, limit) => + rpc( + POOLS_SERVICE_URL, + 'liquidity_pools_list', + { + filter: { + page, + limit, + sort: 'NONE', + is_desc: true, + search: '', + } + } + ) + +const tvl = async () => { + let page = 0 + const limit = 500 + const balances = {}; + + // eslint-disable-next-line no-constant-condition + while (true) { + const {pools, total} = await fetchPools(page, limit); + + pools + .map((pool) => [[pool.token_a, pool.total_amount_a],[pool.token_b, pool.total_amount_b]]) + .forEach((pair) => { + pair.forEach(([token, value]) => { + if(+value) { + sumSingleBalance(balances, token, value) + } + }) + }) + + if((page + 1) * limit > total) { + return balances + } + } +} + +module.exports = { + near: { + tvl, + } +} \ No newline at end of file From ed7722e8de7234ecf431d2f021a475fdc744dbd1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 May 2023 12:54:45 +0200 Subject: [PATCH 0207/1354] refactor templar --- projects/templar/index.js | 104 +++++--------------------------------- 1 file changed, 13 insertions(+), 91 deletions(-) diff --git a/projects/templar/index.js b/projects/templar/index.js index 334c47c9ee..00143bdb8f 100644 --- a/projects/templar/index.js +++ b/projects/templar/index.js @@ -1,11 +1,5 @@ const { stakings } = require("../helper/staking"); -const sdk = require("@defillama/sdk"); -const { - sumTokensAndLPsSharedOwners, - unwrapUniswapV3NFTs, - sumTokens2, -} = require("../helper/unwrapLPs"); -const BigNumber = require("bignumber.js"); +const { sumTokensExport, nullAddress, } = require("../helper/unwrapLPs"); const bscOwner = "0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"; const bscStaking = "0xa1f61Ca61fe8655d2a204B518f6De964145a9324"; @@ -27,94 +21,22 @@ const ethTokens = { USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7", }; -const ethOwner = "0x4Bd973e98585b003c31f4C8b9d6eAC5d3293B1e5"; - -async function bscTvl(timestamp, _, chainBlocks) { - const chain = "bsc"; - const block = chainBlocks.bsc; - const balances = {}; - - // Add tokens Vault - await sumTokens2({ - balances, - tokens: [bscTokens.TM, bscTokens.DAI, bscTokens.BUSD, bscTokens.WBNB], - owner: bscTreasuryContract, - chain, - transformAddress: (addr) => - addr === bscTokens.TM.toLowerCase() - ? `bsc:${bscTokens.BUSD}` - : `bsc:${addr}`, - }); - - // Add tokens UniswapV3LP - await unwrapUniswapV3NFTs({ - balances, - owners: ["0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"], - chain, - }); - - // Add tokens Venus - for (const vToken of [bscTokens.VBUSD, bscTokens.VBTC]) { - let token; - const [{ output: balance }, { output: exchangeRateStored }] = - await Promise.all([ - sdk.api.abi.call({ - target: vToken, - params: [bscOwner], - abi: "erc20:balanceOf", - chain, - block, - }), - sdk.api.abi.call({ - target: vToken, - abi: "uint256:exchangeRateStored", - chain, - block, - }), - ]); - token = ( - await sdk.api.abi.call({ - target: vToken, - abi: "address:underlying", - chain, - block, - }) - ).output; - - sdk.util.sumSingleBalance( - balances, - "bsc:" + token, - BigNumber((balance * exchangeRateStored) / 1e18).toFixed(0) - ); - } - - return balances; -} - -async function ethVaults(timestamp) { - const balances = {}; - - // Add tokens UniswapV3LP - await unwrapUniswapV3NFTs({ - balances, - owners: [ethOwner], - }); - - await sumTokens2({ - balances, - tokens: [ethTokens.USDC, ethTokens.USDT], - owner: ethOwner, - }); - - return balances; -} +const ethOwner = "0x4Bd973e98585b003c31f4C8b9d6eAC5d3293B1e5" module.exports = { + moonriver: { + tvl: () => 0, + staking: () => 0, + }, + harmony: { + tvl: () => 0, + staking: () => 0, + }, bsc: { - tvl: bscTvl, + tvl: sumTokensExport({ owners: [bscOwner, bscTreasuryContract,], tokens: [bscTokens.TM, bscTokens.DAI, bscTokens.BUSD, bscTokens.WBNB, bscTokens.VBUSD, bscTokens.VBTC], resolveUniV3: true, }), staking: stakings([bscStaking, bscStakingV2], bscTokens.TEM, "bsc"), }, ethereum: { - tvl: ethVaults, + tvl: sumTokensExport({ owner: ethOwner, tokens: [ethTokens.USDC, ethTokens.USDT, nullAddress, '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'], resolveUniV3: true, }), }, -}; +} From 534fe876e9b158331803bbeb927735e14a5ee794 Mon Sep 17 00:00:00 2001 From: yb <43601702+yasha-black@users.noreply.github.com> Date: Wed, 3 May 2023 13:56:50 +0300 Subject: [PATCH 0208/1354] Update ergodex.js Updated API method --- projects/ergodex.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/ergodex.js b/projects/ergodex.js index c58c8445d8..f15973256d 100644 --- a/projects/ergodex.js +++ b/projects/ergodex.js @@ -3,7 +3,7 @@ const {toUSDTBalances} = require('./helper/balances') async function tvl() { var totalTvl = await utils.fetchURL('https://api.spectrum.fi/v1/amm/platform/stats'); - return toUSDTBalances(totalTvl.data.tvl.value/100); + return toUSDTBalances(totalTvl.data.tvl.value); } module.exports = { @@ -13,4 +13,4 @@ module.exports = { tvl }, methodology: `Spectrum Finance TVL is achieved by making a call to its API: https://api.spectrum.fi/v1/amm/platform/stats.` -} \ No newline at end of file +} From 36cffc7215728f6e87624995bb9588827494f6f6 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Wed, 3 May 2023 14:07:35 +0100 Subject: [PATCH 0209/1354] Update index.js --- projects/scrubinvest/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index cda115e582..e14eaa6409 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -9,7 +9,10 @@ async function tvl(_, _b, _cb, { api, }) { { target: '0xA250a3b6a5e5E8b398092537951F8Bd80639ed5c', params: '0xE04539bD52618B7d197Be54B3e4D80732082906E' }, { target: '0xCa0d15B4BB6ad730fE40592f9E25A2E052842c92', params: '0xEa892552BD31A20F42ceb3476D6A280c405883d0' }, { target: '0xa27a1f03479cfe4B0b97Fd8c772a84aD815C1946', params: '0xa1FA74fD861FFf2fc5f7a618A05beB12709fB419' }, - { target: '0x74AE6bB3138DB1969c52f39e2c311d997528633B', params: '0x2D1D648c2AEdf62037f2b80f9cC8c93258179380' } + { target: '0x74AE6bB3138DB1969c52f39e2c311d997528633B', params: '0x2D1D648c2AEdf62037f2b80f9cC8c93258179380' }, + { target: '0x8EEA85dA61b397EaB933C001DAAD6fC1C5A4c67C', params: '0xcf4673F714183C42DADc1B42DAC21BE09cfc3684' }, + { target: '0xc28fcef5970fd23e5bfcdc31ce1ba72ef98cc70a', params: '0xef7541FCa94988fA423bC418a854f7967f83a3E0' }, + { target: '0x371d33963fb89ec9542a11ccf955b3a90391f99f', params: '0x43Ac7f627e41EBDa7515FEaCa425306AaB9cB602' }, ] const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls }) const lps = await api.multiCall({ abi: 'address:stake', calls: calls.map(i => i.target)}) From 370fa7069072e9c868484654715ac774b1a2c344 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 May 2023 15:41:54 +0200 Subject: [PATCH 0210/1354] code refactor --- projects/veax/index.js | 65 ++++-------------------------------------- 1 file changed, 6 insertions(+), 59 deletions(-) diff --git a/projects/veax/index.js b/projects/veax/index.js index 5d2e974a78..f3b6a24ca3 100644 --- a/projects/veax/index.js +++ b/projects/veax/index.js @@ -1,66 +1,13 @@ -const axios = require('axios'); -const { sumSingleBalance } = require('../helper/chain/near') +const { sumTokens, call, } = require('../helper/chain/near') -const POOLS_SERVICE_URL = 'https://veax-liquidity-pool.veax.com/v1/rpc' - -const rpc = (url, method, params) => - axios.post( - POOLS_SERVICE_URL, - { - jsonrpc: '2.0', - method, - params, - id: '0', - }, - { - headers: { - 'Content-Type': 'application/json', - } - } - ) - .then(res => res.data.result); - -const fetchPools = (page, limit) => - rpc( - POOLS_SERVICE_URL, - 'liquidity_pools_list', - { - filter: { - page, - limit, - sort: 'NONE', - is_desc: true, - search: '', - } - } - ) - -const tvl = async () => { - let page = 0 - const limit = 500 - const balances = {}; - - // eslint-disable-next-line no-constant-condition - while (true) { - const {pools, total} = await fetchPools(page, limit); - - pools - .map((pool) => [[pool.token_a, pool.total_amount_a],[pool.token_b, pool.total_amount_b]]) - .forEach((pair) => { - pair.forEach(([token, value]) => { - if(+value) { - sumSingleBalance(balances, token, value) - } - }) - }) - - if((page + 1) * limit > total) { - return balances - } - } +const tvl = async (_, _1, _2, { api }) => { + const contract = 'veax.near' + const tokens = await call(contract, 'get_verified_tokens') + return sumTokens({ owners: [contract], tokens}) } module.exports = { + timetravel: false, near: { tvl, } From 72326867d26bb877088b4936fea1ebc00922589b Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Wed, 3 May 2023 14:01:27 +0000 Subject: [PATCH 0211/1354] Add E3 (Fantom) DEX. (#6121) --- projects/E3/index.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 projects/E3/index.js diff --git a/projects/E3/index.js b/projects/E3/index.js new file mode 100644 index 0000000000..0000fd47d1 --- /dev/null +++ b/projects/E3/index.js @@ -0,0 +1,35 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const factories = { + fantom: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B' + ///zkevm: tbd +} +async function tvl(_, _b, _cb, { api, }) { + const pools = await api.fetchList({ + target: factories[api.chain], + itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', + lengthAbi: 'uint256:getNumberOfLBPairs', + }) + const tokenA = await api.multiCall({ + abi: 'address:getTokenX', + calls: pools, + }) + const tokenB = await api.multiCall({ + abi: 'address:getTokenY', + calls: pools, + }) + const toa = [] + tokenA.map((_, i) => { + toa.push([tokenA[i], pools[i]]) + toa.push([tokenB[i], pools[i]]) + }) + return sumTokens2({ api, tokensAndOwners: toa, }) +} + +module.exports = { + methodology: 'Only the tokens inside our Liquidity Pools are counted in our TVL.', +} + +Object.keys(factories).forEach(chain => { + module.exports[chain] = { tvl } +}) From 32ad4d155209a12a181498f5a9053ec01dc91be6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 May 2023 16:54:58 +0200 Subject: [PATCH 0212/1354] update OHM staking --- projects/olympus/index.js | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/projects/olympus/index.js b/projects/olympus/index.js index 69faf7fc69..63887c13d9 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -1,16 +1,18 @@ const sdk = require("@defillama/sdk"); const { blockQuery } = require("../helper/http"); const env = require("../helper/env"); -const BigNumber = require("bignumber.js"); +const { staking } = require('../helper/staking') const OlympusStakings = [ // Old Staking Contract "0x0822F3C03dcc24d200AFF33493Dc08d0e1f274A2", // New Staking Contract "0xFd31c7d00Ca47653c6Ce64Af53c1571f9C36566a", + "0xb63cac384247597756545b500253ff8e607a8020", ]; -const OHM = "0x383518188c0c6d7730d91b2c03a03c837814a899" // this is OHM v1 +const OHM_V1 = "0x383518188c0c6d7730d91b2c03a03c837814a899" // this is OHM v1 +const OHM = "0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5" // this is OHM v1 /** Map any staked assets without price feeds to those with price feeds. * All balances are 1: 1 to their unstaked counterpart that has the price feed. @@ -40,24 +42,6 @@ const addressMap = { "0xc55126051B22eBb829D00368f4B12Bde432de5Da", //BTRFLY -> BTRFLYV2 }; -/*** Staking of native token (OHM) TVL Portion ***/ -const staking = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - - for (const stakings of OlympusStakings) { - const stakingBalance = await sdk.api.abi.call({ - abi: "erc20:balanceOf", - target: OHM, - params: stakings, - block: ethBlock, - }); - - sdk.util.sumSingleBalance(balances, OHM, stakingBalance.output); - } - - return balances; -}; - const protocolQuery = (block) => ` query { tokenRecords(orderDirection: desc, orderBy: block, where: {block: ${block}}) { @@ -174,7 +158,7 @@ module.exports = { methodology: "TVL is the sum of the value of all assets held by the treasury (excluding pTokens). Please visit https://app.olympusdao.finance/#/dashboard for more info.", ethereum: { - staking, + staking: staking(OlympusStakings, [OHM, OHM_V1]), tvl, ownTokens, }, From 5a70f2ac39459e47066cab16d17b4299d54c1069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Guimar=C3=A3es?= Date: Wed, 3 May 2023 12:49:50 -0300 Subject: [PATCH 0213/1354] feat(pods-yield): Support new Pods Yield Vault --- projects/pods-yield/constants.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/pods-yield/constants.js b/projects/pods-yield/constants.js index 529cdd4035..a21aeb898c 100644 --- a/projects/pods-yield/constants.js +++ b/projects/pods-yield/constants.js @@ -6,7 +6,8 @@ module.exports = { name: 'ethereum', vaults: [ '0xbab1e772d70300422312dff12daddcb60864bd41', - '0x463F9ED5e11764Eb9029762011a03643603aD879' + '0x463F9ED5e11764Eb9029762011a03643603aD879', + '0x5FE4B38520e856921978715C8579D2D7a4d2274F' ] }, ABI_SHORT: { From b072c700d0ca6b6260a6b8627fe0abddeebc2691 Mon Sep 17 00:00:00 2001 From: Shahul Hameed <10547529+shahthepro@users.noreply.github.com> Date: Wed, 3 May 2023 21:39:15 +0400 Subject: [PATCH 0214/1354] Add Origin Ether --- projects/originether/index.js | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 projects/originether/index.js diff --git a/projects/originether/index.js b/projects/originether/index.js new file mode 100644 index 0000000000..ceea8da769 --- /dev/null +++ b/projects/originether/index.js @@ -0,0 +1,38 @@ +const sdk = require("@defillama/sdk"); +const abi = require("../origindollar/abi.json"); + +const vault = "0x39254033945aa2e4809cc2977e7087bee48bd7ab"; + +const ethTvl = async (timestamp, ethBlock) => { + const balances = {}; + + // Account WETH, rETH, frxETH and stETH backing up the minted OUSD + const backingAssets = ( + await sdk.api.abi.call({ + abi: abi.getAllAssets, + target: vault, + block: ethBlock, + }) + ).output; + + for (let i = 0; i < backingAssets.length; i++) { + const backingAssetBalance = ( + await sdk.api.abi.call({ + abi: abi.checkBalance, + target: vault, + params: backingAssets[i], + block: ethBlock, + }) + ).output; + + sdk.util.sumSingleBalance(balances, backingAssets[i], backingAssetBalance); + } + + return balances; +}; + +module.exports = { + ethereum: { + tvl: ethTvl, + }, +}; From 5e493dea9bf47c6a8f8c688ed2b1d82f8043efa9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 May 2023 21:27:09 +0200 Subject: [PATCH 0215/1354] add spark-fi --- projects/helper/aave.js | 14 ++++++++++---- projects/spark-fi/index.js | 6 ++++++ 2 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 projects/spark-fi/index.js diff --git a/projects/helper/aave.js b/projects/helper/aave.js index bc9c1f6bc2..3a0343191c 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -101,7 +101,7 @@ async function getBorrowed(balances, block, chain, v2ReserveTokens, dataHelper, }) } -function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dataHelperAddresses, borrowed, v3 = false, { abis = {}, oracle, } = {}) { +function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dataHelperAddresses, borrowed, v3 = false, { abis = {}, oracle, blacklistedTokens = [], } = {}) { return async (timestamp, ethBlock, { [chain]: block }) => { const balances = {} const { transformAddress, fixBalances, v2Atokens, v2ReserveTokens, dataHelper, updateBalances } = await getData({ oracle, chain, block, addressesProviderRegistry, dataHelperAddresses, transformAddressRaw, abis, }) @@ -112,13 +112,19 @@ function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dat } if (updateBalances) updateBalances(balances) fixBalances(balances) + Object.keys(balances).forEach((key) => { + if (!blacklistedTokens.length) return; + if (blacklistedTokens.some(i => new RegExp(i, 'gi').test(key))) { + delete balances[key] + } + }) return balances } } -function aaveExports(chain, addressesProviderRegistry, transform = undefined, dataHelpers = undefined, { oracle, abis } = {}) { +function aaveExports(chain, addressesProviderRegistry, transform = undefined, dataHelpers = undefined, { oracle, abis, v3 = false, blacklistedTokens = [] } = {}) { return { - tvl: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, false, undefined, { oracle, abis, }), - borrowed: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, true, undefined, { oracle, abis }) + tvl: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, false, v3, { oracle, abis, blacklistedTokens, }), + borrowed: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, blacklistedTokens, }) } } diff --git a/projects/spark-fi/index.js b/projects/spark-fi/index.js new file mode 100644 index 0000000000..c6351dffe5 --- /dev/null +++ b/projects/spark-fi/index.js @@ -0,0 +1,6 @@ + +const { aaveExports } = require('../helper/aave'); + +module.exports = { + ethereum: aaveExports('ethereum', '0x03cFa0C4622FF84E50E75062683F44c9587e6Cc1', undefined, ["0xFc21d6d146E6086B8359705C8b28512a983db0cb"], { v3: true, blacklistedTokens: ['0x6b175474E89094C44Da98b954EedeAC495271d0f']}) +}; \ No newline at end of file From 80b72fce4ac35d1a3b84060cece21ee24da1d793 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 May 2023 23:51:11 +0200 Subject: [PATCH 0216/1354] add crv-usd --- projects/crv-usd/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/crv-usd/index.js diff --git a/projects/crv-usd/index.js b/projects/crv-usd/index.js new file mode 100644 index 0000000000..82333b76ea --- /dev/null +++ b/projects/crv-usd/index.js @@ -0,0 +1,27 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + ethereum: { factory: '0x818709b85052ddc521fae9c78737b27316337e3a', fromBlock: 17182152 }, +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0xebbe0dfde9dde641808b7a803882653420f3a5b12bb405d238faed959e1e3aa3'], + eventAbi: 'event AddMarket (address indexed collateral, address controller, address amm, address monetary_policy, uint256 ix)', + onlyArgs: true, + fromBlock, + }) + + return sumTokens2({ api, tokensAndOwners: logs.map(i => [i.collateral, i.amm]) }) + } + } +}) From 85106d372b8505772bbe127522fe0438f98b068b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 00:19:44 +0200 Subject: [PATCH 0217/1354] include plain factory --- projects/curve/index.js | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index 70f3ba5513..4a860c39c4 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -7,6 +7,8 @@ const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const erc20Abi = require("../helper/abis/erc20.json"); const contracts = require("./contracts.json"); +const { getLogs } = require('../helper/cache/getLogs') + const chains = [ "ethereum", //-200M "polygon", //-40M @@ -36,6 +38,7 @@ async function getDecimals(chain, token) { return decimalsCache[key] } + const gasTokens = [ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', '0x0000000000000000000000000000000000000000', @@ -61,7 +64,7 @@ async function getNames(chain, tokens) { res.forEach((name, i) => { const key = chain + '-' + missing[i] nameCache[key] = name ?? '' - mapping[missing[i]] = nameCache[key] + mapping[missing[i]] = nameCache[key] }) return mapping @@ -70,7 +73,7 @@ async function getNames(chain, tokens) { const registryIdsReverse = Object.fromEntries(Object.entries(registryIds).map(i => i.reverse())) async function getPool({ chain, block, registry }) { - const data = await sdk.api2.abi.fetchList({ chain, block, target: registry, itemAbi: abi.pool_list, lengthAbi: abi.pool_count, withMetadata: true, }) + const data = await sdk.api2.abi.fetchList({ chain, block, target: registry, itemAbi: abi.pool_list, lengthAbi: abi.pool_count, withMetadata: true, }) return data.filter(i => i.output) } @@ -156,7 +159,7 @@ async function unwrapPools({ poolList, registry, chain, block }) { let calls = aggregateBalanceCalls({ coins, nCoins, wrapped }); const allTokens = getUniqueAddresses(calls.map(i => i[0])) const tokenNames = await getNames(chain, allTokens) - const blacklistedTokens = [...blacklist, ...(Object.values(metapoolBases))] + const blacklistedTokens = [...blacklist, ...(Object.values(metapoolBases))] Object.entries(tokenNames).forEach(([token, name]) => { if ((name ?? '').startsWith('Curve.fi ')) { sdk.log(chain, 'blacklisting', name) @@ -167,11 +170,16 @@ async function unwrapPools({ poolList, registry, chain, block }) { } const blacklists = { - ethereum: [ '0x6b8734ad31d42f5c05a86594314837c416ada984', ], + ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297'], +} + +const config = { + ethereum: { plainFactory: '0x528baca578523855a64ee9c276826f934c86a54c', plainFactoryStartBlock: 17182168 }, } function tvl(chain) { - return async (_t, _e, { [chain]: block }) => { + const { plainFactory, plainFactoryStartBlock, } = config[chain] ?? {} + return async (_t, _e, { [chain]: block }, { api }) => { let balances = {}; const transform = await getChainTransform(chain); const poolLists = await getPools(block, chain); @@ -185,7 +193,23 @@ function tvl(chain) { const blacklistedTokens = res.map(i => i.blacklistedTokens).flat() if (blacklists[chain]) blacklistedTokens.push(...blacklists[chain]) - await sumTokens2({ balances, chain, block, tokensAndOwners, transformAddress: transform, blacklistedTokens }) + if (plainFactory) { + const logs = await getLogs({ + api, + target: plainFactory, + topics: ['0xb8f6972d6e56d21c47621efd7f02fe68f07a17c999c42245b3abd300f34d61eb'], + eventAbi: 'event PlainPoolDeployed(address[4] coins, uint256 A, uint256 fee, address deployer, address pool)', + onlyArgs: true, + fromBlock: plainFactoryStartBlock, + }) + logs.forEach(log => { + log.coins.forEach((coin, i) => { + if (i>1 && coin === nullAddress) return; + tokensAndOwners.push([coin, log.pool]) + }) + }) + } + await sumTokens2({ balances, chain, block, tokensAndOwners, transformAddress: transform, blacklistedTokens }) await handleUnlistedFxTokens(balances, chain); return balances; }; @@ -238,3 +262,8 @@ module.exports.hallmarks = [ [1654822801, "stETH depeg"], [1667692800, "FTX collapse"] ]; + +module.exports = { + // 0x528baca578523855a64ee9c276826f934c86a54c + ethereum: module.exports.ethereum +} \ No newline at end of file From 9339be01c162741e7cf3ab02d5dc4af6c4828bc8 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Thu, 4 May 2023 02:47:24 +0100 Subject: [PATCH 0218/1354] fix bug --- projects/curve/index.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index 4a860c39c4..27bb7016e5 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -262,8 +262,3 @@ module.exports.hallmarks = [ [1654822801, "stETH depeg"], [1667692800, "FTX collapse"] ]; - -module.exports = { - // 0x528baca578523855a64ee9c276826f934c86a54c - ethereum: module.exports.ethereum -} \ No newline at end of file From 5434651c15c1ab1736939df4c55da8eb434083bb Mon Sep 17 00:00:00 2001 From: SolBlaze Date: Wed, 3 May 2023 19:42:57 -0700 Subject: [PATCH 0219/1354] Add adapter for BlazeStake --- projects/blazestake/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/blazestake/index.js diff --git a/projects/blazestake/index.js b/projects/blazestake/index.js new file mode 100644 index 0000000000..e0fb424755 --- /dev/null +++ b/projects/blazestake/index.js @@ -0,0 +1,20 @@ +const { getTokenSupply } = require("./helper/solana") + +async function tvl() { + const supply = await getTokenSupply("bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1"); + + return { + 'blazestake-staked-sol': supply + } +} + +module.exports = { + timetravel: true, + methodology: "bSOL total supply as it's equal to the SOL staked", + solana: { + tvl + }, + hallmarks: [ + [1667865600, "FTX collapse"] + ], +}; From 95723ce1d4bd526ebf673d95a38a458564f5f564 Mon Sep 17 00:00:00 2001 From: SolBlaze Date: Wed, 3 May 2023 19:49:57 -0700 Subject: [PATCH 0220/1354] Fix import --- projects/blazestake/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/blazestake/index.js b/projects/blazestake/index.js index e0fb424755..bcd644b98e 100644 --- a/projects/blazestake/index.js +++ b/projects/blazestake/index.js @@ -1,4 +1,4 @@ -const { getTokenSupply } = require("./helper/solana") +const { getTokenSupply } = require("../helper/solana") async function tvl() { const supply = await getTokenSupply("bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1"); From 602030cb459b9a8d1f2da6f121098002e2739791 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 09:38:12 +0200 Subject: [PATCH 0221/1354] Update index.js --- projects/blazestake/index.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/projects/blazestake/index.js b/projects/blazestake/index.js index bcd644b98e..6ddaf5ad9e 100644 --- a/projects/blazestake/index.js +++ b/projects/blazestake/index.js @@ -1,20 +1,15 @@ const { getTokenSupply } = require("../helper/solana") -async function tvl() { - const supply = await getTokenSupply("bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1"); - - return { - 'blazestake-staked-sol': supply - } +async function tvl(_, _1, _2, { api }) { + const bSOL = 'bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1' + const supply = await getTokenSupply(bSOL) + api.add(bSOL, supply * 1e9) } module.exports = { - timetravel: true, + timetravel: false, methodology: "bSOL total supply as it's equal to the SOL staked", solana: { tvl }, - hallmarks: [ - [1667865600, "FTX collapse"] - ], }; From 8125175840a670d8a2d8c2971addc039d21c1363 Mon Sep 17 00:00:00 2001 From: mubashirzebi Date: Thu, 4 May 2023 15:07:30 +0530 Subject: [PATCH 0222/1354] synthex sdk adapter added --- projects/synthex/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/synthex/index.js diff --git a/projects/synthex/index.js b/projects/synthex/index.js new file mode 100644 index 0000000000..cb3daf253a --- /dev/null +++ b/projects/synthex/index.js @@ -0,0 +1,32 @@ + +const sdk = require('@defillama/sdk'); +const { sumTokensExport } = require("../helper/unwrapLPs"); +const poolC = '0x8d6E834277E4f513BacF83B0A87524c913eF8691'; +const poolF = "0x0546458d110Dff9D394C0F4621423Bc8f009A779"; +const USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; +const WBTC = "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"; +const ARB = "0x912CE59144191C1204E64559FE8253a0e49E6548"; +const ETH = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; +const USDT = "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"; +const DAI = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"; + + +module.exports = { + methodology: "counts value of assets in the PoolC and PoolF", + start: 82762407, + arbitrum: { + tvl: sumTokensExport({ + tokensAndOwners: [ + [USDC, poolC], + [WBTC, poolC], + [ARB, poolC], + [ETH, poolC], + [DAI, poolF], + [USDC, poolF], + [USDT, poolF], + ] + }), + }, +}; + + From ea3e7b9c80aac5948808e48f67c1558a7b526287 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 16:16:40 +0200 Subject: [PATCH 0223/1354] add new crv-usd --- projects/crv-usd/index.js | 33 ++++++++++++++++++---------- projects/curve/index.js | 46 +++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 30 deletions(-) diff --git a/projects/crv-usd/index.js b/projects/crv-usd/index.js index 82333b76ea..c6e79daced 100644 --- a/projects/crv-usd/index.js +++ b/projects/crv-usd/index.js @@ -2,26 +2,37 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { - ethereum: { factory: '0x818709b85052ddc521fae9c78737b27316337e3a', fromBlock: 17182152 }, + ethereum: { + pools: [ + { factory: '0x818709b85052ddc521fae9c78737b27316337e3a', fromBlock: 17182152 }, + { factory: '0x30a2F3c3AA6D12C0a36Bed210dCF1B32EF6228Cc', fromBlock: 17187330 }, + ] + }, } module.exports = { }; + Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] + const { pools} = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - const logs = await getLogs({ - api, - target: factory, - topics: ['0xebbe0dfde9dde641808b7a803882653420f3a5b12bb405d238faed959e1e3aa3'], - eventAbi: 'event AddMarket (address indexed collateral, address controller, address amm, address monetary_policy, uint256 ix)', - onlyArgs: true, - fromBlock, - }) + const logs = await Promise.all(pools.map(getLogs_)) + + console.log(logs) + return sumTokens2({ api, tokensAndOwners: logs.flat().map(i => [i.collateral, i.amm]) }) - return sumTokens2({ api, tokensAndOwners: logs.map(i => [i.collateral, i.amm]) }) + async function getLogs_({ factory, fromBlock }) { + return getLogs({ + api, + target: factory, + topics: ['0xebbe0dfde9dde641808b7a803882653420f3a5b12bb405d238faed959e1e3aa3'], + eventAbi: 'event AddMarket (address indexed collateral, address controller, address amm, address monetary_policy, uint256 ix)', + onlyArgs: true, + fromBlock, + }) + } } } }) diff --git a/projects/curve/index.js b/projects/curve/index.js index 27bb7016e5..f90062b636 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -170,15 +170,38 @@ async function unwrapPools({ poolList, registry, chain, block }) { } const blacklists = { - ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297'], + ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7'], } const config = { - ethereum: { plainFactory: '0x528baca578523855a64ee9c276826f934c86a54c', plainFactoryStartBlock: 17182168 }, + ethereum: { + plainFactoryConfig: [ + { plainFactory: '0x528baca578523855a64ee9c276826f934c86a54c', fromBlock: 17182168 }, + ] + }, +} + +async function addPlainFactoryConfig({ api, tokensAndOwners, plainFactoryConfig = [] }) { + return Promise.all(plainFactoryConfig.map(async ({ plainFactory, fromBlock }) => { + const logs = await getLogs({ + api, + target: plainFactory, + topics: ['0xb8f6972d6e56d21c47621efd7f02fe68f07a17c999c42245b3abd300f34d61eb'], + eventAbi: 'event PlainPoolDeployed(address[4] coins, uint256 A, uint256 fee, address deployer, address pool)', + onlyArgs: true, + fromBlock, + }) + logs.forEach(log => { + log.coins.forEach((coin, i) => { + if (i > 1 && coin === nullAddress) return; + tokensAndOwners.push([coin, log.pool]) + }) + }) + })) } function tvl(chain) { - const { plainFactory, plainFactoryStartBlock, } = config[chain] ?? {} + const { plainFactoryConfig = [] } = config[chain] ?? {} return async (_t, _e, { [chain]: block }, { api }) => { let balances = {}; const transform = await getChainTransform(chain); @@ -193,22 +216,7 @@ function tvl(chain) { const blacklistedTokens = res.map(i => i.blacklistedTokens).flat() if (blacklists[chain]) blacklistedTokens.push(...blacklists[chain]) - if (plainFactory) { - const logs = await getLogs({ - api, - target: plainFactory, - topics: ['0xb8f6972d6e56d21c47621efd7f02fe68f07a17c999c42245b3abd300f34d61eb'], - eventAbi: 'event PlainPoolDeployed(address[4] coins, uint256 A, uint256 fee, address deployer, address pool)', - onlyArgs: true, - fromBlock: plainFactoryStartBlock, - }) - logs.forEach(log => { - log.coins.forEach((coin, i) => { - if (i>1 && coin === nullAddress) return; - tokensAndOwners.push([coin, log.pool]) - }) - }) - } + await addPlainFactoryConfig({ api, tokensAndOwners, plainFactoryConfig }) await sumTokens2({ balances, chain, block, tokensAndOwners, transformAddress: transform, blacklistedTokens }) await handleUnlistedFxTokens(balances, chain); return balances; From 85aa30b38fc23f72b2200721dff7937840182944 Mon Sep 17 00:00:00 2001 From: "semyon.zhulikov" Date: Thu, 4 May 2023 17:24:13 +0300 Subject: [PATCH 0224/1354] latken: add ethereum, polygon, avax, cardano, algorand, solana, tron and etc --- projects/latoken/index.js | 132 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 projects/latoken/index.js diff --git a/projects/latoken/index.js b/projects/latoken/index.js new file mode 100644 index 0000000000..7374f695d8 --- /dev/null +++ b/projects/latoken/index.js @@ -0,0 +1,132 @@ +const { cexExports } = require("../helper/cex"); + +const config = { + ethereum: { + owners: [ + "0x8D056D457a52c4dAF71CEf45F540a040c143Ea05", //eth hot wallet + "0x7891b20c690605f4e370d6944c8a5dbfac5a451c", //eth cold wallet + "0xeE61F5fB0dB81d3A09392375Ee96f723C0620E07", //erc20 hot wallet + "0xc00EEbe4E2bE29679781fc5fC350057eE8132BaB", //erc20 subsidy wallet + "0x4114d8D509503592175A8E044594b29EC081dbe0", //eth custody wallet + "0x00343217B01188388C0E3242278231Ace35E1b61", //eth custody2 wallet + "0x9976c40e8186a5E0C2a9D50d55b51F905d10ce52", //eth custody3 wallet + ], + }, + polygon: { + owners: [ + "0x235e8ceD6b42eE6E226837EB551E86D810d49f22", //hot wallet + "0xA614180C69aBF82f3E7AAbB53AD9976EC90aeAC6", //subsidy wallet + "0x235e8ceD6b42eE6E226837EB551E86D810d49f22", //hot wallet + "0xA614180C69aBF82f3E7AAbB53AD9976EC90aeAC6", //subsidy wallet + ], + }, + avax: { + owners: ["0xeD8D8f4Ff53915D80987BCD51C2DE582a05b2322"], + }, + cardano: { + owners: [ + "addr1vx6kespckg27xu879kf40mpv4pmjxl0ad5hewq067e3d50crylyhc", //hot wallet + "addr1v804l0u7q4ju4eyrd8ykvvdehryn6qyz3n4nh8ucfr8s3pgeskjvu", //subsidy wallet + ], + }, + algorand: { + owners: ["FQQQS3UJFSNYCII2KE5XSCUB5ZIV2HUFVQ22QYLGI3ONFTPOFMAF5HLLZE"], + }, + cosmos: { + owners: [ + "cosmos1wt5sdluapdqrp8wljyesl7s3x5vzq5z76t4nuj", //hot wallet + ], + }, + bsc: { + owners: [ + "0xBA6C98f1cc6869ECCbeB892b7A603F8F02Db3b29", //cold wallet + "0xCE55977E7B33E4e5534Bd370eE31504Fc7Ac9ADc", //hot wallet + "0x9480D1cc3fd4cb7936D114f7d63124107870A7b8", //custody wallet + "0xd76D939B455743e96adbCdf800627b11F3446780", //swap wallet + "0xBA6C98f1cc6869ECCbeB892b7A603F8F02Db3b29", //token cold wallet + "0xCE55977E7B33E4e5534Bd370eE31504Fc7Ac9ADc", //token hot wallet + "0x9480D1cc3fd4cb7936D114f7d63124107870A7b8", //token custody wallet + "0xd76D939B455743e96adbCdf800627b11F3446780", //token swap wallet + ], + }, + celo: { + owners: ["0xEeC02a6D1a7F9f534b9609c8EE30B9cF9A7fe1B3"], + }, + elrond: { + owners: ["erd1z5xjeu4xw32jkckhj9jpc9dymj6a9h8yxtch96e43ncp6fhuzpnqshqutj"], + }, + eos: { + owners: ["latokenabbc1", "latokeneos11"], + }, + energyweb: { + owners: [ + "0x26b52C889FCf3B8f449aD1c0F07b8572E6ACE262", //hot wallet + "0x0F307b17d41acE555620DF5a55Dd5A01637e3b42", //cold wallet + "0x6fb194fc9806fE320E0CBD658e31F13B1bAa3925", //custody wallet + ], + }, + ethereumclassic: { + owners: [ + "0xE69963CE13ED742639C8287913682bC008B3e622", //hot wallet + ], + }, + // filecoin: { + // owners: ["f1iy5dvp6ggzhtraxodbfdkbiw5s67mhff4w43pai"], //hot wallet + // }, + gochain: { + owners: [ + "0xA1a0538D556B3E77f7E1340E3Ebd70C649c4bb84", //hot wallet + "0x1771C9c8d5AF830d322c2E1D2161D002844679EF", //subsidy wallet + ], + }, + // injective: { + // owners: [ + // "inj1uyc234cek2ja9ru7a870cmx2lcavt5um2nk6hh", //hot wallet + // ], + // }, + // neo3: { + // owners: ["NMngTcDdCq3cFNHiPBvtim73HLuG3Dzkwb"], + // }, + // proton: { + // owners: ["protonla"], + // }, + polkadot: { + owners: ["1347e3PfJKKcJL4XJhFeZ5UmZYRnk26Vs9aGjZ8RZLPkWWNY"], + }, + solana: { + owners: [ + "51AASorYCLPcUHnuQQaau6DfsfFRixzh4HsoQwsc5Ara", //hot wallet + ], + }, + optimism: { + owners: [ + "0xecabeA0fB22f82F3A5a5D6043D7cCf65F3640c85", //hot wallet + "0x3b28358e9CDde80A24f0f811daD13aB9fc2A0d2A", //subsidy wallet + ], + }, + terra: { + owners: ["terra14rvsrmq47pr9v5pkdkttftgh526jeeluyumalk"], + }, + terra2: { + owners: ["terra13x5jkljx69vyak47k9e9u9qetu0sckxpfysrp7"], + }, + tezos: { + owners: [ + "tz2QLHkGgaXqoeqUFxUJXAvZ9pdQ2HQDhTe4", //hot wallet + ], + }, + tron: { + owners: [ + "TT2YwaJ8DXsrpycgBGDWEei1FUQm6YT85T", //hot wallet + "TUJrDuFr6ALjtZehcpFRKnBCCo79Gs76ww", //cold wallet + "TVNdyXbcJ5ZwwFsjnScrNXSv9d435guynT", //subsidy wallet + ], + }, + zilliqa: { + owners: [ + "zil1rklazrfy5spul4tqzc2jqfvuneszcjrdya6a8y", //hot wallet + ], + }, +}; + +module.exports = cexExports(config); From a86c6cade91a94c3f9481d7af5d5a4d41d207c0f Mon Sep 17 00:00:00 2001 From: "semyon.zhulikov" Date: Thu, 4 May 2023 18:49:02 +0300 Subject: [PATCH 0225/1354] disable gochain and energyweb --- projects/latoken/index.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/projects/latoken/index.js b/projects/latoken/index.js index 7374f695d8..46f9c84057 100644 --- a/projects/latoken/index.js +++ b/projects/latoken/index.js @@ -58,13 +58,13 @@ const config = { eos: { owners: ["latokenabbc1", "latokeneos11"], }, - energyweb: { - owners: [ - "0x26b52C889FCf3B8f449aD1c0F07b8572E6ACE262", //hot wallet - "0x0F307b17d41acE555620DF5a55Dd5A01637e3b42", //cold wallet - "0x6fb194fc9806fE320E0CBD658e31F13B1bAa3925", //custody wallet - ], - }, + // energyweb: { + // owners: [ + // "0x26b52C889FCf3B8f449aD1c0F07b8572E6ACE262", //hot wallet + // "0x0F307b17d41acE555620DF5a55Dd5A01637e3b42", //cold wallet + // "0x6fb194fc9806fE320E0CBD658e31F13B1bAa3925", //custody wallet + // ], + // }, ethereumclassic: { owners: [ "0xE69963CE13ED742639C8287913682bC008B3e622", //hot wallet @@ -73,12 +73,12 @@ const config = { // filecoin: { // owners: ["f1iy5dvp6ggzhtraxodbfdkbiw5s67mhff4w43pai"], //hot wallet // }, - gochain: { - owners: [ - "0xA1a0538D556B3E77f7E1340E3Ebd70C649c4bb84", //hot wallet - "0x1771C9c8d5AF830d322c2E1D2161D002844679EF", //subsidy wallet - ], - }, + // gochain: { + // owners: [ + // "0xA1a0538D556B3E77f7E1340E3Ebd70C649c4bb84", //hot wallet + // "0x1771C9c8d5AF830d322c2E1D2161D002844679EF", //subsidy wallet + // ], + // }, // injective: { // owners: [ // "inj1uyc234cek2ja9ru7a870cmx2lcavt5um2nk6hh", //hot wallet From b6afaa43f7d00168025b4af7de4ef8bac7a77b70 Mon Sep 17 00:00:00 2001 From: Kevin Upton Date: Fri, 5 May 2023 02:44:29 +1000 Subject: [PATCH 0226/1354] Kei Finance - Defi Lama (#5962) * updated kei finance TVL * kei finance: split treasury and staking from tvl * updated kei index * updated tvl --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/kei-finance/index.js | 36 +++++++++++++++++++++++++++++++++++ projects/treasury/kei.js | 13 +++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 projects/kei-finance/index.js create mode 100644 projects/treasury/kei.js diff --git a/projects/kei-finance/index.js b/projects/kei-finance/index.js new file mode 100644 index 0000000000..ff4acb748f --- /dev/null +++ b/projects/kei-finance/index.js @@ -0,0 +1,36 @@ +const sdk = require("@defillama/sdk"); +const { request, } = require("graphql-request"); +const { BigNumber } = require("bignumber.js"); + +const TOKEN_ADDRESS = "0xF75C7a59bCD9bd207C4Ab1BEB0b32EEd3B6392f3"; +const TREASURY_ADDRESS = "0x3D027824a9Eb4cc5E8f24D97FD8495eA9DC7026F"; +const WETH_ADDRESS = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; + +const config = { + ethereum: { + subgraph: 'https://api.thegraph.com/subgraphs/name/kei-finance/core', + } +} + +const graphQuery = ` + query GetStakingDetails { + staking(id:"staking") { + totalPrincipal + totalRewards + } + } +`; + +module.exports = { + ethereum: { + tvl: () => 0, + staking: async () => { + const { staking } = await request( + config.ethereum.subgraph, + graphQuery + ) + + return { [TOKEN_ADDRESS]: BigNumber(staking.totalPrincipal).plus(BigNumber(staking.totalRewards)) }; + }, + } +}; diff --git a/projects/treasury/kei.js b/projects/treasury/kei.js new file mode 100644 index 0000000000..1a7bfead12 --- /dev/null +++ b/projects/treasury/kei.js @@ -0,0 +1,13 @@ +const { treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + '0x7d87123d92e9df257e0789189e4c4ff67fa6c382', + ], + owners: ['0x3D027824a9Eb4cc5E8f24D97FD8495eA9DC7026F'], + ownTokens: ['0xF75C7a59bCD9bd207C4Ab1BEB0b32EEd3B6392f3'], + resolveLP: true, + }, +}) From ed40890ee9e825e53537b893e0c0a600892b9ebc Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 4 May 2023 20:14:09 +0100 Subject: [PATCH 0227/1354] add treasury adapter --- projects/treasury/guru-network.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/treasury/guru-network.js diff --git a/projects/treasury/guru-network.js b/projects/treasury/guru-network.js new file mode 100644 index 0000000000..e848df22c5 --- /dev/null +++ b/projects/treasury/guru-network.js @@ -0,0 +1,18 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x167D87A906dA361A10061fe42bbe89451c2EE584"; + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //usdc + '0x777172D858dC1599914a1C4c6c9fC48c99a60990',//solid + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth + '0x853d955aCEf822Db058eb8505911ED77F175b99e',//frax + ], + owners: [treasury], + ownTokens: [], + }, +}) \ No newline at end of file From 2158af4f07f4140946ff03fbfa8237e3ac45c153 Mon Sep 17 00:00:00 2001 From: astarexchange <102902200+astarexchange@users.noreply.github.com> Date: Thu, 4 May 2023 21:44:51 +0200 Subject: [PATCH 0228/1354] Create index.js --- projects/astarexchangev3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/astarexchangev3/index.js diff --git a/projects/astarexchangev3/index.js b/projects/astarexchangev3/index.js new file mode 100644 index 0000000000..cff67e6750 --- /dev/null +++ b/projects/astarexchangev3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + astar: { factory: '0x0bA242809B5b8AC2C362372807bc616fc620DB97', fromBlock: 3482657, }, +}) From c56d139d244d1c54535bf49c9eeb90b6c490c297 Mon Sep 17 00:00:00 2001 From: eightwoods <45482848+eightwoods@users.noreply.github.com> Date: Thu, 4 May 2023 21:27:48 +0100 Subject: [PATCH 0229/1354] Update index.js Update addresses --- projects/moret/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/moret/index.js b/projects/moret/index.js index 0938e11303..a5ded157c5 100644 --- a/projects/moret/index.js +++ b/projects/moret/index.js @@ -1,8 +1,8 @@ const { sumTokensExport } = require('../helper/unwrapLPs') -const markets = ['0xE15A3a1d19a48c0b1dB46C3F69b9A2F258B56963', // ETH pool - '0xDf316b15B0d54C3159Be342377E73C8120e23f92', // BTC pool - '0xe39b7E5F04FCD8abde312E5B7a4c49Ed1C686A49' // GHST pool +const markets = ['0x73917c0b432727Ce608824D1bb5a784ed1a93695', // ETH pool + '0xb0c2E53336106DFA3c3E4DC6A2Df25af0ae2626d', // BTC pool + '0x090015A60a99Fa4551e458E1cb95bE3C381B1C54' // GHST pool ] const tvlTokens = ['0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', // WETH '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', // WBTC From 9d0449933bbaa4ba7fcc9dc6b670e6e63dbabbfc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 22:33:44 +0200 Subject: [PATCH 0230/1354] add stellaswap v3 --- projects/crv-usd/index.js | 2 +- projects/helper/chain/sui.js | 16 ++++++++++++++++ projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/mm-finance-arbitrum-v3/index.js | 1 - projects/stellaswap-v3/index.js | 9 +++++++++ 6 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 projects/helper/chain/sui.js create mode 100644 projects/stellaswap-v3/index.js diff --git a/projects/crv-usd/index.js b/projects/crv-usd/index.js index c6e79daced..f9ee9c0080 100644 --- a/projects/crv-usd/index.js +++ b/projects/crv-usd/index.js @@ -6,6 +6,7 @@ const config = { pools: [ { factory: '0x818709b85052ddc521fae9c78737b27316337e3a', fromBlock: 17182152 }, { factory: '0x30a2F3c3AA6D12C0a36Bed210dCF1B32EF6228Cc', fromBlock: 17187330 }, + { factory: '0xfa3e2db8eb6c646e0d24046c1a185934d41a8f7a', fromBlock: 17187330 }, ] }, } @@ -20,7 +21,6 @@ Object.keys(config).forEach(chain => { tvl: async (_, _b, _cb, { api, }) => { const logs = await Promise.all(pools.map(getLogs_)) - console.log(logs) return sumTokens2({ api, tokensAndOwners: logs.flat().map(i => [i.collateral, i.amm]) }) async function getLogs_({ factory, fromBlock }) { diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js new file mode 100644 index 0000000000..d7ab8810ff --- /dev/null +++ b/projects/helper/chain/sui.js @@ -0,0 +1,16 @@ + +const sdk = require('@defillama/sdk') + +const http = require('../http') +const env = require('../env') +const { transformBalances } = require('../portedTokens') +const { log, getUniqueAddresses } = require('../utils') + +const coreTokens = [] + +const endpoint = env.SUI_RPC || "https://fullnode.mainnet.sui.io/" + + +module.exports = { + endpoint, +}; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 1091ac54a9..1d3d3f8636 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -173,6 +173,7 @@ "stellar", "step", "stride", + "sui", "sx", "syscoin", "telos", diff --git a/projects/helper/env.js b/projects/helper/env.js index 53850d2f01..9edd93c192 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -6,6 +6,7 @@ module.exports = { GETBLOCK_KEY: env.GETBLOCK_KEY, SOLANA_RPC: env.SOLANA_RPC, APTOS_RPC: env.APTOS_RPC, + SUI_RPC: env.SUI_RPC, TERRA_RPC: env.TERRA_RPC, TERRA2_RPC: env.TERRA2_RPC, LOFTY_API: env.LOFTY_API, diff --git a/projects/mm-finance-arbitrum-v3/index.js b/projects/mm-finance-arbitrum-v3/index.js index a0755b2cd2..12ac490f56 100644 --- a/projects/mm-finance-arbitrum-v3/index.js +++ b/projects/mm-finance-arbitrum-v3/index.js @@ -4,6 +4,5 @@ module.exports = uniV3Export({ arbitrum: { factory: "0x947bc57CEFDd22420C9a6d61387FE4D4cf8A090d", fromBlock: 72404739, - isAlgebra: false, }, }); diff --git a/projects/stellaswap-v3/index.js b/projects/stellaswap-v3/index.js new file mode 100644 index 0000000000..460e043759 --- /dev/null +++ b/projects/stellaswap-v3/index.js @@ -0,0 +1,9 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + moonbeam: { + factory: "0xabe1655110112d0e45ef91e94f8d757e4ddba59c", + fromBlock: 2649801, + isAlgebra: true, + }, +}); From 4215d984a234fb5c5234aa0621683bc4bf400787 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 22:40:33 +0200 Subject: [PATCH 0231/1354] add stellaswap stablepools --- projects/stellaswap.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/stellaswap.js b/projects/stellaswap.js index 3e8fc3d4ef..3606dd179e 100644 --- a/projects/stellaswap.js +++ b/projects/stellaswap.js @@ -16,6 +16,8 @@ async function stablePoolTVL(_, _b, { [chain]: block }) { '0xb86271571c90ad4e0c9776228437340b42623402', // ETH '0x7FbE3126C03444D43fC403626ec81E3e809E6b46', // MAI B4P '0xB1BC9f56103175193519Ae1540A0A4572b1566F6', // 4pool WH + '0x5c3dc0ab1bd70c5cdc8d0865e023164d4d3fd8ec', // Frax pool + '0x95953409374e1ed252c6D100E7466E346E3dC5b9', // 2pool ] let { output: lpTokens } = await sdk.api.abi.multiCall({ From 38decd02e1c7a6aa41909773dd9ea9775dd063be Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 22:44:33 +0200 Subject: [PATCH 0232/1354] update curve tvl --- projects/curve/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index f90062b636..14c016437d 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -170,13 +170,14 @@ async function unwrapPools({ poolList, registry, chain, block }) { } const blacklists = { - ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7'], + ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC'], } const config = { ethereum: { plainFactoryConfig: [ { plainFactory: '0x528baca578523855a64ee9c276826f934c86a54c', fromBlock: 17182168 }, + { plainFactory: '0x0145fd99f1dd6e2491e44fca608c481c9c5b97a9', fromBlock: 17182168 }, ] }, } From 0275ddf033edddc2d702654a81dfa0a8013c922a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 22:51:20 +0200 Subject: [PATCH 0233/1354] minor fix --- projects/synthex/index.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/projects/synthex/index.js b/projects/synthex/index.js index cb3daf253a..938164e1a1 100644 --- a/projects/synthex/index.js +++ b/projects/synthex/index.js @@ -1,5 +1,4 @@ -const sdk = require('@defillama/sdk'); const { sumTokensExport } = require("../helper/unwrapLPs"); const poolC = '0x8d6E834277E4f513BacF83B0A87524c913eF8691'; const poolF = "0x0546458d110Dff9D394C0F4621423Bc8f009A779"; @@ -7,6 +6,7 @@ const USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; const WBTC = "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"; const ARB = "0x912CE59144191C1204E64559FE8253a0e49E6548"; const ETH = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; +const WETH = "0x82af49447d8a07e3bd95bd0d56f35241523fbab1"; const USDT = "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"; const DAI = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"; @@ -16,14 +16,9 @@ module.exports = { start: 82762407, arbitrum: { tvl: sumTokensExport({ - tokensAndOwners: [ - [USDC, poolC], - [WBTC, poolC], - [ARB, poolC], - [ETH, poolC], - [DAI, poolF], - [USDC, poolF], - [USDT, poolF], + ownerTokens: [ + [[USDC, WBTC, ARB, ETH, WETH], poolC], + [[USDC, DAI, USDT], poolF], ] }), }, From a1e40b8aadd4420035aab711152b35cf2c6d0bdd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 May 2023 23:03:28 +0200 Subject: [PATCH 0234/1354] minor fix --- projects/idle/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/idle/index.js b/projects/idle/index.js index 035981ecc0..4f336a5c54 100644 --- a/projects/idle/index.js +++ b/projects/idle/index.js @@ -150,7 +150,7 @@ async function tvl(time, ethBlock, chainBlocks, { api }) { }) } - return sumTokens2({ api, balances, ownerTokens, }) + return sumTokens2({ api, balances, ownerTokens, blacklistedTokens, }) } module.exports = { From 6cdb162e60ef6e98c3a955e4d839e64d8eaefc29 Mon Sep 17 00:00:00 2001 From: rorrieswap Date: Fri, 5 May 2023 00:20:40 +0100 Subject: [PATCH 0235/1354] Added Swapsicle NFT staking contract --- projects/swapsicle/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/swapsicle/index.js b/projects/swapsicle/index.js index 3490ad8419..35fe0326ca 100644 --- a/projects/swapsicle/index.js +++ b/projects/swapsicle/index.js @@ -43,6 +43,7 @@ const contracts = { stakingContract_sPOPS: "0x14e374cef17d800109710aa2c2d73e50db76d367", stakingContract_IB: '0xac448d75e945923b176ebca4ff2b5a82de73f812', stakingContract_IB2: '0x08010b76d4b03cabcfb0f6ba9db7de8336c715fe', + stakingContract_NFT: '0x552fd5743432eC2dAe222531e8b88bf7d2410FBc', pops: "0x173fd7434b8b50df08e3298f173487ebdb35fd14", stlos: "0xB4B01216a5Bc8F1C8A33CD990A1239030E60C905" } @@ -152,6 +153,8 @@ module.exports = { staking: sdk.util.sumChainTvls([ // Ice Cream Van stakingPricedLP(contracts.telos.stakingContract_sPOPS, contracts.telos.pops,'telos','0x6dee26f527adb0c24fef704228d8e458b46f9f5f',"wrapped-telos",true), + // NFT's + stakingPricedLP(contracts.telos.stakingContract_NFT, contracts.telos.pops,'telos','0x6dee26f527adb0c24fef704228d8e458b46f9f5f',"wrapped-telos",true), // Ice Box stakedTLOSIceBox ]) From 9b7727727de4d81054609b842447dcba973c6d8f Mon Sep 17 00:00:00 2001 From: Cells <130453886+CellsFi@users.noreply.github.com> Date: Fri, 5 May 2023 10:28:32 +0800 Subject: [PATCH 0236/1354] add Cells Finance --- projects/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/index.js diff --git a/projects/index.js b/projects/index.js new file mode 100644 index 0000000000..35ff1f739b --- /dev/null +++ b/projects/index.js @@ -0,0 +1,14 @@ +const { yieldHelper, } = require("../helper/yieldHelper") + +const contract = '0xAcb845A2a46F6De8cbAe8eA234b632a99ef93D31' +const cells = '0x3022d80e02075F5A2a442A318229487f9Ea66D82' + +module.exports = yieldHelper({ + project: 'cells-finance', + chain: 'bsc', + masterchef: contract, + nativeToken: cells, + abis: { + poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat, address )', + } +}) \ No newline at end of file From cd90e669fc36686320fb4c5976949231d945f11e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 May 2023 11:01:11 +0200 Subject: [PATCH 0237/1354] minor fix --- projects/{ => cells}/index.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename projects/{ => cells}/index.js (100%) diff --git a/projects/index.js b/projects/cells/index.js similarity index 100% rename from projects/index.js rename to projects/cells/index.js From 9f1557e4b0c18c6b9d67f01c15a24b887dae3455 Mon Sep 17 00:00:00 2001 From: pf55351 Date: Fri, 5 May 2023 16:04:16 +0200 Subject: [PATCH 0238/1354] Change node ulr --- projects/helper/chain/algorand.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/helper/chain/algorand.js b/projects/helper/chain/algorand.js index 62b53ea4a1..24bb66422f 100644 --- a/projects/helper/chain/algorand.js +++ b/projects/helper/chain/algorand.js @@ -12,9 +12,9 @@ const assetCache = {} const geckoMapping = coreAssets.algorand ?? {} const axiosObj = axios.create({ - baseURL: 'https://algoindexer.algoexplorerapi.io', + baseURL: "https://mainnet-idx.algonode.cloud", timeout: 300000, -}) +}); const indexerLimiter = new RateLimiter({ tokensPerInterval: 10, interval: "second" }); From 008200431412744dfd540232f5d2590619aa8336 Mon Sep 17 00:00:00 2001 From: pf55351 Date: Fri, 5 May 2023 16:04:33 +0200 Subject: [PATCH 0239/1354] Add GARD, WBTC, WETH --- projects/folks-finance/v2/constants.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/projects/folks-finance/v2/constants.js b/projects/folks-finance/v2/constants.js index a1b72dfa79..34f404a4d1 100644 --- a/projects/folks-finance/v2/constants.js +++ b/projects/folks-finance/v2/constants.js @@ -34,6 +34,21 @@ const pools = [ appId: 1044267181, assetId: 287867876, }, + // Gard + { + appId: 1060585819, + assetId: 684649988, + }, + // WBTC + { + appId: 1067289273, + assetId: 1058926737, + }, + // WETH + { + appId: 1067289481, + assetId: 887406851, + }, ]; const oracleAppId = 1040271396; From aa314ecca4e03eb8f8274a6fbe6bb76609971a61 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 May 2023 16:32:28 +0200 Subject: [PATCH 0240/1354] cetus: support SUI --- projects/cetus/index.js | 24 ++++++++++++++++++++ projects/helper/chain/sui.js | 44 ++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/projects/cetus/index.js b/projects/cetus/index.js index a63f0d4e13..8303849a43 100644 --- a/projects/cetus/index.js +++ b/projects/cetus/index.js @@ -1,4 +1,5 @@ const { dexExport, getResources } = require('../helper/chain/aptos') +const sui = require('../helper/chain/sui') const { transformDexBalances } = require('../helper/portedTokens') const { PromisePool } = require('@supercharge/promise-pool') const sdk = require('@defillama/sdk') @@ -27,6 +28,26 @@ async function tvl() { } } +async function getListItems(list, start, items = []) { + const { fields: { value: { fields } }} = await sui.getDynamicFieldObject(list, start) + items.push(fields.value) + start = fields.next + if (start) return getListItems(list, start, items) + return items +} + +async function suiTVL() { + const { api } = arguments[3] + const poolObjectID = '0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0' + const { fields: { list: { fields: listObject } }} = await sui.getObject(poolObjectID) + const items = await getListItems(listObject.id.id, listObject.head) + const poolInfo = await sui.getObjects(items.map(i => i.fields.pool_id)) + items.forEach((v, i) => { + api.add('0x'+v.fields.coin_type_a.fields.name, poolInfo[i].fields.coin_a) + api.add('0x'+v.fields.coin_type_b.fields.name, poolInfo[i].fields.coin_b) + }) +} + module.exports = dexExport({ account: '0xec42a352cc65eca17a9fa85d0fc602295897ed6b8b8af6a6c79ef490eb8f9eba', poolStr: 'amm_swap::Pool<', @@ -37,5 +58,8 @@ module.exports = dexExport({ module.exports = { aptos: { tvl: sdk.util.sumChainTvls([module.exports.aptos.tvl, tvl]) + }, + sui: { + tvl: suiTVL, } } \ No newline at end of file diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index d7ab8810ff..372f9d5c12 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -8,9 +8,53 @@ const { log, getUniqueAddresses } = require('../utils') const coreTokens = [] +//https://docs.sui.io/sui-jsonrpc + const endpoint = env.SUI_RPC || "https://fullnode.mainnet.sui.io/" +async function getObject(objectId) { + return (await call('sui_getObject', [objectId, { + "showType": true, + "showOwner": true, + "showContent": true, + }])).content +} + +async function getObjects(objectIds) { + const { + result + } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method: 'sui_multiGetObjects', params: [objectIds, { + "showType": true, + "showOwner": true, + "showContent": true, + }], }) + return objectIds.map(i => result.find(j => j.data.objectId === i)?.data?.content) +} + +async function getDynamicFieldObject(parent, id) { + return (await call('suix_getDynamicFieldObject', [parent, { + "type": "0x2::object::ID", + "value": id +}])).content +} + +async function call(method, params) { + if (!Array.isArray(params)) params = [params] + const { + result: { data } + } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method, params, }) + return data +} + +async function multiCall(calls) { + return Promise.all(calls.map(i => call(...i))) +} module.exports = { endpoint, + call, + multiCall, + getObject, + getObjects, + getDynamicFieldObject, }; From a1643e8051e8074c51b9bea981915b900ca64c8e Mon Sep 17 00:00:00 2001 From: kcfang Date: Fri, 5 May 2023 23:23:55 +0800 Subject: [PATCH 0241/1354] Calculate veTT pool size by contract call After the latest hardfork on ThunderCore, the team moved all TT in the posStaking contract to running voters to achieve a true "Proof of Staking". The real-time staking amount can be obtained by calling getTTPool(), which calculates the pool size using the formula: ``` pool size = balanceOf(posStaking) + sum(posVoterStakings) - sum(userUnstakings) ``` This formula takes into account the balance of the posStaking contract, the total staking amount of all voters, and the total amount of TT being unstaked by users. --- projects/vett/index.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/projects/vett/index.js b/projects/vett/index.js index 2c0aaf8829..5abf1b50a2 100644 --- a/projects/vett/index.js +++ b/projects/vett/index.js @@ -1,8 +1,27 @@ -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs'); +const sdk = require("@defillama/sdk"); + + +const chain = "thundercore"; +const posStaking = "0xC3C857a9E5Be042C8acF4F2827Aa053e93b5d039" +const posABI = { + getTTPoolAbi: "uint256:getTTPool" +} + +async function tvl(_timestamp, _b, { thundercore: block }) { + const params = { chain, block, target: posStaking, } + // staking pool = balanceOf(posStaking) + sum(voterStakings) - sum(userUnstakings) + const ttTvl = await sdk.api2.abi.call({ + ...params, + abi: posABI.getTTPoolAbi, + }); + return { + "thunder-token": ttTvl / 1e18, + }; +} module.exports = { methodology: 'calculate the total amount of TT locked in the veTT contract', thundercore: { - tvl: sumTokensExport({ owners: ['0xC3C857a9E5Be042C8acF4F2827Aa053e93b5d039'], tokens: [nullAddress], }) + tvl, }, } \ No newline at end of file From 6cb6741e797b6e585ca8c157e0312f0d7385827a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 May 2023 18:39:07 +0200 Subject: [PATCH 0242/1354] animeswap: add sui --- projects/animeswap/index.js | 11 +++++- projects/cetus/index.js | 23 ++++-------- projects/helper/chain/sui.js | 65 +++++++++++++++++++++++++++------ projects/helper/coreAssets.json | 9 +++++ projects/helper/tokenMapping.js | 2 +- 5 files changed, 82 insertions(+), 28 deletions(-) diff --git a/projects/animeswap/index.js b/projects/animeswap/index.js index fe49f857ae..c489a3df57 100644 --- a/projects/animeswap/index.js +++ b/projects/animeswap/index.js @@ -1,6 +1,15 @@ const { dexExport } = require('../helper/chain/aptos') +const { dexExport: dexExportSUI } = require('../helper/chain/sui') +const { mergeExports } = require('../helper/utils') -module.exports = dexExport({ +const aptosExports = dexExport({ account: '0x796900ebe1a1a54ff9e932f19c548f5c1af5c6e7d34965857ac2f7b1d1ab2cbf', poolStr: 'AnimeSwapPoolV1::LiquidityPool', }) + +const suiExprots = dexExportSUI({ + account: '0xdd7e3a071c6a090a157eccc3c9bbc4d2b3fb5ac9a4687b1c300bf74be6a58945', + poolStr: 'animeswap::LiquidityPool', +}) + +module.exports = mergeExports([suiExprots, aptosExports]) diff --git a/projects/cetus/index.js b/projects/cetus/index.js index 8303849a43..63232ac61b 100644 --- a/projects/cetus/index.js +++ b/projects/cetus/index.js @@ -18,9 +18,9 @@ async function tvl() { async function addPool(poolAddr) { const res = await getResources(poolAddr) const val = res.find(i => i.type.includes('::pool::Pool')) - const [token0, token1 ] = val.type.split('::pool::Pool<')[1].replace('>', '').split(', ') + const [token0, token1] = val.type.split('::pool::Pool<')[1].replace('>', '').split(', ') data.push({ - token0, + token0, token1, token0Bal: val.data.coin_a.value, token1Bal: val.data.coin_b.value, @@ -28,23 +28,16 @@ async function tvl() { } } -async function getListItems(list, start, items = []) { - const { fields: { value: { fields } }} = await sui.getDynamicFieldObject(list, start) - items.push(fields.value) - start = fields.next - if (start) return getListItems(list, start, items) - return items -} - async function suiTVL() { const { api } = arguments[3] const poolObjectID = '0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0' - const { fields: { list: { fields: listObject } }} = await sui.getObject(poolObjectID) - const items = await getListItems(listObject.id.id, listObject.head) + const { fields: { list: { fields: listObject } } } = await sui.getObject(poolObjectID) + const items = (await sui.getDynamicFieldObjects({ parent: listObject.id.id })).map(i => i.fields.value.fields.value) const poolInfo = await sui.getObjects(items.map(i => i.fields.pool_id)) - items.forEach((v, i) => { - api.add('0x'+v.fields.coin_type_a.fields.name, poolInfo[i].fields.coin_a) - api.add('0x'+v.fields.coin_type_b.fields.name, poolInfo[i].fields.coin_b) + poolInfo.forEach(({ type: typeStr, fields }) => { + const [coinA, coinB] = typeStr.replace('>', '').split('<')[1].split(', ') + api.add(coinA, fields.coin_a) + api.add(coinB, fields.coin_b) }) } diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index 372f9d5c12..09ea040244 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -3,10 +3,7 @@ const sdk = require('@defillama/sdk') const http = require('../http') const env = require('../env') -const { transformBalances } = require('../portedTokens') -const { log, getUniqueAddresses } = require('../utils') - -const coreTokens = [] +const { transformDexBalances } = require('../portedTokens') //https://docs.sui.io/sui-jsonrpc @@ -23,19 +20,31 @@ async function getObject(objectId) { async function getObjects(objectIds) { const { result - } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method: 'sui_multiGetObjects', params: [objectIds, { - "showType": true, - "showOwner": true, - "showContent": true, - }], }) - return objectIds.map(i => result.find(j => j.data.objectId === i)?.data?.content) + } = await http.post(endpoint, { + jsonrpc: "2.0", id: 1, method: 'sui_multiGetObjects', params: [objectIds, { + "showType": true, + "showOwner": true, + "showContent": true, + }], + }) + return objectIds.map(i => result.find(j => j.data.objectId === i)?.data?.content) } async function getDynamicFieldObject(parent, id) { return (await call('suix_getDynamicFieldObject', [parent, { "type": "0x2::object::ID", "value": id -}])).content + }])).content +} + +async function getDynamicFieldObjects({ parent, cursor = null, limit = 9999, items = [], idFilter = i => i }) { + const { + result: { data, hasNextPage, nextCursor } + } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method: 'suix_getDynamicFields', params: [parent, cursor, limit], }) + sdk.log('[sui] fetched items length', data.length, hasNextPage, nextCursor) + items.push(...(await getObjects(data.filter(idFilter).map(i => i.objectId)))) + if (!hasNextPage) return items + return { parent, cursor: nextCursor, items, limit } } async function call(method, params) { @@ -50,6 +59,38 @@ async function multiCall(calls) { return Promise.all(calls.map(i => call(...i))) } + +function dexExport({ + account, + poolStr, + token0Reserve = i => i.fields.coin_x_reserve, + token1Reserve = i => i.fields.coin_y_reserve, + getTokens = i => i.type.split('<')[1].replace('>', '').split(', '), +}) { + return { + timetravel: false, + misrepresentedTokens: true, + sui: { + tvl: async () => { + const data = [] + let pools = await getDynamicFieldObjects({ parent: account, idFilter: i => i.objectType.includes(poolStr) }) + sdk.log(`[sui] Number of pools: ${pools.length}`) + pools.forEach(i => { + const [token0, token1] = getTokens(i) + data.push({ + token0, + token1, + token0Bal: token0Reserve(i), + token1Bal: token1Reserve(i), + }) + }) + + return transformDexBalances({ chain: 'sui', data }) + } + } + } +} + module.exports = { endpoint, call, @@ -57,4 +98,6 @@ module.exports = { getObject, getObjects, getDynamicFieldObject, + getDynamicFieldObjects, + dexExport, }; diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index b8157d768a..3e4925e6be 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1437,5 +1437,14 @@ ], "enuls": [ "0x217dffF57E3b855803CE88a1374C90759Ea071bD" + ], + "sui": [ + "sui:0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN", + "sui:0x2::sui::SUI", + "sui:0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN", + "sui:0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN", + "sui:0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f::coin::COIN", + "sui:0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN", + "sui:0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN" ] } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f71239c23e..b39c9cd01a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -14,7 +14,7 @@ const nullAddress = '0x0000000000000000000000000000000000000000' // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', ] -const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks'] +const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui'] const tokens = { null: nullAddress, From df834ccd3500f6aa1d285aa4c39b4a24ed9d32e5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 May 2023 19:48:32 +0200 Subject: [PATCH 0243/1354] update sui core assets --- projects/helper/coreAssets.json | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 3e4925e6be..ef3c3a827d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1439,12 +1439,18 @@ "0x217dffF57E3b855803CE88a1374C90759Ea071bD" ], "sui": [ - "sui:0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN", - "sui:0x2::sui::SUI", - "sui:0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN", - "sui:0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN", - "sui:0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f::coin::COIN", - "sui:0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN", - "sui:0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN" + "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN", + "0xa198f3be41cda8c07b3bf3fee02263526e535d682499806979a111e88a5a8d0f::coin::COIN", + "0xdbe380b13a6d0f5cdedd58de8f04625263f113b3f9db32b3e1983f49e2841676::coin::COIN", + "0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f::coin::COIN", + "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN", + "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN", + "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN", + "0x1e8b532cca6569cab9f9b9ebc73f8c13885012ade714729aa3b450e0339ac766::coin::COIN", + "0x6081300950a4f1e2081580e919c210436a1bed49080502834950d31ee55a2396::coin::COIN", + "0x66f87084e49c38f76502d17f87d17f943f183bb94117561eb573e075fdc5ff75::coin::COIN", + "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN", + "0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN", + "0x2::sui::SUI" ] -} +} \ No newline at end of file From 9f023cd39ab976b4af948da2ee2e1b837040326e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 May 2023 20:27:29 +0200 Subject: [PATCH 0244/1354] sushi v3: minor fix --- projects/sushiswap-v3/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js index d53d1891f1..d53f57dd11 100644 --- a/projects/sushiswap-v3/index.js +++ b/projects/sushiswap-v3/index.js @@ -5,15 +5,15 @@ module.exports = uniV3Export({ arbitrum: { factory: '0x1af415a1EbA07a4986a52B6f2e7dE7003D82231e', fromBlock: 75998697, }, optimism: { factory: '0x9c6522117e2ed1fE5bdb72bb0eD5E3f2bdE7DBe0', fromBlock: 85432013, }, polygon: { factory: '0x917933899c6a5F8E37F31E19f92CdBFF7e8FF0e2', fromBlock: 41024971, }, - //arbitrum_nova: { factory: '0xaa26771d497814E81D305c511Efbb3ceD90BF5bd', fromBlock: 16955547, }, + arbitrum_nova: { factory: '0xaa26771d497814e81d305c511efbb3ced90bf5bd', fromBlock: 4242300, }, avax: { factory: '0x3e603C14aF37EBdaD31709C4f848Fc6aD5BEc715', fromBlock: 28186391 , }, bsc: { factory: '0x126555dd55a39328F69400d6aE4F782Bd4C34ABb', fromBlock: 26976538 , }, fantom: { factory: '0x7770978eED668a3ba661d51a773d3a992Fc9DDCB', fromBlock: 58860670 , }, - // fuse 0x1b9d177CcdeA3c79B6c8F40761fc8Dc9d0500EAa + fuse: { factory: '0x1b9d177CcdeA3c79B6c8F40761fc8Dc9d0500EAa', fromBlock: 22556035 , }, xdai: { factory: '0xf78031CBCA409F2FB6876BDFDBc1b2df24cF9bEf', fromBlock: 27232871, }, moonbeam: { factory: '0x2ecd58F51819E8F8BA08A650BEA04Fc0DEa1d523', fromBlock: 3264275, }, moonriver: { factory: '0x2F255d3f3C0A3726c6c99E74566c4b18E36E3ce6', fromBlock: 3945310, }, - // boba 0x0BE808376Ecb75a5CF9bB6D237d16cd37893d904 + // boba: { factory: '0x0BE808376Ecb75a5CF9bB6D237d16cd37893d904', fromBlock: 998556, }, polygon_zkevm: { factory: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', fromBlock: 80860, }, }) From 321ddfea4428f7b875668651d2ff38d40fdb052e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 May 2023 20:41:05 +0200 Subject: [PATCH 0245/1354] fix quickswap v2 dex --- projects/quickswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/quickswap/index.js b/projects/quickswap/index.js index e1f5f510f5..dc552207c5 100644 --- a/projects/quickswap/index.js +++ b/projects/quickswap/index.js @@ -5,7 +5,7 @@ module.exports = { timetravel: true, polygon:{ tvl: getChainTvl({ - polygon: 'https://polygon.furadao.org/subgraphs/name/quickswap' + polygon: 'https://api.thegraph.com/subgraphs/name/sameepsi/quickswap06' })('polygon') }, hallmarks:[ From bf9b89b3d731c2529f396ea7b1aa0cf979824733 Mon Sep 17 00:00:00 2001 From: Thomas F Date: Fri, 5 May 2023 11:13:03 +0200 Subject: [PATCH 0246/1354] add LuxsFi adapter --- projects/luxs.fi/index.js | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 projects/luxs.fi/index.js diff --git a/projects/luxs.fi/index.js b/projects/luxs.fi/index.js new file mode 100755 index 0000000000..1022b931e7 --- /dev/null +++ b/projects/luxs.fi/index.js @@ -0,0 +1,42 @@ +const sdk = require("@defillama/sdk"); + +const vaults = { + 'polygon': ["0xE770038935b8D4B0d98118A682D05ce84E489724", "0x5125b6AB66dBAE17ded9841195b572f8c97592Ee", "0x705Aa351FB6c43547FC7E033732d07a9bfa20B1d"], + 'arbitrum': ["0x997C0a71A6C6Cf8aE329F5730Cc01bfd1a176C9e", "0xC9bec60E78E011aA14555c4A13469bE8a0344633", "0xfE48c97F9AB4E65c567f53156f0988F36d97F9a5", "0x7455DF92B0Cd996906Da495724B4B27e8A4FFb21"], + 'bsc': ["0xE324D24fA26BB73f9C104850D44af99ccB18a612", "0x09104993F206cb53e7ac5dBC70DD974f68F1c407", "0xEDd43c446eA21a80eE388010d6db8EfbE366d604", "0x819f6fBD91D99420794Adefdb1604Bfc3182AC39", "0x0F6484f73eEc82024F8F6866f1fdb17B6D9Ce808"], + 'optimism': ["0x0348Bb2730daC30966Ff15849ca6Ae24a93A59C1", "0x5125b6AB66dBAE17ded9841195b572f8c97592Ee", "0x705Aa351FB6c43547FC7E033732d07a9bfa20B1d", "0xE770038935b8D4B0d98118A682D05ce84E489724", "0xEcc4e5e4BbA01E566dBEdBC4B4B817Abe7811Fa5", "0x4744c5EDc84dF3fEad0F5Dcb03de00370d738711", "0x7455DF92B0Cd996906Da495724B4B27e8A4FFb21", "0x15DDd2Fb8c6e9CcAd1D3753120E59fc3BFf9e324", "0xc5697053614EAb2C35e4f20E410C566D862b2213", "0xF291f7207D224Df1CF9702Ca15a33C77883cfCF8", "0x62301063130F11B8DB8141a667Bc33fFEAfC1408", "0x6573d525A70f564c2d65d80Cd9B216926504B77A"] +} + +async function tvl(_, _b, _cb, { api, }) { + const balances = {} + const tokens = await api.multiCall({ + abi: 'address:token', + calls: vaults[api.chain], + }) + + const totalBalance = await api.multiCall({ + abi: 'function totalBalance() public view returns (uint256)', + calls: vaults[api.chain], + }) + + tokens.forEach((t, i) => sdk.util.sumSingleBalance(balances, t, totalBalance[i], api.chain)) + return balances +} + +module.exports = { + misrepresentedTokens: true, + arbitrum: { + tvl: tvl, + }, + optimism: { + tvl: tvl, + }, + polygon: { + tvl: tvl, + }, + bsc: { + tvl: tvl, + }, + methodology: + "TVL is counted from the LuxsFi vaults contracts" +}; \ No newline at end of file From 404a1a516ae966324fa4efb17407d09b82f1cd1f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 6 May 2023 22:05:07 +0200 Subject: [PATCH 0247/1354] bugfix --- projects/helper/chain/sui.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index 09ea040244..0e36b7fda8 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -44,7 +44,7 @@ async function getDynamicFieldObjects({ parent, cursor = null, limit = 9999, ite sdk.log('[sui] fetched items length', data.length, hasNextPage, nextCursor) items.push(...(await getObjects(data.filter(idFilter).map(i => i.objectId)))) if (!hasNextPage) return items - return { parent, cursor: nextCursor, items, limit } + return getDynamicFieldObjects({ parent, cursor: nextCursor, items, limit, idFilter }) } async function call(method, params) { From c1c88ce487704b601c4f130245843d226cdf1ab0 Mon Sep 17 00:00:00 2001 From: Leifu Chen Date: Sun, 7 May 2023 00:26:52 +0300 Subject: [PATCH 0248/1354] Updated the contracts --- projects/thales/abi.json | 6 ++-- projects/thales/index.js | 74 ++++++++++++++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 16 deletions(-) diff --git a/projects/thales/abi.json b/projects/thales/abi.json index 374310a1b7..fff29c16a5 100644 --- a/projects/thales/abi.json +++ b/projects/thales/abi.json @@ -1,5 +1,7 @@ { "activeMarkets": "function activeMarkets(uint256 index, uint256 pageSize) view returns (address[])", "totalDeposited": "uint256:totalDeposited", - "getUnderlyingBalance": "function getUnderlyingBalances() view returns (uint256 amount0Current, uint256 amount1Current)" -} \ No newline at end of file + "tradingAllocation": "uint256:tradingAllocation", + "getUnderlyingBalance": "function getUnderlyingBalances() view returns (uint256 amount0Current, uint256 amount1Current)", + "activeParlayMarkets": "function activeParlayMarkets(uint index, uint pageSize) external view returns (address[] memory)" +} diff --git a/projects/thales/index.js b/projects/thales/index.js index 47dec6df39..122f058a56 100644 --- a/projects/thales/index.js +++ b/projects/thales/index.js @@ -13,21 +13,31 @@ const ETH_USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" const opMarketsManager = "0xBE086E0A2c588Ad64C8530048cE4356190D6a6F3" const OP_SUSD = "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9" const opThalesStaking = "0xc392133eea695603b51a5d5de73655d571c2ce51" -const opThalesAmm = "0x5ae7454827d83526261f3871c1029792644ef1b1" +const opThalesAmm = "0x278b5a44397c9d8e52743fedec263c4760dc1a1a" +const opRangedAmm = "0x2d356b114cbCA8DEFf2d8783EAc2a5A5324fE1dF" +const opParlayAmm = "0x82B3634C0518507D5d817bE6dAb6233ebE4D68D9" +const opSportsLp = "0x842e89b7a7eF8Ce099540b3613264C933cE0eBa5" +const opSportsVault = ["0x43d19841d818b2ccc63a8b44ce8c7def8616d98e", "0x5e2b49c68f1fd68af1354c377eacec2f05632d3f", "0x8285047f33c26c1bf5b387f2b07f21a2af29ace2", "0xbaac5464bf6e767c9af0e8d4677c01be2065fd5f", "0xc922f4CDe42dD658A7D3EA852caF7Eae47F6cEcd"] +const opAmmVault = ["0xb484027CB0c538538Bad2bE492714154f9196F93", "0x6c7Fd4321183b542E81Bcc7dE4DfB88F9DBca29F", "0x43318DE9E8f65b591598F17aDD87ae7247649C83"] const opThalesLpToken = "0xac6705BC7f6a35eb194bdB89066049D6f1B0B1b5"; const opThalesToken = "0x217d47011b23bb961eb6d93ca9945b7501a5bb11" - const opSportsMarketsManager = "0xFBffEbfA2bF2cF84fdCf77917b358fC59Ff5771e" -const opSportsAmm = "0x170a5714112daEfF20E798B6e92e25B86Ea603C1" const polygonMarketsManager = "0x85f1B57A1D3Ac7605de3Df8AdA056b3dB9676eCE" const polygon_USDC = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" -const polygonThalesAmm = "0x9b6d76B1C6140FbB0ABc9C4a348BFf4e4e8a1213" +const polygonThalesAmm = "0xd52B865584c25FEBfcB676B9A87F32683356A063" +const polygonRangedAMM = "0xe8e022405505a9F2b0B7452C844F1e64423849fC" const arbitrumMarketsManager = "0x95d93c88c1b5190fA7FA4350844e0663e5a11fF0" const arbitrum_USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" +const arbThalesStaking = "0x160Ca569999601bca06109D42d561D85D6Bb4b57" const arbitrumThalesAMM = "0x2b89275efB9509c33d9AD92A4586bdf8c4d21505" - +const arbSportsMarketsManager = "0x72ca0765d4bE0529377d656c9645600606214610" +const arbParlayAmm = "0x2Bb7D689780e7a34dD365359bD7333ab24903268" +const arbSportsLp = "0x8e9018b48456202aA9bb3E485192B8475822B874" +const arbSportsVault = ["0xfF7AEA98740fA1e2a9eB81680583e62aaFf1e3Ad", "0xE26374c7aFe71a2a6AB4A61080772547C43B87E6", "0xA852a651377fbE23f3d3acF5919c3D092aD4b77d", "0x31c2947c86412A5e33794105aA034DD9312eb711"] +const arbAmmVault = ["0x640c34D9595AD5351Da8c5C833Bbd1AfD20519ea", "0x0A29CddbdAAf56342507574820864dAc967D2683", "0x008A4e30A8b41781F5cb017b197aA9Aa4Cd53b46"] +const arbThalesToken = "0xE85B662Fe97e8562f4099d8A1d5A92D4B453bF30" const L2toL1Synths = { //THALES @@ -70,7 +80,7 @@ async function op_tvl(_time, block, cb){ return balances } -async function sports_tvl(_time, block, cb){ +async function op_sports_tvl(_time, block, cb){ block = cb.optimism const markets = await sdk.api.abi.call({ target: opSportsMarketsManager, @@ -84,6 +94,17 @@ async function sports_tvl(_time, block, cb){ return balances } +async function op_sportsLp_tvl(_time, block, cb){ + block = cb.optimism + const totalDeposited = await sdk.api.abi.call({ + target: opSportsLp, + abi: abi.totalDeposited, + block, + chain: "optimism" + }) + return {[ETH_SUSD]: totalDeposited.output} +} + async function polygon_tvl(_time, block, cb){ block = cb.polygon const markets = await sdk.api.abi.call({ @@ -112,6 +133,31 @@ async function arbitrum_tvl(_time, block, cb){ return balances } +async function arb_sports_tvl(_time, block, cb){ + block = cb.arbitrum + const markets = await sdk.api.abi.call({ + target: arbSportsMarketsManager, + abi: abi.activeMarkets, + block, + params:[0, 1000], + chain: "arbitrum" + }) + const balances = {} + await sumTokensAndLPsSharedOwners(balances, [[arbitrum_USDC, false]], markets.output, block, "arbitrum") + return balances +} + +async function arb_sportsLp_tvl(_time, block, cb){ + block = cb.optimism + const totalDeposited = await sdk.api.abi.call({ + target: arbSportsLp, + abi: abi.totalDeposited, + block, + chain: "arbitrum" + }) + return {[ETH_USDC]: totalDeposited.output} +} + function guniPool2(_time, chain="optimism") { return async (_timestamp, _ethBlock, chainBlocks) => { const block = chainBlocks[chain] @@ -135,21 +181,21 @@ module.exports={ pool2: dodoPool2("0x136829c258e31b3ab1975fe7d03d3870c3311651", "0x031816fd297228e4fd537c1789d51509247d0b43") }, optimism:{ - tvl: sdk.util.sumChainTvls([op_tvl, sports_tvl, // sUSD in all active markets - staking(opThalesAmm, OP_SUSD, "optimism", ETH_SUSD), - staking(opSportsAmm, OP_SUSD, "optimism", ETH_SUSD), + tvl: sdk.util.sumChainTvls([op_tvl, op_sports_tvl, op_sportsLp_tvl, // sUSD in all active markets + staking([opThalesAmm, opParlayAmm, opRangedAmm, ...opSportsVault, ...opAmmVault], OP_SUSD, "optimism", ETH_SUSD), ]), staking: staking(opThalesStaking, opThalesToken, "optimism", ETH_THALES), pool2: guniPool2() }, polygon:{ tvl: sdk.util.sumChainTvls([polygon_tvl, // USDC in all active markets - staking(polygonThalesAmm, polygon_USDC, "polygon", ETH_USDC), + staking([polygonThalesAmm, polygonRangedAMM], polygon_USDC, "polygon", ETH_USDC), ]) }, arbitrum:{ - tvl: sdk.util.sumChainTvls([arbitrum_tvl, // USDC in all active markets - staking(arbitrumThalesAMM, arbitrum_USDC, "arbitrum", ETH_USDC), - ]) + tvl: sdk.util.sumChainTvls([arbitrum_tvl, arb_sports_tvl, arb_sportsLp_tvl, // USDC in all active markets + staking([arbitrumThalesAMM, arbParlayAmm, ...arbSportsVault, ...arbAmmVault], arbitrum_USDC, "arbitrum", ETH_USDC), + ]), + staking: staking(arbThalesStaking, arbThalesToken, "arbitrum", ETH_THALES), } -} \ No newline at end of file +} From 092314b80133d50d4fa66affcc3b7dfe8a93fa24 Mon Sep 17 00:00:00 2001 From: define Date: Sun, 7 May 2023 10:34:22 +0100 Subject: [PATCH 0249/1354] treasury flokifi --- projects/treasury/flokifi-locker.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/treasury/flokifi-locker.js diff --git a/projects/treasury/flokifi-locker.js b/projects/treasury/flokifi-locker.js new file mode 100644 index 0000000000..049665a78a --- /dev/null +++ b/projects/treasury/flokifi-locker.js @@ -0,0 +1,28 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasuryETH = "0x2b9d5c7f2EAD1A221d771Fb6bb5E35Df04D60AB0"; +const flokiETH = "0xcf0C122c6b73ff809C693DB761e7BaeBe62b6a2E" + +const treasuryBSC = "0x17e98a24f992BB7bcd62d6722d714A3C74814B94" +const flokiBSC = "0xfb5B838b6cfEEdC2873aB27866079AC55363D37E" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0xca7c2771D248dCBe09EABE0CE57A62e18dA178c0", + "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "0x1BD708E01E96d426652b0D50b8c896eaeefee36d" + ], + owners: [treasuryETH], + ownTokens: [flokiETH], + }, + bsc: { + tokens: [ + nullAddress, + ], + owners: [treasuryBSC], + ownTokens: [flokiBSC], + }, +}) \ No newline at end of file From a5cc255bf466381581b2b8c75cb7dba63bfe9fa3 Mon Sep 17 00:00:00 2001 From: runcat Date: Sun, 7 May 2023 17:20:46 +0800 Subject: [PATCH 0250/1354] feat: add trubos --- projects/turbos/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/turbos/index.js diff --git a/projects/turbos/index.js b/projects/turbos/index.js new file mode 100644 index 0000000000..7c44170b56 --- /dev/null +++ b/projects/turbos/index.js @@ -0,0 +1,24 @@ +const sui = require("../helper/chain/sui"); + +const poolObjectID = + "0xc294552b2765353bcafa7c359cd28fd6bc237662e5db8f09877558d81669170c"; + +async function tvl(_timestamp, _block, _chainBlocks, { api }) { + const parent = await sui.getObject(poolObjectID); + const poolFields = await sui.getDynamicFieldObjects({ + parent: parent.fields.pools.fields.id.id, + }); + const poolIds = poolFields.map((item) => item.fields.value.fields.pool_id); + const poolList = await sui.getObjects(poolIds); + poolList.forEach(({ type, fields }) => { + const [coinA, coinB] = type.replace(">", "").split("<")[1].split(", "); + api.add(coinA, fields.coin_a); + api.add(coinB, fields.coin_b); + }); +} + +module.exports = { + sui: { + tvl, + }, +}; From 73e796ec4976bf3d69ca2e2066c00eb5be933e01 Mon Sep 17 00:00:00 2001 From: runcat Date: Sun, 7 May 2023 18:31:44 +0800 Subject: [PATCH 0251/1354] feat(turbos): fetch pool factory object id from remote server --- projects/turbos/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/projects/turbos/index.js b/projects/turbos/index.js index 7c44170b56..b4a2aefeb6 100644 --- a/projects/turbos/index.js +++ b/projects/turbos/index.js @@ -1,10 +1,16 @@ const sui = require("../helper/chain/sui"); +const axios = require("axios"); -const poolObjectID = - "0xc294552b2765353bcafa7c359cd28fd6bc237662e5db8f09877558d81669170c"; +async function getPoolFactoryConfig() { + const result = await axios.get( + "https://s3.amazonaws.com/app.turbos.finance/sdk/contract.json" + ); + return result.data.mainnet.contract.PoolConfig; +} async function tvl(_timestamp, _block, _chainBlocks, { api }) { - const parent = await sui.getObject(poolObjectID); + const poolFactoryConfig = await getPoolFactoryConfig(); + const parent = await sui.getObject(poolFactoryConfig); const poolFields = await sui.getDynamicFieldObjects({ parent: parent.fields.pools.fields.id.id, }); From f53fe1eac9e1b16a75fa1c0b3a3aa2bf85cc3adc Mon Sep 17 00:00:00 2001 From: Kinshuk Kashyap Date: Sun, 7 May 2023 19:03:45 +0530 Subject: [PATCH 0252/1354] TVL calculation for KriyaDEX (#6175) * TVL calculation for KriyaDEX * cleanup * use non-arrow functions * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chain/sui.js | 5 +++++ projects/kriya-dex/index.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 projects/kriya-dex/index.js diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index 0e36b7fda8..842cc675d4 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -17,6 +17,10 @@ async function getObject(objectId) { }])).content } +async function queryEvents(queryObject) { + return call('suix_queryEvents', queryObject) +} + async function getObjects(objectIds) { const { result @@ -97,6 +101,7 @@ module.exports = { multiCall, getObject, getObjects, + queryEvents, getDynamicFieldObject, getDynamicFieldObjects, dexExport, diff --git a/projects/kriya-dex/index.js b/projects/kriya-dex/index.js new file mode 100644 index 0000000000..6d8d90341a --- /dev/null +++ b/projects/kriya-dex/index.js @@ -0,0 +1,28 @@ +const sui = require('../helper/chain/sui') + +const EVENT_FILTER = "0xa0eba10b173538c8fecca1dff298e488402cc9ff374f8a12ca7758eebe830b66::spot_dex::PoolCreatedEvent"; + +async function getPoolIDs() { + const queryObject = { MoveEventType: EVENT_FILTER }; + const queryRes = await sui.queryEvents(queryObject); + const poolIds = queryRes.map((event) => event.parsedJson.pool_id); + return poolIds; +} + +async function kriyaTVL(_, _1, _2, { api }) { + const poolIds = await getPoolIDs(); + const pools = await sui.getObjects(poolIds) + pools.forEach(i => { + const [token0, token1] = i.type.split('<')[1].replace('>', '').split(', ') + api.add(token0, i.fields.token_x) + api.add(token1, i.fields.token_y) + }) +} + +module.exports = { + timetravel: false, + methodology: "Collects TVL for all pools created on KriyaDEX", + sui: { + tvl: kriyaTVL, + } +} \ No newline at end of file From b33f6dd523f16bfbfde5a557f020072b835bded9 Mon Sep 17 00:00:00 2001 From: "Joseph@morgan" <122076099+JosephMorgan1206@users.noreply.github.com> Date: Mon, 8 May 2023 00:11:16 +1000 Subject: [PATCH 0253/1354] Update index.js --- projects/astarexchangev3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/astarexchangev3/index.js b/projects/astarexchangev3/index.js index cff67e6750..3f71bb8a07 100644 --- a/projects/astarexchangev3/index.js +++ b/projects/astarexchangev3/index.js @@ -1,5 +1,5 @@ const { uniV3Export } = require('../helper/uniswapV3') module.exports = uniV3Export({ - astar: { factory: '0x0bA242809B5b8AC2C362372807bc616fc620DB97', fromBlock: 3482657, }, + astar: { factory: '0x0bA242809B5b8AC2C362372807bc616fc620DB97', fromBlock: 3333333, }, }) From de1943f5209ac7df45bc08a7729435b421cfea93 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 7 May 2023 19:16:08 +0200 Subject: [PATCH 0254/1354] code refactor --- projects/thales/index.js | 201 +++++++++------------------------------ 1 file changed, 45 insertions(+), 156 deletions(-) diff --git a/projects/thales/index.js b/projects/thales/index.js index 122f058a56..f065fa5309 100644 --- a/projects/thales/index.js +++ b/projects/thales/index.js @@ -1,14 +1,10 @@ -const sdk = require('@defillama/sdk') -const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') +const { sumTokens2 } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking') const abi = require('./abi.json') const { dodoPool2 } = require('../helper/pool2') const ethMarketsManager = "0x5ed98Ebb66A929758C7Fe5Ac60c979aDF0F4040a" const ETH_SUSD = "0x57ab1ec28d129707052df4df418d58a2d46d5f51" -const ETH_THALES = "0x8947da500eb47f82df21143d0c01a29862a8c3c5" -const ETH_WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" -const ETH_USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" const opMarketsManager = "0xBE086E0A2c588Ad64C8530048cE4356190D6a6F3" const OP_SUSD = "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9" @@ -39,163 +35,56 @@ const arbSportsVault = ["0xfF7AEA98740fA1e2a9eB81680583e62aaFf1e3Ad", "0xE26374c const arbAmmVault = ["0x640c34D9595AD5351Da8c5C833Bbd1AfD20519ea", "0x0A29CddbdAAf56342507574820864dAc967D2683", "0x008A4e30A8b41781F5cb017b197aA9Aa4Cd53b46"] const arbThalesToken = "0xE85B662Fe97e8562f4099d8A1d5A92D4B453bF30" -const L2toL1Synths = { - //THALES - "0x217d47011b23bb961eb6d93ca9945b7501a5bb11": ETH_THALES, - // sUSD - "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9": ETH_SUSD, - // WETH - "0x4200000000000000000000000000000000000006": ETH_WETH, - // USDC - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": ETH_USDC, +async function guniPool2(_timestamp, _ethBlock, chainBlocks, { api }) { + const [lp, token0, token1] = await api.batchCall([ + { target: opThalesLpToken, abi: abi.getUnderlyingBalance, }, + { target: opThalesLpToken, abi: 'address:token0', }, + { target: opThalesLpToken, abi: 'address:token1', }, + ]) + api.add(token0, lp[0]) + api.add(token1, lp[1]) } -const transform = (addr)=>{ - return L2toL1Synths[addr] || addr; +async function getMarkets(api, manager) { + return api.call({ target: manager, abi: abi.activeMarkets, params: [0, 1000] }) } -async function eth_tvl(_time, block){ - const markets = await sdk.api.abi.call({ - target: ethMarketsManager, - abi: abi.activeMarkets, - block, - params:[0, 1000] - }) - const balances = {} - await sumTokensAndLPsSharedOwners(balances, [[ETH_SUSD, false]], markets.output, block) - return balances +async function addSportsLPTvl(api, contract, token) { + api.add(token, await api.call({ target: contract, abi: abi.totalDeposited, })) } -async function op_tvl(_time, block, cb){ - block = cb.optimism - const markets = await sdk.api.abi.call({ - target: opMarketsManager, - abi: abi.activeMarkets, - block, - params:[0, 1000], - chain: "optimism" - }) - const balances = {} - await sumTokensAndLPsSharedOwners(balances, [[OP_SUSD, false]], markets.output, block, "optimism", transform) - return balances -} - -async function op_sports_tvl(_time, block, cb){ - block = cb.optimism - const markets = await sdk.api.abi.call({ - target: opSportsMarketsManager, - abi: abi.activeMarkets, - block, - params:[0, 1000], - chain: "optimism" - }) - const balances = {} - await sumTokensAndLPsSharedOwners(balances, [[OP_SUSD, false]], markets.output, block, "optimism", transform) - return balances -} - -async function op_sportsLp_tvl(_time, block, cb){ - block = cb.optimism - const totalDeposited = await sdk.api.abi.call({ - target: opSportsLp, - abi: abi.totalDeposited, - block, - chain: "optimism" - }) - return {[ETH_SUSD]: totalDeposited.output} -} - -async function polygon_tvl(_time, block, cb){ - block = cb.polygon - const markets = await sdk.api.abi.call({ - target: polygonMarketsManager, - abi: abi.activeMarkets, - block, - params:[0, 1000], - chain: "polygon" - }) - const balances = {} - await sumTokensAndLPsSharedOwners(balances, [[polygon_USDC, false]], markets.output, block, "polygon") - return balances -} - -async function arbitrum_tvl(_time, block, cb){ - block = cb.arbitrum - const markets = await sdk.api.abi.call({ - target: arbitrumMarketsManager, - abi: abi.activeMarkets, - block, - params:[0, 1000], - chain: "arbitrum" - }) - const balances = {} - await sumTokensAndLPsSharedOwners(balances, [[arbitrum_USDC, false]], markets.output, block, "arbitrum") - return balances -} - -async function arb_sports_tvl(_time, block, cb){ - block = cb.arbitrum - const markets = await sdk.api.abi.call({ - target: arbSportsMarketsManager, - abi: abi.activeMarkets, - block, - params:[0, 1000], - chain: "arbitrum" - }) - const balances = {} - await sumTokensAndLPsSharedOwners(balances, [[arbitrum_USDC, false]], markets.output, block, "arbitrum") - return balances -} - -async function arb_sportsLp_tvl(_time, block, cb){ - block = cb.optimism - const totalDeposited = await sdk.api.abi.call({ - target: arbSportsLp, - abi: abi.totalDeposited, - block, - chain: "arbitrum" - }) - return {[ETH_USDC]: totalDeposited.output} -} - -function guniPool2(_time, chain="optimism") { - return async (_timestamp, _ethBlock, chainBlocks) => { - const block = chainBlocks[chain] - const lp = await sdk.api.abi.call({ - target: opThalesLpToken, - abi: abi.getUnderlyingBalance, - block, - chain: "optimism" - }) - const balances = {} - sdk.util.sumSingleBalance(balances, ETH_THALES, lp.output.amount0Current) - sdk.util.sumSingleBalance(balances, ETH_WETH, lp.output.amount1Current) - return balances - } -} - -module.exports={ - methodology: "sUSD/USDC locked on markets", - ethereum:{ - tvl: eth_tvl, - pool2: dodoPool2("0x136829c258e31b3ab1975fe7d03d3870c3311651", "0x031816fd297228e4fd537c1789d51509247d0b43") +module.exports = { + methodology: "sUSD/USDC locked on markets", + ethereum: { + tvl: async (_, _1, _2, { api }) => { + return sumTokens2({ api, owners: await getMarkets(api, ethMarketsManager), tokens: [ETH_SUSD] }) }, - optimism:{ - tvl: sdk.util.sumChainTvls([op_tvl, op_sports_tvl, op_sportsLp_tvl, // sUSD in all active markets - staking([opThalesAmm, opParlayAmm, opRangedAmm, ...opSportsVault, ...opAmmVault], OP_SUSD, "optimism", ETH_SUSD), - ]), - staking: staking(opThalesStaking, opThalesToken, "optimism", ETH_THALES), - pool2: guniPool2() + pool2: dodoPool2("0x136829c258e31b3ab1975fe7d03d3870c3311651", "0x031816fd297228e4fd537c1789d51509247d0b43"), + }, + polygon: { + tvl: async (_, _1, _2, { api }) => { + const markets = await getMarkets(api, polygonMarketsManager) + markets.push(polygonThalesAmm, polygonRangedAMM) + return sumTokens2({ api, owners: markets, tokens: [polygon_USDC] }) }, - polygon:{ - tvl: sdk.util.sumChainTvls([polygon_tvl, // USDC in all active markets - staking([polygonThalesAmm, polygonRangedAMM], polygon_USDC, "polygon", ETH_USDC), - ]) + }, + optimism: { + tvl: async (_, _1, _2, { api }) => { + await addSportsLPTvl(api, opSportsLp, OP_SUSD) + const markets = (await Promise.all([opMarketsManager, opSportsMarketsManager,].map(i => getMarkets(api, i)))).flat() + markets.push(opThalesAmm, opParlayAmm, opRangedAmm, ...opSportsVault, ...opAmmVault) + return sumTokens2({ api, tokens: [OP_SUSD], owners: markets }) }, - arbitrum:{ - tvl: sdk.util.sumChainTvls([arbitrum_tvl, arb_sports_tvl, arb_sportsLp_tvl, // USDC in all active markets - staking([arbitrumThalesAMM, arbParlayAmm, ...arbSportsVault, ...arbAmmVault], arbitrum_USDC, "arbitrum", ETH_USDC), - ]), - staking: staking(arbThalesStaking, arbThalesToken, "arbitrum", ETH_THALES), - } -} + staking: staking(opThalesStaking, opThalesToken), + pool2: guniPool2, + }, + arbitrum: { + tvl: async (_, _1, _2, { api }) => { + await addSportsLPTvl(api, arbSportsLp, arbitrum_USDC) + const markets = (await Promise.all([arbitrumMarketsManager, arbSportsMarketsManager,].map(i => getMarkets(api, i)))).flat() + markets.push(arbitrumThalesAMM, arbParlayAmm, ...arbSportsVault, ...arbAmmVault) + return sumTokens2({ api, tokens: [arbitrum_USDC], owners: markets }) + }, + staking: staking(arbThalesStaking, arbThalesToken), + }, +} \ No newline at end of file From ccc074692e2efc56242d3445b046121110d642b7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 7 May 2023 19:31:56 +0200 Subject: [PATCH 0255/1354] minor fix --- projects/turbos/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/turbos/index.js b/projects/turbos/index.js index b4a2aefeb6..a3bd84d715 100644 --- a/projects/turbos/index.js +++ b/projects/turbos/index.js @@ -9,7 +9,8 @@ async function getPoolFactoryConfig() { } async function tvl(_timestamp, _block, _chainBlocks, { api }) { - const poolFactoryConfig = await getPoolFactoryConfig(); + // const poolFactoryConfig = await getPoolFactoryConfig(); + const poolFactoryConfig = '0xc294552b2765353bcafa7c359cd28fd6bc237662e5db8f09877558d81669170c'; const parent = await sui.getObject(poolFactoryConfig); const poolFields = await sui.getDynamicFieldObjects({ parent: parent.fields.pools.fields.id.id, @@ -24,6 +25,7 @@ async function tvl(_timestamp, _block, _chainBlocks, { api }) { } module.exports = { + timetravel: false, sui: { tvl, }, From e29a6a76a05ed9af370817e7a82134176e1158f5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 7 May 2023 22:13:53 +0200 Subject: [PATCH 0256/1354] add bluemove dex --- projects/bluemove-dex/index.js | 18 ++++++++++++++++++ projects/helper/chain/sui.js | 33 ++++++++++++++++++++++----------- 2 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 projects/bluemove-dex/index.js diff --git a/projects/bluemove-dex/index.js b/projects/bluemove-dex/index.js new file mode 100644 index 0000000000..8603817d2d --- /dev/null +++ b/projects/bluemove-dex/index.js @@ -0,0 +1,18 @@ +const { dexExport } = require('../helper/chain/sui') +const { mergeExports } = require('../helper/utils') + +module.exports = mergeExports([ + dexExport({ + account: '0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92', + poolStr: '::swap::Pool', + token0Reserve: i => i.fields.reserve_x, + token1Reserve: i => i.fields.reserve_y, + }), + dexExport({ + account: '0x5a7eca40df453efe6bb1feae99e5b8fc072d1252cbd1979eb187d625dc9b47c9', + poolStr: 'stable_swap::Stable_Pool', + token0Reserve: i => i.fields.token_x, + token1Reserve: i => i.fields.token_y, + isAMM: false, + }) +]) diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index 842cc675d4..048bc738ab 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -41,14 +41,17 @@ async function getDynamicFieldObject(parent, id) { }])).content } -async function getDynamicFieldObjects({ parent, cursor = null, limit = 9999, items = [], idFilter = i => i }) { +async function getDynamicFieldObjects({ parent, cursor = null, limit = 49, items = [], idFilter = i => i, addedIds = new Set() }) { const { result: { data, hasNextPage, nextCursor } } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method: 'suix_getDynamicFields', params: [parent, cursor, limit], }) sdk.log('[sui] fetched items length', data.length, hasNextPage, nextCursor) - items.push(...(await getObjects(data.filter(idFilter).map(i => i.objectId)))) + const fetchIds = data.filter(idFilter).map(i => i.objectId).filter(i => !addedIds.has(i)) + fetchIds.forEach(i => addedIds.add(i)) + const objects = await getObjects(fetchIds) + items.push(...objects) if (!hasNextPage) return items - return getDynamicFieldObjects({ parent, cursor: nextCursor, items, limit, idFilter }) + return getDynamicFieldObjects({ parent, cursor: nextCursor, items, limit, idFilter, addedIds }) } async function call(method, params) { @@ -70,25 +73,33 @@ function dexExport({ token0Reserve = i => i.fields.coin_x_reserve, token1Reserve = i => i.fields.coin_y_reserve, getTokens = i => i.type.split('<')[1].replace('>', '').split(', '), + isAMM = true, }) { return { timetravel: false, misrepresentedTokens: true, sui: { - tvl: async () => { + tvl: async (_, _1, _2, { api }) => { const data = [] - let pools = await getDynamicFieldObjects({ parent: account, idFilter: i => i.objectType.includes(poolStr) }) + let pools = await getDynamicFieldObjects({ parent: account, idFilter: i => poolStr ? i.objectType.includes(poolStr) : i }) sdk.log(`[sui] Number of pools: ${pools.length}`) pools.forEach(i => { const [token0, token1] = getTokens(i) - data.push({ - token0, - token1, - token0Bal: token0Reserve(i), - token1Bal: token1Reserve(i), - }) + if (isAMM) { + data.push({ + token0, + token1, + token0Bal: token0Reserve(i), + token1Bal: token1Reserve(i), + }) + } else { + api.add(token0, token0Reserve(i)) + api.add(token1, token1Reserve(i)) + } }) + if (!isAMM) return api.getBalances() + return transformDexBalances({ chain: 'sui', data }) } } From 30aa8f94d3b14b0df6c22ea0c5693658bfde20d2 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 7 May 2023 22:40:35 +0100 Subject: [PATCH 0257/1354] add binance wallets --- projects/binance/config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/binance/config.js b/projects/binance/config.js index 3947a3eefc..431aee2663 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -16,6 +16,11 @@ const assetList = [ ["BTC", "BTC", "3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ"], ["BTC", "BTC", "34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP"], ["BTC", "BTC", "bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h"], + ["BTC", "BTC", "38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE"], + ["BTC", "BTC", "3EbJfpmFgufYtzW9UFvf1GAfm2ted1Rwnr"], + ["BTC", "BTC", "38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn"], + ["BTC", "BTC", "3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA"], + ["BTC", "BTC", "36zSLdRv1jyewjaC12fqK5fptn7PqewunL"], ["ETH", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], ["ETH", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], ["ETH", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], From 1ad3d99f57714dae21495fb23910d3a45f6f2048 Mon Sep 17 00:00:00 2001 From: swaggypepe <111588796+swaggypepe@users.noreply.github.com> Date: Sun, 7 May 2023 22:43:52 -0700 Subject: [PATCH 0258/1354] insrt finance TVL calc update --- projects/insrt_finance/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/insrt_finance/index.js b/projects/insrt_finance/index.js index 0ce0a09f40..5540181bab 100644 --- a/projects/insrt_finance/index.js +++ b/projects/insrt_finance/index.js @@ -4,11 +4,12 @@ const fidenzavault = '0xfCEed70c8E9f38A0c3A0062D40d0Ab06493063a1' const rockvault = '0x185B6B13Be7cEfa99262AF1F78ae87213E4DDD3d' const baycvault2 = '0x417c53C3B63a03aeb614b7b625ae84Cfc7eecD1c' const squigglevault = '0x5D40A087cec071cd3b8A7AF4B45b3D56D6c3f952' -const insrtVaults = [ fidenzavault, rockvault, baycvault2, squigglevault ] +const penguvault = '0x8facab18b9f4cd1a9f90876290c9bfa238cd4e45' +const insrtVaults = [ fidenzavault, rockvault, baycvault2, squigglevault, penguvault ] async function tvl(_, _b, _cb, { api, }) { await vaultTvl(api, [punkvault, baycvault, ]) - return sumTokens2({ api, owners: insrtVaults , tokens: ['0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d'], resolveArtBlocks: true, }) + return sumTokens2({ api, owners: insrtVaults , tokens: ['0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0x524cab2ec69124574082676e6f654a18df49a048', '0x062e691c2054de82f28008a8ccc6d7a1c8ce060d' ], resolveArtBlocks: true, }) } // ERC721 Vaults From 0aa4a38f10e783224888cc12ef8c709a66ca8269 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 09:24:53 +0200 Subject: [PATCH 0259/1354] Croswap (#6178) * feat: croswap cronos & arbitrum * use v3 subgraph for croswap arbitrum * remove unused chain param in getTvl * trim arbitrum * refactor croswap --------- Co-authored-by: ReverendDread --- projects/croswap/index.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 projects/croswap/index.js diff --git a/projects/croswap/index.js b/projects/croswap/index.js new file mode 100644 index 0000000000..47d3dcee32 --- /dev/null +++ b/projects/croswap/index.js @@ -0,0 +1,39 @@ +const { staking } = require("../helper/staking"); +const { getLogs, getAddress } = require('../helper/cache/getLogs'); +const { transformDexBalances } = require("../helper/portedTokens"); + +module.exports = { + misrepresentedTokens: true, +} + +async function tvl(_, _b, _cb, { api, }) { + const { factory, fromBlock }= config[api.chain] + + const logs = await getLogs({ + api, + target: factory, + topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], + fromBlock, + }) + const pools = logs.map(i => getAddress(i.data.slice(0, 64 + 2))) + const token0s = await api.multiCall({ abi: 'address:token0', calls: pools}) + const token1s = await api.multiCall({ abi: 'address:token1', calls: pools}) + const reserves = await api.multiCall({ abi: 'function getReserves() view returns (uint112, uint112, uint32)', calls: pools}) + const data = reserves.map(([token0Bal, token1Bal], i) => ({ token0Bal, token1Bal, token1: token1s[i], token0: token0s[i]})) + return transformDexBalances({ ...api, data, }) +} + +const config = { + arbitrum: { factory: '0x8f6ecb066f2bfe31bf87e022c76f63bc4642d8bc', fromBlock: 82954506, stakingContracts: ['0x8e9DA87f58A8480dD6b8878Aa37144a5Fb2F122D'], cros: '0x780469101caBD2bFe4B596D98d4777C2a142e012'}, + cronos: { factory: '0x4ae2bd26e60741890edb9e5c7e984bb396ec26e3', fromBlock: 4807004, stakingContracts: ['0xedfe968033fd2b9a98371d052cd7f32a711e533a'], cros: '0x1Ba477CA252C0FF21c488d41759795E7E7812aB4'}, +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const {stakingContracts, cros,} = config[chain] + module.exports[chain] = { + tvl, staking: staking(stakingContracts, cros) + } +}) \ No newline at end of file From 6d35f7cbe52a3f7c745f4553edcd14fbee985315 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 09:39:57 +0200 Subject: [PATCH 0260/1354] add sagebet --- projects/sagebet/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/sagebet/index.js diff --git a/projects/sagebet/index.js b/projects/sagebet/index.js new file mode 100644 index 0000000000..c05f9d4744 --- /dev/null +++ b/projects/sagebet/index.js @@ -0,0 +1,11 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +async function tvl(_, _b, _cb, { api, }) { + const [markets] = await api.call({ target: '0xd350c2b3d8eb1de65cfa68928ea135eda88326b6', abi: "function getAllActiveMarkets() view returns (address[], string[], bool[])"}) + const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: markets}) + return sumTokens2({ api, tokensAndOwners2: [tokens, markets]}) +} + +module.exports = { + arbitrum: { tvl } +} \ No newline at end of file From a17456c89b165fe968305c91db02cb61c604f236 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 10:37:04 +0200 Subject: [PATCH 0261/1354] Ajira pay (#6185) * feat: Ajira Pay Finance TVL on Kava * feat: Added Ajira Pay Finance Staking TVL on KAVA network * update: Update tvl functions * update: Added additional chains * update: Update TVL to include protocol treasury balances * update: Update tvl calculations * update: Update TVL to include AJP balance in treasuries * update: Added ARB token as treasury balance token * update: Updated treasuries to multisig from gnosis safe * update: Updated KAVA Staking contract and added Kava treasury * update: remove Kava treasury metrics from tvl since AJP token deployed on KAVA does not charge swap fees on the KAVA chain * update: Update staking contract and Kava tvl * update: Added staking on bsc * Update: An update on methodology * update: record protocol treasury balances * update: Added AMM Liquidity pool data * minor fix --------- Co-authored-by: dickensodera --- projects/ajira-pay-finance/index.js | 35 +++++++++++++++ projects/treasury/ajira-pay-finance.js | 62 ++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 projects/ajira-pay-finance/index.js create mode 100644 projects/treasury/ajira-pay-finance.js diff --git a/projects/ajira-pay-finance/index.js b/projects/ajira-pay-finance/index.js new file mode 100644 index 0000000000..6d7674cb81 --- /dev/null +++ b/projects/ajira-pay-finance/index.js @@ -0,0 +1,35 @@ +const { staking } = require("../helper/staking"); + +const AJP_CONTRACT_ADDRESS = "0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997" +const KAVA_STAKING_CONTRACT = "0xD1cAf204721A02016993796663EDb00E6Ad9dac4" +const BSC_STAKING_CONTRACT = '0xEbD5a0bAED48747ea10feEB61a09a93550Fddcef' + +const ammLpData = { + arbitrum: { + poolAddress: '0x0C36cB133CFF5D36313eFF3FF1761F9d391DF8Fc', + }, + bsc: { + poolAddress: '0x808A234665c7684A5e0Ed5e6BB551dBA1cc9d3e4', + }, + polygon: { + poolAddress: '0x2aDA82d11f6bC2bd357E7F3A6674983C372a50A3', + } +} + +module.exports = { + methodology: "Ajira Pay Finance TVL Calculations are based on AJP Staking pool and Liquidity pool balances respectively on the AMMs", + kava: { + staking: staking(KAVA_STAKING_CONTRACT, AJP_CONTRACT_ADDRESS), + tvl: () => ({}) + }, + bsc: { + staking: staking(BSC_STAKING_CONTRACT, AJP_CONTRACT_ADDRESS), + tvl: () => ({}) + }, + polygon: { + tvl: () => ({}), + }, + arbitrum: { + tvl: () => ({}), + } +}; diff --git a/projects/treasury/ajira-pay-finance.js b/projects/treasury/ajira-pay-finance.js new file mode 100644 index 0000000000..291deebf1b --- /dev/null +++ b/projects/treasury/ajira-pay-finance.js @@ -0,0 +1,62 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); +const AJP = "0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997" + +const arb_tokens = [ + '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', + '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', + '0x912CE59144191C1204E64559FE8253a0e49E6548', + nullAddress +] + +const bsc_tokens = [ + '0x55d398326f99059fF775485246999027B3197955', '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + '0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD', '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', + nullAddress +] + +const polygon_tokens = [ + '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', + '0x0000000000000000000000000000000000001010', '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', + '0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39', '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', + nullAddress +] + +const kava_tokens = [ + '0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', '0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', + '0xB44a9B6905aF7c801311e8F4E76932ee959c663C', '0xEB466342C4d449BC9f53A865D5Cb90586f405215', + '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', + nullAddress +] + +const owners = { + bsc: '0x12A65dFDD9E94Bd7f7547d1C4365c5c067f47ed0', + arbitrum: '0x396B58574c0760E84E16468457c460bdCC6f8b57', + polygon: '0xd7B2DEcAAcD75ADb92C1ee0C77e2303c815012d0', + kava: '0xdBD5c57F3a0A6eFC7c9E91639D72Cc139c581AB4' +} + +module.exports = treasuryExports({ + kava: { + tokens: kava_tokens, + owners: [owners.kava], + ownTokens: [AJP] + }, + bsc: { + tokens: bsc_tokens, + owners: [owners.bsc], + ownTokens: [AJP], + }, + polygon: { + tokens: polygon_tokens, + owners: [owners.polygon], + ownTokens: [AJP] + }, + arbitrum: { + tokens: arb_tokens, + owners: [owners.arbitrum], + ownTokens: [AJP] + } + }) \ No newline at end of file From d3cb9c6f21d3b1648d28fd659cd00531eca4ce23 Mon Sep 17 00:00:00 2001 From: Opass Chang Date: Mon, 8 May 2023 17:50:58 +0800 Subject: [PATCH 0262/1354] beside USDC, add WETH, USDT, OP, FRAX collateral in TVL calculation --- projects/perp/index.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/projects/perp/index.js b/projects/perp/index.js index 2ea517f9bd..b7e5476c24 100644 --- a/projects/perp/index.js +++ b/projects/perp/index.js @@ -35,7 +35,19 @@ module.exports = { staking: staking(stakingContract, perpToken) }, optimism:{ - tvl: staking("0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", "0x7f5c764cbc14f9669b88837ca1490cca17c31607", "optimism") + tvl: staking( + [ + "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", + "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", + "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", + "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", + "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60"], + [ + "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", + "0x4200000000000000000000000000000000000042", + "0x4200000000000000000000000000000000000006", + "0x2E3D870790dC77A83DD1d18184Acc7439A53f475"], + "optimism") }, - } \ No newline at end of file From 0498df42f82cb52278e8dc1b48ffa945084a3ecc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 14:34:51 +0200 Subject: [PATCH 0263/1354] add groveswap.io --- projects/groveswap/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/groveswap/index.js diff --git a/projects/groveswap/index.js b/projects/groveswap/index.js new file mode 100644 index 0000000000..928128ba7b --- /dev/null +++ b/projects/groveswap/index.js @@ -0,0 +1,13 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const { stakingUnknownPricedLP } = require('../helper/staking') + +module.exports = { + misrepresentedTokens: true, + bsc: { + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x0ed713989f421ff6f702b2e4e1c93b1bb9002119', }), + staking: stakingUnknownPricedLP('0x9db65123aa185811e50f8b626a7d4799c39ea4d5', '0xf33893de6eb6ae9a67442e066ae9abd228f5290c', 'bsc', '0xe27f915a8a9ca6c31b193311ae76b8738b926d17'), + }, + ethereum: { + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x6c565c5bbdc7f023cae8a2495105a531caac6e54', }), + }, +} \ No newline at end of file From 27bd352fa72fc8b3b1b62b2b3ebf1a46b71bc426 Mon Sep 17 00:00:00 2001 From: ArchiFinance Date: Mon, 8 May 2023 20:46:50 +0800 Subject: [PATCH 0264/1354] Adding ArchiFinance on arbitrum chain to defillama adapters --- projects/archi-finance/abi.json | 162 ++++++++++++++++++++++++++++++++ projects/archi-finance/index.js | 62 ++++++++++++ 2 files changed, 224 insertions(+) create mode 100644 projects/archi-finance/abi.json create mode 100644 projects/archi-finance/index.js diff --git a/projects/archi-finance/abi.json b/projects/archi-finance/abi.json new file mode 100644 index 0000000000..b02cafca23 --- /dev/null +++ b/projects/archi-finance/abi.json @@ -0,0 +1,162 @@ +{ + "getTokenPrice": { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "getTokenPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + "getGlpPrice": { + "inputs": [ + { + "internalType": "bool", + "name": "_isBuying", + "type": "bool" + } + ], + "name": "getGlpPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + "borrowedRewardPool": { + "inputs": [], + "name": "borrowedRewardPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + "supplyRewardPool": { + "inputs": [], + "name": "supplyRewardPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + "workingBalance": { + "inputs": [ + { + "internalType": "address[]", + "name": "_vaults", + "type": "address[]" + } + ], + "name": "workingBalance", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + "borrowedBalance": { + "inputs": [ + { + "internalType": "address[]", + "name": "_vaults", + "type": "address[]" + } + ], + "name": "borrowedBalance", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + "lockedBalance": { + "inputs": [ + { + "internalType": "address[]", + "name": "_vaults", + "type": "address[]" + } + ], + "name": "lockedBalance", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + "debtBalance": { + "inputs": [ + { + "internalType": "address[]", + "name": "_vaults", + "type": "address[]" + } + ], + "name": "debtBalance", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + } +} \ No newline at end of file diff --git a/projects/archi-finance/index.js b/projects/archi-finance/index.js new file mode 100644 index 0000000000..2a6c9ecf83 --- /dev/null +++ b/projects/archi-finance/index.js @@ -0,0 +1,62 @@ +const sdk = require('@defillama/sdk') +const { stakings } = require("../helper/staking"); +const { sumTokens2 } = require("../helper/unwrapLPs"); +const ABI = require("./abi.json"); + +const addresses = { + vaultInfo: "0x73956FF7375476EBFD5e82d80Ea9065a5bCc3d2b", + collateralPoolAddress: "0xbd198617aD1dc75B0f7A0A67BbE31993919Cd716", + fsGlpAddress: "0x1addd80e6039594ee970e5872d247bf0414c8903", + fsGlpHolders: ["0x65C59eE732BD249224718607Ee0EC0e293309923", "0x49EE14e37Cb47bff8c512B3A0d672302A3446eb1"], + vaults: [ + // weth pool + "0x7674Ccf6cAE51F20d376644C42cd69EC7d4324f4", + // usdt pool + "0x179bD8d1d654DB8aa1603f232E284FF8d53a0688", + // usdc pool + "0xa7490e0828Ed39DF886b9032ebBF98851193D79c", + // wbtc pool + "0xee54A31e9759B0F7FDbF48221b72CD9F3aEA00AB", + // dai pool + "0x4262BA30d5c1bba98e9E9fc3c40602a7E09Ca49F", + // link pool + "0xB86a783C329d5D0CE84093757586F5Fd5364cd71", + // uni pool + "0xAf2a336AE86eF90a3958F4bFC6EFc23cD6190951", + // frax pool + "0x2032998a5312B88f6b4d2b86638Be31B20d1B573", + // mim pool + "0xbd70E8712264D6A62a7A6BD255A59992068adCAd" + ] +} + +async function tvl(timestamp, block, chainBlocks, { api }) { + const tokensAndOwners = []; + + const workingBalance = await api.call({ target: addresses.vaultInfo, abi: ABI.workingBalance, params: [addresses.vaults] }); + const collateralBalance = await api.call({ target: addresses.collateralPoolAddress, abi: "uint256:totalSupply" }); + + api.addTokens(workingBalance[0], workingBalance[1]); + api.addTokens([addresses.fsGlpAddress], [collateralBalance]); + + return sumTokens2({ api, tokensAndOwners: tokensAndOwners }); +} + +async function borrowed(timestamp, block, chainBlocks, { api }) { + const tokensAndOwners = []; + + const borrowedBalance = await api.call({ target: addresses.vaultInfo, abi: ABI.borrowedBalance, params: [addresses.vaults] }); + + api.addTokens(borrowedBalance[0], borrowedBalance[1]); + + return sumTokens2({ api, tokensAndOwners: tokensAndOwners }); +} + +module.exports = { + methodology: "The TVL (Total Value Locked) of ArchiFinance is calculated by adding the total liquidity and borrowing amount.", + arbitrum: { + tvl, + borrowed, + staking: stakings(addresses.fsGlpHolders, addresses.fsGlpAddress), + }, +}; \ No newline at end of file From cc7e321fa543a0c08926d184a58a1acdfc9dba8a Mon Sep 17 00:00:00 2001 From: Wayne Kuo Date: Mon, 8 May 2023 17:33:35 +0800 Subject: [PATCH 0265/1354] create typus-finance --- projects/typus-finance/index.js | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 projects/typus-finance/index.js diff --git a/projects/typus-finance/index.js b/projects/typus-finance/index.js new file mode 100644 index 0000000000..bca5a39d9b --- /dev/null +++ b/projects/typus-finance/index.js @@ -0,0 +1,54 @@ +const sui = require("../helper/chain/sui"); + +// const TYPUS_DOV_SINGLE_REGISTRY = +// "0xb44c0fa1ab40f7699be3dce02475965a636ed850348435abb3b797b273f6c551"; +const SINGLE_DEPOSIT_VAULT_REGISTRY = + "0x4ae62c4d67f9f5d7077626fcc6d450535c4df710da455a0a2bd2226558832629"; +const SINGLE_BID_VAULT_REGISTRY = + "0x2c8cdd00ced47e717420cd2fc54990b3b38e115e34a9209271063a59ddeeb059"; + +async function tvl(_, _1, _2, { api }) { + const depositVaultFields = await sui.getDynamicFieldObjects({ + parent: SINGLE_DEPOSIT_VAULT_REGISTRY, + }); + + const depositVaultIds = depositVaultFields.map((item) => item.fields.id.id); + + const depositVaults = await sui.getObjects(depositVaultIds); + + depositVaults.forEach(({ type, fields }) => { + const coin = type.replace(">>", "").split(", ")[2]; + var value = BigInt(0); + value += BigInt(fields.value.fields.active_sub_vault.fields.balance); + value += BigInt(fields.value.fields.deactivating_sub_vault.fields.balance); + value += BigInt(fields.value.fields.inactive_sub_vault.fields.balance); + value += BigInt(fields.value.fields.warmup_sub_vault.fields.balance); + api.add(coin, value.toString()); + }); + + const bidVaultFields = await sui.getDynamicFieldObjects({ + parent: SINGLE_BID_VAULT_REGISTRY, + }); + + const bidVaultIds = bidVaultFields.map((item) => item.fields.id.id); + + const bidVaults = await sui.getObjects(bidVaultIds); + + bidVaults.forEach(({ type, fields }) => { + const coin = type.replace(">>", "").split(", ")[2]; + var value = BigInt(0); + value += BigInt(fields.value.fields.bidder_sub_vault.fields.balance); + value += BigInt(fields.value.fields.premium_sub_vault.fields.balance); + value += BigInt( + fields.value.fields.performance_fee_sub_vault.fields.balance + ); + api.add(coin, value.toString()); + }); +} + +module.exports = { + timetravel: false, + sui: { + tvl, + }, +}; From f1360a7d37e16abfca406053f5efd220bf23251a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 15:14:53 +0200 Subject: [PATCH 0266/1354] minor refactor --- projects/typus-finance/index.js | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/projects/typus-finance/index.js b/projects/typus-finance/index.js index bca5a39d9b..35b1a2c78a 100644 --- a/projects/typus-finance/index.js +++ b/projects/typus-finance/index.js @@ -16,14 +16,12 @@ async function tvl(_, _1, _2, { api }) { const depositVaults = await sui.getObjects(depositVaultIds); - depositVaults.forEach(({ type, fields }) => { + depositVaults.forEach(({ type, fields: { value: { fields }} }) => { const coin = type.replace(">>", "").split(", ")[2]; - var value = BigInt(0); - value += BigInt(fields.value.fields.active_sub_vault.fields.balance); - value += BigInt(fields.value.fields.deactivating_sub_vault.fields.balance); - value += BigInt(fields.value.fields.inactive_sub_vault.fields.balance); - value += BigInt(fields.value.fields.warmup_sub_vault.fields.balance); - api.add(coin, value.toString()); + api.add(coin, fields.active_sub_vault.fields.balance) + api.add(coin, fields.deactivating_sub_vault.fields.balance) + api.add(coin, fields.inactive_sub_vault.fields.balance) + api.add(coin, fields.warmup_sub_vault.fields.balance) }); const bidVaultFields = await sui.getDynamicFieldObjects({ @@ -34,15 +32,11 @@ async function tvl(_, _1, _2, { api }) { const bidVaults = await sui.getObjects(bidVaultIds); - bidVaults.forEach(({ type, fields }) => { + bidVaults.forEach(({ type, fields: { value: { fields }} }) => { const coin = type.replace(">>", "").split(", ")[2]; - var value = BigInt(0); - value += BigInt(fields.value.fields.bidder_sub_vault.fields.balance); - value += BigInt(fields.value.fields.premium_sub_vault.fields.balance); - value += BigInt( - fields.value.fields.performance_fee_sub_vault.fields.balance - ); - api.add(coin, value.toString()); + api.add(coin, fields.bidder_sub_vault.fields.balance) + api.add(coin, fields.premium_sub_vault.fields.balance) + api.add(coin, fields.performance_fee_sub_vault.fields.balance) }); } From f5dddd0946a1dc109e5b951a3d71f1ac8ecbc061 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 15:35:54 +0200 Subject: [PATCH 0267/1354] Bubbleswap (#6192) * Add bubbleswap v2 * removed uneeded modual export * split v1 and v2 out again * fixedV2 fetch wrong naming * +- v2 prod url * +- v2 launch timestamp * bugfix --------- Co-authored-by: Jason van der Meijden Co-authored-by: Mo Shaikjee Co-authored-by: bubbleswap-io <106908015+bubbleswap-io@users.noreply.github.com> --- projects/bubbleswap-v2/index.js | 22 ++++++++++++++++++++++ projects/bubbleswap/index.js | 10 +++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 projects/bubbleswap-v2/index.js diff --git a/projects/bubbleswap-v2/index.js b/projects/bubbleswap-v2/index.js new file mode 100644 index 0000000000..832c9ff9cb --- /dev/null +++ b/projects/bubbleswap-v2/index.js @@ -0,0 +1,22 @@ +const { default: axios } = require('axios'); + +async function fetch(){ + + const response = await axios.get('https://api.bubbleswap.io/v2/backend/api/v1/tvl', { + headers: { + //I would prefer the user agengt to be set to something like axios, or DefiLlama, but our WAF only allows the bellow + 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' + } + }) + return response.data.data.sumTVL + +} + +module.exports = { + fetch, + timetravel: false, + methodology: "Data is retrieved from the api at https://api.bubbleswap.io/", + hallmarks: [ + [1683288000, "V2 Launch"], + ] +} \ No newline at end of file diff --git a/projects/bubbleswap/index.js b/projects/bubbleswap/index.js index 7056bbef33..2869fffe4d 100644 --- a/projects/bubbleswap/index.js +++ b/projects/bubbleswap/index.js @@ -1,4 +1,5 @@ const { default: axios } = require('axios'); + async function fetch(){ const response = await axios.get('https://api.bubbleswap.io/analytics/api/v1/analytics/aggregate/liquidity/year', { @@ -28,7 +29,10 @@ async function fetch(){ } module.exports = { - methodology: "Data is retrieved from the api at https://analytics.bubbleswap.io/", - timetravel: false, - fetch + fetch, + timetravel: false, + methodology: "Data is retrieved from the api at https://api.bubbleswap.io", + hallmarks: [ + [1666569600, "Start V1 Rewards"], + ] } \ No newline at end of file From 6e5b8250a60a55b10291bf3760d32948d40c4f28 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 15:51:44 +0200 Subject: [PATCH 0268/1354] update sdk version --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85c849c00a..8bb989317b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -169,9 +169,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.10.tgz", - "integrity": "sha512-d+xTcUvuar3WVSmouJdsVGkGjZc44/tW/REQCjSKn0wplB0ugEjGWdZ/LbbxpCbqRiifwkp2IoFrf1DpNVjuyQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.12.tgz", + "integrity": "sha512-UeuMkrbz9zS2ze4Q5w2gohUapvRc3NupSVgBAr2SMv1p7W7omgQ6AIuvzcw3Q4sv/T/JhP9wWUPMK56VzIN74g==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -5466,9 +5466,9 @@ } }, "@defillama/sdk": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.10.tgz", - "integrity": "sha512-d+xTcUvuar3WVSmouJdsVGkGjZc44/tW/REQCjSKn0wplB0ugEjGWdZ/LbbxpCbqRiifwkp2IoFrf1DpNVjuyQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.12.tgz", + "integrity": "sha512-UeuMkrbz9zS2ze4Q5w2gohUapvRc3NupSVgBAr2SMv1p7W7omgQ6AIuvzcw3Q4sv/T/JhP9wWUPMK56VzIN74g==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", From 4208272693eb9d37230b047bbba8700ed668a8f3 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 8 May 2023 15:07:57 +0100 Subject: [PATCH 0269/1354] add floki address treasury --- projects/treasury/flokifi-locker.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/treasury/flokifi-locker.js b/projects/treasury/flokifi-locker.js index 049665a78a..e5a80bd2d8 100644 --- a/projects/treasury/flokifi-locker.js +++ b/projects/treasury/flokifi-locker.js @@ -1,6 +1,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryETH = "0x2b9d5c7f2EAD1A221d771Fb6bb5E35Df04D60AB0"; +const treasuryETH2 = "0xea9a5a3Ac7545E1Ddce79fC5803Df0f317A3D0f6" const flokiETH = "0xcf0C122c6b73ff809C693DB761e7BaeBe62b6a2E" const treasuryBSC = "0x17e98a24f992BB7bcd62d6722d714A3C74814B94" @@ -15,7 +16,7 @@ module.exports = treasuryExports({ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "0x1BD708E01E96d426652b0D50b8c896eaeefee36d" ], - owners: [treasuryETH], + owners: [treasuryETH, treasuryETH2], ownTokens: [flokiETH], }, bsc: { From f7a77ef7eedf745e7af286f75a5d92e9a89e5655 Mon Sep 17 00:00:00 2001 From: graykode Date: Mon, 8 May 2023 23:29:54 +0900 Subject: [PATCH 0270/1354] feat: add polygon zkevm mainnet for clober --- projects/clober/index.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/projects/clober/index.js b/projects/clober/index.js index da0a381d38..6d93a72c8f 100644 --- a/projects/clober/index.js +++ b/projects/clober/index.js @@ -1,10 +1,17 @@ const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') -const FACTORY = "0x93A43391978BFC0bc708d5f55b0Abe7A9ede1B91" +function factoryAddress(chainId){ + if(chainId === 1101){ + return "0x24aC0938C010Fb520F1068e96d78E0458855111D" + }else{ + return "0x93A43391978BFC0bc708d5f55b0Abe7A9ede1B91" + } +} async function tvl(_, _b, _cb, { api }) { - let tokenAddresses = await api.fetchList({ lengthAbi: abi.nonce, itemAbi: abi.computeTokenAddress, target: FACTORY}) + const chainId = await api.getChainId() + let tokenAddresses = await api.fetchList({ lengthAbi: abi.nonce, itemAbi: abi.computeTokenAddress, target: factoryAddress(chainId)}) tokenAddresses = tokenAddresses.flat() const markets = await api.multiCall({ abi: abi.market, calls: tokenAddresses }) const base = await api.multiCall({ abi: abi.baseToken, calls: markets}) @@ -22,5 +29,6 @@ module.exports = { methodology: "TVL consists of assets deposited into market contracts", ethereum: { tvl }, polygon: { tvl }, - arbitrum: { tvl } + arbitrum: { tvl }, + polygon_zkevm: { tvl } } \ No newline at end of file From a6bcc7f7da67286c96ac61b47c33a5d1bbbd7a4f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 16:44:25 +0200 Subject: [PATCH 0271/1354] add grove chain --- package-lock.json | 12 ++++++------ projects/groveswap/index.js | 3 +++ projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 3 +++ 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8bb989317b..740dbf6135 100644 --- a/package-lock.json +++ b/package-lock.json @@ -169,9 +169,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.12.tgz", - "integrity": "sha512-UeuMkrbz9zS2ze4Q5w2gohUapvRc3NupSVgBAr2SMv1p7W7omgQ6AIuvzcw3Q4sv/T/JhP9wWUPMK56VzIN74g==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.13.tgz", + "integrity": "sha512-J30sy9VAITb7Es8jQDEt7RJ9B22ylryx24lgQLj0sBXq7iqhF302IiyoM7t66G9pFKtsAOIwdRFH9uNIhBNAyA==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -5466,9 +5466,9 @@ } }, "@defillama/sdk": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.12.tgz", - "integrity": "sha512-UeuMkrbz9zS2ze4Q5w2gohUapvRc3NupSVgBAr2SMv1p7W7omgQ6AIuvzcw3Q4sv/T/JhP9wWUPMK56VzIN74g==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.13.tgz", + "integrity": "sha512-J30sy9VAITb7Es8jQDEt7RJ9B22ylryx24lgQLj0sBXq7iqhF302IiyoM7t66G9pFKtsAOIwdRFH9uNIhBNAyA==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/groveswap/index.js b/projects/groveswap/index.js index 928128ba7b..4367ef66bc 100644 --- a/projects/groveswap/index.js +++ b/projects/groveswap/index.js @@ -10,4 +10,7 @@ module.exports = { ethereum: { tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x6c565c5bbdc7f023cae8a2495105a531caac6e54', }), }, + grove: { + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x401e7e28e0C679E1a3242ac6CD93C9c56208A260', }), + } } \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 1d3d3f8636..f176f20d61 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -76,6 +76,7 @@ "godwoken", "godwoken_v1", "goerli", + "grove", "harmony", "heco", "hedera", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index ef3c3a827d..8eb9436cff 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1452,5 +1452,8 @@ "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN", "0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN", "0x2::sui::SUI" + ], + "grove": [ + "0xE85f139488c689038028a3EB8fC38dcC29D4C340" ] } \ No newline at end of file From bd2aea0858a562b4a66d99a881dae661f0a9c7ee Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 16:52:42 +0200 Subject: [PATCH 0272/1354] minor refactor --- projects/perp/index.js | 61 +++++++++++------------------------------- 1 file changed, 15 insertions(+), 46 deletions(-) diff --git a/projects/perp/index.js b/projects/perp/index.js index b7e5476c24..3c8449bb62 100644 --- a/projects/perp/index.js +++ b/projects/perp/index.js @@ -1,53 +1,22 @@ -const sdk = require("@defillama/sdk"); -const { getChainTransform } = require('../helper/portedTokens'); const { staking } = require("../helper/staking"); -const insuranceFund = "0x8C29F6F7fc1999aB84b476952E986F974Acb3824" -const clearingHouse = "0x5d9593586b4B5edBd23E7Eba8d88FD8F09D83EBd" -const usdcXdai = "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83" - const perpToken = "0xbC396689893D065F41bc2C6EcbeE5e0085233447" const stakingContract = "0x0f346e19F01471C02485DF1758cfd3d624E399B4" -async function xdai(_timestamp, ethBlock, chainBlocks) { - const balances = {}; - const underlyingBalances = await sdk.api.abi.multiCall({ - calls: [{ - target: usdcXdai, - params: insuranceFund - },{ - target: usdcXdai, - params: clearingHouse - }], - block: chainBlocks.xdai, - abi: "erc20:balanceOf", - chain: 'xdai' - }); - const usdc = (await getChainTransform('xdai'))(usdcXdai); - sdk.util.sumSingleBalance(balances, usdc, underlyingBalances.output[0].output) - sdk.util.sumSingleBalance(balances, usdc, underlyingBalances.output[1].output) - - return balances -} - module.exports = { - ethereum: { - staking: staking(stakingContract, perpToken) - }, - optimism:{ - tvl: staking( - [ - "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", - "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", - "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", - "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60", - "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60"], - [ - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "0x4200000000000000000000000000000000000042", - "0x4200000000000000000000000000000000000006", - "0x2E3D870790dC77A83DD1d18184Acc7439A53f475"], - "optimism") - }, + ethereum: { + staking: staking(stakingContract, perpToken) + }, + optimism: { + tvl: staking( + [ + "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60" + ], + [ + "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", + "0x4200000000000000000000000000000000000042", + "0x4200000000000000000000000000000000000006", + "0x2E3D870790dC77A83DD1d18184Acc7439A53f475"]) + }, } \ No newline at end of file From 3b544c409b24b25761327d40bba33b6c3a40e967 Mon Sep 17 00:00:00 2001 From: graykode Date: Tue, 9 May 2023 00:02:49 +0900 Subject: [PATCH 0273/1354] fix: use market addresses with clober api --- projects/clober/index.js | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/projects/clober/index.js b/projects/clober/index.js index 6d93a72c8f..b3c050b699 100644 --- a/projects/clober/index.js +++ b/projects/clober/index.js @@ -1,20 +1,11 @@ const abi = require("./abi.json"); +const { fetchURL } = require('../helper/utils') const { sumTokens2 } = require('../helper/unwrapLPs') -function factoryAddress(chainId){ - if(chainId === 1101){ - return "0x24aC0938C010Fb520F1068e96d78E0458855111D" - }else{ - return "0x93A43391978BFC0bc708d5f55b0Abe7A9ede1B91" - } -} - async function tvl(_, _b, _cb, { api }) { const chainId = await api.getChainId() - let tokenAddresses = await api.fetchList({ lengthAbi: abi.nonce, itemAbi: abi.computeTokenAddress, target: factoryAddress(chainId)}) - tokenAddresses = tokenAddresses.flat() - const markets = await api.multiCall({ abi: abi.market, calls: tokenAddresses }) - const base = await api.multiCall({ abi: abi.baseToken, calls: markets}) + const markets = (await fetchURL(`https://prod.clober-api.com/${chainId}/markets`)).data.markets.map((market) => market.address) + const base = await api.multiCall({ abi: abi.baseToken, calls: markets}) const quote = await api.multiCall({ abi: abi.quoteToken, calls: markets}) const tokens = [base, quote].flat() const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens}) From 4bf3f8e964e8d2344be786135f3af03c7f269cba Mon Sep 17 00:00:00 2001 From: zther Date: Mon, 8 May 2023 23:32:07 +0800 Subject: [PATCH 0274/1354] add zenith protocol --- projects/zenith/contracts.json | 23 +++++++++++++++++++++++ projects/zenith/index.js | 19 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 projects/zenith/contracts.json create mode 100644 projects/zenith/index.js diff --git a/projects/zenith/contracts.json b/projects/zenith/contracts.json new file mode 100644 index 0000000000..cb0d9eff53 --- /dev/null +++ b/projects/zenith/contracts.json @@ -0,0 +1,23 @@ +{ + "admin": "0x3a11537C0e1f1cc80820a1EEd973bB367Bf3276A", + "ZTH": "0x00000000A82B4758df44fcB124e26a9B441E59a0", + "masterChef": "0xb9e7008FA856D66680BeE9E0a24da407D9d7fAD5", + "esZTH": "0x4DC377c2B63d06fF47BBd2B3B1177cfAC1906b1e", + "treasury": "0x648F3eC98da4De19b92598CF384662d494D881AB", + "ZTHETHPairV2":"0xAC0155CBd306e41C1287E2c53e1306178397b823", + "config": { + "startTime": 1683469800 + }, + "stakePools": [ + { + "pid": 0, + "name":"ETH", + "asset": "0x0000000000000000000000000000000000000000" + }, + { + "pid": 1, + "name":"ZTH-ETH", + "asset": "0xAC0155CBd306e41C1287E2c53e1306178397b823" + } + ] +} diff --git a/projects/zenith/index.js b/projects/zenith/index.js new file mode 100644 index 0000000000..9ed6119a05 --- /dev/null +++ b/projects/zenith/index.js @@ -0,0 +1,19 @@ +const { stakings } = require("../helper/staking"); +const { pool2s } = require("../helper/pool2"); + +const contracts = require("./contracts.json"); + +var pool2= [contracts.ZTHETHPairV2]; +var stakeTokens=[]; +contracts.stakePools.forEach(r=> {if(r.asset!=contracts.ZTHETHPairV2) stakeTokens.push(r.asset) }); + + +module.exports = { + methodology: + "TVL is comprised of tokens deposited to Zenith protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.", + ethereum: { + tvl: (async) => ({}), + pool2: pool2s([contracts.masterChef], pool2), + staking: stakings([contracts.masterChef], stakeTokens), + }, +}; From 4ee7a06617ba744d4060ae4aadaac0092540cd06 Mon Sep 17 00:00:00 2001 From: graykode Date: Tue, 9 May 2023 00:55:32 +0900 Subject: [PATCH 0275/1354] feat: add staking of mango farmers club --- projects/mango-farmers-club/index.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/projects/mango-farmers-club/index.js b/projects/mango-farmers-club/index.js index 6b85f462bd..756fd960c4 100644 --- a/projects/mango-farmers-club/index.js +++ b/projects/mango-farmers-club/index.js @@ -1,7 +1,21 @@ -const { sumTokensExport } = require('../helper/unwrapLPs'); +const { default: BigNumber } = require('bignumber.js'); +const sdk = require("@defillama/sdk"); +const { fetchURL } = require("../helper/utils"); +const { transformBalances } = require("../helper/portedTokens"); module.exports = { polygon_zkevm: { - tvl: sumTokensExport({ owner: '0x4eA8496D4D1d4EcF6eD6DaeA95D1A0856F8A5177', tokens: ['0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035']}) + staking: async () => { + const {output: stakingBalance} = await sdk.api.abi.call({ + abi: 'erc20:totalSupply', + target: "0xdd38211f2973dc41cd6fC4DB681596Fd6118D894", + chain: 'polygon_zkevm' + }); + const { price : mangoPrice } = (await fetchURL('https://prod.clober-api.com/1101/markets/0x1FC38BA10E741F357b1c8B69DC08eA654c21Ae37/trades?limit=1')).data.trades[0] + const balances = {} + sdk.util.sumSingleBalance(balances, "0x1fA03eDB1B8839a5319A7D2c1Ae6AAE492342bAD", BigNumber(stakingBalance).times(mangoPrice).div(1e18).toFixed(0)) + return transformBalances('polygon_zkevm', balances) + }, + tvl: () => ({}) } }; From 4e79207af942d386eb2649d8803ea5b37b53d057 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 19:45:10 +0200 Subject: [PATCH 0276/1354] code refactor --- projects/archi-finance/abi.json | 170 ++------------------------------ projects/archi-finance/index.js | 84 +++++++--------- 2 files changed, 45 insertions(+), 209 deletions(-) diff --git a/projects/archi-finance/abi.json b/projects/archi-finance/abi.json index b02cafca23..b2575606de 100644 --- a/projects/archi-finance/abi.json +++ b/projects/archi-finance/abi.json @@ -1,162 +1,10 @@ { - "getTokenPrice": { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "getTokenPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - "getGlpPrice": { - "inputs": [ - { - "internalType": "bool", - "name": "_isBuying", - "type": "bool" - } - ], - "name": "getGlpPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - "borrowedRewardPool": { - "inputs": [], - "name": "borrowedRewardPool", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - "supplyRewardPool": { - "inputs": [], - "name": "supplyRewardPool", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - "workingBalance": { - "inputs": [ - { - "internalType": "address[]", - "name": "_vaults", - "type": "address[]" - } - ], - "name": "workingBalance", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - "borrowedBalance": { - "inputs": [ - { - "internalType": "address[]", - "name": "_vaults", - "type": "address[]" - } - ], - "name": "borrowedBalance", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - "lockedBalance": { - "inputs": [ - { - "internalType": "address[]", - "name": "_vaults", - "type": "address[]" - } - ], - "name": "lockedBalance", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - "debtBalance": { - "inputs": [ - { - "internalType": "address[]", - "name": "_vaults", - "type": "address[]" - } - ], - "name": "debtBalance", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - } -} \ No newline at end of file + "getTokenPrice": "function getTokenPrice(address _token) view returns (uint256)", + "getGlpPrice": "function getGlpPrice(bool _isBuying) view returns (uint256 price)", + "borrowedRewardPool": "address:borrowedRewardPool", + "supplyRewardPool": "address:supplyRewardPool", + "workingBalance": "function workingBalance(address[] _vaults) view returns (address[], uint256[])", + "borrowedBalance": "function borrowedBalance(address[] _vaults) view returns (address[], uint256[])", + "lockedBalance": "function lockedBalance(address[] _vaults) view returns (address[], uint256[])", + "debtBalance": "function debtBalance(address[] _vaults) view returns (address[], uint256[])" + } \ No newline at end of file diff --git a/projects/archi-finance/index.js b/projects/archi-finance/index.js index 2a6c9ecf83..3c44d761b3 100644 --- a/projects/archi-finance/index.js +++ b/projects/archi-finance/index.js @@ -1,62 +1,50 @@ -const sdk = require('@defillama/sdk') -const { stakings } = require("../helper/staking"); const { sumTokens2 } = require("../helper/unwrapLPs"); const ABI = require("./abi.json"); const addresses = { - vaultInfo: "0x73956FF7375476EBFD5e82d80Ea9065a5bCc3d2b", - collateralPoolAddress: "0xbd198617aD1dc75B0f7A0A67BbE31993919Cd716", - fsGlpAddress: "0x1addd80e6039594ee970e5872d247bf0414c8903", - fsGlpHolders: ["0x65C59eE732BD249224718607Ee0EC0e293309923", "0x49EE14e37Cb47bff8c512B3A0d672302A3446eb1"], - vaults: [ - // weth pool - "0x7674Ccf6cAE51F20d376644C42cd69EC7d4324f4", - // usdt pool - "0x179bD8d1d654DB8aa1603f232E284FF8d53a0688", - // usdc pool - "0xa7490e0828Ed39DF886b9032ebBF98851193D79c", - // wbtc pool - "0xee54A31e9759B0F7FDbF48221b72CD9F3aEA00AB", - // dai pool - "0x4262BA30d5c1bba98e9E9fc3c40602a7E09Ca49F", - // link pool - "0xB86a783C329d5D0CE84093757586F5Fd5364cd71", - // uni pool - "0xAf2a336AE86eF90a3958F4bFC6EFc23cD6190951", - // frax pool - "0x2032998a5312B88f6b4d2b86638Be31B20d1B573", - // mim pool - "0xbd70E8712264D6A62a7A6BD255A59992068adCAd" - ] + vaultInfo: "0x73956FF7375476EBFD5e82d80Ea9065a5bCc3d2b", + collateralPoolAddress: "0xbd198617aD1dc75B0f7A0A67BbE31993919Cd716", + fsGlpAddress: "0x1addd80e6039594ee970e5872d247bf0414c8903", + fsGlpHolders: ["0x65C59eE732BD249224718607Ee0EC0e293309923", "0x49EE14e37Cb47bff8c512B3A0d672302A3446eb1"], + vaults: [ + // weth pool + "0x7674Ccf6cAE51F20d376644C42cd69EC7d4324f4", + // usdt pool + "0x179bD8d1d654DB8aa1603f232E284FF8d53a0688", + // usdc pool + "0xa7490e0828Ed39DF886b9032ebBF98851193D79c", + // wbtc pool + "0xee54A31e9759B0F7FDbF48221b72CD9F3aEA00AB", + // dai pool + "0x4262BA30d5c1bba98e9E9fc3c40602a7E09Ca49F", + // link pool + "0xB86a783C329d5D0CE84093757586F5Fd5364cd71", + // uni pool + "0xAf2a336AE86eF90a3958F4bFC6EFc23cD6190951", + // frax pool + "0x2032998a5312B88f6b4d2b86638Be31B20d1B573", + // mim pool + "0xbd70E8712264D6A62a7A6BD255A59992068adCAd" + ] } async function tvl(timestamp, block, chainBlocks, { api }) { - const tokensAndOwners = []; - - const workingBalance = await api.call({ target: addresses.vaultInfo, abi: ABI.workingBalance, params: [addresses.vaults] }); - const collateralBalance = await api.call({ target: addresses.collateralPoolAddress, abi: "uint256:totalSupply" }); - - api.addTokens(workingBalance[0], workingBalance[1]); - api.addTokens([addresses.fsGlpAddress], [collateralBalance]); - - return sumTokens2({ api, tokensAndOwners: tokensAndOwners }); + const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: addresses.vaults }) + const tokensAndOwners = tokens.map((v, i) => [v, addresses.vaults[i]]) + addresses.fsGlpHolders.forEach(i => tokensAndOwners.push([addresses.fsGlpAddress, i])) + + return sumTokens2({ api, tokensAndOwners}) } async function borrowed(timestamp, block, chainBlocks, { api }) { - const tokensAndOwners = []; - - const borrowedBalance = await api.call({ target: addresses.vaultInfo, abi: ABI.borrowedBalance, params: [addresses.vaults] }); - - api.addTokens(borrowedBalance[0], borrowedBalance[1]); - - return sumTokens2({ api, tokensAndOwners: tokensAndOwners }); + const borrowedBalance = await api.call({ target: addresses.vaultInfo, abi: ABI.borrowedBalance, params: [addresses.vaults] }); + api.addTokens(borrowedBalance[0], borrowedBalance[1]); } module.exports = { - methodology: "The TVL (Total Value Locked) of ArchiFinance is calculated by adding the total liquidity and borrowing amount.", - arbitrum: { - tvl, - borrowed, - staking: stakings(addresses.fsGlpHolders, addresses.fsGlpAddress), - }, + methodology: "The TVL (Total Value Locked) of ArchiFinance is calculated by adding the total liquidity and borrowing amount.", + arbitrum: { + tvl, + borrowed, + }, }; \ No newline at end of file From 0e66efb8efc564002afacb95b304e0d2142ef1ef Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 8 May 2023 18:46:42 +0100 Subject: [PATCH 0277/1354] add creth2 --- projects/crETH2/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/crETH2/index.js diff --git a/projects/crETH2/index.js b/projects/crETH2/index.js new file mode 100644 index 0000000000..f89a2a2bb6 --- /dev/null +++ b/projects/crETH2/index.js @@ -0,0 +1,10 @@ +const sdk = require("@defillama/sdk") +const token = '0x49d72e3973900a195a155a46441f0c08179fdb64' + +module.exports = { + ethereum: { + tvl: async (_, block) => ({ + ethereum: (await sdk.api.erc20.totalSupply({ target: token, block})).output/1e18 + }) + } +} \ No newline at end of file From 1f8125397d54ca0e0531d92058d0b470628105a8 Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Mon, 8 May 2023 15:38:50 -0400 Subject: [PATCH 0278/1354] Add FraxSwap v2 Factory --- projects/frax-swap/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/frax-swap/index.js b/projects/frax-swap/index.js index b3abbf37c5..7ecdecf165 100644 --- a/projects/frax-swap/index.js +++ b/projects/frax-swap/index.js @@ -30,7 +30,7 @@ module.exports = { ...fx("avax", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E"), ...fx("bsc", "0xa007a9716dba05289df85A90d0Fd9D39BEE808dE"), ...fx("dogechain", "0x67b7DA7c0564c6aC080f0A6D9fB4675e52E6bF1d"), - ...fx("fantom", "0xF55C563148cA0c0F1626834ec1B8651844D76792"), + ...fx("fantom", "0xF55C563148cA0c0F1626834ec1B8651844D76792","0xDc745E09fC459aDC295E2e7baACe881354dB7F64"), ...fx("moonbeam", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E"), ...fx("polygon", "0xc2544A32872A91F4A553b404C6950e89De901fdb"), -}; \ No newline at end of file +}; From de2af4a2e55fd8f0e4761edaebd037a9ca2fb6d7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 May 2023 21:44:45 +0200 Subject: [PATCH 0279/1354] aave v3: add metis --- projects/aave/v3.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/aave/v3.js b/projects/aave/v3.js index c0f9c5f277..ec94b29bcd 100644 --- a/projects/aave/v3.js +++ b/projects/aave/v3.js @@ -6,6 +6,8 @@ function v3(chain) { let params = v3params if (chain === 'ethereum') params = ['0xbaA999AC55EAce41CcAE355c77809e68Bb345170', undefined, ['0x7B4EB56E7CD4b454BA8ff71E4518426369a138a3']] + else if (chain === 'metis') + params = ['0x9E7B73ffD9D2026F3ff4212c29E209E09C8A91F5', undefined, ['0x99411FC17Ad1B56f49719E3850B2CDcc0f9bBFd8']] const section = borrowed => aaveChainTvl(chain, ...params, borrowed, true); return { tvl: section(false), @@ -16,7 +18,7 @@ function v3(chain) { module.exports = { methodology: `Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending`, avax: v3("avax"), - ...["optimism", "fantom", "harmony", "arbitrum", "polygon", "ethereum", ].reduce((t, c) => ({ ...t, [c]: v3(c) }), {}), + ...["optimism", "fantom", "harmony", "arbitrum", "polygon", "ethereum", "metis"].reduce((t, c) => ({ ...t, [c]: v3(c) }), {}), hallmarks: [ [1659630089, "Start OP Rewards"], [1650471689, "Start AVAX Rewards"] From 52995a4b93b0b9c325ae46fa2943a5eaf560afd0 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 8 May 2023 23:26:52 +0100 Subject: [PATCH 0280/1354] remove creth2 from tvl --- projects/cream/index.js | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/projects/cream/index.js b/projects/cream/index.js index e1b727a71f..a7010da1aa 100644 --- a/projects/cream/index.js +++ b/projects/cream/index.js @@ -67,37 +67,18 @@ async function ethereumTvl(timestamp, block) { token: underlyings[idx].output, balance: cashVal.output, }); - } else if (underlyings[idx].output === crvIB) { - return; // https://twitter.com/0xngmi/status/1398565590856515585 + } else if (underlyings[idx].output === crvIB || underlyings[idx].output === CRETH2) { + return; // Exclude CRETH2 } else { const token = replacements[underlyings[idx].output] || underlyings[idx].output; sdk.util.sumSingleBalance(balances, token, cashVal.output); } }); - await unwrapUniswapLPs(balances, lpPositions, block); - - // --- Grab the accumulated on CRETH2 (ETH balance and update proper balances key) --- - const accumCRETH2 = ( - await sdk.api.abi.call({ - block, - target: CRETH2, - abi: abiCereth2["accumulated"], - }) - ).output; - - /* - In theory the ETH deposited in `0xcBc1065255cBc3aB41a6868c22d1f1C573AB89fd` mints CRETH2 which later, - but represents the same ETH portion, so we should deduct from the total value given by `accumulated()`` - the amount of ETH already deployed in the ethereum market place, otherwise it will account a certain % - twice. Only certain portion can be considered "idle" in the eth deposit contract to account again as extra - eth tvl - */ - const iddleInETHDepositContract = +accumCRETH2 - +(balances[CRETH2] ?? 0) - - sdk.util.sumSingleBalance(balances, nullAddress, +iddleInETHDepositContract) + await unwrapUniswapLPs(balances, lpPositions, block); + return balances; } From cd324d9adfdbbee4cb7cd84a0ba879d57410e4d3 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 9 May 2023 01:41:06 +0100 Subject: [PATCH 0281/1354] fix maple treasury --- projects/treasury/maple.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/projects/treasury/maple.js b/projects/treasury/maple.js index 7355bcc8b2..c5be973580 100644 --- a/projects/treasury/maple.js +++ b/projects/treasury/maple.js @@ -1,10 +1,16 @@ -const { staking } = require("../helper/staking"); +const { nullAddress, treasuryExports } = require("../helper/treasury"); -const MapleTreasury = "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19"; -const USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; - -module.exports = { +module.exports = treasuryExports({ ethereum: { - tvl: staking(MapleTreasury, [USDC]), + tokens: [ + "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "0xdac17f958d2ee523a2206206994597c13d831ec7", + "0x33349b282065b0284d756f0577fb39c158f935e6", + ], + owners: [ + "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19", + "0xd6d4Bcde6c816F17889f1Dd3000aF0261B03a196" + ], }, -} +}) \ No newline at end of file From 9b6b873cf98cbc8e01efd3c49cffaddd2df5e57d Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 9 May 2023 01:49:30 +0100 Subject: [PATCH 0282/1354] smol fix --- projects/treasury/maple.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/treasury/maple.js b/projects/treasury/maple.js index c5be973580..530cae4e68 100644 --- a/projects/treasury/maple.js +++ b/projects/treasury/maple.js @@ -1,4 +1,4 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); +const { treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ ethereum: { From c4d17abc654ba95ea748e262ba68a667c24464e2 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 9 May 2023 02:35:42 +0100 Subject: [PATCH 0283/1354] owntokens on treasury --- projects/treasury/maple.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/treasury/maple.js b/projects/treasury/maple.js index 530cae4e68..407bd00aa3 100644 --- a/projects/treasury/maple.js +++ b/projects/treasury/maple.js @@ -12,5 +12,6 @@ module.exports = treasuryExports({ "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19", "0xd6d4Bcde6c816F17889f1Dd3000aF0261B03a196" ], + ownTokens: ["0x33349b282065b0284d756f0577fb39c158f935e6"], }, }) \ No newline at end of file From a601b33579d1d1c23f1d7ed520a81e21e8c25f85 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 9 May 2023 02:36:12 +0100 Subject: [PATCH 0284/1354] fix --- projects/treasury/maple.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/treasury/maple.js b/projects/treasury/maple.js index 407bd00aa3..1b851b1e9b 100644 --- a/projects/treasury/maple.js +++ b/projects/treasury/maple.js @@ -5,8 +5,7 @@ module.exports = treasuryExports({ tokens: [ "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0x33349b282065b0284d756f0577fb39c158f935e6", + "0xdac17f958d2ee523a2206206994597c13d831ec7" ], owners: [ "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19", From 1925987279848afd0055fb866847feb0f8a44cf2 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 9 May 2023 02:49:37 +0100 Subject: [PATCH 0285/1354] add description --- projects/cream/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/cream/index.js b/projects/cream/index.js index a7010da1aa..4a06952245 100644 --- a/projects/cream/index.js +++ b/projects/cream/index.js @@ -68,7 +68,7 @@ async function ethereumTvl(timestamp, block) { balance: cashVal.output, }); } else if (underlyings[idx].output === crvIB || underlyings[idx].output === CRETH2) { - return; // Exclude CRETH2 + return; // Exclude CRETH2 //https://twitter.com/0xngmi/status/1398565590856515585 } else { const token = replacements[underlyings[idx].output] || underlyings[idx].output; From 3d2d9646d837c97f222aede6d079a901ddba11f5 Mon Sep 17 00:00:00 2001 From: Gerald Date: Tue, 9 May 2023 09:20:13 +0100 Subject: [PATCH 0286/1354] feat: union finance optimism stats --- projects/union-finance/index.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/projects/union-finance/index.js b/projects/union-finance/index.js index 8aeb941a0b..1122b1918c 100644 --- a/projects/union-finance/index.js +++ b/projects/union-finance/index.js @@ -8,9 +8,14 @@ const config = { }, arbitrum: { userManager: "0xb71F3D4342AaE0b8D531E14D2CF2F45d6e458A5F", - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", + DAI: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", uDAI: "0x954F20DF58347b71bbC10c94827bE9EbC8706887", }, + optimism: { + userManager: "0x8E195D65b9932185Fcc76dB5144534e0f3597628", + DAI: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + uDAI: "0xE478b5e7A423d7CDb224692d0a816CA146A744b2", + }, }; const abi = { @@ -134,7 +139,8 @@ function borrowing(chain) { module.exports = { timetravel: true, misrepresentedTokens: false, - methodology: "Counts the tokens locked in the contracts to be used to underwrite or to borrow. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted.", + methodology: + "Counts the tokens locked in the contracts to be used to underwrite or to borrow. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted.", ethereum: { tvl: tvl("ethereum"), borrowed: borrowing("ethereum"), @@ -143,4 +149,8 @@ module.exports = { tvl: tvl("arbitrum"), borrowed: borrowing("arbitrum"), }, + optimism: { + tvl: tvl("optimism"), + borrowed: borrowing("optimism"), + }, }; From c2006e90ffbfeb5bb3e9d466c0ea0edb05d79a7e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 14:37:22 +0200 Subject: [PATCH 0287/1354] Octolsd (#6204) * octolsd * fix * minor fix --------- Co-authored-by: michael --- projects/octolsd/index.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 projects/octolsd/index.js diff --git a/projects/octolsd/index.js b/projects/octolsd/index.js new file mode 100644 index 0000000000..6f45d7d489 --- /dev/null +++ b/projects/octolsd/index.js @@ -0,0 +1,31 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); +const { getLogs } = require("../helper/cache/getLogs"); +const { staking } = require("../helper/staking"); + +const POOL_CONTRACT = "0x7f885c6c9f847a764d247056ed4d13dc72cef7d0"; +const OCTO_ETH_LP_ADDRESS = "0xFe4cd8B965353de5fac7c0Cb041B75f5e238B413"; +const OCTO_ADDRESS = "0x52dec19feef469d7a683963b7380ecd0b1aff9c7"; + +async function tvl(timestamp, block, chainBlocks, { api }) { + const logs = await getLogs({ + api, + target: POOL_CONTRACT, + topics: ["0x18caa0724a26384928efe604ae6ddc99c242548876259770fc88fcb7e719d8fa",], + eventAbi: "event AddPool (uint256 indexed pid, uint256 rewardToken, address indexed stakingToken, bool isRegular)", + onlyArgs: true, + fromBlock: 17209964, + }); + + const lsdAddresses = logs.map((i) => i.stakingToken); + return sumTokens2({ api, owner:POOL_CONTRACT , tokens: lsdAddresses, blacklistedTokens: [OCTO_ADDRESS, OCTO_ETH_LP_ADDRESS]}); + +} + +module.exports = { + ethereum: { + methodology: + "TVL of Staked ETH & LSD tokens, with pool2 including value of staked OCTO/ETH Uniswap-V2 LP tokens", + tvl, + pool2: staking([POOL_CONTRACT], [OCTO_ETH_LP_ADDRESS]), + }, +}; From c5a0678263a88ff20e5e63856d578ee78137ba0b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 15:14:31 +0200 Subject: [PATCH 0288/1354] Update index.js --- projects/zenith/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/zenith/index.js b/projects/zenith/index.js index 9ed6119a05..ebfeb702f7 100644 --- a/projects/zenith/index.js +++ b/projects/zenith/index.js @@ -12,8 +12,7 @@ module.exports = { methodology: "TVL is comprised of tokens deposited to Zenith protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.", ethereum: { - tvl: (async) => ({}), pool2: pool2s([contracts.masterChef], pool2), - staking: stakings([contracts.masterChef], stakeTokens), + tvl: stakings([contracts.masterChef], stakeTokens), }, }; From ab75c7d7a2903515590c0373874f2f4828cc18b2 Mon Sep 17 00:00:00 2001 From: Leifu Chen Date: Tue, 9 May 2023 16:25:21 +0300 Subject: [PATCH 0289/1354] Update Thales Treasury --- projects/treasury/thales.js | 43 +++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/projects/treasury/thales.js b/projects/treasury/thales.js index 8994b94c43..643fa2b8e3 100644 --- a/projects/treasury/thales.js +++ b/projects/treasury/thales.js @@ -1,18 +1,49 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); -const Treasury = "0x2902E381c9Caacd17d25a2e008db0a9a4687FDBF"; - -const THALE = "0xE85B662Fe97e8562f4099d8A1d5A92D4B453bF30"; - +const Treasury_ARB = "0x2902E381c9Caacd17d25a2e008db0a9a4687FDBF"; +const Treasury_ETH = "0xdac09f37e132d91b962f30e6ec40d2d08b82b0fa"; +const Treasury_OP = "0x489863b61c625a15c74fb4c21486bacb4a3937ab"; +const Treasury_POLYGON = "0x4aad282dac74d79e41fd12833b1fad7a18c778ed"; +const Treasury_MULTICHAIN = "0x1777c6d588fd931751762836811529c0073d6376"; +const THALE_ARB = "0xE85B662Fe97e8562f4099d8A1d5A92D4B453bF30"; +const THALES_ETH = "0x8947da500eb47f82df21143d0c01a29862a8c3c5"; +const THALES_OP = "0x217d47011b23bb961eb6d93ca9945b7501a5bb11"; module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0x8e870d67f660d95d5be530380d0ec0bd388289e1", + "0xdac17f958d2ee523a2206206994597c13d831ec7", + "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + ], + owners: [Treasury_ETH, Treasury_MULTICHAIN], + ownTokens: [THALES_ETH], + }, + optimism: { + tokens: [ + nullAddress, + "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + "0x4200000000000000000000000000000000000042", + "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6" + ], + owners: [Treasury_OP, Treasury_MULTICHAIN], + ownTokens: [THALES_OP], + }, arbitrum: { tokens: [ nullAddress, "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", "0x8971dFb268B961a9270632f28B24F2f637c94244" ], - owners: [Treasury], - ownTokens: [THALE], + owners: [Treasury_ARB, Treasury_MULTICHAIN], + ownTokens: [THALE_ARB], + }, + polygon: { + tokens: [ + nullAddress, + "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" + ], + owners: [Treasury_POLYGON], }, }) \ No newline at end of file From 0c7db3078bf538c44690b50199d1d279da762b15 Mon Sep 17 00:00:00 2001 From: Zahnentferner Date: Tue, 9 May 2023 17:04:48 +0300 Subject: [PATCH 0290/1354] Implement first draft of DefiLllama adapter for Djed --- projects/djed-alliance/abi.json | 5 ++++ projects/djed-alliance/config.json | 6 +++++ projects/djed-alliance/index.js | 42 ++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 projects/djed-alliance/abi.json create mode 100644 projects/djed-alliance/config.json create mode 100644 projects/djed-alliance/index.js diff --git a/projects/djed-alliance/abi.json b/projects/djed-alliance/abi.json new file mode 100644 index 0000000000..cd51a2c3c9 --- /dev/null +++ b/projects/djed-alliance/abi.json @@ -0,0 +1,5 @@ +{ + "Djed": { + "reserve": "function R(uint256 cpa) view returns (uint256 balance)" + } +} \ No newline at end of file diff --git a/projects/djed-alliance/config.json b/projects/djed-alliance/config.json new file mode 100644 index 0000000000..fbbea4a116 --- /dev/null +++ b/projects/djed-alliance/config.json @@ -0,0 +1,6 @@ +{ + "djedAddress": { + "milkomeda": "0x67A30B399F5Ed499C1a6Bc0358FA6e42Ea4BCe76", + "milkomeda_a1": "0x..." + } +} \ No newline at end of file diff --git a/projects/djed-alliance/index.js b/projects/djed-alliance/index.js new file mode 100644 index 0000000000..017c7edeb1 --- /dev/null +++ b/projects/djed-alliance/index.js @@ -0,0 +1,42 @@ +const sdk = require('@defillama/sdk'); +const utils = require('../helper/utils'); +const { sumTokensExport } = require("../helper/chain/cardano"); +const { transformBalances } = require('../helper/portedTokens'); + +const abi = require('./abi.json'); +const config = require("./config.json"); + +async function ergotvl() { + const {data: { confirmed }} = await utils.fetchURL('https://api.ergoplatform.com/api/v1/addresses/MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX/balance/total'); + return { ergo: confirmed.nanoErgs / 1e9 }; +} + +async function tvl(chain, chainBlocks) { + const balances = {}; + + const reserve = (await sdk.api.abi.call({ + abi: abi.Djed.reserve, chain: chain, target: config.djedAddress[chain], params: [ 0 ], block: chainBlocks[chain], + })).output; + + //sdk.util.sumSingleBalance(balances, "mADA", reserve); + //sdk.util.sumSingleBalance(balances, "ADA", reserve); + //sdk.util.sumSingleBalance(balances, '0x000000000000000000000000000000000000BbBB', reserve); + sdk.util.sumSingleBalance(balances, '0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9', reserve); + //sdk.util.sumSingleBalance(balances, '0x0000000000000000000000000000000000000000', reserve); + //return balances; + return transformBalances(chain, balances); +} + +module.exports = { + methodology: '', + ergo:{ + tvl: ergotvl + }, + cardano: { + tvl: sumTokensExport({ owner: 'addr1z9s3v9vyyctzr4xagvrayw87yvzre6qcq7qw2uvqfznf92qm5kjdmrpmng059yellupyvwgay2v0lz6663swmds7hp0q2jjlf4', tokens: ['lovelace']}), + }, + milkomeda: { + start: 10440400, + tvl: (timestamp, block, chainBlocks) => tvl('milkomeda', chainBlocks) + }, +}; From ac22abffbcba90152fce9b93f79f9aa6fe5da1f7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 17:33:19 +0200 Subject: [PATCH 0291/1354] fix union fi --- projects/helper/chain/sui.js | 2 +- projects/union-finance/index.js | 101 +++++++------------------------- 2 files changed, 21 insertions(+), 82 deletions(-) diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index 048bc738ab..65856f24f2 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -41,7 +41,7 @@ async function getDynamicFieldObject(parent, id) { }])).content } -async function getDynamicFieldObjects({ parent, cursor = null, limit = 49, items = [], idFilter = i => i, addedIds = new Set() }) { +async function getDynamicFieldObjects({ parent, cursor = null, limit = 48, items = [], idFilter = i => i, addedIds = new Set() }) { const { result: { data, hasNextPage, nextCursor } } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method: 'suix_getDynamicFields', params: [parent, cursor, limit], }) diff --git a/projects/union-finance/index.js b/projects/union-finance/index.js index 511171defd..2d16d11b48 100644 --- a/projects/union-finance/index.js +++ b/projects/union-finance/index.js @@ -1,5 +1,3 @@ -const sdk = require("@defillama/sdk"); - const config = { ethereum: { userManager: "0x49c910Ba694789B58F53BFF80633f90B8631c195", @@ -25,90 +23,31 @@ const abi = { totalBorrows: "uint256:totalBorrows", }; -function tvl(chain) { - return async function (_, __, chainBlocks) { - const chainBlock = chainBlocks[chain]; - - const { userManager, uDAI } = config[chain]; - - const totalStaked = ( - await sdk.api.abi.call({ - abi: abi.totalStaked, - target: userManager, - params: [], - chain, - block: chainBlock, - }) - ).output; - - const totalRedeemable = ( - await sdk.api.abi.call({ - abi: abi.totalRedeemable, - target: uDAI, - params: [], - chain, - block: chainBlock, - }) - ).output; - - const totalReserves = ( - await sdk.api.abi.call({ - abi: abi.totalReserves, - target: uDAI, - params: [], - chain, - block: chainBlock, - }) - ).output; - - const total = [totalStaked, totalRedeemable, totalReserves].reduce( - (acc, n) => Number(n) + Number(acc), - 0 - ); - - return { - [config[chain].DAI]: total, - }; - }; +async function tvl() { + const { api } = arguments[3] + const { userManager, DAI, uDAI } = config[api.chain] + const bals = await api.batchCall([ + { target: userManager, abi: abi.totalStaked }, + { target: uDAI, abi: abi.totalRedeemable }, + { target: uDAI, abi: abi.totalReserves }, + ]) + bals.forEach(i => api.add(DAI, i)) } -function borrowing(chain) { - return async function (_, __, chainBlocks) { - const chainBlock = chainBlocks[chain]; - - const { uDAI } = config[chain]; - - const totalBorrows = ( - await sdk.api.abi.call({ - abi: abi.totalBorrows, - target: uDAI, - params: [], - chain, - block: chainBlock, - }) - ).output; - - return { - [config[chain].DAI]: totalBorrows, - }; - }; +async function borrowed() { + const { api } = arguments[3] + const { DAI, uDAI } = config[api.chain] + const borrows = await api.call({ target: uDAI, abi: abi.totalBorrows, }) + api.add(DAI, borrows) } module.exports = { - timetravel: true, - misrepresentedTokens: false, methodology: "Counts the tokens locked in the contracts to be used to underwrite or to borrow. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted.", - ethereum: { - tvl: tvl("ethereum"), - borrowed: borrowing("ethereum"), - }, - arbitrum: { - tvl: tvl("arbitrum"), - borrowed: borrowing("arbitrum"), - }, - optimism: { - tvl: tvl("optimism"), - borrowed: borrowing("optimism"), - }, }; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl, borrowed, + } +}) From 55f8e4b3e94c1a46b071cb74f654c436a3dedb75 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 17:37:47 +0200 Subject: [PATCH 0292/1354] add https://push.org/ --- projects/push/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/push/index.js diff --git a/projects/push/index.js b/projects/push/index.js new file mode 100644 index 0000000000..2c0b8fed49 --- /dev/null +++ b/projects/push/index.js @@ -0,0 +1,9 @@ +const { staking } = require('../helper/staking') + +module.exports = { + ethereum: { + tvl: () => 0, + pool2: staking('0xb72ff1e675117bedeff05a7d0a472c3844cfec85', '0xaf31fd9c3b0350424bf96e551d2d1264d8466205'), + staking: staking('0xb72ff1e675117bedeff05a7d0a472c3844cfec85', '0xf418588522d5dd018b425e472991e52ebbeeeeee'), + } +} \ No newline at end of file From 07c71429473e159ca31d0d40057620681389a055 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 9 May 2023 16:55:54 +0100 Subject: [PATCH 0293/1354] push treasury --- projects/treasury/push.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/treasury/push.js diff --git a/projects/treasury/push.js b/projects/treasury/push.js new file mode 100644 index 0000000000..71ca99e6b4 --- /dev/null +++ b/projects/treasury/push.js @@ -0,0 +1,20 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x19Ff5f2C05aC6a303aF6d5002C99686e823EBE72"; +const push = "0xf418588522d5dd018b425E472991E52EBBeEEEEE" + +module.exports = treasuryExports({ + ethereum: { + owners: [treasury], + ownTokens: [push], + tokens: [ + nullAddress, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "0xAf31Fd9C3B0350424BF96e551d2D1264d8466205", + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x5aFE3855358E112B5647B952709E6165e1c1eEEe" + ], + }, +}); \ No newline at end of file From 6a3848cd1f5e712dfdfefb9f9fa04f7aa2cbef66 Mon Sep 17 00:00:00 2001 From: graykode Date: Wed, 10 May 2023 01:21:56 +0900 Subject: [PATCH 0294/1354] fix: use only contract for fecthing tokenAddresses --- projects/clober/abi.json | 1 - projects/clober/index.js | 26 ++++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/projects/clober/abi.json b/projects/clober/abi.json index b29d92d13b..6edec0a4e1 100644 --- a/projects/clober/abi.json +++ b/projects/clober/abi.json @@ -1,6 +1,5 @@ { "nonce":"uint256:nonce", - "computeTokenAddress": "function computeTokenAddress(uint256) view returns (address)", "market":"address:market", "baseToken":"address:baseToken", "quoteToken":"address:quoteToken" diff --git a/projects/clober/index.js b/projects/clober/index.js index b3c050b699..e51d6afb85 100644 --- a/projects/clober/index.js +++ b/projects/clober/index.js @@ -1,10 +1,32 @@ const abi = require("./abi.json"); -const { fetchURL } = require('../helper/utils') +const { ethers } = require("ethers"); const { sumTokens2 } = require('../helper/unwrapLPs') +function calculateSalt(chainId, nonce) { + return ethers.utils.solidityKeccak256(['uint256', 'uint256'], [chainId, nonce]) +} + +async function fetchTokenAddresses(api, chainId){ + if(chainId === 1 || chainId === 137 || chainId === 42161) { + return await api.fetchList({ + lengthAbi: abi.nonce, + itemAbi: "function computeTokenAddress(uint256) view returns (address)", + target: "0x93A43391978BFC0bc708d5f55b0Abe7A9ede1B91" + }) + }else if(chainId === 1101){ + const maxNonce = await api.call({ abi: abi.nonce, target: "0x24aC0938C010Fb520F1068e96d78E0458855111D" }) + return await api.multiCall({ + abi: "function computeTokenAddress(bytes32) view returns (address)", + calls: Array.from({length: maxNonce}, (_, i) => i ).map((i, v) => ({ target: "0x58ed1f4913e652baF17C154551bd8E9dbc73fC56", params: calculateSalt(chainId, v) })), + }) + } +} + async function tvl(_, _b, _cb, { api }) { const chainId = await api.getChainId() - const markets = (await fetchURL(`https://prod.clober-api.com/${chainId}/markets`)).data.markets.map((market) => market.address) + let tokenAddresses = await fetchTokenAddresses(api, chainId) + tokenAddresses = tokenAddresses.flat() + const markets = await api.multiCall({ abi: abi.market, calls: tokenAddresses }) const base = await api.multiCall({ abi: abi.baseToken, calls: markets}) const quote = await api.multiCall({ abi: abi.quoteToken, calls: markets}) const tokens = [base, quote].flat() From fc0ce59b40b8cb62f163174d8313214c080755bc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 20:04:49 +0200 Subject: [PATCH 0295/1354] minor fix --- projects/mango-farmers-club/index.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/projects/mango-farmers-club/index.js b/projects/mango-farmers-club/index.js index 756fd960c4..dc633f71d2 100644 --- a/projects/mango-farmers-club/index.js +++ b/projects/mango-farmers-club/index.js @@ -1,20 +1,17 @@ -const { default: BigNumber } = require('bignumber.js'); -const sdk = require("@defillama/sdk"); const { fetchURL } = require("../helper/utils"); -const { transformBalances } = require("../helper/portedTokens"); module.exports = { polygon_zkevm: { - staking: async () => { - const {output: stakingBalance} = await sdk.api.abi.call({ - abi: 'erc20:totalSupply', - target: "0xdd38211f2973dc41cd6fC4DB681596Fd6118D894", - chain: 'polygon_zkevm' + staking: async (_, _1, _2, { api }) => { + const stakingBalance = await api.call({ + abi: 'erc20:balanceOf', + target: '0x1fa03edb1b8839a5319a7d2c1ae6aae492342bad', + params: "0xdd38211f2973dc41cd6fC4DB681596Fd6118D894", }); const { price : mangoPrice } = (await fetchURL('https://prod.clober-api.com/1101/markets/0x1FC38BA10E741F357b1c8B69DC08eA654c21Ae37/trades?limit=1')).data.trades[0] - const balances = {} - sdk.util.sumSingleBalance(balances, "0x1fA03eDB1B8839a5319A7D2c1Ae6AAE492342bAD", BigNumber(stakingBalance).times(mangoPrice).div(1e18).toFixed(0)) - return transformBalances('polygon_zkevm', balances) + return { + tether: mangoPrice * stakingBalance /1e18 + } }, tvl: () => ({}) } From 84d35a99ebe5f8169fc7faf2a1dfdbc904f548c5 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 9 May 2023 19:35:21 +0100 Subject: [PATCH 0296/1354] update oasis --- projects/oasisswapdex/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/oasisswapdex/index.js b/projects/oasisswapdex/index.js index de4ee6efa2..e6c233fa8f 100644 --- a/projects/oasisswapdex/index.js +++ b/projects/oasisswapdex/index.js @@ -1,10 +1,16 @@ const { getUniTVL } = require('../helper/unknownTokens') +const { staking } = require('../helper/staking') +const sdk = require("@defillama/sdk") module.exports = { misrepresentedTokens: true, methodology: - "Factory address (0xbC467D80AD6401dC25B37EB86F5fcd048Ae4BF6d) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", + "Factory address (0x947D83b35Cd2e71df4aC7B359C6761B07d0bce19) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", arbitrum: { - tvl: getUniTVL({ factory: '0xbC467D80AD6401dC25B37EB86F5fcd048Ae4BF6d', chain: 'arbitrum', useDefaultCoreAssets: true }), + tvl: sdk.util.sumChainTvls([ + getUniTVL({ factory: '0xbC467D80AD6401dC25B37EB86F5fcd048Ae4BF6d', chain: 'arbitrum', useDefaultCoreAssets: true }), + getUniTVL({ factory: '0x947D83b35Cd2e71df4aC7B359C6761B07d0bce19', chain: 'arbitrum', useDefaultCoreAssets: true }), + ]), + staking: staking("0x73c1fb66b4e183bc101b98d4c17431b667d85958", "0x602eb0d99a5e3e76d1510372c4d2020e12eaea8a", "arbitrum") }, }; // node test.js projects/oasisswapdex/index.js \ No newline at end of file From e375b6522b77f7b701619dc50960881aecba4abb Mon Sep 17 00:00:00 2001 From: Axel Sly Date: Tue, 9 May 2023 15:50:42 -0400 Subject: [PATCH 0297/1354] Seashell GLPVault adapter --- projects/seashell/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/seashell/index.js diff --git a/projects/seashell/index.js b/projects/seashell/index.js new file mode 100644 index 0000000000..90163e31a6 --- /dev/null +++ b/projects/seashell/index.js @@ -0,0 +1,30 @@ +const sdk = require("@defillama/sdk"); +const { gmxExports } = require("../helper/gmx"); + +const SGLP_TOKEN = "0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf"; +const BLUEBERRY_GLP_COMPOUNDER_CONTRACT = + "0x5BAC5eEfA13696Cf815388021235b215587263Ea"; + +async function tvl(_, _1, _2, { api }) { + const balances = {}; + + const glpBalances = await api.call({ + abi: "erc20:balanceOf", + target: SGLP_TOKEN, + params: [BLUEBERRY_GLP_COMPOUNDER_CONTRACT], + }); + + await sdk.util.sumSingleBalance(balances, SGLP_TOKEN, glpBalances, api.chain); + + return balances; +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: "Total assets in Seashell's Blueberry GLP Compounder contract", + start: 66190371, + arbitrum: { + tvl, + }, +}; From 691b3fe2766869ebc6a155929c252b5ec13b1c8d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 21:59:01 +0200 Subject: [PATCH 0298/1354] add https://app.affinedefi.com/ --- projects/affine-defi/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/affine-defi/index.js diff --git a/projects/affine-defi/index.js b/projects/affine-defi/index.js new file mode 100644 index 0000000000..8646fb7788 --- /dev/null +++ b/projects/affine-defi/index.js @@ -0,0 +1,17 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +async function tvl(_, _b, _cb, { api, }) { + const vaults = ['0x829363736a5A9080e05549Db6d1271f070a7e224'] + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) + api.addTokens(tokens, bals) + const ownerTokens = [ + [['0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6'], '0x1F9b1057cd93fb2d07d18810903B791b56acc2E1'] + ] + return sumTokens2({ api, ownerTokens }) +} + +module.exports = { + doublecounted: true, + polygon: { tvl } +} \ No newline at end of file From efcafc72221aadd5d3e4fc2c9ceca0c8e2ac1b09 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 22:04:08 +0200 Subject: [PATCH 0299/1354] refactor seashell --- projects/seashell/index.js | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/projects/seashell/index.js b/projects/seashell/index.js index 90163e31a6..e78ce92610 100644 --- a/projects/seashell/index.js +++ b/projects/seashell/index.js @@ -1,30 +1,13 @@ -const sdk = require("@defillama/sdk"); -const { gmxExports } = require("../helper/gmx"); +const { sumTokensExport } = require("../helper/unwrapLPs"); const SGLP_TOKEN = "0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf"; const BLUEBERRY_GLP_COMPOUNDER_CONTRACT = "0x5BAC5eEfA13696Cf815388021235b215587263Ea"; -async function tvl(_, _1, _2, { api }) { - const balances = {}; - - const glpBalances = await api.call({ - abi: "erc20:balanceOf", - target: SGLP_TOKEN, - params: [BLUEBERRY_GLP_COMPOUNDER_CONTRACT], - }); - - await sdk.util.sumSingleBalance(balances, SGLP_TOKEN, glpBalances, api.chain); - - return balances; -} - module.exports = { - timetravel: true, - misrepresentedTokens: false, methodology: "Total assets in Seashell's Blueberry GLP Compounder contract", start: 66190371, arbitrum: { - tvl, + tvl: sumTokensExport({ owner: BLUEBERRY_GLP_COMPOUNDER_CONTRACT, tokens: [SGLP_TOKEN]}), }, }; From b333ddacc8c0b070a821064436f591415a991ed7 Mon Sep 17 00:00:00 2001 From: Zahnentferner Date: Tue, 9 May 2023 23:44:23 +0300 Subject: [PATCH 0300/1354] Add methodology and remove dead code. --- projects/djed-alliance/index.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/projects/djed-alliance/index.js b/projects/djed-alliance/index.js index 017c7edeb1..086cc715c3 100644 --- a/projects/djed-alliance/index.js +++ b/projects/djed-alliance/index.js @@ -6,11 +6,6 @@ const { transformBalances } = require('../helper/portedTokens'); const abi = require('./abi.json'); const config = require("./config.json"); -async function ergotvl() { - const {data: { confirmed }} = await utils.fetchURL('https://api.ergoplatform.com/api/v1/addresses/MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX/balance/total'); - return { ergo: confirmed.nanoErgs / 1e9 }; -} - async function tvl(chain, chainBlocks) { const balances = {}; @@ -18,17 +13,17 @@ async function tvl(chain, chainBlocks) { abi: abi.Djed.reserve, chain: chain, target: config.djedAddress[chain], params: [ 0 ], block: chainBlocks[chain], })).output; - //sdk.util.sumSingleBalance(balances, "mADA", reserve); - //sdk.util.sumSingleBalance(balances, "ADA", reserve); - //sdk.util.sumSingleBalance(balances, '0x000000000000000000000000000000000000BbBB', reserve); sdk.util.sumSingleBalance(balances, '0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9', reserve); - //sdk.util.sumSingleBalance(balances, '0x0000000000000000000000000000000000000000', reserve); - //return balances; return transformBalances(chain, balances); } +async function ergotvl() { + const {data: { confirmed }} = await utils.fetchURL('https://api.ergoplatform.com/api/v1/addresses/MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX/balance/total'); + return { ergo: confirmed.nanoErgs / 1e9 }; +} + module.exports = { - methodology: '', + methodology: 'The TVL of each Djed deployment is the reserve belonging to the deployment. The TVL within a given blockchain is the sum of the TVLs of all known Djed deployments within that blockchain. The total TVL is the sum of the Djed TVLs on all blockchains.', ergo:{ tvl: ergotvl }, From a00fc19b0cf2a73624faa38a79a08f30b7d63e2d Mon Sep 17 00:00:00 2001 From: Zahnentferner Date: Tue, 9 May 2023 23:48:11 +0300 Subject: [PATCH 0301/1354] Move magic number to config file --- projects/djed-alliance/config.json | 4 ++++ projects/djed-alliance/index.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/djed-alliance/config.json b/projects/djed-alliance/config.json index fbbea4a116..a3a6b9ecdc 100644 --- a/projects/djed-alliance/config.json +++ b/projects/djed-alliance/config.json @@ -2,5 +2,9 @@ "djedAddress": { "milkomeda": "0x67A30B399F5Ed499C1a6Bc0358FA6e42Ea4BCe76", "milkomeda_a1": "0x..." + }, + "reserveTokenAddress": { + "milkomeda": "0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9", + "milkomeda_a1": "0x..." } } \ No newline at end of file diff --git a/projects/djed-alliance/index.js b/projects/djed-alliance/index.js index 086cc715c3..b8ebf5224d 100644 --- a/projects/djed-alliance/index.js +++ b/projects/djed-alliance/index.js @@ -13,7 +13,7 @@ async function tvl(chain, chainBlocks) { abi: abi.Djed.reserve, chain: chain, target: config.djedAddress[chain], params: [ 0 ], block: chainBlocks[chain], })).output; - sdk.util.sumSingleBalance(balances, '0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9', reserve); + sdk.util.sumSingleBalance(balances, config.reserveTokenAddress[chain], reserve); // Using WADA address instead of mADA return transformBalances(chain, balances); } From 7a2a478e7bcd7c655f979df4a3cabb51016a37cc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 May 2023 23:11:24 +0200 Subject: [PATCH 0302/1354] fix bluemove dex (#6211) --- projects/bluemove-dex/index.js | 2 ++ projects/helper/chain/sui.js | 36 ++++++++++++++++++++++++++++------ projects/kriya-dex/index.js | 9 +-------- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/projects/bluemove-dex/index.js b/projects/bluemove-dex/index.js index 8603817d2d..4ec28198e6 100644 --- a/projects/bluemove-dex/index.js +++ b/projects/bluemove-dex/index.js @@ -7,6 +7,8 @@ module.exports = mergeExports([ poolStr: '::swap::Pool', token0Reserve: i => i.fields.reserve_x, token1Reserve: i => i.fields.reserve_y, + eventType: "0xb24b6789e088b876afabca733bed2299fbc9e2d6369be4d1acfa17d8145454d9::swap::Created_Pool_Event", + eventTransform: i => i.pool_id }), dexExport({ account: '0x5a7eca40df453efe6bb1feae99e5b8fc072d1252cbd1979eb187d625dc9b47c9', diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index 65856f24f2..9123b4f492 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -4,6 +4,7 @@ const sdk = require('@defillama/sdk') const http = require('../http') const env = require('../env') const { transformDexBalances } = require('../portedTokens') +const { sliceIntoChunks } = require('../utils') //https://docs.sui.io/sui-jsonrpc @@ -17,11 +18,26 @@ async function getObject(objectId) { }])).content } -async function queryEvents(queryObject) { - return call('suix_queryEvents', queryObject) +async function queryEvents({ eventType, transform = i => i }) { + let filter = {} + if (eventType) filter.MoveEventType = eventType + const items = [] + let cursor = null + do { + const { data , nextCursor, hasNextPage } = await call('suix_queryEvents', [filter, cursor], { withMetadata: true, }) + cursor = hasNextPage ? nextCursor : null + items.push(...data) + } while (cursor) + return items.map(i => i.parsedJson).map(transform) } async function getObjects(objectIds) { + if (objectIds.length > 49) { + const chunks = sliceIntoChunks(objectIds, 49) + const res = [] + for (const chunk of chunks) res.push(...(await getObjects(chunk))) + return res + } const { result } = await http.post(endpoint, { @@ -54,12 +70,12 @@ async function getDynamicFieldObjects({ parent, cursor = null, limit = 48, items return getDynamicFieldObjects({ parent, cursor: nextCursor, items, limit, idFilter, addedIds }) } -async function call(method, params) { +async function call(method, params, { withMetadata = false} = {}) { if (!Array.isArray(params)) params = [params] const { - result: { data } + result } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method, params, }) - return data + return withMetadata ? result : result.data } async function multiCall(calls) { @@ -74,6 +90,8 @@ function dexExport({ token1Reserve = i => i.fields.coin_y_reserve, getTokens = i => i.type.split('<')[1].replace('>', '').split(', '), isAMM = true, + eventType, + eventTransform, }) { return { timetravel: false, @@ -81,7 +99,13 @@ function dexExport({ sui: { tvl: async (_, _1, _2, { api }) => { const data = [] - let pools = await getDynamicFieldObjects({ parent: account, idFilter: i => poolStr ? i.objectType.includes(poolStr) : i }) + let pools + if (!eventType) { + pools = await getDynamicFieldObjects({ parent: account, idFilter: i => poolStr ? i.objectType.includes(poolStr) : i }) + } else { + pools = await queryEvents({ eventType, transform: eventTransform }) + pools = await getObjects(pools) + } sdk.log(`[sui] Number of pools: ${pools.length}`) pools.forEach(i => { const [token0, token1] = getTokens(i) diff --git a/projects/kriya-dex/index.js b/projects/kriya-dex/index.js index 6d8d90341a..7590c8fb94 100644 --- a/projects/kriya-dex/index.js +++ b/projects/kriya-dex/index.js @@ -2,15 +2,8 @@ const sui = require('../helper/chain/sui') const EVENT_FILTER = "0xa0eba10b173538c8fecca1dff298e488402cc9ff374f8a12ca7758eebe830b66::spot_dex::PoolCreatedEvent"; -async function getPoolIDs() { - const queryObject = { MoveEventType: EVENT_FILTER }; - const queryRes = await sui.queryEvents(queryObject); - const poolIds = queryRes.map((event) => event.parsedJson.pool_id); - return poolIds; -} - async function kriyaTVL(_, _1, _2, { api }) { - const poolIds = await getPoolIDs(); + const poolIds = await sui.queryEvents({ eventType: EVENT_FILTER, transform: i => i.pool_id}); const pools = await sui.getObjects(poolIds) pools.forEach(i => { const [token0, token1] = i.type.split('<')[1].replace('>', '').split(', ') From 670954b52021c11365c77de48f73f670beb072e3 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 9 May 2023 23:06:40 +0100 Subject: [PATCH 0303/1354] fix paraswap treasury --- projects/treasury/paraswap.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/treasury/paraswap.js b/projects/treasury/paraswap.js index 245d2ad2d9..419223ed1a 100644 --- a/projects/treasury/paraswap.js +++ b/projects/treasury/paraswap.js @@ -15,6 +15,18 @@ module.exports = treasuryExports({ nullAddress ], owners: [treasury, treasury2, vesting1, vesting2, vesting3, vesting4], - ownTokens: [PARA], + ownTokens: [PARA, "0xcb0e14e96f2cefa8550ad8e4aea344f211e5061d"], + }, + optimism: { + tokens: [ + "0x4200000000000000000000000000000000000042" + ], + owners: ["0xb8313eaf73aed8fea1d9930df199b3c1bdb67b47"], + }, + arbitrum: { + tokens: [ + "0x912ce59144191c1204e64559fe8253a0e49e6548" + ], + owners: ["0xfe98240ddAEDF78E278C28F1EdD690ee1a774e66"], }, }) \ No newline at end of file From 6f717d8d7cd567f99e9bef1fb1cd4c90c458c47f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 10 May 2023 00:45:12 +0100 Subject: [PATCH 0304/1354] add fpi --- projects/fpi/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/fpi/index.js diff --git a/projects/fpi/index.js b/projects/fpi/index.js new file mode 100644 index 0000000000..587b43b440 --- /dev/null +++ b/projects/fpi/index.js @@ -0,0 +1,20 @@ +const frax = "0x853d955acef822db058eb8505911ed77f175b99e" +const fxs = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0" + +async function tvl(_, _b, _cb, { api, erc20 }){ + const balances = {} + // owner 0x6a7efa964cf6d9ab3bc3c47ebddb853a8853c502 + const lpOwned = await api.call({ abi: "function totalBalanceOf(address) view returns (uint256)", target:"0x7287488f8df7dddc5f373142d4827aaf92aac845", params: ["0x921852ba77cbceaa29e986e45ef2207f6e664df2"] }) + const supply = await api.call({ abi: "function totalSupply() view returns (uint256)", target:"0xdb7cbbb1d5d5124f86e92001c9dfdc068c05801d" }) + const fraxInPool = await api.call({ abi: "function balanceOf(address) view returns (uint256)", params:["0xf861483fa7e511fbc37487d91b6faa803af5d37c"], target: frax }) + balances[frax] = lpOwned/supply * fraxInPool + balances[fxs] = await api.call({ abi: "function balanceOf(address) view returns (uint256)", params:["0x6a7efa964cf6d9ab3bc3c47ebddb853a8853c502"], target: fxs }) + + return balances +} + +module.exports={ + ethereum:{ + tvl + } +} \ No newline at end of file From 16aadf54376e3ff66bfdc5c1220b9dafc2ad3563 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 10 May 2023 00:50:19 +0100 Subject: [PATCH 0305/1354] fix aragon treasury --- projects/treasury/aragon.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/treasury/aragon.js b/projects/treasury/aragon.js index 09b79f7877..83fcf30200 100644 --- a/projects/treasury/aragon.js +++ b/projects/treasury/aragon.js @@ -23,8 +23,10 @@ module.exports = treasuryExports({ '0x24cCeDEBF841544C9e6a62Af4E8c2fA6e5a46FdE',//BlueSparrow '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA '0xaC9Bb427953aC7FDDC562ADcA86CF42D988047Fd',//STT + "0x0f5d2fb29fb7d3cfee444a200298f468908cc942",//MANA + "0xdac17f958d2ee523a2206206994597c13d831ec7",//USDT ], - owners: [aragonTreasury], + owners: [aragonTreasury, "0x7ecd1eac2a07974bcbabafee44b5cc44ceee9540", "0xcafe1a77e84698c83ca8931f54a755176ef75f2c"], ownTokens: [ANT, ANT_ETH_LP], }, }) \ No newline at end of file From d3d31a45ee3b9e1d238519451d931b97f42be0a9 Mon Sep 17 00:00:00 2001 From: Holdstation <104961349+holdstation@users.noreply.github.com> Date: Wed, 10 May 2023 10:41:51 +0700 Subject: [PATCH 0306/1354] Add holdstation tvl --- projects/holdstation/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/holdstation/index.js diff --git a/projects/holdstation/index.js b/projects/holdstation/index.js new file mode 100644 index 0000000000..57be6dcc0a --- /dev/null +++ b/projects/holdstation/index.js @@ -0,0 +1,14 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const vault = "0xaf08a9d918f16332F22cf8Dc9ABE9D9E14DdcbC2"; +const usdc = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; + +async function tvl(_, _b, _cb, { api }) { + return sumTokens2({ api, tokens: [usdc], owners: [vault] }); +} + +module.exports = { + era: { + tvl, + }, +}; From 5072f132394d28b532aa4ebc61cac2ab92c7723a Mon Sep 17 00:00:00 2001 From: Elliot Shiu Date: Tue, 9 May 2023 23:21:40 -0700 Subject: [PATCH 0307/1354] sommelier: add DeFi Stars cellar --- projects/sommelier/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index bb1ac6aa41..afcd40b22d 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -25,9 +25,11 @@ const cellarsV0816 = [ const REAL_YIELD_USD = "0x97e6e0a40a3d02f12d1cec30ebfbae04e37c119e"; const REAL_YIELD_ETH = "0xb5b29320d2dde5ba5bafa1ebcd270052070483ec"; +const DEFI_STARS = "0x03df2a53cbed19b824347d6a45d09016c2d1676a"; const cellarsV2 = [ { id: REAL_YIELD_USD, startBlock: 16431804 }, { id: REAL_YIELD_ETH, startBlock: 16986127 }, + { id: DEFI_STARS, startBlock: 17181497 }, ]; async function tvl(timestamp, block, chainBlocks, { api }) { From 81f56998c4f98b8049e2d44df2528d982e0e2849 Mon Sep 17 00:00:00 2001 From: happywomwom-wombat <129473631+happywomwom-wombat@users.noreply.github.com> Date: Wed, 10 May 2023 14:30:49 +0800 Subject: [PATCH 0308/1354] Wombat: update pool launch infos for 10/5 (#6214) * rename and remove bnb pools, add arb pools * fix addresses --- projects/wombat-exchange/config.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 5412d25218..6568e30589 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -13,15 +13,17 @@ module.exports = { BNBx: "0x8df1126de13bcfef999556899F469d64021adBae", stkBNB: "0xB0219A90EF6A24a237bC038f7B7a6eAc5e01edB0", iUSD: "0x277E777F7687239B092c8845D4d2cd083a33C903", - CUSD: "0x4dFa92842d05a790252A7f374323b9C86D7b7E12", axlUSDC: "0x8ad47d7ab304272322513eE63665906b64a49dA2", USDD: "0x05f727876d7C123B9Bb41507251E2Afd81EAD09A", BOB: "0xeA6cDd9e8819BbF7f8791E7D084d9F0a6Afa7892", frxETH: "0x2Ea772346486972E7690219c190dAdDa40Ac5dA4", - overnight: "0x9498563e47D7CFdFa22B818bb8112781036c201C", // USD+ pool + stableGuildPool: "0x9498563e47D7CFdFa22B818bb8112781036c201C", // USD+ pool mim: "0xb8b1b72a9b9ba90e2539348fec1ad6b265f9f684", ankrBNB: "0x6f1c689235580341562cdc3304e923cc8fad5bfa", bnby: "0xbed9B758A681d73a95Ab4c01309C63aa16297b80", + smartHAY: "0xa61dccC6c6E34C8Fbf14527386cA35589e9b8C27", + wBETH: "0x8b892b6Ea1d0e5B29b719d6Bd6eb9354f1cDE060", + ankrETH: "0x1b507b97c89eDE3E40d1b2Ed92972197c6276D35", }, }, arbitrum: { @@ -37,6 +39,7 @@ module.exports = { frax: "0x4a8686df475D4c44324210FFA3Fc1DEA705296e0", // FRAX-MAI-USD+ bob: "0x917caF2b4D6040a9D67A5F8CEfC4F89d1b214c1A", mim: "0x29eeB257a2A6eCDE2984aCeDF80A1B687f18eC91", + jUSDC: "0xc7a6bA5F28993BaDb566007bD2E0CB253c431974", }, }, hallmarks: [ From 209f21cc0de5ea27ba9ae1ab33b844cc14f2e0b6 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Tue, 9 May 2023 23:34:02 -0700 Subject: [PATCH 0309/1354] Update Gamma Adapter for Polygon zkEVM attempt #2 (#6216) * Update Gamma Adapter (BSC) Updated Gamma adapter to include BSC and both Uniswap and Thena integrations. * Update Gamma Adapter for Polygon zkEVM * Update index.js --- projects/visor/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/visor/index.js b/projects/visor/index.js index 6c75ef1154..2fd9df1ffb 100644 --- a/projects/visor/index.js +++ b/projects/visor/index.js @@ -22,6 +22,8 @@ const HYPE_REGISTRY = { "0x0Ac4C7b794f3D7e7bF1093A4f179bA792CF15055", // Uniswap "0xAeC731F69Fa39aD84c7749E913e3bC227427Adfd", // Quickswap ], + polygon_zkevm: ["0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", // Quickswap + ], optimism: ["0xF5BFA20F4A77933fEE0C7bB7F39E7642A070d599"], arbitrum: [ "0x66CD859053c458688044d816117D5Bdf42A56813", // Uniswap @@ -123,6 +125,9 @@ module.exports = { polygon: { tvl: tvlWrapper, }, + polygon_zkevm: { + tvl: tvlWrapper, + }, optimism: { tvl: tvlWrapper, }, From e074ede4152e1fe7e83ce4da7111504b028f2005 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 May 2023 12:09:49 +0200 Subject: [PATCH 0310/1354] Affine-defi (#6220) * Add an sdk adapter for our alpSave token * use correct tokens on polygon baskets and add eth baskets * rename folder to prevent duplicates * minor fix --------- Co-authored-by: kiwi0401 --- projects/affine-defi/index.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/projects/affine-defi/index.js b/projects/affine-defi/index.js index 8646fb7788..a05aa0b552 100644 --- a/projects/affine-defi/index.js +++ b/projects/affine-defi/index.js @@ -11,7 +11,18 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, ownerTokens }) } +async function ethTvl(_, _b, _cb, { api, }) { + const ethBaskets = [ + '0x61A18EE9d6d51F838c7e50dFD750629Fd141E944', '0x78Bb94Feab383ccEd39766a7d6CF31dED177Ad0c', '0x72D51B2233c5feA8a702FDd0E51B0adE95638f2c' + ] + const tokens = await api.multiCall({ abi: 'address:asset', calls: ethBaskets }) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: ethBaskets }) + api.addTokens(tokens, bals) +} + module.exports = { doublecounted: true, - polygon: { tvl } -} \ No newline at end of file + methodology: 'Counts the tokens in the Affine baskets', + polygon: { tvl }, + ethereum: { tvl: ethTvl } +} From 65b5288f6256484c2816696b6e332625cc3db488 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 11:35:11 +0100 Subject: [PATCH 0311/1354] airswap treasury --- projects/treasury/airswap.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/treasury/airswap.js diff --git a/projects/treasury/airswap.js b/projects/treasury/airswap.js new file mode 100644 index 0000000000..ada4261a81 --- /dev/null +++ b/projects/treasury/airswap.js @@ -0,0 +1,19 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x24b4ce3ad4366b73f839c1b1fd11d1f636514534"; +const treasury2 = "0x8e5a68a73470c07d043b57d0751fba8b0315c12c"; +const treasury3 = "0xf8bb149f9525875fa47b8cc632d368eb600faba3"; + +const AST = "0x27054b13b1b798b345b591a4d22e6562d47ea75a" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "0x4Fabb145d64652a948d72533023f6E7A623C7C53" + ], + owners: [treasury, treasury2, treasury3], + ownTokens: [AST], + }, +}) \ No newline at end of file From 516b1dce13abd1740812129fa68b1f0d1bc2880e Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 11:45:08 +0100 Subject: [PATCH 0312/1354] add missing treasury address balancer --- projects/treasury/balancer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/treasury/balancer.js b/projects/treasury/balancer.js index 96a4c60ab5..414f4ee01f 100644 --- a/projects/treasury/balancer.js +++ b/projects/treasury/balancer.js @@ -1,6 +1,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const eth = "0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f"; +const eth2 = "0xb129f73f1afd3a49c701241f374db17ae63b20eb" const polygon = "0xd2bD536ADB0198f74D5f4f2Bd4Fe68Bae1e1Ba80"; const arbitrum = "0x6207ed574152496c9B072C24FD87cE9cd9E17320"; const optimism = "0x043f9687842771b3dF8852c1E9801DCAeED3f6bc"; @@ -23,7 +24,7 @@ module.exports = treasuryExports({ "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE ], - owners: [eth], + owners: [eth, eth2], ownTokens: [bal, abal], }, arbitrum: { From 37a8f9e1c9cf4c97c0239f6602bd261f349331a5 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 11:58:38 +0100 Subject: [PATCH 0313/1354] add bancor treasury --- projects/treasury/bancor.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/treasury/bancor.js diff --git a/projects/treasury/bancor.js b/projects/treasury/bancor.js new file mode 100644 index 0000000000..40a94881de --- /dev/null +++ b/projects/treasury/bancor.js @@ -0,0 +1,37 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const treasury = "0x649765821D9f64198c905eC0B2B037a4a52Bc373"; + +const BNT = "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C" +const vBNT = "0x48Fb253446873234F2fEBbF9BdeAA72d9d387f94" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0x967da4048cD07aB37855c090aAF366e4ce1b9F48", + "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", + "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", + "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", + "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", + "0x408e41876cCCDC0F92210600ef50372656052a38", + "0x1559FA1b8F28238FD5D76D9f434ad86FD20D1559", + "0xa1faa113cbE53436Df28FF0aEe54275c13B40975", + "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", + "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", + "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "0x0f71B8De197A1C84d31de0F1fA7926c365F052B3", + "0xBC19712FEB3a26080eBf6f2F7849b417FdD792CA", + "0xc00e94Cb662C3520282E6f5717214004A7f26888", + "0x0d438F3b5175Bebc262bF23753C1E53d03432bDE", + "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", + "0x6710c63432A2De02954fc0f851db07146a6c0312", + "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9" + ], + owners: [treasury], + ownTokens: [BNT, vBNT], + }, +}) From 1e3685ada87e036b9bc614e6cc78c1dd177a7a27 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 12:01:42 +0100 Subject: [PATCH 0314/1354] add wbtc to bancor --- projects/treasury/bancor.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/treasury/bancor.js b/projects/treasury/bancor.js index 40a94881de..55d26031f2 100644 --- a/projects/treasury/bancor.js +++ b/projects/treasury/bancor.js @@ -29,7 +29,8 @@ module.exports = treasuryExports({ "0x0d438F3b5175Bebc262bF23753C1E53d03432bDE", "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", "0x6710c63432A2De02954fc0f851db07146a6c0312", - "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9" + "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" ], owners: [treasury], ownTokens: [BNT, vBNT], From 8d6e291add0603a2a18089b92f21ddcb20aa4f3e Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 12:22:28 +0100 Subject: [PATCH 0315/1354] add missing treasury + tokens compound --- projects/treasury/compound.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/treasury/compound.js b/projects/treasury/compound.js index 8b092348fa..ce3cb02fe6 100644 --- a/projects/treasury/compound.js +++ b/projects/treasury/compound.js @@ -1,6 +1,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B"; +const treasury2 = "0x6d903f6003cca6255d85cca4d3b5e5146dc33925" const vestingAddress = "0x2775b1c75658Be0F640272CCb8c72ac986009e38"; const COMP = "0xc00e94Cb662C3520282E6f5717214004A7f26888"; @@ -12,8 +13,13 @@ module.exports = treasuryExports({ '0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9',//cUSDT '0xE41d2489571d322189246DaFA5ebDe1F4699F498',//zrx '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC + '0xc00e94Cb662C3520282E6f5717214004A7f26888', + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', + '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', + '0x6B175474E89094C44Da98b954EedeAC495271d0F' ], - owners: [treasury, vestingAddress], + owners: [treasury, vestingAddress, treasury2], ownTokens: [COMP], }, }) \ No newline at end of file From 7b37bb37127ac778d264eca1b9ccda234eb7f41c Mon Sep 17 00:00:00 2001 From: "semyon.zhulikov" Date: Wed, 10 May 2023 14:25:47 +0300 Subject: [PATCH 0316/1354] add btc wallet --- projects/latoken/index.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/projects/latoken/index.js b/projects/latoken/index.js index 46f9c84057..7562e8ae52 100644 --- a/projects/latoken/index.js +++ b/projects/latoken/index.js @@ -1,6 +1,12 @@ const { cexExports } = require("../helper/cex"); const config = { + bitcoin: { + owners: [ + "bc1q48amr6l7dvacdppgucvnswwuyleaqh4dus8z8h", + "bc1q2cgh9nxn7cqmqhk4hc5fu6mju8nzy9a20qqqh8" //cold + ] + }, ethereum: { owners: [ "0x8D056D457a52c4dAF71CEf45F540a040c143Ea05", //eth hot wallet @@ -49,9 +55,9 @@ const config = { "0xd76D939B455743e96adbCdf800627b11F3446780", //token swap wallet ], }, - celo: { - owners: ["0xEeC02a6D1a7F9f534b9609c8EE30B9cF9A7fe1B3"], - }, + // celo: { + // owners: ["0xEeC02a6D1a7F9f534b9609c8EE30B9cF9A7fe1B3"], + // }, elrond: { owners: ["erd1z5xjeu4xw32jkckhj9jpc9dymj6a9h8yxtch96e43ncp6fhuzpnqshqutj"], }, @@ -70,6 +76,9 @@ const config = { "0xE69963CE13ED742639C8287913682bC008B3e622", //hot wallet ], }, + lachain: { + owners: ["0xEFf6E17Fdc68d56812DA40f7d05FC8cDfd212440"], + }, // filecoin: { // owners: ["f1iy5dvp6ggzhtraxodbfdkbiw5s67mhff4w43pai"], //hot wallet // }, From 0c1f0aec7a46b2cc4f22e656b69f4f069dd998de Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 12:29:19 +0100 Subject: [PATCH 0317/1354] add missing tokens + treasury cyrptex --- projects/treasury/cryptex.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/treasury/cryptex.js b/projects/treasury/cryptex.js index 8b9b47ec0a..9b9e117355 100644 --- a/projects/treasury/cryptex.js +++ b/projects/treasury/cryptex.js @@ -2,6 +2,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryARB = "0x9474b771fb46e538cfed114ca816a3e25bb346cf"; const treasuryETH = "0xa54074b2cc0e96a43048d4a68472F7F046aC0DA8" +const treasury2 = "0xa70b638B70154EdfCbb8DbbBd04900F328F32c35" const ctx = "0x321C2fE4446C7c963dc41Dd58879AF648838f98D" module.exports = treasuryExports({ arbitrum: { @@ -13,8 +14,10 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "0x514910771AF9Ca656af840dff83E8264EcF986CA" ], - owners: [treasuryETH], + owners: [treasuryETH, treasury2], ownTokens: [ctx], }, From 3a2b6d01e6d0c505561f36ab376b9d9513afb0c7 Mon Sep 17 00:00:00 2001 From: "semyon.zhulikov" Date: Wed, 10 May 2023 14:36:51 +0300 Subject: [PATCH 0318/1354] disable lachain --- projects/latoken/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/latoken/index.js b/projects/latoken/index.js index 7562e8ae52..5df3beb800 100644 --- a/projects/latoken/index.js +++ b/projects/latoken/index.js @@ -76,9 +76,9 @@ const config = { "0xE69963CE13ED742639C8287913682bC008B3e622", //hot wallet ], }, - lachain: { - owners: ["0xEFf6E17Fdc68d56812DA40f7d05FC8cDfd212440"], - }, + // lachain: { + // owners: ["0xEFf6E17Fdc68d56812DA40f7d05FC8cDfd212440"], + // }, // filecoin: { // owners: ["f1iy5dvp6ggzhtraxodbfdkbiw5s67mhff4w43pai"], //hot wallet // }, From 17744b56b87f82924a78951912f49625dcb2ec94 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 12:56:11 +0100 Subject: [PATCH 0319/1354] treasury ease.org --- projects/treasury/ease-org.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/treasury/ease-org.js diff --git a/projects/treasury/ease-org.js b/projects/treasury/ease-org.js new file mode 100644 index 0000000000..f3a8bc9ec7 --- /dev/null +++ b/projects/treasury/ease-org.js @@ -0,0 +1,18 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x1f28ed9d4792a567dad779235c2b766ab84d8e33"; +const EASE = "0xEa5eDef1287AfDF9Eb8A46f9773AbFc10820c61c"; + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + '0x6B175474E89094C44Da98b954EedeAC495271d0F', + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + '0x7CA51456b20697A0E5Be65e5AEb65dfE90f21150', + '0x43632E3448cd47440fEE797258081414D91A58cE', + ], + owners: [treasury], + ownTokens: [EASE], + }, + }) \ No newline at end of file From 3f058ee50952f3ee1ac411d4bb658e086f18795c Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 13:13:53 +0100 Subject: [PATCH 0320/1354] forth-dao treasury --- projects/treasury/forth-dao.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/treasury/forth-dao.js diff --git a/projects/treasury/forth-dao.js b/projects/treasury/forth-dao.js new file mode 100644 index 0000000000..7e68146cd6 --- /dev/null +++ b/projects/treasury/forth-dao.js @@ -0,0 +1,22 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x223592a191ecfc7fdc38a9256c3bd96e771539a9"; +const treasury2 = "0x77fba179c79de5b7653f68b5039af940ada60ce0" +const FORTH = "0x77FbA179C79De5B7653F68b5039Af940AdA60ce0"; +const AMPL ="0xD46bA6D942050d489DBd938a2C909A5d5039A161" +const LP = "0xc5be99A02C6857f9Eac67BbCE58DF5572498F40c" + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',//usdc + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth + '0xBcca60bB61934080951369a648Fb03DF4F96263C',//ausdc + '0xc944E90C64B2c07662A292be6244BDf05Cda44a7' + ], + owners: [treasury, treasury2], + ownTokens: [FORTH, AMPL, LP], + }, +}) \ No newline at end of file From 6ae9c4f1e328c3148dc76b610301a2717f1856ac Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 13:21:31 +0100 Subject: [PATCH 0321/1354] add missing addresses to gnosis-dao --- projects/treasury/gnosis-dao.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index 46bef8d67b..017a25e248 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -6,6 +6,8 @@ const treasury2 = "0x849D52316331967b6fF1198e5E32A0eB168D039d"; const treasury3= "0xBc79855178842FDBA0c353494895DEEf509E26bB"; const vestingAddress = "0x849d52316331967b6ff1198e5e32a0eb168d039d"; const GNO= "0x6810e776880C02933D47DB1b9fc05908e5386b96"; +const LP = "0x6256518aE9a97C408a03AAF1A244989Ce6B937F6" +const LP2 = "0x228054e9c056F024FC724F515A2a8764Ae175ED6" module.exports = treasuryExports({ @@ -31,8 +33,10 @@ module.exports = treasuryExports({ '0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb',//INST '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32',//LDO + '0x1982b2F5814301d4e9a8b0201555376e62F82428', + "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f" ], owners: [treasury, treasury1, treasury2, treasury3, vestingAddress], - ownTokens: [GNO], + ownTokens: [GNO, LP, LP2], }, }) \ No newline at end of file From 764f92ade4d4e0ce7f4eb32975ec765b952efebd Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 13:36:56 +0100 Subject: [PATCH 0322/1354] add tokens and wallets index coop --- projects/treasury/index-coop.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/projects/treasury/index-coop.js b/projects/treasury/index-coop.js index 37feb88fa9..1b9670b233 100644 --- a/projects/treasury/index-coop.js +++ b/projects/treasury/index-coop.js @@ -1,7 +1,9 @@ const { Indexed } = require("ethers/lib/utils"); const { nullAddress,treasuryExports } = require("../helper/treasury"); -const indexTreasury = "0x9467cfADC9DE245010dF95Ec6a585A506A8ad5FC"; +const treasury = "0x9467cfADC9DE245010dF95Ec6a585A506A8ad5FC"; +const treasury2 = "0x462a63d4405a6462b157341a78fd1babfd3f8065" +const treasury3 = "0xfafd604d1cc8b6b3b6cc859cf80fd902972371c1" const INDEX = "0x0954906da0Bf32d5479e25f46056d22f08464cab"; @@ -11,8 +13,17 @@ module.exports = treasuryExports({ tokens: [ nullAddress, '0x5aFE3855358E112B5647B952709E6165e1c1eEEe',//SAFE + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + '0x6B175474E89094C44Da98b954EedeAC495271d0F', + '0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84', + '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd', + '0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD', + '0x39AA39c021dfbaE8faC545936693aC917d5E7563', + '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ], - owners: [indexTreasury], + owners: [treasury, treasury2, treasury3], ownTokens: [INDEX], }, }) \ No newline at end of file From 5b252e04e46a9e983829bf3d436c93a2cc7ac001 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 14:18:20 +0100 Subject: [PATCH 0323/1354] add treasury and tokens instadap --- projects/treasury/instadapp.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/projects/treasury/instadapp.js b/projects/treasury/instadapp.js index 6b349fd6d7..747a2b96ce 100644 --- a/projects/treasury/instadapp.js +++ b/projects/treasury/instadapp.js @@ -1,6 +1,9 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0xf81ab897e3940e95d749ff2e1f8d38f9b7cbe3cf"; +const treasuryETH = "0x28849d2b63fa8d361e5fc15cb8abb13019884d09" + +const INST = "0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb" module.exports = treasuryExports({ arbitrum: { @@ -12,4 +15,18 @@ module.exports = treasuryExports({ ], owners: [Treasury], }, + ethereum: { + tokens: [ + nullAddress, + "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "0xdAC17F958D2ee523a2206206994597C13D831ec7" + ], + owners: [treasuryETH], + ownTokens: [INST], + }, }) \ No newline at end of file From a80c08feb2940eb60b8b855e75ccc6030f71cd85 Mon Sep 17 00:00:00 2001 From: "semyon.zhulikov" Date: Wed, 10 May 2023 17:05:11 +0300 Subject: [PATCH 0324/1354] add btc address --- projects/latoken/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/latoken/index.js b/projects/latoken/index.js index 5df3beb800..fe04fb0fe9 100644 --- a/projects/latoken/index.js +++ b/projects/latoken/index.js @@ -4,7 +4,8 @@ const config = { bitcoin: { owners: [ "bc1q48amr6l7dvacdppgucvnswwuyleaqh4dus8z8h", - "bc1q2cgh9nxn7cqmqhk4hc5fu6mju8nzy9a20qqqh8" //cold + "bc1q2cgh9nxn7cqmqhk4hc5fu6mju8nzy9a20qqqh8", //cold + "bc1qw5fc9ml9vm4xq5c6xkcdu3vtwyw4gdn8lw0uwq" ] }, ethereum: { From 536065ce19f76dcfe81417635bd47bc71c7aee32 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Wed, 10 May 2023 23:50:16 +0800 Subject: [PATCH 0325/1354] Add solv v3 (#6219) * solv-protocal update v2 add v3 * try catch error * solv: code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hadouken-fi-dex/index.js | 5 +- projects/helper/cache.js | 24 ++++- projects/helper/utils/graphql.js | 8 ++ projects/solv-protocol/abi.json | 7 ++ projects/solv-protocol/index.js | 161 ++++++++++++++++++------------ 5 files changed, 136 insertions(+), 69 deletions(-) create mode 100644 projects/helper/utils/graphql.js create mode 100644 projects/solv-protocol/abi.json diff --git a/projects/hadouken-fi-dex/index.js b/projects/hadouken-fi-dex/index.js index d4b4ad1a0c..93e8eaa056 100644 --- a/projects/hadouken-fi-dex/index.js +++ b/projects/hadouken-fi-dex/index.js @@ -1,5 +1,5 @@ -const { GraphQLClient } = require("graphql-request") const { sumTokens2 } = require('../helper/unwrapLPs') +const { cachedGraphQuery } = require("../helper/cache") const endpoint = "https://graph-multi-http-hadouken.hadouken.finance/subgraphs/name/balancer-mainnet" @@ -8,8 +8,7 @@ const query = `query { }` async function tvl(_, _b, _cb, { api, }) { - const graphQLClient = new GraphQLClient(endpoint) - const { tokens } = await graphQLClient.request(query) + const { tokens } = await cachedGraphQuery('haduken-fi-dex', endpoint, query) return sumTokens2({ api, owner: '0x4f8bdf24826ebcf649658147756115ee867b7d63', tokens: tokens .filter(i => !i.symbol.startsWith('HDK-')) diff --git a/projects/helper/cache.js b/projects/helper/cache.js index 887b4932bc..7ce6fc4d55 100644 --- a/projects/helper/cache.js +++ b/projects/helper/cache.js @@ -2,6 +2,7 @@ const aws = require('aws-sdk') const sdk = require('@defillama/sdk') const Bucket = "tvl-adapter-cache"; const axios = require('axios') +const graphql = require('./utils/graphql') function getKey(project, chain) { return `cache/${project}/${chain}.json` @@ -87,6 +88,27 @@ async function configPost(project, endpoint, data) { } } + +async function cachedGraphQuery(project, endpoint, query, { variables } = {}) { + if (!project || !endpoint) throw new Error('Missing parameters') + const key = 'config-cache' + const cacheKey = getKey(key, project) + if (!configCache[cacheKey]) configCache[cacheKey] = _cachedGraphQuery() + return configCache[cacheKey] + + async function _cachedGraphQuery() { + try { + const json = await graphql.request(endpoint, query, { variables }) + await setCache(key, project, json) + return json + } catch (e) { + // sdk.log(e) + sdk.log(project, 'tryng to fetch from cache, failed to fetch data from endpoint:', endpoint) + return getCache(key, project) + } + } +} + module.exports = { - getCache, setCache, getConfig, configPost, + getCache, setCache, getConfig, configPost, cachedGraphQuery, } \ No newline at end of file diff --git a/projects/helper/utils/graphql.js b/projects/helper/utils/graphql.js new file mode 100644 index 0000000000..88400d8efa --- /dev/null +++ b/projects/helper/utils/graphql.js @@ -0,0 +1,8 @@ +const axios = require("axios"); + +async function request(endpoint, query, { variables, withMetadata = false } = {}) { + const { data: result } = await axios.post(endpoint, { query, variables }) + return withMetadata ? result : result.data +} + +module.exports = { request } \ No newline at end of file diff --git a/projects/solv-protocol/abi.json b/projects/solv-protocol/abi.json new file mode 100644 index 0000000000..a7d28aec89 --- /dev/null +++ b/projects/solv-protocol/abi.json @@ -0,0 +1,7 @@ +{ + "concrete": "address:concrete", + "slotTotalValue": "function slotTotalValue(uint256 slot_) view returns (uint256)", + "slotBaseInfo": "function slotBaseInfo(uint256 slot_) view returns (tuple(address issuer, address currency, uint64 valueDate, uint64 maturity, uint64 createTime, bool transferable, bool isValid))", + "decimals": "uint8:decimals", + "balanceOf": "function balanceOf(address _owner) view returns (uint256 balance)" +} \ No newline at end of file diff --git a/projects/solv-protocol/index.js b/projects/solv-protocol/index.js index bb0e680875..2bd0327c29 100644 --- a/projects/solv-protocol/index.js +++ b/projects/solv-protocol/index.js @@ -1,84 +1,115 @@ -const { sumTokens, } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking'); -const { getChainTransform } = require("../helper/portedTokens"); -const { getConfig } = require('../helper/cache') +const { default: BigNumber } = require("bignumber.js"); +const abi = require("./abi.json"); +const { getConfig, cachedGraphQuery } = require("../helper/cache"); +const { sumTokens2 } = require("../helper/unwrapLPs"); // token list const tokenListsApiEndpoint = "https://token-list.solv.finance/vouchers-prod.json" -// Staking Tvls -const solvEthereumTokenAddress = '0x256F2d67e52fE834726D2DDCD8413654F5Eb8b53' -const solvEthereumPoolAddress = '0x7D0C93DcAD6f6B38C81431d7262CF0E48770B81a' -const solvBscTokenAddress = '0xC073c4eD65622A9423b5e5BDe2BFC8B81EBC471c' -const solvBscPoolAddress = '0xE5742912EDb4599779ACC1CE2acB6a06E01f1089' - -const ethereumTVL = async (timestamp, block, chainBlocks) => { - const transform = await getChainTransform('ethereum'); - return tvl(timestamp, block, chainBlocks, "ethereum", 1, transform); +// The Graph +const graphUrlList = { + ethereum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-prod/v0.0.1', + bsc: 'https://api.thegraph.com/subgraphs/name/slov-payable/solv-v3-earn-factory', + arbitrum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-arbitrum/v0.0.1', } -const polygonTVL = async (timestamp, block, chainBlocks) => { - const transform = await getChainTransform('polygon'); - return tvl(timestamp, block, chainBlocks, "polygon", 137, transform); +async function tvl() { + const { api } = arguments[3] + const chainId = api.getChainId() + const tokens = await tokenList(chainId); + await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), ignoreFailed: true }) + await graphEarn(api) } -const arbitrumTVL = async (timestamp, block, chainBlocks) => { - const transform = await getChainTransform('arbitrum'); - return tvl(timestamp, block, chainBlocks, "arbitrum", 42161, transform); -}; - -const bscTVL = async (timestamp, block, chainBlocks) => { - const transform = await getChainTransform('bsc'); - return tvl(timestamp, block, chainBlocks, "bsc", 56, transform); -}; - -async function tvl(timestamp, block, chainBlocks, network, chainId, transform) { - let balances = {}; // Setup the balances object - const tokens = await tokenList(chainId); - let tokenPairs = [] - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - tokenPairs.push([ - token.address, - token.pool - ]) - } +async function graphEarn(api) { + const network = api.chain + if (!graphUrlList[network]) return; + const slots = await getSlot(api.timestamp, network); + + const concretes = await concrete(slots, api); + + const totalValues = await api.multiCall({ + abi: abi.slotTotalValue, + calls: slots.map((index) => ({ + target: concretes[index.contractAddress], + params: [index.slot] + })), + }) - await sumTokens(balances, tokenPairs, chainBlocks[network], network, transform) + const baseInfos = await api.multiCall({ + abi: abi.slotBaseInfo, + calls: slots.map((index) => ({ + target: concretes[index.contractAddress], + params: [index.slot] + })), + }) - return balances; + const decimalList = await api.multiCall({ + abi: abi.decimals, + calls: baseInfos.map(i => i[1]), + }) + + for (let i = 0; i < totalValues.length; i++) { + const decimals = decimalList[i]; + const balance = BigNumber(totalValues[i]).div(BigNumber(10).pow(18 - decimals)).toNumber(); + api.add(baseInfos[i][1], balance) + } } async function tokenList(chainId) { - let tokens = []; - const allTokens = (await getConfig('solv-protocol', tokenListsApiEndpoint)).tokens; - for (let token of allTokens) { - if (chainId == token.chainId) { - if (token.extensions.voucher.underlyingToken && token.extensions.voucher.underlyingToken.symbol != "SOLV") { - tokens.push({ - address: token.extensions.voucher.underlyingToken.address, - pool: token.extensions.voucher.vestingPool - }) - } + let tokens = []; + const allTokens = (await getConfig('solv-protocol', tokenListsApiEndpoint)).tokens; + for (let token of allTokens) { + if (chainId == token.chainId) { + if (token.extensions.voucher.underlyingToken != undefined) { + if (token.extensions.voucher.underlyingToken.symbol != "SOLV" && token.extensions.voucher.underlyingToken.symbol.indexOf("_") == -1) { + tokens.push({ + address: token.extensions.voucher.underlyingToken.address, + pool: token.extensions.voucher.vestingPool + }) } + } } + } - return tokens; + return tokens; } -// node test.js projects/solv-protocol/index.js -module.exports = { - ethereum: { - tvl: ethereumTVL, - staking: staking(solvEthereumPoolAddress, solvEthereumTokenAddress) - }, - bsc: { - tvl: bscTVL, - staking: staking(solvBscPoolAddress, solvBscTokenAddress, "bsc") - }, - polygon: { - tvl: polygonTVL - }, - arbitrum: { - tvl: arbitrumTVL + +async function concrete(slots, api) { + var slotsList = []; + var only = {}; + for (var i = 0; i < slots.length; i++) { + if (!only[slots[i].contractAddress]) { + slotsList.push(slots[i]); + only[slots[i].contractAddress] = true; } + } + + const concreteLists = await api.multiCall({ + calls: slotsList.map((index) => index.contractAddress), + abi: abi.concrete, + }) + + let concretes = {}; + for (var k = 0; k < concreteLists.length; k++) { + concretes[slotsList[k].contractAddress] = concreteLists[k]; + } + + return concretes; } + + +async function getSlot(timestamp, chain) { + const slotDataQuery = `query BondSlotInfos { + bondSlotInfos(first: 1000, where:{maturity_gt:${timestamp}}) { + contractAddress + slot + } + }`; + const slots = (await cachedGraphQuery(`solv-protocol/graph-data/${chain}`, graphUrlList[chain], slotDataQuery)).bondSlotInfos; + return slots; +} + +['ethereum', 'bsc', 'polygon', 'arbitrum'].forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From a9a857471cb84a108b7588b58a1e36f01b174173 Mon Sep 17 00:00:00 2001 From: MemeDEX Conflux eSpace <131527200+memedexcfx@users.noreply.github.com> Date: Thu, 11 May 2023 01:50:49 +1000 Subject: [PATCH 0326/1354] Add memedex on Conflux eSpace (#6221) --- projects/memedex/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/memedex/index.js diff --git a/projects/memedex/index.js b/projects/memedex/index.js new file mode 100644 index 0000000000..f7acb54517 --- /dev/null +++ b/projects/memedex/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens'); + +module.exports = { + misrepresentedTokens: true, + conflux: { + tvl: getUniTVL({ chain: 'conflux', useDefaultCoreAssets: true, factory: '0x62283c20Ac4c7B1E61BB3C27bE2fA0880ee982Ea'}), + } +} \ No newline at end of file From 6879c710c67ac6919753ee999c55aaea838c73de Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 17:39:22 +0100 Subject: [PATCH 0327/1354] inverse and jonesdao --- projects/treasury/inverse.js | 4 +++- projects/treasury/jonesdao.js | 41 +++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index c78cc3f25e..4a37bbae41 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -5,6 +5,8 @@ const anchorTreasury = "0x926df14a23be491164dcf93f4c468a50ef659d5b"; const multisig = "0x9D5Df30F475CEA915b1ed4C0CCa59255C897b61B"; const opmultisig = "0xa283139017a2f5bade8d8e25412c600055d318f8"; const bnbmultisig = "0xf7da4bc9b7a6bb3653221ae333a9d2a2c2d5bda7"; +const treasury1 = "0x4b6c63e6a94ef26e2df60b89372db2d8e211f1b7" +const treasury2 = "0x943dbdc995add25a1728a482322f9b3c575b16fb" module.exports = treasuryExports({ ethereum: { @@ -32,7 +34,7 @@ module.exports = treasuryExports({ "0x7e05540A61b531793742fde0514e6c136b5fbAfE", // xFODL "0xAD038Eb671c44b853887A7E32528FaB35dC5D710", // DBR ], - owners: [anchorTreasury, multisig], + owners: [anchorTreasury, multisig, treasury1, treasury2], ownTokens: [ inv, "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", // Uniswap INV/ETH LP diff --git a/projects/treasury/jonesdao.js b/projects/treasury/jonesdao.js index f12a6d4756..58623067db 100644 --- a/projects/treasury/jonesdao.js +++ b/projects/treasury/jonesdao.js @@ -1,22 +1,31 @@ -const { treasuryExports, nullAddress } = require("../helper/treasury"); +const { nullAddress, treasuryExports } = require("../helper/treasury"); + const treasury = "0xFa82f1bA00b0697227E2Ad6c668abb4C50CA0b1F"; const jones = "0x10393c20975cF177a3513071bC110f7962CD67da"; -const tokens = [ - nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC - "0x3d9907F9a368ad0a51Be60f7Da3b97cf940982D8", // GRAIL - "0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A", // MIM - "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL - "0x616279fF3dBf57A55e3d1F2E309e5D704E4e58Ae", // jGLP-USDC CMLT-LP - "0x2bcd0aac7D98697D8760fB291625829113E354e7", // jUSDC-WETH CMLT-LP - "0x7241bC8035b65865156DDb5EdEf3eB32874a3AF6", // jGLP - "0xe66998533a1992ecE9eA99cDf47686F4fc8458E0", // jUSDC - "0xd2D1162512F927a7e282Ef43a362659E4F2a728F", // sbfGMX -]; + module.exports = treasuryExports({ arbitrum: { - tokens, - owners: [treasury], + tokens: [ + nullAddress, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC + "0x3d9907F9a368ad0a51Be60f7Da3b97cf940982D8", // GRAIL + "0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A", // MIM + "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL + "0x616279fF3dBf57A55e3d1F2E309e5D704E4e58Ae", // jGLP-USDC CMLT-LP + "0x2bcd0aac7D98697D8760fB291625829113E354e7", // jUSDC-WETH CMLT-LP + "0x7241bC8035b65865156DDb5EdEf3eB32874a3AF6", // jGLP + "0xe66998533a1992ecE9eA99cDf47686F4fc8458E0", // jUSDC + "0xd2D1162512F927a7e282Ef43a362659E4F2a728F", // sbfGMX + ], + owners: [treasury,], ownTokens: [jones], }, -}); + ethereum: { + tokens: [ + nullAddress, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ], + owners: [treasury,], + ownTokens: [], + }, +}) From 9d37a308a1f3335076cb40992dc2387dce230732 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 10 May 2023 17:49:59 +0100 Subject: [PATCH 0328/1354] adapter arbitrum exchange v3 --- projects/arbitrumexchange-v3/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/arbitrumexchange-v3/index.js diff --git a/projects/arbitrumexchange-v3/index.js b/projects/arbitrumexchange-v3/index.js new file mode 100644 index 0000000000..e357728820 --- /dev/null +++ b/projects/arbitrumexchange-v3/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + arbitrum: { + factory: "0x855f2c70cf5cb1d56c15ed309a4dfefb88ed909e", + fromBlock: 86863305, + }, +}); \ No newline at end of file From 4d0ee739320d4ab35424a5aadf35edf3ba215256 Mon Sep 17 00:00:00 2001 From: Mdex <76643605+mdexSwap@users.noreply.github.com> Date: Thu, 11 May 2023 00:57:56 +0800 Subject: [PATCH 0329/1354] Add BITTORRENT (#6200) * Update api.js add bttc * Update index.js add bttc * Update api.js * Update index.js * refactor mdex to be onchain --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/coreAssets.json | 1 + projects/mdex/abi.json | 4 -- projects/mdex/api.js | 21 -------- projects/mdex/index.js | 38 +++++--------- projects/mdex/subgraphs.js | 91 --------------------------------- 5 files changed, 15 insertions(+), 140 deletions(-) delete mode 100644 projects/mdex/abi.json delete mode 100644 projects/mdex/api.js delete mode 100644 projects/mdex/subgraphs.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 8eb9436cff..64368e4556 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -230,6 +230,7 @@ "0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f", "0xb6f4c418514dd4680f76d5caa3bb42db4a893acb", "0xhecozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", + "0xa71edc38d189767582c38a3145b5873052c3e47a", "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", "0x3d760a45d0887dfd89a2f5385a236b29cb46ed2a", "0x9362bbef4b8313a8aa9f0c9808b80577aa26b73b", diff --git a/projects/mdex/abi.json b/projects/mdex/abi.json deleted file mode 100644 index 20c2adfc83..0000000000 --- a/projects/mdex/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "allPairs": "function allPairs(uint256) view returns (address)", - "allPairsLength": "uint256:allPairsLength" -} \ No newline at end of file diff --git a/projects/mdex/api.js b/projects/mdex/api.js deleted file mode 100644 index 5c93def62b..0000000000 --- a/projects/mdex/api.js +++ /dev/null @@ -1,21 +0,0 @@ -const { getUniTVL } = require('../helper/unknownTokens') - -const factories = { - heco: "0xb0b670fc1F7724119963018DB0BfA86aDb22d941", - bsc: "0x3CD1C46068dAEa5Ebb0d3f55F6915B10648062B8", -}; - -const hecoTvl = getUniTVL({ factory: factories.heco, chain: 'heco', useDefaultCoreAssets: true }) - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - /* - heco: { - tvl: hecoTvl, - }, - */ - bsc: { - tvl: getUniTVL({ factory: factories.bsc, chain: 'bsc', useDefaultCoreAssets: true }), - }, -}; diff --git a/projects/mdex/index.js b/projects/mdex/index.js index b2adc114f4..2ac19f0abb 100644 --- a/projects/mdex/index.js +++ b/projects/mdex/index.js @@ -1,28 +1,18 @@ -const { get } = require('../helper/http') +const { getUniTVL } = require('../helper/unknownTokens') -async function fetch(chainId) { - return (await get(`https://info.mdex.one/pair/tvl?chain_id=${chainId}`)).result - .map(p => p.tvl) - .reduce((a, b) => a + parseFloat(b), 0); -} - -async function heco() { - return (await fetch(128)); -} -async function bsc() { - return (await fetch(56)); -} -async function total() { - return (await fetch(128)) + (await fetch(56)); -} +const factories = { + heco: "0xb0b670fc1F7724119963018DB0BfA86aDb22d941", + bsc: "0x3CD1C46068dAEa5Ebb0d3f55F6915B10648062B8", + bittorrent: "0x36117cc868139FA3AeD4067142C5EF3C121c6a72" +}; module.exports = { - timetravel: false, - heco: { - fetch: heco - }, - bsc: { - fetch: bsc - }, - fetch: total + misrepresentedTokens: true, }; + +Object.keys(factories).forEach(chain => { + const factory = factories[chain] + module.exports[chain] = { + tvl: getUniTVL({ factory, useDefaultCoreAssets: true }) + } +}) \ No newline at end of file diff --git a/projects/mdex/subgraphs.js b/projects/mdex/subgraphs.js deleted file mode 100644 index 675ba61ff7..0000000000 --- a/projects/mdex/subgraphs.js +++ /dev/null @@ -1,91 +0,0 @@ -const { request, gql } = require("graphql-request"); -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const { calculateUniTvl } = require('../helper/calculateUniTvl') -const {toUSDTBalances} = require('../helper/balances'); -const { getBlock } = require("../helper/http"); - -// --> bsc addresses found here: https://github.com/mdexSwap/bscswap -// --> heco addresses found here: https://github.com/mdexSwap/contracts - -const factories = { - heco: "0xb0b670fc1F7724119963018DB0BfA86aDb22d941", - bsc: "0x3CD1C46068dAEa5Ebb0d3f55F6915B10648062B8", -}; - -const REDUCE_BLOCK = 60; - -const graphUrls = { - heco: "https://heco-lite-graph.mdex.cc/subgraphs/name/chain/heco", - bsc: "https://bsc-lite-graph.mdex.one/subgraphs/name/chain/bsc", -}; - -const graphQueries = { - heco: gql` - query tvl($block: Int) { - mdexFactory( - id: "0xb0b670fc1F7724119963018DB0BfA86aDb22d941" - block: { number: $block } - ) { - totalLiquidityUSD - } - } - `, - bsc: gql` - query tvl($block: Int) { - mdexFactory( - id: "0x3CD1C46068dAEa5Ebb0d3f55F6915B10648062B8" - block: { number: $block } - ) { - totalLiquidityUSD - } - } - `, -}; - -// --- We need to token as ref for the balances object --- -const usdtToken = "0xdac17f958d2ee523a2206206994597c13d831ec7"; - -function getMDEXLiquidity(block, chain) { - return request(graphUrls[chain], graphQueries[chain], { - block, - }); -} - -const bscTvl = async (timestamp, ethBlock, chainBlocks) => { - const chain = "bsc" - const block = await getBlock(timestamp, chain, chainBlocks) - const results = await request(graphUrls[chain], graphQueries[chain], { - block, - }); - return toUSDTBalances(results.mdexFactory.totalLiquidityUSD) -}; - -const hecoTvl = async (timestamp, ethBlock, chainBlocks) => { - let block = chainBlocks["heco"]; - - if (block === undefined) { - block = (await sdk.api.util.lookupBlock(timestamp, { chain: "heco" })) - .block; - } - - // --- Reduce a bit as the indexing takes time to catch up, otherwise error jumps somehow from endpoint --- - const results = await getMDEXLiquidity(block - REDUCE_BLOCK, "heco"); - - return { - // --- Arrange to account the decimals as it was usdt (decimals = 6) --- - [usdtToken]: BigNumber(results.mdexFactory.totalLiquidityUSD) - .multipliedBy(10 ** 6) - .toFixed(0), - }; -}; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: bscTvl, // individually outputs >1B --- breakdown per token (OK) - }, - heco: { - tvl: hecoTvl, // individually outputs >1B --- simply using graphql endpoint (OK) - }, -}; From 8af42be685d32945af35892d27287d02704eb0ff Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 May 2023 21:49:48 +0200 Subject: [PATCH 0330/1354] fix broken adapters --- projects/behodler/index.js | 22 ++++++- projects/emiswap/index.js | 103 +++++++------------------------ projects/helper/uniswapV3.js | 4 +- projects/pancakeswap-v3/index.js | 5 +- projects/treasury/gnosis-dao.js | 1 + utils/formatAbis.js | 4 ++ 6 files changed, 53 insertions(+), 86 deletions(-) diff --git a/projects/behodler/index.js b/projects/behodler/index.js index fb56635b1e..5c520310c4 100644 --- a/projects/behodler/index.js +++ b/projects/behodler/index.js @@ -1,5 +1,6 @@ const { request, gql } = require("graphql-request"); const { toUSDTBalances } = require('../helper/balances'); +const { sumTokensExport } = require("../helper/unwrapLPs"); const graphUrl = 'https://api.thegraph.com/subgraphs/name/arrenv/behodler' const graphQuery = gql` @@ -28,9 +29,26 @@ async function tvl(timestamp, block) { } module.exports = { - misrepresentedTokens: true, methodology: `ERC20 tokens deposited as liquidity on the AMM. You can see this on https://analytics.behodler.io/#/, pulling the data from the 'arrenv/behodler' subgraph`, ethereum:{ - tvl, + tvl: sumTokensExport({ + owner: '0x1B8568FbB47708E9E9D31Ff303254f748805bF21', + tokens: [ + '0xaFEf0965576070D1608F374cb14049EefaD218Ec', + '0x4f5704D9D2cbCcAf11e70B34048d41A0d572993F', + '0x0D8775F648430679A709E98d2b0Cb6250d2887EF', + '0x319eAd06eb01E808C80c7eb9bd77C5d8d163AddB', + '0xF047ee812b21050186f86106f6cABDfEc35366c6', + '0x155ff1A85F440EE0A382eA949f24CE4E0b751c65', + '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2', + '0x514910771AF9Ca656af840dff83E8264EcF986CA', + '0x4575f41308EC1483f3d399aa9a2826d74Da13Deb', + '0x6B175474E89094C44Da98b954EedeAC495271d0F', + '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d', + '0x42476F744292107e34519F9c357927074Ea3F75D', + '0x890ff7533Ca0C44F33167FdEEeaB1cA7E690634F', + ], + resolveLP: true, + }), }, } \ No newline at end of file diff --git a/projects/emiswap/index.js b/projects/emiswap/index.js index c70b967ffe..21ce74b0b7 100644 --- a/projects/emiswap/index.js +++ b/projects/emiswap/index.js @@ -1,92 +1,33 @@ -const sdk = require("@defillama/sdk") -const { post } = require('../helper/http') -const { toUSDTBalances } = require('../helper/balances') -const { sumTokens } = require("../helper/unwrapLPs") -const { getChainTransform, getFixBalances } = require("../helper/portedTokens") +const { sumTokens2 } = require("../helper/unwrapLPs") const abi = require("../mooniswap/abi.json") - -const query = factory => `query emiswapFactories { emiswapFactories(where: {id: "${factory}"}) { id totalLiquidityUSD }}` +const { staking } = require('../helper/staking') const chainConfig = { - ethereum: { - factory: '0x1771dff85160768255F0a44D20965665806cBf48', - url: 'https://api.thegraph.com/subgraphs/name/lombardi22/emiswap8' - }, - kcc: { - factory: '0x945316F2964ef5C6C84921b435a528DD1790E93a', - url: 'https://thegraph.kcc.network/subgraphs/name/emiswap/emiswap1' - }, - polygon: { - factory: '0x23c1b313152e276e0CF61665dc3AC160b3c5aB19', - url: 'https://api.thegraph.com/subgraphs/name/lombardi22/polygon', - }, - shiden: { - factory: '0x7449314B698f918E98c76279B5570613b243eECf', - url: 'https://shiden-graph.emiswap.com/subgraphs/name/shiden', - }, - avax: { - factory: '0xaD6b9b31832A88Bb59dB4ACD820F8df2CfA84f0f', - }, - astar: { - factory: '0xb4BcA5955F26d2fA6B57842655d7aCf2380Ac854', - }, - aurora: { - factory: '0x979e5d41595263f6Dfec4F4D48419C555B80D95c', - url: 'https://api.thegraph.com/subgraphs/name/lombardi22/aurora', - }, + ethereum: { factory: '0x1771dff85160768255F0a44D20965665806cBf48', }, + kcc: { factory: '0x945316F2964ef5C6C84921b435a528DD1790E93a', }, + polygon: { factory: '0x23c1b313152e276e0CF61665dc3AC160b3c5aB19', }, + shiden: { factory: '0x7449314B698f918E98c76279B5570613b243eECf', }, + avax: { factory: '0xaD6b9b31832A88Bb59dB4ACD820F8df2CfA84f0f', }, + astar: { factory: '0xb4BcA5955F26d2fA6B57842655d7aCf2380Ac854', }, + aurora: { factory: '0x979e5d41595263f6Dfec4F4D48419C555B80D95c', }, } - -const moduleExports = {} - -Object.keys(chainConfig).forEach(chain => { - const { factory, url } = chainConfig[chain] - async function tvl() { - const body = { query: query(factory), operationName: "emiswapFactories", variables: {} } - const response = await post(url, body) - return toUSDTBalances(response.data.emiswapFactories[0].totalLiquidityUSD) - } - - async function computeTvl(ts, _block, chainBlocks) { - const balances = {} - const block = chainBlocks[chain] - const transformAddress = await getChainTransform(chain) - const fixBalances = await getFixBalances(chain) - - const getAllpools = (await sdk.api.abi.call({ abi: abi.getAllPools, target: factory, block, chain, })).output - const getTokens = (await sdk.api.abi.multiCall({ abi: abi.getTokens, calls: getAllpools.map(pool => ({ target: pool })), block, chain, })).output - const tokensAndOwners = [] - getTokens.forEach(({ output: tokens }, i) => { - const owner = getAllpools[i] - tokens.forEach(token => tokensAndOwners.push([token, owner])) - }) - - await sumTokens(balances, tokensAndOwners, block, chain, transformAddress) - fixBalances(balances) - return balances - } - - moduleExports[chain] = { tvl: url ? tvl : computeTvl } -}) const eswToken = "0x5a75a093747b72a0e14056352751edf03518031d"; const stakingPool = "0xe094E3E16e813a40E2d6cC4b89bfeAe0142044e1"; -async function ethStaking(timestamp, block) { - let balances = {}; - - let { output: balance } = await sdk.api.erc20.balanceOf({ - target: eswToken, - owner: stakingPool, - block, - }); - sdk.util.sumSingleBalance(balances, eswToken, balance); - - return balances; -} - -moduleExports.ethereum.staking = ethStaking module.exports = { methodology: "ETH and KCC TVL are the total liquidity from the LPs according to the subgraph. Staking TVL would be ESW value in the staking pool.", - ...moduleExports -}; \ No newline at end of file +}; + +Object.keys(chainConfig).forEach(chain => { + const { factory } = chainConfig[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const pools = await api.call({ target: factory, abi: abi.getAllPools, }) + const tokens = await api.multiCall({ calls: pools, abi: abi.getTokens, }) + return sumTokens2({ api, ownerTokens: pools.map((v, i) => [tokens[i], v]) }) + } + } +}) +module.exports.ethereum.staking = staking(stakingPool, eswToken) \ No newline at end of file diff --git a/projects/helper/uniswapV3.js b/projects/helper/uniswapV3.js index c99843f972..c8176af9e9 100644 --- a/projects/helper/uniswapV3.js +++ b/projects/helper/uniswapV3.js @@ -16,7 +16,7 @@ function uniV3Export(config) { const exports = {} Object.keys(config).forEach(chain => { - let { factory: target, fromBlock, topics, eventAbi, isAlgebra } = config[chain] + let { factory: target, fromBlock, topics, eventAbi, isAlgebra, blacklistedTokens = [] } = config[chain] if (!topics) topics = isAlgebra ? algebraConfig.topics : uniswapConfig.topics if (!eventAbi) eventAbi = isAlgebra ? algebraConfig.eventAbi : uniswapConfig.eventAbi @@ -31,7 +31,7 @@ function uniV3Export(config) { onlyArgs: true, }) - return sumTokens2({ api, ownerTokens: logs.map(i => [[i.token0, i.token1], i.pool]), }) + return sumTokens2({ api, ownerTokens: logs.map(i => [[i.token0, i.token1], i.pool]), blacklistedTokens, }) } } }) diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index 0e20e1d20b..4a617c692a 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -1,6 +1,9 @@ const { uniV3Export } = require('../helper/uniswapV3') module.exports = uniV3Export({ - bsc: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 26956207, }, + bsc: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 26956207, blacklistedTokens: [ + '0x860368babf32129c18306a70ce7db10c5b437072', + '0xc476d3961f77645464acccce404eb17815a80878', + ] }, ethereum: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 16950685, }, }) diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index 017a25e248..50c4a074f3 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -38,5 +38,6 @@ module.exports = treasuryExports({ ], owners: [treasury, treasury1, treasury2, treasury3, vestingAddress], ownTokens: [GNO, LP, LP2], + resolveUniV3: true, }, }) \ No newline at end of file diff --git a/utils/formatAbis.js b/utils/formatAbis.js index 5359828c82..edbda43374 100644 --- a/utils/formatAbis.js +++ b/utils/formatAbis.js @@ -59,6 +59,10 @@ function isTransformable(obj, file) { function transform(obj, file) { const res = {} for (const [key, value] of Object.entries(obj)) { + if (['constructor', 'error'].includes(value.type)) { + console.log('skipping element of type: ', value.type) + continue; + } if (!value.inputs) console.log('inputs missing', file) const iLen = value.inputs.length === 0 const oLen = value.outputs?.length === 1 From ea6ded47ec7d0ed42671441ccb83597f230501c8 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 10 May 2023 21:46:01 +0100 Subject: [PATCH 0331/1354] fix ipor --- projects/treasury/ipor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/treasury/ipor.js b/projects/treasury/ipor.js index 111bd173f6..0ae8c60cfe 100644 --- a/projects/treasury/ipor.js +++ b/projects/treasury/ipor.js @@ -31,7 +31,7 @@ async function ownTokens(timestamp, block) { return balances; } -module.exports = treasuryExports({ +module.exports = { ethereum: { tvl: sumTokensExport({ tokens, @@ -39,4 +39,4 @@ module.exports = treasuryExports({ }), ownTokens, }, -}); +}; From 530aeca11ea38178ac76c01f8eb017e26e7da3e2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 May 2023 23:07:45 +0200 Subject: [PATCH 0332/1354] add cozy v2 --- projects/cozy-v2/index.js | 25 +++++++++++++++++++++++++ projects/stacks/index.js | 1 + 2 files changed, 26 insertions(+) create mode 100644 projects/cozy-v2/index.js diff --git a/projects/cozy-v2/index.js b/projects/cozy-v2/index.js new file mode 100644 index 0000000000..48aa5410dc --- /dev/null +++ b/projects/cozy-v2/index.js @@ -0,0 +1,25 @@ +const { getLogs, getAddress } = require('../helper/cache/getLogs'); +const { sumTokens2 } = require('../helper/unwrapLPs'); + +const config = { + optimism: {factory: '0xdebe19b57e8b7eb6ea6ebea67b12153e011e6447', fromBlock: 96818459,}, +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const {factory, fromBlock} = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x1bf8fff61a482f21edcb49226d708f5255b3e06bb9c6485892a057058b494790'], + fromBlock, + }) + const tokensAndOwners = logs.map(i => [i.topics[1], i.data].map(getAddress)) + return sumTokens2({ api, tokensAndOwners}) + } + } +}) \ No newline at end of file diff --git a/projects/stacks/index.js b/projects/stacks/index.js index 553e782d3d..f2624c3dce 100644 --- a/projects/stacks/index.js +++ b/projects/stacks/index.js @@ -9,6 +9,7 @@ async function tvl(timestamp) { } module.exports = { + timetravel: false, stacks: { tvl }, From e32eb75da5224f9ee1d7fc70330b6f43e1dfe8c8 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 10 May 2023 22:09:21 +0100 Subject: [PATCH 0333/1354] fix maker treasury --- projects/treasury/maker.js | 53 +++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/projects/treasury/maker.js b/projects/treasury/maker.js index 4f5d39edec..c8dadeb3fb 100644 --- a/projects/treasury/maker.js +++ b/projects/treasury/maker.js @@ -1,28 +1,45 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); +const { nullAddress } = require("../helper/treasury"); +const { + sumTokensExport, + sumTokens, +} = require("../helper/unwrapLPs"); const treasury = "0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB"; const MKR = "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2"; const DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F" +async function tvl(timestamp, block, chainBlocks, {api}) { + const balances = {}; + const tokensAndOwners = [ + nullAddress, + '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens + '0x4da27a545c0c5B758a6BA100e3a049001de870f5',//staave + '0xc00e94Cb662C3520282E6f5717214004A7f26888',//comp + '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9',//aave + '0x8f8221aFbB33998d8584A2B05749bA73c37a938a',//req + ].map(t=>[t, treasury]) + await sumTokens(balances, tokensAndOwners, block); -module.exports = treasuryExports({ + const all = await api.call({target: "0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b", abi: "function dai(address) view returns (uint256)", params: ["0xA950524441892A31ebddF91d3cEEFa04Bf454466"]}) + const vice = await api.call({target: "0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b", abi: "function vice() view returns (uint256)", }) + balances[DAI] = (all-vice)/1e27 + + return balances; +} + + +module.exports = { ethereum: { - tokens: [ - nullAddress, - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens - '0x4da27a545c0c5B758a6BA100e3a049001de870f5',//staave - '0xc00e94Cb662C3520282E6f5717214004A7f26888',//comp - '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9',//aave - '0x8f8221aFbB33998d8584A2B05749bA73c37a938a',//req - ], - owners: [treasury], - ownTokens: [MKR, DAI], + tvl, + ownTokens: sumTokensExport({ + tokens: [MKR], + owners: [treasury], + }), }, arbitrum: { - tokens: [ - nullAddress, - ], - owners: ['0x10e6593cdda8c58a1d0f14c5164b376352a55f2f'], - ownTokens: [], + tvl:sumTokensExport({ + tokens: [nullAddress], + owners: ["0x10e6593cdda8c58a1d0f14c5164b376352a55f2f"], + }), }, -}) \ No newline at end of file +} \ No newline at end of file From dbc46fff43bf74d59ca5775b46639178d87556aa Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 10 May 2023 22:54:07 +0100 Subject: [PATCH 0334/1354] dont apply blacklisting on borrow --- projects/helper/aave.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/aave.js b/projects/helper/aave.js index 3a0343191c..2019fe451e 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -124,7 +124,7 @@ function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dat function aaveExports(chain, addressesProviderRegistry, transform = undefined, dataHelpers = undefined, { oracle, abis, v3 = false, blacklistedTokens = [] } = {}) { return { tvl: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, false, v3, { oracle, abis, blacklistedTokens, }), - borrowed: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, blacklistedTokens, }) + borrowed: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, }) } } From fa5f1629731beab8ca37ec83f5acba4c1a46aa08 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 11 May 2023 01:02:23 +0100 Subject: [PATCH 0335/1354] fix tokens in firm --- projects/inverse-finance-firm/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/inverse-finance-firm/index.js b/projects/inverse-finance-firm/index.js index edf5a21bc3..a6bad2bfe7 100644 --- a/projects/inverse-finance-firm/index.js +++ b/projects/inverse-finance-firm/index.js @@ -2,6 +2,7 @@ const abi = require("./abi.json"); const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') +const sdk = require("@defillama/sdk") // Firm const firmStart = 16159015; @@ -30,8 +31,13 @@ async function tvl(timestamp, block, _, { api }) { }) ); escrows = escrows.flat() - const tokens = await api.multiCall({ abi: 'address:token', calls: escrows}) - return sumTokens2({ api, tokensAndOwners: tokens.map((t, i) => ([t, escrows[i]]))}) + const tokens = await api.multiCall({ abi: 'address:token', calls: escrows}) + const tokenBalances = await api.multiCall({ abi: 'uint256:balance', calls: escrows}) + const balances = {} + tokens.forEach((t,i)=>{ + sdk.util.sumSingleBalance(balances, t, tokenBalances[i]) + }) + return balances } module.exports = { From 27811537bc80f06da8ac5ea82987b66dcc426833 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 May 2023 09:00:43 +0200 Subject: [PATCH 0336/1354] Meld-gold (#6233) * feat: add meld-gold project tvl * chore: fix formatting * chore: fix formatting * chore: fix formatting * chore: fix formatting * chore: fix formatting * meld-gold: code refactor --------- Co-authored-by: dom --- projects/helper/chain/algorand.js | 2 ++ projects/meld-gold/index.js | 45 +++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 projects/meld-gold/index.js diff --git a/projects/helper/chain/algorand.js b/projects/helper/chain/algorand.js index 24bb66422f..97789d5b65 100644 --- a/projects/helper/chain/algorand.js +++ b/projects/helper/chain/algorand.js @@ -135,6 +135,8 @@ const tokens = { goUsd: 672913181, usdcGoUsdLp: 885102318, gard: 684649988, + gold$: 246516580, + silver$: 246519683, } // store all asset ids as string diff --git a/projects/meld-gold/index.js b/projects/meld-gold/index.js new file mode 100644 index 0000000000..c21a02c9d0 --- /dev/null +++ b/projects/meld-gold/index.js @@ -0,0 +1,45 @@ +const { tokens, getAssetInfo } = require('../helper/chain/algorand') +const sdk = require('@defillama/sdk') + +async function tvl() { + const abi = 'function latestRoundData() view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)' + const api = new sdk.ChainApi({}) + let totalMeldMarketCap = 0 + + // Gold is priced in oz, silver is priced in grams, but Meld Tokens are both priced in grams + const ozToGrams = 28.349523 + + // Meld tokens + const assetInfo = [ + { + assetId: tokens.gold$, + grams: ozToGrams, + priceFeed: '0x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6', + }, + { + assetId: tokens.silver$, + grams: 1, + priceFeed: '0x379589227b15F1a12195D3f2d90bBc9F31f95235', + }, + ] + + // Get total market cap of all Meld tokens + for (const asset of assetInfo) { + const { assetId, grams, priceFeed } = asset + const { answer: price } = await api.call({ abi, target: priceFeed }) + const assetInfo = await getAssetInfo(assetId) + const circulatingSupply = assetInfo.circulatingSupply + const marketCap = (circulatingSupply / grams / 10 ** 6) * (price / 10 ** 9) + totalMeldMarketCap += marketCap + } + + return { tether: totalMeldMarketCap } +} + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + algorand: { + tvl, + }, +} From 9af06e8adfbe250956fddb6c051227dd258eafb4 Mon Sep 17 00:00:00 2001 From: Pierre764 <87363698+Pierre764@users.noreply.github.com> Date: Thu, 11 May 2023 15:06:25 +0530 Subject: [PATCH 0337/1354] Update index.js Updated the Staking pool contract address as this repo was using the old pools that are not active anymore. --- projects/decubate/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/decubate/index.js b/projects/decubate/index.js index 0cafc43682..b18c12bf43 100644 --- a/projects/decubate/index.js +++ b/projects/decubate/index.js @@ -1,7 +1,7 @@ const sdk = require("@defillama/sdk"); const DCBToken = "0xEAc9873291dDAcA754EA5642114151f3035c67A2"; -const stakingPool = "0x22B551fE288c93A3Ac9172aD998A1D9ce1A882e5"; +const stakingPool = "0xD1748192aE1dB982be2FB8C3e6d893C75330884a"; async function staking (timestamp, block, chainBlocks) { let balances = {}; @@ -24,4 +24,4 @@ module.exports = { staking }, -} \ No newline at end of file +} From e6efca1035ed0436e1a5f0ae669ac1f3502bd65c Mon Sep 17 00:00:00 2001 From: define Date: Thu, 11 May 2023 13:57:01 +0100 Subject: [PATCH 0338/1354] Treasury 2/3 --- projects/treasury/keeperdao.js | 3 ++- projects/treasury/mantra-dao.js | 25 +++++++++++++++++++++++++ projects/treasury/mstable.js | 7 +++++-- projects/treasury/nexus-mutual.js | 3 ++- projects/treasury/nftx.js | 4 +++- projects/treasury/notional.js | 16 ++++++++++++++++ projects/treasury/op-foundation.js | 22 ++++++++++++++++++++++ projects/treasury/p-network.js | 11 ++++++++--- projects/treasury/piedao.js | 4 +++- projects/treasury/plutusdao.js | 5 ++++- projects/treasury/redacted.js | 23 +++++++++++++++++++++++ projects/treasury/ribbon.js | 4 +++- projects/treasury/shapeshift.js | 5 +++-- projects/treasury/silo-finance.js | 24 ++++++++++++++++++++++++ projects/treasury/spool-protocol.js | 18 ++++++++++++++++++ 15 files changed, 161 insertions(+), 13 deletions(-) create mode 100644 projects/treasury/mantra-dao.js create mode 100644 projects/treasury/notional.js create mode 100644 projects/treasury/op-foundation.js create mode 100644 projects/treasury/redacted.js create mode 100644 projects/treasury/silo-finance.js create mode 100644 projects/treasury/spool-protocol.js diff --git a/projects/treasury/keeperdao.js b/projects/treasury/keeperdao.js index a18256ff76..3914ecc759 100644 --- a/projects/treasury/keeperdao.js +++ b/projects/treasury/keeperdao.js @@ -16,7 +16,8 @@ module.exports = treasuryExports({ '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX - '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D'//renBTC + '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',//renBTC + '0xdAC17F958D2ee523a2206206994597C13D831ec7' ], owners: [keeperDaoTreasury], ownTokens: [ROOK], diff --git a/projects/treasury/mantra-dao.js b/projects/treasury/mantra-dao.js new file mode 100644 index 0000000000..e2a4fbbf2e --- /dev/null +++ b/projects/treasury/mantra-dao.js @@ -0,0 +1,25 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xc8899da25423ac52aa711b97ae04c8888fa1e1d7"; +const treasury2 = "0xd84701828745c98405a3e1153fccea627963859a" +const OM = "0x3593d125a4f7849a1b059e64f4517a86dd60c95d"; + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + '0xFe2e637202056d30016725477c5da089Ab0A043A',//sETH2 + '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + '0xae78736Cd615f374D3085123A210448E74Fc6393',//rETH + '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH + '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC + '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX + '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D'//renBTC + ], + owners: [treasury, treasury2], + ownTokens: [OM], + }, +}) \ No newline at end of file diff --git a/projects/treasury/mstable.js b/projects/treasury/mstable.js index 0d5c777697..6c86efe026 100644 --- a/projects/treasury/mstable.js +++ b/projects/treasury/mstable.js @@ -1,6 +1,9 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); -const mStableTreasury1 = "0x3dd46846eed8D147841AE162C8425c08BD8E1b41"; +const treasury = "0x3dd46846eed8D147841AE162C8425c08BD8E1b41"; +const treasury2 = "0xfcf455d6eb48b3289a712c0b3bc3c7ee0b0ee4c6" +const treasury3 = "0xf6ff1f7fceb2ce6d26687eaab5988b445d0b94a2" +const treasury4 = "0x67905d3e4fec0c85dce68195f66dc8eb32f59179" const META = "0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2"; const mUSD = "0xe2f2a5C287993345a840Db3B0845fbC70f5935a5"; @@ -22,7 +25,7 @@ module.exports = treasuryExports({ '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH ], - owners: [mStableTreasury1], + owners: [treasury, treasury2, treasury3, treasury4], ownTokens: [META, mUSD], }, }) \ No newline at end of file diff --git a/projects/treasury/nexus-mutual.js b/projects/treasury/nexus-mutual.js index 0ed6d9bfd5..7b6926dd4f 100644 --- a/projects/treasury/nexus-mutual.js +++ b/projects/treasury/nexus-mutual.js @@ -1,6 +1,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const communityFund = "0x586b9b2F8010b284A0197f392156f1A7Eb5e86e9"; +const treasury = "0xfc64382c9ce89ba1c21692a68000366a35ff0336" const nxm = "0xd7c49CEE7E9188cCa6AD8FF264C1DA2e69D4Cf3B"; const wNxm = "0x0d438F3b5175Bebc262bF23753C1E53d03432bDE"; @@ -14,6 +15,6 @@ module.exports = treasuryExports({ "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE ], ownTokens: [nxm, wNxm], - owners: [communityFund], + owners: [communityFund, treasury], }, }); diff --git a/projects/treasury/nftx.js b/projects/treasury/nftx.js index 56d7b0533c..5f9681dc57 100644 --- a/projects/treasury/nftx.js +++ b/projects/treasury/nftx.js @@ -1,6 +1,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const nftxDao = "0x40D73Df4F99bae688CE3C23a01022224FE16C7b2"; +const nftx = "0x87d73E916D7057945c9BcD8cdd94e42A6F47f776" module.exports = treasuryExports({ ethereum: { @@ -8,6 +9,7 @@ module.exports = treasuryExports({ nullAddress, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC ], - owners: [nftxDao] + owners: [nftxDao], + ownTokens: [nftx], }, }) \ No newline at end of file diff --git a/projects/treasury/notional.js b/projects/treasury/notional.js new file mode 100644 index 0000000000..6d47fa50a7 --- /dev/null +++ b/projects/treasury/notional.js @@ -0,0 +1,16 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x086b4ecd75c494dd36641195e89c25373e06d7cb"; +const treasury2 = "0x22341fb5d92d3d801144aa5a925f401a91418a05" +const note = "0xCFEAead4947f0705A14ec42aC3D44129E1Ef3eD5" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ], + owners: [treasury], + ownTokens: [note], + }, +}) \ No newline at end of file diff --git a/projects/treasury/op-foundation.js b/projects/treasury/op-foundation.js new file mode 100644 index 0000000000..7d7c2028df --- /dev/null +++ b/projects/treasury/op-foundation.js @@ -0,0 +1,22 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x2501c477d0a35545a387aa4a3eee4292a9a8b3f0"; +const OP = "0x4200000000000000000000000000000000000042" + +module.exports = treasuryExports({ + optimism: { + tokens: [ + nullAddress, + "0x7F5c764cBc14f9669B88837ca1490cCa17c31607" + ], + owners: [treasury], + ownTokens: [OP], + }, + ethereum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + ownTokens: [], + }, +}) \ No newline at end of file diff --git a/projects/treasury/p-network.js b/projects/treasury/p-network.js index 1bd37185b9..ee1d1c2a4b 100644 --- a/projects/treasury/p-network.js +++ b/projects/treasury/p-network.js @@ -1,12 +1,17 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); -const treasury = "0xcdb0b4b32d22084f6a20aeafaa389c9ed8865945"; +const treasury = "0x015ed76723aaf0ef9960dd66631d2ecac77e4156"; +const treasury2 = "0xabfd88db78d2503af372cb9c21cdc2f181232b4f" +const treasury3 = "0xdd92eb1478d3189707ab7f4a5ace3a615cdd0476" + +const PNT = "0x89ab32156e46f46d02ade3fecbe5fc4243b9aaed" module.exports = treasuryExports({ - arbitrum: { + ethereum: { tokens: [ nullAddress, ], - owners: [treasury,], + owners: [treasury, treasury2, treasury3], + ownTokens: [PNT], }, }) \ No newline at end of file diff --git a/projects/treasury/piedao.js b/projects/treasury/piedao.js index 4687d58591..0fba8e5673 100644 --- a/projects/treasury/piedao.js +++ b/projects/treasury/piedao.js @@ -4,6 +4,8 @@ const pieDaoTreasury = "0x3bCF3Db69897125Aa61496Fc8a8B55A5e3f245d5"; const DOUGH = "0xad32A8e6220741182940c5aBF610bDE99E737b2D"; const DOUGH_LP = "0xE8846B27988FF52c371D5BD27Bf8DBA4097C93D2" +const treasury = "0x267070804c46a47aa92a76d59d70c05d30de46e3" + module.exports = treasuryExports({ ethereum: { tokens: [ @@ -30,7 +32,7 @@ module.exports = treasuryExports({ '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84' //stETH ], - owners: [pieDaoTreasury], + owners: [pieDaoTreasury, treasury], ownTokens: [DOUGH, DOUGH_LP], }, }) \ No newline at end of file diff --git a/projects/treasury/plutusdao.js b/projects/treasury/plutusdao.js index ec89691efb..f7991f1eab 100644 --- a/projects/treasury/plutusdao.js +++ b/projects/treasury/plutusdao.js @@ -2,7 +2,10 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xBbE98D590d7eB99F4a236587f2441826396053d3"; -const tokens = [nullAddress]; +const tokens = [ + nullAddress, + "0x10393c20975cF177a3513071bC110f7962CD67da" +]; const ownTokens = [ "0x51318B7D00db7ACc4026C88c3952B66278B6A67F", // PLS diff --git a/projects/treasury/redacted.js b/projects/treasury/redacted.js new file mode 100644 index 0000000000..48f9de4824 --- /dev/null +++ b/projects/treasury/redacted.js @@ -0,0 +1,23 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x086c98855df3c78c6b481b6e1d47bef42e9ac36b" +const treasury2 = "0xa52fd396891e7a74b641a2cb1a6999fcf56b077e" +const BTRF = "0xc55126051B22eBb829D00368f4B12Bde432de5Da" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT + "0x2ba592F78dB6436527729929AAf6c908497cB200", // CREAM + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0xaCe78D9BaB82b6B4783120Dba82aa10B040A14D9", + "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC" + ], + ownTokens: [BTRF], + owners: [treasury, treasury2], + }, +}); \ No newline at end of file diff --git a/projects/treasury/ribbon.js b/projects/treasury/ribbon.js index 311e75a76b..956d021411 100644 --- a/projects/treasury/ribbon.js +++ b/projects/treasury/ribbon.js @@ -2,6 +2,8 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); // Treasury const treasury = "0xDAEada3d210D2f45874724BeEa03C7d4BBD41674"; +const treasury2 = "0x42c1357aaa3243ea30c713cdfed115d09f10a71d" +const treasury3 = "0x6adeb4fddb63f08e03d6f5b9f653be8b65341b35" const RBN = "0x6123B0049F904d730dB3C36a31167D9d4121fA6B"; module.exports = treasuryExports({ @@ -24,7 +26,7 @@ module.exports = treasuryExports({ "0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE", // yvUSDC "0x25751853Eab4D0eB3652B5eB6ecB102A2789644B", // rETH-THETA ], - owners: [treasury], + owners: [treasury, treasury2, treasury3], ownTokens: [ RBN, "0xd590931466cdD6d488A25da1E89dD0539723800c", // 50RBN-50USDC diff --git a/projects/treasury/shapeshift.js b/projects/treasury/shapeshift.js index c5f4209440..381402c412 100644 --- a/projects/treasury/shapeshift.js +++ b/projects/treasury/shapeshift.js @@ -2,8 +2,9 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); const shaTreasury = "0x90A48D5CF7343B08dA12E067680B4C6dbfE551Be"; - +const LP = "0x470e8de2eBaef52014A47Cb5E6aF86884947F08c" const FOX = "0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d"; +const tFOX = "0x808D3E6b23516967ceAE4f17a5F9038383ED5311" module.exports = treasuryExports({ @@ -19,6 +20,6 @@ module.exports = treasuryExports({ '0x2e9d63788249371f1DFC918a52f8d799F4a38C94',//TOKE ], owners: [shaTreasury], - ownTokens: [FOX], + ownTokens: [FOX, LP, tFOX], }, }) \ No newline at end of file diff --git a/projects/treasury/silo-finance.js b/projects/treasury/silo-finance.js new file mode 100644 index 0000000000..1cdad9291f --- /dev/null +++ b/projects/treasury/silo-finance.js @@ -0,0 +1,24 @@ +const { simulateTransaction } = require("@project-serum/anchor/dist/cjs/utils/rpc"); +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const treasury = "0xdff2aea378e41632e45306a6de26a7e0fd93ab07"; +const treasury2 = "0xe1f03b7b0ebf84e9b9f62a1db40f1efb8faa7d22" + +const SILO = "0x6f80310CA7F2C654691D1383149Fa1A57d8AB1f8" + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//LUSD + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH + '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + '0x2e9d63788249371f1DFC918a52f8d799F4a38C94',//TOKE + ], + owners: [treasury, treasury2], + ownTokens: [SILO], + }, +}) \ No newline at end of file diff --git a/projects/treasury/spool-protocol.js b/projects/treasury/spool-protocol.js new file mode 100644 index 0000000000..d07d771904 --- /dev/null +++ b/projects/treasury/spool-protocol.js @@ -0,0 +1,18 @@ +const { treasuryExports, nullAddress } = require("../helper/treasury"); + +const treasury = "0xf6bc2e3b1f939c435d9769d078a6e5048aabd463"; +const SPOOL = "0x40803cEA2b2A32BdA1bE61d3604af6a814E70976" +const LP = "0xF3b675df63FB4889180d290A338fc15C0766fd64" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + + ], + owners: [treasury], + ownTokens: [SPOOL, LP], + }, +}); From e358ad70e59c953a0400338982fbb5a71e8e8138 Mon Sep 17 00:00:00 2001 From: Larry the Cucumber <71284258+larrythecucumber321@users.noreply.github.com> Date: Thu, 11 May 2023 06:31:36 -0700 Subject: [PATCH 0339/1354] Update Reserve TVL Calculations (#6227) * feat: add convex tokens to Reserve * add flux tokens to reserve calc * remove yarn error * wrap flux calls in promise * refactor reverse --------- Co-authored-by: --global <--global> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/unwrapLPs.js | 11 ++++++ projects/reserve/index.js | 65 +++++++++++++++++++++++++----------- 2 files changed, 56 insertions(+), 20 deletions(-) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 75112e364e..97e6910c2a 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -498,6 +498,16 @@ async function genericUnwrapCvx(balances, holder, cvx_BaseRewardPool, block, cha return balances } +async function genericUnwrapCvxDeposit({ api, owner, token, balances }) { + if (!balances) balances = await api.getBalances() + const [bal, cToken ] = await api.batchCall([ + { target: token, params: owner, abi: 'erc20:balanceOf' }, + { target: token, abi: 'address:curveToken' }, + ]) + sdk.util.sumSingleBalance(balances, cToken, bal, api.chain) + return balances +} + async function unwrapLPsAuto({ api, balances, block, chain = "ethereum", transformAddress, excludePool2 = false, onlyPool2 = false, pool2Tokens = [], blacklistedLPs = [], abis = {}, }) { if (api) { chain = api.chain ?? chain @@ -749,4 +759,5 @@ module.exports = { unwrapBalancerToken, unwrapBalancerPool, sumTokensExport, + genericUnwrapCvxDeposit, } diff --git a/projects/reserve/index.js b/projects/reserve/index.js index 08c785988d..c511367f75 100644 --- a/projects/reserve/index.js +++ b/projects/reserve/index.js @@ -1,8 +1,8 @@ const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require("../helper/unwrapLPs.js"); +const { sumTokens2, genericUnwrapCvxDeposit, unwrapCreamTokens } = require("../helper/unwrapLPs.js"); const vault = "0xaedcfcdd80573c2a312d15d6bb9d921a01e4fb0f"; -const deployerAddress = "0xFd6CC4F251eaE6d02f9F7B41D1e80464D3d2F377"; +const deployerAddresses = ["0xFd6CC4F251eaE6d02f9F7B41D1e80464D3d2F377", "0x5c46b718Cd79F2BBA6869A3BeC13401b9a4B69bB"]; const rsr = "0x320623b8E4fF03373931769A31Fc52A4E78B5d70"; async function tvl(_time, block, _, { api }) { @@ -13,6 +13,8 @@ async function tvl(_time, block, _, { api }) { "0x0000000000085d4780B73119b644AE5ecd22b376", //tusd "0x4Fabb145d64652a948d72533023f6E7A623C7C53", //busd ], vault]] + const blacklistedTokens = [rsr] + const fluxListWithOwner = [] const creationLogs = await _getLogs(api) const mains = creationLogs.map(i => i.main) @@ -21,18 +23,39 @@ async function tvl(_time, block, _, { api }) { const backingManagers = await api.multiCall({ abi: 'address:backingManager', calls: mains }) const basketHandlers = await api.multiCall({ abi: 'address:basketHandler', calls: mains }) const basketRes = await api.multiCall({ abi: "function quote(uint192, uint8) view returns (address[], uint256[])", calls: basketHandlers.map(i => ({ target: i, params: [0, 0] })) }) - const basketTokens = await Promise.all(basketRes.map(async ([tokens]) => { - const aTokens = await api.multiCall({ abi: 'address:ATOKEN', calls: tokens, permitFailure: true, }) - aTokens.forEach((v, i) => v && ownerTokens.push([[v], tokens[i]])) - return tokens.filter((_, i) => !aTokens[i]) + await Promise.all(basketRes.map(async ([tokens], idx) => { + const rToken = rTokens[idx] + const manager = backingManagers[idx] + const names = await api.multiCall({ abi: 'string:name', calls: tokens, }) + + // handle Atokens + const aTokenBases = tokens.filter((_, i) => names[i].startsWith('Static ')) + tokens = tokens.filter((_, i) => !names[i].startsWith('Static ')) + const aTokens = await api.multiCall({ abi: 'address:ATOKEN', calls: aTokenBases}) + blacklistedTokens.push(...aTokenBases) + aTokens.forEach((v, i) => ownerTokens.push([[v], aTokenBases[i]])) + + // handle flux and convex deposit tokens + const baseTokens = tokens.filter((_, i) => names[i].endsWith('Convex Deposit')) + const fluxTokens = tokens.filter((_, i) => names[i].startsWith('Flux ')) + blacklistedTokens.push(...baseTokens) + blacklistedTokens.push(...fluxTokens) + tokens = tokens.filter((_, i) => !names[i].endsWith('Convex Deposit')) + tokens = tokens.filter((_, i) => !names[i].startsWith('Flux ')) + fluxTokens.forEach(token => { + fluxListWithOwner.push([token, rToken]) + fluxListWithOwner.push([token, manager]) + }) + // Update lpBalances for Curve tokens + await Promise.all(baseTokens.map((token) => genericUnwrapCvxDeposit({ api, token, owner: rToken }))) + await Promise.all(baseTokens.map((token) => genericUnwrapCvxDeposit({ api, token, owner: manager }))) + + ownerTokens.push([tokens, rToken]) + ownerTokens.push([tokens, manager]) })) - basketTokens.forEach((tokens, i) => { - ownerTokens.push([tokens, rTokens[i]]) - // ownerTokens.push([tokens, stRsrs[i]]) - ownerTokens.push([tokens, backingManagers[i]]) - }) + await unwrapCreamTokens(api.getBalances(), fluxListWithOwner, block) - return sumTokens2({ api, ownerTokens, blacklistedTokens: [rsr] }) + await sumTokens2({ api, ownerTokens, blacklistedTokens }) } async function staking(_time, block, _, { api }) { @@ -42,14 +65,16 @@ async function staking(_time, block, _, { api }) { } async function _getLogs(api) { - return getLogs({ - api, - target: deployerAddress, - topic: 'RTokenCreated(address,address,address,address,string)', - fromBlock: 16680995, - eventAbi: 'event RTokenCreated(address indexed main, address indexed rToken, address stRSR, address indexed owner, string version)', - onlyArgs: true, - }) + const resLog = (await Promise.all(deployerAddresses.map(deployerAddress => + getLogs({ + api, + target: deployerAddress, + topic: 'RTokenCreated(address,address,address,address,string)', + fromBlock: 16680995, + eventAbi: 'event RTokenCreated(address indexed main, address indexed rToken, address stRSR, address indexed owner, string version)', + onlyArgs: true, + })))).flat() + return resLog } module.exports = { From 3ecd4b97a5d04022209f370216f1dc01d6ea3d8a Mon Sep 17 00:00:00 2001 From: 0xfluxdev <119039041+0xfluxdev@users.noreply.github.com> Date: Thu, 11 May 2023 15:56:09 +0200 Subject: [PATCH 0340/1354] Add zkSync adapter to flux exchange (#6228) * Update pull_request_template.md * feat: Add flux ftm adapter * chore : Edit template * chore : Add flux fantom adapter * fix : Undo changes to template * minor fix * feat : Add zksync chain * feat : Add zksync chain * fix : change network name --------- Co-authored-by: fluxexchange <105048160+fluxexchange@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/flux-exchange/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/flux-exchange/index.js b/projects/flux-exchange/index.js index 4d05071180..89603cd3aa 100644 --- a/projects/flux-exchange/index.js +++ b/projects/flux-exchange/index.js @@ -5,9 +5,18 @@ const FTMVault = "0xc050733A325eEe50E544AcCbD38F6DACEd60ea6D"; const FTMStaking = "0x136F1bD4Bb930cD931Ed30310142c2f03a946AC0"; const WFTM = "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"; +// ZKSYNC +const zkSyncVault = "0x09Aa1138dfdfF855Df18DDAf08e92186D213700e"; +const zkSyncStaking = "0xFae2784FaE4D47316B487Bc0087a7C78D4809753"; +const WETH = "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91"; + module.exports = { fantom: { staking: staking(FTMStaking, WFTM), tvl: gmxExports({ vault: FTMVault }) + }, + era: { + staking: staking(zkSyncStaking, WETH), + tvl: gmxExports({ vault: zkSyncVault }) } }; \ No newline at end of file From 393157402316889f4853af46220ccba48a3d062e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 May 2023 16:03:05 +0200 Subject: [PATCH 0341/1354] Kom (#6240) * Add kommunitas token * Update index.js Add Staking V3 Pool * code fix --------- Co-authored-by: Kommunitas <84342954+kommunitas@users.noreply.github.com> Co-authored-by: Teddy Leno --- projects/kommunitas/index.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/projects/kommunitas/index.js b/projects/kommunitas/index.js index cda342866b..716a5e2ab8 100644 --- a/projects/kommunitas/index.js +++ b/projects/kommunitas/index.js @@ -2,17 +2,13 @@ const { stakings } = require("../helper/staking"); const KOM_TOKEN_CONTRACT = '0xC004e2318722EA2b15499D6375905d75Ee5390B8'; const KOM_STAKING_CONTRACT = [ "0x453d0a593d0af91e77e590a7935894f7ab1b87ec", - "0x8d37b12DB32E07d6ddF10979c7e3cDECCac3dC13" + "0x8d37b12DB32E07d6ddF10979c7e3cDECCac3dC13", + "0x8d34Bb43429c124E55ef52b5B1539bfd121B0C8D" ]; module.exports = { polygon: { tvl: () => ({}), - staking: stakings( - KOM_STAKING_CONTRACT, - KOM_TOKEN_CONTRACT, - "polygon", - `polygon:${KOM_TOKEN_CONTRACT}` - ) + staking: stakings(KOM_STAKING_CONTRACT, KOM_TOKEN_CONTRACT,) } }; \ No newline at end of file From 7fc317bd821895d3c54fa38cb0f5cef2703f3865 Mon Sep 17 00:00:00 2001 From: zther <132888027+zenithcash@users.noreply.github.com> Date: Thu, 11 May 2023 22:11:24 +0800 Subject: [PATCH 0342/1354] add new stake pool (#6236) --- projects/zenith/contracts.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/zenith/contracts.json b/projects/zenith/contracts.json index cb0d9eff53..4bdfd42b7f 100644 --- a/projects/zenith/contracts.json +++ b/projects/zenith/contracts.json @@ -18,6 +18,15 @@ "pid": 1, "name":"ZTH-ETH", "asset": "0xAC0155CBd306e41C1287E2c53e1306178397b823" + }, + { + "pid": 4, + "name":"stETH", + "asset": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84" + }, { + "pid": 5, + "name":"rETH", + "asset": "0xae78736Cd615f374D3085123A210448E74Fc6393" } ] } From f069a37a9b8dcc657935aaede1ff425c4b7f5dee Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 May 2023 16:14:54 +0200 Subject: [PATCH 0343/1354] deprecate bubbleswap v1 --- projects/bubbleswap/index.js | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/projects/bubbleswap/index.js b/projects/bubbleswap/index.js index 2869fffe4d..1d90435596 100644 --- a/projects/bubbleswap/index.js +++ b/projects/bubbleswap/index.js @@ -1,38 +1,9 @@ -const { default: axios } = require('axios'); - -async function fetch(){ - - const response = await axios.get('https://api.bubbleswap.io/analytics/api/v1/analytics/aggregate/liquidity/year', { - headers: { - //I would prefer the user agengt to be set to something like axios, or DefiLlama, but our WAF only allows the bellow - 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' - } - }); - - if(!response?.data?.ok - || !response?.data?.data - || !Array.isArray(response?.data?.data) - || !response?.data?.data?.length > 0) { - - return null; - - } - - const lastItem = response.data.data[response.data.data.length - 1]; - - if(isNaN(lastItem[1])){ - return null; - } - - return Number(lastItem[1]); - -} - module.exports = { - fetch, + fetch: () => 0, timetravel: false, methodology: "Data is retrieved from the api at https://api.bubbleswap.io", hallmarks: [ [1666569600, "Start V1 Rewards"], + [1683813600, "V1 Deprecation"], ] } \ No newline at end of file From d7f396f4e02de04204c0d84ea3b5de4f2cce38d7 Mon Sep 17 00:00:00 2001 From: Starmaker <130952005+starmakerzksync@users.noreply.github.com> Date: Thu, 11 May 2023 22:19:12 +0800 Subject: [PATCH 0344/1354] add starmaker tvl (#6237) * starmaker tvl starmaker tvl * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/starmaker/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/starmaker/index.js diff --git a/projects/starmaker/index.js b/projects/starmaker/index.js new file mode 100644 index 0000000000..c40d3eadde --- /dev/null +++ b/projects/starmaker/index.js @@ -0,0 +1,9 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + era: { + tvl: getUniTVL({ factory: '0x7096Cebc52012e2611a1E88c45bC54ee2A88dcB4', useDefaultCoreAssets: true, fetchBalances: true, }), + }, + methodology: "Counts liquidity in pools", +}; \ No newline at end of file From 2b3958619a7068dcac895656b1a766754dded980 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 May 2023 16:56:30 +0200 Subject: [PATCH 0345/1354] pine protocol: add polygon --- projects/helper/unwrapLPs.js | 9 +++++---- projects/pine-protocol/index.js | 24 +++++++++++++++++------- projects/solv-protocol/index.js | 2 +- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 97e6910c2a..d28ca0bbe2 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -366,7 +366,7 @@ tokensAndOwners [ [token, owner] - eg ["0xaaa", "0xbbb"] ] */ -async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereum", transformAddress, { resolveLP = false, unwrapAll = false, blacklistedLPs = [], skipFixBalances = false, abis = {}, ignoreFailed = false } = {}) { +async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereum", transformAddress, { resolveLP = false, unwrapAll = false, blacklistedLPs = [], skipFixBalances = false, abis = {}, permitFailure = false } = {}) { if (!transformAddress) transformAddress = await getChainTransform(chain) @@ -392,6 +392,7 @@ async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereu target: t[0], params: t[1] })), + permitFailure, abi: 'erc20:balanceOf', block, chain @@ -401,7 +402,7 @@ async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereu let balance = BigNumber(result.output) if (result.output === null || isNaN(+result.output)) { sdk.log('failed for', token, balance, balances[token]) - if (ignoreFailed) balance = BigNumber(0) + if (permitFailure) balance = BigNumber(0) else throw new Error('Unable to fetch balance for: ' + result.input.target) } balances[token] = BigNumber(balances[token] || 0).plus(balance).toFixed(0) @@ -636,7 +637,7 @@ async function sumTokens2({ resolveUniV3 = false, resolveArtBlocks = false, resolveNFTs = false, - ignoreFailed = false, + permitFailure = false, }) { if (api) { chain = api.chain ?? chain @@ -684,7 +685,7 @@ async function sumTokens2({ tokensAndOwners = getUniqueToA(tokensAndOwners) log(chain, 'summing tokens', tokensAndOwners.length) - await sumTokens(balances, tokensAndOwners, block, chain, transformAddress, { resolveLP, unwrapAll, blacklistedLPs, skipFixBalances: true, abis, ignoreFailed, }) + await sumTokens(balances, tokensAndOwners, block, chain, transformAddress, { resolveLP, unwrapAll, blacklistedLPs, skipFixBalances: true, abis, permitFailure, }) if (!skipFixBalances) { const fixBalances = await getFixBalances(chain) diff --git a/projects/pine-protocol/index.js b/projects/pine-protocol/index.js index eb6e9e6e49..3580c8ca0f 100644 --- a/projects/pine-protocol/index.js +++ b/projects/pine-protocol/index.js @@ -3,18 +3,22 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') async function _getLogs(api) { + const { factory, fromBlock } = config[api.chain] const logs = await getLogs({ api, - target: '0x19c56cb20e6e9598fc4d22318436f34981e481f9', + target: factory, topics: ['0xfe735a4766d74f0c8b076be3f254cfc301a851f3ac49c4ae35e7d48ab75cd69d'], - fromBlock: 16423090, + fromBlock, }) return logs.map(i => i.topics.slice(1).map(getAddress)) } async function tvl(_, _b, _cb, { api, }) { + const { factory, wrapped } = config[api.chain] const logs = await _getLogs(api) - return sumTokens2({ api, tokensAndOwners: logs.map(i => [i[1], i[0]]) }) + const tokensAndOwners = logs.map(i => [i[1], i[0]]) + tokensAndOwners.push([wrapped, factory]) + return sumTokens2({ api, tokensAndOwners, permitFailure: true }) } async function borrowed(_, _b, _cb, { api, }) { @@ -25,9 +29,15 @@ async function borrowed(_, _b, _cb, { api, }) { return balances } +const config = { + ethereum: { factory: '0x19c56cb20e6e9598fc4d22318436f34981e481f9', fromBlock: 16423090, wrapped: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', }, + polygon: { factory: '0x85b609f4724860fead57e16175e66cf1f51bf72d', fromBlock: 40378130, wrapped: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', }, +} + module.exports = { methodology: 'value of NFTs locked in pools as taken as tvl, tokens borrowed against it is counted towards borrowed', - ethereum: { - tvl, borrowed - } -} \ No newline at end of file +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl, borrowed, } +}) \ No newline at end of file diff --git a/projects/solv-protocol/index.js b/projects/solv-protocol/index.js index 2bd0327c29..5978e4fb1f 100644 --- a/projects/solv-protocol/index.js +++ b/projects/solv-protocol/index.js @@ -17,7 +17,7 @@ async function tvl() { const { api } = arguments[3] const chainId = api.getChainId() const tokens = await tokenList(chainId); - await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), ignoreFailed: true }) + await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) await graphEarn(api) } From f4efa6184348da9ea931c0c8b309ca65d1e2ad3e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 May 2023 18:03:19 +0200 Subject: [PATCH 0346/1354] update neopin --- projects/helper/tokenMapping.js | 3 +++ projects/neopin/index.js | 1 + 2 files changed, 4 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index b39c9cd01a..92ab66b806 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -48,6 +48,9 @@ const distressedAssts = new Set(Object.values({ }).map(i => i.toLowerCase())) const transformTokens = { + ethereum: { + '0xe0b469cb3eda0ece9e425cfeda4df986a55ea9f8': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' + } // Sample Code // cronos: { // "0x065de42e28e42d90c2052a1b49e7f83806af0e1f": "0x123", // CRK token is mispriced diff --git a/projects/neopin/index.js b/projects/neopin/index.js index ea4aae21f5..f9784d76cb 100644 --- a/projects/neopin/index.js +++ b/projects/neopin/index.js @@ -5,4 +5,5 @@ const { mergeExports } = require('../helper/utils') module.exports = mergeExports([ uniTvlExport('klaytn', '0x1a1F14ec33BF8c2e66731f46D0A706e8025b43e9'), uniTvlExport('polygon', '0x1289ae78422b94414c1F827C534a1fE8E31E71Aa'), + uniTvlExport('ethereum', '0x2D723f60ad8da76286B2aC120498A5EA6bAbC792'), ]) \ No newline at end of file From 7571ec967a8688cf042d251b9db78a4d2136dba1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 May 2023 18:06:37 +0200 Subject: [PATCH 0347/1354] update neopin staking --- projects/neopin-staking/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/neopin-staking/index.js b/projects/neopin-staking/index.js index b96b352764..5b8076cda5 100644 --- a/projects/neopin-staking/index.js +++ b/projects/neopin-staking/index.js @@ -6,10 +6,10 @@ const { nullAddress } = require('../helper/unwrapLPs'); module.exports = { klaytn: { tvl: sumTokensExport({ - chain: 'klaytn', owners: [ '0xDa664b81C13b050F9b0435D0B712218Aa8BB1609', '0x0D3ACA076712DE598DF856cEcEF76daD38F0A75b', + '0xf9d92BAd7b1410dfFB0a204B7aa418C9fd5A898F', ], tokens: [nullAddress], }), From f49b5ff5ac5ffd6a549f7b384ebfe60d3f567728 Mon Sep 17 00:00:00 2001 From: Kyborg Exchange <133257344+KyborgExchange@users.noreply.github.com> Date: Thu, 11 May 2023 20:00:47 +0200 Subject: [PATCH 0348/1354] Add Kyborg Exchange --- projects/KyborgExchange/index.js | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 projects/KyborgExchange/index.js diff --git a/projects/KyborgExchange/index.js b/projects/KyborgExchange/index.js new file mode 100644 index 0000000000..1506eeb302 --- /dev/null +++ b/projects/KyborgExchange/index.js @@ -0,0 +1,47 @@ +const sdk = require("@defillama/sdk"); +const { request, gql } = require("graphql-request"); + +const KYBORG_HUB = "0x25620d76654caC426229C85bE8eAEB010Ea25c8F"; + +async function tvl(_, block) { + const graphQuery = gql` + query poolQuery { + tokens { + id + } + } + `; + const tokens = ( + await request( + "https://api.thegraph.com/subgraphs/name/kyborgexchange/kyborgexchange", + graphQuery + ) + ).tokens.map(({ id }) => id); + + const tokensBalances = await Promise.all( + tokens.map( + async (token) => + ( + await sdk.api.abi.call({ + target: token, + abi: "erc20:balanceOf", + params: KYBORG_HUB, + block, + }) + ).output + ) + ); + + const balances = {}; + + tokens.forEach((token, i) => (balances[token] = tokensBalances[i])); + return balances; +} +module.exports = { + timetravel: true, + misrepresentedTokens: true, + methodology: `Counts the tokens balances of the KyborgHub contract`, + arbitrum: { + tvl, + }, +}; \ No newline at end of file From ea8dcd35a5fb80fdef508e2efc25b15ceb2dff1c Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Thu, 11 May 2023 20:27:11 +0200 Subject: [PATCH 0349/1354] Fix balance key in Caviar adapter --- package-lock.json | 4 ++-- projects/caviar/index.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 740dbf6135..88c915712a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8590,7 +8590,7 @@ "peer": true, "requires": { "@jest/types": "^26.6.2", - "ansi-regex": "5.0.1", + "ansi-regex": "^5.0.0", "ansi-styles": "^4.0.0", "react-is": "^17.0.1" } @@ -8885,7 +8885,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "5.0.1" + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { diff --git a/projects/caviar/index.js b/projects/caviar/index.js index 46426e8888..a738b57dbf 100644 --- a/projects/caviar/index.js +++ b/projects/caviar/index.js @@ -18,7 +18,7 @@ async function tvl(_, _b, _cb, { api, }) { const ethKey = 'ethereum:'+nullAddress return { ...balances, - [ethKey]: (balances[ethKey] ?? 0) * 2 + [ethKey]: (balances[nullAddress] ?? 0) * 2 } } From ef439fccc30650dd6e593e9ef24eb87818909b03 Mon Sep 17 00:00:00 2001 From: Sam Bugs Date: Thu, 11 May 2023 16:48:20 -0300 Subject: [PATCH 0350/1354] feat: add bnb to mean finance --- projects/meanfinance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/meanfinance/index.js b/projects/meanfinance/index.js index e29ec5c055..de54e2772e 100644 --- a/projects/meanfinance/index.js +++ b/projects/meanfinance/index.js @@ -59,6 +59,7 @@ module.exports = { optimism: getV2TvlObject('optimism'), polygon: getV2TvlObject('polygon'), arbitrum: getV2TvlObject('arbitrum'), + bsc: getV2TvlObject('bsc'), hallmarks: [ [1638850958, "V2 Beta launch on Optimism"], [1643602958, "V2 full launch"], From 760c4a9935c34f3fadd9077df2541f16c874a2e9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 May 2023 22:58:35 +0200 Subject: [PATCH 0351/1354] code refactor --- projects/KyborgExchange/index.js | 59 +++++++++----------------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/projects/KyborgExchange/index.js b/projects/KyborgExchange/index.js index 1506eeb302..b1559929ba 100644 --- a/projects/KyborgExchange/index.js +++ b/projects/KyborgExchange/index.js @@ -1,47 +1,20 @@ -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); +const { getLogs } = require('../helper/cache/getLogs'); +const { sumTokens2 } = require('../helper/unwrapLPs'); -const KYBORG_HUB = "0x25620d76654caC426229C85bE8eAEB010Ea25c8F"; - -async function tvl(_, block) { - const graphQuery = gql` - query poolQuery { - tokens { - id - } - } - `; - const tokens = ( - await request( - "https://api.thegraph.com/subgraphs/name/kyborgexchange/kyborgexchange", - graphQuery - ) - ).tokens.map(({ id }) => id); - - const tokensBalances = await Promise.all( - tokens.map( - async (token) => - ( - await sdk.api.abi.call({ - target: token, - abi: "erc20:balanceOf", - params: KYBORG_HUB, - block, - }) - ).output - ) - ); - - const balances = {}; - - tokens.forEach((token, i) => (balances[token] = tokensBalances[i])); - return balances; +const config = { + arbitrum: { factory: '0x25620d76654caC426229C85bE8eAEB010Ea25c8F', fromBlock: 89067435 }, } + module.exports = { - timetravel: true, - misrepresentedTokens: true, methodology: `Counts the tokens balances of the KyborgHub contract`, - arbitrum: { - tvl, - }, -}; \ No newline at end of file +}; + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ api, target: factory, onlyArgs: true, eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, bytes32 indexed poolId)', topics: ['0xec5dc6309c83a50f60f4a1fae9422b2c406da78c579b9b12b92d033db37c7194'], fromBlock, }) + return sumTokens2({ api, owner: factory, tokens: logs.map(i => [i.token0, i.token1]).flat()}) + } + } +}) \ No newline at end of file From 0b8f785a46fe3b68342a1e621eae2fb196c1dba7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 00:32:10 +0200 Subject: [PATCH 0352/1354] fix caviar --- projects/caviar/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/projects/caviar/index.js b/projects/caviar/index.js index a738b57dbf..03c27c7a52 100644 --- a/projects/caviar/index.js +++ b/projects/caviar/index.js @@ -1,5 +1,7 @@ const { getLogs, } = require('../helper/cache/getLogs') const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const sdk = require('@defillama/sdk') +const { getUniqueAddresses } = require('../helper/utils') async function tvl(_, _b, _cb, { api, }) { const factory = '0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840' @@ -7,18 +9,16 @@ async function tvl(_, _b, _cb, { api, }) { api, target: factory, topics: ['0x94e35d08a6788cb2901c35019eb1105f35dcfdac00943412ebe0236470ee420f'], - fromBlock: 16480338, + fromBlock: 16480338, eventAbi: 'event Create (address indexed nft, address indexed baseToken, bytes32 indexed merkleRoot)', onlyArgs: true, }) const calls = logs.map(i => ([i.nft, i.baseToken, i.merkleRoot])) - const pools = await api.multiCall({ abi: "function pairs(address, address, bytes32) view returns (address)", calls: calls.map(i => ({ params: i})), target: factory }) - - const balances = await sumTokens2({ api, owners: pools, tokens: [nullAddress]}) - const ethKey = 'ethereum:'+nullAddress + const pools = await api.multiCall({ abi: "function pairs(address, address, bytes32) view returns (address)", calls: calls.map(i => ({ params: i })), target: factory }) + let { output: balances } = await sdk.api.eth.getBalances({ block: _b, targets: getUniqueAddresses(pools) }) + balances = balances.reduce((agg, i) => agg + i.balance/1e18, 0) return { - ...balances, - [ethKey]: (balances[nullAddress] ?? 0) * 2 + ethereum: balances * 2, } } From 33fcf712256dadabba8caa6f0dbccc4e559b67f3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 01:35:08 +0200 Subject: [PATCH 0353/1354] fix lendexe --- projects/lendexe/index.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/projects/lendexe/index.js b/projects/lendexe/index.js index bbb90cd4b4..de1112638a 100644 --- a/projects/lendexe/index.js +++ b/projects/lendexe/index.js @@ -7,16 +7,19 @@ const u = undefined const { tvl, borrowed } = compoundExports('0x2c7b7A776b5c3517B77D05B9313f4699Fb38a8d3',u,'0x36e66547e27a5953f6ca3d46cc2663d9d6bdc59e', nullAddress, undefined, undefined, { fetchBalances: true, blacklistedTokens: ['0x53011e93f21ec7a74cdfbb7e6548f1abce306833'] }) const mapping = { - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': 6, + '0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': 6, '0xdac17f958d2ee523a2206206994597c13d831ec7': 6, '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599': 8, } async function borrowedWrapped(_, _1, _2, { api }) { const borrowedRes = await borrowed(_, _1, _2, { api }) Object.entries(mapping).forEach(([t, decimals]) => { - const token = 'ethereum:'+t - if (!borrowedRes[token]) return; - borrowedRes[token] /= 10 ** (18 - decimals) + const regex = new RegExp(t, 'gi') + Object.keys(borrowedRes).forEach(key => { + if (regex.test(key)) { + borrowedRes[key] /= 10 ** (18 - decimals) + } + }) }) return borrowedRes } From 41efb785981aff8ce7d0582483e710ee1bec810e Mon Sep 17 00:00:00 2001 From: Beluga <107982136+Belugadex@users.noreply.github.com> Date: Fri, 12 May 2023 07:13:09 +0000 Subject: [PATCH 0354/1354] Add Belugadex Beluga Protocol is a multichain stableswap AMM that aims to solve the problem of liquidity fragmentation with seamless cross-chain swaps. arb.beluga.so --- projects/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/index.js diff --git a/projects/index.js b/projects/index.js new file mode 100644 index 0000000000..73547c2b13 --- /dev/null +++ b/projects/index.js @@ -0,0 +1,28 @@ +const sdk = require("@defillama/sdk") +const { staking } = require("../helper/staking"); +const { sumTokens2 } = require('../helper/unwrapLPs') +const assetsAbi = require("./abi") +const asssetsContract = "0xF6Eb0eE167e3b8a43E74999C47720140A9431448" + +const chain = "arbitrum" + +async function tvl(timestamp, ethereumBlock, chainBlocks) { + const block = chainBlocks[chain]; + const { output: toa } = await sdk.api.abi.call({ + target: asssetsContract, + abi: assetsAbi.getAssets, + chain, block, + }) + return sumTokens2({ chain: chain, block, tokensAndOwners: toa, }) +} + +module.exports = { + arbitrum:{ + tvl, + staking: staking( + "0x7fbdEb84D5966c1C325D8CB2E01593D74c9A41Cd", //vetoken + "0x09090e22118b375f2c7b95420c04414E4bf68e1A", //bela + "arbitrum" + ), + }, +}; From 11db6d065a3865fed981845bca88299a9dad3345 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 09:55:25 +0200 Subject: [PATCH 0355/1354] code refactor --- projects/{ => beluga-dex}/index.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) rename projects/{ => beluga-dex}/index.js (50%) diff --git a/projects/index.js b/projects/beluga-dex/index.js similarity index 50% rename from projects/index.js rename to projects/beluga-dex/index.js index 73547c2b13..258f7c6442 100644 --- a/projects/index.js +++ b/projects/beluga-dex/index.js @@ -1,19 +1,13 @@ -const sdk = require("@defillama/sdk") const { staking } = require("../helper/staking"); const { sumTokens2 } = require('../helper/unwrapLPs') -const assetsAbi = require("./abi") const asssetsContract = "0xF6Eb0eE167e3b8a43E74999C47720140A9431448" -const chain = "arbitrum" - -async function tvl(timestamp, ethereumBlock, chainBlocks) { - const block = chainBlocks[chain]; - const { output: toa } = await sdk.api.abi.call({ +async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { + const tokensAndOwners = await api.call({ target: asssetsContract, - abi: assetsAbi.getAssets, - chain, block, + abi: "function getAssets() view returns (address[][])", }) - return sumTokens2({ chain: chain, block, tokensAndOwners: toa, }) + return sumTokens2({ api, tokensAndOwners, }) } module.exports = { @@ -22,7 +16,6 @@ module.exports = { staking: staking( "0x7fbdEb84D5966c1C325D8CB2E01593D74c9A41Cd", //vetoken "0x09090e22118b375f2c7b95420c04414E4bf68e1A", //bela - "arbitrum" ), }, }; From 57056f1606d6c6b9a60e3bed0755e0db8cc241df Mon Sep 17 00:00:00 2001 From: cantlee <133316389+cantlee@users.noreply.github.com> Date: Fri, 12 May 2023 15:57:48 +0800 Subject: [PATCH 0356/1354] Request to add DEFI project starkex.org (#6248) * Create index.js add startex to sdk * Create abi.js add startex abi to sdk * Create api.js add "tvl" function to sdk --- projects/starkex/abi.js | 87 +++++++++++++++++++++++++++++++++++++++ projects/starkex/api.js | 38 +++++++++++++++++ projects/starkex/index.js | 1 + 3 files changed, 126 insertions(+) create mode 100644 projects/starkex/abi.js create mode 100644 projects/starkex/api.js create mode 100644 projects/starkex/index.js diff --git a/projects/starkex/abi.js b/projects/starkex/abi.js new file mode 100644 index 0000000000..7ae4cfbdf7 --- /dev/null +++ b/projects/starkex/abi.js @@ -0,0 +1,87 @@ +const fabis = [{ + "name": "allPairs", + "type": "function", + "inputs": [ + { + "name": "index", + "type": "felt" + } + ], + "outputs": [ + { + "name": "pair", + "type": "felt" + } + ], + "stateMutability": "view" +}, +{ + "name": "allPairsLength", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "length", + "type": "felt" + } + ], + "stateMutability": "view" +} +] + +const pabis = [ + { + "name": "token0", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "token0", + "type": "felt" + } + ], + "stateMutability": "view" + }, + { + "name": "token1", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "token1", + "type": "felt" + } + ], + "stateMutability": "view" + }, + { + "name": "getReserves", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "reserve0", + "type": "felt" + }, + { + "name": "reserve1", + "type": "felt" + }, + { + "name": "blockTimestampLast", + "type": "felt" + } + ], + "stateMutability": "view" + }, +] + + +const factory = {} +const pair = {} +fabis.forEach(i => factory[i.name] = i) +pabis.forEach(i => pair[i.name] = i) + +module.exports = { + factory, pair, fabis, pabis, +} diff --git a/projects/starkex/api.js b/projects/starkex/api.js new file mode 100644 index 0000000000..5ba709b9df --- /dev/null +++ b/projects/starkex/api.js @@ -0,0 +1,38 @@ + +const { call, multiCall, parseAddress } = require('../helper/chain/starknet') +const abi = require('./abi') +const { transformDexBalances } = require('../helper/portedTokens') +const { getParamCalls } = require('../helper/utils') + +async function tvl() { + const factory = '0x00d018832f3b2b082f7ebaa3eae2a5323708a7bb7598db620c0dba0e985e9a53' + let pairLength = await call({ target: factory, abi: abi.factory.allPairsLength}) + let pairs = await multiCall({ abi: abi.factory.allPairs, target: factory, calls: getParamCalls(+pairLength)}) + + const calls = pairs.map(i => parseAddress(i)) + + const [ token0s, token1s, reserves ] = await Promise.all([ + multiCall({ abi: abi.pair.token0, calls }), + multiCall({ abi: abi.pair.token1, calls }), + multiCall({ abi: abi.pair.getReserves, calls }), + ]) + + const data = [] + reserves.forEach((reserve, i) => { + data.push({ + token0: parseAddress(token0s[i]), + token1: parseAddress(token1s[i]), + token0Bal: +reserve.reserve0, + token1Bal: +reserve.reserve1, + }) + }) + + return transformDexBalances({chain:'starknet', data}) +} + +module.exports = { + timetravel: false, + starknet: { + tvl, + } +} diff --git a/projects/starkex/index.js b/projects/starkex/index.js new file mode 100644 index 0000000000..11f5177a67 --- /dev/null +++ b/projects/starkex/index.js @@ -0,0 +1 @@ +module.exports = require('./api') From f79b44ca02dbb51e2f795b4fa913b9c4c7f56067 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 10:55:52 +0200 Subject: [PATCH 0357/1354] add https://steadefi.com --- projects/steadefi/index.js | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 projects/steadefi/index.js diff --git a/projects/steadefi/index.js b/projects/steadefi/index.js new file mode 100644 index 0000000000..f629f62336 --- /dev/null +++ b/projects/steadefi/index.js @@ -0,0 +1,43 @@ +const { getConfig } = require('../helper/cache'); +const { sumTokens2 } = require('../helper/unwrapLPs'); + +async function getProjectInfo() { + return Promise.all([ + getConfig('steadefi/lendingPools', 'https://api.steadefi.com/lending-pools'), + getConfig('steadefi/vaults', 'https://api.steadefi.com/vaults'), + ]) +} + +const config = { + arbitrum: { fsglp: '0x1aDDD80E6039594eE970E5872D247bf0414C8903' }, + avax: { fsglp: '0x9e295B5B976a184B14aD8cd72413aD846C299660' }, +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const { fsglp } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const chainId = api.getChainId() + let [lendingPools, vaults] = await getProjectInfo() + lendingPools = lendingPools.filter(i => i.chainId === chainId).map(i => i.address) + vaults = vaults.filter(i => i.chainId === chainId).map(i => i.address) + const lpAssets = await api.multiCall({ abi: 'address:asset', calls: lendingPools }) + const managers = await api.multiCall({ abi: 'address:manager', calls: vaults }) + let lpTokens = await api.multiCall({ abi: 'address:lpToken', calls: managers, permitFailure: true, }) + const glpPoolManagers = managers.filter((_, i) => !lpTokens[i]) + glpPoolManagers.forEach(v => { + lpAssets.push(fsglp) + lendingPools.push(v) + }) + const lpPoolManagers = managers.filter((_, i) => lpTokens[i]) + lpTokens = lpTokens.filter(i => i) + const bals = await api.multiCall({ abi: 'uint256:lpTokenAmt', calls: lpPoolManagers }) + api.addTokens(lpTokens, bals) + // api.add('tether', tokenValue.reduce((a, v) => a + v/1e13, 0), { skipChain: true}) + return sumTokens2({ api, tokensAndOwners2: [lpAssets, lendingPools] }) + } + } +}) \ No newline at end of file From ee1dd5bde7383ca2a79bb3f366943d3d93a66a68 Mon Sep 17 00:00:00 2001 From: kinglee Date: Fri, 12 May 2023 19:48:14 +0800 Subject: [PATCH 0358/1354] add satori adapter --- projects/satori/index.js | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 projects/satori/index.js diff --git a/projects/satori/index.js b/projects/satori/index.js new file mode 100644 index 0000000000..c3b0ab117c --- /dev/null +++ b/projects/satori/index.js @@ -0,0 +1,48 @@ +const sdk = require("@defillama/sdk"); +const BigNumber = require("bignumber.js"); + +const USDT_TOKEN_CONTRACT = "0x1E4a5963aBFD975d8c9021ce480b42188849D41d"; +const WALLET_ADDR = [ + "0x62e724cB4d6C6C7317e2FADe4A03001Fe7856940", + "0xA59a2365D555b24491B19A5093D3c99b119c2aBb", +]; +async function get_blance(address, api) { + let mount; + let sum = new BigNumber(0); + for (addr of address) { + // console.log(addr); + const collateralBalance = await api.call({ + abi: "erc20:balanceOf", + target: USDT_TOKEN_CONTRACT, + params: [addr], + }); + mount = new BigNumber(collateralBalance); + // console.log(mount); + sum = sum.plus(mount); + } + // console.log(sum); + return sum.toString(); +} + +async function tvl(_, _1, _2, { api }) { + const balances = {}; + const collateralBalance = await get_blance(WALLET_ADDR, api); + await sdk.util.sumSingleBalance( + balances, + USDT_TOKEN_CONTRACT, + collateralBalance, + api.chain + ); + // console.log(balances); + return balances; +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: + "TVL includes the total token value inside the protocol's liquidity pools.", + polygon_zkevm: { + tvl, + }, +}; From 57b476655d8c716843388263d52a3de2ad2e8125 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 12 May 2023 13:21:20 +0100 Subject: [PATCH 0359/1354] 3/3 treasuries --- projects/treasury/fei-protocol.js | 14 +++++++++++ projects/treasury/synthetix.js | 4 ++- projects/treasury/tempus-finance.js | 19 +++++++++++++++ projects/treasury/woofi.js | 38 +++++++++++++++++++++++++++++ projects/treasury/yam-finance.js | 17 +++++++++++++ 5 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 projects/treasury/fei-protocol.js create mode 100644 projects/treasury/tempus-finance.js create mode 100644 projects/treasury/woofi.js create mode 100644 projects/treasury/yam-finance.js diff --git a/projects/treasury/fei-protocol.js b/projects/treasury/fei-protocol.js new file mode 100644 index 0000000000..abc4bb0b95 --- /dev/null +++ b/projects/treasury/fei-protocol.js @@ -0,0 +1,14 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x8d5ed43dca8c2f7dfb20cf7b53cc7e593635d7b9"; +const TRIBE = "0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ], + owners: [treasury], + ownTokens: [TRIBE], + }, +}) \ No newline at end of file diff --git a/projects/treasury/synthetix.js b/projects/treasury/synthetix.js index 68352e66df..e89bf5a173 100644 --- a/projects/treasury/synthetix.js +++ b/projects/treasury/synthetix.js @@ -1,6 +1,7 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); const synthetixTreasury = "0x99f4176ee457afedffcb1839c7ab7a030a5e4a92"; +const treasury = "0xeb3107117fead7de89cd14d463d340a2e6917769" const SNX = "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"; @@ -17,8 +18,9 @@ module.exports = treasuryExports({ '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51',//sUSD '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32',//LIDO '0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3',//RAD + '0x3C0FFFF15EA30C35d7A85B85c0782D6c94e1d238' ], - owners: [synthetixTreasury], + owners: [synthetixTreasury, treasury], ownTokens: [SNX], }, }) \ No newline at end of file diff --git a/projects/treasury/tempus-finance.js b/projects/treasury/tempus-finance.js new file mode 100644 index 0000000000..fc892bb24d --- /dev/null +++ b/projects/treasury/tempus-finance.js @@ -0,0 +1,19 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xab40a7e3cef4afb323ce23b6565012ac7c76bfef"; +const TEMP = "0xA36FDBBAE3c9d55a1d67EE5821d53B50B63A1aB9" +const LP = "0x514f35a92A13bc7093f299AF5D8ebb1387E42D6B" +const LP2 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", + + ], + owners: [treasury], + ownTokens: [TEMP, LP, LP2], + resolveLP: true, + }, +}) \ No newline at end of file diff --git a/projects/treasury/woofi.js b/projects/treasury/woofi.js new file mode 100644 index 0000000000..81892442cc --- /dev/null +++ b/projects/treasury/woofi.js @@ -0,0 +1,38 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasuryAVAX = "0xb54382c680b0ad037c9f441a8727ca6006fe2dd0"; +const treasuryETH = "0xfa2d1f15557170f6c4a4c5249e77f534184cdb79" +const WOO = "0x4691937a7508860F876c9c0a2a617E7d9E945D4B" +const WOOBSC= "0x4691937a7508860F876c9c0a2a617E7d9E945D4B" +const LP = "0x2FC8bC3eE171eD5610ba3093909421E90b47Fc07" +const LP2 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" +const treasuryBSC = "0xfd899c7c5ed84537e2acfc998ce26c3797654ae8" + +module.exports = treasuryExports({ + avax: { + tokens: [ + nullAddress, + "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664" + ], + owners: [treasuryAVAX], + }, + ethereum: { + tokens: [ + nullAddress, + "0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd", + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + + ], + owners: [treasuryETH], + ownTokens: [WOO, LP, LP2], + resolveLP: true, + }, + bsc: { + tokens: [ + nullAddress, + "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" + ], + owners: [treasuryBSC], + ownTokens: [WOOBSC], + }, +}) \ No newline at end of file diff --git a/projects/treasury/yam-finance.js b/projects/treasury/yam-finance.js new file mode 100644 index 0000000000..ce58d163d8 --- /dev/null +++ b/projects/treasury/yam-finance.js @@ -0,0 +1,17 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const treasury ="0x744d16d200175d20e6d8e5f405aefb4eb7a962d1" +const treasury2 = "0x97990b693835da58a281636296d2bf02787dea17" +const YAM = "0x0AaCfbeC6a24756c20D41914F2caba817C0d8521" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + + ], + owners: [treasury, treasury2], + ownTokens: [YAM], + }, +}) \ No newline at end of file From 20ec6122eb5209a37c334552e1163ceefbf07ced Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 14:35:08 +0200 Subject: [PATCH 0360/1354] Nutbox (#6251) * add nutbox * add enuls tvl * udpate gql * del log * udpate * fix * nutbox: code refactor --------- Co-authored-by: wangxi --- projects/nutbox/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/nutbox/index.js diff --git a/projects/nutbox/index.js b/projects/nutbox/index.js new file mode 100644 index 0000000000..5625e13feb --- /dev/null +++ b/projects/nutbox/index.js @@ -0,0 +1,30 @@ +const { getLogs } = require('../helper/cache/getLogs'); +const { sumUnknownTokens } = require('../helper/unknownTokens'); + +const config = { + bsc: { factory: '0xf870724476912057c807056b29c1161f5fe0199a', fromBlock: 15414926 }, + enuls: { factory: '0xb71A12De824B837eCD30D41384e80C8CDFb5D694', fromBlock: 768727 }, +} + +module.exports = { + misrepresentedTokens: true, +}; + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: () => ({}), + staking: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x246afd9fb9e1733d63ee77f86f5d1440fb048c65e36822f48d468d9e5e7b8f21'], + eventAbi: 'event ERC20StakingCreated(address indexed pool, address indexed community, string name, address erc20Token)', + onlyArgs: true, + fromBlock, + }) + return sumUnknownTokens({ api, tokensAndOwners: logs.map(i => [i.erc20Token, i.pool]), useDefaultCoreAssets: true, }) + } + } +}) + From 2ca01606d598b0e4d3e5b659a0cae3d89ac7f45b Mon Sep 17 00:00:00 2001 From: Fei Yang Date: Fri, 12 May 2023 22:36:46 +1000 Subject: [PATCH 0361/1354] add sandclock v2 vaults (#6252) --- projects/sandclock/index.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/projects/sandclock/index.js b/projects/sandclock/index.js index 328404beaf..218997bd4b 100644 --- a/projects/sandclock/index.js +++ b/projects/sandclock/index.js @@ -2,27 +2,35 @@ const sdk = require('@defillama/sdk'); const { sumTokens2 } = require('../helper/unwrapLPs') const LUSD = '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'; +const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; +const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; const YEARN_VAULT = '0x4fe4bf4166744bcbc13c19d959722ed4540d3f6a'; -const YERAN_STRATEGY = '0x9043268b2e280de7df8aafe7feb86e553bd90fdd'; const LIQUITY_VAULT = '0x91a6194f1278f6cf25ae51b604029075695a74e5'; -const LIQUITY_STRATEGY = '0x537ee18ca78c42e1e7fb87fecfe9fc811c3d3575'; +const WETH_VAULT = '0x1Fc623b96c8024067142Ec9c15D669E5c99c5e9D'; +const USDC_VAULT = '0x1038Ff057b7092f17807358c6f68b42661d15caB'; -const vaults = [YEARN_VAULT, LIQUITY_VAULT]; -const strategies = [YERAN_STRATEGY, LIQUITY_STRATEGY]; +const v1Vaults = [YEARN_VAULT, LIQUITY_VAULT]; +const v2Vaults = [WETH_VAULT, USDC_VAULT]; async function tvl(_, _b, _cb, { api, chain, block, }) { const balances = {} - const strategyBalances = await api.multiCall({ - abi: 'uint256:investedAssets', - calls: strategies, + const v1VaultBalances = await api.multiCall({ + abi: 'uint256:totalUnderlying', + calls: v1Vaults, }) - strategyBalances.forEach(i => sdk.util.sumSingleBalance(balances, LUSD, i, chain)) - return sumTokens2({ balances, chain, block, tokens: [LUSD], owners: vaults, }) + v1VaultBalances.forEach(i => sdk.util.sumSingleBalance(balances, LUSD, i, chain)) + const v2VaultBalances = await api.multiCall({ + abi: 'uint256:totalAssets', + calls: v2Vaults, + }) + sdk.util.sumSingleBalance(balances, WETH, v2VaultBalances[0], chain) + sdk.util.sumSingleBalance(balances, USDC, v2VaultBalances[1], chain) + return sumTokens2({ balances, chain, block, }) } module.exports = { misrepresentedTokens: false, - methodology: 'add underlying asset balances in all the vaults and strategies together.', + methodology: 'add underlying asset balances in all the vaults together.', doublecounted: true, start: 15308000, // The first vault YEARN_VAULT was deployed ethereum: { From 305dd32dd562cbd704cc9aa73491cf8da03fb6c6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 15:50:02 +0200 Subject: [PATCH 0362/1354] fix treasuries --- projects/treasury/illuvium.js | 8 ++++++-- projects/treasury/inverse.js | 2 +- projects/treasury/liondex.js | 1 - projects/treasury/mimo-protocol.js | 10 +++++++--- projects/treasury/railgun.js | 1 - projects/treasury/stargate.js | 2 +- projects/treasury/tempus-finance.js | 6 +++--- projects/treasury/woofi.js | 4 ++-- 8 files changed, 20 insertions(+), 14 deletions(-) diff --git a/projects/treasury/illuvium.js b/projects/treasury/illuvium.js index 024ba7ac08..3a421b1f26 100644 --- a/projects/treasury/illuvium.js +++ b/projects/treasury/illuvium.js @@ -1,4 +1,4 @@ -const { treasuryExports } = require("../helper/treasury"); +const { treasuryExports, nullAddress } = require("../helper/treasury"); const Treasury = "0x58c37a622cdf8ace54d8b25c58223f61d0d738aa"; @@ -6,6 +6,10 @@ module.exports = treasuryExports({ arbitrum: { tokens: [], owners: [Treasury], - ownTokens: ['0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E'], }, + ethereum: { + tokens: [nullAddress, '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xdac17f958d2ee523a2206206994597c13d831ec7', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', '0x5afe3855358e112b5647b952709e6165e1c1eeee' ], + owners: [Treasury], + ownTokens: ['0x767fe9edc9e0df98e07454847909b5e959d7ca0e'], + } }) \ No newline at end of file diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index 4a37bbae41..7f43db3452 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -30,7 +30,6 @@ module.exports = treasuryExports({ "0x7f50786A0b15723D741727882ee99a0BF34e3466", // Stake DAO sdCRV Gauge "0x445494F823f3483ee62d854eBc9f58d5B9972A25", // 50DOLA-50DBR "0xb204BF10bc3a5435017D3db247f56dA601dFe08A", // 50DOLA-50WETH - "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", // UNI V3 DOLA + DBR "0x7e05540A61b531793742fde0514e6c136b5fbAfE", // xFODL "0xAD038Eb671c44b853887A7E32528FaB35dC5D710", // DBR ], @@ -41,6 +40,7 @@ module.exports = treasuryExports({ "0xA5D7A7690B72a89B7b720E43fC9cBda5419d0C71", // 50INV-50DOLA Aura Deposit Vault // "0x9c7305eb78a432ced5C4D14Cac27E8Ed569A2e26", // veNFT ], + resolveUniV3: true, }, optimism: { tokens: [ diff --git a/projects/treasury/liondex.js b/projects/treasury/liondex.js index 532476687e..70abeeca24 100644 --- a/projects/treasury/liondex.js +++ b/projects/treasury/liondex.js @@ -11,7 +11,6 @@ module.exports = treasuryExports({ nullAddress, "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", "0x8971dFb268B961a9270632f28B24F2f637c94244", - "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" ], owners: [Treasury], ownTokens: [LION], diff --git a/projects/treasury/mimo-protocol.js b/projects/treasury/mimo-protocol.js index b9df0b7388..9411fe80be 100644 --- a/projects/treasury/mimo-protocol.js +++ b/projects/treasury/mimo-protocol.js @@ -33,18 +33,22 @@ module.exports = treasuryExports({ ], owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], - ownTokens: [MIMO, MIMOfantom, MIMOpolygon], + ownTokens: [MIMO,], }, polygon: { tokens: [ nullAddress, '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174'//USDC - ] + ], + owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], + ownTokens: [MIMOpolygon,], }, fantom: { tokens: [ nullAddress, '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75'//USDC - ] + ], + owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], + ownTokens: [MIMOfantom,], } }) \ No newline at end of file diff --git a/projects/treasury/railgun.js b/projects/treasury/railgun.js index ec56a2a580..f98461d0d6 100644 --- a/projects/treasury/railgun.js +++ b/projects/treasury/railgun.js @@ -90,7 +90,6 @@ module.exports = treasuryExports({ "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",//usdt "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",//dai "0x1a3acf6D19267E2d3e7f898f42803e90C9219062",//fxs - "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",//wsteth "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",//wbtc "0xE5417Af564e4bFDA1c483642db72007871397896",//gns "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",//avax diff --git a/projects/treasury/stargate.js b/projects/treasury/stargate.js index 6375e38706..2fb7d0afe7 100644 --- a/projects/treasury/stargate.js +++ b/projects/treasury/stargate.js @@ -127,8 +127,8 @@ module.exports = treasuryExports({ "0x296F55F8Fb28E498B858d0BcDA06D955B2Cb3f97", // STG "0xec376c3856a4232bB6Ed9752d29402DDCD09A9A3", // STG/USDC RAKIS-5 "0xE7D2E422098D8b3AF11695A734d347563ae160Cb", // bb-STG-USD-gauge - "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", // STG-USDC UNI-V3 ], + resolveUniV3: true, }, fantom: { owners: [fantom], diff --git a/projects/treasury/tempus-finance.js b/projects/treasury/tempus-finance.js index fc892bb24d..1e2247fdc2 100644 --- a/projects/treasury/tempus-finance.js +++ b/projects/treasury/tempus-finance.js @@ -3,7 +3,6 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xab40a7e3cef4afb323ce23b6565012ac7c76bfef"; const TEMP = "0xA36FDBBAE3c9d55a1d67EE5821d53B50B63A1aB9" const LP = "0x514f35a92A13bc7093f299AF5D8ebb1387E42D6B" -const LP2 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" module.exports = treasuryExports({ ethereum: { @@ -12,8 +11,9 @@ module.exports = treasuryExports({ "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", ], - owners: [treasury], - ownTokens: [TEMP, LP, LP2], + owners: [treasury, LP], + ownTokens: [TEMP], resolveLP: true, + resolveUniV3: true, }, }) \ No newline at end of file diff --git a/projects/treasury/woofi.js b/projects/treasury/woofi.js index 81892442cc..d16fb42ae4 100644 --- a/projects/treasury/woofi.js +++ b/projects/treasury/woofi.js @@ -5,7 +5,6 @@ const treasuryETH = "0xfa2d1f15557170f6c4a4c5249e77f534184cdb79" const WOO = "0x4691937a7508860F876c9c0a2a617E7d9E945D4B" const WOOBSC= "0x4691937a7508860F876c9c0a2a617E7d9E945D4B" const LP = "0x2FC8bC3eE171eD5610ba3093909421E90b47Fc07" -const LP2 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" const treasuryBSC = "0xfd899c7c5ed84537e2acfc998ce26c3797654ae8" module.exports = treasuryExports({ @@ -24,8 +23,9 @@ module.exports = treasuryExports({ ], owners: [treasuryETH], - ownTokens: [WOO, LP, LP2], + ownTokens: [WOO, LP], resolveLP: true, + resolveUniV3: true, }, bsc: { tokens: [ From 5e4a25ccc1edd354193da5ab1211d1e70594fc3c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 17:47:57 +0200 Subject: [PATCH 0363/1354] fix rari --- projects/rari/index.js | 62 ++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/projects/rari/index.js b/projects/rari/index.js index f235779b61..215dea9243 100644 --- a/projects/rari/index.js +++ b/projects/rari/index.js @@ -5,6 +5,8 @@ const { default: BigNumber } = require("bignumber.js"); const { getCompoundV2Tvl } = require('../helper/compound') const { pool2 } = require('../helper/pool2'); const { getBlock } = require("../helper/http"); +const { sliceIntoChunks } = require("../helper/utils"); +const { sumTokens2 } = require("../helper/unwrapLPs"); const earnETHPoolFundControllerAddressesIncludingLegacy = [ '0xD9F223A36C2e398B0886F945a7e556B41EF91A3C', @@ -17,12 +19,12 @@ const earnDAIPoolControllerAddressesIncludingLegacy = [ ] const earnStablePoolAddressesIncludingLegacy = [ '0x4a785fa6fcd2e0845a24847beb7bddd26f996d4d', - '0x27C4E34163b5FD2122cE43a40e3eaa4d58eEbeaF', - '0x318cfd99b60a63d265d2291a4ab982073fbf245d', - '0xb6b79D857858004BF475e4A57D4A446DA4884866', - '0xD4be7E211680e12c08bbE9054F0dA0D646c45228', - '0xB202cAd3965997f2F5E67B349B2C5df036b9792e', - '0xe4deE94233dd4d7c2504744eE6d34f3875b3B439' + // '0x27C4E34163b5FD2122cE43a40e3eaa4d58eEbeaF', + // '0x318cfd99b60a63d265d2291a4ab982073fbf245d', + // '0xb6b79D857858004BF475e4A57D4A446DA4884866', + // '0xD4be7E211680e12c08bbE9054F0dA0D646c45228', + // '0xB202cAd3965997f2F5E67B349B2C5df036b9792e', + // '0xe4deE94233dd4d7c2504744eE6d34f3875b3B439' ] const fusePoolLensAddress = '0x8dA38681826f4ABBe089643D2B3fE4C6e4730493' const fusePoolDirectoryAddress = '0x835482FE0532f169024d5E9410199369aAD5C77E' @@ -47,15 +49,24 @@ const tokenMapWithKeysAsSymbol = { const fusePoolData = {} async function getFusePoolData(pools, block) { - const data = await sdk.api.abi.multiCall({ + console.log({ target: fusePoolLensAddress, abi: abi['getPoolSummary'], block, - calls: pools.map((poolInfo) => ({ - params: [poolInfo[2]] - })) + calls: pools.map(i => i.comptroller) }) - requery(data, 'ethereum', block, abi['getPoolSummary']) + const data = { output: [] } + const chunks = sliceIntoChunks(pools.map(i => ({ params: i.comptroller })), 25) + for (const chunk of chunks) { + const items = await sdk.api2.abi.multiCall({ + target: fusePoolLensAddress, + abi: abi['getPoolSummary'], + block, + calls: chunk + }) + console.log(items) + data.output.push(...items.output) + } return data } @@ -72,6 +83,7 @@ async function getFusePools(timestamp, block, balances, borrowed) { fusePoolData[block] = getFusePoolData(fusePools, block) const poolSummaries = await fusePoolData[block] + console.log(poolSummaries) for (let summaryResult of poolSummaries.output) { if (summaryResult.success) { @@ -92,7 +104,7 @@ async function getFusePools(timestamp, block, balances, borrowed) { } async function borrowed(timestamp, block) { - if(block > 14684686){ + if (block > 14684686) { return {} // after fei hack } const balances = {} @@ -177,25 +189,41 @@ async function tvl(timestamp, block) { await getBalancesFromEarnPool(earnStablePoolAddressesIncludingLegacy) // Fuse - await getFusePools(timestamp, block, balances, false) + // await getFusePools(timestamp, block, balances, false) return balances } +async function fuseTvl(__, _b, _cb, { api, }) { + + const [_, pools] = (await api.call({ target: fusePoolDirectoryAddress, abi: abi['getPublicPools'] })) + const markets = (await api.multiCall({ abi: 'address[]:getAllMarkets', calls: pools.map(i => i.comptroller) })).flat() + const tokens = await api.multiCall({ abi: 'address:underlying', calls: markets }) + return sumTokens2({api , tokensAndOwners2: [tokens, markets]}) +} +async function fuseBorrowed(__, _b, _cb, { api, }) { + + const [_, pools] = (await api.call({ target: fusePoolDirectoryAddress, abi: abi['getPublicPools'] })) + const markets = (await api.multiCall({ abi: 'address[]:getAllMarkets', calls: pools.map(i => i.comptroller) })).flat() + const tokens = await api.multiCall({ abi: 'address:underlying', calls: markets }) + const bals = await api.multiCall({ abi: 'uint256:totalBorrows', calls: markets }) + api.addTokens(tokens, bals) + return api.getBalances() +} + module.exports = { - timetravel: true, misrepresentedTokens: true, doublecounted: true, start: 1596236058, // July 14, 2020 ethereum: { - tvl, + tvl: sdk.util.sumChainTvls([tvl, fuseTvl]), pool2: pool2(rariGovernanceTokenUniswapDistributorAddress, RGTETHSushiLPTokenAddress), borrowed, }, arbitrum: { // Borrowing is disabled, and Tetranode's locker is the only pool with significant tvl, so counting only that - tvl: getCompoundV2Tvl('0xC7D021BD813F3b4BB801A4361Fbcf3703ed61716', 'arbitrum', undefined, undefined, undefined, false), - borrowed: getCompoundV2Tvl('0xC7D021BD813F3b4BB801A4361Fbcf3703ed61716', 'arbitrum', undefined, undefined, undefined, true), + tvl: getCompoundV2Tvl('0xC7D021BD813F3b4BB801A4361Fbcf3703ed61716', 'arbitrum', undefined, undefined, undefined, false), + borrowed: getCompoundV2Tvl('0xC7D021BD813F3b4BB801A4361Fbcf3703ed61716', 'arbitrum', undefined, undefined, undefined, true), }, hallmarks: [ [1651276800, "FEI hack"], From 4fe0b7005cf91f0631da5a530d1f465a73b44719 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 May 2023 23:58:20 +0200 Subject: [PATCH 0364/1354] fix ohm --- projects/olympus/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/olympus/index.js b/projects/olympus/index.js index 63887c13d9..249b5e7ed2 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -132,8 +132,13 @@ async function tvl(timestamp, block, _, { api }, isOwnTokensMode = false) { const tokensToBalances = sumBalancesByTokenAddress( normalizedFilteredTokenRecords - ); + ).filter(i => { + if (api.chain !== 'arbitrum') return true; + return !['0x89dc7e71e362faf88d92288fe2311d25c6a1b5e0000200000000000000000423', '0xce6195089b302633ed60f3f427d1380f6a2bfbc7000200000000000000000424'].includes(i.tokenAddress) + }) const tokens = tokensToBalances.map(i => i.tokenAddress) + + const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) const ownTokens = new Set([ '0x0ab87046fBb341D058F17CBC4c1133F25a20a52f', // GOHM From 7b57330049b8bc7fdc6df347c7e85aeeb95bfb60 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 13 May 2023 01:35:22 +0100 Subject: [PATCH 0365/1354] fix liquidswap for 0.5 upgrade --- projects/liquidswap-aptos/index.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/projects/liquidswap-aptos/index.js b/projects/liquidswap-aptos/index.js index e5022a26f1..d47064d816 100644 --- a/projects/liquidswap-aptos/index.js +++ b/projects/liquidswap-aptos/index.js @@ -1,6 +1,17 @@ const { dexExport } = require('../helper/chain/aptos') +const sdk = require('@defillama/sdk') -module.exports = dexExport({ - account: '0x05a97986a9d031c4567e15b797be516910cfcb4156312482efc6a19c0a30c948', - poolStr: 'liquidity_pool::LiquidityPool', -}) +module.exports = { + aptos: { + tvl: sdk.util.sumChainTvls([ + dexExport({ + account: '0x05a97986a9d031c4567e15b797be516910cfcb4156312482efc6a19c0a30c948', + poolStr: 'liquidity_pool::LiquidityPool', + }).aptos.tvl, + dexExport({ + account: '0x61d2c22a6cb7831bee0f48363b0eec92369357aece0d1142062f7d5d85c7bef8', + poolStr: 'liquidity_pool::LiquidityPool', + }).aptos.tvl + ]) + } +} From da704e1b9a19f65a2026c963016e04fb929a39a6 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 13 May 2023 02:08:22 +0100 Subject: [PATCH 0366/1354] add polygon zkevm --- projects/spiral-fi-mixer/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/spiral-fi-mixer/index.js b/projects/spiral-fi-mixer/index.js index 732b986ef7..8e7e7d60e5 100644 --- a/projects/spiral-fi-mixer/index.js +++ b/projects/spiral-fi-mixer/index.js @@ -3,5 +3,8 @@ const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { era: { tvl: sumTokensExport({ owner: '0xcd98e2C68248de044c3E44144C34D9EBb09337a9', tokens: ['0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4']}) + }, + polygon_zkevm: { + tvl: sumTokensExport({owner: '0x96DaD05740807e76892076684F433D5E0b3569fB', tokens: ['0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035']}) } } \ No newline at end of file From 914b29d80c93b708218c12503861d4c9cc8e5aae Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 13 May 2023 03:42:37 +0100 Subject: [PATCH 0367/1354] add missing staking pool --- projects/pancake-swap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/pancake-swap/index.js b/projects/pancake-swap/index.js index c405a6a39a..e9cdbe8ecb 100644 --- a/projects/pancake-swap/index.js +++ b/projects/pancake-swap/index.js @@ -75,7 +75,7 @@ module.exports = { misrepresentedTokens: true, methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://pancakeswap.finance/info as the source. Staking accounts for the CAKE locked in MasterChef (0x73feaa1eE314F8c655E354234017bE2193C9E24E)', bsc: { - staking: stakings(["0x73feaa1eE314F8c655E354234017bE2193C9E24E", "0x45c54210128a065de780c4b0df3d16664f7f859e"], "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", "bsc"), + staking: stakings(["0x73feaa1eE314F8c655E354234017bE2193C9E24E", "0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652", "0x45c54210128a065de780c4b0df3d16664f7f859e"], "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", "bsc"), tvl }, ethereum: { From db01c9c9a8ada615b868dc6c7c75b593133a8c1d Mon Sep 17 00:00:00 2001 From: Bob Baxley Date: Fri, 12 May 2023 23:23:56 -0400 Subject: [PATCH 0368/1354] new maverick factories --- projects/maverick/index.js | 54 +++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/projects/maverick/index.js b/projects/maverick/index.js index b742a65837..8e96cf27a3 100644 --- a/projects/maverick/index.js +++ b/projects/maverick/index.js @@ -1,25 +1,31 @@ // Maverick Protocol const { sumTokens2 } = require("../helper/unwrapLPs"); const { getLogs } = require("../helper/cache/getLogs"); +const BigNumber = require("bignumber.js"); function maverickTVL(config) { const exports = {}; Object.keys(config).forEach((chain) => { - const { factory, fromBlock } = config[chain]; + const { factories } = config[chain]; exports[chain] = { tvl: async (_, _b, _cb, { api }) => { - const logs = await getLogs({ - api, - target: factory, - topics: [ - "0x9b3fb3a17b4e94eb4d1217257372dcc712218fcd4bc1c28482bd8a6804a7c775", - ], - fromBlock, - eventAbi: - "event PoolCreated(address poolAddress, uint256 fee, uint256 tickSpacing, int32 activeTick, int256 lookback, uint64 protocolFeeRatio, address tokenA, address tokenB)", - onlyArgs: true, - }); + let logs = []; + for (let k = 0; k < factories.length; k++) { + logs.push( + ...(await getLogs({ + api, + target: factories[k].address, + topics: [ + "0x9b3fb3a17b4e94eb4d1217257372dcc712218fcd4bc1c28482bd8a6804a7c775", + ], + fromBlock: factories[k].startBlock, + eventAbi: + "event PoolCreated(address poolAddress, uint256 fee, uint256 tickSpacing, int32 activeTick, int256 lookback, uint64 protocolFeeRatio, address tokenA, address tokenB)", + onlyArgs: true, + })) + ); + } return sumTokens2({ api, @@ -34,11 +40,27 @@ function maverickTVL(config) { module.exports = maverickTVL({ ethereum: { - factory: "0xa5eBD82503c72299073657957F41b9cEA6c0A43A", - fromBlock: 16727800, + factories: [ + { + address: "0xEb6625D65a0553c9dBc64449e56abFe519bd9c9B", + startBlock: 17210221, + }, + { + address: "0xa5eBD82503c72299073657957F41b9cEA6c0A43A", + startBlock: 16727800, + }, + ], }, era: { - factory: "0x96707414DB71e553F6a49c7aDc376e40F3BEfC33", - fromBlock: 1337265, + factories: [ + { + address: "0x96707414DB71e553F6a49c7aDc376e40F3BEfC33", + startBlock: 1337265, + }, + { + address: "0x2C1a605f843A2E18b7d7772f0Ce23c236acCF7f5", + startBlock: 3002731, + }, + ], }, }); From c14e119c1b88596e41f5f516a946807cc9011ef6 Mon Sep 17 00:00:00 2001 From: Bob Baxley Date: Fri, 12 May 2023 23:25:45 -0400 Subject: [PATCH 0369/1354] remove unused import --- projects/maverick/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/maverick/index.js b/projects/maverick/index.js index 8e96cf27a3..e49d4d275a 100644 --- a/projects/maverick/index.js +++ b/projects/maverick/index.js @@ -1,7 +1,6 @@ // Maverick Protocol const { sumTokens2 } = require("../helper/unwrapLPs"); const { getLogs } = require("../helper/cache/getLogs"); -const BigNumber = require("bignumber.js"); function maverickTVL(config) { const exports = {}; From 78382721c53c4b9101c24dae94f6fc57d80dd0aa Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 13 May 2023 18:55:31 +0100 Subject: [PATCH 0370/1354] add eth address --- projects/treasury/umamifinance.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/projects/treasury/umamifinance.js b/projects/treasury/umamifinance.js index 97198cb0b6..ccd3c0e3fd 100644 --- a/projects/treasury/umamifinance.js +++ b/projects/treasury/umamifinance.js @@ -5,6 +5,8 @@ const owners = [ "0x8e52ca5a7a9249431f03d60d79dda5eab4930178", // ARB DAO delegate "0xb0b4bd94d656353a30773ac883591ddbabc0c0ba", // Previous ARBI multisig ]; +const ethowners = "0x9478d820e8d38ca96610b7fcbe377822c2f60f2c" + const ownTokens = [ "0x1622bF67e6e5747b81866fE0b85178a93C7F86e3", // UMAMI "0x2AdAbD6E8Ce3e82f52d9998a7f64a90d294A92A4", // mUMAMI @@ -24,8 +26,23 @@ module.exports = treasuryExports({ "0x3d9907f9a368ad0a51be60f7da3b97cf940982d8", // GRAIL "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL "0x912CE59144191C1204E64559FE8253a0e49E6548", // ARB + "0x3e6648c5a70a150a88bce65f4ad4d506fe15d2af", //spell + "0x10010078a54396f62c96df8532dc2b4847d47ed3", //hnd + "0x32eb7902d4134bf98a28b963d26de779af92a212", //rpdx + "0xd4d42f0b6def4ce0383636770ef773390d85c61a",//sushi + "0x2cab3abfc1670d1a452df502e216a66883cdf079",//l2dao + "0x539bde0d7dbd336b79148aa742883198bbf60342",//magic + "0x6694340fc020c5e6b96567843da2df01b2ce1eb6",//stg ], owners, ownTokens, }, + ethereum: { + tokens: [ + nullAddress, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",//usdc + ], + owners: [ethowners] + + }, }); From 9b3a7cf457013f311fdde33f348eb48e42330b11 Mon Sep 17 00:00:00 2001 From: Mike Richards Date: Sun, 14 May 2023 02:58:06 +0800 Subject: [PATCH 0371/1354] Fix getDenomBalance result This should fix the querying of balances on Terra --- projects/helper/chain/terra.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/chain/terra.js b/projects/helper/chain/terra.js index a1c89dc50e..51b0fc0874 100644 --- a/projects/helper/chain/terra.js +++ b/projects/helper/chain/terra.js @@ -50,7 +50,7 @@ async function getDenomBalance(denom, owner, block, { isTerra2 = false } = {}) { if (block !== undefined) { endpoint += `?height=${block - (block % 100)}` } - const data = (await axios.get(endpoint)).data.result + const data = (await axios.get(endpoint)).data.balances; const balance = data.find(balance => balance.denom === denom); return balance ? Number(balance.amount) : 0 From 57d3859c174869df4f08036840e66337adf58845 Mon Sep 17 00:00:00 2001 From: Mike Richards Date: Sun, 14 May 2023 03:20:26 +0800 Subject: [PATCH 0372/1354] Remove deprecated fetchOrderbooks for fetchOrderbooksV2 Appears fetchOrderbooks is deprecated and has been replaced by fetchOrderbooksV2 in @injectives/sdk-ts Helix has not been reporting TVL values since April 19th due to this --- projects/helper/chain/injective.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/helper/chain/injective.js b/projects/helper/chain/injective.js index 73bc86e28d..c482ba2315 100644 --- a/projects/helper/chain/injective.js +++ b/projects/helper/chain/injective.js @@ -32,7 +32,7 @@ async function getOrders({ type = TYPES.SPOT, marketIds }) { const chunks = sliceIntoChunks(marketIds, 20) const response = [] for (const chunk of chunks) - response.push(...await getClient(type).fetchOrderbooks(chunk)) + response.push(...await getClient(type).fetchOrderbooksV2(chunk)) return response } @@ -42,4 +42,4 @@ module.exports = { p2j, getMarkets, getOrders, -} \ No newline at end of file +} From ba3a9b9b608daa4dafd5fded23a3b6da95d0206e Mon Sep 17 00:00:00 2001 From: ExtraFi <110192631+ExtraFi@users.noreply.github.com> Date: Sun, 14 May 2023 10:24:26 +0000 Subject: [PATCH 0373/1354] Add Extra Finance TVL (#6247) * add extra finance tvl * add extra finance tvl * rpc error comment * fix * extra-fi: code refactor --------- Co-authored-by: pengbo Co-authored-by: Martin Co-authored-by: momo Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/extra/index.js | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 projects/extra/index.js diff --git a/projects/extra/index.js b/projects/extra/index.js new file mode 100644 index 0000000000..8bef68cf25 --- /dev/null +++ b/projects/extra/index.js @@ -0,0 +1,44 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + optimism: { factory: '0xbb505c54d71e9e599cb8435b4f0ceec05fc71cbd', fromBlock: 96265067, vaultFactory: '0x155620a2e6a9392c754b73296d9655061525729b', positionViewer: '0xf9cfb8a62f50e10adde5aa888b44cf01c5957055' }, +} + +module.exports = {}; + +const getVaultAbi = "function getVault(uint256 vaultId) view returns (tuple(address gauge, address pair, address token0, address token1, bool stable, bool paused, bool frozen, bool borrowingEnabled, bool liquidateWithTWAP, uint16 maxLeverage, uint16 premiumMaxLeverage, uint16 maxPriceDiff, uint16 liquidateDebtRatio, uint16 withdrawFeeRate, uint16 compoundFeeRate, uint16 liquidateFeeRate, uint16 rangeStopFeeRate, uint16 protocolFeeRate, uint256 premiumRequirement, uint256 protocolFee0Accumulated, uint256 protocolFee1Accumulated, uint256 minInvestValue, uint256 minSwapAmount0, uint256 minSwapAmount1, uint256 totalLp, uint256 totalLpShares, uint256 premiumUtilizationOfReserve0, uint256 debtLimit0, uint256 debtPositionId0, uint256 debtTotalShares0, uint256 premiumUtilizationOfReserve1, uint256 debtLimit1, uint256 debtPositionId1, uint256 debtTotalShares1))" + + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, vaultFactory, positionViewer, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x857d20297bde4478f678d3aafbfdf7fbfc90a4200b62eb053a32b2c50335676f'], + eventAbi: 'event InitReserve (address indexed reserve, address indexed eTokenAddress, address stakingAddress, uint256 id)', + onlyArgs: true, + fromBlock, + }) + + const vaultLogs = await getLogs({ + api, + target: vaultFactory, + topics: ['0xc0a8c0f282890a3da41a2183a1e9a1988888e8d8a0a39d933d42b0418e626250'], + fromBlock, + }) + + const calls = [] + for (let i = 1; i <= vaultLogs.length; i++) calls.push(i) + + const data = await api.multiCall({ target: positionViewer, abi: getVaultAbi, calls }) + data.forEach(({ pair, totalLp }) => api.add(pair, totalLp)) + + const tokensAndOwners = logs.map(i => [i.reserve, i.eTokenAddress]) + + return sumTokens2({ api, tokensAndOwners, resolveLP: true, }) + } + } +}) \ No newline at end of file From d860b14720e8c4141360b400c5305fb1926c68d4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 14 May 2023 13:21:18 +0200 Subject: [PATCH 0374/1354] fix terra getBalances --- projects/helper/chain/terra.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/helper/chain/terra.js b/projects/helper/chain/terra.js index 51b0fc0874..8079075d1f 100644 --- a/projects/helper/chain/terra.js +++ b/projects/helper/chain/terra.js @@ -50,7 +50,9 @@ async function getDenomBalance(denom, owner, block, { isTerra2 = false } = {}) { if (block !== undefined) { endpoint += `?height=${block - (block % 100)}` } - const data = (await axios.get(endpoint)).data.balances; + let {data} = (await axios.get(endpoint)); + if (isTerra2) data = data.balances + else data = data.result const balance = data.find(balance => balance.denom === denom); return balance ? Number(balance.amount) : 0 From 6e37dc56fc53c34e4daa114da1662b5e406e75c1 Mon Sep 17 00:00:00 2001 From: Poojanjariwala12 <118187491+Poojanjariwala12@users.noreply.github.com> Date: Sun, 14 May 2023 16:51:37 +0530 Subject: [PATCH 0375/1354] Add verified credits TVL (#6256) * Add verified credits TVL * verified-credits: code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/verified-credits/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/verified-credits/index.js diff --git a/projects/verified-credits/index.js b/projects/verified-credits/index.js new file mode 100644 index 0000000000..fcbdb2067e --- /dev/null +++ b/projects/verified-credits/index.js @@ -0,0 +1,6 @@ +const { masterchefExports } = require('../helper/unknownTokens') + +module.exports = masterchefExports({ + chain: 'kava', + masterchef: '0x0a3b0C346cEE826aa0eBEf78c1eBcB9BE07aD2eb', +}) \ No newline at end of file From be7e568466d54bea8c4f20cfa9dcede7e1e238d0 Mon Sep 17 00:00:00 2001 From: cantlee <133316389+cantlee@users.noreply.github.com> Date: Sun, 14 May 2023 21:26:05 +0800 Subject: [PATCH 0376/1354] Update api.js --- projects/starkex/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/starkex/api.js b/projects/starkex/api.js index 5ba709b9df..e0541fe5b2 100644 --- a/projects/starkex/api.js +++ b/projects/starkex/api.js @@ -5,7 +5,7 @@ const { transformDexBalances } = require('../helper/portedTokens') const { getParamCalls } = require('../helper/utils') async function tvl() { - const factory = '0x00d018832f3b2b082f7ebaa3eae2a5323708a7bb7598db620c0dba0e985e9a53' + const factory = '0x07df3bce30857e8f9c08bcd9d9668df34166e94dd968db6e2920b870c4410e34' let pairLength = await call({ target: factory, abi: abi.factory.allPairsLength}) let pairs = await multiCall({ abi: abi.factory.allPairs, target: factory, calls: getParamCalls(+pairLength)}) From 2df641c35cd62bee0451e74007140a9d32ed772f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 15 May 2023 02:52:55 +0100 Subject: [PATCH 0377/1354] add scanto --- projects/scanto/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/scanto/index.js diff --git a/projects/scanto/index.js b/projects/scanto/index.js new file mode 100644 index 0000000000..0122f0f95d --- /dev/null +++ b/projects/scanto/index.js @@ -0,0 +1,12 @@ +async function tvl(_, _b, _cb, { api }){ + const supply = await api.call({ abi: "function totalSupply() view returns (uint256)", target:"0x9F823D534954Fc119E31257b3dDBa0Db9E2Ff4ed" }) + return { + "canto:0x0000000000000000000000000000000000000000": supply + } +} + +module.exports={ + canto:{ + tvl + } +} \ No newline at end of file From 92a0f0ea0e3831c8500b103ebca49fbc1afbc744 Mon Sep 17 00:00:00 2001 From: graykode Date: Mon, 15 May 2023 16:34:11 +0900 Subject: [PATCH 0378/1354] feat: update v1.1.0 contracts for Clober DEX --- projects/clober/index.js | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/projects/clober/index.js b/projects/clober/index.js index e51d6afb85..dd81310e7b 100644 --- a/projects/clober/index.js +++ b/projects/clober/index.js @@ -2,29 +2,38 @@ const abi = require("./abi.json"); const { ethers } = require("ethers"); const { sumTokens2 } = require('../helper/unwrapLPs') +const contractV1DeployedChainIds = [1, 137, 42161] +const contractV1_1DeployedChainIds = [137, 1101, 42161] + function calculateSalt(chainId, nonce) { return ethers.utils.solidityKeccak256(['uint256', 'uint256'], [chainId, nonce]) } -async function fetchTokenAddresses(api, chainId){ - if(chainId === 1 || chainId === 137 || chainId === 42161) { - return await api.fetchList({ - lengthAbi: abi.nonce, - itemAbi: "function computeTokenAddress(uint256) view returns (address)", - target: "0x93A43391978BFC0bc708d5f55b0Abe7A9ede1B91" - }) - }else if(chainId === 1101){ - const maxNonce = await api.call({ abi: abi.nonce, target: "0x24aC0938C010Fb520F1068e96d78E0458855111D" }) - return await api.multiCall({ - abi: "function computeTokenAddress(bytes32) view returns (address)", - calls: Array.from({length: maxNonce}, (_, i) => i ).map((i, v) => ({ target: "0x58ed1f4913e652baF17C154551bd8E9dbc73fC56", params: calculateSalt(chainId, v) })), - }) +async function fetchTokenAddressesV1_0(api, chainId){ + if(!contractV1DeployedChainIds.includes(chainId)){ + return [] + } + return await api.fetchList({ + lengthAbi: abi.nonce, + itemAbi: "function computeTokenAddress(uint256) view returns (address)", + target: "0x93A43391978BFC0bc708d5f55b0Abe7A9ede1B91" + }) +} + +async function fetchTokenAddressesV1_1(api, chainId){ + if (!contractV1_1DeployedChainIds.includes(chainId)) { + return [] } + const maxNonce = await api.call({ abi: abi.nonce, target: "0x24aC0938C010Fb520F1068e96d78E0458855111D" }) + return await api.multiCall({ + abi: "function computeTokenAddress(bytes32) view returns (address)", + calls: Array.from({length: maxNonce}, (_, i) => i ).map((i, v) => ({ target: "0x58ed1f4913e652baF17C154551bd8E9dbc73fC56", params: calculateSalt(chainId, v) })), + }) } async function tvl(_, _b, _cb, { api }) { const chainId = await api.getChainId() - let tokenAddresses = await fetchTokenAddresses(api, chainId) + let tokenAddresses = [...await fetchTokenAddressesV1_0(api, chainId), ...await fetchTokenAddressesV1_1(api, chainId)] tokenAddresses = tokenAddresses.flat() const markets = await api.multiCall({ abi: abi.market, calls: tokenAddresses }) const base = await api.multiCall({ abi: abi.baseToken, calls: markets}) From bad275db69dbeae0d9cc6fde3bb0d803f5e8ada1 Mon Sep 17 00:00:00 2001 From: swaggypepe <111588796+swaggypepe@users.noreply.github.com> Date: Mon, 15 May 2023 10:50:51 +0300 Subject: [PATCH 0379/1354] adding new vault --- projects/insrt_finance/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/insrt_finance/index.js b/projects/insrt_finance/index.js index 5540181bab..b11b861ae1 100644 --- a/projects/insrt_finance/index.js +++ b/projects/insrt_finance/index.js @@ -5,11 +5,13 @@ const rockvault = '0x185B6B13Be7cEfa99262AF1F78ae87213E4DDD3d' const baycvault2 = '0x417c53C3B63a03aeb614b7b625ae84Cfc7eecD1c' const squigglevault = '0x5D40A087cec071cd3b8A7AF4B45b3D56D6c3f952' const penguvault = '0x8facab18b9f4cd1a9f90876290c9bfa238cd4e45' -const insrtVaults = [ fidenzavault, rockvault, baycvault2, squigglevault, penguvault ] +const miladyvault = '0x861ff455dcd810895cb4050460e4b6a47fec3304' +const insrtVaults = [ fidenzavault, rockvault, baycvault2, squigglevault, penguvault, miladyvault ] +const vaulttokens = ['0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0x524cab2ec69124574082676e6f654a18df49a048', '0x062e691c2054de82f28008a8ccc6d7a1c8ce060d', '0x5Af0D9827E0c53E4799BB226655A1de152A425a5' ] async function tvl(_, _b, _cb, { api, }) { await vaultTvl(api, [punkvault, baycvault, ]) - return sumTokens2({ api, owners: insrtVaults , tokens: ['0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0x524cab2ec69124574082676e6f654a18df49a048', '0x062e691c2054de82f28008a8ccc6d7a1c8ce060d' ], resolveArtBlocks: true, }) + return sumTokens2({ api, owners: insrtVaults , tokens: vaulttokens, resolveArtBlocks: true, }) } // ERC721 Vaults From cd403f98a563ec4ba102a7aea5bb054ebb81c985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Passion?= Date: Mon, 15 May 2023 10:54:07 +0200 Subject: [PATCH 0380/1354] update jexchange smart contract address --- projects/jexchange/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/jexchange/index.js b/projects/jexchange/index.js index 22b0802dfd..e3c5ac34ec 100644 --- a/projects/jexchange/index.js +++ b/projects/jexchange/index.js @@ -3,6 +3,6 @@ const { sumTokensExport } = require('../helper/sumTokens') module.exports = { timetravel: false, elrond: { - tvl: sumTokensExport({ chain: 'elrond', owner: 'erd1qqqqqqqqqqqqqpgqawkm2tlyyz6vtg02fcr5w02dyejp8yrw0y8qlucnj2', }) + tvl: sumTokensExport({ chain: 'elrond', owner: 'erd1qqqqqqqqqqqqqpgqmmxzmktd09gq0hldtczerlv444ykt3pz6avsnys6m9', }) } } \ No newline at end of file From f67a4008c8d98a65b783d525552c28def21c3950 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 15 May 2023 11:32:49 +0200 Subject: [PATCH 0381/1354] insrt fi: track eth on contracts --- projects/insrt_finance/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/insrt_finance/index.js b/projects/insrt_finance/index.js index b11b861ae1..ecf863c740 100644 --- a/projects/insrt_finance/index.js +++ b/projects/insrt_finance/index.js @@ -1,4 +1,4 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const fidenzavault = '0xfCEed70c8E9f38A0c3A0062D40d0Ab06493063a1' const rockvault = '0x185B6B13Be7cEfa99262AF1F78ae87213E4DDD3d' @@ -7,7 +7,7 @@ const squigglevault = '0x5D40A087cec071cd3b8A7AF4B45b3D56D6c3f952' const penguvault = '0x8facab18b9f4cd1a9f90876290c9bfa238cd4e45' const miladyvault = '0x861ff455dcd810895cb4050460e4b6a47fec3304' const insrtVaults = [ fidenzavault, rockvault, baycvault2, squigglevault, penguvault, miladyvault ] -const vaulttokens = ['0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0x524cab2ec69124574082676e6f654a18df49a048', '0x062e691c2054de82f28008a8ccc6d7a1c8ce060d', '0x5Af0D9827E0c53E4799BB226655A1de152A425a5' ] +const vaulttokens = [nullAddress, '0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0x524cab2ec69124574082676e6f654a18df49a048', '0x062e691c2054de82f28008a8ccc6d7a1c8ce060d', '0x5Af0D9827E0c53E4799BB226655A1de152A425a5' ] async function tvl(_, _b, _cb, { api, }) { await vaultTvl(api, [punkvault, baycvault, ]) From 0ed97d99029408d1045f8701aac294ae4445b004 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 15 May 2023 12:04:59 +0200 Subject: [PATCH 0382/1354] remove kolibri-js --- package-lock.json | 2476 ++++----------------------------------------- package.json | 1 - 2 files changed, 177 insertions(+), 2300 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88c915712a..054b87a080 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "license": "ISC", "dependencies": { "@defillama/sdk": "latest", - "@hover-labs/kolibri-js": "^4.1.3", "@project-serum/anchor": "^0.25.0", "@solana/web3.js": "^1.36.0", "@solendprotocol/solend-sdk": "^0.6.2", @@ -39,112 +38,6 @@ "ts-node": "^10.8.1" } }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "peer": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/runtime": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", @@ -872,103 +765,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@hover-labs/kolibri-js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hover-labs/kolibri-js/-/kolibri-js-4.1.3.tgz", - "integrity": "sha512-ZmW4x+7XptaQnE5nw3AJU7L5AHxHE/E0Qy0rWKjd23MM/V6vd2CODbR9UC0Rh1dVmWioprj0KbTEqg499OM7ow==", - "dependencies": { - "@taquito/signer": "^12.0.2", - "@taquito/taquito": "^12.0.2", - "@temple-wallet/dapp": "^5.0.2", - "axios": "^0.21.0", - "bignumber.js": "^9.0.1", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "decimal.js": "^10.3.1", - "lodash": "^4.17.21" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "dependencies": { - "axios": "^0.26.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/http-utils/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "dependencies": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "hasInstallScript": true, - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@hover-labs/kolibri-js/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -1002,22 +798,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -1660,695 +1440,152 @@ "node": ">=4.2.0" } }, - "node_modules/@stablelib/binary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", - "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", - "dependencies": { - "@stablelib/int": "^1.0.1" - } - }, - "node_modules/@stablelib/blake2b": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/blake2b/-/blake2b-1.0.1.tgz", - "integrity": "sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" + "node_modules/@supercharge/promise-pool": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", + "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==", + "engines": { + "node": ">=8" } }, - "node_modules/@stablelib/bytes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", - "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true }, - "node_modules/@stablelib/constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", - "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true }, - "node_modules/@stablelib/ed25519": { + "node_modules/@tsconfig/node14": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", - "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", - "dependencies": { - "@stablelib/random": "^1.0.2", - "@stablelib/sha512": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", - "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true }, - "node_modules/@stablelib/int": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", - "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true }, - "node_modules/@stablelib/keyagreement": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", - "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", + "node_modules/@types/async-retry": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.5.tgz", + "integrity": "sha512-YrdjSD+yQv7h6d5Ip+PMxh3H6ZxKyQk0Ts+PvaNRInxneG9PFVZjFg77ILAN+N6qYf7g4giSJ1l+ZjQ1zeegvA==", + "dev": true, "dependencies": { - "@stablelib/bytes": "^1.0.1" + "@types/retry": "*" } }, - "node_modules/@stablelib/nacl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@stablelib/nacl/-/nacl-1.0.4.tgz", - "integrity": "sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==", + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, "dependencies": { - "@stablelib/poly1305": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1", - "@stablelib/x25519": "^1.0.3", - "@stablelib/xsalsa20": "^1.0.2" + "@types/node": "*" } }, - "node_modules/@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" + "@types/node": "*" } }, - "node_modules/@stablelib/random": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", - "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, - "node_modules/@stablelib/salsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/salsa20/-/salsa20-1.0.2.tgz", - "integrity": "sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true }, - "node_modules/@stablelib/sha512": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", - "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" + "@types/node": "*" } }, - "node_modules/@stablelib/wipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", - "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" - }, - "node_modules/@stablelib/x25519": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", - "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", - "dependencies": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1" + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@stablelib/xsalsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/xsalsa20/-/xsalsa20-1.0.2.tgz", - "integrity": "sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/salsa20": "^1.0.2", - "@stablelib/wipe": "^1.0.1" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@supercharge/promise-pool": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", - "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==", + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/@taquito/http-utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-10.2.1.tgz", - "integrity": "sha512-RZmGxJFllTHC5LuxrPcVQoH/MpDvQehLjE1czSmL2Dz1VZlzI4Q6Ie+pG5nHQODRPqE8ABi/2aHAGGYMQWqKZg==", - "peer": true, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dependencies": { - "xhr2-cookies": "^1.1.0" + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 8.0.0" } }, - "node_modules/@taquito/local-forging": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-12.1.1.tgz", - "integrity": "sha512-SUA1YYRIpEGsTy5OfUIgIem0k/QsAzGjDCvf/wl5XV/fVBkP/+GN7uvYoqgJblCmsgtsMBhJFtXgs+D6bjGexg==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@taquito/michel-codec": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-10.2.1.tgz", - "integrity": "sha512-VSHELyuiwso1qCpAEZkH7JdDlZdHxTjyvZcBsfnfpbdpCrAUpCB48P4NZOnvZ58SYt9VS1bNAa5GRvQyOnNvMQ==", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/michelson-encoder": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-10.2.1.tgz", - "integrity": "sha512-HYCtDGCWtyCgOQjmxYLYw5ftejG0FUfAW1FzZWIW6w2ars1TInSbLNeVRZs+EmbD3L8wOaxaOlgdsMoDnGqM/g==", - "peer": true, - "dependencies": { - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "fast-json-stable-stringify": "^2.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/michelson-encoder/node_modules/@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, - "dependencies": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/michelson-encoder/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@taquito/michelson-encoder/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/@taquito/rpc": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-10.2.1.tgz", - "integrity": "sha512-Vg80sGLICkEKGls+7YEd0uFpsp8dwx2kNeGgCbpNROIs0S6Slsd0UfDlaZGlllWeUAKr5r6baexYrTKFuWs/UA==", - "peer": true, - "dependencies": { - "@taquito/http-utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-12.1.1.tgz", - "integrity": "sha512-TONxIbLs7bgmB3TTzcTOYzL8pFLZFBujHDHjB5QHJY5DT+lpByjYZHk2Frqjcy3NDvENVLU6uXeCeba2LK8kwA==", - "dependencies": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@stablelib/nacl": "^1.0.3", - "@taquito/taquito": "^12.1.1", - "@taquito/utils": "^12.1.1", - "elliptic": "^6.5.4", - "pbkdf2": "^3.1.2", - "typedarray-to-buffer": "^4.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "dependencies": { - "axios": "^0.26.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "dependencies": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "hasInstallScript": true, - "dependencies": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/signer/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/@taquito/taquito": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-10.2.1.tgz", - "integrity": "sha512-ay61aKhFQPnYGu5d9jqEvaZE0EzE6tO9MD+5vOu6/NFVThBd7ysOQS1PB0VprL9SupM1NVDFnEJ8GtE8SYgk8g==", - "hasInstallScript": true, - "peer": true, - "dependencies": { - "@taquito/http-utils": "^10.2.1", - "@taquito/michel-codec": "^10.2.1", - "@taquito/michelson-encoder": "^10.2.1", - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "rx-sandbox": "^1.0.4", - "rxjs": "^6.6.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/taquito/node_modules/@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, - "dependencies": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/taquito/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@taquito/taquito/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/@taquito/utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-12.1.1.tgz", - "integrity": "sha512-GxNSBrA02vwhy56ayWB49VZficB+j2oyhPdlsRb2CguephmyEYnlUaNV27ILa6dPDW+zv6+QWQj6GyqLBRpIlA==", - "dependencies": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@types/bs58check": "^2.1.0", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "buffer": "^6.0.3", - "elliptic": "^6.5.4", - "typedarray-to-buffer": "^4.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@taquito/utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@taquito/utils/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/@temple-wallet/dapp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@temple-wallet/dapp/-/dapp-5.0.2.tgz", - "integrity": "sha512-IIeHTowHXOp7/JnttfzMyCJjFWwhqOauDN7S2vU0GzHkpT5gH6FBXqB3kvZUyPfoxY0PXuXg+HKh++qABx+g9A==", - "dependencies": { - "nanoid": "^3.1.25" - }, - "peerDependencies": { - "@taquito/taquito": "^10.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/async-retry": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.5.tgz", - "integrity": "sha512-YrdjSD+yQv7h6d5Ip+PMxh3H6ZxKyQk0Ts+PvaNRInxneG9PFVZjFg77ILAN+N6qYf7g4giSJ1l+ZjQ1zeegvA==", - "dev": true, - "dependencies": { - "@types/retry": "*" - } - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/bs58check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", - "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "peer": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "peer": true - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "peer": true - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" - }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -2357,6 +1594,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2537,18 +1775,6 @@ "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "peer": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -2562,16 +1788,6 @@ "base-x": "^3.0.2" } }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, "node_modules/buffer": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", @@ -2668,6 +1884,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2679,19 +1896,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2702,7 +1911,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", @@ -2734,37 +1944,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "peer": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -2820,11 +1999,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2867,15 +2041,6 @@ "node": ">=0.3.1" } }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "peer": true, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -3206,23 +2371,6 @@ "node": ">=0.4.x" } }, - "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -3251,7 +2399,8 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -3290,18 +2439,6 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", @@ -3563,6 +2700,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3592,19 +2730,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -3783,15 +2908,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -3886,74 +3002,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "peer": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "peer": true, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -3987,12 +3035,6 @@ "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4160,29 +3202,6 @@ "node": ">= 8.16.2" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "peer": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4243,17 +3262,6 @@ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4409,33 +3417,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "peer": true }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4445,21 +3426,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -4503,25 +3469,6 @@ } ] }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "peer": true - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -4602,15 +3549,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/rpc-websockets": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", @@ -4681,39 +3619,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rx-sandbox": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/rx-sandbox/-/rx-sandbox-1.0.4.tgz", - "integrity": "sha512-+/9MHDYNoF9ca/2RR+L2LloXXeQyIR3k/wjK03IicrxxlbkhmKF4ejPiWeafMWDg7otF+pnX5NE/8v/rX6ICJA==", - "peer": true, - "dependencies": { - "expect": "^26.6.1", - "jest-matcher-utils": "^26.6.1" - }, - "engines": { - "node": ">=4.2.4", - "npm": ">=3.0.0" - }, - "peerDependencies": { - "rxjs": "6.x" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4743,18 +3648,6 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4804,15 +3697,6 @@ "vscode-textmate": "5.2.0" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -4831,27 +3715,6 @@ "node": ">=0.10.0" } }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "peer": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/starknet": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/starknet/-/starknet-4.17.1.tgz", @@ -4870,14 +3733,6 @@ "url-join": "^4.0.1" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4911,6 +3766,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4946,18 +3802,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -5058,25 +3902,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", - "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/typedoc-default-themes": { "version": "0.12.10", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", @@ -5191,11 +4016,6 @@ "which-typed-array": "^1.1.2" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "node_modules/uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -5315,15 +4135,6 @@ } } }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "peer": true, - "dependencies": { - "cookiejar": "^2.1.1" - } - }, "node_modules/xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", @@ -5364,90 +4175,6 @@ } }, "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "peer": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "peer": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "peer": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "@babel/runtime": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", @@ -5863,91 +4590,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "@hover-labs/kolibri-js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hover-labs/kolibri-js/-/kolibri-js-4.1.3.tgz", - "integrity": "sha512-ZmW4x+7XptaQnE5nw3AJU7L5AHxHE/E0Qy0rWKjd23MM/V6vd2CODbR9UC0Rh1dVmWioprj0KbTEqg499OM7ow==", - "requires": { - "@taquito/signer": "^12.0.2", - "@taquito/taquito": "^12.0.2", - "@temple-wallet/dapp": "^5.0.2", - "axios": "^0.21.0", - "bignumber.js": "^9.0.1", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "decimal.js": "^10.3.1", - "lodash": "^4.17.21" - }, - "dependencies": { - "@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "requires": { - "axios": "^0.26.0" - }, - "dependencies": { - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - } - } - }, - "@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==" - }, - "@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "requires": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - } - }, - "@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - } - }, - "@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - } - } - }, "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -5971,19 +4613,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - } - }, "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -6387,390 +5016,29 @@ "base64-js": "^1.5.1", "bn.js": "^5.1.2", "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^5.3.1", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "js-sha256": "^0.9.0", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "toml": "^3.0.0" - } - }, - "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "requires": { - "follow-redirects": "^1.14.4" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "typedoc": { - "version": "0.20.37", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", - "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", - "peer": true, - "requires": { - "colors": "^1.4.0", - "fs-extra": "^9.1.0", - "handlebars": "^4.7.7", - "lodash": "^4.17.21", - "lunr": "^2.3.9", - "marked": "~2.0.3", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "shiki": "^0.9.3", - "typedoc-default-themes": "^0.12.10" - } - }, - "typedoc-plugin-cname": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", - "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", - "requires": {} - }, - "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", - "peer": true - } - } - }, - "@stablelib/binary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", - "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", - "requires": { - "@stablelib/int": "^1.0.1" - } - }, - "@stablelib/blake2b": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/blake2b/-/blake2b-1.0.1.tgz", - "integrity": "sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/bytes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", - "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" - }, - "@stablelib/constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", - "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" - }, - "@stablelib/ed25519": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", - "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", - "requires": { - "@stablelib/random": "^1.0.2", - "@stablelib/sha512": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", - "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" - }, - "@stablelib/int": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", - "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" - }, - "@stablelib/keyagreement": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", - "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", - "requires": { - "@stablelib/bytes": "^1.0.1" - } - }, - "@stablelib/nacl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@stablelib/nacl/-/nacl-1.0.4.tgz", - "integrity": "sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==", - "requires": { - "@stablelib/poly1305": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1", - "@stablelib/x25519": "^1.0.3", - "@stablelib/xsalsa20": "^1.0.2" - } - }, - "@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", - "requires": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/random": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", - "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/salsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/salsa20/-/salsa20-1.0.2.tgz", - "integrity": "sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/sha512": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", - "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/wipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", - "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" - }, - "@stablelib/x25519": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", - "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", - "requires": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/xsalsa20": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/xsalsa20/-/xsalsa20-1.0.2.tgz", - "integrity": "sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/salsa20": "^1.0.2", - "@stablelib/wipe": "^1.0.1" - } - }, - "@supercharge/promise-pool": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", - "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==" - }, - "@taquito/http-utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-10.2.1.tgz", - "integrity": "sha512-RZmGxJFllTHC5LuxrPcVQoH/MpDvQehLjE1czSmL2Dz1VZlzI4Q6Ie+pG5nHQODRPqE8ABi/2aHAGGYMQWqKZg==", - "peer": true, - "requires": { - "xhr2-cookies": "^1.1.0" - } - }, - "@taquito/local-forging": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-12.1.1.tgz", - "integrity": "sha512-SUA1YYRIpEGsTy5OfUIgIem0k/QsAzGjDCvf/wl5XV/fVBkP/+GN7uvYoqgJblCmsgtsMBhJFtXgs+D6bjGexg==", - "requires": { - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - } - }, - "@taquito/michel-codec": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-10.2.1.tgz", - "integrity": "sha512-VSHELyuiwso1qCpAEZkH7JdDlZdHxTjyvZcBsfnfpbdpCrAUpCB48P4NZOnvZ58SYt9VS1bNAa5GRvQyOnNvMQ==", - "peer": true - }, - "@taquito/michelson-encoder": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-10.2.1.tgz", - "integrity": "sha512-HYCtDGCWtyCgOQjmxYLYw5ftejG0FUfAW1FzZWIW6w2ars1TInSbLNeVRZs+EmbD3L8wOaxaOlgdsMoDnGqM/g==", - "peer": true, - "requires": { - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "fast-json-stable-stringify": "^2.1.0" - }, - "dependencies": { - "@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, - "requires": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "peer": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "peer": true - } - } - }, - "@taquito/rpc": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-10.2.1.tgz", - "integrity": "sha512-Vg80sGLICkEKGls+7YEd0uFpsp8dwx2kNeGgCbpNROIs0S6Slsd0UfDlaZGlllWeUAKr5r6baexYrTKFuWs/UA==", - "peer": true, - "requires": { - "@taquito/http-utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "lodash": "^4.17.21" - } - }, - "@taquito/signer": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-12.1.1.tgz", - "integrity": "sha512-TONxIbLs7bgmB3TTzcTOYzL8pFLZFBujHDHjB5QHJY5DT+lpByjYZHk2Frqjcy3NDvENVLU6uXeCeba2LK8kwA==", - "requires": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@stablelib/nacl": "^1.0.3", - "@taquito/taquito": "^12.1.1", - "@taquito/utils": "^12.1.1", - "elliptic": "^6.5.4", - "pbkdf2": "^3.1.2", - "typedarray-to-buffer": "^4.0.0" - }, - "dependencies": { - "@taquito/http-utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-12.1.1.tgz", - "integrity": "sha512-Zlp/eTRVjFs0XEIiAhgxkh6s9npF4dO+e/Sm2XWsDmNPoGI2jdXNH0L+NiKJIOkYcu0CXlcgriTeEaYnbeTvcA==", - "requires": { - "axios": "^0.26.0" - } - }, - "@taquito/michel-codec": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-12.1.1.tgz", - "integrity": "sha512-BAig8YyLyRW5kxV/r0S191W+SvYuiTRJpgSp5IsgCDLAOh+d4/xq6IgU3PuGJgokQDstZdTbjpkrgRCnufR8lw==" - }, - "@taquito/michelson-encoder": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-12.1.1.tgz", - "integrity": "sha512-mWcA1DHHlFj7UswJpEmml853x9e0IYHyeiKZYAo7DtizHz0jiUWtptCuEWiPQ4fMOreFbYZ6KVYenoVfQVNrqA==", - "requires": { - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "fast-json-stable-stringify": "^2.1.0" - } - }, - "@taquito/rpc": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-12.1.1.tgz", - "integrity": "sha512-CgAF9kdmKLa/UbmiqApDtncCQGiG7kEOIYis8IIa0JUT9JD1H8WBbSNF/oNh4e0soWUK9BL2qU369RFnxIW+iA==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - } - }, - "@taquito/taquito": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-12.1.1.tgz", - "integrity": "sha512-HvbtClQ7isrDd17X/LEKkPzzeVYA8EMUem3qrkl9qvDO6FpJx/QLbUpYfT2PC0pLUkSrzdLGzmESHAOZhcksaw==", - "requires": { - "@taquito/http-utils": "^12.1.1", - "@taquito/local-forging": "^12.1.1", - "@taquito/michel-codec": "^12.1.1", - "@taquito/michelson-encoder": "^12.1.1", - "@taquito/rpc": "^12.1.1", - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2", - "rxjs": "^6.6.3" + "buffer-layout": "^1.2.2", + "camelcase": "^5.3.1", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "js-sha256": "^0.9.0", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "toml": "^3.0.0" } }, "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - } - } - }, - "@taquito/taquito": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-10.2.1.tgz", - "integrity": "sha512-ay61aKhFQPnYGu5d9jqEvaZE0EzE6tO9MD+5vOu6/NFVThBd7ysOQS1PB0VprL9SupM1NVDFnEJ8GtE8SYgk8g==", - "peer": true, - "requires": { - "@taquito/http-utils": "^10.2.1", - "@taquito/michel-codec": "^10.2.1", - "@taquito/michelson-encoder": "^10.2.1", - "@taquito/rpc": "^10.2.1", - "@taquito/utils": "^10.2.1", - "bignumber.js": "^9.0.1", - "rx-sandbox": "^1.0.4", - "rxjs": "^6.6.3" - }, - "dependencies": { - "@taquito/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-oW/D9irojwjorIV/0yO32Gyr+zSnITkVkOwVmnxge6DYHWC7aqPbdwiDwc4/GewKXNngBDqDEjEEPhkp0ZnvJw==", - "peer": true, + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "requires": { - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "buffer": "^6.0.3" + "follow-redirects": "^1.14.4" } }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "peer": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -6779,49 +5047,45 @@ "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "peer": true - } - } - }, - "@taquito/utils": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-12.1.1.tgz", - "integrity": "sha512-GxNSBrA02vwhy56ayWB49VZficB+j2oyhPdlsRb2CguephmyEYnlUaNV27ILa6dPDW+zv6+QWQj6GyqLBRpIlA==", - "requires": { - "@stablelib/blake2b": "^1.0.1", - "@stablelib/ed25519": "^1.0.2", - "@types/bs58check": "^2.1.0", - "blakejs": "^1.1.1", - "bs58check": "^2.1.2", - "buffer": "^6.0.3", - "elliptic": "^6.5.4", - "typedarray-to-buffer": "^4.0.0" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "typedoc": { + "version": "0.20.37", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", + "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", + "peer": true, "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "colors": "^1.4.0", + "fs-extra": "^9.1.0", + "handlebars": "^4.7.7", + "lodash": "^4.17.21", + "lunr": "^2.3.9", + "marked": "~2.0.3", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "shiki": "^0.9.3", + "typedoc-default-themes": "^0.12.10" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "typedoc-plugin-cname": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", + "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", + "requires": {} + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "peer": true } } }, - "@temple-wallet/dapp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@temple-wallet/dapp/-/dapp-5.0.2.tgz", - "integrity": "sha512-IIeHTowHXOp7/JnttfzMyCJjFWwhqOauDN7S2vU0GzHkpT5gH6FBXqB3kvZUyPfoxY0PXuXg+HKh++qABx+g9A==", - "requires": { - "nanoid": "^3.1.25" - } + "@supercharge/promise-pool": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", + "integrity": "sha512-f5+C7zv+QQivcUO1FH5lXi7GcuJ3CFuJF3Eg06iArhUs5ma0szCLEQwIY4+VQyh7m/RLVZdzvr4E4ZDnLe9MNg==" }, "@tsconfig/node10": { "version": "1.0.9", @@ -6865,14 +5129,6 @@ "@types/node": "*" } }, - "@types/bs58check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", - "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", - "requires": { - "@types/node": "*" - } - }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -6881,30 +5137,6 @@ "@types/node": "*" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "peer": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "peer": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, "@types/node": { "version": "18.11.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", @@ -6916,12 +5148,6 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "peer": true - }, "@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", @@ -6930,21 +5156,6 @@ "@types/node": "*" } }, - "@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "peer": true - }, "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -6994,12 +5205,14 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -7143,15 +5356,6 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "peer": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -7165,16 +5369,6 @@ "base-x": "^3.0.2" } }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, "buffer": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", @@ -7229,24 +5423,17 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -7254,7 +5441,8 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "colors": { "version": "1.4.0", @@ -7280,37 +5468,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "peer": true - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -7349,11 +5506,6 @@ "ms": "2.1.2" } }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7381,12 +5533,6 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "peer": true - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -7641,20 +5787,6 @@ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" }, - "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - } - }, "extract-files": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", @@ -7674,7 +5806,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -7710,15 +5843,6 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "peer": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "find": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", @@ -7911,7 +6035,8 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "has-symbols": { "version": "1.0.3", @@ -7926,16 +6051,6 @@ "has-symbols": "^1.0.2" } }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -8069,12 +6184,6 @@ "is-extglob": "^2.1.1" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "peer": true - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -8151,59 +6260,6 @@ } } }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "peer": true - }, - "jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "peer": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "peer": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - } - }, - "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "peer": true - }, "jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -8230,12 +6286,6 @@ "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -8374,26 +6424,6 @@ "integrity": "sha512-BJXxkuIfJchcXOJWTT2DOL+yFWifFv2yGYOUzvXg8Qz610QKw+sHCvTMYwA+qWGhlA2uivBezChZ/pBy1tWdkQ==", "peer": true }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "peer": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -8442,11 +6472,6 @@ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -8559,42 +6584,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "peer": true }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "peer": true - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - } - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -8617,22 +6612,6 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "peer": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -8685,15 +6664,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "rpc-websockets": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", @@ -8729,31 +6699,6 @@ "queue-microtask": "^1.2.2" } }, - "rx-sandbox": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/rx-sandbox/-/rx-sandbox-1.0.4.tgz", - "integrity": "sha512-+/9MHDYNoF9ca/2RR+L2LloXXeQyIR3k/wjK03IicrxxlbkhmKF4ejPiWeafMWDg7otF+pnX5NE/8v/rX6ICJA==", - "peer": true, - "requires": { - "expect": "^26.6.1", - "jest-matcher-utils": "^26.6.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -8769,15 +6714,6 @@ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8815,12 +6751,6 @@ "vscode-textmate": "5.2.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true - }, "snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -8836,23 +6766,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "peer": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "peer": true - } - } - }, "starknet": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/starknet/-/starknet-4.17.1.tgz", @@ -8871,21 +6784,13 @@ "url-join": "^4.0.1" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "5.0.1" } }, "strip-json-comments": { @@ -8903,6 +6808,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -8929,15 +6835,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "peer": true, - "requires": { - "is-number": "^7.0.0" - } - }, "toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -9004,11 +6901,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "typedarray-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", - "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==" - }, "typedoc-default-themes": { "version": "0.12.10", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", @@ -9095,11 +6987,6 @@ "which-typed-array": "^1.1.2" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -9187,15 +7074,6 @@ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "requires": {} }, - "xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "peer": true, - "requires": { - "cookiejar": "^2.1.1" - } - }, "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", diff --git a/package.json b/package.json index 2a0cd29dde..7fecc4e68c 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "license": "ISC", "dependencies": { "@defillama/sdk": "latest", - "@hover-labs/kolibri-js": "^4.1.3", "@project-serum/anchor": "^0.25.0", "@solana/web3.js": "^1.36.0", "@solendprotocol/solend-sdk": "^0.6.2", From 1a93839572a51ece440481419ea4d9c9f72f2388 Mon Sep 17 00:00:00 2001 From: strobie <0xstrobe@protonmail.com> Date: Mon, 15 May 2023 12:18:30 +0200 Subject: [PATCH 0383/1354] remove kolibri cuz they privated the lib on npm --- liquidations/kolibri/index.ts | 24 --------- liquidations/kolibri/utils.ts | 96 ----------------------------------- 2 files changed, 120 deletions(-) delete mode 100644 liquidations/kolibri/index.ts delete mode 100644 liquidations/kolibri/utils.ts diff --git a/liquidations/kolibri/index.ts b/liquidations/kolibri/index.ts deleted file mode 100644 index e827bc0acf..0000000000 --- a/liquidations/kolibri/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { CONTRACTS, HarbingerClient } from "@hover-labs/kolibri-js"; -import { OVEN_DATA_BASE_URL, TEZOS_RPC, getOvens, mapOven } from "./utils"; - -import { Liq } from "../utils/types"; - -const harbingerClient = new HarbingerClient( - TEZOS_RPC, - CONTRACTS.MAIN.HARBINGER_NORMALIZER -); - -const positions = async (): Promise => { - const [ovens, { price }] = await Promise.all([ - getOvens(OVEN_DATA_BASE_URL), - harbingerClient.getPriceData(), - ]); - - return Promise.all(ovens.map((oven) => mapOven(oven, price))); -}; - -module.exports = { - tezos: { - liquidations: positions, - }, -}; diff --git a/liquidations/kolibri/utils.ts b/liquidations/kolibri/utils.ts deleted file mode 100644 index d3027212f6..0000000000 --- a/liquidations/kolibri/utils.ts +++ /dev/null @@ -1,96 +0,0 @@ -import BigNumber from "bignumber.js"; -import { ConversionUtils } from "@hover-labs/kolibri-js"; -import { Liq } from "../utils/types"; -import axios from "axios"; - -/* -Credits goes to: https://github.com/Hover-Labs/kolibri-js/blob/master/src/oven-client.ts -As the vast majority of helpers from here were either took, modified or inspired from kolibri-js module -*/ - -export const TEZOS_RPC = process.env.TEZOS_RPC || "https://rpc.tzkt.io/mainnet"; -export const OVEN_DATA_BASE_URL = - "https://kolibri-data.s3.amazonaws.com/mainnet/oven-data.json"; - -const MUTEZ_DIGITS = 6; -const SHARD_DIGITS = 18; - -export const MUTEZ_TO_SHARD = new BigNumber( - Math.pow(10, SHARD_DIGITS - MUTEZ_DIGITS) -); - -export const SHARD_PRECISION = new BigNumber(Math.pow(10, SHARD_DIGITS)); - -export interface KolibriOven { - ovenAddress: string; - ovenOwner: string; - baker: string; - balance: string; - borrowedTokens: string; - stabilityFees: string; - isLiquidated: boolean; - outstandingTokens: string; -} - -const liquidatablePrice = (rate: BigNumber, price: BigNumber) => { - const t = 1 - rate.toNumber(); - const a = price.dividedBy(Math.pow(10, 6)); - return a.minus(a.times(t)); -}; - -export const customGetCollateralUtilization = ( - price: BigNumber, - balance: BigNumber, - outstandingTokens: BigNumber -) => { - const priceShard = price.multipliedBy(MUTEZ_TO_SHARD); - const collateralValue = balance - .multipliedBy(MUTEZ_TO_SHARD) - .multipliedBy(priceShard) - .dividedBy(SHARD_PRECISION); - - return new BigNumber( - outstandingTokens - .times(Math.pow(10, SHARD_DIGITS)) - .dividedBy(collateralValue) - .toFixed(0) - ); -}; - -export const getOvens = async (ovenBaseUrl) => { - const { - data: { allOvenData }, - } = await axios.get(ovenBaseUrl); - - //remvoving liquidated + empty ovens - return (allOvenData as KolibriOven[]).filter( - (oven) => oven.isLiquidated === false && parseInt(oven.balance, 10) > 0 - ); -}; - -export const mapOven = async ( - { balance, ovenAddress, ovenOwner, outstandingTokens }: KolibriOven, - price: BigNumber -) => { - const ovenBalance = new BigNumber(balance); - const collateralUtilization = customGetCollateralUtilization( - price, - ovenBalance, - new BigNumber(outstandingTokens) - ); - const rate = collateralUtilization.multipliedBy(2); - const liquidatablePriceValue = liquidatablePrice(rate, price); - - return { - owner: ovenOwner, - liqPrice: parseFloat( - ConversionUtils.shardToHumanReadableNumber(liquidatablePriceValue) - ), - collateral: `coingecko:tezos`, - collateralAmount: ovenBalance.toString(), - extra: { - url: `https://tzkt.io/${ovenAddress}/operations/`, - owner: `https://tzkt.io/${ovenOwner}/operations/`, - }, - } as Liq; -}; From 913ed5637d8d07ded408a4703f0f69b33d1d94cf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 15 May 2023 12:39:05 +0200 Subject: [PATCH 0384/1354] use token labels --- projects/affine-defi/index.js | 3 ++- projects/allbridge/index.js | 2 +- projects/allchainbridge/index.js | 2 +- projects/angle/index.js | 3 ++- projects/archi-finance/index.js | 3 ++- projects/behodler/index.js | 9 ++++---- projects/binance-staked-eth/index.js | 5 +++-- projects/cega/evm.js | 3 ++- projects/cega/solana.js | 3 ++- projects/celerbridge/index.js | 2 +- projects/demeter.js | 2 +- projects/depth/index.js | 4 ++-- projects/ethx/index.js | 7 ++++--- projects/flare-loans/index.js | 5 +++-- projects/flarefarm/index.js | 2 +- projects/floor-dao/index.js | 5 +++-- projects/flux-exchange/index.js | 5 +++-- projects/fraxfinance/index.js | 10 ++++----- projects/goodentry/index.js | 3 ++- projects/helper/tokenMapping.js | 2 +- projects/holdstation/index.js | 3 ++- projects/kei-finance/index.js | 3 ++- projects/lachainBridge.js | 2 +- projects/lendexe/index.js | 7 ++++--- projects/metatdex/index.js | 3 ++- projects/miningtycoon/index.js | 2 +- projects/neutra-finance/index.js | 3 ++- projects/perp/index.js | 11 +++++----- projects/pilotprotocol/index.js | 3 ++- projects/pine-protocol/index.js | 3 ++- projects/sandclock/index.js | 5 +++-- projects/scanto/index.js | 3 ++- projects/slsd/index.js | 3 ++- projects/solo/index.js | 2 +- projects/spark-fi/index.js | 3 ++- projects/spiral-fi-mixer/index.js | 4 ++-- projects/steadefi/index.js | 3 ++- projects/symbiosis-finance/config.js | 2 +- projects/synthex/index.js | 11 +++++----- projects/t-protocol/index.js | 3 ++- projects/templar/index.js | 11 +++++----- projects/thales/index.js | 4 ++-- projects/tipidao/index.js | 5 +++-- projects/tonic-cash/config.js | 5 +++-- projects/treasury/airswap.js | 5 +++-- projects/treasury/ajira-pay-finance.js | 23 ++++++++++---------- projects/treasury/aragon.js | 2 +- projects/treasury/bancor.js | 17 ++++++++------- projects/treasury/compound.js | 9 ++++---- projects/treasury/cryptex.js | 5 +++-- projects/treasury/ease-org.js | 5 +++-- projects/treasury/flokifi-locker.js | 5 +++-- projects/treasury/forth-dao.js | 5 +++-- projects/treasury/galaxygoogle.js | 7 ++++--- projects/treasury/gnosis-dao.js | 2 +- projects/treasury/guru-network.js | 5 +++-- projects/treasury/gyro.js | 5 +++-- projects/treasury/illuvium.js | 3 ++- projects/treasury/index-coop.js | 7 ++++--- projects/treasury/instadapp.js | 14 ++++++------- projects/treasury/iq.js | 5 +++-- projects/treasury/jonesdao.js | 7 ++++--- projects/treasury/keeperdao.js | 2 +- projects/treasury/kei.js | 3 ++- projects/treasury/maker.js | 2 +- projects/treasury/mantra-dao.js | 13 ++++++------ projects/treasury/maple.js | 7 ++++--- projects/treasury/mimo-protocol.js | 4 ++-- projects/treasury/neutra-finance.js | 5 +++-- projects/treasury/notional.js | 3 ++- projects/treasury/op-foundation.js | 5 +++-- projects/treasury/paraswap.js | 3 ++- projects/treasury/push.js | 9 ++++---- projects/treasury/railgun.js | 2 +- projects/treasury/redacted.js | 7 ++++--- projects/treasury/silo-finance.js | 11 +++++----- projects/treasury/spool-protocol.js | 5 +++-- projects/treasury/stargate-finance.js | 3 ++- projects/treasury/tempus-finance.js | 3 ++- projects/treasury/thales.js | 10 ++++----- projects/treasury/umamifinance.js | 2 +- projects/treasury/wonderland.js | 29 +++++++++++++------------- projects/treasury/woofi.js | 7 ++++--- projects/treasury/yam-finance.js | 3 ++- projects/union-finance/index.js | 4 ++-- projects/wemix-staking/index.js | 3 ++- projects/zoodao/index.js | 3 ++- 87 files changed, 263 insertions(+), 200 deletions(-) diff --git a/projects/affine-defi/index.js b/projects/affine-defi/index.js index a05aa0b552..605963845c 100644 --- a/projects/affine-defi/index.js +++ b/projects/affine-defi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') async function tvl(_, _b, _cb, { api, }) { @@ -6,7 +7,7 @@ async function tvl(_, _b, _cb, { api, }) { const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) api.addTokens(tokens, bals) const ownerTokens = [ - [['0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6'], '0x1F9b1057cd93fb2d07d18810903B791b56acc2E1'] + [[ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.WBTC], '0x1F9b1057cd93fb2d07d18810903B791b56acc2E1'] ] return sumTokens2({ api, ownerTokens }) } diff --git a/projects/allbridge/index.js b/projects/allbridge/index.js index b6f03feead..79f21a569b 100644 --- a/projects/allbridge/index.js +++ b/projects/allbridge/index.js @@ -65,7 +65,7 @@ const data = { }, tokens: [ {name: "bitcoin", address: "0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa", decimals: 18}, - {name: "tether", address: "0xa71EdC38d189767582C38A3145b5873052c3e47a", decimals: 18}, + {name: "tether", address: ADDRESSES.heco.USDT, decimals: 18}, {name: "apyswap", address: "0x90e8896b12a92D51CD213b681C2CaD83A9a6bD49", decimals: 18}, ] diff --git a/projects/allchainbridge/index.js b/projects/allchainbridge/index.js index 36812cde96..e44a7836b4 100644 --- a/projects/allchainbridge/index.js +++ b/projects/allchainbridge/index.js @@ -54,7 +54,7 @@ const tokensConf = { heco: { HT: nullAddress, USDC: ADDRESSES.heco.USDC_HECO, - USDT: "0xa71edc38d189767582c38a3145b5873052c3e47a", + USDT: ADDRESSES.heco.USDT, HUSD: "0x0298c2b32eae4da002a15f36fdf7615bea3da047", ETH: "0x64ff637fb478863b7468bc97d30a5bf3a428a1fd", SWFTC: "0x329dda64Cbc4DFD5FA5072b447B3941CE054ebb3", diff --git a/projects/angle/index.js b/projects/angle/index.js index 4973d65ea9..d22e94718a 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { getConfig } = require("../helper/cache"); @@ -55,7 +56,7 @@ async function tvl(_, _1, _2, { api }) { }; // count the USDC in pool manager contract - tokensAndOwners.push(['0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xe9f183FC656656f1F17af1F2b0dF79b8fF9ad8eD']) // add USDC in USDC manager + tokensAndOwners.push([ADDRESSES.ethereum.USDC, '0xe9f183FC656656f1F17af1F2b0dF79b8fF9ad8eD']) // add USDC in USDC manager const poolManagers = getUniqueAddresses([agEUR].map(i => Object.values(i.poolManagers)).flat()) let assets = await api.multiCall({ diff --git a/projects/archi-finance/index.js b/projects/archi-finance/index.js index 3c44d761b3..d3fe496136 100644 --- a/projects/archi-finance/index.js +++ b/projects/archi-finance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const ABI = require("./abi.json"); const addresses = { vaultInfo: "0x73956FF7375476EBFD5e82d80Ea9065a5bCc3d2b", collateralPoolAddress: "0xbd198617aD1dc75B0f7A0A67BbE31993919Cd716", - fsGlpAddress: "0x1addd80e6039594ee970e5872d247bf0414c8903", + fsGlpAddress: ADDRESSES.arbitrum.fsGLP, fsGlpHolders: ["0x65C59eE732BD249224718607Ee0EC0e293309923", "0x49EE14e37Cb47bff8c512B3A0d672302A3446eb1"], vaults: [ // weth pool diff --git a/projects/behodler/index.js b/projects/behodler/index.js index 5c520310c4..5965599a20 100644 --- a/projects/behodler/index.js +++ b/projects/behodler/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, gql } = require("graphql-request"); const { toUSDTBalances } = require('../helper/balances'); const { sumTokensExport } = require("../helper/unwrapLPs"); @@ -36,14 +37,14 @@ module.exports = { tokens: [ '0xaFEf0965576070D1608F374cb14049EefaD218Ec', '0x4f5704D9D2cbCcAf11e70B34048d41A0d572993F', - '0x0D8775F648430679A709E98d2b0Cb6250d2887EF', + ADDRESSES.ethereum.BAT, '0x319eAd06eb01E808C80c7eb9bd77C5d8d163AddB', '0xF047ee812b21050186f86106f6cABDfEc35366c6', '0x155ff1A85F440EE0A382eA949f24CE4E0b751c65', - '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2', - '0x514910771AF9Ca656af840dff83E8264EcF986CA', + ADDRESSES.ethereum.MKR, + ADDRESSES.ethereum.LINK, '0x4575f41308EC1483f3d399aa9a2826d74Da13Deb', - '0x6B175474E89094C44Da98b954EedeAC495271d0F', + ADDRESSES.ethereum.DAI, '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d', '0x42476F744292107e34519F9c357927074Ea3F75D', '0x890ff7533Ca0C44F33167FdEEeaB1cA7E690634F', diff --git a/projects/binance-staked-eth/index.js b/projects/binance-staked-eth/index.js index 4f193bb0bf..dc8631e48b 100644 --- a/projects/binance-staked-eth/index.js +++ b/projects/binance-staked-eth/index.js @@ -1,15 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk") const token = '0xa2E3356610840701BDf5611a53974510Ae27E2e1' module.exports = { ethereum: { tvl: async (_, block) => ({ - "ethereum:0x0000000000000000000000000000000000000000": (await sdk.api.erc20.totalSupply({ target: token, block})).output + ["ethereum:" + ADDRESSES.null]: (await sdk.api.erc20.totalSupply({ target: token, block})).output }) }, bsc: { tvl: async (_, block, chainBlocks) => ({ - "ethereum:0x0000000000000000000000000000000000000000": (await sdk.api.erc20.totalSupply({ target: token, chain:"bsc", block: chainBlocks.bsc})).output + ["ethereum:" + ADDRESSES.null]: (await sdk.api.erc20.totalSupply({ target: token, chain:"bsc", block: chainBlocks.bsc})).output }) } } diff --git a/projects/cega/evm.js b/projects/cega/evm.js index 5da9929ec5..35c5b97843 100644 --- a/projects/cega/evm.js +++ b/projects/cega/evm.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const maxLeverage = 5; const LOV_SUFFIX = "-lov"; const CEGA_STATE = "0x0730AA138062D8Cc54510aa939b533ba7c30f26B"; const CEGA_PRODUCT_VIEWER = "0x31C73c07Dbd8d026684950b17dD6131eA9BAf2C4"; -const usdcAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; +const usdcAddress = ADDRESSES.ethereum.USDC; // Funds are not lent out const FCN_PURE_OPTIONS_ADDRESSES = [ diff --git a/projects/cega/solana.js b/projects/cega/solana.js index 6c839e639e..13b4579c5f 100644 --- a/projects/cega/solana.js +++ b/projects/cega/solana.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { Program } = require("@project-serum/anchor"); const { getProvider} = require("../helper/solana"); const sdk = require('@defillama/sdk') const idl = require("./idl.json"); -const usdcAddress = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; +const usdcAddress = ADDRESSES.solana.USDC; const PURE_OPTIONS_PRODUCTS = [ 'insanic-2', 'supercharger', diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js index 20463fdab5..a8dab3fa42 100644 --- a/projects/celerbridge/index.js +++ b/projects/celerbridge/index.js @@ -94,7 +94,7 @@ const liquidityBridgeTokens = [ bsc: ADDRESSES.bsc.USDT, ethereum: ADDRESSES.ethereum.USDT, fantom: ADDRESSES.fantom.fUSDT, - heco: "0xa71edc38d189767582c38a3145b5873052c3e47a", + heco: ADDRESSES.heco.USDT, okexchain: ADDRESSES.okexchain.USDT, optimism: ADDRESSES.optimism.USDT, polygon: ADDRESSES.polygon.USDT, diff --git a/projects/demeter.js b/projects/demeter.js index 0d9261f950..84a329748b 100644 --- a/projects/demeter.js +++ b/projects/demeter.js @@ -6,7 +6,7 @@ const config = { heco: { markets: [ [ - "0xa71EdC38d189767582C38A3145b5873052c3e47a", + ADDRESSES.heco.USDT, "0x8d8fD8139CEaf0034A021E6eb039bB6f70C83d9c" ], [ diff --git a/projects/depth/index.js b/projects/depth/index.js index 9961cffa1d..0012181aba 100644 --- a/projects/depth/index.js +++ b/projects/depth/index.js @@ -327,7 +327,7 @@ async function getTokenPrice(contractAddress) { target: "0xED7d5F38C79115ca12fe6C0041abb22F0A06C300", abi: mdexRouter['getAmountsIn'], chain: "heco", - params: [1e8, ['0xa71edc38d189767582c38a3145b5873052c3e47a', underlyingCoinsAddress.output]], + params: [1e8, [ADDRESSES.heco.USDT, underlyingCoinsAddress.output]], }); return getAmountsIn.output[0] / Math.pow(10, 26 - 18) @@ -363,7 +363,7 @@ async function getPrice(contractAddress,dc) { target: "0xED7d5F38C79115ca12fe6C0041abb22F0A06C300", abi: mdexRouter['getAmountsOut'], chain: "heco", - params: [1e8, [contractAddress,'0xa71edc38d189767582c38a3145b5873052c3e47a']], + params: [1e8, [contractAddress,ADDRESSES.heco.USDT]], }); return getAmountsIn.output[1] / Math.pow(10, 26 - dc) diff --git a/projects/ethx/index.js b/projects/ethx/index.js index cb3a1cea9b..5af72e18cb 100644 --- a/projects/ethx/index.js +++ b/projects/ethx/index.js @@ -1,12 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') module.exports = { ethereum: { tvl: staking('0x7b0Eff0C991F0AA880481FdFa5624Cb0BC9b10e1', [ - '0x0000000000000000000000000000000000000000', - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', + ADDRESSES.null, + ADDRESSES.ethereum.STETH, '0x5E8422345238F34275888049021821E8E08CAa1f', - '0xae78736Cd615f374D3085123A210448E74Fc6393', + ADDRESSES.ethereum.RETH, ]), } } \ No newline at end of file diff --git a/projects/flare-loans/index.js b/projects/flare-loans/index.js index 2ce9d16324..be641a5500 100644 --- a/projects/flare-loans/index.js +++ b/projects/flare-loans/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') module.exports={ methodology: "We count all WSGB on 0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f and all EXFI on 0x4595fc96262057f9b0d4276ff04de8f2f44e612e, which are backing the stablecoin", songbird: { tvl: sumTokensExport({chain: 'songbird', tokensAndOwners: [ - ['0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED', '0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f'], - ['0xC348F894d0E939FE72c467156E6d7DcbD6f16e21','0x4595fc96262057f9b0d4276ff04de8f2f44e612e'] + [ADDRESSES.songbird.WSGB, '0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f'], + [ADDRESSES.songbird.EXFI,'0x4595fc96262057f9b0d4276ff04de8f2f44e612e'] ]}) } } \ No newline at end of file diff --git a/projects/flarefarm/index.js b/projects/flarefarm/index.js index b2be06abac..ed3d6be0b8 100644 --- a/projects/flarefarm/index.js +++ b/projects/flarefarm/index.js @@ -4,7 +4,7 @@ const { staking } = require('../helper/staking') const WSGB = ADDRESSES.songbird.WSGB const CANARY_DOLLAR = ADDRESSES.songbird.CAND const EXFI = ADDRESSES.songbird.EXFI; - const SFIN = '0x0D94e59332732D18CF3a3D457A8886A2AE29eA1B'; + const SFIN = ADDRESSES.songbird.SFIN; const chain = 'songbird' diff --git a/projects/floor-dao/index.js b/projects/floor-dao/index.js index 130e2840f1..92baadf74a 100644 --- a/projects/floor-dao/index.js +++ b/projects/floor-dao/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') const sdk = require("@defillama/sdk"); // https://docs.floor.xyz/fundamentals/treasury -const WETH = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' -const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' +const WETH = ADDRESSES.ethereum.WETH +const USDC = ADDRESSES.ethereum.USDC const NFTX_LP_STAKING = '0x688c3e4658b5367da06fd629e41879beab538e37' const treasury = '0x91E453f442d25523F42063E1695390e325076ca2' diff --git a/projects/flux-exchange/index.js b/projects/flux-exchange/index.js index 89603cd3aa..25fe65e561 100644 --- a/projects/flux-exchange/index.js +++ b/projects/flux-exchange/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { gmxExports } = require("../helper/gmx"); const FTMVault = "0xc050733A325eEe50E544AcCbD38F6DACEd60ea6D"; const FTMStaking = "0x136F1bD4Bb930cD931Ed30310142c2f03a946AC0"; -const WFTM = "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"; +const WFTM = ADDRESSES.fantom.WFTM; // ZKSYNC const zkSyncVault = "0x09Aa1138dfdfF855Df18DDAf08e92186D213700e"; const zkSyncStaking = "0xFae2784FaE4D47316B487Bc0087a7C78D4809753"; -const WETH = "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91"; +const WETH = ADDRESSES.era.WETH; module.exports = { fantom: { diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js index 032967baf4..66c05dcf66 100644 --- a/projects/fraxfinance/index.js +++ b/projects/fraxfinance/index.js @@ -140,8 +140,8 @@ async function addInvestorAMO(api, balances) { api, owner: INVESTOR_AMO, tokens: Object.values({ Synapse: '0x0f2d719407fdbeff09d87557abb7232601fd9f29', - 'Wrapped BTC': '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - 'USD Coin': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + 'Wrapped BTC': ADDRESSES.ethereum.WBTC, + 'USD Coin': ADDRESSES.ethereum.USDC, ZigZag: '0xc91a71a1ffa3d8b22ba615ba1b9c01b2bbbf55ad', 'Governance OHM': '0x0ab87046fbb341d058f17cbc4c1133f25a20a52f', 'Aave interest bearing USDC': '0xbcca60bb61934080951369a648fb03df4f96263c', @@ -151,13 +151,13 @@ async function addInvestorAMO(api, balances) { 'Curve.fi DAI/USDC/USDT': '0x6c3f90f043a72fa612cbac8115ee7e52bde6e490', 'Saddle DAO': '0xf1dc500fde233a4055e25e5bbf516372bc4f6871', Ether: nullAddress, - TrueUSD: '0x0000000000085d4780b73119b644ae5ecd22b376', + TrueUSD: ADDRESSES.ethereum.TUSD, 'Gelato Network Token': '0x15b7c0c907e4c6b9adaaaabc300c08991d6cea05', 'Staked Aave': '0x4da27a545c0c5b758a6ba100e3a049001de870f5', 'Convex Token': '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b', - 'Curve DAO Token': '0xd533a949740bb3306d119cc777fa900ba034cd52', + 'Curve DAO Token': ADDRESSES.ethereum.CRV, 'Bend Token': '0x0d02755a5700414b26ff040e1de35d337df56218', - 'Binance USD': '0x4fabb145d64652a948d72533023f6e7a623c7c53', + 'Binance USD': ADDRESSES.ethereum.BUSD, 'Alchemix USD': '0xbc6da0fe9ad5f3b0d58160288917aa56653660e9', 'Staked CvxCrv': '0xaa0c3f5f7dfd688c6e646f66cd2a6b66acdbe434', }), diff --git a/projects/goodentry/index.js b/projects/goodentry/index.js index f678373235..b5836e0447 100644 --- a/projects/goodentry/index.js +++ b/projects/goodentry/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require('../helper/abis/aave.json'); const addressesProviderRegistry = '0x01b76559D512Fa28aCc03630E8954405BcBB1E02'; @@ -12,7 +13,7 @@ const token1Abi = "function TOKEN1() view returns (address token, uint8 decimals async function tvl(timestamp, ethBlock, _, { api }) { const addressesProviders = await api.call({ target: addressesProviderRegistry, abi: abi["getAddressesProvidersList"], }) - const validAddressesProviders = addressesProviders.filter((ap) => ap != "0x0000000000000000000000000000000000000000") + const validAddressesProviders = addressesProviders.filter((ap) => ap != ADDRESSES.null) const lendingPools = await api.multiCall({ calls: validAddressesProviders, abi: getLpAbi, }) const aTokens = await api.multiCall({ calls: lendingPools, abi: abi["getReservesList"], }) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 0b5c1bf81f..8abea04fd5 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -28,7 +28,7 @@ const distressedAssts = new Set(Object.values({ const transformTokens = { ethereum: { - '0xe0b469cb3eda0ece9e425cfeda4df986a55ea9f8': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' + '0xe0b469cb3eda0ece9e425cfeda4df986a55ea9f8': ADDRESSES.ethereum.WETH } // Sample Code // cronos: { diff --git a/projects/holdstation/index.js b/projects/holdstation/index.js index 57be6dcc0a..b3998098a4 100644 --- a/projects/holdstation/index.js +++ b/projects/holdstation/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const vault = "0xaf08a9d918f16332F22cf8Dc9ABE9D9E14DdcbC2"; -const usdc = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; +const usdc = ADDRESSES.era.USDC; async function tvl(_, _b, _cb, { api }) { return sumTokens2({ api, tokens: [usdc], owners: [vault] }); diff --git a/projects/kei-finance/index.js b/projects/kei-finance/index.js index ff4acb748f..48b623d95b 100644 --- a/projects/kei-finance/index.js +++ b/projects/kei-finance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { request, } = require("graphql-request"); const { BigNumber } = require("bignumber.js"); const TOKEN_ADDRESS = "0xF75C7a59bCD9bd207C4Ab1BEB0b32EEd3B6392f3"; const TREASURY_ADDRESS = "0x3D027824a9Eb4cc5E8f24D97FD8495eA9DC7026F"; -const WETH_ADDRESS = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const WETH_ADDRESS = ADDRESSES.ethereum.WETH; const config = { ethereum: { diff --git a/projects/lachainBridge.js b/projects/lachainBridge.js index 6e60f67ce3..950a84c1a5 100644 --- a/projects/lachainBridge.js +++ b/projects/lachainBridge.js @@ -26,7 +26,7 @@ const config = { nativeBridge: ['0x0A19afbE4519A40Df3b48BE46EDc0720724B4A6B'], tokenBridge: ['0x5DDDc78C8a59CeD4d25a8FD96BF9D9FdA561D0FF'], tokens: ['0x3c2b8be99c50593081eaa2a724f0b8285f5aba8f'], }, heco: { - nativeBridge: ['0xbBF0b12A0Be425Db284905A3Cb0Ab72b178b6A4F'], tokenBridge: ['0x334d6D6c5EaE4bf5ec7De39a1547e6bDBdDcfbf3'], tokens: ['0xa71edc38d189767582c38a3145b5873052c3e47a'], + nativeBridge: ['0xbBF0b12A0Be425Db284905A3Cb0Ab72b178b6A4F'], tokenBridge: ['0x334d6D6c5EaE4bf5ec7De39a1547e6bDBdDcfbf3'], tokens: [ADDRESSES.heco.USDT], }, } diff --git a/projects/lendexe/index.js b/projects/lendexe/index.js index de1112638a..6161994b1e 100644 --- a/projects/lendexe/index.js +++ b/projects/lendexe/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { compoundExports } = require('../helper/compound') const { nullAddress } = require('../helper/tokenMapping') const { lendingMarket } = require("../helper/methodologies"); @@ -7,9 +8,9 @@ const u = undefined const { tvl, borrowed } = compoundExports('0x2c7b7A776b5c3517B77D05B9313f4699Fb38a8d3',u,'0x36e66547e27a5953f6ca3d46cc2663d9d6bdc59e', nullAddress, undefined, undefined, { fetchBalances: true, blacklistedTokens: ['0x53011e93f21ec7a74cdfbb7e6548f1abce306833'] }) const mapping = { - '0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': 6, - '0xdac17f958d2ee523a2206206994597c13d831ec7': 6, - '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599': 8, + [ADDRESSES.ethereum.USDC]: 6, + [ADDRESSES.ethereum.USDT]: 6, + [ADDRESSES.ethereum.WBTC]: 8, } async function borrowedWrapped(_, _1, _2, { api }) { const borrowedRes = await borrowed(_, _1, _2, { api }) diff --git a/projects/metatdex/index.js b/projects/metatdex/index.js index 22972ad51d..272971632c 100644 --- a/projects/metatdex/index.js +++ b/projects/metatdex/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const { sumTokens2 } = require('../helper/unwrapLPs') @@ -29,7 +30,7 @@ Object.keys(config).forEach(chain => { chain, block, }) if (chain === 'heco') - tokens.push('0xa71edc38d189767582c38a3145b5873052c3e47a') + tokens.push(ADDRESSES.heco.USDT) return sumTokens2({ tokens, owner, chain, block, }) } } diff --git a/projects/miningtycoon/index.js b/projects/miningtycoon/index.js index 46e6a372cc..a4fa748146 100644 --- a/projects/miningtycoon/index.js +++ b/projects/miningtycoon/index.js @@ -5,7 +5,7 @@ const tokenFarm = '0xBdfbeecF52bCfF5aa8cc1B8A4B737B2Af3D1BA2F'; const tokenFarm2 = '0x8A6AE8076A1866877e006cC9b4bd0378646A9bD5'; const NTToken = '0x8b70512b5248e7c1f0f6996e2fde2e952708c4c9'; -const USDTToken = '0xa71edc38d189767582c38a3145b5873052c3e47a'; +const USDTToken = ADDRESSES.heco.USDT; const bsc_tokenFarm = '0xA05Cbf21620553Ade9a3368f1b20D81eEe74a1FC'; const bsc_tokenFarm2 = '0x973fEAf394F5E882B0F8a9B5CDC0b3E28AA08926'; diff --git a/projects/neutra-finance/index.js b/projects/neutra-finance/index.js index a25a14797f..258db92e0a 100644 --- a/projects/neutra-finance/index.js +++ b/projects/neutra-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') async function tvl(_, _b, _cb, { api, }) { @@ -8,7 +9,7 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, owners: ['0x6bfa4f1dfafeb9c37e4e8d436e1d0c5973e47e25'], - tokens: ['0x1addd80e6039594ee970e5872d247bf0414c8903', '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1',], + tokens: [ADDRESSES.arbitrum.fsGLP, ADDRESSES.optimism.DAI,], }) } module.exports = { diff --git a/projects/perp/index.js b/projects/perp/index.js index 3c8449bb62..bc4e377433 100644 --- a/projects/perp/index.js +++ b/projects/perp/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const perpToken = "0xbC396689893D065F41bc2C6EcbeE5e0085233447" @@ -13,10 +14,10 @@ module.exports = { "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60" ], [ - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - "0x4200000000000000000000000000000000000042", - "0x4200000000000000000000000000000000000006", - "0x2E3D870790dC77A83DD1d18184Acc7439A53f475"]) + ADDRESSES.optimism.USDC, + ADDRESSES.optimism.USDT, + ADDRESSES.optimism.OP, + ADDRESSES.tombchain.FTM, + ADDRESSES.optimism.FRAX]) }, } \ No newline at end of file diff --git a/projects/pilotprotocol/index.js b/projects/pilotprotocol/index.js index bf37485770..ac1fcd9b47 100644 --- a/projects/pilotprotocol/index.js +++ b/projects/pilotprotocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -29,7 +30,7 @@ const farmingPools = [ const tokens = [ // USDT: - "0xa71EdC38d189767582C38A3145b5873052c3e47a", + ADDRESSES.heco.USDT, // HBTC: "0x66a79D23E58475D2738179Ca52cd0b41d73f0BEa", // ETH: diff --git a/projects/pine-protocol/index.js b/projects/pine-protocol/index.js index 3580c8ca0f..82cffda2fa 100644 --- a/projects/pine-protocol/index.js +++ b/projects/pine-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLogs, getAddress } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') @@ -30,7 +31,7 @@ async function borrowed(_, _b, _cb, { api, }) { } const config = { - ethereum: { factory: '0x19c56cb20e6e9598fc4d22318436f34981e481f9', fromBlock: 16423090, wrapped: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', }, + ethereum: { factory: '0x19c56cb20e6e9598fc4d22318436f34981e481f9', fromBlock: 16423090, wrapped: ADDRESSES.ethereum.WETH, }, polygon: { factory: '0x85b609f4724860fead57e16175e66cf1f51bf72d', fromBlock: 40378130, wrapped: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', }, } diff --git a/projects/sandclock/index.js b/projects/sandclock/index.js index 218997bd4b..c319911dd7 100644 --- a/projects/sandclock/index.js +++ b/projects/sandclock/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokens2 } = require('../helper/unwrapLPs') const LUSD = '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'; -const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; -const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; +const WETH = ADDRESSES.ethereum.WETH; +const USDC = ADDRESSES.ethereum.USDC; const YEARN_VAULT = '0x4fe4bf4166744bcbc13c19d959722ed4540d3f6a'; const LIQUITY_VAULT = '0x91a6194f1278f6cf25ae51b604029075695a74e5'; const WETH_VAULT = '0x1Fc623b96c8024067142Ec9c15D669E5c99c5e9D'; diff --git a/projects/scanto/index.js b/projects/scanto/index.js index 0122f0f95d..8f7882ca47 100644 --- a/projects/scanto/index.js +++ b/projects/scanto/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') async function tvl(_, _b, _cb, { api }){ const supply = await api.call({ abi: "function totalSupply() view returns (uint256)", target:"0x9F823D534954Fc119E31257b3dDBa0Db9E2Ff4ed" }) return { - "canto:0x0000000000000000000000000000000000000000": supply + ["canto:" + ADDRESSES.null]: supply } } diff --git a/projects/slsd/index.js b/projects/slsd/index.js index 30fd8b8c9b..51fd1bcbf3 100644 --- a/projects/slsd/index.js +++ b/projects/slsd/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const FACTORY_CONTRACT = "0x253924C4D0806Fd6A81f72e0bEa400CD97c64700"; @@ -15,7 +16,7 @@ async function tvl(_, _1, _2, { api }) { const owners = await api.multiCall({ abi: abis.getStakingPoolAddress, target: FACTORY_CONTRACT, calls: tokens }) tokens.forEach((v, i) => { if (v === nullAddress) { - tokens.push('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2') + tokens.push(ADDRESSES.ethereum.WETH) owners.push(owners[i]) } }) diff --git a/projects/solo/index.js b/projects/solo/index.js index f05218d92b..586f6db237 100644 --- a/projects/solo/index.js +++ b/projects/solo/index.js @@ -14,7 +14,7 @@ const VAULT_BSC = "0x7033A512639119C759A51b250BfA461AE100894b" const VAULT_POLYGON = "0xE95876787B055f1b9E4cfd5d3e32BDe302BF789d" const VAULT_OEC = "0xa8AF3199aCE72E47c1DEb56E58BEA1CD41C37c22" -const USDT_HECO = "0xa71EdC38d189767582C38A3145b5873052c3e47a" +const USDT_HECO = ADDRESSES.heco.USDT const USDT_BSC = ADDRESSES.bsc.USDT const USDT_POLYGON = ADDRESSES.polygon.USDT const USDT_OEC = ADDRESSES.okexchain.USDT diff --git a/projects/spark-fi/index.js b/projects/spark-fi/index.js index c6351dffe5..424ee87296 100644 --- a/projects/spark-fi/index.js +++ b/projects/spark-fi/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { aaveExports } = require('../helper/aave'); module.exports = { - ethereum: aaveExports('ethereum', '0x03cFa0C4622FF84E50E75062683F44c9587e6Cc1', undefined, ["0xFc21d6d146E6086B8359705C8b28512a983db0cb"], { v3: true, blacklistedTokens: ['0x6b175474E89094C44Da98b954EedeAC495271d0f']}) + ethereum: aaveExports('ethereum', '0x03cFa0C4622FF84E50E75062683F44c9587e6Cc1', undefined, ["0xFc21d6d146E6086B8359705C8b28512a983db0cb"], { v3: true, blacklistedTokens: [ADDRESSES.ethereum.DAI]}) }; \ No newline at end of file diff --git a/projects/spiral-fi-mixer/index.js b/projects/spiral-fi-mixer/index.js index c50393fad6..2032acb827 100644 --- a/projects/spiral-fi-mixer/index.js +++ b/projects/spiral-fi-mixer/index.js @@ -3,9 +3,9 @@ const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { era: { - tvl: sumTokensExport({ owner: '0xcd98e2C68248de044c3E44144C34D9EBb09337a9', tokens: ['0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4']}) + tvl: sumTokensExport({ owner: '0xcd98e2C68248de044c3E44144C34D9EBb09337a9', tokens: [ADDRESSES.era.USDC]}) }, polygon_zkevm: { - tvl: sumTokensExport({owner: '0x96DaD05740807e76892076684F433D5E0b3569fB', tokens: ['0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035']}) + tvl: sumTokensExport({owner: '0x96DaD05740807e76892076684F433D5E0b3569fB', tokens: [ADDRESSES.polygon_zkevm.USDC]}) } } \ No newline at end of file diff --git a/projects/steadefi/index.js b/projects/steadefi/index.js index f629f62336..e6f3bdd1eb 100644 --- a/projects/steadefi/index.js +++ b/projects/steadefi/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getConfig } = require('../helper/cache'); const { sumTokens2 } = require('../helper/unwrapLPs'); @@ -9,7 +10,7 @@ async function getProjectInfo() { } const config = { - arbitrum: { fsglp: '0x1aDDD80E6039594eE970E5872D247bf0414C8903' }, + arbitrum: { fsglp: ADDRESSES.arbitrum.fsGLP }, avax: { fsglp: '0x9e295B5B976a184B14aD8cd72413aD846C299660' }, } diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 9cc881a412..fdf4690249 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -111,7 +111,7 @@ module.exports = { }, { name: 'optimism', - stable: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', // USDC + stable: ADDRESSES.optimism.USDC, // USDC holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] diff --git a/projects/synthex/index.js b/projects/synthex/index.js index 938164e1a1..228326c2ab 100644 --- a/projects/synthex/index.js +++ b/projects/synthex/index.js @@ -1,14 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const poolC = '0x8d6E834277E4f513BacF83B0A87524c913eF8691'; const poolF = "0x0546458d110Dff9D394C0F4621423Bc8f009A779"; -const USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; -const WBTC = "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"; +const USDC = ADDRESSES.arbitrum.USDC; +const WBTC = ADDRESSES.arbitrum.WBTC; const ARB = "0x912CE59144191C1204E64559FE8253a0e49E6548"; const ETH = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; -const WETH = "0x82af49447d8a07e3bd95bd0d56f35241523fbab1"; -const USDT = "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"; -const DAI = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"; +const WETH = ADDRESSES.arbitrum.WETH; +const USDT = ADDRESSES.arbitrum.USDT; +const DAI = ADDRESSES.optimism.DAI; module.exports = { diff --git a/projects/t-protocol/index.js b/projects/t-protocol/index.js index 621d880b6b..dad6f75eea 100644 --- a/projects/t-protocol/index.js +++ b/projects/t-protocol/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); -const USDC_TOKEN_CONTRACT = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; +const USDC_TOKEN_CONTRACT = ADDRESSES.ethereum.USDC; const TREASURY_CONTRACT = "0xa01D9bc8343016C7DDD39852e49890a8361B2884"; const STBT = '0x530824DA86689C9C17CdC2871Ff29B058345b44a' diff --git a/projects/templar/index.js b/projects/templar/index.js index 00143bdb8f..f56fc4d7e2 100644 --- a/projects/templar/index.js +++ b/projects/templar/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require("../helper/staking"); const { sumTokensExport, nullAddress, } = require("../helper/unwrapLPs"); @@ -7,8 +8,8 @@ const bscStakingV2 = "0xffC7B93b53BC5F4732b414295E989684702D0eb5"; const bscTreasuryContract = "0xd01e8D805BB310F06411e70Fd50eB58cAe2B4C27"; const bscTokens = { - BUSD: "0xe9e7cea3dedca5984780bafc599bd69add087d56", - WBNB: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + BUSD: ADDRESSES.bsc.BUSD, + WBNB: ADDRESSES.bsc.WBNB, MIM: "0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba", TM: "0x194d1D62d8d798Fcc81A6435e6d13adF8bcC2966", DAI: "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", @@ -18,8 +19,8 @@ const bscTokens = { }; const ethTokens = { - USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + USDC: ADDRESSES.ethereum.USDC, + USDT: ADDRESSES.ethereum.USDT, }; const ethOwner = "0x4Bd973e98585b003c31f4C8b9d6eAC5d3293B1e5" @@ -37,6 +38,6 @@ module.exports = { staking: stakings([bscStaking, bscStakingV2], bscTokens.TEM, "bsc"), }, ethereum: { - tvl: sumTokensExport({ owner: ethOwner, tokens: [ethTokens.USDC, ethTokens.USDT, nullAddress, '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'], resolveUniV3: true, }), + tvl: sumTokensExport({ owner: ethOwner, tokens: [ethTokens.USDC, ethTokens.USDT, nullAddress, ADDRESSES.ethereum.WBTC], resolveUniV3: true, }), }, } diff --git a/projects/thales/index.js b/projects/thales/index.js index ed4fc18419..fd6f5a4a85 100644 --- a/projects/thales/index.js +++ b/projects/thales/index.js @@ -21,12 +21,12 @@ const opThalesToken = "0x217d47011b23bb961eb6d93ca9945b7501a5bb11" const opSportsMarketsManager = "0xFBffEbfA2bF2cF84fdCf77917b358fC59Ff5771e" const polygonMarketsManager = "0x85f1B57A1D3Ac7605de3Df8AdA056b3dB9676eCE" -const polygon_USDC = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" +const polygon_USDC = ADDRESSES.polygon.USDC const polygonThalesAmm = "0xd52B865584c25FEBfcB676B9A87F32683356A063" const polygonRangedAMM = "0xe8e022405505a9F2b0B7452C844F1e64423849fC" const arbitrumMarketsManager = "0x95d93c88c1b5190fA7FA4350844e0663e5a11fF0" -const arbitrum_USDC = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" +const arbitrum_USDC = ADDRESSES.arbitrum.USDC const arbThalesStaking = "0x160Ca569999601bca06109D42d561D85D6Bb4b57" const arbitrumThalesAMM = "0x2b89275efB9509c33d9AD92A4586bdf8c4d21505" const arbSportsMarketsManager = "0x72ca0765d4bE0529377d656c9645600606214610" diff --git a/projects/tipidao/index.js b/projects/tipidao/index.js index d8ac5f2e51..086376295f 100644 --- a/projects/tipidao/index.js +++ b/projects/tipidao/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const tpd = "0xd0253dbe5606c9fa01db67eb10be5c3675c2b117"; const tpdStaking = "0xAeab776bE63580cB86309CedB49769e6526abbf4"; const treasury = "0x3287f25f8F29e5d65cE566E5a2a1bd336431d8db"; const treasuryTokens = [ - "0xe9e7cea3dedca5984780bafc599bd69add087d56", // BUSD - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", // WBNB + ADDRESSES.bsc.BUSD, // BUSD + ADDRESSES.bsc.WBNB, // WBNB "0x50bc855ad6a3983589927e5bf3ac0688364ffa64" // TPD-BUSD CAKE LP ]; diff --git a/projects/tonic-cash/config.js b/projects/tonic-cash/config.js index ac5fffae81..7af12226db 100644 --- a/projects/tonic-cash/config.js +++ b/projects/tonic-cash/config.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress } = require('../helper/unwrapLPs'); module.exports = { @@ -41,7 +42,7 @@ module.exports = { ], }, { - tokens: ['0x8E81fCc2d4A3bAa0eE9044E0D7E36F59C9BbA9c1'], // WEMIXDollar + tokens: [ADDRESSES.wemix.WEMIX_], // WEMIXDollar holders: [ '0x144120Ef18d4223Ab3f4695653a5755C23FBF469', '0xc978f195C838d3344f74DDBA84235130B3091847', @@ -50,7 +51,7 @@ module.exports = { ], }, { - tokens: ['0x765277EebeCA2e31912C9946eAe1021199B39C61'], // ETH + tokens: [ADDRESSES.shiden.ETH], // ETH holders: [ '0x2D3bAeBa85D78D202887D34f5618380e90F3c272', '0xD2510D275dbca0fe333dAff8Eb51b9105f6aC212', diff --git a/projects/treasury/airswap.js b/projects/treasury/airswap.js index ada4261a81..051822819b 100644 --- a/projects/treasury/airswap.js +++ b/projects/treasury/airswap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x24b4ce3ad4366b73f839c1b1fd11d1f636514534"; @@ -10,8 +11,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0x4Fabb145d64652a948d72533023f6E7A623C7C53" + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.BUSD ], owners: [treasury, treasury2, treasury3], ownTokens: [AST], diff --git a/projects/treasury/ajira-pay-finance.js b/projects/treasury/ajira-pay-finance.js index 291deebf1b..8aa94fa4c7 100644 --- a/projects/treasury/ajira-pay-finance.js +++ b/projects/treasury/ajira-pay-finance.js @@ -1,32 +1,33 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const AJP = "0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997" const arb_tokens = [ - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', - '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', - '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', + ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.USDT, + ADDRESSES.optimism.DAI, '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', '0x912CE59144191C1204E64559FE8253a0e49E6548', nullAddress ] const bsc_tokens = [ - '0x55d398326f99059fF775485246999027B3197955', '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + ADDRESSES.bsc.USDT, ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.BUSD, ADDRESSES.bsc.USDC, '0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD', '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', nullAddress ] const polygon_tokens = [ - '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6', - '0x0000000000000000000000000000000000001010', '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', - '0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39', '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', + ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC, + ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.WBTC, + ADDRESSES.polygon.WMATIC_1, ADDRESSES.polygon.DAI, + ADDRESSES.polygon.BUSD, '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', nullAddress ] const kava_tokens = [ - '0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', '0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', - '0xB44a9B6905aF7c801311e8F4E76932ee959c663C', '0xEB466342C4d449BC9f53A865D5Cb90586f405215', + ADDRESSES.kava.WKAVA, ADDRESSES.telos.ETH, + ADDRESSES.moonriver.USDT, ADDRESSES.kava.axlUSDC, '0x9DBC0Ad09184226313FbDe094E7c3DD75c94f997', nullAddress ] diff --git a/projects/treasury/aragon.js b/projects/treasury/aragon.js index 1713820598..92b76bd8aa 100644 --- a/projects/treasury/aragon.js +++ b/projects/treasury/aragon.js @@ -25,7 +25,7 @@ module.exports = treasuryExports({ '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA '0xaC9Bb427953aC7FDDC562ADcA86CF42D988047Fd',//STT "0x0f5d2fb29fb7d3cfee444a200298f468908cc942",//MANA - "0xdac17f958d2ee523a2206206994597c13d831ec7",//USDT + ADDRESSES.ethereum.USDT,//USDT ], owners: [aragonTreasury, "0x7ecd1eac2a07974bcbabafee44b5cc44ceee9540", "0xcafe1a77e84698c83ca8931f54a755176ef75f2c"], ownTokens: [ANT, ANT_ETH_LP], diff --git a/projects/treasury/bancor.js b/projects/treasury/bancor.js index 55d26031f2..14835e0349 100644 --- a/projects/treasury/bancor.js +++ b/projects/treasury/bancor.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const treasury = "0x649765821D9f64198c905eC0B2B037a4a52Bc373"; @@ -9,28 +10,28 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0x514910771AF9Ca656af840dff83E8264EcF986CA", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", + ADDRESSES.ethereum.LINK, + ADDRESSES.ethereum.DAI, "0x967da4048cD07aB37855c090aAF366e4ce1b9F48", - "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", + ADDRESSES.ethereum.SNX, "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", - "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", + ADDRESSES.ethereum.YFI, "0x408e41876cCCDC0F92210600ef50372656052a38", "0x1559FA1b8F28238FD5D76D9f434ad86FD20D1559", "0xa1faa113cbE53436Df28FF0aEe54275c13B40975", - "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", + ADDRESSES.ethereum.BAT, "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", - "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + ADDRESSES.ethereum.MATIC, "0x0f71B8De197A1C84d31de0F1fA7926c365F052B3", "0xBC19712FEB3a26080eBf6f2F7849b417FdD792CA", "0xc00e94Cb662C3520282E6f5717214004A7f26888", "0x0d438F3b5175Bebc262bF23753C1E53d03432bDE", "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", "0x6710c63432A2De02954fc0f851db07146a6c0312", - "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" + ADDRESSES.ethereum.AAVE, + ADDRESSES.ethereum.WBTC ], owners: [treasury], ownTokens: [BNT, vBNT], diff --git a/projects/treasury/compound.js b/projects/treasury/compound.js index ce3cb02fe6..c82595909e 100644 --- a/projects/treasury/compound.js +++ b/projects/treasury/compound.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B"; @@ -14,10 +15,10 @@ module.exports = treasuryExports({ '0xE41d2489571d322189246DaFA5ebDe1F4699F498',//zrx '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC '0xc00e94Cb662C3520282E6f5717214004A7f26888', - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', - '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', - '0x6B175474E89094C44Da98b954EedeAC495271d0F' + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.UNI, + ADDRESSES.ethereum.DAI ], owners: [treasury, vestingAddress, treasury2], ownTokens: [COMP], diff --git a/projects/treasury/cryptex.js b/projects/treasury/cryptex.js index 9b9e117355..5d7abdcf61 100644 --- a/projects/treasury/cryptex.js +++ b/projects/treasury/cryptex.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryARB = "0x9474b771fb46e538cfed114ca816a3e25bb346cf"; @@ -14,8 +15,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0x514910771AF9Ca656af840dff83E8264EcF986CA" + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.LINK ], owners: [treasuryETH, treasury2], ownTokens: [ctx], diff --git a/projects/treasury/ease-org.js b/projects/treasury/ease-org.js index f3a8bc9ec7..159aad99c0 100644 --- a/projects/treasury/ease-org.js +++ b/projects/treasury/ease-org.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x1f28ed9d4792a567dad779235c2b766ab84d8e33"; @@ -7,8 +8,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0x6B175474E89094C44Da98b954EedeAC495271d0F', - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, '0x7CA51456b20697A0E5Be65e5AEb65dfE90f21150', '0x43632E3448cd47440fEE797258081414D91A58cE', ], diff --git a/projects/treasury/flokifi-locker.js b/projects/treasury/flokifi-locker.js index e5a80bd2d8..775541a1d2 100644 --- a/projects/treasury/flokifi-locker.js +++ b/projects/treasury/flokifi-locker.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryETH = "0x2b9d5c7f2EAD1A221d771Fb6bb5E35Df04D60AB0"; @@ -12,8 +13,8 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0xca7c2771D248dCBe09EABE0CE57A62e18dA178c0", - "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, "0x1BD708E01E96d426652b0D50b8c896eaeefee36d" ], owners: [treasuryETH, treasuryETH2], diff --git a/projects/treasury/forth-dao.js b/projects/treasury/forth-dao.js index 7e68146cd6..c24cbc101c 100644 --- a/projects/treasury/forth-dao.js +++ b/projects/treasury/forth-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x223592a191ecfc7fdc38a9256c3bd96e771539a9"; @@ -11,8 +12,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',//usdc - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth + ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.WETH,//weth '0xBcca60bB61934080951369a648Fb03DF4F96263C',//ausdc '0xc944E90C64B2c07662A292be6244BDf05Cda44a7' ], diff --git a/projects/treasury/galaxygoogle.js b/projects/treasury/galaxygoogle.js index d9c4e38269..fcc803f7d1 100644 --- a/projects/treasury/galaxygoogle.js +++ b/projects/treasury/galaxygoogle.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); const gg = "0xF2F7CE610a091B94d41D69f4fF1129434a82E2f0" @@ -6,8 +7,8 @@ const gg = "0xF2F7CE610a091B94d41D69f4fF1129434a82E2f0" const treasury = "0xD5F922e23693e552793fE0431F9a95ba67A60A23" const dao = "0xDEEdd1646984F9372Cc9D3d7E13AC1606cC2B548" const mim = "0x130966628846BFd36ff31a822705796e8cb8C18D" -const wavax = "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7" -const joe = "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd" +const wavax = ADDRESSES.avax.WAVAX +const joe = ADDRESSES.avax.JOE async function tvl(timestamp, block, chainBlocks) { const balances = {}; @@ -31,7 +32,7 @@ async function tvl(timestamp, block, chainBlocks) { const bscTreasury = "0xF76C9753507B3Df0867EB02D86d07C6fFcEecaf1"; const treasuryTokensBSC = [ - ["0xe9e7cea3dedca5984780bafc599bd69add087d56", false], // BUSD + [ADDRESSES.bsc.BUSD, false], // BUSD ["0x13Cf29b3F58f777dDeD38278F7d938401f6b260c", true] // GG-BUSD ] diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index 2dd09a6c92..aa29408599 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -33,7 +33,7 @@ module.exports = treasuryExports({ '0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6',//RDN '0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb',//INST '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX - '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32',//LDO + ADDRESSES.ethereum.LIDO,//LDO '0x1982b2F5814301d4e9a8b0201555376e62F82428', "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f" ], diff --git a/projects/treasury/guru-network.js b/projects/treasury/guru-network.js index e848df22c5..3e6922e643 100644 --- a/projects/treasury/guru-network.js +++ b/projects/treasury/guru-network.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x167D87A906dA361A10061fe42bbe89451c2EE584"; @@ -7,9 +8,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", //usdc + ADDRESSES.ethereum.USDC, //usdc '0x777172D858dC1599914a1C4c6c9fC48c99a60990',//solid - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//weth + ADDRESSES.ethereum.WETH,//weth '0x853d955aCEf822Db058eb8505911ED77F175b99e',//frax ], owners: [treasury], diff --git a/projects/treasury/gyro.js b/projects/treasury/gyro.js index db91632a24..a9ee20e5ac 100644 --- a/projects/treasury/gyro.js +++ b/projects/treasury/gyro.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const Treasury = "0x8b1522402fece066d83e0f6c97024248be3c8c01"; @@ -9,8 +10,8 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56',//BUSD - '0x55d398326f99059fF775485246999027B3197955',//BSC-USD + ADDRESSES.bsc.BUSD,//BUSD + ADDRESSES.bsc.USDT,//BSC-USD '0x5ca063a7e2bebefeb2bdea42158f5b825f0f9ffb', '0xa5399084a5f06d308c4527517bbb781c4dce887c', ], diff --git a/projects/treasury/illuvium.js b/projects/treasury/illuvium.js index 3a421b1f26..c50e18e68c 100644 --- a/projects/treasury/illuvium.js +++ b/projects/treasury/illuvium.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const Treasury = "0x58c37a622cdf8ace54d8b25c58223f61d0d738aa"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ owners: [Treasury], }, ethereum: { - tokens: [nullAddress, '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xdac17f958d2ee523a2206206994597c13d831ec7', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2', '0x5afe3855358e112b5647b952709e6165e1c1eeee' ], + tokens: [nullAddress, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.SUSHI, '0x5afe3855358e112b5647b952709e6165e1c1eeee' ], owners: [Treasury], ownTokens: ['0x767fe9edc9e0df98e07454847909b5e959d7ca0e'], } diff --git a/projects/treasury/index-coop.js b/projects/treasury/index-coop.js index 1b9670b233..add2c0924a 100644 --- a/projects/treasury/index-coop.js +++ b/projects/treasury/index-coop.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { Indexed } = require("ethers/lib/utils"); const { nullAddress,treasuryExports } = require("../helper/treasury"); @@ -13,14 +14,14 @@ module.exports = treasuryExports({ tokens: [ nullAddress, '0x5aFE3855358E112B5647B952709E6165e1c1eEEe',//SAFE - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - '0x6B175474E89094C44Da98b954EedeAC495271d0F', + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, '0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84', '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd', '0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD', '0x39AA39c021dfbaE8faC545936693aC917d5E7563', '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', - '0xdAC17F958D2ee523a2206206994597C13D831ec7', + ADDRESSES.ethereum.USDT, '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ], owners: [treasury, treasury2, treasury3], diff --git a/projects/treasury/instadapp.js b/projects/treasury/instadapp.js index 2e53100704..68db6fd8ee 100644 --- a/projects/treasury/instadapp.js +++ b/projects/treasury/instadapp.js @@ -19,13 +19,13 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", - "0xdAC17F958D2ee523a2206206994597C13D831ec7" + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WSTETH, + ADDRESSES.ethereum.USDT ], owners: [treasuryETH], ownTokens: [INST], diff --git a/projects/treasury/iq.js b/projects/treasury/iq.js index 8860c33d75..b619f76fdb 100644 --- a/projects/treasury/iq.js +++ b/projects/treasury/iq.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x56398b89d53e8731bca8c1b06886cfb14bd6b654"; @@ -10,8 +11,8 @@ module.exports = treasuryExports({ "0xac3E018457B222d93114458476f3E3416Abbe38F", "0x853d955aCEf822Db058eb8505911ED77F175b99e", "0x9D45081706102E7aadDD0973268457527722E274", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WBTC, "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", "0xEF9F994A74CB6EF21C38B13553caa2E3E15F69d0" ], diff --git a/projects/treasury/jonesdao.js b/projects/treasury/jonesdao.js index 58623067db..087866e55b 100644 --- a/projects/treasury/jonesdao.js +++ b/projects/treasury/jonesdao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xFa82f1bA00b0697227E2Ad6c668abb4C50CA0b1F"; @@ -7,9 +8,9 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", // USDC + ADDRESSES.arbitrum.USDC, // USDC "0x3d9907F9a368ad0a51Be60f7Da3b97cf940982D8", // GRAIL - "0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A", // MIM + ADDRESSES.arbitrum.MIM, // MIM "0x3CAaE25Ee616f2C8E13C74dA0813402eae3F496b", // xGRAIL "0x616279fF3dBf57A55e3d1F2E309e5D704E4e58Ae", // jGLP-USDC CMLT-LP "0x2bcd0aac7D98697D8760fB291625829113E354e7", // jUSDC-WETH CMLT-LP @@ -23,7 +24,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.USDC, // USDC ], owners: [treasury,], ownTokens: [], diff --git a/projects/treasury/keeperdao.js b/projects/treasury/keeperdao.js index f291b96a18..c4d7f2b540 100644 --- a/projects/treasury/keeperdao.js +++ b/projects/treasury/keeperdao.js @@ -18,7 +18,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.WBTC,//WBTC '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',//renBTC - '0xdAC17F958D2ee523a2206206994597C13D831ec7' + ADDRESSES.ethereum.USDT ], owners: [keeperDaoTreasury], ownTokens: [ROOK], diff --git a/projects/treasury/kei.js b/projects/treasury/kei.js index 1a7bfead12..216ff4b95f 100644 --- a/projects/treasury/kei.js +++ b/projects/treasury/kei.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ ethereum: { tokens: [ - '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + ADDRESSES.ethereum.WETH, '0x7d87123d92e9df257e0789189e4c4ff67fa6c382', ], owners: ['0x3D027824a9Eb4cc5E8f24D97FD8495eA9DC7026F'], diff --git a/projects/treasury/maker.js b/projects/treasury/maker.js index 5ba4dc93e4..8cd820c29c 100644 --- a/projects/treasury/maker.js +++ b/projects/treasury/maker.js @@ -16,7 +16,7 @@ async function tvl(timestamp, block, chainBlocks, {api}) { '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens '0x4da27a545c0c5B758a6BA100e3a049001de870f5',//staave '0xc00e94Cb662C3520282E6f5717214004A7f26888',//comp - '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9',//aave + ADDRESSES.ethereum.AAVE,//aave '0x8f8221aFbB33998d8584A2B05749bA73c37a938a',//req ].map(t=>[t, treasury]) await sumTokens(balances, tokensAndOwners, block); diff --git a/projects/treasury/mantra-dao.js b/projects/treasury/mantra-dao.js index e2a4fbbf2e..d93b5d4f44 100644 --- a/projects/treasury/mantra-dao.js +++ b/projects/treasury/mantra-dao.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xc8899da25423ac52aa711b97ae04c8888fa1e1d7"; @@ -9,13 +10,13 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC '0xFe2e637202056d30016725477c5da089Ab0A043A',//sETH2 - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI - '0xae78736Cd615f374D3085123A210448E74Fc6393',//rETH - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',//stETH - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',//WBTC + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.RETH,//rETH + ADDRESSES.ethereum.STETH,//stETH + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.WBTC,//WBTC '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D'//renBTC ], diff --git a/projects/treasury/maple.js b/projects/treasury/maple.js index 1b851b1e9b..07519efdf3 100644 --- a/projects/treasury/maple.js +++ b/projects/treasury/maple.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ ethereum: { tokens: [ - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "0xdac17f958d2ee523a2206206994597c13d831ec7" + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT ], owners: [ "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19", diff --git a/projects/treasury/mimo-protocol.js b/projects/treasury/mimo-protocol.js index 9514bea3dc..ffa933b1eb 100644 --- a/projects/treasury/mimo-protocol.js +++ b/projects/treasury/mimo-protocol.js @@ -39,7 +39,7 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174'//USDC + ADDRESSES.polygon.USDC//USDC ], owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], ownTokens: [MIMOpolygon,], @@ -47,7 +47,7 @@ module.exports = treasuryExports({ fantom: { tokens: [ nullAddress, - '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75'//USDC + ADDRESSES.fantom.USDC//USDC ], owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], ownTokens: [MIMOfantom,], diff --git a/projects/treasury/neutra-finance.js b/projects/treasury/neutra-finance.js index 75c9f3fbd4..0d601ec74e 100644 --- a/projects/treasury/neutra-finance.js +++ b/projects/treasury/neutra-finance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xfba3b455211a3a09689788Ac3A14B4F8Baf012B4"; @@ -9,9 +10,9 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + ADDRESSES.arbitrum.USDC, "0x422B5A91b5Cdef61D3400671CCdd5bE22C7CE655", - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + ADDRESSES.optimism.DAI, ], owners: [treasury], ownTokens: [NEU, esNEU, sbfNEU], diff --git a/projects/treasury/notional.js b/projects/treasury/notional.js index 6d47fa50a7..472c01ae5a 100644 --- a/projects/treasury/notional.js +++ b/projects/treasury/notional.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x086b4ecd75c494dd36641195e89c25373e06d7cb"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC ], owners: [treasury], ownTokens: [note], diff --git a/projects/treasury/op-foundation.js b/projects/treasury/op-foundation.js index 7d7c2028df..8b0283756d 100644 --- a/projects/treasury/op-foundation.js +++ b/projects/treasury/op-foundation.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x2501c477d0a35545a387aa4a3eee4292a9a8b3f0"; -const OP = "0x4200000000000000000000000000000000000042" +const OP = ADDRESSES.optimism.OP module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - "0x7F5c764cBc14f9669B88837ca1490cCa17c31607" + ADDRESSES.optimism.USDC ], owners: [treasury], ownTokens: [OP], diff --git a/projects/treasury/paraswap.js b/projects/treasury/paraswap.js index 419223ed1a..5b27543c2c 100644 --- a/projects/treasury/paraswap.js +++ b/projects/treasury/paraswap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x5A61D9214adEFD7669428a03A4e8734A00E9F464"; @@ -19,7 +20,7 @@ module.exports = treasuryExports({ }, optimism: { tokens: [ - "0x4200000000000000000000000000000000000042" + ADDRESSES.optimism.OP ], owners: ["0xb8313eaf73aed8fea1d9930df199b3c1bdb67b47"], }, diff --git a/projects/treasury/push.js b/projects/treasury/push.js index 71ca99e6b4..505349cb51 100644 --- a/projects/treasury/push.js +++ b/projects/treasury/push.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x19Ff5f2C05aC6a303aF6d5002C99686e823EBE72"; @@ -9,11 +10,11 @@ module.exports = treasuryExports({ ownTokens: [push], tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0xdAC17F958D2ee523a2206206994597C13D831ec7", + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, "0xAf31Fd9C3B0350424BF96e551d2D1264d8466205", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WBTC, "0x5aFE3855358E112B5647B952709E6165e1c1eEEe" ], }, diff --git a/projects/treasury/railgun.js b/projects/treasury/railgun.js index 52ceb8db70..179d7a782f 100644 --- a/projects/treasury/railgun.js +++ b/projects/treasury/railgun.js @@ -91,7 +91,7 @@ module.exports = treasuryExports({ ADDRESSES.polygon.USDT,//usdt ADDRESSES.polygon.DAI,//dai "0x1a3acf6D19267E2d3e7f898f42803e90C9219062",//fxs - "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",//wbtc + ADDRESSES.polygon.WBTC,//wbtc "0xE5417Af564e4bFDA1c483642db72007871397896",//gns "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",//avax "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39",//link diff --git a/projects/treasury/redacted.js b/projects/treasury/redacted.js index 48f9de4824..1f77e0d5f1 100644 --- a/projects/treasury/redacted.js +++ b/projects/treasury/redacted.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x086c98855df3c78c6b481b6e1d47bef42e9ac36b" @@ -8,12 +9,12 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT + ADDRESSES.ethereum.USDT, // USDT "0x2ba592F78dB6436527729929AAf6c908497cB200", // CREAM - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + ADDRESSES.ethereum.USDC, // USDC "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", + ADDRESSES.ethereum.DAI, "0xaCe78D9BaB82b6B4783120Dba82aa10B040A14D9", "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC" ], diff --git a/projects/treasury/silo-finance.js b/projects/treasury/silo-finance.js index 1cdad9291f..bb7e4a8b55 100644 --- a/projects/treasury/silo-finance.js +++ b/projects/treasury/silo-finance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { simulateTransaction } = require("@project-serum/anchor/dist/cjs/utils/rpc"); const { nullAddress,treasuryExports } = require("../helper/treasury"); @@ -11,12 +12,12 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.DAI,//DAI '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//LUSD - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT - '0x2e9d63788249371f1DFC918a52f8d799F4a38C94',//TOKE + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT + ADDRESSES.ethereum.TOKE,//TOKE ], owners: [treasury, treasury2], ownTokens: [SILO], diff --git a/projects/treasury/spool-protocol.js b/projects/treasury/spool-protocol.js index d07d771904..3fede6fcf4 100644 --- a/projects/treasury/spool-protocol.js +++ b/projects/treasury/spool-protocol.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const treasury = "0xf6bc2e3b1f939c435d9769d078a6e5048aabd463"; @@ -8,8 +9,8 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC ], owners: [treasury], diff --git a/projects/treasury/stargate-finance.js b/projects/treasury/stargate-finance.js index 413c1bdf15..5fc1120b25 100644 --- a/projects/treasury/stargate-finance.js +++ b/projects/treasury/stargate-finance.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const index = require('../stargate-finance/index') const { treasuryExports } = require('../helper/treasury') module.exports = treasuryExports({ bsc: { owner: '0xA2B48Ad28c09cc64CcCf9eD73e1EfceD052877d5', - tokens: ['0x55d398326f99059ff775485246999027b3197955', '0xe9e7cea3dedca5984780bafc599bd69add087d56', '0xd397a40884ce00e662b419673e0b15cae628877f', '0x41516dca7efe69518ec414de35e5aa067788de3d',], + tokens: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.BUSD, '0xd397a40884ce00e662b419673e0b15cae628877f', '0x41516dca7efe69518ec414de35e5aa067788de3d',], resolveLP: true, } }) \ No newline at end of file diff --git a/projects/treasury/tempus-finance.js b/projects/treasury/tempus-finance.js index 1e2247fdc2..d1fdf75340 100644 --- a/projects/treasury/tempus-finance.js +++ b/projects/treasury/tempus-finance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xab40a7e3cef4afb323ce23b6565012ac7c76bfef"; @@ -8,7 +9,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", + ADDRESSES.ethereum.STETH, ], owners: [treasury, LP], diff --git a/projects/treasury/thales.js b/projects/treasury/thales.js index 86393c9ff8..bf0446e5e2 100644 --- a/projects/treasury/thales.js +++ b/projects/treasury/thales.js @@ -15,8 +15,8 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x8e870d67f660d95d5be530380d0ec0bd388289e1", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC ], owners: [Treasury_ETH, Treasury_MULTICHAIN], ownTokens: [THALES_ETH], @@ -24,8 +24,8 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - "0x4200000000000000000000000000000000000042", + ADDRESSES.optimism.USDC, + ADDRESSES.optimism.OP, "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6" ], owners: [Treasury_OP, Treasury_MULTICHAIN], @@ -43,7 +43,7 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" + ADDRESSES.polygon.USDC ], owners: [Treasury_POLYGON], }, diff --git a/projects/treasury/umamifinance.js b/projects/treasury/umamifinance.js index a67e1e4855..1e1d8e1068 100644 --- a/projects/treasury/umamifinance.js +++ b/projects/treasury/umamifinance.js @@ -41,7 +41,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",//usdc + ADDRESSES.ethereum.USDC,//usdc ], owners: [ethowners] diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js index 0ee3494357..c12b0e3f5a 100644 --- a/projects/treasury/wonderland.js +++ b/projects/treasury/wonderland.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports, } = require("../helper/treasury"); const sdk = require('@defillama/sdk') @@ -16,14 +17,14 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',//USDC + ADDRESSES.ethereum.USDC,//USDC '0x55c08ca52497e2f1534b59e2917bf524d4765257', // uwu - '0xFEEf77d3f69374f66429C91d732A244f074bdf74', // cvxFXS + ADDRESSES.ethereum.cvxFXS, // cvxFXS '0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027', // SLP - '0x6B175474E89094C44Da98b954EedeAC495271d0F',//DAI + ADDRESSES.ethereum.DAI,//DAI '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',//WETH - '0xdAC17F958D2ee523a2206206994597C13D831ec7',//USDT + ADDRESSES.ethereum.WETH,//WETH + ADDRESSES.ethereum.USDT,//USDT '0xFcF8eda095e37A41e002E266DaAD7efC1579bc0A',//flex '0xdB25f211AB05b1c97D595516F45794528a807ad8',//eurs '0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6',//stg @@ -46,11 +47,11 @@ module.exports = treasuryExports({ avax: { tokens: [ nullAddress, - "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",//usdte + ADDRESSES.avax.USDT_e,//usdte "0x39fC9e94Caeacb435842FADeDeCB783589F50f5f",//knc "0x63682bdc5f875e9bf69e201550658492c9763f89",//bsgg - "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",//USDC - "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664",//USDC.e + ADDRESSES.avax.USDC,//USDC + ADDRESSES.avax.USDC_e,//USDC.e "0x9e295b5b976a184b14ad8cd72413ad846c299660",//fsGLP ], owners: treasuries, @@ -59,8 +60,8 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth - "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a",//gmx + ADDRESSES.arbitrum.WETH,//weth + ADDRESSES.arbitrum.GMX,//gmx "0xd2D1162512F927a7e282Ef43a362659E4F2a728F",//sbfGMX ], owners: treasuries @@ -75,7 +76,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",//USDC + ADDRESSES.bsc.USDC,//USDC ], owners: treasuries }, @@ -88,9 +89,9 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - "0xdfa46478f9e5ea86d57387849598dbfb2e964b02",//MAI - "0x4200000000000000000000000000000000000006",//WETH - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58",//USDT + ADDRESSES.moonbeam.MAI,//MAI + ADDRESSES.tombchain.FTM,//WETH + ADDRESSES.optimism.USDT,//USDT ], owners: treasuries } diff --git a/projects/treasury/woofi.js b/projects/treasury/woofi.js index d16fb42ae4..b80784a143 100644 --- a/projects/treasury/woofi.js +++ b/projects/treasury/woofi.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasuryAVAX = "0xb54382c680b0ad037c9f441a8727ca6006fe2dd0"; @@ -11,7 +12,7 @@ module.exports = treasuryExports({ avax: { tokens: [ nullAddress, - "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664" + ADDRESSES.avax.USDC_e ], owners: [treasuryAVAX], }, @@ -19,7 +20,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd", - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + ADDRESSES.ethereum.USDC ], owners: [treasuryETH], @@ -30,7 +31,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" + ADDRESSES.bsc.USDC ], owners: [treasuryBSC], ownTokens: [WOOBSC], diff --git a/projects/treasury/yam-finance.js b/projects/treasury/yam-finance.js index ce58d163d8..21299347f5 100644 --- a/projects/treasury/yam-finance.js +++ b/projects/treasury/yam-finance.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const treasury ="0x744d16d200175d20e6d8e5f405aefb4eb7a962d1" @@ -8,7 +9,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + ADDRESSES.ethereum.USDC, ], owners: [treasury, treasury2], diff --git a/projects/union-finance/index.js b/projects/union-finance/index.js index 8001ae6500..4b6a8e473c 100644 --- a/projects/union-finance/index.js +++ b/projects/union-finance/index.js @@ -9,12 +9,12 @@ const config = { }, arbitrum: { userManager: "0xb71F3D4342AaE0b8D531E14D2CF2F45d6e458A5F", - DAI: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + DAI: ADDRESSES.optimism.DAI, uDAI: "0x954F20DF58347b71bbC10c94827bE9EbC8706887", }, optimism: { userManager: "0x8E195D65b9932185Fcc76dB5144534e0f3597628", - DAI: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + DAI: ADDRESSES.optimism.DAI, uDAI: "0xE478b5e7A423d7CDb224692d0a816CA146A744b2", }, }; diff --git a/projects/wemix-staking/index.js b/projects/wemix-staking/index.js index 79c8de660d..5a2e3a4b16 100644 --- a/projects/wemix-staking/index.js +++ b/projects/wemix-staking/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') -const wwemix = '0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f' +const wwemix = ADDRESSES.wemix.WWEMIX const stakingContract = '0x6F3f44B0Cf7C751f2a44Faf6bFdd08e499Eb0973' module.exports = { diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js index 88e364acc0..671e8d369e 100644 --- a/projects/zoodao/index.js +++ b/projects/zoodao/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const battleArenaAbi = require('./abis/battle-arena-abi.json'); const { staking } = require('../helper/staking'); const VAULT_CONTRACT = '0x1C55649f73CDA2f72CEf3DD6C5CA3d49EFcF484C'; const BATTLE_ARENA_CONTRACT = '0x0ADeb5A930875606F325e114FD5147148e042828'; -const FRAX_TOKEN = "0x322e86852e492a7ee17f28a78c663da38fb33bfb" +const FRAX_TOKEN = ADDRESSES.moonbeam.FRAX const ZOODAO_TOKEN = "0x7cd3e6e1A69409deF0D78D17a492e8e143F40eC5" async function tvl(_, _1, _2, { api }) { From 81ac29e343654c6d2379b9e6cfd9520b6d24ebbe Mon Sep 17 00:00:00 2001 From: tuta Date: Mon, 15 May 2023 13:35:27 +0200 Subject: [PATCH 0385/1354] Add merkl main adapter - required to build the Yield adapter (#6264) * add merkl main adapter * add other networks placeholders --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/merkl/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/merkl/index.js diff --git a/projects/merkl/index.js b/projects/merkl/index.js new file mode 100644 index 0000000000..3156373608 --- /dev/null +++ b/projects/merkl/index.js @@ -0,0 +1,29 @@ +const sdk = require("@defillama/sdk"); + +/* +Merkl doesn't have any TVL as no funds are staked on the contracts. +This adapter was made to integrate Merkl in the Yields dashboard. +For more information on Merkl, see here: https://docs.angle.money/side-products/merkl +*/ + +async function tvl() { + const balances = {}; + return balances; +} + +module.exports = { + methodology: + "Merkl is a side product from Angle Labs used to better reward concentrated liquidity positions. It doesn't have any TVL. See the yield dashboard for a list of Merkl pools.", + ethereum: { + tvl, + }, + polygon: { + tvl, + }, + optimism: { + tvl, + }, + arbitrum: { + tvl, + }, +}; From 62ebd585494913e0b819f4e788bb8433cec5691a Mon Sep 17 00:00:00 2001 From: define Date: Mon, 15 May 2023 15:52:53 +0100 Subject: [PATCH 0386/1354] treasuries --- projects/treasury/aavegotchi.js | 3 ++- projects/treasury/ape-coin.js | 22 ++++++++++++++++++++++ projects/treasury/api3.js | 24 ++++++++++++++++++++++++ projects/treasury/bitdao.js | 7 ++++++- projects/treasury/ens.js | 6 +++++- projects/treasury/gitcoin.js | 8 +++++++- projects/treasury/jpegd.js | 10 +++++++++- projects/treasury/pleasrdao.js | 12 +++++++++++- projects/treasury/treasure-dao.js | 16 +++++++++++++++- 9 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 projects/treasury/ape-coin.js create mode 100644 projects/treasury/api3.js diff --git a/projects/treasury/aavegotchi.js b/projects/treasury/aavegotchi.js index 9d03142c42..092c902e1b 100644 --- a/projects/treasury/aavegotchi.js +++ b/projects/treasury/aavegotchi.js @@ -2,6 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const aavegotchiTreasury2 = "0xFFE6280ae4E864D9aF836B562359FD828EcE8020"; +const treasury2 = "0xfb76e9be55758d0042e003c1e46e186360f0627e" const GHST = "0x3F382DbD960E3a9bbCeaE22651E88158d2791550"; @@ -11,7 +12,7 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.ethereum.DAI//DAI ], - owners: [aavegotchiTreasury2], + owners: [aavegotchiTreasury2, treasury2], ownTokens: [GHST], }, }) \ No newline at end of file diff --git a/projects/treasury/ape-coin.js b/projects/treasury/ape-coin.js new file mode 100644 index 0000000000..3873b31d1d --- /dev/null +++ b/projects/treasury/ape-coin.js @@ -0,0 +1,22 @@ + +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x03ca52e482912308c287d09ec941b996c18668f5"; +const treasury2 = "0x1633b453c3ca5a244c66f4418ff5120282370053" +const APE = "0x4d224452801aced8b2f0aebe155379bb5d594381" + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.STETH, + + ], + owners: [treasury, treasury2], + ownTokens: [APE], + // resolveLP: true, + // resolveUniV3: true, + }, +}) \ No newline at end of file diff --git a/projects/treasury/api3.js b/projects/treasury/api3.js new file mode 100644 index 0000000000..1e9d7a7615 --- /dev/null +++ b/projects/treasury/api3.js @@ -0,0 +1,24 @@ + +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x556ecbb0311d350491ba0ec7e019c354d7723ce0"; +const treasury2 = "0xd9f80bdb37e6bad114d747e60ce6d2aaf26704ae" +const treasury3 = "0xe7af7c5982e073ac6525a34821fe1b3e8e432099" +const API = "0x0b38210ea11411557c13457d4da7dc6ea731b88a" + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.USDC, + "0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d" + ], + owners: [treasury, treasury2, treasury3], + ownTokens: [API], + // resolveLP: true, + // resolveUniV3: true, + }, +}) \ No newline at end of file diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 35a58c6bc5..6577112ff5 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -5,6 +5,8 @@ const bitdaoTreasury1 = "0x78605Df79524164911C144801f41e9811B7DB73D"; const BIT = "0x1A4b46696b2bB4794Eb3D4c26f1c55F9170fa4C5"; +const LP = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + module.exports = treasuryExports({ ethereum: { @@ -16,8 +18,11 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.USDT,//USDT '0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9',//FTT '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272',//xSUSHI + "0x52A8845DF664D76C69d2EEa607CD793565aF42B8", ], owners: [bitdaoTreasury1], - ownTokens: [BIT], + ownTokens: [BIT, LP], + resolveLP: true, + resolveUniV3: true, }, }) \ No newline at end of file diff --git a/projects/treasury/ens.js b/projects/treasury/ens.js index bccda8e5fa..2103440110 100644 --- a/projects/treasury/ens.js +++ b/projects/treasury/ens.js @@ -3,6 +3,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7"; const vestingAddress = "0xd7a029db2585553978190db5e85ec724aa4df23f" +const treasury2 = "0x690f0581ececcf8389c223170778cd9d029606f2" const ENS= "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"; @@ -13,8 +14,11 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.ethereum.USDC, //USDC + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.LINK + ], - owners: [treasury, vestingAddress], + owners: [treasury, vestingAddress, treasury2], ownTokens: [ENS], }, }) \ No newline at end of file diff --git a/projects/treasury/gitcoin.js b/projects/treasury/gitcoin.js index 4241f7d2b2..9b28450fb6 100644 --- a/projects/treasury/gitcoin.js +++ b/projects/treasury/gitcoin.js @@ -3,6 +3,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x57a8865cfB1eCEf7253c27da6B4BC3dAEE5Be518"; const vestingAddress = "0x44Aa9c5a034C1499Ec27906E2D427b704b567ffe"; +const treasury2 = "0xde21f729137c5af1b01d73af1dc21effa2b8a0d6" const GTC = "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F"; @@ -13,8 +14,13 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.USDC, //USDC '0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3',//rad '0xE54f9E6Ab80ebc28515aF8b8233c1aeE6506a15E',//pasta + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.UNI, + "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3", + "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72" + ], - owners: [treasury, vestingAddress], + owners: [treasury, vestingAddress, treasury2], ownTokens: [GTC], }, }) \ No newline at end of file diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index edecd49a62..c10a739db3 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -7,6 +7,8 @@ const donationEvent = "0x3b7157E5E732863170597790b4c005436572570F"; const usdcVault = "0xFD110cf7985f6B7cAb4dc97dF1932495cADa9d08"; const usdtVault = "0x152DE634FF2f0A6eCBd05cB591cD1eEaCd2900Ed"; const pethVault = "0x548cAB89eBF34509Ae562BC8cE8D5Cdb4F08c3AD"; +const lp = "0xdB06a76733528761Eda47d356647297bC35a98BD" +const lp2 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" module.exports = treasuryExports({ ethereum: { @@ -22,8 +24,14 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.LINK, // LINK "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", // cvxCRV "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", + "0x34eD182D0812D119c92907852D2B429f095A9b07", + "0x836A808d4828586A69364065A1e064609F5078c7", + "0x9848482da3Ee3076165ce6497eDA906E66bB85C5" ], owners: [multisig, donationEvent, usdcVault, usdtVault, pethVault], - ownTokens: [jpegd], + ownTokens: [jpegd, lp], + resolveLP: true, + resolveUniV3: true, }, }); diff --git a/projects/treasury/pleasrdao.js b/projects/treasury/pleasrdao.js index c72b7d0528..189f40e872 100644 --- a/projects/treasury/pleasrdao.js +++ b/projects/treasury/pleasrdao.js @@ -2,6 +2,8 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const pleasrDaoTreasury = "0xF5c27c6fE782cbB5c85989ea3e75754748153459"; +const treasury = "0xf894fea045eccb2927e2e0cb15c12debee9f2be8" +const lp = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" module.exports = treasuryExports({ ethereum: { @@ -11,7 +13,15 @@ module.exports = treasuryExports({ '0x300a902513815028e97FC79E92082Ce6a98d3b74',//SOX '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF '0xBf9e72eEb5adB8B558334c8672950B7a379D4266',//CUBT + "0xBAac2B4491727D78D2b78815144570b9f2Fe8899", + "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "0xc96F20099d96b37D7Ede66fF9E4DE59b9B1065b1", + "0x4CD0c43B0D53bc318cc5342b77EB6f124E47f526", + "0x1A4b46696b2bB4794Eb3D4c26f1c55F9170fa4C5", + "0x6B175474E89094C44Da98b954EedeAC495271d0F" ], - owners: [pleasrDaoTreasury], + owners: [pleasrDaoTreasury, treasury, lp], + resolveLP: true, + resolveUniV3: true, }, }) diff --git a/projects/treasury/treasure-dao.js b/projects/treasury/treasure-dao.js index a82f81614f..cd6f1ff3ee 100644 --- a/projects/treasury/treasure-dao.js +++ b/projects/treasury/treasure-dao.js @@ -3,10 +3,19 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x0eb5b03c0303f2f47cd81d7be4275af8ed347576"; +const treasury2 = "0x1054e9d9091dc55a1738f9c8fc0c79e59e222804" +const treasury3 = "0x482729215aaf99b3199e41125865821ed5a4978a" +const treasury4 = "0x64bfb08217b30b70f287a1b7f0670bdd49f8a13f" +const treasury5 = "0x81fa605235e4c32d8b440eebe43d82e9e083166b" +const treasury6 = "0xdb6ab450178babcf0e467c1f3b436050d907e233" +const treasury7 = "0xe8409cd2abae06871d166e808d75addb0537033a" + +const treasuryETH = "0xec834bd1f492a8bd5aa71023550c44d4fb14632a" +const MAGICETH = "0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a" module.exports = treasuryExports({ arbitrum: { - owners: [treasury, ], + owners: [treasury, treasury2, treasury3, treasury4, treasury5, treasury6, treasury7 ], ownTokens: [ "0x539bde0d7dbd336b79148aa742883198bbf60342", // MAGIC "0x872bAD41CFc8BA731f811fEa8B2d0b9fd6369585", // GFLY @@ -18,4 +27,9 @@ module.exports = treasuryExports({ "0xb7e50106a5bd3cf21af210a755f9c8740890a8c9", // SLP ], }, + ethereum: { + tokens: [nullAddress, ADDRESSES.ethereum.USDC], + owners: [treasuryETH], + ownTokens: [MAGICETH], + }, }); \ No newline at end of file From ce0317d7c7fdfd583734f3fb17b124de5926c118 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 15 May 2023 16:30:58 +0100 Subject: [PATCH 0387/1354] fix inverse treasury --- projects/treasury/inverse.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index 12b9e3ded7..832b3db34d 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -33,6 +33,9 @@ module.exports = treasuryExports({ "0xb204BF10bc3a5435017D3db247f56dA601dFe08A", // 50DOLA-50WETH "0x7e05540A61b531793742fde0514e6c136b5fbAfE", // xFODL "0xAD038Eb671c44b853887A7E32528FaB35dC5D710", // DBR + "0x0a6B1d9F920019BAbc4De3F10c94ECB822106104", + "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", + "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" ], owners: [anchorTreasury, multisig, treasury1, treasury2], ownTokens: [ @@ -42,6 +45,7 @@ module.exports = treasuryExports({ // "0x9c7305eb78a432ced5C4D14Cac27E8Ed569A2e26", // veNFT ], resolveUniV3: true, + resolveLP: true, }, optimism: { tokens: [ @@ -62,4 +66,21 @@ module.exports = treasuryExports({ owners: [bnbmultisig], ownTokens: [], }, + arbitrum: { + tokens: [ + nullAddress, + ADDRESSES.arbitrum.DAI, + "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418" + ], + owners: ["0x23dedab98d7828afbd2b7ab8c71089f2c517774a"], + ownTokens: ["0x6A7661795C374c0bFC635934efAddFf3A7Ee23b6"], + }, + polygon: { + tokens: [ + nullAddress, + ADDRESSES.polygon.USDC, + + ], + owners: ["0x5d18b089e838dffbb417a87874435175f3a9b000"], + }, }); From 804da1017d13d3265e7bc61e7610544a02e3176e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 15 May 2023 17:35:09 +0100 Subject: [PATCH 0388/1354] add missing staking contracts --- projects/pancake-swap/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/pancake-swap/index.js b/projects/pancake-swap/index.js index e9cdbe8ecb..1a82c396f6 100644 --- a/projects/pancake-swap/index.js +++ b/projects/pancake-swap/index.js @@ -75,10 +75,11 @@ module.exports = { misrepresentedTokens: true, methodology: 'TVL accounts for the liquidity on all AMM pools, using the TVL chart on https://pancakeswap.finance/info as the source. Staking accounts for the CAKE locked in MasterChef (0x73feaa1eE314F8c655E354234017bE2193C9E24E)', bsc: { - staking: stakings(["0x73feaa1eE314F8c655E354234017bE2193C9E24E", "0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652", "0x45c54210128a065de780c4b0df3d16664f7f859e"], "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", "bsc"), + staking: stakings(["0x73feaa1eE314F8c655E354234017bE2193C9E24E", "0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652", "0x45c54210128a065de780c4b0df3d16664f7f859e", "0x556B9306565093C855AEA9AE92A594704c2Cd59e"], "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", "bsc"), tvl }, ethereum: { + staking: stakings(["0x556B9306565093C855AEA9AE92A594704c2Cd59e"], "0x152649ea73beab28c5b49b26eb48f7ead6d4c898", "ethereum"), tvl: getUniTVL({ chain: 'ethereum', factory: '0x1097053Fd2ea711dad45caCcc45EfF7548fCB362', useDefaultCoreAssets: true, }) }, aptos: dexExport({ From a8f1e5026b9064b7d08b73512e54c6236536ec4a Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Mon, 15 May 2023 18:54:03 +0200 Subject: [PATCH 0389/1354] Add JPEGd Milady vault --- projects/jpeg-d/helper/addresses.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/jpeg-d/helper/addresses.js b/projects/jpeg-d/helper/addresses.js index 262708fe92..50f2a1609d 100644 --- a/projects/jpeg-d/helper/addresses.js +++ b/projects/jpeg-d/helper/addresses.js @@ -14,6 +14,7 @@ const SQUIGGLES_PUSD_VAULT = "0x266d98307469f86f134ab884afefa98d3b4835b1"; const OTHERDEED_PUSD_VAULT = "0x09765190845c35fb81efd6952e19c995f6bd6a72"; const MEEBITS_PUSD_VAULT = "0xf7Fa42b692b8132311B02F9d72af69f9587c447E"; const BAKC_PUSD_VAULT = "0x3A90dB2E3392A26904da1aA632B4C26A824d296e"; +const MILADY_PUSD_VAULT = "0xDc6634879CEf6eD24EF0273DaA4a12b34e3D09Cc"; // NFT pETH vaults const CRYPTO_PUNK_PETH_VAULT = "0x4e5f305bfca77b17f804635a9ba669e187d51719"; @@ -35,6 +36,7 @@ const SQUIGGLES_PETH_VAULT = "0x2a8d4e3bb2e09541bf5d79a1cf8b9dd2b3a1c6ab"; const OTHERDEED_PETH_VAULT = "0x525a3999b65a7d06dbe1de9b0b5faab1dc72e83c"; const MEEBITS_PETH_VAULT = "0xD5a4FF073fB6BA54B52CEC0747a69a2EBeD08D3F"; const BAKC_PETH_VAULT = "0xBF3624e8E72737d632C27eaF814668200F3B0e09"; +const MILADY_PETH_VAULT = "0xdda32416E87c475A0bCBc6C2e74190e7c49c1E5f"; const VAULTS_ADDRESSES = [ // pUSD vaults @@ -53,6 +55,7 @@ const VAULTS_ADDRESSES = [ OTHERDEED_PUSD_VAULT, MEEBITS_PUSD_VAULT, BAKC_PUSD_VAULT, + MILADY_PUSD_VAULT, // pETH vaults CRYPTO_PUNK_PETH_VAULT, CRYPTO_PUNK_PETH_VAULT_B, @@ -73,6 +76,7 @@ const VAULTS_ADDRESSES = [ OTHERDEED_PETH_VAULT, MEEBITS_PETH_VAULT, BAKC_PETH_VAULT, + MILADY_PETH_VAULT, ]; const BAYC_VAULTS = [BAYC_PUSD_VAULT, BAYC_PETH_VAULT, BAYC_PETH_VAULT]; From 7f9be1c1fe258b0ab5b9fddaf38355d24f8b2cea Mon Sep 17 00:00:00 2001 From: define Date: Mon, 15 May 2023 18:02:40 +0100 Subject: [PATCH 0390/1354] wip gnosis dao --- projects/treasury/gnosis-dao.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index aa29408599..a8357804ed 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -5,10 +5,11 @@ const treasury = "0x4971DD016127F390a3EF6b956Ff944d0E2e1e462"; const treasury1 = "0x0DA0C3e52C977Ed3cBc641fF02DD271c3ED55aFe"; const treasury2 = "0x849D52316331967b6fF1198e5E32A0eB168D039d"; const treasury3= "0xBc79855178842FDBA0c353494895DEEf509E26bB"; -const vestingAddress = "0x849d52316331967b6ff1198e5e32a0eb168d039d"; const GNO= "0x6810e776880C02933D47DB1b9fc05908e5386b96"; const LP = "0x6256518aE9a97C408a03AAF1A244989Ce6B937F6" const LP2 = "0x228054e9c056F024FC724F515A2a8764Ae175ED6" +const LP3 = "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f" +const LP4 = "0xD3780729035c5b302f76ced0E7F74cF0Fb7c739a" module.exports = treasuryExports({ @@ -35,10 +36,20 @@ module.exports = treasuryExports({ '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX ADDRESSES.ethereum.LIDO,//LDO '0x1982b2F5814301d4e9a8b0201555376e62F82428', - "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f" + "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f", + "0xA13a9247ea42D743238089903570127DdA72fE44", + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", + "0x9c39809Dec7F95F5e0713634a4D0701329B3b4d2", + "0x5209dB28b3cF22a944401c83370Af7A703ffFb08", + "0xACAdA51C320947E7ed1a0D0F6b939b0FF465E4c2", + "0x001B78CEC62DcFdc660E06A91Eb1bC966541d758", + "0xe4683Fe8F53da14cA5DAc4251EaDFb3aa614d528", + "0xfAA2eD111B4F580fCb85C48E6DC6782Dc5FCD7a6" ], - owners: [treasury, treasury1, treasury2, treasury3, vestingAddress], - ownTokens: [GNO, LP, LP2], + owners: [treasury, treasury1, treasury2, treasury3], + ownTokens: [GNO, LP, LP2, LP3, LP4], resolveUniV3: true, + resolveLP: true, }, }) \ No newline at end of file From bf75e6ae1e49f5606b34332922abf43eb796f8e6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 15 May 2023 20:17:32 +0200 Subject: [PATCH 0391/1354] add https://tsunami.finance --- projects/helper/chain/aptos.js | 23 +++++++++++++++++++++++ projects/tsunami-fi/index.js | 15 +++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 projects/tsunami-fi/index.js diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js index 2e35829583..90944949d6 100644 --- a/projects/helper/chain/aptos.js +++ b/projects/helper/chain/aptos.js @@ -99,6 +99,27 @@ async function getTableData({ table, data }) { return response } +async function function_view({ functionStr, type_arguments = [], arguments = [] }) { + const response = await http.post(`${endpoint}/v1/view`, { "function": functionStr, "type_arguments": type_arguments, arguments }) + return response +} + +function hexToString(hexString) { + if (hexString.startsWith('0x')) hexString = hexString.slice(2); + const byteLength = hexString.length / 2; + const byteArray = new Uint8Array(byteLength); + + for (let i = 0; i < byteLength; i++) { + const hexByte = hexString.substr(i * 2, 2); + byteArray[i] = parseInt(hexByte, 16); + } + + const decoder = new TextDecoder('utf-8'); + const stringValue = decoder.decode(byteArray); + + return stringValue +} + module.exports = { endpoint, dexExport, @@ -109,4 +130,6 @@ module.exports = { coreTokens, sumTokens, getTableData, + function_view, + hexToString, }; diff --git a/projects/tsunami-fi/index.js b/projects/tsunami-fi/index.js new file mode 100644 index 0000000000..b02dee7d69 --- /dev/null +++ b/projects/tsunami-fi/index.js @@ -0,0 +1,15 @@ +const { function_view, hexToString } = require('../helper/chain/aptos') + +async function tvl(_, _b, _cb, { api, }) { + const [data] = await function_view({ functionStr: '0x1786191d0ce793debfdef9890868abdcdc7053f982ccdd102a72732b3082f31d::basket::get_all_basket_coins_by_basket', type_arguments: ['0x1786191d0ce793debfdef9890868abdcdc7053f982ccdd102a72732b3082f31d::baskets::Basket1'] }) + data.forEach(({ coin_type_info: { account_address, module_name, struct_name }, reserve_amount, margin_occupied_amount, }) => { + const token = `${account_address}::${hexToString(module_name)}::${hexToString(struct_name)}` + api.add(token, reserve_amount) + // api.add(token, margin_occupied_amount * -1) + }) +} + + +module.exports = { + aptos: { tvl } +} \ No newline at end of file From 987c10d58b6b828ebb95c8e5233bbef0a236ac01 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 15 May 2023 21:14:13 +0100 Subject: [PATCH 0392/1354] add quickswap perps --- projects/quickswap-perps/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/quickswap-perps/index.js diff --git a/projects/quickswap-perps/index.js b/projects/quickswap-perps/index.js new file mode 100644 index 0000000000..6f862694ff --- /dev/null +++ b/projects/quickswap-perps/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + polygon_zkevm:{ + tvl: gmxExports({ vault: '0x99b31498b0a1dae01fc3433e3cb60f095340935c', }) + }, +}; From e8e3efd386ee0e8ba6617b5f1737bb3f94afafe9 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 15 May 2023 22:42:31 +0100 Subject: [PATCH 0393/1354] fix syntax --- projects/helper/chain/aptos.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js index 90944949d6..03a26303f1 100644 --- a/projects/helper/chain/aptos.js +++ b/projects/helper/chain/aptos.js @@ -99,8 +99,8 @@ async function getTableData({ table, data }) { return response } -async function function_view({ functionStr, type_arguments = [], arguments = [] }) { - const response = await http.post(`${endpoint}/v1/view`, { "function": functionStr, "type_arguments": type_arguments, arguments }) +async function function_view({ functionStr, type_arguments = [], args = [] }) { + const response = await http.post(`${endpoint}/v1/view`, { "function": functionStr, "type_arguments": type_arguments, arguments:args }) return response } From 6ab29f7426d1562afece8ed35a0dab3d6ba77f02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noah=20Bayindirli=20=F0=9F=A5=82?= Date: Mon, 15 May 2023 12:03:59 -1000 Subject: [PATCH 0394/1354] Add Prime Protocol TVL --- projects/prime-protocol/index.js | 145 +++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 projects/prime-protocol/index.js diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js new file mode 100644 index 0000000000..c12f6f6aaa --- /dev/null +++ b/projects/prime-protocol/index.js @@ -0,0 +1,145 @@ +const sdk = require('@defillama/sdk'); +const BigNumber = require("bignumber.js"); + +const MASTER_VIEW_CONTRACT = { + v146: { + address: '0x47ecFB57deD0160d66103A6A201C5f30f7CC7d13', + abi: { + calculateAssetTVL: 'function calculateRawAssetTVL(uint256 chainId, address pToken) view returns (uint256)' + } + } +}; + +const MOONBEAM_MARKETS = { + GLMR: { + pTokenMarketAddress: '0xdC427cDB81E1532747BEDeB8077a4AEcDbfB585e', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + decimals: 18 + }, + whUSDC: { + pTokenMarketAddress: '0x227EEB717a3Ec78025bE51c87b3A7160192613D2', + pTokenUnderlyingAddress: '0x931715FEE2d06333043d11F658C8CE934aC61D0c', + decimals: 6 + }, + xcUSDT: { + pTokenMarketAddress: '0x8ef25FAC30DeD9A210151C1d27e58F71f2142e2f', + pTokenUnderlyingAddress: '0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d', + decimals: 6 + }, + xcDOT: { + pTokenMarketAddress: '0x525c6B3D27B6b1Fc28bca7dc04964247c1a942B1', + pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + decimals: 10 + } +}; + +const AVALANCHE_MARKETS = { + ETH: { + pTokenMarketAddress: '0x4Ebba16380fEb2083938c008aEDD4b5EBeA80f72', + pTokenUnderlyingAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + decimals: 18 + }, + USDC: { + pTokenMarketAddress: '0x73c5c93E78cB8CA4939307e0D95e032631fB9eEe', + pTokenUnderlyingAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + decimals: 6 + }, + USDT: { + pTokenMarketAddress: '0x1BF6752282039ee82C06DE64D094C9E35578A1a0', + pTokenUnderlyingAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', + decimals: 6 + }, +}; + +const ARBITRUM_MARKETS = { + ETH: { + pTokenMarketAddress: '0xc01683398fFCc86264ba17bC36977f51A1d25e06', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + decimals: 18 + }, + USDC: { + pTokenMarketAddress: '0xddC6Df52F9749ED80966Fb6a9D4C87264cC1e6C1', + pTokenUnderlyingAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + decimals: 6 + }, +}; + +const ETHEREUM_MARKETS = { + ETH: { + pTokenMarketAddress: '0xd833F882ca07F69C4C5a069675B6B65C235325C3', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + decimals: 18 + }, + USDC: { + pTokenMarketAddress: '0x67CeC45eB8d9f059D4c974a4BdEA357b68Ad80Ef', + pTokenUnderlyingAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + decimals: 6 + }, + USDT: { + pTokenMarketAddress: '0xDC313B592949E8F4bB91A22c6DC9f7BE11b74Ea7', + pTokenUnderlyingAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + decimals: 6 + }, +}; + +const PRIME_MARKETS = { + moonbeam: { + chainId: 1284, + networkMarkets: MOONBEAM_MARKETS + }, + avax: { + chainId: 43114, + networkMarkets: AVALANCHE_MARKETS + }, + arbitrum: { + chainId: 42161, + networkMarkets: ARBITRUM_MARKETS + }, + ethereum: { + chainId: 1, + networkMarkets: ETHEREUM_MARKETS + }, +} + +async function tvl(_, _1, _2, { api }) { + const moonbeamApi = new sdk.ChainApi({ chain: 'moonbeam'}); + + const balances = {}; + + const primeMarket = PRIME_MARKETS[api.chain]; + + for (const [marketSymbol, market] of Object.entries(primeMarket.networkMarkets)) { + const rawAssetTVL = await moonbeamApi.call({ + abi: MASTER_VIEW_CONTRACT.v146.abi.calculateAssetTVL, + target: MASTER_VIEW_CONTRACT.v146.address, + params: [ + primeMarket.chainId, + market.pTokenMarketAddress + ] + }); + + const assetTVL = BigNumber(rawAssetTVL).times(BigNumber(10).pow(market.decimals)).div(BigNumber(10).pow(18)).toNumber(); + + balances[`${api.chain}:${market.pTokenUnderlyingAddress}`] = assetTVL; + } + + return balances; +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: 'Adds the deposits of each market to the borrows that were not redeposited into that market.', + moonbeam: { + tvl + }, + avax: { + tvl + }, + arbitrum: { + tvl + }, + ethereum: { + tvl + } +}; From 3a8b212794f91733f77cb3cf39d5cfb9cfb28157 Mon Sep 17 00:00:00 2001 From: LpcAries <291482574@qq.com> Date: Tue, 16 May 2023 12:16:12 +0800 Subject: [PATCH 0395/1354] add meter config for izumi-iziswap --- projects/izumi-iziswap/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 64545f3a01..9636ed5139 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -8,6 +8,7 @@ const poolHelpers = { 'bsc': '0x93C22Fbeff4448F2fb6e432579b0638838Ff9581', 'arbitrum': '0x611575eE1fbd4F7915D0eABCC518eD396fF78F0c', 'era': '0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F', + 'meter': '0x07aBf894D5C25E626bb30f75eFC728a1d86BEeDC', } const blacklistedTokens = [ @@ -48,8 +49,8 @@ const tvl = async (_, _1, _2, { api }) => { abi: abi.pool, calls: poolCalls, }) + pools.forEach((output, i) => toa.push([poolMetaData[i].tokenX, output], [poolMetaData[i].tokenY, output],)) - return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens, }) } @@ -57,5 +58,6 @@ module.exports = { era: { tvl }, arbitrum: { tvl }, bsc: { tvl }, + meter: {tvl}, // ownTokens: ['IZI', 'IUSD'], } From 0c30b719d9eb5bcdd5dc8bb29c12ffae599fbbc2 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 16 May 2023 05:52:56 +0100 Subject: [PATCH 0396/1354] update synapse treasury --- projects/treasury/synapse.js | 135 ++++++++++++++++++++++++++++++++++- 1 file changed, 133 insertions(+), 2 deletions(-) diff --git a/projects/treasury/synapse.js b/projects/treasury/synapse.js index c2f1e03460..5efc3a9670 100644 --- a/projects/treasury/synapse.js +++ b/projects/treasury/synapse.js @@ -1,12 +1,143 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); -const treasury = "0x1d9bfc24d9e7eeda4119ceca11eaf4c24e622e62"; +const arbtreasury = "0x1d9bfc24d9e7eeda4119ceca11eaf4c24e622e62"; +const arbtreasury2 = "0x940279D22EB27415F2b0A0Ee6287749b5B19F43D"; +const arbSYN = "0x080F6AEd32Fc474DD5717105Dba5ea57268F46eb" +//const AuroraTreasury = "0xbb227Fcf45F9Dc5deF87208C534EAB1006d8Cc8d"; +const avaxTreasury = "0xd7aDA77aa0f82E6B3CF5bF9208b0E5E1826CD79C"; +const avaxSYN = "0x1f1E7c893855525b303f99bDF5c3c05Be09ca251" +//const bobaTreasury = "0xbb227Fcf45F9Dc5deF87208C534EAB1006d8Cc8d"; +const bscTreasury = "0xA316d83e67EEfD136f4C077de1cD4163A681F8A8"; +//const CantoTreasury = "0x02BA7A3Cd181a103Ba5702e708cF22de4Fa70254" +//const CronosTreasury = "0x7f91f3111b2009eC7c079Be213570330a37e8aeC" +//const DFKTreasury = "0x2E62c47f502f512C75bd5Ecd70799EFB0Fe7BAA3" +//const DogechainTreasury = "0x8f17b483982d1cc09296aed8f1b09ad830358a8d" +const FantomTreasury = "0x224002428cF0BA45590e0022DF4b06653058F22F" +const fantomSYN = "0xE55e19Fb4F2D85af758950957714292DAC1e25B2" +const HarmonyTreasury = "0x0172e7190Bbc0C2Aa98E4d1281d41D0c07178605" +//const KlaytnTreasury = "0x8f17b483982d1cc09296aed8f1b09ad830358a8d" +const MainnetTreasury = "0x67F60b0891EBD842Ebe55E4CCcA1098d7Aac1A55" +const mainnetSYN = "0x0f2D719407FdBeFF09D87557AbB7232601FD9F29" +const mainnetsynethLP = "0x4A86C01d67965f8cB3d0AAA2c655705E64097C31" +const MetisTreasury = "0xEAEC50eBe1c2A981ED8be02C36b0863Fae322975" +const metisSYN = "0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00" +//const MoonbeamTreasury = "0xbb227Fcf45F9Dc5deF87208C534EAB1006d8Cc8d" +//const MoonriverTreasury = "0x4bA30618fDcb184eC01a9B3CAe258CFc5786E70E" +const OptimismTreasury = "0x2431CBdc0792F5485c4cb0a9bEf06C4f21541D52" +const PolygonTreasury = "0xBdD38B2eaae34C9FCe187909e81e75CBec0dAA7A" +const polygonSYN = "0xf8F9efC0db77d8881500bb06FF5D6ABc3070E695" module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, + //"0x080F6AEd32Fc474DD5717105Dba5ea57268F46eb",//syn + "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",//dai + "0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688",//nusd + "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",//tether + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",//usdc ], - owners: [treasury,], + owners: [arbtreasury, arbtreasury2], + ownTokens: [arbSYN] }, + avax: { + tokens: [ + nullAddress, + //"0x1f1E7c893855525b303f99bDF5c3c05Be09ca251",//syn + "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",//wavax + "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70",//dai + "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664",//usdc + "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",//tether + + ], + owners: [avaxTreasury], + ownTokens: [avaxSYN] + }, + bsc: { + tokens: [ + nullAddress, + "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",//usdc + "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56",//busd + "0x049d68029688eAbF473097a2fC38ef61633A3C7A",//fusdt + "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c",//btcb + "0x54261774905f3e6E9718f2ABb10ed6555cae308a",//anybtc + "0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096",//nrv + "0x55d398326f99059fF775485246999027B3197955",//bsc-usd + "0x23396cF899Ca06c4472205fC903bDB4de249D6fC",//ustc + ], + owners: [bscTreasury] + }, + fantom: { + tokens: [ + nullAddress, + //"0xE55e19Fb4F2D85af758950957714292DAC1e25B2",//syn + "0x74b23882a30290451A17c44f4F05243b6b58C76d",//eth + "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75",//usdc + "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83",//wftm + ], + owners: [FantomTreasury], + ownTokens: [fantomSYN] + }, + harmony: { + tokens: [ + nullAddress + ], + owners: [HarmonyTreasury] + }, + ethereum: { + tokens: [ + nullAddress, + //"0x0f2D719407FdBeFF09D87557AbB7232601FD9F29",//syn + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",//usdc + "0x0ab87046fBb341D058F17CBC4c1133F25a20a52f",//gohm + "0x853d955aCEf822Db058eb8505911ED77F175b99e",//frax + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",//weth + "0x6B175474E89094C44Da98b954EedeAC495271d0F",//dai + "0xdAC17F958D2ee523a2206206994597C13D831ec7",//tether + "0x98585dFc8d9e7D48F0b1aE47ce33332CF4237D96",//newo + "0x71Ab77b7dbB4fa7e017BC15090b2163221420282",//high + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",//wbtc + "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F",//sdt + "0xBAac2B4491727D78D2b78815144570b9f2Fe8899",//dog + "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B",//usdb + "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8",//ageur + "0x0642026E7f0B6cCaC5925b4E7Fa61384250e1701",//h2o + "0xb753428af26E81097e7fD17f40c88aaA3E04902c",//sfi + "0x514910771AF9Ca656af840dff83E8264EcF986CA",//link + ], + owners: [MainnetTreasury], + ownTokens: [mainnetSYN, mainnetsynethLP] + }, + metis: { + tokens: [ + nullAddress, + //"0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00",//syn + "0xFB21B70922B9f6e3C6274BcD6CB1aa8A0fe20B80",//gohm + "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21",//usdc + ], + owners: [MetisTreasury], + ownTokens: [metisSYN] + }, + optimism: { + tokens: [ + nullAddress, + "0x4200000000000000000000000000000000000042",//op + "0x809DC529f07651bD43A172e8dB6f4a7a0d771036",//neth + ], + owners: [OptimismTreasury] + }, + polygon: { + tokens: [ + nullAddress, + "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",//usdc + "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",//usdt + "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic + "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",//dai + "0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195",//gohm + //"0xf8F9efC0db77d8881500bb06FF5D6ABc3070E695",//syn + ], + owners: [PolygonTreasury], + ownTokens: [polygonSYN] + } }) \ No newline at end of file From 1eb27159e3425574cede7a60bf6df68c1beeff70 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 10:20:16 +0200 Subject: [PATCH 0397/1354] compound-v3: add arbitrum --- projects/compound-v3/index.js | 12 +++++------- projects/helper/compoundV3.js | 5 +++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/projects/compound-v3/index.js b/projects/compound-v3/index.js index 530fc2466e..9968555102 100644 --- a/projects/compound-v3/index.js +++ b/projects/compound-v3/index.js @@ -5,16 +5,14 @@ const markets = [ '0xa17581a9e3356d9a858b789d68b4d866e593ae94', // ETH Market ] -const collaterals = [ - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, -] - module.exports = compoundV3Exports({ ethereum: { - markets, collaterals, + markets, + }, + arbitrum: { + markets: ['0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA'], }, polygon: { - markets:["0xF25212E676D1F7F89Cd72fFEe66158f541246445"], collaterals:[ADDRESSES.polygon.USDC], + markets:["0xF25212E676D1F7F89Cd72fFEe66158f541246445"], } }) \ No newline at end of file diff --git a/projects/helper/compoundV3.js b/projects/helper/compoundV3.js index 306a3184c0..35ac14c2c3 100644 --- a/projects/helper/compoundV3.js +++ b/projects/helper/compoundV3.js @@ -13,7 +13,7 @@ module.exports = { methodology: `${lendingMarket}. TVL is calculated by getting the market addresses from comptroller and calling the totalsCollaterals() on-chain method to get the amount of tokens locked in each of these addresses, then we get the price of each token from coingecko.`, }; Object.keys(config).forEach(chain => { - const { markets, collaterals } = config[chain] + const { markets } = config[chain] async function borrowed(timestamp, block, _, { api }) { const balances = {} @@ -28,7 +28,8 @@ module.exports = { await Promise.all(markets.map(async (m, i) => { const items = await api.fetchList({ lengthAbi: abi.numAssets, itemAbi: abi.getAssetInfo, target: m }) const tokens = items.map(i => i.asset) - tokens.push(collaterals[i]) + const baseToken = await api.call({ abi: 'address:baseToken', target: m }) + tokens.push(baseToken) toa.push([tokens, m]) })) return sumTokens2({ api, ownerTokens: toa }) From 9b93d2a8698a3e50f9b69f8c1a72b83b12400602 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 12:41:24 +0200 Subject: [PATCH 0398/1354] ribbon: fetch sol tvl onchain --- projects/ribbon/solana.js | 156 +++++++++++++++++++++++++++++++++++--- 1 file changed, 147 insertions(+), 9 deletions(-) diff --git a/projects/ribbon/solana.js b/projects/ribbon/solana.js index b087876043..0dc32a44a6 100644 --- a/projects/ribbon/solana.js +++ b/projects/ribbon/solana.js @@ -1,15 +1,153 @@ -const { get } = require('../helper/http') - -const tvl = async () => { - const vault = await get("https://solana-vault.uc.r.appspot.com/tvl") - - return { - solana: +vault.sol.tvl - }; -}; +const { getProvider, sumTokens2, } = require('../helper/solana') +const { Program, } = require("@project-serum/anchor"); +async function tvl() { + const { api } = arguments[3] + const provider = getProvider() + const program = new Program(idl, 'RBN2XNc6JQU6ewFp9TyPq6WznsvNuumzSJkor1nJFcz', provider) + const vaults = await program.account.vault.all() + const tokenAccounts = vaults.map(({ account: { + underlyingMint, + startEpochVaultBalance, + vaultUnderlyingTokenAccount, + vaultDepositQueueUnderlyingTokenAccount, + vaultWithdrawQueueRedeemableTokenAccount, + } }) => { + api.add(underlyingMint.toString(), +startEpochVaultBalance) + return [vaultUnderlyingTokenAccount, vaultDepositQueueUnderlyingTokenAccount, vaultWithdrawQueueRedeemableTokenAccount] + }).flat().map(i => i.toString()) + return sumTokens2({ balances: api.getBalances(), tokenAccounts, }) +} module.exports = { solana: { tvl, }, }; + +const idl = { + "version": "0.1.0", + "name": "covered_call_vault", + "instructions": [], + "accounts": [ + { + "name": "Vault", + "type": { + "kind": "struct", + "fields": [ + { + "name": "vaultName", + "type": { + "array": [ + "u8", + 20 + ] + } + }, + { + "name": "vaultNonce", + "type": "u8" + }, + { + "name": "redeemableMintNonce", + "type": "u8" + }, + { + "name": "vaultUnderlyingTokenAccountNonce", + "type": "u8" + }, + { + "name": "depositQueueHeaderNonce", + "type": "u8" + }, + { + "name": "vaultDepositQueueUnderlyingTokenAccountNonce", + "type": "u8" + }, + { + "name": "withdrawQueueHeaderNonce", + "type": "u8" + }, + { + "name": "vaultWithdrawQueueRedeemableTokenAccountNonce", + "type": "u8" + }, + { + "name": "underlyingMint", + "type": "publicKey" + }, + { + "name": "redeemableMint", + "type": "publicKey" + }, + { + "name": "vaultUnderlyingTokenAccount", + "type": "publicKey" + }, + { + "name": "vaultDepositQueueUnderlyingTokenAccount", + "type": "publicKey" + }, + { + "name": "vaultWithdrawQueueRedeemableTokenAccount", + "type": "publicKey" + }, + { + "name": "depositLimit", + "type": "u64" + }, + { + "name": "epochSequenceNumber", + "type": "u64" + }, + { + "name": "startEpoch", + "type": "u64" + }, + { + "name": "endDeposits", + "type": "u64" + }, + { + "name": "startSettlement", + "type": "u64" + }, + { + "name": "endEpoch", + "type": "u64" + }, + { + "name": "epochCadence", + "type": "u32" + }, + { + "name": "startEpochVaultBalance", + "type": "u64" + }, + { + "name": "optionMint", + "type": "publicKey" + }, + { + "name": "optionsRemaining", + "type": "bool" + }, + { + "name": "collateralCollected", + "type": "bool" + }, + { + "name": "depositQueueHeader", + "type": "publicKey" + }, + { + "name": "withdrawQueueHeader", + "type": "publicKey" + } + ] + } + } + ], + "types": [], + "events": [], + "errors": [] +} \ No newline at end of file From a5b7f7041b38160c8a05c746fc87dc4fa7fff06a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 13:10:52 +0200 Subject: [PATCH 0399/1354] prime-protocol: refactor code to split borrowed from tvl --- projects/prime-protocol/index.js | 208 +++++++++++++------------------ 1 file changed, 90 insertions(+), 118 deletions(-) diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js index c12f6f6aaa..b2b55ea51f 100644 --- a/projects/prime-protocol/index.js +++ b/projects/prime-protocol/index.js @@ -1,145 +1,117 @@ const sdk = require('@defillama/sdk'); -const BigNumber = require("bignumber.js"); +const { sumTokens2, } = require('../helper/unwrapLPs') const MASTER_VIEW_CONTRACT = { - v146: { - address: '0x47ecFB57deD0160d66103A6A201C5f30f7CC7d13', - abi: { - calculateAssetTVL: 'function calculateRawAssetTVL(uint256 chainId, address pToken) view returns (uint256)' - } + v146: { + address: '0x47ecFB57deD0160d66103A6A201C5f30f7CC7d13', + abi: { + calculateAssetTVL: 'function calculateRawAssetTVL(uint256 chainId, address pToken) view returns (uint256)' } + } }; const MOONBEAM_MARKETS = { - GLMR: { - pTokenMarketAddress: '0xdC427cDB81E1532747BEDeB8077a4AEcDbfB585e', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', - decimals: 18 - }, - whUSDC: { - pTokenMarketAddress: '0x227EEB717a3Ec78025bE51c87b3A7160192613D2', - pTokenUnderlyingAddress: '0x931715FEE2d06333043d11F658C8CE934aC61D0c', - decimals: 6 - }, - xcUSDT: { - pTokenMarketAddress: '0x8ef25FAC30DeD9A210151C1d27e58F71f2142e2f', - pTokenUnderlyingAddress: '0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d', - decimals: 6 - }, - xcDOT: { - pTokenMarketAddress: '0x525c6B3D27B6b1Fc28bca7dc04964247c1a942B1', - pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', - decimals: 10 - } + GLMR: { + pTokenMarketAddress: '0xdC427cDB81E1532747BEDeB8077a4AEcDbfB585e', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + }, + whUSDC: { + pTokenMarketAddress: '0x227EEB717a3Ec78025bE51c87b3A7160192613D2', + pTokenUnderlyingAddress: '0x931715FEE2d06333043d11F658C8CE934aC61D0c', + }, + xcUSDT: { + pTokenMarketAddress: '0x8ef25FAC30DeD9A210151C1d27e58F71f2142e2f', + pTokenUnderlyingAddress: '0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d', + }, + xcDOT: { + pTokenMarketAddress: '0x525c6B3D27B6b1Fc28bca7dc04964247c1a942B1', + pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + } }; const AVALANCHE_MARKETS = { - ETH: { - pTokenMarketAddress: '0x4Ebba16380fEb2083938c008aEDD4b5EBeA80f72', - pTokenUnderlyingAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', - decimals: 18 - }, - USDC: { - pTokenMarketAddress: '0x73c5c93E78cB8CA4939307e0D95e032631fB9eEe', - pTokenUnderlyingAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', - decimals: 6 - }, - USDT: { - pTokenMarketAddress: '0x1BF6752282039ee82C06DE64D094C9E35578A1a0', - pTokenUnderlyingAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', - decimals: 6 - }, + ETH: { + pTokenMarketAddress: '0x4Ebba16380fEb2083938c008aEDD4b5EBeA80f72', + pTokenUnderlyingAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + }, + USDC: { + pTokenMarketAddress: '0x73c5c93E78cB8CA4939307e0D95e032631fB9eEe', + pTokenUnderlyingAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + }, + USDT: { + pTokenMarketAddress: '0x1BF6752282039ee82C06DE64D094C9E35578A1a0', + pTokenUnderlyingAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', + }, }; const ARBITRUM_MARKETS = { - ETH: { - pTokenMarketAddress: '0xc01683398fFCc86264ba17bC36977f51A1d25e06', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', - decimals: 18 - }, - USDC: { - pTokenMarketAddress: '0xddC6Df52F9749ED80966Fb6a9D4C87264cC1e6C1', - pTokenUnderlyingAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - decimals: 6 - }, + ETH: { + pTokenMarketAddress: '0xc01683398fFCc86264ba17bC36977f51A1d25e06', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + }, + USDC: { + pTokenMarketAddress: '0xddC6Df52F9749ED80966Fb6a9D4C87264cC1e6C1', + pTokenUnderlyingAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + }, }; const ETHEREUM_MARKETS = { - ETH: { - pTokenMarketAddress: '0xd833F882ca07F69C4C5a069675B6B65C235325C3', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', - decimals: 18 - }, - USDC: { - pTokenMarketAddress: '0x67CeC45eB8d9f059D4c974a4BdEA357b68Ad80Ef', - pTokenUnderlyingAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - decimals: 6 - }, - USDT: { - pTokenMarketAddress: '0xDC313B592949E8F4bB91A22c6DC9f7BE11b74Ea7', - pTokenUnderlyingAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', - decimals: 6 - }, + ETH: { + pTokenMarketAddress: '0xd833F882ca07F69C4C5a069675B6B65C235325C3', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + }, + USDC: { + pTokenMarketAddress: '0x67CeC45eB8d9f059D4c974a4BdEA357b68Ad80Ef', + pTokenUnderlyingAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + }, + USDT: { + pTokenMarketAddress: '0xDC313B592949E8F4bB91A22c6DC9f7BE11b74Ea7', + pTokenUnderlyingAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + }, }; const PRIME_MARKETS = { - moonbeam: { - chainId: 1284, - networkMarkets: MOONBEAM_MARKETS - }, - avax: { - chainId: 43114, - networkMarkets: AVALANCHE_MARKETS - }, - arbitrum: { - chainId: 42161, - networkMarkets: ARBITRUM_MARKETS - }, - ethereum: { - chainId: 1, - networkMarkets: ETHEREUM_MARKETS - }, + moonbeam: { + networkMarkets: MOONBEAM_MARKETS + }, + avax: { + networkMarkets: AVALANCHE_MARKETS + }, + arbitrum: { + networkMarkets: ARBITRUM_MARKETS + }, + ethereum: { + networkMarkets: ETHEREUM_MARKETS + }, } -async function tvl(_, _1, _2, { api }) { - const moonbeamApi = new sdk.ChainApi({ chain: 'moonbeam'}); - - const balances = {}; - - const primeMarket = PRIME_MARKETS[api.chain]; - - for (const [marketSymbol, market] of Object.entries(primeMarket.networkMarkets)) { - const rawAssetTVL = await moonbeamApi.call({ - abi: MASTER_VIEW_CONTRACT.v146.abi.calculateAssetTVL, - target: MASTER_VIEW_CONTRACT.v146.address, - params: [ - primeMarket.chainId, - market.pTokenMarketAddress - ] - }); - - const assetTVL = BigNumber(rawAssetTVL).times(BigNumber(10).pow(market.decimals)).div(BigNumber(10).pow(18)).toNumber(); +async function borrowed(_, _1, _2, { api }) { + const moonbeamApi = new sdk.ChainApi({ chain: 'moonbeam' }); - balances[`${api.chain}:${market.pTokenUnderlyingAddress}`] = assetTVL; - } + const markets = Object.values(PRIME_MARKETS[api.chain].networkMarkets) + let uDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: markets.map(i => i.pTokenUnderlyingAddress), permitFailure: true, }) + uDecimals = uDecimals.map(i => i ?? 18) + let rawTvls = await moonbeamApi.multiCall({ + abi: MASTER_VIEW_CONTRACT.v146.abi.calculateAssetTVL, + target: MASTER_VIEW_CONTRACT.v146.address, + calls: markets.map(i => ({ params: [api.getChainId(), i.pTokenMarketAddress] })), + }) + rawTvls.forEach((v, i) => api.add(markets[i].pTokenUnderlyingAddress, v * (10 ** uDecimals[i] / 1e18))) + const tvlBal = await sumTokens2({ balances: {}, api, tokensAndOwners: markets.map(i => [i.pTokenUnderlyingAddress, i.pTokenMarketAddress]) }) + Object.entries(tvlBal).forEach(([token, bal]) => { + api.add(token, bal * -1, { skipChain: true }) + }) +} - return balances; +async function tvl(_, _b, _cb, { api, }) { + return sumTokens2({ api, tokensAndOwners: Object.values(PRIME_MARKETS[api.chain].networkMarkets).map(i => [i.pTokenUnderlyingAddress, i.pTokenMarketAddress]) }) } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Adds the deposits of each market to the borrows that were not redeposited into that market.', - moonbeam: { - tvl - }, - avax: { - tvl - }, - arbitrum: { - tvl - }, - ethereum: { - tvl - } + timetravel: false, + methodology: 'Adds the deposits of each market to the borrows that were not redeposited into that market.', }; + +Object.keys(PRIME_MARKETS).forEach(chain => { + module.exports[chain] = { tvl, borrowed, } +}) \ No newline at end of file From 5f37cf7d1b509a6cda2d1f8a6221d640ef468099 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 14:11:01 +0200 Subject: [PATCH 0400/1354] code refactor --- projects/satori/index.js | 38 ++------------------------------------ 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/projects/satori/index.js b/projects/satori/index.js index c3b0ab117c..e9ce1ffdae 100644 --- a/projects/satori/index.js +++ b/projects/satori/index.js @@ -1,48 +1,14 @@ -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); +const { sumTokensExport } = require("../helper/unwrapLPs"); const USDT_TOKEN_CONTRACT = "0x1E4a5963aBFD975d8c9021ce480b42188849D41d"; const WALLET_ADDR = [ "0x62e724cB4d6C6C7317e2FADe4A03001Fe7856940", "0xA59a2365D555b24491B19A5093D3c99b119c2aBb", ]; -async function get_blance(address, api) { - let mount; - let sum = new BigNumber(0); - for (addr of address) { - // console.log(addr); - const collateralBalance = await api.call({ - abi: "erc20:balanceOf", - target: USDT_TOKEN_CONTRACT, - params: [addr], - }); - mount = new BigNumber(collateralBalance); - // console.log(mount); - sum = sum.plus(mount); - } - // console.log(sum); - return sum.toString(); -} - -async function tvl(_, _1, _2, { api }) { - const balances = {}; - const collateralBalance = await get_blance(WALLET_ADDR, api); - await sdk.util.sumSingleBalance( - balances, - USDT_TOKEN_CONTRACT, - collateralBalance, - api.chain - ); - // console.log(balances); - return balances; -} - module.exports = { - timetravel: true, - misrepresentedTokens: false, methodology: "TVL includes the total token value inside the protocol's liquidity pools.", polygon_zkevm: { - tvl, + tvl: sumTokensExport({ owners: WALLET_ADDR, tokens: [USDT_TOKEN_CONTRACT]}), }, }; From 2eaa0a95d94dcd325d19c8e29ed14f61e1214803 Mon Sep 17 00:00:00 2001 From: xwaynec Date: Tue, 16 May 2023 20:12:55 +0800 Subject: [PATCH 0401/1354] Add Zomma Option Protocol (#6275) * Add Zomma Option Protocol * fixed export methodolgy position * fix typo --- projects/zomma/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/zomma/index.js diff --git a/projects/zomma/index.js b/projects/zomma/index.js new file mode 100644 index 0000000000..89c21e48ef --- /dev/null +++ b/projects/zomma/index.js @@ -0,0 +1,14 @@ +const { sumTokensExport } = require("../helper/sumTokens"); + +const ZOMMA_CONTRACT = "0x709051774c60c0527dbaf880f41425eae036efaf"; +const USDC_CONTRACT = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; + +module.exports = { + methodology: "TVL is calculated as the sum of USDC deposited by traders and the liquidity in the Pools.", + era: { + tvl: sumTokensExport({ + owner: ZOMMA_CONTRACT, + tokens: [USDC_CONTRACT], + }), + }, +}; \ No newline at end of file From cd2a197221ea63eb5328a5c1308f1223e6e99d3b Mon Sep 17 00:00:00 2001 From: Guido Peirano Date: Tue, 16 May 2023 09:16:33 -0300 Subject: [PATCH 0402/1354] Stream Protocol TVL Dashboard (#6278) * Adding stream adapter * Removing console log --- projects/stream/abi.js | 4 ++++ projects/stream/index.js | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 projects/stream/abi.js create mode 100644 projects/stream/index.js diff --git a/projects/stream/abi.js b/projects/stream/abi.js new file mode 100644 index 0000000000..59be2467e3 --- /dev/null +++ b/projects/stream/abi.js @@ -0,0 +1,4 @@ +module.exports = { + currentExchangeRate: + "function currentExchangeRate() view returns (uint256 vaultToken, uint256 baseToken)", +}; diff --git a/projects/stream/index.js b/projects/stream/index.js new file mode 100644 index 0000000000..2c07821302 --- /dev/null +++ b/projects/stream/index.js @@ -0,0 +1,42 @@ +const sdk = require("@defillama/sdk"); +const abi = require("./abi.js"); +const USDW4_TOKEN_CONTRACT = "0xadf789e61bf38c463e4ba5b2b6e9c1af6659e11b"; +const TBILL_VAULT_CLUB_BOND_CONTRACT = + "0xd86FFB404147163e19E010a0e9d4995E0e36F335"; + +async function tvl(_, _1, _2, { api }) { + const totalSupply = await api.call({ + abi: "erc20:totalSupply", + target: USDW4_TOKEN_CONTRACT, + }); + + const decimals = await api.call({ + abi: "erc20:decimals", + target: USDW4_TOKEN_CONTRACT, + }); + + const vaultBalance = await api.call({ + abi: "erc20:balanceOf", + target: USDW4_TOKEN_CONTRACT, + params: [TBILL_VAULT_CLUB_BOND_CONTRACT], + }); + + const { vaultToken, baseToken } = await api.call({ + abi: abi.currentExchangeRate, + target: TBILL_VAULT_CLUB_BOND_CONTRACT, + }); + + return { + "usd-coin": + (totalSupply - vaultBalance) / (vaultToken / baseToken) / 10 ** decimals, + }; +} + +module.exports = { + misrepresentedTokens: true, + methodology: "Calculates the TVL of the General Purpose T-Bills Vault.", + start: 16685700, + ethereum: { + tvl, + }, +}; From 6e6bb674afa9f41fa9ad5422e9ce38c701ae6478 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 14:32:31 +0200 Subject: [PATCH 0403/1354] add vega protocol --- projects/vega-protocol/index.js | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/vega-protocol/index.js diff --git a/projects/vega-protocol/index.js b/projects/vega-protocol/index.js new file mode 100644 index 0000000000..ae6839b86e --- /dev/null +++ b/projects/vega-protocol/index.js @@ -0,0 +1,34 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') +const { staking } = require('../helper/staking') + +const assetListedEvent = "event Asset_Listed(address indexed asset_source, bytes32 indexed vega_asset_id, uint256 nonce)" + +const config = { + ethereum: { bridge: '0x124Dd8a6044ef048614AEA0AAC86643a8Ae1312D', fromBlock: 15263615, vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', assetPool: '0xF0f0FcDA832415b935802c6dAD0a6dA2c7EAed8f' } +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const { bridge, fromBlock, vega, stakingContract, assetPool, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: bridge, + topics: ['0x4180d77d05ff0d31650c548c23f2de07a3da3ad42e3dd6edd817b438a150452e'], + eventAbi: assetListedEvent, + onlyArgs: true, + fromBlock, + }) + const blacklistedTokens = [] + if (vega) blacklistedTokens.push(vega) + return sumTokens2({ api, blacklistedTokens, owner: assetPool, tokens: logs.map(i => i.asset_source) }) + } + } + + + if (staking) module.exports[chain].staking = staking(stakingContract, vega) +}) \ No newline at end of file From a617e30c5622889a3ee6620fbb052e4f4f85311d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 14:42:22 +0200 Subject: [PATCH 0404/1354] add asymmetry.finance --- projects/asymmetry-fi/index.js | 14 ++++++++++++++ projects/helper/coreAssets.json | 1 + 2 files changed, 15 insertions(+) create mode 100644 projects/asymmetry-fi/index.js diff --git a/projects/asymmetry-fi/index.js b/projects/asymmetry-fi/index.js new file mode 100644 index 0000000000..02ad6ab331 --- /dev/null +++ b/projects/asymmetry-fi/index.js @@ -0,0 +1,14 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + tokensAndOwners: [ + [ADDRESSES.ethereum.WSTETH, '0x972a53e3a9114f61b98921fb5b86c517e8f23fad'], + [ADDRESSES.ethereum.RETH, '0x7b6633c0cd81dc338688a528c0a3f346561f5ca3'], + [ADDRESSES.ethereum.SFRETH, '0x36ce17a5c81e74dc111547f5dffbf40b8bf6b20a'], + ] + }) + } +} \ No newline at end of file diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 10584c3b2c..161fc6f777 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -4,6 +4,7 @@ "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "WSTETH": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", "STETH": "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", + "SFRETH": "0xac3e018457b222d93114458476f3e3416abbe38f", "USDC": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "LINK": "0x514910771af9ca656af840dff83e8264ecf986ca", "MATIC": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", From 6911f32744cc4aff68c16cb97dcf684f213b7a87 Mon Sep 17 00:00:00 2001 From: Maxim Piessen Date: Tue, 16 May 2023 16:58:15 +0200 Subject: [PATCH 0405/1354] chore: update credix adapter to include new pool --- projects/credix/index.js | 124 ++++++++++++++++++++++++++++++++------- 1 file changed, 104 insertions(+), 20 deletions(-) diff --git a/projects/credix/index.js b/projects/credix/index.js index c8419f33c0..2353c6894e 100644 --- a/projects/credix/index.js +++ b/projects/credix/index.js @@ -1,15 +1,17 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const BigNumber = require("bignumber.js"); const { PublicKey } = require("@solana/web3.js"); -const { Program, utils } = require("@project-serum/anchor"); -const { getProvider, sumTokens2 } = require("../helper/solana"); +const { Program, utils, BN } = require("@project-serum/anchor"); +const { getProvider, sumTokens2, sumTokens } = require("../helper/solana"); const MAX_NUMBER_OF_ACCOUNT_INFOS = 99; -const MARKET_SEED = "credix-marketplace"; +const MARKET_SEED_FINTECH = "credix-marketplace"; +const MARKET_SEED_RECEIVABLES = "receivables-factoring"; const IDL = require("./credix.json"); -const USDC = ADDRESSES.solana.USDC +const USDC = ADDRESSES.solana.USDC; const programId = new PublicKey("CRDx2YkdtYtGZXGHZ59wNv1EwKHQndnRc1gT4p8i2vPX"); -const encodeSeedString = (seedString) => Buffer.from(utils.bytes.utf8.encode(seedString)); +const encodeSeedString = (seedString) => + Buffer.from(utils.bytes.utf8.encode(seedString)); const constructProgram = (provider) => { return new Program(IDL, programId, provider); @@ -30,8 +32,20 @@ const findSigningAuthorityPDA = async (globalMarketSeed) => { return findPDA(seeds); }; -async function generateRepaymentSchedulePDA(deal) { - const marketAdress = await findGlobalMarketStatePDA(MARKET_SEED); +const findDealPda = (marketPk, borrowerPk, dealNumber) => { + const dealSeed = encodeSeedString("deal-info"); + const dealNumberSeed = new BN(dealNumber).toArrayLike(Buffer, "le", 2); + const seeds = [ + marketPk.toBuffer(), + borrowerPk.toBuffer(), + dealNumberSeed, + dealSeed, + ]; + return findPDA(seeds); +}; + +async function generateRepaymentSchedulePDA(deal, globalMarketSeed) { + const marketAdress = await findGlobalMarketStatePDA(globalMarketSeed); const seed = [ marketAdress[0].toBuffer(), deal.publicKey.toBuffer(), @@ -124,8 +138,35 @@ function chunk(inputArray, perChunk) { return result; } -async function fetchRepaymentScheduleForDeals(program, provider, deals) { - const pdaPromises = deals.map((d) => generateRepaymentSchedulePDA(d)); +async function asyncFilter(arr, filter) { + const results = await Promise.all(arr.map(filter)); + return arr.filter((_, i) => results[i]); +} + +async function filterDealsForMarket(deals, globalMarketSeed) { + const [globalMarketStatePk] = await findGlobalMarketStatePDA( + globalMarketSeed + ); + const marketDeals = await asyncFilter(deals, async (deal) => { + const [dealPDA] = await findDealPda( + globalMarketStatePk, + deal.account.borrower, + deal.account.dealNumber + ); + return dealPDA.equals(deal.publicKey); + }); + return marketDeals; +} + +async function fetchRepaymentScheduleForDeals( + program, + provider, + deals, + globalMarketSeed +) { + const pdaPromises = deals.map((d) => + generateRepaymentSchedulePDA(d, globalMarketSeed) + ); const pdas = await Promise.all(pdaPromises); const addresses = pdas.map((pda) => pda[0]); const addressesChunks = chunk(addresses, MAX_NUMBER_OF_ACCOUNT_INFOS - 1); @@ -147,25 +188,42 @@ async function fetchRepaymentScheduleForDeals(program, provider, deals) { } async function tvl() { - const [signingAuthorityKey] = await findSigningAuthorityPDA(MARKET_SEED); - return sumTokens2({ tokensAndOwners: [[USDC, signingAuthorityKey]] }); + // Fintech pool + const [signingAuthorityKeyFintech] = await findSigningAuthorityPDA( + MARKET_SEED_FINTECH + ); + + // Receivables factoring pool + const [signingAuthorityKeyReceivables] = await findSigningAuthorityPDA( + MARKET_SEED_RECEIVABLES + ); + const tokens = await sumTokens2({ + tokensAndOwners: [ + [USDC, signingAuthorityKeyFintech], + [USDC, signingAuthorityKeyReceivables], + ], + }); + return tokens; } -async function borrowed() { - const provider = getProvider(); - const program = constructProgram(provider); - const allDeals = await program.account.deal.all(); +async function fetchOutstandingCreditPool( + provider, + program, + deals, + globalMarketSeed +) { + const marketDeals = await filterDealsForMarket(deals, globalMarketSeed); const allRepaymentSchedules = await fetchRepaymentScheduleForDeals( program, provider, - allDeals + marketDeals, + globalMarketSeed ); - const inProgressSchedules = allDeals.map((deal, index) => { + const inProgressSchedules = marketDeals.map((deal, index) => { const schedule = allRepaymentSchedules[index]; const dealIsInProgress = isInProgress(deal, schedule); return dealIsInProgress ? schedule : null; }); - const totalOutstandingCredit = inProgressSchedules .filter((schedule) => schedule !== null) .reduce((principalSum, schedule) => { @@ -174,8 +232,34 @@ async function borrowed() { .minus(principalRepaid(schedule)); }, new BigNumber(0)); + return totalOutstandingCredit; +} + +async function borrowed() { + const provider = getProvider(); + const program = constructProgram(provider); + const allDeals = await program.account.deal.all(); + + // FinTech pool + const totalOutstandingCreditFintech = await fetchOutstandingCreditPool( + provider, + program, + allDeals, + MARKET_SEED_FINTECH + ); + + // Receivables factoring pool + const totalOutstandingCreditReceivables = await fetchOutstandingCreditPool( + provider, + program, + allDeals, + MARKET_SEED_RECEIVABLES + ); + return { - ['solana:' + USDC]: totalOutstandingCredit.toString() + ["solana:" + USDC]: totalOutstandingCreditFintech + .plus(totalOutstandingCreditReceivables) + .toString(), }; } From 70e98a4fe7ed2b6dca7bb27f2f2cbb64adf9f743 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 16 May 2023 16:16:54 +0100 Subject: [PATCH 0406/1354] alchemix treasury --- projects/treasury/alchemix.js | 38 ++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/projects/treasury/alchemix.js b/projects/treasury/alchemix.js index 790573554d..0332ea3d9b 100644 --- a/projects/treasury/alchemix.js +++ b/projects/treasury/alchemix.js @@ -3,6 +3,14 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); const alchemixTreasury = "0x8392F6669292fA56123F71949B52d883aE57e225"; const ALCX = "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF"; +const operations_treasury = "0x9e2b6378ee8ad2A4A95Fe481d63CAba8FB0EBBF9" +const treasury2 = "0x9735F7d3Ea56b454b24fFD74C58E9bD85cfaD31B" +const treasury3 = "0xe761bf731A06fE8259FeE05897B2687D56933110" +const treasury4 = "0x06378717d86B8cd2DBa58c87383dA1EDA92d3495" +const treasury5 = "0x3216D2A52f0094AA860ca090BC5C335dE36e6273" + +const treasuryFTM = "0x6b291cf19370a14bbb4491b01091e1e29335e605" +const treasuryOP = "0xc224bf25dcc99236f00843c7d8c4194abe8aa94a" module.exports = treasuryExports({ @@ -14,8 +22,36 @@ module.exports = treasuryExports({ '0x028171bCA77440897B824Ca71D1c56caC55b68A3',//aDAI ADDRESSES.ethereum.WETH,//WETH ADDRESSES.ethereum.USDT,//USDT + "0xf16aEe6a71aF1A9Bc8F56975A4c2705ca7A782Bc", //20WETH-80ALC + "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + ADDRESSES.ethereum.CRV, + ADDRESSES.ethereum.YFI, + "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", + "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", + "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", + "0xF1bB87563A122211d40d393eBf1c633c330377F9", //xpremia + "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", + "0x7f50786A0b15723D741727882ee99a0BF34e3466" ], - owners: [alchemixTreasury], + owners: [alchemixTreasury, operations_treasury, treasury2, treasury3, treasury4, treasury5], ownTokens: [ALCX], }, + optimism: { + tokens: [ + nullAddress, + ADDRESSES.optimism.USDC,//USDC + ADDRESSES.optimism.OP, + "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05" + ], + owners: [treasuryOP], + }, + fantom: { + tokens: [ + nullAddress, + ADDRESSES.fantom.USDC,//USDC + ADDRESSES.fantom.DAI, + ADDRESSES.fantom.WFTM + ], + owners: [treasuryFTM], + }, }) From c1ba7e6c43724171d7499f666bd64953481d009c Mon Sep 17 00:00:00 2001 From: define Date: Tue, 16 May 2023 16:18:40 +0100 Subject: [PATCH 0407/1354] cancel gnosis --- projects/treasury/gnosis-dao.js | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index a8357804ed..cc1f6e505b 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -8,8 +8,7 @@ const treasury3= "0xBc79855178842FDBA0c353494895DEEf509E26bB"; const GNO= "0x6810e776880C02933D47DB1b9fc05908e5386b96"; const LP = "0x6256518aE9a97C408a03AAF1A244989Ce6B937F6" const LP2 = "0x228054e9c056F024FC724F515A2a8764Ae175ED6" -const LP3 = "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f" -const LP4 = "0xD3780729035c5b302f76ced0E7F74cF0Fb7c739a" + module.exports = treasuryExports({ @@ -37,19 +36,11 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.LIDO,//LDO '0x1982b2F5814301d4e9a8b0201555376e62F82428', "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f", - "0xA13a9247ea42D743238089903570127DdA72fE44", - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", - "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", - "0x9c39809Dec7F95F5e0713634a4D0701329B3b4d2", - "0x5209dB28b3cF22a944401c83370Af7A703ffFb08", - "0xACAdA51C320947E7ed1a0D0F6b939b0FF465E4c2", - "0x001B78CEC62DcFdc660E06A91Eb1bC966541d758", - "0xe4683Fe8F53da14cA5DAc4251EaDFb3aa614d528", - "0xfAA2eD111B4F580fCb85C48E6DC6782Dc5FCD7a6" + ], owners: [treasury, treasury1, treasury2, treasury3], - ownTokens: [GNO, LP, LP2, LP3, LP4], + ownTokens: [GNO, LP, LP2], resolveUniV3: true, - resolveLP: true, + }, }) \ No newline at end of file From d00cc12321bd30c16a990e32c0b701295b663035 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 16 May 2023 16:20:24 +0100 Subject: [PATCH 0408/1354] undo commit --- projects/treasury/gnosis-dao.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index cc1f6e505b..aa29408599 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -5,12 +5,12 @@ const treasury = "0x4971DD016127F390a3EF6b956Ff944d0E2e1e462"; const treasury1 = "0x0DA0C3e52C977Ed3cBc641fF02DD271c3ED55aFe"; const treasury2 = "0x849D52316331967b6fF1198e5E32A0eB168D039d"; const treasury3= "0xBc79855178842FDBA0c353494895DEEf509E26bB"; +const vestingAddress = "0x849d52316331967b6ff1198e5e32a0eb168d039d"; const GNO= "0x6810e776880C02933D47DB1b9fc05908e5386b96"; const LP = "0x6256518aE9a97C408a03AAF1A244989Ce6B937F6" const LP2 = "0x228054e9c056F024FC724F515A2a8764Ae175ED6" - module.exports = treasuryExports({ ethereum: { tokens: [ @@ -35,12 +35,10 @@ module.exports = treasuryExports({ '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX ADDRESSES.ethereum.LIDO,//LDO '0x1982b2F5814301d4e9a8b0201555376e62F82428', - "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f", - + "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f" ], - owners: [treasury, treasury1, treasury2, treasury3], + owners: [treasury, treasury1, treasury2, treasury3, vestingAddress], ownTokens: [GNO, LP, LP2], resolveUniV3: true, - }, }) \ No newline at end of file From f33b8dc7891f45ec097fe6339c645f0e7e163a5b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 18:42:15 +0200 Subject: [PATCH 0409/1354] raydium: compute tvl on chain --- projects/helper/solana.js | 23 ++- projects/helper/utils/solana/layout.js | 188 ++++++++++++++++++++++++- projects/raydium.js | 71 +++++++--- 3 files changed, 259 insertions(+), 23 deletions(-) diff --git a/projects/helper/solana.js b/projects/helper/solana.js index 9aca41c23a..d6741df95e 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -67,7 +67,15 @@ async function getTokenSupply(token) { async function getGeckoSolTokens() { const tokens = await getTokenList() const tokenSet = new Set() - tokens.filter(i => i.extensions?.coingeckoId).forEach(i => tokenSet.add(i.address)) + tokens.filter(i => i.extensions?.coingeckoId && i.chainId === 101).forEach(i => tokenSet.add(i.address)) + return tokenSet +} + + +async function getValidGeckoSolTokens() { + const tokens = await getTokenList() + const tokenSet = new Set() + tokens.filter(i => i.extensions?.coingeckoId && i.chainId === 101 && !i.name.includes('(Wormhole v1)')).forEach(i => tokenSet.add(i.address)) return tokenSet } @@ -107,6 +115,9 @@ async function getTokenBalances(tokensAndAccounts) { const body = tokensAndAccounts.map(([token, account]) => formTokenBalanceQuery(token, account)) const tokenBalances = await axios.post(endpoint, body); const balances = {} + tokenBalances.data.forEach((v, i )=> { + if (!v.result) console.log(v, tokensAndAccounts[i]) + } ) tokenBalances.data.forEach(({ result: { value } }) => { value.forEach(({ account: { data: { parsed: { info: { mint, tokenAmount: { amount } } } } } }) => { sdk.util.sumSingleBalance(balances, mint, amount) @@ -315,6 +326,7 @@ async function sumTokens2({ tokensAndOwners = tokensAndOwners.filter(([token]) => !blacklistedTokens.includes(token)) if (tokensAndOwners.length) { + tokensAndOwners = getUnique(tokensAndOwners) log('total balance queries: ', tokensAndOwners.length) const chunks = sliceIntoChunks(tokensAndOwners, 99) for (const chunk of chunks) { @@ -345,6 +357,14 @@ async function sumTokens2({ const tokenBalances = await getTokenBalances(tokensAndAccounts) return transformBalances({ tokenBalances, balances, }) } + + function getUnique(tokensAndOwners) { + const set = new Set() + tokensAndOwners.forEach(i => { + set.add(i.join('$')) + }) + return [...set].map(i => i.split('$')) + } } async function transformBalances({ tokenBalances, balances = {}, }) { @@ -389,4 +409,5 @@ module.exports = { getTokenList, readBigUInt64LE, decodeAccount, + getValidGeckoSolTokens, }; diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index 0861110ae0..100d8d5c4a 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -4,7 +4,7 @@ const BufferLayout = require("buffer-layout"); const { PublicKey } = require("@solana/web3.js"); const BN = require("bn.js"); const { parseLido, parseLidoValidatorList } = require('./lido') -const { struct, u8, u16, seq, blob, Layout, bits, u32, } = BufferLayout +const { struct, s32, u8, u16, seq, blob, Layout, bits, u32, } = BufferLayout const publicKey = (property = "publicKey") => { const publicKeyLayout = BufferLayout.blob(32, property); @@ -90,6 +90,7 @@ const uint128 = (property = "uint128") => { return layout; }; +const u128 = uint128 class WideBits extends Layout { constructor(property) { @@ -488,7 +489,187 @@ const MARKET_STATE_LAYOUT_V3 = struct([ blob(7), ]); -// console.log(INVESTIN_FUND_DATA.span) +const RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4 = struct([ + u64("status"), + u64("nonce"), + u64("maxOrder"), + u64("depth"), + u64("baseDecimal"), + u64("quoteDecimal"), + u64("state"), + u64("resetFlag"), + u64("minSize"), + u64("volMaxCutRatio"), + u64("amountWaveRatio"), + u64("baseLotSize"), + u64("quoteLotSize"), + u64("minPriceMultiplier"), + u64("maxPriceMultiplier"), + u64("systemDecimalValue"), + u64("minSeparateNumerator"), + u64("minSeparateDenominator"), + u64("tradeFeeNumerator"), + u64("tradeFeeDenominator"), + u64("pnlNumerator"), + u64("pnlDenominator"), + u64("swapFeeNumerator"), + u64("swapFeeDenominator"), + u64("baseNeedTakePnl"), + u64("quoteNeedTakePnl"), + u64("quoteTotalPnl"), + u64("baseTotalPnl"), + u128("quoteTotalDeposited"), + u128("baseTotalDeposited"), + u128("swapBaseInAmount"), + u128("swapQuoteOutAmount"), + u64("swapBase2QuoteFee"), + u128("swapQuoteInAmount"), + u128("swapBaseOutAmount"), + u64("swapQuote2BaseFee"), + // amm vault + publicKey("baseVault"), + publicKey("quoteVault"), + // mint + publicKey("baseMint"), + publicKey("quoteMint"), + publicKey("lpMint"), + // market + publicKey("openOrders"), + publicKey("marketId"), + publicKey("marketProgramId"), + publicKey("targetOrders"), + publicKey("withdrawQueue"), + publicKey("lpVault"), + publicKey("owner"), + // true circulating supply without lock up + u64("lpReserve"), + seq(u64(), 3, "padding"), +]) + +const RAYDIUM_REWARD_INFO = struct([ + u8("rewardState"), + u64("openTime"), + u64("endTime"), + u64("lastUpdateTime"), + u128("emissionsPerSecondX64"), + u64("rewardTotalEmissioned"), + u64("rewardClaimed"), + publicKey("tokenMint"), + publicKey("tokenVault"), + publicKey("creator"), + u128("rewardGrowthGlobalX64"), +]) + +const RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM = struct([ + blob(8), + u8("bump"), + publicKey("ammConfig"), + publicKey("creator"), + publicKey("mintA"), + publicKey("mintB"), + publicKey("vaultA"), + publicKey("vaultB"), + publicKey("observationId"), + u8("mintDecimalsA"), + u8("mintDecimalsB"), + u16("tickSpacing"), + u128("liquidity"), + u128("sqrtPriceX64"), + s32("tickCurrent"), + u16("observationIndex"), + u16("observationUpdateDuration"), + u128("feeGrowthGlobalX64A"), + u128("feeGrowthGlobalX64B"), + u64("protocolFeesTokenA"), + u64("protocolFeesTokenB"), + + u128("swapInAmountTokenA"), + u128("swapOutAmountTokenB"), + u128("swapInAmountTokenB"), + u128("swapOutAmountTokenA"), + + u8("status"), + + seq(u8(), 7, ""), + + seq(RAYDIUM_REWARD_INFO, 3, "rewardInfos"), + seq(u64(), 16, 'tickArrayBitmap'), + + u64("totalFeesTokenA"), + u64("totalFeesClaimedTokenA"), + u64("totalFeesTokenB"), + u64("totalFeesClaimedTokenB"), + + u64("fundFeesTokenA"), + u64("fundFeesTokenB"), + + u64("startTime"), + + seq(u64(), 15 * 4 - 3, "padding"), +]) + +const RAYDIUM_STABLE_STATE_LAYOUT_V1 = struct([ + u64("accountType"), + u64("status"), + u64("nonce"), + u64("maxOrder"), + u64("depth"), + u64("baseDecimal"), + u64("quoteDecimal"), + u64("state"), + u64("resetFlag"), + u64("minSize"), + u64("volMaxCutRatio"), + u64("amountWaveRatio"), + u64("baseLotSize"), + u64("quoteLotSize"), + u64("minPriceMultiplier"), + u64("maxPriceMultiplier"), + u64("systemDecimalsValue"), + u64("abortTradeFactor"), + u64("priceTickMultiplier"), + u64("priceTick"), + // Fees + u64("minSeparateNumerator"), + u64("minSeparateDenominator"), + u64("tradeFeeNumerator"), + u64("tradeFeeDenominator"), + u64("pnlNumerator"), + u64("pnlDenominator"), + u64("swapFeeNumerator"), + u64("swapFeeDenominator"), + // OutPutData + u64("baseNeedTakePnl"), + u64("quoteNeedTakePnl"), + u64("quoteTotalPnl"), + u64("baseTotalPnl"), + u64("poolOpenTime"), + u64("punishPcAmount"), + u64("punishCoinAmount"), + u64("orderbookToInitTime"), + u128("swapBaseInAmount"), + u128("swapQuoteOutAmount"), + u128("swapQuoteInAmount"), + u128("swapBaseOutAmount"), + u64("swapQuote2BaseFee"), + u64("swapBase2QuoteFee"), + + publicKey("baseVault"), + publicKey("quoteVault"), + publicKey("baseMint"), + publicKey("quoteMint"), + publicKey("lpMint"), + + publicKey("modelDataAccount"), + publicKey("openOrders"), + publicKey("marketId"), + publicKey("marketProgramId"), + publicKey("targetOrders"), + publicKey("owner"), + seq(u64("padding"), 64, "padding"), +]) + +// console.log(RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM.span, 'RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM') const parseReserve = (info) => { const pubkey = PublicKey.default @@ -527,6 +708,9 @@ const customDecoders = { larixReserve: defaultParseLayout(ReserveLayoutLarix), investinFund: defaultParseLayout(INVESTIN_FUND_DATA), openbook: defaultParseLayout(MARKET_STATE_LAYOUT_V3), + // raydiumLPv4: defaultParseLayout(RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4), + raydiumCLMM: defaultParseLayout(RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM), + raydiumLPStable: defaultParseLayout(RAYDIUM_STABLE_STATE_LAYOUT_V1), } function decodeAccount(layout, accountInfo) { diff --git a/projects/raydium.js b/projects/raydium.js index 95f62d1967..17cc3a2888 100644 --- a/projects/raydium.js +++ b/projects/raydium.js @@ -1,24 +1,55 @@ -const { get } = require("./helper/http"); -const sdk = require("@defillama/sdk"); - -async function fetch() { - const response = await get("https://api.raydium.io/pairs"); - return response.reduce((a, b) => { - if ( - [ - "5UCve2rYxMTe2xyCoqREsMXoTCCqr57XpnDsPq45r9dc", - "7MeQyLVRr4FL2aDFm9R6WBchdWJaMgNJCqhzbwziCPd8", - ].includes(b.amm_id) - ) - return a; - if (b.liquidity > 1e8) sdk.log(b); - return a + b.liquidity; - }, 0); +const { getConnection, sumTokens2, decodeAccount, getValidGeckoSolTokens, } = require("./helper/solana"); +const { PublicKey, } = require("@solana/web3.js"); +const sdk = require('@defillama/sdk') + +const CLMM = 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK' +const AmmV4 = '675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8' +const AmmStable = '5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h' + +async function ammStableTvl() { + const connection = getConnection() + const accounts = await connection.getProgramAccounts(new PublicKey(AmmStable), { + filters: [{ + dataSize: 1232 + }] + }) + const data = accounts.map(i => decodeAccount('raydiumLPStable', i.account)) + const tokenAccounts = data.map(i => [i.baseVault, i.quoteVault]).flat().map(i => i.toString()) + return sumTokens2({ tokenAccounts }) +} + + +async function tvlCLMM() { + const connection = getConnection() + const accounts = await connection.getProgramAccounts(new PublicKey(CLMM), { + filters: [{ + dataSize: 1544 + }] + }) + const data = accounts.map(i => decodeAccount('raydiumCLMM', i.account)) + const tokenAccounts = data.map(i => [i.vaultA, i.vaultB]).flat().map(i => i.toString()) + return sumTokens2({ tokenAccounts }) +} + + +async function ammV4Tvl() { + const owner = '5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1' + return sumTokens2({ owner, tokens: [...await getValidGeckoSolTokens()], blacklistedTokens: [ + '674PmuiDtgKx3uKuJ1B16f9m5L84eFvNwj3xDMvHcbo7', // $WOOD + 'SNSNkV9zfG5ZKWQs6x4hxvBRV6s8SqMfSGCtECDvdMd', // SNS + 'A7rqejP8LKN8syXMr4tvcKjs2iJ4WtZjXNs1e6qP3m9g', // ZION + 'RdFHYW7mPJouuSpb5vEzUfbHeQedmQMuCoHN4VQkUDn', // LUCHOW + 'RFn7mUjf24UFMBdDVmoggAii4gyHdRDDqmKzGVbkd8c', // FOUR + 'FTD9EisrsMt5TW5wSTMqyXLh2o7xTb6KNuTiXgHhw8Q8', // POLYPLAY + ]}) } + + module.exports = { - hallmarks: [[1667865600, "FTX collapse"]], timetravel: false, - fetch, -}; -// node test.js projects/raydium.js + hallmarks: [[1667865600, "FTX collapse"]], + solana: { + tvl: sdk.util.sumChainTvls([tvlCLMM, ammStableTvl, ammV4Tvl]), + }, +}; \ No newline at end of file From a699b01594a0a8e2492c93ee2b66c6c12e5394f8 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 16 May 2023 18:08:19 +0100 Subject: [PATCH 0410/1354] add hallmark gemswap --- projects/gemswap/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/gemswap/index.js b/projects/gemswap/index.js index 64aa4fa4f1..a39bc076ff 100644 --- a/projects/gemswap/index.js +++ b/projects/gemswap/index.js @@ -1,6 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { + hallmarks: [ + [1681430400,"Rug Pull"] + ], misrepresentedTokens: true, era: { tvl: getUniTVL({ From 3b519da954eb952d7ec3f8164c8242318d424b5b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 16 May 2023 19:20:24 +0100 Subject: [PATCH 0411/1354] add pulse chain and pulsex adapter --- projects/helper/chains.json | 1 + projects/pulsex/index.js | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 projects/pulsex/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index f176f20d61..b43e4c983d 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -148,6 +148,7 @@ "pool2", "posi", "proton", + "pulse", "quicksilver", "reef", "regen", diff --git a/projects/pulsex/index.js b/projects/pulsex/index.js new file mode 100644 index 0000000000..7addbd64a3 --- /dev/null +++ b/projects/pulsex/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + methodology: + "Factory address (0x1715a3E4A142d8b698131108995174F37aEBA10D) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", + pulse: { + tvl: getUniTVL({ factory: '0x1715a3E4A142d8b698131108995174F37aEBA10D', chain: 'pulse', useDefaultCoreAssets: true }), + }, +}; // node test.js projects/pulsex/index.js \ No newline at end of file From 15f906f47a0d7e9adec62580162d1e148f6ad826 Mon Sep 17 00:00:00 2001 From: Kylix Afonso Date: Tue, 16 May 2023 19:28:49 +0100 Subject: [PATCH 0412/1354] add staked lq to tvl --- projects/liqwid/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index 230a95224c..38766f9c60 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -28,6 +28,8 @@ const scriptAddresses = [ "addr1wyw3ap36lnepstpjadwg8cg73llvmju4y94kmfld23lkzjggq4hyj", "addr1wxrxa3ucywn3lqpkzlyucak0a7aavkudh49fqt06yc05sws4l4zs2", "addr1wy6e9jukn8fpx7kesrpmapsnmz0cgq6lnskuff0xc0junggv6gd8l", + // Staked LQ + "addr1w8arvq7j9qlrmt0wpdvpp7h4jr4fmfk8l653p9t907v2nsss7w7r4", ]; module.exports = { From 44818333372f4356405b0cecc01bc49770d81c78 Mon Sep 17 00:00:00 2001 From: lorem ipsum Date: Tue, 16 May 2023 17:03:06 -0400 Subject: [PATCH 0413/1354] added adapter for vendor-finance-v2 --- projects/vendor-finance-v2/index.js | 73 +++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 projects/vendor-finance-v2/index.js diff --git a/projects/vendor-finance-v2/index.js b/projects/vendor-finance-v2/index.js new file mode 100644 index 0000000000..b5d06d3237 --- /dev/null +++ b/projects/vendor-finance-v2/index.js @@ -0,0 +1,73 @@ +const sdk = require('@defillama/sdk') +const { getLogs } = require("../helper/cache/getLogs"); + +async function tvl(timestamp, block, chainBlocks, { api }) { + const { factory, fromBlock } = config[api.chain] + const logs = await getLogs({ + api, + target: factory, + topics: ['0xee5c84cc965f1ed0b60a1a4a5a02cf02830b6262b89a9063fda05b63ce8b2f8b'], + fromBlock, + eventAbi: 'event DeployPool(address poolAddress,address deployer,address implementation,(address feesManager,bytes32 strategy,address oracle,address treasury,address posTracker),(uint8 poolType,address owner,uint48 expiry,address colToken,uint48 protocolFee,address lendToken,uint48 ltv,uint48 pauseTime,uint256 lendRatio,address[] allowlist,bytes32 feeRatesAndType))' + }) + + block = chainBlocks.arbitrum; + const balances = {}; + const transform = addr => `${api.chain}:${addr}` + + const abi = { + lendBalance: "function lendBalance() view returns (uint256)", + colBalance: "function colBalance() view returns (uint256)" + } + + // lend assets may be stored in AAVE if the lender chooses so we can't + // rely on balanceOf calls to get lend balances. Each pool has a + // lendBalance and colBalance method that returns the token balances + // that are in the pool and are currently in AAVE that belong to the pool + + // get lend balances returned from the lendBalance method + const { output: lendOutput } = await sdk.api.abi.multiCall({ + abi: abi.lendBalance, + calls: logs.map(log => ({ + target: log.args[0], + })), + block, + chain: api.chain + }); + + // get col balances returned from the colBalance method + const { output: colOutput } = await sdk.api.abi.multiCall({ + abi: abi.colBalance, + calls: logs.map(log => ({ + target: log.args[0], + })), + block, + chain: api.chain + }); + + lendOutput.forEach((res, i) => { + if (!res.success) return; + // extract collateral and lend tokens + const lendToken = logs[i].args[4].lendToken; + const colToken = logs[i].args[4].colToken; + // add collateral and lend token balances returned from contract calls + sdk.util.sumSingleBalance(balances, transform(lendToken), res.output); + sdk.util.sumSingleBalance(balances, transform(colToken), colOutput[i].output); + }); + + return balances; +} + +const config = { + arbitrum: { factory: '0x0b2B8Fbf3dfd6237921A89355cfc08f107bFbf98', fromBlock: 88774917 } + // ethereum: { factory: '0x928cf648069082D9AEf25ddB2bF10D25bf1C1D73', fromBlock: 16545630, }, +} + +module.exports = { + methodology: 'The sum of the balance of all listed collateral and lend tokens in all deployed pools.', + start: 88774917, +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}); \ No newline at end of file From 3df8d98113384186c7ba0da96a702decbb06777a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 May 2023 23:07:08 +0200 Subject: [PATCH 0414/1354] add support for pulse chain --- package-lock.json | 12 +- projects/helper/utils/solana/layout.js | 673 +----------------- .../utils/solana/layouts/investin-layout.js | 129 ++++ .../utils/solana/layouts/layout-base.js | 95 +++ .../helper/utils/solana/{ => layouts}/lido.js | 0 .../utils/solana/layouts/mixed-layout.js | 201 ++++++ .../utils/solana/layouts/openbook-layout.js | 96 +++ .../utils/solana/layouts/raydium-layout.js | 187 +++++ projects/pulsex/index.js | 4 +- projects/raydium.js | 1 - 10 files changed, 721 insertions(+), 677 deletions(-) create mode 100644 projects/helper/utils/solana/layouts/investin-layout.js create mode 100644 projects/helper/utils/solana/layouts/layout-base.js rename projects/helper/utils/solana/{ => layouts}/lido.js (100%) create mode 100644 projects/helper/utils/solana/layouts/mixed-layout.js create mode 100644 projects/helper/utils/solana/layouts/openbook-layout.js create mode 100644 projects/helper/utils/solana/layouts/raydium-layout.js diff --git a/package-lock.json b/package-lock.json index 054b87a080..f7915eb1d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -62,9 +62,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.13.tgz", - "integrity": "sha512-J30sy9VAITb7Es8jQDEt7RJ9B22ylryx24lgQLj0sBXq7iqhF302IiyoM7t66G9pFKtsAOIwdRFH9uNIhBNAyA==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.17.tgz", + "integrity": "sha512-CmFSlgk4/GjjZL6igwB3zrxmNdU7W8LG4ijhAqB7W8c/QqFNNdYBsf3DnXtKsDTfgQLtrRSji838ThWvnI+9cg==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4193,9 +4193,9 @@ } }, "@defillama/sdk": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.13.tgz", - "integrity": "sha512-J30sy9VAITb7Es8jQDEt7RJ9B22ylryx24lgQLj0sBXq7iqhF302IiyoM7t66G9pFKtsAOIwdRFH9uNIhBNAyA==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.17.tgz", + "integrity": "sha512-CmFSlgk4/GjjZL6igwB3zrxmNdU7W8LG4ijhAqB7W8c/QqFNNdYBsf3DnXtKsDTfgQLtrRSji838ThWvnI+9cg==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index 100d8d5c4a..740eab03d2 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -1,673 +1,10 @@ -const { deserializeUnchecked } = require('borsh'); -const BufferLayout = require("buffer-layout"); const { PublicKey } = require("@solana/web3.js"); -const BN = require("bn.js"); -const { parseLido, parseLidoValidatorList } = require('./lido') -const { struct, s32, u8, u16, seq, blob, Layout, bits, u32, } = BufferLayout - -const publicKey = (property = "publicKey") => { - const publicKeyLayout = BufferLayout.blob(32, property); - - const _decode = publicKeyLayout.decode.bind(publicKeyLayout); - const _encode = publicKeyLayout.encode.bind(publicKeyLayout); - - publicKeyLayout.decode = (buffer, offset) => { - const data = _decode(buffer, offset); - return new PublicKey(data); - }; - - publicKeyLayout.encode = (key, buffer, offset) => - _encode(key.toBuffer(), buffer, offset); - - return publicKeyLayout; -}; - -/** - * Layout for a 64bit unsigned value - */ -const uint64 = (property = "uint64") => { - const layout = BufferLayout.blob(8, property); - - const _decode = layout.decode.bind(layout); - const _encode = layout.encode.bind(layout); - - layout.decode = (buffer, offset) => { - const data = _decode(buffer, offset); - return new BN( - [...data] - .reverse() - .map((i) => `00${i.toString(16)}`.slice(-2)) - .join(""), - 16 - ); - }; - - layout.encode = (num, buffer, offset) => { - const a = num.toArray().reverse(); - let b = Buffer.from(a); - if (b.length !== 8) { - const zeroPad = Buffer.alloc(8); - b.copy(zeroPad); - b = zeroPad; - } - return _encode(b, buffer, offset); - }; - - return layout; -}; - -const u64 = uint64 - -const uint128 = (property = "uint128") => { - const layout = BufferLayout.blob(16, property); - - const _decode = layout.decode.bind(layout); - const _encode = layout.encode.bind(layout); - - layout.decode = (buffer, offset) => { - const data = _decode(buffer, offset); - return new BN( - [...data] - .reverse() - .map((i) => `00${i.toString(16)}`.slice(-2)) - .join(""), - 16 - ); - }; - - layout.encode = (num, buffer, offset) => { - const a = num.toArray().reverse(); - let b = Buffer.from(a); - if (b.length !== 16) { - const zeroPad = Buffer.alloc(16); - b.copy(zeroPad); - b = zeroPad; - } - - return _encode(b, buffer, offset); - }; - - return layout; -}; -const u128 = uint128 - -class WideBits extends Layout { - constructor(property) { - super(8, property); - this._lower = bits(u32(), false); - this._upper = bits(u32(), false); - } - - addBoolean(property) { - if (this._lower.fields.length < 32) { - this._lower.addBoolean(property); - } else { - this._upper.addBoolean(property); - } - } - - decode(b, offset = 0) { - const lowerDecoded = this._lower.decode(b, offset); - const upperDecoded = this._upper.decode(b, offset + this._lower.span); - return { ...lowerDecoded, ...upperDecoded }; - } - - encode(src, b, offset = 0) { - return ( - this._lower.encode(src, b, offset) + - this._upper.encode(src, b, offset + this._lower.span) - ); - } -} - -const ACCOUNT_FLAGS_LAYOUT = new WideBits(); -ACCOUNT_FLAGS_LAYOUT.addBoolean('initialized'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('market'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('openOrders'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('requestQueue'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('eventQueue'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('bids'); -ACCOUNT_FLAGS_LAYOUT.addBoolean('asks'); - -function accountFlagsLayout(property = 'accountFlags') { - return ACCOUNT_FLAGS_LAYOUT.replicate(property); -} - -const LastUpdateLayout = BufferLayout.struct( - [uint64("slot"), BufferLayout.u8("stale")], - "lastUpdate" -); - -const ReserveLayout = BufferLayout.struct([ - BufferLayout.u8("version"), - - LastUpdateLayout, - - publicKey("lendingMarket"), - - BufferLayout.struct( - [ - publicKey("mintPubkey"), - BufferLayout.u8("mintDecimals"), - publicKey("supplyPubkey"), - // @FIXME: oracle option - // TODO: replace u32 option with generic equivalent - // BufferLayout.u32('oracleOption'), - publicKey("pythOracle"), - publicKey("switchboardOracle"), - uint64("availableAmount"), - uint128("borrowedAmountWads"), - uint128("cumulativeBorrowRateWads"), - uint128("marketPrice"), - ], - "liquidity" - ), - - BufferLayout.struct( - [ - publicKey("mintPubkey"), - uint64("mintTotalSupply"), - publicKey("supplyPubkey"), - ], - "collateral" - ), - - BufferLayout.struct( - [ - BufferLayout.u8("optimalUtilizationRate"), - BufferLayout.u8("loanToValueRatio"), - BufferLayout.u8("liquidationBonus"), - BufferLayout.u8("liquidationThreshold"), - BufferLayout.u8("minBorrowRate"), - BufferLayout.u8("optimalBorrowRate"), - BufferLayout.u8("maxBorrowRate"), - BufferLayout.struct( - [ - uint64("borrowFeeWad"), - uint64("flashLoanFeeWad"), - BufferLayout.u8("hostFeePercentage"), - ], - "fees" - ), - uint64("depositLimit"), - uint64("borrowLimit"), - publicKey("feeReceiver"), - ], - "config" - ), - - BufferLayout.blob(256, "padding"), -]); - -const ReserveLayoutLarix = BufferLayout.struct( - [ - BufferLayout.u8('version'), - - LastUpdateLayout, - - publicKey('lendingMarket'), - - BufferLayout.struct( - [ - publicKey('mintPubkey'), - BufferLayout.u8('mintDecimals'), - publicKey('supplyPubkey'), - publicKey('feeReceiver'), - BufferLayout.u8("usePythOracle"), - publicKey('params_1'), - publicKey("params_2"), - uint64('availableAmount'), - uint128('borrowedAmountWads'), - uint128('cumulativeBorrowRateWads'), - uint128('marketPrice'), - uint128('ownerUnclaimed'), - ], - 'liquidity', - ), - - BufferLayout.struct( - [ - publicKey('mintPubkey'), - uint64('mintTotalSupply'), - publicKey('supplyPubkey'), - ], - 'collateral' - ), - - BufferLayout.struct( - [ - BufferLayout.u8('optimalUtilizationRate'), - BufferLayout.u8('loanToValueRatio'), - BufferLayout.u8('liquidationBonus'), - BufferLayout.u8('liquidationThreshold'), - BufferLayout.u8('minBorrowRate'), - BufferLayout.u8('optimalBorrowRate'), - BufferLayout.u8('maxBorrowRate'), - BufferLayout.struct( - // TODO: fix flash loan fee wad - [ - uint64('borrowFeeWad'), - uint64('borrowInterestFeeWad'), - uint64("flashLoanFeeWad"), - BufferLayout.u8('hostFeePercentage'), - BufferLayout.u8('hostFeeReceiverCount'), - BufferLayout.blob(32 * 5, 'hostFeeReceivers'), - ], - 'fees', - ), - BufferLayout.u8("depositPaused"), - BufferLayout.u8("borrowPaused"), - BufferLayout.u8("liquidationPaused"), - ], - 'config' - ), - BufferLayout.struct( - [ - publicKey("unCollSupply"), - uint128('lTokenMiningIndex'), - uint128('borrowMiningIndex'), - uint64("totalMiningSpeed"), - uint64("kinkUtilRate"), - ], - 'bonus' - ), - BufferLayout.u8("reentry"), - uint64("depositLimit"), - BufferLayout.u8("isLP"), - BufferLayout.blob(239, 'padding'), - ], -); - -const MintLayout = BufferLayout.struct([ - BufferLayout.u32('mintAuthorityOption'), - publicKey("mintAuthority"), - uint64('supply'), - BufferLayout.u8("decimals"), - BufferLayout.u8("isInitialized"), - BufferLayout.u32("freezeAuthorityOption"), - publicKey("freezeAuthority"), -]); - -const AccountLayout = BufferLayout.struct([ - publicKey('mint'), - publicKey('owner'), - uint64('amount'), - BufferLayout.u32('delegateOption'), - publicKey('delegate'), - BufferLayout.u8('state'), - BufferLayout.u32('isNativeOption'), - uint64('isNative'), - uint64('delegatedAmount'), - BufferLayout.u32('closeAuthorityOption'), - publicKey('closeAuthority'), -]); - -const TokenSwapLayout = BufferLayout.struct([ - BufferLayout.u8("version"), - BufferLayout.u8("isInitialized"), - BufferLayout.u8("bumpSeed"), - publicKey("tokenProgramId"), - publicKey("tokenAccountA"), - publicKey("tokenAccountB"), - publicKey("tokenPool"), - publicKey("mintA"), - publicKey("mintB"), - publicKey("feeAccount"), - BufferLayout.blob(8, "tradeFeeNumerator"), - BufferLayout.blob(8, "tradeFeeDenominator"), - BufferLayout.blob(8, "ownerTradeFeeNumerator"), - BufferLayout.blob(8, "ownerTradeFeeDenominator"), - BufferLayout.blob(8, "ownerWithdrawFeeNumerator"), - BufferLayout.blob(8, "ownerWithdrawFeeDenominator"), - BufferLayout.blob(8, "hostFeeNumerator"), - BufferLayout.blob(8, "hostFeeDenominator"), - BufferLayout.u8("curveType"), - publicKey("curveParameters"), -]) - -function U64F64(property = "u64F64") { - - const layout = BufferLayout.blob(16, property); - - const _decode = layout.decode.bind(layout); - const _encode = layout.encode.bind(layout); - - layout.decode = (buffer, offset) => { - const raw = new BN(_decode(buffer, offset), 10, 'le'); - - return raw / Math.pow(2, 64); - }; - - layout.encode = (key, buffer, offset) => - _encode(key.toBuffer(), buffer, offset); - - return layout; -} - -const INVESTIN_FUND_DATA = struct([ - u8('is_initialized'), - u8('number_of_active_investments'), - u8('no_of_investments'), - u8('signer_nonce'), - u8('no_of_margin_positions'), - u8('no_of_assets'), - u16('position_count'), - - u8('version'), - u8('is_private'), - u16('fund_v3_index'), - seq(u8(), 4, 'padding'), - - u64('min_amount'), - U64F64('min_return'), - U64F64('performance_fee_percentage'), - U64F64('total_amount'), - U64F64('prev_performance'), - - u64('amount_in_router'), - U64F64('performance_fee'), - publicKey('manager_account'), - publicKey('fund_pda'), - seq( - struct([ - u8('is_active'), - seq(u8(), 3, 'index'), - u8('mux'), - u8('is_on_mango'), - seq(u8(), 2, 'padding'), - u64('balance'), - u64('debt'), - publicKey('vault') - ]), - 8, 'tokens' - ), - seq(publicKey(), 10, 'investors'), - - struct([ - publicKey('mango_account'), - seq(u8(), 3, 'perp_markets'), - u8('padding'), - u8('deposit_index'), - u8('markets_active'), - u8('deposits_active'), - u8('xpadding'), - seq(u64(), 2, 'investor_debts'), - seq(u8('padding'), 24), - ], 'mango_positions'), - - - struct([ - u8('is_active'), - u8('is_split'), - u8('hop'), - u8('count'), - u8('token_in_slot'), - u8('token_out_slot'), - seq(u8('padding'), 2), - - publicKey('token_in'), - publicKey('token_out'), - u64('amount_in'), - u64('min_amount_out'), - ], 'guard'), - - seq( - struct([ - u64('price'), - u64('max_base_quantity'), - u64('max_quote_quantity'), - u64('client_order_id'), - u64('expiry_timestamp'), - u8('is_repost_processing'), - u8('perp_market_id'), - u8('side'), - u8('reduce_only'), - u8('limit'), - seq(u8(), 3, 'padding'), - ]), - 2, 'limit_orders' - ), - - struct([ - u64('last_updated'), - publicKey('volt_vault_id'), - u64('total_value_in_ul'), - u64('fc_token_balance'), - u64('ul_token_balance'), - u64('fc_token_debt'), - u64('ul_debt'), - u8('ul_token_slot'), - u8('is_active'), - seq(u8('padding'), 6), - ], 'friktion_vault'), - - seq(u8(), 1864, 'migration_additonal_padding'), -]) - -const MARKET_STATE_LAYOUT_V3 = struct([ - blob(5), - - accountFlagsLayout('accountFlags'), - - publicKey('ownAddress'), - - u64('vaultSignerNonce'), - - publicKey('baseMint'), - publicKey('quoteMint'), - - publicKey('baseVault'), - u64('baseDepositsTotal'), - u64('baseFeesAccrued'), - - publicKey('quoteVault'), - u64('quoteDepositsTotal'), - u64('quoteFeesAccrued'), - - u64('quoteDustThreshold'), - - publicKey('requestQueue'), - publicKey('eventQueue'), - - publicKey('bids'), - publicKey('asks'), - - u64('baseLotSize'), - u64('quoteLotSize'), - - u64('feeRateBps'), - - u64('referrerRebatesAccrued'), - - publicKey('authority'), - publicKey('pruneAuthority'), - publicKey('consumeEventsAuthority'), - - blob(992), - - blob(7), -]); - -const RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4 = struct([ - u64("status"), - u64("nonce"), - u64("maxOrder"), - u64("depth"), - u64("baseDecimal"), - u64("quoteDecimal"), - u64("state"), - u64("resetFlag"), - u64("minSize"), - u64("volMaxCutRatio"), - u64("amountWaveRatio"), - u64("baseLotSize"), - u64("quoteLotSize"), - u64("minPriceMultiplier"), - u64("maxPriceMultiplier"), - u64("systemDecimalValue"), - u64("minSeparateNumerator"), - u64("minSeparateDenominator"), - u64("tradeFeeNumerator"), - u64("tradeFeeDenominator"), - u64("pnlNumerator"), - u64("pnlDenominator"), - u64("swapFeeNumerator"), - u64("swapFeeDenominator"), - u64("baseNeedTakePnl"), - u64("quoteNeedTakePnl"), - u64("quoteTotalPnl"), - u64("baseTotalPnl"), - u128("quoteTotalDeposited"), - u128("baseTotalDeposited"), - u128("swapBaseInAmount"), - u128("swapQuoteOutAmount"), - u64("swapBase2QuoteFee"), - u128("swapQuoteInAmount"), - u128("swapBaseOutAmount"), - u64("swapQuote2BaseFee"), - // amm vault - publicKey("baseVault"), - publicKey("quoteVault"), - // mint - publicKey("baseMint"), - publicKey("quoteMint"), - publicKey("lpMint"), - // market - publicKey("openOrders"), - publicKey("marketId"), - publicKey("marketProgramId"), - publicKey("targetOrders"), - publicKey("withdrawQueue"), - publicKey("lpVault"), - publicKey("owner"), - // true circulating supply without lock up - u64("lpReserve"), - seq(u64(), 3, "padding"), -]) - -const RAYDIUM_REWARD_INFO = struct([ - u8("rewardState"), - u64("openTime"), - u64("endTime"), - u64("lastUpdateTime"), - u128("emissionsPerSecondX64"), - u64("rewardTotalEmissioned"), - u64("rewardClaimed"), - publicKey("tokenMint"), - publicKey("tokenVault"), - publicKey("creator"), - u128("rewardGrowthGlobalX64"), -]) - -const RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM = struct([ - blob(8), - u8("bump"), - publicKey("ammConfig"), - publicKey("creator"), - publicKey("mintA"), - publicKey("mintB"), - publicKey("vaultA"), - publicKey("vaultB"), - publicKey("observationId"), - u8("mintDecimalsA"), - u8("mintDecimalsB"), - u16("tickSpacing"), - u128("liquidity"), - u128("sqrtPriceX64"), - s32("tickCurrent"), - u16("observationIndex"), - u16("observationUpdateDuration"), - u128("feeGrowthGlobalX64A"), - u128("feeGrowthGlobalX64B"), - u64("protocolFeesTokenA"), - u64("protocolFeesTokenB"), - - u128("swapInAmountTokenA"), - u128("swapOutAmountTokenB"), - u128("swapInAmountTokenB"), - u128("swapOutAmountTokenA"), - - u8("status"), - - seq(u8(), 7, ""), - - seq(RAYDIUM_REWARD_INFO, 3, "rewardInfos"), - seq(u64(), 16, 'tickArrayBitmap'), - - u64("totalFeesTokenA"), - u64("totalFeesClaimedTokenA"), - u64("totalFeesTokenB"), - u64("totalFeesClaimedTokenB"), - - u64("fundFeesTokenA"), - u64("fundFeesTokenB"), - - u64("startTime"), - - seq(u64(), 15 * 4 - 3, "padding"), -]) - -const RAYDIUM_STABLE_STATE_LAYOUT_V1 = struct([ - u64("accountType"), - u64("status"), - u64("nonce"), - u64("maxOrder"), - u64("depth"), - u64("baseDecimal"), - u64("quoteDecimal"), - u64("state"), - u64("resetFlag"), - u64("minSize"), - u64("volMaxCutRatio"), - u64("amountWaveRatio"), - u64("baseLotSize"), - u64("quoteLotSize"), - u64("minPriceMultiplier"), - u64("maxPriceMultiplier"), - u64("systemDecimalsValue"), - u64("abortTradeFactor"), - u64("priceTickMultiplier"), - u64("priceTick"), - // Fees - u64("minSeparateNumerator"), - u64("minSeparateDenominator"), - u64("tradeFeeNumerator"), - u64("tradeFeeDenominator"), - u64("pnlNumerator"), - u64("pnlDenominator"), - u64("swapFeeNumerator"), - u64("swapFeeDenominator"), - // OutPutData - u64("baseNeedTakePnl"), - u64("quoteNeedTakePnl"), - u64("quoteTotalPnl"), - u64("baseTotalPnl"), - u64("poolOpenTime"), - u64("punishPcAmount"), - u64("punishCoinAmount"), - u64("orderbookToInitTime"), - u128("swapBaseInAmount"), - u128("swapQuoteOutAmount"), - u128("swapQuoteInAmount"), - u128("swapBaseOutAmount"), - u64("swapQuote2BaseFee"), - u64("swapBase2QuoteFee"), - - publicKey("baseVault"), - publicKey("quoteVault"), - publicKey("baseMint"), - publicKey("quoteMint"), - publicKey("lpMint"), - - publicKey("modelDataAccount"), - publicKey("openOrders"), - publicKey("marketId"), - publicKey("marketProgramId"), - publicKey("targetOrders"), - publicKey("owner"), - seq(u64("padding"), 64, "padding"), -]) +const { parseLido, parseLidoValidatorList } = require('./layouts/lido') +const { RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, } = require('./layouts/raydium-layout') +const { INVESTIN_FUND_DATA, } = require('./layouts/investin-layout') +const { MARKET_STATE_LAYOUT_V3, } = require('./layouts/openbook-layout') +const { ReserveLayout, ReserveLayoutLarix, MintLayout, AccountLayout, TokenSwapLayout, } = require('./layouts/mixed-layout') // console.log(RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM.span, 'RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM') diff --git a/projects/helper/utils/solana/layouts/investin-layout.js b/projects/helper/utils/solana/layouts/investin-layout.js new file mode 100644 index 0000000000..f3ad39e81c --- /dev/null +++ b/projects/helper/utils/solana/layouts/investin-layout.js @@ -0,0 +1,129 @@ +const { + struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, BufferLayout, +} = require('./layout-base') + + +function U64F64(property = "u64F64") { + + const layout = BufferLayout.blob(16, property); + + const _decode = layout.decode.bind(layout); + const _encode = layout.encode.bind(layout); + + layout.decode = (buffer, offset) => { + const raw = new BN(_decode(buffer, offset), 10, 'le'); + + return raw / Math.pow(2, 64); + }; + + layout.encode = (key, buffer, offset) => + _encode(key.toBuffer(), buffer, offset); + + return layout; +} + +const INVESTIN_FUND_DATA = struct([ + u8('is_initialized'), + u8('number_of_active_investments'), + u8('no_of_investments'), + u8('signer_nonce'), + u8('no_of_margin_positions'), + u8('no_of_assets'), + u16('position_count'), + + u8('version'), + u8('is_private'), + u16('fund_v3_index'), + seq(u8(), 4, 'padding'), + + u64('min_amount'), + U64F64('min_return'), + U64F64('performance_fee_percentage'), + U64F64('total_amount'), + U64F64('prev_performance'), + + u64('amount_in_router'), + U64F64('performance_fee'), + publicKey('manager_account'), + publicKey('fund_pda'), + seq( + struct([ + u8('is_active'), + seq(u8(), 3, 'index'), + u8('mux'), + u8('is_on_mango'), + seq(u8(), 2, 'padding'), + u64('balance'), + u64('debt'), + publicKey('vault') + ]), + 8, 'tokens' + ), + seq(publicKey(), 10, 'investors'), + + struct([ + publicKey('mango_account'), + seq(u8(), 3, 'perp_markets'), + u8('padding'), + u8('deposit_index'), + u8('markets_active'), + u8('deposits_active'), + u8('xpadding'), + seq(u64(), 2, 'investor_debts'), + seq(u8('padding'), 24), + ], 'mango_positions'), + + + struct([ + u8('is_active'), + u8('is_split'), + u8('hop'), + u8('count'), + u8('token_in_slot'), + u8('token_out_slot'), + seq(u8('padding'), 2), + + publicKey('token_in'), + publicKey('token_out'), + u64('amount_in'), + u64('min_amount_out'), + ], 'guard'), + + seq( + struct([ + u64('price'), + u64('max_base_quantity'), + u64('max_quote_quantity'), + u64('client_order_id'), + u64('expiry_timestamp'), + u8('is_repost_processing'), + u8('perp_market_id'), + u8('side'), + u8('reduce_only'), + u8('limit'), + seq(u8(), 3, 'padding'), + ]), + 2, 'limit_orders' + ), + + struct([ + u64('last_updated'), + publicKey('volt_vault_id'), + u64('total_value_in_ul'), + u64('fc_token_balance'), + u64('ul_token_balance'), + u64('fc_token_debt'), + u64('ul_debt'), + u8('ul_token_slot'), + u8('is_active'), + seq(u8('padding'), 6), + ], 'friktion_vault'), + + seq(u8(), 1864, 'migration_additonal_padding'), +]) + + +module.exports = { + INVESTIN_FUND_DATA, +} + diff --git a/projects/helper/utils/solana/layouts/layout-base.js b/projects/helper/utils/solana/layouts/layout-base.js new file mode 100644 index 0000000000..cc1f069786 --- /dev/null +++ b/projects/helper/utils/solana/layouts/layout-base.js @@ -0,0 +1,95 @@ + +const BufferLayout = require("buffer-layout"); +const { PublicKey } = require("@solana/web3.js"); +const BN = require("bn.js"); +const { struct, s32, u8, u16, seq, blob, Layout, bits, u32, } = BufferLayout + +const publicKey = (property = "publicKey") => { + const publicKeyLayout = BufferLayout.blob(32, property); + + const _decode = publicKeyLayout.decode.bind(publicKeyLayout); + const _encode = publicKeyLayout.encode.bind(publicKeyLayout); + + publicKeyLayout.decode = (buffer, offset) => { + const data = _decode(buffer, offset); + return new PublicKey(data); + }; + + publicKeyLayout.encode = (key, buffer, offset) => + _encode(key.toBuffer(), buffer, offset); + + return publicKeyLayout; +}; + +/** + * Layout for a 64bit unsigned value + */ +const uint64 = (property = "uint64") => { + const layout = BufferLayout.blob(8, property); + + const _decode = layout.decode.bind(layout); + const _encode = layout.encode.bind(layout); + + layout.decode = (buffer, offset) => { + const data = _decode(buffer, offset); + return new BN( + [...data] + .reverse() + .map((i) => `00${i.toString(16)}`.slice(-2)) + .join(""), + 16 + ); + }; + + layout.encode = (num, buffer, offset) => { + const a = num.toArray().reverse(); + let b = Buffer.from(a); + if (b.length !== 8) { + const zeroPad = Buffer.alloc(8); + b.copy(zeroPad); + b = zeroPad; + } + return _encode(b, buffer, offset); + }; + + return layout; +}; + +const u64 = uint64 + +const uint128 = (property = "uint128") => { + const layout = BufferLayout.blob(16, property); + + const _decode = layout.decode.bind(layout); + const _encode = layout.encode.bind(layout); + + layout.decode = (buffer, offset) => { + const data = _decode(buffer, offset); + return new BN( + [...data] + .reverse() + .map((i) => `00${i.toString(16)}`.slice(-2)) + .join(""), + 16 + ); + }; + + layout.encode = (num, buffer, offset) => { + const a = num.toArray().reverse(); + let b = Buffer.from(a); + if (b.length !== 16) { + const zeroPad = Buffer.alloc(16); + b.copy(zeroPad); + b = zeroPad; + } + + return _encode(b, buffer, offset); + }; + + return layout; +}; +const u128 = uint128 + +module.exports = { + struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, BufferLayout, +} \ No newline at end of file diff --git a/projects/helper/utils/solana/lido.js b/projects/helper/utils/solana/layouts/lido.js similarity index 100% rename from projects/helper/utils/solana/lido.js rename to projects/helper/utils/solana/layouts/lido.js diff --git a/projects/helper/utils/solana/layouts/mixed-layout.js b/projects/helper/utils/solana/layouts/mixed-layout.js new file mode 100644 index 0000000000..92b0b6f71c --- /dev/null +++ b/projects/helper/utils/solana/layouts/mixed-layout.js @@ -0,0 +1,201 @@ +const { + struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, BufferLayout, +} = require('./layout-base') + +const LastUpdateLayout = BufferLayout.struct( + [uint64("slot"), BufferLayout.u8("stale")], + "lastUpdate" +); + +const ReserveLayout = BufferLayout.struct([ + BufferLayout.u8("version"), + + LastUpdateLayout, + + publicKey("lendingMarket"), + + BufferLayout.struct( + [ + publicKey("mintPubkey"), + BufferLayout.u8("mintDecimals"), + publicKey("supplyPubkey"), + // @FIXME: oracle option + // TODO: replace u32 option with generic equivalent + // BufferLayout.u32('oracleOption'), + publicKey("pythOracle"), + publicKey("switchboardOracle"), + uint64("availableAmount"), + uint128("borrowedAmountWads"), + uint128("cumulativeBorrowRateWads"), + uint128("marketPrice"), + ], + "liquidity" + ), + + BufferLayout.struct( + [ + publicKey("mintPubkey"), + uint64("mintTotalSupply"), + publicKey("supplyPubkey"), + ], + "collateral" + ), + + BufferLayout.struct( + [ + BufferLayout.u8("optimalUtilizationRate"), + BufferLayout.u8("loanToValueRatio"), + BufferLayout.u8("liquidationBonus"), + BufferLayout.u8("liquidationThreshold"), + BufferLayout.u8("minBorrowRate"), + BufferLayout.u8("optimalBorrowRate"), + BufferLayout.u8("maxBorrowRate"), + BufferLayout.struct( + [ + uint64("borrowFeeWad"), + uint64("flashLoanFeeWad"), + BufferLayout.u8("hostFeePercentage"), + ], + "fees" + ), + uint64("depositLimit"), + uint64("borrowLimit"), + publicKey("feeReceiver"), + ], + "config" + ), + + BufferLayout.blob(256, "padding"), +]); + +const ReserveLayoutLarix = BufferLayout.struct( + [ + BufferLayout.u8('version'), + + LastUpdateLayout, + + publicKey('lendingMarket'), + + BufferLayout.struct( + [ + publicKey('mintPubkey'), + BufferLayout.u8('mintDecimals'), + publicKey('supplyPubkey'), + publicKey('feeReceiver'), + BufferLayout.u8("usePythOracle"), + publicKey('params_1'), + publicKey("params_2"), + uint64('availableAmount'), + uint128('borrowedAmountWads'), + uint128('cumulativeBorrowRateWads'), + uint128('marketPrice'), + uint128('ownerUnclaimed'), + ], + 'liquidity', + ), + + BufferLayout.struct( + [ + publicKey('mintPubkey'), + uint64('mintTotalSupply'), + publicKey('supplyPubkey'), + ], + 'collateral' + ), + + BufferLayout.struct( + [ + BufferLayout.u8('optimalUtilizationRate'), + BufferLayout.u8('loanToValueRatio'), + BufferLayout.u8('liquidationBonus'), + BufferLayout.u8('liquidationThreshold'), + BufferLayout.u8('minBorrowRate'), + BufferLayout.u8('optimalBorrowRate'), + BufferLayout.u8('maxBorrowRate'), + BufferLayout.struct( + // TODO: fix flash loan fee wad + [ + uint64('borrowFeeWad'), + uint64('borrowInterestFeeWad'), + uint64("flashLoanFeeWad"), + BufferLayout.u8('hostFeePercentage'), + BufferLayout.u8('hostFeeReceiverCount'), + BufferLayout.blob(32 * 5, 'hostFeeReceivers'), + ], + 'fees', + ), + BufferLayout.u8("depositPaused"), + BufferLayout.u8("borrowPaused"), + BufferLayout.u8("liquidationPaused"), + ], + 'config' + ), + BufferLayout.struct( + [ + publicKey("unCollSupply"), + uint128('lTokenMiningIndex'), + uint128('borrowMiningIndex'), + uint64("totalMiningSpeed"), + uint64("kinkUtilRate"), + ], + 'bonus' + ), + BufferLayout.u8("reentry"), + uint64("depositLimit"), + BufferLayout.u8("isLP"), + BufferLayout.blob(239, 'padding'), + ], +); + +const MintLayout = BufferLayout.struct([ + BufferLayout.u32('mintAuthorityOption'), + publicKey("mintAuthority"), + uint64('supply'), + BufferLayout.u8("decimals"), + BufferLayout.u8("isInitialized"), + BufferLayout.u32("freezeAuthorityOption"), + publicKey("freezeAuthority"), +]); + +const AccountLayout = BufferLayout.struct([ + publicKey('mint'), + publicKey('owner'), + uint64('amount'), + BufferLayout.u32('delegateOption'), + publicKey('delegate'), + BufferLayout.u8('state'), + BufferLayout.u32('isNativeOption'), + uint64('isNative'), + uint64('delegatedAmount'), + BufferLayout.u32('closeAuthorityOption'), + publicKey('closeAuthority'), +]); + +const TokenSwapLayout = BufferLayout.struct([ + BufferLayout.u8("version"), + BufferLayout.u8("isInitialized"), + BufferLayout.u8("bumpSeed"), + publicKey("tokenProgramId"), + publicKey("tokenAccountA"), + publicKey("tokenAccountB"), + publicKey("tokenPool"), + publicKey("mintA"), + publicKey("mintB"), + publicKey("feeAccount"), + BufferLayout.blob(8, "tradeFeeNumerator"), + BufferLayout.blob(8, "tradeFeeDenominator"), + BufferLayout.blob(8, "ownerTradeFeeNumerator"), + BufferLayout.blob(8, "ownerTradeFeeDenominator"), + BufferLayout.blob(8, "ownerWithdrawFeeNumerator"), + BufferLayout.blob(8, "ownerWithdrawFeeDenominator"), + BufferLayout.blob(8, "hostFeeNumerator"), + BufferLayout.blob(8, "hostFeeDenominator"), + BufferLayout.u8("curveType"), + publicKey("curveParameters"), +]) + + +module.exports = { + ReserveLayout, ReserveLayoutLarix, MintLayout, AccountLayout, TokenSwapLayout, +} + diff --git a/projects/helper/utils/solana/layouts/openbook-layout.js b/projects/helper/utils/solana/layouts/openbook-layout.js new file mode 100644 index 0000000000..13295c6a4e --- /dev/null +++ b/projects/helper/utils/solana/layouts/openbook-layout.js @@ -0,0 +1,96 @@ +const { + struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, +} = require('./layout-base') + + +class WideBits extends Layout { + constructor(property) { + super(8, property); + this._lower = bits(u32(), false); + this._upper = bits(u32(), false); + } + + addBoolean(property) { + if (this._lower.fields.length < 32) { + this._lower.addBoolean(property); + } else { + this._upper.addBoolean(property); + } + } + + decode(b, offset = 0) { + const lowerDecoded = this._lower.decode(b, offset); + const upperDecoded = this._upper.decode(b, offset + this._lower.span); + return { ...lowerDecoded, ...upperDecoded }; + } + + encode(src, b, offset = 0) { + return ( + this._lower.encode(src, b, offset) + + this._upper.encode(src, b, offset + this._lower.span) + ); + } +} + +const ACCOUNT_FLAGS_LAYOUT = new WideBits(); +ACCOUNT_FLAGS_LAYOUT.addBoolean('initialized'); +ACCOUNT_FLAGS_LAYOUT.addBoolean('market'); +ACCOUNT_FLAGS_LAYOUT.addBoolean('openOrders'); +ACCOUNT_FLAGS_LAYOUT.addBoolean('requestQueue'); +ACCOUNT_FLAGS_LAYOUT.addBoolean('eventQueue'); +ACCOUNT_FLAGS_LAYOUT.addBoolean('bids'); +ACCOUNT_FLAGS_LAYOUT.addBoolean('asks'); + +function accountFlagsLayout(property = 'accountFlags') { + return ACCOUNT_FLAGS_LAYOUT.replicate(property); +} + +const MARKET_STATE_LAYOUT_V3 = struct([ + blob(5), + + accountFlagsLayout('accountFlags'), + + publicKey('ownAddress'), + + u64('vaultSignerNonce'), + + publicKey('baseMint'), + publicKey('quoteMint'), + + publicKey('baseVault'), + u64('baseDepositsTotal'), + u64('baseFeesAccrued'), + + publicKey('quoteVault'), + u64('quoteDepositsTotal'), + u64('quoteFeesAccrued'), + + u64('quoteDustThreshold'), + + publicKey('requestQueue'), + publicKey('eventQueue'), + + publicKey('bids'), + publicKey('asks'), + + u64('baseLotSize'), + u64('quoteLotSize'), + + u64('feeRateBps'), + + u64('referrerRebatesAccrued'), + + publicKey('authority'), + publicKey('pruneAuthority'), + publicKey('consumeEventsAuthority'), + + blob(992), + + blob(7), +]); + + +module.exports = { + MARKET_STATE_LAYOUT_V3, +} + diff --git a/projects/helper/utils/solana/layouts/raydium-layout.js b/projects/helper/utils/solana/layouts/raydium-layout.js new file mode 100644 index 0000000000..07190779ec --- /dev/null +++ b/projects/helper/utils/solana/layouts/raydium-layout.js @@ -0,0 +1,187 @@ +const { + struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, +} = require('./layout-base') + +const RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4 = struct([ + u64("status"), + u64("nonce"), + u64("maxOrder"), + u64("depth"), + u64("baseDecimal"), + u64("quoteDecimal"), + u64("state"), + u64("resetFlag"), + u64("minSize"), + u64("volMaxCutRatio"), + u64("amountWaveRatio"), + u64("baseLotSize"), + u64("quoteLotSize"), + u64("minPriceMultiplier"), + u64("maxPriceMultiplier"), + u64("systemDecimalValue"), + u64("minSeparateNumerator"), + u64("minSeparateDenominator"), + u64("tradeFeeNumerator"), + u64("tradeFeeDenominator"), + u64("pnlNumerator"), + u64("pnlDenominator"), + u64("swapFeeNumerator"), + u64("swapFeeDenominator"), + u64("baseNeedTakePnl"), + u64("quoteNeedTakePnl"), + u64("quoteTotalPnl"), + u64("baseTotalPnl"), + u128("quoteTotalDeposited"), + u128("baseTotalDeposited"), + u128("swapBaseInAmount"), + u128("swapQuoteOutAmount"), + u64("swapBase2QuoteFee"), + u128("swapQuoteInAmount"), + u128("swapBaseOutAmount"), + u64("swapQuote2BaseFee"), + // amm vault + publicKey("baseVault"), + publicKey("quoteVault"), + // mint + publicKey("baseMint"), + publicKey("quoteMint"), + publicKey("lpMint"), + // market + publicKey("openOrders"), + publicKey("marketId"), + publicKey("marketProgramId"), + publicKey("targetOrders"), + publicKey("withdrawQueue"), + publicKey("lpVault"), + publicKey("owner"), + // true circulating supply without lock up + u64("lpReserve"), + seq(u64(), 3, "padding"), +]) + +const RAYDIUM_REWARD_INFO = struct([ + u8("rewardState"), + u64("openTime"), + u64("endTime"), + u64("lastUpdateTime"), + u128("emissionsPerSecondX64"), + u64("rewardTotalEmissioned"), + u64("rewardClaimed"), + publicKey("tokenMint"), + publicKey("tokenVault"), + publicKey("creator"), + u128("rewardGrowthGlobalX64"), +]) + +const RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM = struct([ + blob(8), + u8("bump"), + publicKey("ammConfig"), + publicKey("creator"), + publicKey("mintA"), + publicKey("mintB"), + publicKey("vaultA"), + publicKey("vaultB"), + publicKey("observationId"), + u8("mintDecimalsA"), + u8("mintDecimalsB"), + u16("tickSpacing"), + u128("liquidity"), + u128("sqrtPriceX64"), + s32("tickCurrent"), + u16("observationIndex"), + u16("observationUpdateDuration"), + u128("feeGrowthGlobalX64A"), + u128("feeGrowthGlobalX64B"), + u64("protocolFeesTokenA"), + u64("protocolFeesTokenB"), + + u128("swapInAmountTokenA"), + u128("swapOutAmountTokenB"), + u128("swapInAmountTokenB"), + u128("swapOutAmountTokenA"), + + u8("status"), + + seq(u8(), 7, ""), + + seq(RAYDIUM_REWARD_INFO, 3, "rewardInfos"), + seq(u64(), 16, 'tickArrayBitmap'), + + u64("totalFeesTokenA"), + u64("totalFeesClaimedTokenA"), + u64("totalFeesTokenB"), + u64("totalFeesClaimedTokenB"), + + u64("fundFeesTokenA"), + u64("fundFeesTokenB"), + + u64("startTime"), + + seq(u64(), 15 * 4 - 3, "padding"), +]) + +const RAYDIUM_STABLE_STATE_LAYOUT_V1 = struct([ + u64("accountType"), + u64("status"), + u64("nonce"), + u64("maxOrder"), + u64("depth"), + u64("baseDecimal"), + u64("quoteDecimal"), + u64("state"), + u64("resetFlag"), + u64("minSize"), + u64("volMaxCutRatio"), + u64("amountWaveRatio"), + u64("baseLotSize"), + u64("quoteLotSize"), + u64("minPriceMultiplier"), + u64("maxPriceMultiplier"), + u64("systemDecimalsValue"), + u64("abortTradeFactor"), + u64("priceTickMultiplier"), + u64("priceTick"), + // Fees + u64("minSeparateNumerator"), + u64("minSeparateDenominator"), + u64("tradeFeeNumerator"), + u64("tradeFeeDenominator"), + u64("pnlNumerator"), + u64("pnlDenominator"), + u64("swapFeeNumerator"), + u64("swapFeeDenominator"), + // OutPutData + u64("baseNeedTakePnl"), + u64("quoteNeedTakePnl"), + u64("quoteTotalPnl"), + u64("baseTotalPnl"), + u64("poolOpenTime"), + u64("punishPcAmount"), + u64("punishCoinAmount"), + u64("orderbookToInitTime"), + u128("swapBaseInAmount"), + u128("swapQuoteOutAmount"), + u128("swapQuoteInAmount"), + u128("swapBaseOutAmount"), + u64("swapQuote2BaseFee"), + u64("swapBase2QuoteFee"), + + publicKey("baseVault"), + publicKey("quoteVault"), + publicKey("baseMint"), + publicKey("quoteMint"), + publicKey("lpMint"), + + publicKey("modelDataAccount"), + publicKey("openOrders"), + publicKey("marketId"), + publicKey("marketProgramId"), + publicKey("targetOrders"), + publicKey("owner"), + seq(u64("padding"), 64, "padding"), +]) + +module.exports = { + RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, +} \ No newline at end of file diff --git a/projects/pulsex/index.js b/projects/pulsex/index.js index 7addbd64a3..c2a330054c 100644 --- a/projects/pulsex/index.js +++ b/projects/pulsex/index.js @@ -4,7 +4,7 @@ module.exports = { misrepresentedTokens: true, methodology: "Factory address (0x1715a3E4A142d8b698131108995174F37aEBA10D) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", - pulse: { - tvl: getUniTVL({ factory: '0x1715a3E4A142d8b698131108995174F37aEBA10D', chain: 'pulse', useDefaultCoreAssets: true }), + pulse: { + tvl: getUniTVL({ factory: '0x1715a3E4A142d8b698131108995174F37aEBA10D', useDefaultCoreAssets: true }), }, }; // node test.js projects/pulsex/index.js \ No newline at end of file diff --git a/projects/raydium.js b/projects/raydium.js index 17cc3a2888..3cddebde1a 100644 --- a/projects/raydium.js +++ b/projects/raydium.js @@ -18,7 +18,6 @@ async function ammStableTvl() { return sumTokens2({ tokenAccounts }) } - async function tvlCLMM() { const connection = getConnection() const accounts = await connection.getProgramAccounts(new PublicKey(CLMM), { From dc5fedb3a1617b79e7b17e1f24be7d8570f49737 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 16 May 2023 23:02:38 +0100 Subject: [PATCH 0415/1354] add LP tvl --- projects/vyfi/index.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/projects/vyfi/index.js b/projects/vyfi/index.js index 535b92cb48..68aac2f29a 100644 --- a/projects/vyfi/index.js +++ b/projects/vyfi/index.js @@ -3,17 +3,21 @@ const { fetchURL } = require("../helper/utils"); async function getStakingData() { const tvl = await fetchURL("https://api.vyfi.io/analytics"); - if (tvl.data.totalValueLocked <= 0) { - throw new Error("vyfi tvl is below 0"); - } + return toUSDTBalances(tvl.data.totalValueLocked); } +async function getLPData() { + const tvl = await fetchURL("https://api.vyfi.io/analytics"); + + return toUSDTBalances(tvl.data.lp.totalLpTvl); +} + module.exports = { misrepresentedTokens: true, timetravel: false, cardano: { - tvl: () => ({}), + tvl:getLPData, staking: getStakingData, }, }; From 5755746e1850827ebe91d25b7fec21673f2274f8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 00:13:24 +0200 Subject: [PATCH 0416/1354] Update index.js --- projects/liqwid/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index 38766f9c60..43c353c02a 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -28,13 +28,12 @@ const scriptAddresses = [ "addr1wyw3ap36lnepstpjadwg8cg73llvmju4y94kmfld23lkzjggq4hyj", "addr1wxrxa3ucywn3lqpkzlyucak0a7aavkudh49fqt06yc05sws4l4zs2", "addr1wy6e9jukn8fpx7kesrpmapsnmz0cgq6lnskuff0xc0junggv6gd8l", - // Staked LQ - "addr1w8arvq7j9qlrmt0wpdvpp7h4jr4fmfk8l653p9t907v2nsss7w7r4", ]; module.exports = { cardano: { tvl: sumTokensExport({ scripts: scriptAddresses, }), + staking: sumTokensExport({ scripts: ["addr1w8arvq7j9qlrmt0wpdvpp7h4jr4fmfk8l653p9t907v2nsss7w7r4"], }), methodology: 'Adds up the Ada in the 16 action tokens and batch final token.' } }; From f40b1f70c5f07e9631cc12413a27dabe460f2ae6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 00:39:55 +0200 Subject: [PATCH 0417/1354] vendor-v2: code refactor --- projects/vendor-finance-v2/index.js | 47 +++++++++-------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/projects/vendor-finance-v2/index.js b/projects/vendor-finance-v2/index.js index b5d06d3237..798c0dc417 100644 --- a/projects/vendor-finance-v2/index.js +++ b/projects/vendor-finance-v2/index.js @@ -1,6 +1,10 @@ -const sdk = require('@defillama/sdk') const { getLogs } = require("../helper/cache/getLogs"); +const abi = { + lendBalance: "function lendBalance() view returns (uint256)", + colBalance: "function colBalance() view returns (uint256)" +} + async function tvl(timestamp, block, chainBlocks, { api }) { const { factory, fromBlock } = config[api.chain] const logs = await getLogs({ @@ -8,54 +12,30 @@ async function tvl(timestamp, block, chainBlocks, { api }) { target: factory, topics: ['0xee5c84cc965f1ed0b60a1a4a5a02cf02830b6262b89a9063fda05b63ce8b2f8b'], fromBlock, + onlyArgs: true, eventAbi: 'event DeployPool(address poolAddress,address deployer,address implementation,(address feesManager,bytes32 strategy,address oracle,address treasury,address posTracker),(uint8 poolType,address owner,uint48 expiry,address colToken,uint48 protocolFee,address lendToken,uint48 ltv,uint48 pauseTime,uint256 lendRatio,address[] allowlist,bytes32 feeRatesAndType))' }) - block = chainBlocks.arbitrum; - const balances = {}; - const transform = addr => `${api.chain}:${addr}` - - const abi = { - lendBalance: "function lendBalance() view returns (uint256)", - colBalance: "function colBalance() view returns (uint256)" - } - // lend assets may be stored in AAVE if the lender chooses so we can't // rely on balanceOf calls to get lend balances. Each pool has a // lendBalance and colBalance method that returns the token balances // that are in the pool and are currently in AAVE that belong to the pool // get lend balances returned from the lendBalance method - const { output: lendOutput } = await sdk.api.abi.multiCall({ - abi: abi.lendBalance, - calls: logs.map(log => ({ - target: log.args[0], - })), - block, - chain: api.chain - }); + const lendOutput = await api.multiCall({ abi: abi.lendBalance, calls: logs.map(i => i.poolAddress), }); // get col balances returned from the colBalance method - const { output: colOutput } = await sdk.api.abi.multiCall({ - abi: abi.colBalance, - calls: logs.map(log => ({ - target: log.args[0], - })), - block, - chain: api.chain - }); + const colOutput = await api.multiCall({ abi: abi.colBalance, calls: logs.map(i => i.poolAddress), }); + console.log(lendOutput, colOutput) lendOutput.forEach((res, i) => { - if (!res.success) return; // extract collateral and lend tokens - const lendToken = logs[i].args[4].lendToken; - const colToken = logs[i].args[4].colToken; + const lendToken = logs[i][4].lendToken; + const colToken = logs[i][4].colToken; // add collateral and lend token balances returned from contract calls - sdk.util.sumSingleBalance(balances, transform(lendToken), res.output); - sdk.util.sumSingleBalance(balances, transform(colToken), colOutput[i].output); + api.add(lendToken, res) + api.add(colToken, colOutput[i]) }); - - return balances; } const config = { @@ -64,6 +44,7 @@ const config = { } module.exports = { + doublecounted: true, methodology: 'The sum of the balance of all listed collateral and lend tokens in all deployed pools.', start: 88774917, }; From bd03cea285caf9f1b9751940ac1451d07fccad05 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 00:42:09 +0200 Subject: [PATCH 0418/1354] bugfix --- projects/helper/coreAssets.json | 4 ++++ projects/helper/tokenMapping.js | 6 +++++- projects/helper/utils/solana/layouts/investin-layout.js | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 161fc6f777..4b73feed13 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1264,5 +1264,9 @@ }, "grove": { "WGRV": "0xE85f139488c689038028a3EB8fC38dcC29D4C340" + }, + "pulse": { + "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", + "DAI": "0xefd766ccb38eaf1dfd701853bfce31359239f305" } } \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 8abea04fd5..0f26ee11fe 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -29,7 +29,7 @@ const distressedAssts = new Set(Object.values({ const transformTokens = { ethereum: { '0xe0b469cb3eda0ece9e425cfeda4df986a55ea9f8': ADDRESSES.ethereum.WETH - } + }, // Sample Code // cronos: { // "0x065de42e28e42d90c2052a1b49e7f83806af0e1f": "0x123", // CRK token is mispriced @@ -50,6 +50,10 @@ const fixBalancesTokens = { // [ADDRESSES.arbitrum_nova.USDT]: { coingeckoId: "tether", decimals: 6 }, // [ADDRESSES.arbitrum_nova.USDC]: { coingeckoId: "usd-coin", decimals: 6 }, // }, + pulse: { + '0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c': { coingeckoId: ADDRESSES.ethereum.WETH, decimals: 0, }, + '0xefd766ccb38eaf1dfd701853bfce31359239f305': { coingeckoId: ADDRESSES.ethereum.DAI, decimals: 0, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/helper/utils/solana/layouts/investin-layout.js b/projects/helper/utils/solana/layouts/investin-layout.js index f3ad39e81c..3e8fe2799c 100644 --- a/projects/helper/utils/solana/layouts/investin-layout.js +++ b/projects/helper/utils/solana/layouts/investin-layout.js @@ -1,7 +1,7 @@ const { struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, BufferLayout, } = require('./layout-base') - +const BN = require("bn.js"); function U64F64(property = "u64F64") { From b0d2bfc81654c058a8bc909b229060a7a7862316 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 01:35:58 +0200 Subject: [PATCH 0419/1354] fix broken adapters --- projects/anchor/index.js | 2 +- projects/citrus/index.js | 175 +++++++++++++++++++++++++++- projects/marginfi/idl.js | 245 +++++++++++++++++++++++++-------------- 3 files changed, 334 insertions(+), 88 deletions(-) diff --git a/projects/anchor/index.js b/projects/anchor/index.js index 19b64dbc82..594425eb7a 100644 --- a/projects/anchor/index.js +++ b/projects/anchor/index.js @@ -36,7 +36,7 @@ module.exports = { // sumSingleBalance(balances, 'uusd', uusd,) return balances }, - borrowed + // borrowed }, avax: { tvl: avalancheTVL diff --git a/projects/citrus/index.js b/projects/citrus/index.js index f688d5fda2..66c4689d55 100644 --- a/projects/citrus/index.js +++ b/projects/citrus/index.js @@ -23,7 +23,7 @@ async function getStats() { const programId = 'JCFRaPv7852ESRwJJGRy2mysUMydXZgVVhrMLmExvmVp'; const provider = getProvider(); // const collectionsById = await getCollections(); - const idl = await getConfig('citrus-idl', 'https://gist.githubusercontent.com/FoxyDev42/5f23cd03eab33e0d73f6f6227912451e/raw/03e68f7543dc4dd399d7b61e15881c1a6792eb4a/citrus-account.json'); + // const idl = await getConfig('citrus-idl', 'https://gist.githubusercontent.com/FoxyDev42/5f23cd03eab33e0d73f6f6227912451e/raw/03e68f7543dc4dd399d7b61e15881c1a6792eb4a/citrus-account.json'); const program = new Program(idl, programId, provider) const loans = await program.account.loan.all() const activeLoans = loans.filter(loan => Object.keys(loan.account.status)[0] === 'active'); @@ -53,4 +53,177 @@ module.exports = { tvl, borrowed, } +}; + +const idl = { + version: '0.1.0', + name: 'citrus', + instructions: [], + accounts: [ + { + name: 'loan', + type: { + kind: 'struct', + fields: [ + { + name: 'bump', + type: 'u8' + }, + { + name: 'lender', + type: 'publicKey' + }, + { + name: 'borrower', + type: 'publicKey' + }, + { + name: 'mint', + type: 'publicKey' + }, + { + name: 'collectionConfig', + type: 'publicKey' + }, + { + name: 'status', + type: { + defined: 'LoanStatus' + } + }, + { + name: 'loanTerms', + type: { + defined: 'LoanTerms' + } + }, + { + name: 'creationTime', + type: 'i64' + }, + { + name: 'startTime', + type: 'i64' + }, + { + name: 'endTime', + type: 'i64' + }, + { + name: 'fox', + type: 'bool' + }, + { + name: 'mortgage', + type: 'bool' + }, + { + name: 'private', + type: 'bool' + }, + { + name: 'offerType', + type: { + defined: 'OfferType' + } + }, + { + name: 'listingPrice', + type: 'u64' + }, + { + name: 'ltvTerms', + type: { + option: { + defined: 'LtvTerms' + } + } + } + ] + } + } + ], + types: [ + { + name: 'LoanTerms', + type: { + kind: 'struct', + fields: [ + { + name: 'apyBps', + type: 'u64' + }, + { + name: 'duration', + type: 'u64' + }, + { + name: 'principal', + type: 'u64' + } + ] + } + }, + { + name: 'LtvTerms', + type: { + kind: 'struct', + fields: [ + { + name: 'ltvBps', + type: 'u64' + }, + { + name: 'maxOffer', + type: 'u64' + } + ] + } + }, + { + name: 'LoanStatus', + type: { + kind: 'enum', + variants: [ + { + name: 'WaitingForBorrower' + }, + { + name: 'WaitingForLender' + }, + { + name: 'Active' + }, + { + name: 'Repaid' + }, + { + name: 'Defaulted' + }, + { + name: 'OnSale' + } + ] + } + }, + { + name: 'OfferType', + type: { + kind: 'enum', + variants: [ + { + name: 'Global' + }, + { + name: 'Mortgage' + }, + { + name: 'Borrow' + } + ] + } + } + ], + events: [], + errors: [] }; \ No newline at end of file diff --git a/projects/marginfi/idl.js b/projects/marginfi/idl.js index dde4addd74..1e3c755527 100644 --- a/projects/marginfi/idl.js +++ b/projects/marginfi/idl.js @@ -3,67 +3,6 @@ module.exports = { name: 'marginfi', instructions: [], accounts: [ - { - name: 'MarginfiAccount', - type: { - kind: 'struct', - fields: [ - { - name: 'group', - type: 'publicKey' - }, - { - name: 'authority', - type: 'publicKey' - }, - { - name: 'lendingAccount', - type: { - defined: 'LendingAccount' - } - }, - { - name: 'padding', - type: { - array: [ - 'u64', - 64 - ] - } - } - ] - } - }, - { - name: 'marginfiGroup', - type: { - kind: 'struct', - fields: [ - { - name: 'admin', - type: 'publicKey' - }, - { - name: 'padding0', - type: { - array: [ - 'u128', - 32 - ] - } - }, - { - name: 'padding1', - type: { - array: [ - 'u128', - 32 - ] - } - } - ] - } - }, { name: 'bank', type: { @@ -190,12 +129,41 @@ module.exports = { defined: 'BankConfig' } }, + { + name: 'emissionsFlags', + docs: [ + 'Emissions Config Flags', + '', + '- EMISSIONS_FLAG_BORROW_ACTIVE: 1', + '- EMISSIONS_FLAG_LENDING_ACTIVE: 2', + '' + ], + type: 'u64' + }, + { + name: 'emissionsRate', + docs: [ + 'Emissions APR.', + 'Number of emitted tokens (emissions_mint) per 1M tokens (bank mint) (native amount) per 1 YEAR.' + ], + type: 'u64' + }, + { + name: 'emissionsRemaining', + type: { + defined: 'WrappedI80F48' + } + }, + { + name: 'emissionsMint', + type: 'publicKey' + }, { name: 'padding0', type: { array: [ 'u128', - 32 + 28 ] } }, @@ -275,12 +243,22 @@ module.exports = { defined: 'WrappedI80F48' } }, + { + name: 'emissionsOutstanding', + type: { + defined: 'WrappedI80F48' + } + }, + { + name: 'lastUpdate', + type: 'u64' + }, { name: 'padding', type: { array: [ 'u64', - 4 + 1 ] } } @@ -360,6 +338,70 @@ module.exports = { ] } }, + { + name: 'InterestRateConfigOpt', + type: { + kind: 'struct', + fields: [ + { + name: 'optimalUtilizationRate', + type: { + option: { + defined: 'WrappedI80F48' + } + } + }, + { + name: 'plateauInterestRate', + type: { + option: { + defined: 'WrappedI80F48' + } + } + }, + { + name: 'maxInterestRate', + type: { + option: { + defined: 'WrappedI80F48' + } + } + }, + { + name: 'insuranceFeeFixedApr', + type: { + option: { + defined: 'WrappedI80F48' + } + } + }, + { + name: 'insuranceIrFee', + type: { + option: { + defined: 'WrappedI80F48' + } + } + }, + { + name: 'protocolFixedFeeApr', + type: { + option: { + defined: 'WrappedI80F48' + } + } + }, + { + name: 'protocolIrFee', + type: { + option: { + defined: 'WrappedI80F48' + } + } + } + ] + } + }, { name: 'BankConfig', docs: [ @@ -393,7 +435,7 @@ module.exports = { } }, { - name: 'maxCapacity', + name: 'depositLimit', type: 'u64' }, { @@ -410,9 +452,7 @@ module.exports = { }, { name: 'oracleSetup', - type: { - defined: 'OracleSetup' - } + type: 'u8' }, { name: 'oracleKeys', @@ -424,7 +464,7 @@ module.exports = { } }, { - name: 'ignore', + name: 'ignore1', type: { array: [ 'u8', @@ -432,12 +472,22 @@ module.exports = { ] } }, + { + name: 'borrowLimit', + type: 'u64' + }, + { + name: 'riskTier', + type: { + defined: 'RiskTier' + } + }, { name: 'padding', type: { array: [ - 'u128', - 4 + 'u8', + 55 ] } } @@ -494,7 +544,13 @@ module.exports = { } }, { - name: 'maxCapacity', + name: 'depositLimit', + type: { + option: 'u64' + } + }, + { + name: 'borrowLimit', type: { option: 'u64' } @@ -516,12 +572,19 @@ module.exports = { } }, { - name: 'ignore', + name: 'interestRateConfig', type: { - array: [ - 'u8', - 6 - ] + option: { + defined: 'InterestRateConfigOpt' + } + } + }, + { + name: 'riskTier', + type: { + option: { + defined: 'RiskTier' + } } } ] @@ -580,6 +643,9 @@ module.exports = { }, { name: 'BorrowOnly' + }, + { + name: 'BypassBorrowLimit' } ] } @@ -644,47 +710,54 @@ module.exports = { } }, { - name: 'OracleSetup', + name: 'RiskTier', type: { kind: 'enum', variants: [ { - name: 'None' + name: 'Collateral' }, { - name: 'Pyth' + name: 'Isolated' } ] } }, { - name: 'OracleKey', + name: 'BankVaultType', type: { kind: 'enum', variants: [ { - name: 'Pyth', + name: 'Liquidity' + }, + { + name: 'Insurance' + }, + { + name: 'Fee' } ] } }, { - name: 'BankVaultType', + name: 'OracleSetup', type: { kind: 'enum', variants: [ { - name: 'Liquidity' + name: 'None' }, { - name: 'Insurance' + name: 'PythEma' }, { - name: 'Fee' + name: 'SwitchboardV2' } ] } } ], - errors: [], + events: [], + errors: [] } \ No newline at end of file From a5b2346d7e0d5974cd88d4905ef34d6d1b417b96 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 17 May 2023 03:32:55 +0100 Subject: [PATCH 0420/1354] revert vyfi and add vyfi-dex --- projects/vyfi-dex/index.js | 17 +++++++++++++++++ projects/vyfi/index.js | 12 ++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 projects/vyfi-dex/index.js diff --git a/projects/vyfi-dex/index.js b/projects/vyfi-dex/index.js new file mode 100644 index 0000000000..a7b16259ec --- /dev/null +++ b/projects/vyfi-dex/index.js @@ -0,0 +1,17 @@ +const { toUSDTBalances } = require("../helper/balances"); +const { fetchURL } = require("../helper/utils"); + + +async function getLPData() { + const tvl = await fetchURL("https://api.vyfi.io/analytics"); + + return {cardano:tvl.data.lp.totalLpTvl}; +} + +module.exports = { + misrepresentedTokens: true, + timetravel: false, + cardano: { + tvl:getLPData, + }, +}; \ No newline at end of file diff --git a/projects/vyfi/index.js b/projects/vyfi/index.js index 68aac2f29a..535b92cb48 100644 --- a/projects/vyfi/index.js +++ b/projects/vyfi/index.js @@ -3,21 +3,17 @@ const { fetchURL } = require("../helper/utils"); async function getStakingData() { const tvl = await fetchURL("https://api.vyfi.io/analytics"); - + if (tvl.data.totalValueLocked <= 0) { + throw new Error("vyfi tvl is below 0"); + } return toUSDTBalances(tvl.data.totalValueLocked); } -async function getLPData() { - const tvl = await fetchURL("https://api.vyfi.io/analytics"); - - return toUSDTBalances(tvl.data.lp.totalLpTvl); -} - module.exports = { misrepresentedTokens: true, timetravel: false, cardano: { - tvl:getLPData, + tvl: () => ({}), staking: getStakingData, }, }; From cf297ee3e4d063d54d693ad6391aa215eec9177b Mon Sep 17 00:00:00 2001 From: dovishfinance <126103307+dovishfinance@users.noreply.github.com> Date: Tue, 16 May 2023 22:56:53 -0400 Subject: [PATCH 0421/1354] Create perp tvl tracker --- projects/shrike-perps/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/shrike-perps/index.js diff --git a/projects/shrike-perps/index.js b/projects/shrike-perps/index.js new file mode 100644 index 0000000000..46c9de0491 --- /dev/null +++ b/projects/shrike-perps/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + polygon_zkevm:{ + tvl: gmxExports({ vault: '0x3371195e36f45cBDc6cC0EF9e94d87AC8424621D', }) + }, +}; From 56c36ca45344528b3e784dfbe52843b8a54eea99 Mon Sep 17 00:00:00 2001 From: phiz Date: Wed, 17 May 2023 10:59:50 +0800 Subject: [PATCH 0422/1354] Add wemix, zksync & polygon-zkEVM --- projects/xy-finance/index.js | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js index be0a23649e..2646ad4a38 100644 --- a/projects/xy-finance/index.js +++ b/projects/xy-finance/index.js @@ -41,6 +41,15 @@ const config = { klaytn: { chainId: '8217', }, + wemix: { + chainId: '1111', + }, + era: { + chainId: '324', + }, + polygon_zkevm: { + chainId: '1101', + }, } const ethAddress = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' @@ -215,6 +224,36 @@ const yPoolDepositContract = { "tokenAddress": ADDRESSES.klaytn.oUSDC } }, + "1111": { + "USDT": { + "contractAddress": "0xA5Cb30E5d30A9843B6481fFd8D8D35DDED3a3251", + "tokenAddress": "0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F" + }, + "USDC": { + "contractAddress": "0x3243278E0F93cD6F88FC918E0714baF7169AFaB8", + "tokenAddress": "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D" + } + }, + "324": { + "ETH": { + "contractAddress": "0x935283A00FBF8E40fd2f8C432A488F6ADDC8dB67", + "tokenAddress": ethAddress + }, + "USDC": { + "contractAddress": "0x75167284361c8D61Be7E4402f4953e2b112233cb", + "tokenAddress": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" + } + }, + "1101": { + "ETH": { + "contractAddress": "0x9fE77412aA5c6Ba67fF3095bBc534884F9a61a38", + "tokenAddress": ethAddress + }, + "USDC": { + "contractAddress": "0x1acCfC3a45313f8F862BE7fbe9aB25f20A93d598", + "tokenAddress": "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035" + } + }, } module.exports={} From 3d7f762a4267c5c21c88b55165568afd24d857c1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 12:32:56 +0200 Subject: [PATCH 0423/1354] fix harvest --- package-lock.json | 12 ++++++------ projects/harvest.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index f7915eb1d9..450be0e5b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -62,9 +62,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.17.tgz", - "integrity": "sha512-CmFSlgk4/GjjZL6igwB3zrxmNdU7W8LG4ijhAqB7W8c/QqFNNdYBsf3DnXtKsDTfgQLtrRSji838ThWvnI+9cg==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.18.tgz", + "integrity": "sha512-jo19EXOYegIWGD3Fi66GCG7MkdKcWX12iuio2nT8oN+z+T24zP7OsrxMqscZRdPg+dvIz7KOPhshLzIQPJ5uvg==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4193,9 +4193,9 @@ } }, "@defillama/sdk": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.17.tgz", - "integrity": "sha512-CmFSlgk4/GjjZL6igwB3zrxmNdU7W8LG4ijhAqB7W8c/QqFNNdYBsf3DnXtKsDTfgQLtrRSji838ThWvnI+9cg==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.18.tgz", + "integrity": "sha512-jo19EXOYegIWGD3Fi66GCG7MkdKcWX12iuio2nT8oN+z+T24zP7OsrxMqscZRdPg+dvIz7KOPhshLzIQPJ5uvg==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/harvest.js b/projects/harvest.js index 218add5ad5..2d929c51c1 100644 --- a/projects/harvest.js +++ b/projects/harvest.js @@ -4,7 +4,7 @@ const { get } = require('./helper/http') const endpoint = "https://api.harvest.finance/vaults?key=41e90ced-d559-4433-b390-af424fdc76d6" const chains = { ethereum: 'eth', - bsc: 'bsc', + // bsc: 'bsc', arbitrum: 'arbitrum', polygon: 'matic' } From 47949189dd1ecc9c57819b07c4bbfb7656bae0cf Mon Sep 17 00:00:00 2001 From: haywael Date: Wed, 17 May 2023 18:58:33 +0800 Subject: [PATCH 0424/1354] fix:support ot v2 --- projects/OT/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/OT/index.js b/projects/OT/index.js index e33c8e4984..5cb3735351 100644 --- a/projects/OT/index.js +++ b/projects/OT/index.js @@ -1,9 +1,11 @@ -const swapContract = '0x84c18204c30da662562b7a2c79397C9E05f942f0'; +const swapContractV1 = '0x84c18204c30da662562b7a2c79397C9E05f942f0'; +const swapContractV2 = '0x2a98158166BE71D21Dd97e248ba670211Df9a73C'; const { sumTokens2 } = require('../helper/unwrapLPs') async function tvl(timestamp, ethBlock, chainBlocks, { api }) { - const tokens = await api.call({ target: swapContract, abi: 'function getPoolTokenList() external view returns (address[])', }); - return sumTokens2({ api, tokens, owner: swapContract, }) + const v1tokens = await api.call({ target: swapContractV1, abi: 'function getPoolTokenList() external view returns (address[])', }); + const v2tokens = await api.call({ target: swapContractV2, abi: 'function getPoolTokenList() external view returns (address[])', }); + return sumTokens2({ api,tokens:[...v1tokens,...v2tokens],owners:[swapContractV1,swapContractV2]}) } module.exports = { From abf13f8eb230e5725bf5a5d4d365c4a5412e6b92 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 13:23:03 +0200 Subject: [PATCH 0425/1354] fix broken adapters --- projects/Guru/index.js | 2 + projects/cyclone/index.js | 49 ++---------- projects/mtgo/index.js | 39 +-------- projects/swerve.js | 142 +++------------------------------ projects/trickortreat/index.js | 35 -------- 5 files changed, 22 insertions(+), 245 deletions(-) diff --git a/projects/Guru/index.js b/projects/Guru/index.js index d668d75d0e..3391dc8a2c 100644 --- a/projects/Guru/index.js +++ b/projects/Guru/index.js @@ -28,3 +28,5 @@ Object.entries(tvlGuru).forEach(([chain, target]) => { tvl: async (_, _b, _c, { api, }) => ({ tether: ((await api.call({ target, abi: ITVL.tvl }))) / 1e18 }), } }) + +module.exports.echelon.tvl = () => ({}) \ No newline at end of file diff --git a/projects/cyclone/index.js b/projects/cyclone/index.js index 8cd0043ec5..8a8299c5d7 100644 --- a/projects/cyclone/index.js +++ b/projects/cyclone/index.js @@ -3,10 +3,9 @@ const contracts = require("./contracts.json"); const { pool2 } = require("./../helper/pool2"); const { staking } = require(".././helper/staking.js"); const { - sumLPWithOnlyOneTokenOtherThanKnown, sumTokens2, nullAddress + sumTokens2, nullAddress, } = require("./../helper/unwrapLPs"); - -const wiotx = ADDRESSES.iotex.WIOTX; +const {sumTokensExport} = require("./../helper/unknownTokens"); function tvl(chain, gasToken) { return async (timestamp, block, chainBlocks) => { @@ -26,57 +25,23 @@ function tvl(chain, gasToken) { }; } -async function iotexPool2(timestamp, block, chainBlocks) { - block = chainBlocks.iotex - const balances = {}; - let a = await sumLPWithOnlyOneTokenOtherThanKnown( - balances, - contracts.iotex.pool2.token, - contracts.iotex.pool2.address, - ADDRESSES.iotex.CYC, - block, - "iotex" - ); - return { iotex: balances[wiotx] / 10 ** 18 }; -} - module.exports = { iotex: { tvl: tvl("iotex", "iotex"), - pool2: iotexPool2, - staking: staking( - contracts.iotex.staking.address, - contracts.iotex.staking.token, - "iotex", - "cyclone-protocol", - 18 - ), + pool2: sumTokensExport({ owner: contracts.iotex.pool2.address, tokens: [contracts.iotex.pool2.token], }), + staking: staking(contracts.iotex.staking.address, contracts.iotex.staking.token, "iotex", "cyclone-protocol", 18), }, ethereum: { tvl: tvl("ethereum", ADDRESSES.ethereum.WETH), - pool2: pool2( - contracts.ethereum.pool2.address, - contracts.ethereum.pool2.token, - "ethereum" - ), + pool2: pool2(contracts.ethereum.pool2.address, contracts.ethereum.pool2.token, "ethereum"), }, bsc: { tvl: tvl("bsc", "bsc:" + ADDRESSES.bsc.WBNB), pool2: pool2(contracts.bsc.pool2.address, contracts.bsc.pool2.token, "bsc"), - staking: staking( - contracts.bsc.staking.address, - contracts.bsc.staking.token, - "bsc", - "cyclone-protocol", - 18 - ), + staking: staking(contracts.bsc.staking.address, contracts.bsc.staking.token, "bsc", "cyclone-protocol", 18), }, polygon: { tvl: tvl("polygon", "polygon:0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"), - pool2: pool2( - contracts.polygon.pool2.address, - contracts.polygon.pool2.token, - "polygon" - ), + pool2: pool2(contracts.polygon.pool2.address, contracts.polygon.pool2.token,), }, }; diff --git a/projects/mtgo/index.js b/projects/mtgo/index.js index e0276e1c12..c15d66462a 100644 --- a/projects/mtgo/index.js +++ b/projects/mtgo/index.js @@ -1,47 +1,14 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { - sumLPWithOnlyOneTokenOtherThanKnown, -} = require("./../helper/unwrapLPs"); +const { sumTokensExport } = require('../helper/unknownTokens') const lpToken = "0x2a382b6d2dac1cba6e4820fd04e3c2c14e1aa7b2"; const treasuryAddress = "0xdE2957506B6dC883963fbE9cE45a94a8A22c6006"; const mtgoToken = "0x1bc8547e3716680117d7ba26dcf07f2ed9162cd0"; const poolAddress = "0x1781d2e9b4c7c0a3657411a64d2c1dfc50118772"; -const wiotx = ADDRESSES.iotex.WIOTX; -const erc20Tokens = [ - ["0x1bc8547e3716680117d7ba26dcf07f2ed9162cd0", false], // MTGO -]; - -async function iotexPool2(timestamp, _, {iotex: block}) { - const balances = {}; - await sumLPWithOnlyOneTokenOtherThanKnown( - balances, - lpToken, - poolAddress, - mtgoToken, - block, - "iotex" - ); - return { iotex: (balances[wiotx] / 10 ** 18) }; -} - -async function treasury(timestamp, _, {iotex: block}) { - const balances = {}; - await sumLPWithOnlyOneTokenOtherThanKnown( - balances, - lpToken, - treasuryAddress, - mtgoToken, - block, - "iotex" - ); - return { iotex: (balances[wiotx] / 10 ** 18) }; -} module.exports = { iotex: { tvl: async () => ({}), - pool2: iotexPool2, - treasury, + pool2: sumTokensExport({ tokensAndOwners: [[lpToken, poolAddress]], lps:[lpToken]}), + // treasury: sumTokensExport({ tokensAndOwners: [[lpToken, treasuryAddress]], lps:[lpToken]}), }, }; diff --git a/projects/swerve.js b/projects/swerve.js index fccd5a440f..dee065753d 100644 --- a/projects/swerve.js +++ b/projects/swerve.js @@ -1,138 +1,16 @@ +const { sumTokensExport } = require('./helper/unwrapLPs') const ADDRESSES = require('./helper/coreAssets.json') -const BigNumber = require("bignumber.js"); -const sdk = require("@defillama/sdk"); -const { get } = require('./helper/http') - -let swaps = [ - { - 'name': 'swerve', - 'address': '0x329239599afB305DA0A2eC69c58F8a6697F9F88d', - 'coins': [0,1,2,3], - 'type': 1, - } -] - -let coinDecimals = [ - { - '0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa': '18', - '0x0316EB71485b0Ab14103307bf65a021042c6d380': '18', - '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D': '8', - [ADDRESSES.ethereum.WBTC]: '8', - '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6': '18', - '0x196f4727526eA7FB1e17b2071B3d8eAA38486988': '18', - '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5': '18', - '0x0E2EC54fC0B509F445631Bf4b91AB8168230C752': '18', //linkusd - '0x674C6Ad92Fd080e4004b2312b45f796a192D27a0': '18', //USDN - '0x1c48f86ae57291F7686349F12601910BD8D470bb': '18', //USDK - '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd': '2', //GUSD - '0x39AA39c021dfbaE8faC545936693aC917d5E7563': '8', //cUSD - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643': '8', //cDAI - [ADDRESSES.ethereum.USDT]: '6', //USDT - '0x73a052500105205d34Daf004eAb301916DA8190f': '18', //yTUSD - '0xd6aD7a6750A7593E092a9B218d66C0A814a3436e': '6', ///yUSDC - '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01': '18', ///yDAI - '0x83f798e925BcD4017Eb265844FDDAbb448f1707D': '6', ///yUSDT - '0x8E870D67F660D95d5be530380D0eC0bd388289E1': '18', //PAX - '0x9777d7E2b60bB01759D0E2f8be2095df444cb07E': '6', ///ycUSDC - '0x99d1Fa417f94dcD62BfE781a1213c092a47041Bc': '18', ///ycDAI - '0x1bE5d71F2dA660BFdee8012dDc58D024448A0A59': '6', ///ycUSDT - '0x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE': '18', //Y2busd - '0x26EA744E5B887E5205727f55dFBE8685e3b21951': '6', ///y2USDC - '0xC2cB1040220768554cf699b0d863A3cd4324ce32': '18', ///y2DAI - '0xE6354ed5bC4b393a5Aad09f21c46E101e692d447': '6', ///y2USDT - '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51': '18', //sUSD - [ADDRESSES.ethereum.DAI]: '18', //DAI - [ADDRESSES.ethereum.USDC]: '6', //USDC - '0x5BC25f649fc4e26069dDF4cF4010F9f706c23831': '18', //dusd - [ADDRESSES.ethereum.TUSD]: '18' - } -] - -async function tvl(ts, block) { - var price_feed = await get('https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,cdai,compound-usd-coin&vs_currencies=usd&include_market_cap=true&include_24hr_vol=true&include_24hr_change=true') - - var tvl = 0; - var btcTVL = 0; - - await Promise.all( - swaps.map(async item => { - await Promise.all( - item.coins.map(async i => { - const poolAmount = await calc(item, i, price_feed, block); - if (item.type == 'btc') { - btcTVL += parseFloat(poolAmount); - } else { - tvl += parseFloat(poolAmount ) - } - }) - ) - }) - ) - - const balances = {} - const wBTC = ADDRESSES.ethereum.WBTC - sdk.util.sumSingleBalance(balances, wBTC, btcTVL * 1e8) - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.USDT, tvl * 1e6) // add as usdt - return balances; -} - -async function getVirtualPrice(contract, block) { - const { output: virtualPrice } = await sdk.api.abi.call({ - block, - target: contract, - abi: "uint256:getPricePerFullShare", - }) - return virtualPrice; -} - - - -async function calc(item, i, price_feed, block) { - const { output: balances } = await sdk.api.abi.call({ - block, - target: item.address, - params: [i], - abi: "function balances(int128 arg0) view returns (uint256)" - }) - const { output: coins } = await sdk.api.abi.call({ - block, - target: item.address, - params: [i], - abi: "function coins(int128 arg0) view returns (address)" - }) - - - var poolAmount = new BigNumber(balances).div(10 ** coinDecimals[0][coins]).toFixed(2); - - let multiplier - if (item.type == 'compound') { - multiplier = 1; - if (coins === '0x39AA39c021dfbaE8faC545936693aC917d5E7563') { - multiplier = price_feed['compound-usd-coin'].usd; - } - if (coins === '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643') { - multiplier = price_feed.cdai.usd; - } - poolAmount = poolAmount * multiplier; - } - - if (item.type == 'yToken') { - multiplier = 1; - if (coins !== '0x8E870D67F660D95d5be530380D0eC0bd388289E1') { // PAX exception - multiplier = await getVirtualPrice(coins, block) - multiplier = new BigNumber(multiplier).div(10 ** 18).toFixed(4); - } - poolAmount = poolAmount * multiplier; - } - - return poolAmount; -} - - module.exports = { - timetravel: false, ethereum: { - tvl + tvl: sumTokensExport({ + owner: '0x329239599afB305DA0A2eC69c58F8a6697F9F88d', + tokens: [ + ADDRESSES.ethereum.TUSD, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.DAI, + ] + }) } } diff --git a/projects/trickortreat/index.js b/projects/trickortreat/index.js index 33574c2e1b..a54b8a2d27 100644 --- a/projects/trickortreat/index.js +++ b/projects/trickortreat/index.js @@ -1,5 +1,3 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const {addFundsInMasterChef} = require("../helper/masterchef"); const {pool2BalanceFromMasterChefExports} = require("../helper/pool2"); const {staking} = require("../helper/staking"); @@ -7,42 +5,9 @@ const {staking} = require("../helper/staking"); const masterchef = "0x2755AC6BD7BDbaCbdE08504f45f73D150Ee660F5"; const trick = "0xA5aFce54270D9afA6a80464bBD383BE506888e6A"; -const translate = { - ["fantom:" + ADDRESSES.fantom.DAI]: ADDRESSES.ethereum.DAI, - "fantom:0xb3654dc3D10Ea7645f8319668E8F54d2574FBdC8": ADDRESSES.ethereum.LINK -} - -const wMEMO = "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b" -const time = "avax:0xb54f16fb19478766a268f172c9480f8da1a7c9c3"; - -const wsSPA= "0x89346b51a54263cf2e92da79b1863759efa68692"; -const spa = "fantom:0x5602df4a94eb6c680190accfa2a475621e0ddbdc"; - async function tvl (timestamp, block, chainBlocks) { let balances = {}; await addFundsInMasterChef(balances, masterchef, chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`, undefined, [trick], true, true, trick); - for (let key in translate) { - balances[translate[key]] = balances[key]; - delete balances[key] - } - const memo = (await sdk.api.abi.call({ - target: wMEMO, - params: [balances["fantom:0xDDc0385169797937066bBd8EF409b5B3c0dFEB52"]], - abi:"function wMEMOToMEMO(uint256 _amount) view returns (uint256)", - block: chainBlocks.avax, - chain: "avax", - })).output; - balances[time] = memo - delete balances["fantom:0xDDc0385169797937066bBd8EF409b5B3c0dFEB52"]; - const sSPA = (await sdk.api.abi.call({ - target: wsSPA, - params:[balances["fantom:0x89346B51A54263cF2e92dA79B1863759eFa68692"]], - abi: 'function wOHMTosOHM(uint256 _amount) view returns (uint256)', - block: chainBlocks.fantom, - chain: "fantom" - })).output; - balances[spa] = sSPA; - delete balances["fantom:0x89346B51A54263cF2e92dA79B1863759eFa68692"]; return balances; } From 8adbc0a837c5cd0b7ec3a2615d8e68c5fda61796 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 17 May 2023 12:32:09 +0100 Subject: [PATCH 0426/1354] sphere treasury --- projects/treasury/sphere-finance.js | 63 +++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 projects/treasury/sphere-finance.js diff --git a/projects/treasury/sphere-finance.js b/projects/treasury/sphere-finance.js new file mode 100644 index 0000000000..2512f54878 --- /dev/null +++ b/projects/treasury/sphere-finance.js @@ -0,0 +1,63 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const investment_treasury_polygon = "0x20d61737f972eecb0af5f0a85ab358cd083dd56a" +const liquid_pool_treasury_polygon = "0x1a2ce410a034424b784d4b228f167a061b94cff4" +const rfv_treasury = "0x826b8d2d523e7af40888754e3de64348c00b99f4" +const treasuryBSC = "0x124e8498a25eb6407c616188632d40d80f8e50b0" +const treasuryARB ="0xA6efac6a6715CcCE780f8D9E7ea174C4d85dbE02" +const treasuryOP = "0x93b0a33911de79b897eb0439f223935af5a60c24" +const treasuryCH = "0x74b514bc1b9480e1daca0f83a1e42b86291eadef" +const multisig = "0x79e51953f023df68fc46170d1ee47fd5a49d3b6e" + +module.exports = treasuryExports({ + polygon: { + tokens: [ + nullAddress, + "0x0000000000000000000000000000000000001010", + "0x236eeC6359fb44CCe8f97E99387aa7F8cd5cdE1f", + "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + ADDRESSES.polygon.WMATIC, + ADDRESSES.polygon.USDC + + ], + owners: [investment_treasury_polygon, liquid_pool_treasury_polygon, rfv_treasury, treasuryCH, multisig], + ownTokens: ["0x17e9C5b37283ac5fBE527011CeC257b832f03eb3", "0x8D546026012bF75073d8A586f24A5d5ff75b9716"], + }, + bsc: { + tokens: [ + nullAddress, + "0xe80772Eaf6e2E18B651F160Bc9158b2A5caFCA65", + "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827", + "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11" + ], + owners: [treasuryBSC], + ownTokens: [], + }, + arbitrum: { + tokens: [ + nullAddress, + "0xe80772Eaf6e2E18B651F160Bc9158b2A5caFCA65", + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.GMX, + ADDRESSES.arbitrum.WBTC, + "0x15b2fb8f08E4Ac1Ce019EADAe02eE92AeDF06851", + "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + ], + owners: [treasuryARB], + ownTokens: [], + resolveUniV3: true, + }, + optimism: { + tokens: [ + nullAddress, + ADDRESSES.optimism.OP, + ADDRESSES.optimism.USDC, + "0x73cb180bf0521828d8849bc8CF2B920918e23032" + ], + owners: [treasuryOP], + ownTokens: [], + }, +}) \ No newline at end of file From ab659b71125f1601ccf465329942d932ab3fd782 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 13:42:40 +0200 Subject: [PATCH 0427/1354] update mversex --- projects/mversex/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/mversex/index.js b/projects/mversex/index.js index b157b59a4d..7dc4f3812b 100644 --- a/projects/mversex/index.js +++ b/projects/mversex/index.js @@ -2,6 +2,6 @@ const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { misrepresentedTokens: true, kava: { - tvl: getUniTVL({ factory: "0xd72441aCa423dE457cF866aAD8083A403b11b08B", useDefaultCoreAssets: true, fetchBalances: true, }), + tvl: getUniTVL({ factory: "0x266F951c525130a4E230bB40F0e3525C6C99B9c5", useDefaultCoreAssets: true, fetchBalances: true, }), }, }; From b583fd4a1b15cf00f81b406fb87eac9ce7f5d382 Mon Sep 17 00:00:00 2001 From: glebskr Date: Wed, 17 May 2023 16:00:18 +0300 Subject: [PATCH 0428/1354] Fix wemix --- projects/wemix-staking/index.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/projects/wemix-staking/index.js b/projects/wemix-staking/index.js index 5a2e3a4b16..e8ed83adc8 100644 --- a/projects/wemix-staking/index.js +++ b/projects/wemix-staking/index.js @@ -1,12 +1,11 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { staking } = require('../helper/staking') +const ADDRESSES = require("../helper/coreAssets.json"); +const { staking } = require("../helper/staking"); -const wwemix = ADDRESSES.wemix.WWEMIX -const stakingContract = '0x6F3f44B0Cf7C751f2a44Faf6bFdd08e499Eb0973' +const wwemix = ADDRESSES.wemix.WWEMIX; +const stakingContract = "0x6F3f44B0Cf7C751f2a44Faf6bFdd08e499Eb0973"; module.exports = { wemix: { - tvl: () => ({}), - staking: staking(stakingContract, wwemix), + tvl: staking(stakingContract, wwemix), }, -} \ No newline at end of file +}; From 0955473757519103fa1785a92d8d4fb39039abd5 Mon Sep 17 00:00:00 2001 From: cheng Date: Wed, 17 May 2023 17:13:49 +0200 Subject: [PATCH 0429/1354] feat:Add unConvert veth1.0 in eth tvl --- projects/bifrost-staking/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/bifrost-staking/index.js b/projects/bifrost-staking/index.js index c9738abbdf..b6e5b35c85 100644 --- a/projects/bifrost-staking/index.js +++ b/projects/bifrost-staking/index.js @@ -1,3 +1,4 @@ +const BigNumber = require("bignumber.js") const { getExports } = require('../helper/heroku-api') const { nullAddress } = require('../helper/unwrapLPs') @@ -13,9 +14,11 @@ module.exports = { ethereum: { tvl: async (_, _1, _2, { api }) => { const vETH = await api.call({ target: '0x4bc3263eb5bb2ef7ad9ab6fb68be80e43b43801f', abi: 'uint256:totalSupply' }) + const contract_veth1 = await api.call({ target: '0xc3d088842dcf02c13699f936bb83dfbbc6f721ab', abi: 'uint256:totalSupply' }) + const contract_veth1_null_address_balance = await api.call({ target: '0xc3d088842dcf02c13699f936bb83dfbbc6f721ab', abi: 'erc20:balanceOf',params:'0x000000000000000000000000000000000000dEaD' }) return { - [nullAddress]: vETH, + [nullAddress]: new BigNumber(vETH).plus(contract_veth1).minus(contract_veth1_null_address_balance).toString(), } } }, From 0c93fc7fd00f083f0bce46c557df45e8f612198f Mon Sep 17 00:00:00 2001 From: define Date: Wed, 17 May 2023 17:59:52 +0100 Subject: [PATCH 0430/1354] add arbitrum chain to solunea --- projects/solunea/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/solunea/index.js b/projects/solunea/index.js index 8aec783a39..91cc9da46a 100644 --- a/projects/solunea/index.js +++ b/projects/solunea/index.js @@ -9,4 +9,11 @@ module.exports = { hasStablePools: true, }) }, + arbitrum: { + tvl: getUniTVL({ + factory: '0x6ef065573cd3fff4c375d4d36e6ca93cd6e3d499', + useDefaultCoreAssets: true, + hasStablePools: true, + }) + }, } From 761881732f7e0a6f0d1c40f1ddd5332d12c29b82 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Wed, 17 May 2023 18:18:49 +0100 Subject: [PATCH 0431/1354] geist hallmark --- projects/geist/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/geist/index.js b/projects/geist/index.js index 491cb2b802..7596e5a3d7 100644 --- a/projects/geist/index.js +++ b/projects/geist/index.js @@ -33,6 +33,6 @@ module.exports = { pool2: pool2(stakingContractPool2, GEIST_WFTM_spLP, "fantom"), }, hallmarks:[ - [1665090175, "BSC Bridge exploit"] + [1665090175, "BSC Bridge hacker deposits coins"] ], }; From 06a81cddfcc2f717b4157a750f3428b711bf43a0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 May 2023 22:40:02 +0200 Subject: [PATCH 0432/1354] fix broken adapters --- package-lock.json | 12 +++++------ projects/dexit-swap/index.js | 4 +++- projects/dxsale/apiCache.js | 2 ++ projects/dxsale/index.js | 2 ++ projects/sentiment/index.js | 15 ++++++++------ projects/sushiswap-trident/index.js | 4 +++- projects/timeless/index.js | 14 +++---------- projects/tokemak/index.js | 31 +++++++++++++---------------- 8 files changed, 42 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 450be0e5b2..caefa21396 100644 --- a/package-lock.json +++ b/package-lock.json @@ -62,9 +62,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.18.tgz", - "integrity": "sha512-jo19EXOYegIWGD3Fi66GCG7MkdKcWX12iuio2nT8oN+z+T24zP7OsrxMqscZRdPg+dvIz7KOPhshLzIQPJ5uvg==", + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.19.tgz", + "integrity": "sha512-9MZFORjP9Ijl5ijnilm+UddknuETnCYtisQ0Kq+ezVBo6/8onhKEg2VSJtVNlpMjvdTNZHkdjvQ3msdVCXeICg==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4193,9 +4193,9 @@ } }, "@defillama/sdk": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.18.tgz", - "integrity": "sha512-jo19EXOYegIWGD3Fi66GCG7MkdKcWX12iuio2nT8oN+z+T24zP7OsrxMqscZRdPg+dvIz7KOPhshLzIQPJ5uvg==", + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.19.tgz", + "integrity": "sha512-9MZFORjP9Ijl5ijnilm+UddknuETnCYtisQ0Kq+ezVBo6/8onhKEg2VSJtVNlpMjvdTNZHkdjvQ3msdVCXeICg==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/dexit-swap/index.js b/projects/dexit-swap/index.js index 7e98066cc2..d67935e32b 100644 --- a/projects/dexit-swap/index.js +++ b/projects/dexit-swap/index.js @@ -1,3 +1,5 @@ const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('dexit', '0xed7e00862c73eF3a53f33d785c62d312Cc8827d2') \ No newline at end of file +module.exports = uniTvlExport('dexit', '0xed7e00862c73eF3a53f33d785c62d312Cc8827d2') + +module.exports.dexit.tvl = () => ({}) \ No newline at end of file diff --git a/projects/dxsale/apiCache.js b/projects/dxsale/apiCache.js index 599b85d9ae..845eec7c26 100644 --- a/projects/dxsale/apiCache.js +++ b/projects/dxsale/apiCache.js @@ -217,3 +217,5 @@ module.exports = { tvl: getTVLTotal(bitgertArchives), } }; + +module.exports.dexit.tvl = () => ({}) diff --git a/projects/dxsale/index.js b/projects/dxsale/index.js index 1b58b09c32..b13f4b6ad4 100644 --- a/projects/dxsale/index.js +++ b/projects/dxsale/index.js @@ -189,3 +189,5 @@ module.exports = { tvl: getTVLTotal(bitgertArchives), } }; + +module.exports.dexit.tvl = () => ({}) \ No newline at end of file diff --git a/projects/sentiment/index.js b/projects/sentiment/index.js index 8a820defe4..c0c8973ab5 100644 --- a/projects/sentiment/index.js +++ b/projects/sentiment/index.js @@ -8,21 +8,24 @@ async function tvl(timestamp, ethBlock, { arbitrum: block }, { api }) { api.addTokens(assets, totalAssets) // const userAccounts = await api.call({ target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", abi: "address[]:getAllAccounts", }) - const data = await graphFetchById({ endpoint: 'https://api.thegraph.com/subgraphs/name/r0ohafza/sentiment', query, api, options: { useBlock: true, }}) + const data = await graphFetchById({ endpoint: 'https://api.thegraph.com/subgraphs/name/r0ohafza/sentiment', query, api, options: { useBlock: true, } }) const userAccounts = data.map(i => i.id) const [equity, borrows] = await Promise.all([ - api.multiCall({ target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", calls: userAccounts, abi: "function getBalance(address account) view returns (uint256)", }), - api.multiCall({ target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", calls: userAccounts, abi: "function getBorrows(address account) view returns (uint256)", }), + api.multiCall({ target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", calls: userAccounts, abi: "function getBalance(address account) view returns (uint256)", permitFailure: true, }), + api.multiCall({ target: "0xc0ac97A0eA320Aa1E32e9DEd16fb580Ef3C078Da", calls: userAccounts, abi: "function getBorrows(address account) view returns (uint256)", permitFailure: true, }), ]) - for (let i = 0; i < equity.length; i++) - api.add(ADDRESSES.arbitrum.WETH, equity[i] - borrows[i], {}) + for (let i = 0; i < equity.length; i++) { + const equity_ = equity[i] ?? 0 + const borrow = borrows[i] ?? 0 + api.add(ADDRESSES.arbitrum.WETH, equity_ - borrow) + } } module.exports = { misrepresentedTokens: true, arbitrum: { tvl, }, hallmarks: [ - [Math.floor(new Date('2023-04-04')/1e3), '1M hack'], + [Math.floor(new Date('2023-04-04') / 1e3), '1M hack'], ], }; diff --git a/projects/sushiswap-trident/index.js b/projects/sushiswap-trident/index.js index e2a7364057..226b5e2705 100644 --- a/projects/sushiswap-trident/index.js +++ b/projects/sushiswap-trident/index.js @@ -4,7 +4,7 @@ const modulesToExport = {}; const trident_chains = [ "polygon", "optimism", - "kava", + // "kava", "metis", "bittorrent", "arbitrum", @@ -22,3 +22,5 @@ module.exports = { misrepresentedTokens: false, ...modulesToExport, }; + +module.exports.kava = { tvl: () => 0} \ No newline at end of file diff --git a/projects/timeless/index.js b/projects/timeless/index.js index 5959e77528..40e4ad9089 100644 --- a/projects/timeless/index.js +++ b/projects/timeless/index.js @@ -3,7 +3,6 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const abi = require('./abi.json') const { getLogs } = require('../helper/cache/getLogs') -const chain = 'ethereum' const factory = '0xbd16088611054fce04711aa9509d1d86e04dce2c' const wl_stETH_token = '0xf9a98a9452485ed55cd3ce5260c2b71c9807b11a' @@ -25,18 +24,11 @@ async function tvl(_, block, _1, { api }) { toa.push([vault, gate]) }) const balances = await sumTokens2({ api, tokensAndOwners: toa, }) - const wl_stETH = 'ethereum:'+wl_stETH_token + const wl_stETH = wl_stETH_token const wl_stETH_balance = balances[wl_stETH] delete balances[wl_stETH] - const unwrappedAsset = await api.call({ - target: wl_stETH_token, - abi: abi.asset, - }) - const balance = await api.call({ - target: wl_stETH_token, - abi: abi.convertToAssets, - params: wl_stETH_balance, - }) + const unwrappedAsset = await api.call({ target: wl_stETH_token, abi: abi.asset, }) + const balance = await api.call({ target: wl_stETH_token, abi: abi.convertToAssets, params: wl_stETH_balance, }) sdk.util.sumSingleBalance(balances, unwrappedAsset, balance) return balances diff --git a/projects/tokemak/index.js b/projects/tokemak/index.js index 00be3bc583..b65892842e 100644 --- a/projects/tokemak/index.js +++ b/projects/tokemak/index.js @@ -135,9 +135,9 @@ async function tvl(timestamp, block, _, { api }) { target: cvxcvxFxsPool, params: [tokeTreasury], }); - sdk.util.sumSingleBalance(balances,cvxcrvFrax,cvxcrvFraxBal) - sdk.util.sumSingleBalance(balances,cvxcrvFrax,treasuryFraxBal[0]['liquidity']) - sdk.util.sumSingleBalance(balances,cvxcvxFxs,cvxcvxFxsBal) + sdk.util.sumSingleBalance(balances, cvxcrvFrax, cvxcrvFraxBal) + sdk.util.sumSingleBalance(balances, cvxcrvFrax, treasuryFraxBal[0]['liquidity']) + sdk.util.sumSingleBalance(balances, cvxcvxFxs, cvxcvxFxsBal) let curveHoldings = positions.exchanges.filter( pool => pool.type == 'Curve') @@ -148,8 +148,8 @@ async function tvl(timestamp, block, _, { api }) { const calls = [] lpBalances(curveHoldings, toa, tokens, calls,) lpBalances(uniHoldings, toa, tokens, calls) - const amountRes = await api.multiCall({ abi: abi.userInfo, calls}) - tokens.forEach((val, i) => sdk.util.sumSingleBalance(balances,val,amountRes[i].amount, api.chain)) + const amountRes = await api.multiCall({ abi: abi.userInfo, calls }) + tokens.forEach((val, i) => sdk.util.sumSingleBalance(balances, val, amountRes[i].amount, api.chain)) return sumTokens2({ balances, api, tokensAndOwners: toa, }) @@ -170,23 +170,20 @@ function lpBalances(holdings, toa, tokens, calls) { toa.push([token, manager]) if (!pool.hasOwnProperty('staking')) continue - + tokens.push(token) - calls.push({ target: masterChef, params: [pool.staking.pool_id, manager]}) + calls.push({ target: masterChef, params: [pool.staking.pool_id, manager] }) } } -async function staking(timestamp, block) { - let balances = {} - await sumTokens(balances, [ - [toke, rtoke1], [toke, rtoke2], [toke, rtoke3] - ], block) +async function staking(timestamp, block, _, { api }) { let vestedToke = '57238445' - let balance = balances['ethereum:'+toke]/1e18 - vestedToke - if (balance < 0) balance = 0 - return { - tokemak: BigNumber(balance).toFixed(0) - } + api.add(ADDRESSES.ethereum.TOKE, vestedToke * 1e18 * -1) + return sumTokens2({ + api, tokensAndOwners: [ + [toke, rtoke1], [toke, rtoke2], [toke, rtoke3] + ] + }) } async function pool2(timestamp, block) { From a1761625d3ab73d897c297ff60a462485cb0184a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 May 2023 03:14:24 +0530 Subject: [PATCH 0433/1354] Gravita (#6298) * calc for gravita's tvl * remove staked grai from calc * description update * minor refactor * refactor --------- Co-authored-by: gbirckan --- projects/gravita-protocol/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/gravita-protocol/index.js diff --git a/projects/gravita-protocol/index.js b/projects/gravita-protocol/index.js new file mode 100644 index 0000000000..64be6b783b --- /dev/null +++ b/projects/gravita-protocol/index.js @@ -0,0 +1,28 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const ADMIN_CONTRACT_ADDRESS = "0xf7Cc67326F9A1D057c1e4b110eF6c680B13a1f53"; + +/** + * Returns an array of addresses containing the collateral tokens accepted by the platform. + */ +async function _getCollateralAddresses(api) { + return api.call({ + abi: "function getValidCollateral() external view returns (address[])", + target: ADMIN_CONTRACT_ADDRESS, + }); +} + +async function tvl(_, _1, _2, { api }) { + const collAddresses = await _getCollateralAddresses(api); + const pool = await api.call({ abi: 'address:activePool', target: ADMIN_CONTRACT_ADDRESS}) + return sumTokens2({ api, tokens: collAddresses, owner: pool}) +} + +module.exports = { + methodology: + "Adds up the total value locked as collateral on the Gravita platform", + start: 1684256400, // Tuesday, May 15, 2023 17:00 GMT + ethereum: { + tvl, + }, +}; From 5d449a53b81efac520be1ca60bc8a848f0fa233f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 17 May 2023 23:21:56 +0100 Subject: [PATCH 0434/1354] add aurora --- projects/saddle/contracts.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/saddle/contracts.json b/projects/saddle/contracts.json index 11b1eae8cb..c90c85bb98 100644 --- a/projects/saddle/contracts.json +++ b/projects/saddle/contracts.json @@ -4,5 +4,6 @@ "fantom": "0x7003102c75587E8D29c56124060463Ef319407D0", "evmos": "0xBa684B8E05415726Ee1fFE197eaf1b82E4d44418", "optimism": "0x0E510c9b20a5D136E75f7FD2a5F344BD98f9d875", - "kava": "0x3A0c2A793a8DB779e0293699D0Ce77c77617FE0f" + "kava": "0x3A0c2A793a8DB779e0293699D0Ce77c77617FE0f", + "aurora": "0x29FD31d37AB8D27f11EAB68F96424bf64231fFce" } From 27ded6da51ae645b9460666ff534a17aebb81fa1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 May 2023 10:02:04 +0200 Subject: [PATCH 0435/1354] fix hebeswap --- projects/hebeswap/index.js | 1 - projects/helper/coreAssets.json | 2 +- projects/olympus/index.js | 5 +++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/hebeswap/index.js b/projects/hebeswap/index.js index db3c1647f1..efb2c6426e 100644 --- a/projects/hebeswap/index.js +++ b/projects/hebeswap/index.js @@ -5,7 +5,6 @@ module.exports={ methodology: "Factory address (0x09fafa5eecbc11C3e5d30369e51B7D9aab2f3F53) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", ethereumclassic: { tvl: getUniTVL({ - chain: 'ethereumclassic', factory: '0x09fafa5eecbc11C3e5d30369e51B7D9aab2f3F53', useDefaultCoreAssets: true, }) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 4b73feed13..cb568c2a08 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -606,7 +606,7 @@ "WTOMO": "0xb1f66997a5760428d3a87d68b90bfe0ae64121cc" }, "ethereumclassic": { - "WETC": "0x35e9a89e43e45904684325970b2e2d258463e072" + "WETC": "0x82A618305706B14e7bcf2592D4B9324A366b6dAd" }, "cube": { "WCUBE": "0x9d3f61338d6eb394e378d28c1fd17d5909ac6591", diff --git a/projects/olympus/index.js b/projects/olympus/index.js index 249b5e7ed2..1e25419995 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -1,7 +1,8 @@ const sdk = require("@defillama/sdk"); const { blockQuery } = require("../helper/http"); const env = require("../helper/env"); -const { staking } = require('../helper/staking') +const { staking } = require('../helper/staking'); +const { sumTokens2 } = require("../helper/unwrapLPs"); const OlympusStakings = [ // Old Staking Contract @@ -150,7 +151,7 @@ async function tvl(timestamp, block, _, { api }, isOwnTokensMode = false) { } else if (isOwnTokensMode) return; api.add(token.tokenAddress, token.balance * 10 ** decimals[i]) }) - return api.getBalances() + return sumTokens2({ api, resolveLP: true, }) } async function ownTokens(timestamp, block, _, { api }) { From e71dfcd6dbce78e803f891e139610a576dbf0190 Mon Sep 17 00:00:00 2001 From: Kenneth Tiong Date: Thu, 18 May 2023 16:35:55 +0800 Subject: [PATCH 0436/1354] feat: add second factory --- projects/collectionxyz/index.js | 44 +++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/projects/collectionxyz/index.js b/projects/collectionxyz/index.js index ba58ea17a8..ad8c08cfbb 100644 --- a/projects/collectionxyz/index.js +++ b/projects/collectionxyz/index.js @@ -1,24 +1,42 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const factory = '0x03b51826a4868780db375ee27e5b0adaac5274ee' +const { getLogs } = require('../helper/cache/getLogs'); +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); -async function tvl(_, _b, _cb, { api, }) { - const logs = await getLogs({ +const FACTORY_ADDRESS_1 = '0x03b51826a4868780db375ee27e5b0adaac5274ee'; +const FACTORY_ADDRESS_2 = '0x7a1D4c6E8edbd8a9314034356b29419e1b1B44f0'; +const START_BLOCK_1 = 16932638; +const START_BLOCK_2 = 17277832; +const EVENT_ABI = 'event NewPool (address indexed collection, address indexed poolAddress)'; +const TOPIC_HASH = '0x77948cb83ef3caff9ac13dfab1ea1f8a6875c98370287ce587f5dbc74cc5b6b0'; + +async function getPoolLogs(api, factory, startBlock) { + return await getLogs({ api, target: factory, - topics: ['0x77948cb83ef3caff9ac13dfab1ea1f8a6875c98370287ce587f5dbc74cc5b6b0'], - eventAbi: 'event NewPool (address indexed collection, address indexed poolAddress)', + topics: [TOPIC_HASH], + eventAbi: EVENT_ABI, onlyArgs: true, - fromBlock: 16932638, - }) - api.log('Pool length: ', logs.length) - const tokensAndOwners = logs.map(i => [[i.collection, i.poolAddress], [nullAddress, i.poolAddress]]).flat() - return sumTokens2({ api, tokensAndOwners}) + fromBlock: startBlock, + }); +} + +async function getTotalValueLocked(_, _b, _cb, { api }) { + const logsFactory1 = await getPoolLogs(api, FACTORY_ADDRESS_1, START_BLOCK_1); + const logsFactory2 = await getPoolLogs(api, FACTORY_ADDRESS_2, START_BLOCK_2); + const allLogs = [...logsFactory1, ...logsFactory2]; + api.log('Pool length: ', allLogs.length); + + const tokensAndOwners = allLogs.flatMap(log => [ + [log.collection, log.poolAddress], + [nullAddress, log.poolAddress] + ]); + + return sumTokens2({ api, tokensAndOwners }); } + module.exports = { start: 16945809, ethereum: { - tvl, + tvl: getTotalValueLocked, }, }; From a9c0b5ec2990f043206a9638ce0e53ca4c4d9106 Mon Sep 17 00:00:00 2001 From: EVMlord <85406816+EVMlord@users.noreply.github.com> Date: Thu, 18 May 2023 10:12:14 +0100 Subject: [PATCH 0437/1354] Add support for Polygon zkEVM --- projects/kimberlite/config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/kimberlite/config.js b/projects/kimberlite/config.js index 4eb2442f6c..81fbea8cc0 100644 --- a/projects/kimberlite/config.js +++ b/projects/kimberlite/config.js @@ -34,6 +34,11 @@ const config = { locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", startBlock: 49220342 }, + kimberliteSafeZkEVM: { + chain: "polygon_zkevm", + locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", + startBlock: 279366 + }, kimberliteSafeKAVA: { chain: "kava", locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", From c2b13537de5e21187b96fcd1b871bd5b129c7919 Mon Sep 17 00:00:00 2001 From: Mike Richards Date: Thu, 18 May 2023 17:25:00 +0800 Subject: [PATCH 0438/1354] Remove hardcoded balances from Risk Harbor Remove hardcoded LUNA balances from Risk Harbor and switch to querying the vaults wrapped token balance directly. --- projects/risk-harbor/index.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js index a41df23714..1d09071f3d 100644 --- a/projects/risk-harbor/index.js +++ b/projects/risk-harbor/index.js @@ -108,6 +108,7 @@ const networks = { ], }, terra2: { + wrapped_luna: "terra1ufj34v4agxlazv6gv36fsdm5e8y4kclqgp0qt0l8ureql9pcwssspma238", factory: "terra1lnq5rk4gla2c537hpyxq6wjs8g0k0dedxug2p50myydaqjtm4g5ss94y8n", masterPool: "terra1gz50vgzjssefzmld0kfkt7sfvejgel9znun9chsc82k09xfess5qqu8qyc", // Ozone v2 underwriting master pool @@ -152,7 +153,7 @@ async function getManagedVaults(vaultManager, block, chain) { async function terra2(timestamp, ethBlock, chainBlocks) { const balances = { "terra-luna-2": 0 }; - const { vaults } = await queryContract({ + const { addresses } = await queryContract({ contract: networks.terra2.factory, isTerra2: true, data: { @@ -160,14 +161,26 @@ async function terra2(timestamp, ethBlock, chainBlocks) { }, }); - // Go through each vault and add it's underwriting balance - // stored in allocation_vector slot 0 // 09-28-22 As of now, the only asset supported for deposit // is Luna2 in the form of wrapped Luna2 since RH Ozone v2 does // not support native token types - vaults.forEach((vault) => { - balances["terra-luna-2"] += - parseInt(vault.state.allocation_vector[0]) / 1e6; + // For each vault, query its wrapped LUNA2 balance + let vault_balances = Promise.all(addresses.map(async (address) => { + const { balance } = await queryContract({ + contract: networks.terra2.wrapped_luna, + isTerra2: true, + data: { + balance: { address: address} + } + }) + return balance; + })); + + vault_balances = await vault_balances; + + + vault_balances.forEach((balance) => { + balances["terra-luna-2"] += balance / 1e6; }); // Query the Master underwriting vault From f34219b8305b4cd09f33ef6b7d36a5825e3a4657 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 May 2023 11:42:14 +0200 Subject: [PATCH 0439/1354] add nodedao.com --- projects/node-dao/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/node-dao/index.js diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js new file mode 100644 index 0000000000..4ceff0042a --- /dev/null +++ b/projects/node-dao/index.js @@ -0,0 +1,21 @@ +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') + +module.exports = { + ethereum: { + tvl: async (_, _1, _2, { api }) => { + const owner = '0x8103151E2377e78C04a3d2564e20542680ed3096' + const nfts = await api.call({ target: '0x58553f5c5a6aee89eabfd42c231a18ab0872700d', abi: 'erc20:balanceOf', params: owner }) + api.add(nullAddress, nfts * 32 * 1e18) + return sumTokens2({ api, owner, tokens: [nullAddress]}) + } + }, + filecoin: { + tvl: async (_, _1, _2, { api }) => { + const owner = '0xe012f3957226894b1a2a44b3ef5070417a069dc2' + const validators = await api.call({ target: owner, abi: 'function beneficiarys() public view returns (address [] memory)'}) + const bals = await api.multiCall({ abi: 'uint256:totalStakingFil', calls: validators}) + bals.forEach(i => api.add(nullAddress, i)) + return sumTokens2({ api, owners: [owner], tokens: [nullAddress]}) + } + } +} \ No newline at end of file From 51c360e3f50040ffe6e20f0fac89cdc7db1ac666 Mon Sep 17 00:00:00 2001 From: Ronan Clooney <73086339+clooneyr@users.noreply.github.com> Date: Thu, 18 May 2023 20:11:30 +1000 Subject: [PATCH 0440/1354] Algomint TVL update (#6288) * algomint TVL to monitor new BTC & ETH baskets * Fix incorrect export * Orginal format * update token obj * correct format --- projects/algomint/index.js | 63 +++++++++++++++++++++++++++---- projects/algomint/utils.js | 37 ++++++++++++++++++ projects/helper/chain/algorand.js | 10 ++++- 3 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 projects/algomint/utils.js diff --git a/projects/algomint/index.js b/projects/algomint/index.js index c9e8041442..b38256a915 100644 --- a/projects/algomint/index.js +++ b/projects/algomint/index.js @@ -1,15 +1,62 @@ +const { tokens } = require("../helper/chain/algorand"); + +const { lpTokenPostion } = require("./utils"); + +//Algomint Basket contracts where the liquidty is held const goUsdBasketAddress = "B7GJK5XWIYRM7Y5ZBSLHYGQFOWMBRNCITBL37U6HMXETTA37BRJVLF7XRM"; -const { sumTokens, tokens } = require("../helper/chain/algorand"); +const goBtcBasketAddress = + "OYJM6HVQESRPVFMMGPXA6AL6T4JP5U25J6IQ7UKA6I3NC7VRSH6H3F7KDI"; +const goEthBasketAddress = + "72BMR3TYPOLPNUEUL6FTY5ZE4SQQ7KZ2PE5QRTA4Z2M76IEFA72A24NXGQ"; + +//The following pool ID's are the PACT LP pool contracts +const usdcPoolId = 885102197; +const usdtPoolId = 1081978547; +const wBtcPoolId = 1058934586; +const wEthPoolId = 1058935016; async function tvl() { - const balances = await sumTokens({ - owner: goUsdBasketAddress, - blacklistedTokens: [tokens.goUsd], - blacklistOnLpAsWell: true, - tinymanLps: [[tokens.usdcGoUsdLp]], - }); - return balances; + //Returns the position of the LP token. + const usdcPostion = await lpTokenPostion( + tokens.usdcGoUsdLp, + usdcPoolId, + goUsdBasketAddress + ); + + const usdtPosition = await lpTokenPostion( + tokens.usdtGoUsdLp, + usdtPoolId, + goUsdBasketAddress + ); + + const wBtcPosition = await lpTokenPostion( + tokens.wBtcGoBtcLp, + wBtcPoolId, + goBtcBasketAddress + ); + + const wEthPosition = await lpTokenPostion( + tokens.wEthGoEthLp, + wEthPoolId, + goEthBasketAddress + ); + + //positionA is USDC in the LP + const usdcTvlvalue = usdcPostion.positionA / 10 ** 6; + //positionA is USDT in the LP + const usdtTvlValue = usdtPosition.positionA / 10 ** 6; + //positionB is wBTC in the LP + + const wBtcTvlValue = wBtcPosition.positionB / 10 ** 8; + //positionB is wEth in the LP + const wEthTvlValue = wEthPosition.positionB / 10 ** 8; + return { + bitcoin: wBtcTvlValue, + ethereum: wEthTvlValue, + tether: usdtTvlValue, + usd: usdcTvlvalue, + }; } module.exports = { diff --git a/projects/algomint/utils.js b/projects/algomint/utils.js new file mode 100644 index 0000000000..a5e01cb650 --- /dev/null +++ b/projects/algomint/utils.js @@ -0,0 +1,37 @@ +const { + getAppGlobalState, + getAccountInfo, +} = require("../helper/chain/algorand"); + +async function lpTokenPostion(asaId, appId, basketAddress) { + const poolGlobalState = await getAppGlobalState(appId); + + //A & B represent the two tokens in the LP pool, Token A is always the ASA with the lowest ID + + const balanceA = poolGlobalState.A; + const balanceB = poolGlobalState.B; + const lpCirculatingSupply = poolGlobalState.L; + + const ratioA = balanceA / lpCirculatingSupply; + const ratioB = balanceB / lpCirculatingSupply; + + //get basket balance of lp token + const basketBalance = await getAccountInfo(basketAddress); + + const basketLpBalanceObject = basketBalance.assets; + let basketLpBalance; + + for (let lpAsset of basketLpBalanceObject) { + if (lpAsset["asset-id"] === asaId) { + basketLpBalance = lpAsset.amount; + } + } + const positionA = basketLpBalance * ratioA; + const positionB = basketLpBalance * ratioB; + + return { positionA: positionA, positionB: positionB }; +} + +module.exports = { + lpTokenPostion, +}; diff --git a/projects/helper/chain/algorand.js b/projects/helper/chain/algorand.js index 71d8de0e93..949dd5a9ae 100644 --- a/projects/helper/chain/algorand.js +++ b/projects/helper/chain/algorand.js @@ -133,12 +133,18 @@ async function getAccountInfo(accountId) { const tokens = { usdc: 31566704, + usdt: 312769, + wBtc: 1058926737, + wEth: 887406851, + wBtcGoBtcLp: 1058934626, + wEthGoEthLp: 1058935051, + usdtGoUsdLp: 1081978679, goUsd: 672913181, usdcGoUsdLp: 885102318, gard: 684649988, gold$: 246516580, silver$: 246519683, -} +}; // store all asset ids as string Object.keys(tokens).forEach(t => tokens[t] = '' + tokens[t]) @@ -190,4 +196,4 @@ module.exports = { searchAccounts: withLimiter(searchAccounts), getAppGlobalState: getAppGlobalState, getPriceFromAlgoFiLP, -} +} \ No newline at end of file From 19280d939a0c303db03b2c5a450459bba487c9c4 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Thu, 18 May 2023 13:13:00 +0300 Subject: [PATCH 0441/1354] =?UTF-8?q?feat:=20symbiosis=20refactors=20confi?= =?UTF-8?q?g,=20adds=20SIS=20token=20as=20trackable=20liquidi=E2=80=A6=20(?= =?UTF-8?q?#6273)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: symbiosis refactors config, adds SIS token as trackable liquidity token on Ethereum, add USDC as a trackeble token on BNB chain * remove SIS token from TVL calculation --- projects/symbiosis-finance/config.js | 60 ++++++++++++++++++---------- projects/symbiosis-finance/index.js | 4 +- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index fdf4690249..9401ffcd6e 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -3,7 +3,9 @@ module.exports = { chains: [ { name: 'ethereum', - stable: ADDRESSES.ethereum.USDC, // USDC + tokens: [ + ADDRESSES.ethereum.USDC, + ], holders: [ '0xb80fDAA74dDA763a8A158ba85798d373A5E84d84', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -11,7 +13,10 @@ module.exports = { }, { name: 'bsc', - stable: ADDRESSES.bsc.BUSD, // BUSD + tokens: [ + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDC, + ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 @@ -20,7 +25,9 @@ module.exports = { }, { name: 'avax', - stable: ADDRESSES.avax.USDC_e, // USDC.e + tokens: [ + ADDRESSES.avax.USDC_e, + ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0xE75C7E85FE6ADd07077467064aD15847E6ba9877', // portal v2 @@ -30,7 +37,9 @@ module.exports = { }, { name: 'polygon', - stable: ADDRESSES.polygon.USDC, // USDC + tokens: [ + ADDRESSES.polygon.USDC, + ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -41,7 +50,9 @@ module.exports = { }, { name: 'telos', - stable: ADDRESSES.telos.USDC, // USDC + tokens: [ + ADDRESSES.telos.USDC, + ], holders: [ '0x17A0E3234f00b9D7028e2c78dB2caa777F11490F', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -50,23 +61,20 @@ module.exports = { }, { name: 'aurora', - stable: ADDRESSES.aurora.USDC_e, // USDC + tokens: [ + ADDRESSES.aurora.USDC_e, + ], holders: [ '0x17A0E3234f00b9D7028e2c78dB2caa777F11490F', // portal v1 '0x7Ff7AdE2A214F9A4634bBAA4E870A5125dA521B8', // v1 pool with BNB chain '0x7F1245B61Ba0b7D4C41f28cAc9F8637fc6Bec9E4', // v1 pool with Polygon ] }, - // { - // name: 'milkomeda', - // stable: ADDRESSES.milkomeda.sUSDC, // sUSDC - // holders: [ - // '0x3Cd5343546837B958a70B82E3F9a0E857d0b5fea', // portal v1 - // ] - // }, { name: 'boba', - stable: ADDRESSES.boba.USDC, // USDC + tokens: [ + ADDRESSES.boba.USDC, + ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 '0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8', // portal v2 @@ -76,42 +84,54 @@ module.exports = { }, { name: 'boba_avax', - stable: ADDRESSES.boba_avax.USDC_e, // USDC.e + tokens: [ + ADDRESSES.boba_avax.USDC_e, + ], holders: [ '0xd8db4fb1fEf63045A443202d506Bcf30ef404160', // portal v2 ] }, { name: 'boba_bnb', - stable: ADDRESSES.boba_bnb.USDC, // USDC + tokens: [ + ADDRESSES.boba_bnb.USDC, + ], holders: [ '0x6148FD6C649866596C3d8a971fC313E5eCE84882', // pool v2 ] }, { name: 'kava', - stable: ADDRESSES.telos.ETH, // USDC + tokens: [ + ADDRESSES.telos.ETH, + ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, { name: 'era', - stable: ADDRESSES.era.USDC, // USDC + tokens: [ + ADDRESSES.era.USDC, + ], holders: [ '0x39dE19C9fF25693A2311AAD1dc5C790194084A39', // portal v2 ] }, { name: 'arbitrum', - stable: ADDRESSES.arbitrum.USDC, // USDC + tokens: [ + ADDRESSES.arbitrum.USDC, + ], holders: [ '0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9', // portal v2 ] }, { name: 'optimism', - stable: ADDRESSES.optimism.USDC, // USDC + tokens: [ + ADDRESSES.optimism.USDC, + ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] diff --git a/projects/symbiosis-finance/index.js b/projects/symbiosis-finance/index.js index 2b6ff2d4b4..2b5d1b4542 100644 --- a/projects/symbiosis-finance/index.js +++ b/projects/symbiosis-finance/index.js @@ -6,8 +6,8 @@ module.exports = { }; config.chains.forEach(chainInfo => { - const {name: chain, stable, holders} = chainInfo + const {name: chain, tokens, holders} = chainInfo module.exports[chain] = { - tvl: sumTokensExport({ chain, tokens: [ stable ], owners: holders }) + tvl: sumTokensExport({ chain, tokens, owners: holders }) } }) From 3f0b1527bf4dc13f1adcdacb84e3bcc4775ab471 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 18 May 2023 16:20:39 +0100 Subject: [PATCH 0442/1354] crvusd update --- projects/crv-usd/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/crv-usd/index.js b/projects/crv-usd/index.js index f9ee9c0080..a0deab1cbd 100644 --- a/projects/crv-usd/index.js +++ b/projects/crv-usd/index.js @@ -7,6 +7,7 @@ const config = { { factory: '0x818709b85052ddc521fae9c78737b27316337e3a', fromBlock: 17182152 }, { factory: '0x30a2F3c3AA6D12C0a36Bed210dCF1B32EF6228Cc', fromBlock: 17187330 }, { factory: '0xfa3e2db8eb6c646e0d24046c1a185934d41a8f7a', fromBlock: 17187330 }, + { factory: '0xC9332fdCB1C491Dcc683bAe86Fe3cb70360738BC', fromBlock: 17187330 }, ] }, } From 349b318a939c85ae50d4cd9db62ab64286e56571 Mon Sep 17 00:00:00 2001 From: yakifugu Date: Thu, 18 May 2023 13:43:52 -0400 Subject: [PATCH 0443/1354] veSync DEX on zkSync Era --- projects/vesync/index.js | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 projects/vesync/index.js diff --git a/projects/vesync/index.js b/projects/vesync/index.js new file mode 100644 index 0000000000..0273423e49 --- /dev/null +++ b/projects/vesync/index.js @@ -0,0 +1,49 @@ +const { getUniTVL } = require('../helper/unknownTokens'); +const sdk = require('@defillama/sdk'); +const { default: BigNumber } = require('bignumber.js'); + +const GET_AMOUNT_OUT = "function getAmountOut(uint amountIn, address tokenIn, address tokenOut) external view returns (uint amount, bool stable)"; + +const VOTING_ESCROW = "0x1925AB9F9bcdB9E2D2861cc7C4c157645126D9d9"; +const VS = "0x5756A28E2aAe01F600FC2C01358395F5C1f8ad3A"; +const ROUTER = "0x6C31035D62541ceba2Ac587ea09891d1645D6D07"; +const USDC = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; + +const E18 = "1000000000000000000"; +const E6 = "1000000"; + +module.exports = { + misrepresentedTokens: true, + era: { + tvl: getUniTVL({ + factory: '0x529Bd7Fc43285B96f1e8d5158626d1F15bb8A834', + useDefaultCoreAssets: true, + hasStablePools: true, + }), + staking: async (_, _b, cb, { chain, block, api } = {}) => { + if (!chain) { + chain = _chain + block = cb[chain] + } + + const vsBalance = await sdk.api.erc20.balanceOf({ + target: VS, + owner: VOTING_ESCROW, + chain, + block, + }) + + // Use 1 VS as input to get the conversion rate from VS to USDC + const [conversionRate, __] = await api.call({ + target: ROUTER, + abi: GET_AMOUNT_OUT, + params: [E18, VS, USDC] + }) + + return { + "usd-coin": BigNumber(vsBalance.output).div(E18).times(conversionRate).div(E6).toFixed(0) + } + } + }, + methodology: "TVL is total liquidity of all liquidity pools. Staking TVL is the value of VS tokens locked in the voting escrow (veVS) contract.", +}; \ No newline at end of file From 59c0134398bb34cfc8a3adbfd3769d9bfa8e2d28 Mon Sep 17 00:00:00 2001 From: Josh Guha Date: Thu, 18 May 2023 19:42:10 +0100 Subject: [PATCH 0444/1354] Update gyroscope TVL --- projects/gyroscope/index.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/projects/gyroscope/index.js b/projects/gyroscope/index.js index de5d62d29a..2651b62456 100644 --- a/projects/gyroscope/index.js +++ b/projects/gyroscope/index.js @@ -1,25 +1,24 @@ - -const { getLogs, getAddress } = require('../helper/cache/getLogs') const { transformBalances } = require('../helper/portedTokens') const sdk = require('@defillama/sdk') +const GYRO_POOL_ADDRESSES = [ + "0x17f1ef81707811ea15d9ee7c741179bbe2a63887", + "0x97469e6236bd467cd147065f77752b00efadce8a", + "0xdac42eeb17758daa38caf9a3540c808247527ae3", + "0xf0ad209e2e969eaaa8c882aac71f02d8a047d5c2", + "0xfa9ee04a5545d8e0a26b30f5ca5cbecd75ea645f" +] + async function tvl(_, _b, _cb, { api, }) { const balances = {} - const logs = await getLogs({ - api, - target: '0x90f08b3705208e41dbeeb37a42fb628dd483adda', - topics: ['0x83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc'], - fromBlock: 31556094, - }) - const pools = logs.map(i => getAddress(i.topics[1])) const poolIds = await api.multiCall({ abi: 'function getPoolId() view returns (bytes32)', - calls: pools, + calls: GYRO_POOL_ADDRESSES, }) const vault = await api.call({ - target: pools[0], + target: GYRO_POOL_ADDRESSES[0], abi: 'address:getVault', }) const data = await api.multiCall({ From 3929d9d2e7ebb427c3d6d071920e298b83da102f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 19 May 2023 04:53:33 +0100 Subject: [PATCH 0445/1354] add token --- projects/helper/tokenMapping.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 0f26ee11fe..25f22304ae 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -51,6 +51,7 @@ const fixBalancesTokens = { // [ADDRESSES.arbitrum_nova.USDC]: { coingeckoId: "usd-coin", decimals: 6 }, // }, pulse: { + '0xa1077a294dde1b09bb078844df40758a5d0f9a27': { coingeckoId: "pulsechain", decimals: 18 }, '0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c': { coingeckoId: ADDRESSES.ethereum.WETH, decimals: 0, }, '0xefd766ccb38eaf1dfd701853bfce31359239f305': { coingeckoId: ADDRESSES.ethereum.DAI, decimals: 0, }, }, From 7dbba8f5e3455b545f7c122c907c7a2b70a2f227 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 19 May 2023 05:50:02 +0100 Subject: [PATCH 0446/1354] remove ergo --- projects/djed-alliance/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/djed-alliance/index.js b/projects/djed-alliance/index.js index b8ebf5224d..0a7f3d9b5c 100644 --- a/projects/djed-alliance/index.js +++ b/projects/djed-alliance/index.js @@ -24,9 +24,9 @@ async function ergotvl() { module.exports = { methodology: 'The TVL of each Djed deployment is the reserve belonging to the deployment. The TVL within a given blockchain is the sum of the TVLs of all known Djed deployments within that blockchain. The total TVL is the sum of the Djed TVLs on all blockchains.', - ergo:{ + /*ergo:{ //has its own listing under sigmaUSD tvl: ergotvl - }, + },*/ cardano: { tvl: sumTokensExport({ owner: 'addr1z9s3v9vyyctzr4xagvrayw87yvzre6qcq7qw2uvqfznf92qm5kjdmrpmng059yellupyvwgay2v0lz6663swmds7hp0q2jjlf4', tokens: ['lovelace']}), }, From c9eef260abf9915339b472b23b55c3edbfce4dc6 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 19 May 2023 07:35:02 +0100 Subject: [PATCH 0447/1354] add milkomeda djed adapter --- projects/djed-alliance/index.js | 4 ++-- projects/milkomeda-djed/abi.json | 5 +++++ projects/milkomeda-djed/config.json | 10 ++++++++++ projects/milkomeda-djed/index.js | 31 +++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 projects/milkomeda-djed/abi.json create mode 100644 projects/milkomeda-djed/config.json create mode 100644 projects/milkomeda-djed/index.js diff --git a/projects/djed-alliance/index.js b/projects/djed-alliance/index.js index 0a7f3d9b5c..523cd3d1fb 100644 --- a/projects/djed-alliance/index.js +++ b/projects/djed-alliance/index.js @@ -30,8 +30,8 @@ module.exports = { cardano: { tvl: sumTokensExport({ owner: 'addr1z9s3v9vyyctzr4xagvrayw87yvzre6qcq7qw2uvqfznf92qm5kjdmrpmng059yellupyvwgay2v0lz6663swmds7hp0q2jjlf4', tokens: ['lovelace']}), }, - milkomeda: { + /*milkomeda: { start: 10440400, tvl: (timestamp, block, chainBlocks) => tvl('milkomeda', chainBlocks) - }, + },*/ }; diff --git a/projects/milkomeda-djed/abi.json b/projects/milkomeda-djed/abi.json new file mode 100644 index 0000000000..ffe5319866 --- /dev/null +++ b/projects/milkomeda-djed/abi.json @@ -0,0 +1,5 @@ +{ + "Djed": { + "reserve": "function R(uint256 cpa) view returns (uint256 balance)" + } + } \ No newline at end of file diff --git a/projects/milkomeda-djed/config.json b/projects/milkomeda-djed/config.json new file mode 100644 index 0000000000..b7e39bcf85 --- /dev/null +++ b/projects/milkomeda-djed/config.json @@ -0,0 +1,10 @@ +{ + "djedAddress": { + "milkomeda": "0x67A30B399F5Ed499C1a6Bc0358FA6e42Ea4BCe76", + "milkomeda_a1": "0x..." + }, + "reserveTokenAddress": { + "milkomeda": "0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9", + "milkomeda_a1": "0x..." + } + } \ No newline at end of file diff --git a/projects/milkomeda-djed/index.js b/projects/milkomeda-djed/index.js new file mode 100644 index 0000000000..6cf3a6de31 --- /dev/null +++ b/projects/milkomeda-djed/index.js @@ -0,0 +1,31 @@ +const sdk = require('@defillama/sdk'); +const utils = require('../helper/utils'); +const { sumTokensExport } = require("../helper/chain/cardano"); +const { transformBalances } = require('../helper/portedTokens'); + +const abi = require('./abi.json'); +const config = require("./config.json"); + +async function tvl(chain, chainBlocks) { + const balances = {}; + + const reserve = (await sdk.api.abi.call({ + abi: abi.Djed.reserve, chain: chain, target: config.djedAddress[chain], params: [ 0 ], block: chainBlocks[chain], + })).output; + + sdk.util.sumSingleBalance(balances, config.reserveTokenAddress[chain], reserve); // Using WADA address instead of mADA + return transformBalances(chain, balances); +} + +async function ergotvl() { + const {data: { confirmed }} = await utils.fetchURL('https://api.ergoplatform.com/api/v1/addresses/MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX/balance/total'); + return { ergo: confirmed.nanoErgs / 1e9 }; +} + +module.exports = { + methodology: 'The TVL of each Djed deployment on Milkomeda C1.', + milkomeda: { + start: 10440400, + tvl: (timestamp, block, chainBlocks) => tvl('milkomeda', chainBlocks) + }, +}; From 82e019c8103e7c0dfc7a7efde24b2ad1a045a271 Mon Sep 17 00:00:00 2001 From: zkDX-OliverRichards <130122950+zkDX-OliverRichards@users.noreply.github.com> Date: Fri, 19 May 2023 16:34:14 +0800 Subject: [PATCH 0448/1354] add project zkdx - era (#6300) * add project zkdx - era * update staking * rm vault * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkdx/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/zkdx/index.js diff --git a/projects/zkdx/index.js b/projects/zkdx/index.js new file mode 100644 index 0000000000..238d2d8f33 --- /dev/null +++ b/projects/zkdx/index.js @@ -0,0 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const {staking} = require("../helper/staking"); + +module.exports = { + methodology: 'zkDX counts the staking values as tvl', + start: 3744214, + era: { + tvl: staking( + ["0x79033C597B7d8e752a7511cF24512f4A7217C0B8", "0xd6cce119B45Efcb378a4735a96aE08826A37ca1c"], + [ADDRESSES.era.WETH, ADDRESSES.era.USDC] + ) + + } +}; From c79448ffd0e98034b1c0c802e9a0f8973613c2fa Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 May 2023 10:54:21 +0200 Subject: [PATCH 0449/1354] code refactor --- projects/vesync/index.js | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/projects/vesync/index.js b/projects/vesync/index.js index 0273423e49..1ee7507cc4 100644 --- a/projects/vesync/index.js +++ b/projects/vesync/index.js @@ -1,6 +1,4 @@ const { getUniTVL } = require('../helper/unknownTokens'); -const sdk = require('@defillama/sdk'); -const { default: BigNumber } = require('bignumber.js'); const GET_AMOUNT_OUT = "function getAmountOut(uint amountIn, address tokenIn, address tokenOut) external view returns (uint amount, bool stable)"; @@ -9,9 +7,6 @@ const VS = "0x5756A28E2aAe01F600FC2C01358395F5C1f8ad3A"; const ROUTER = "0x6C31035D62541ceba2Ac587ea09891d1645D6D07"; const USDC = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; -const E18 = "1000000000000000000"; -const E6 = "1000000"; - module.exports = { misrepresentedTokens: true, era: { @@ -19,29 +14,16 @@ module.exports = { factory: '0x529Bd7Fc43285B96f1e8d5158626d1F15bb8A834', useDefaultCoreAssets: true, hasStablePools: true, + fetchBalances: true, }), - staking: async (_, _b, cb, { chain, block, api } = {}) => { - if (!chain) { - chain = _chain - block = cb[chain] - } - - const vsBalance = await sdk.api.erc20.balanceOf({ - target: VS, - owner: VOTING_ESCROW, - chain, - block, - }) + staking: async (_, _b, cb, { api } = {}) => { + const vsBalance = await api.call({ target: VS, abi: 'erc20:balanceOf', params: VOTING_ESCROW, }) // Use 1 VS as input to get the conversion rate from VS to USDC - const [conversionRate, __] = await api.call({ - target: ROUTER, - abi: GET_AMOUNT_OUT, - params: [E18, VS, USDC] - }) + const [conversionRate] = await api.call({ target: ROUTER, abi: GET_AMOUNT_OUT, params: [''+1e18, VS, USDC] }) return { - "usd-coin": BigNumber(vsBalance.output).div(E18).times(conversionRate).div(E6).toFixed(0) + "usd-coin": vsBalance *conversionRate / 1e24 } } }, From b538c555d5ec7ba2d6b527acadbb9503c0ad56b6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 May 2023 14:33:35 +0530 Subject: [PATCH 0450/1354] jpeg-d: minor fix (#6312) * remove wallet bakc staked tvl * hallmarks * ape tvl * jpeg-d: minor fix --------- Co-authored-by: 0xLeez --- projects/jpeg-d/helper/abis.js | 13 ++- projects/jpeg-d/helper/addresses.js | 16 ++-- projects/jpeg-d/helper/index.js | 135 +++++++++++----------------- projects/jpeg-d/index.js | 14 +-- 4 files changed, 78 insertions(+), 100 deletions(-) diff --git a/projects/jpeg-d/helper/abis.js b/projects/jpeg-d/helper/abis.js index 6028ec821f..1eb21f5306 100644 --- a/projects/jpeg-d/helper/abis.js +++ b/projects/jpeg-d/helper/abis.js @@ -17,18 +17,25 @@ const APE_STAKING = { stakedTotal: "function stakedTotal(address) external view returns (uint256)", }; +const P2P_APE_STAKING_ABI = { + nextNonce: "function nextNonce() external view returns (uint256)", + offers: "function offers(uint24) view returns (uint8 offerType, tuple(uint8 collection, uint16 tokenId) mainNft, uint16 bakcTokenId, uint80 apeAmount, uint16 apeRewardShareBps, uint16 bakcRewardShareBps, bool isPaired, uint80 lastSingleStakingRewardPerShare)" +}; + const ERC721 = { tokenOfOwnerByIndex: "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", }; const PROVIDER_ABI = { - "nftType": "function nftTypes(uint256) view returns (bytes32)", - "nftTypeValueMultiplier": "function nftTypeValueMultiplier(bytes32) view returns (uint128 numerator, uint128 denominator)" -} + nftType: "function nftTypes(uint256) view returns (bytes32)", + nftTypeValueMultiplier: + "function nftTypeValueMultiplier(bytes32) view returns (uint128 numerator, uint128 denominator)", +}; module.exports = { VAULT_ABI, + P2P_APE_STAKING_ABI, PROVIDER_ABI, STRATEGY_ABI, APE_STAKING, diff --git a/projects/jpeg-d/helper/addresses.js b/projects/jpeg-d/helper/addresses.js index 50f2a1609d..282b30da45 100644 --- a/projects/jpeg-d/helper/addresses.js +++ b/projects/jpeg-d/helper/addresses.js @@ -81,13 +81,11 @@ const VAULTS_ADDRESSES = [ const BAYC_VAULTS = [BAYC_PUSD_VAULT, BAYC_PETH_VAULT, BAYC_PETH_VAULT]; const MAYC_VAULTS = [MAYC_PUSD_VAULT, MAYC_PETH_VAULT, MAYC_PETH_VAULT_B]; +const P2P_APE_STAKING = "0xD4b06218C545C047ac3ACc7cE49d124C172DB409"; const BAYC_APE_STAKING_STRATEGY = "0x6b2e47560CC810C2Dce3bf2C0Da4310eC0af8831"; const MAYC_APE_STAKING_STRATEGY = "0x6b2e47560CC810C2Dce3bf2C0Da4310eC0af8831"; -const BAKC_BAYC_STAKING_STRATEGY = "0xA0a4D16f2aD04dDFB627359601998a6Fd0f1f1e4"; -const BAKC_MAYC_STAKING_STRATEGY = "0x30dff12b9416b232fa536d48959a02bc4d3c15ba"; const APE_STAKING = "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9"; const APE = "0x4d224452801aced8b2f0aebe155379bb5d594381"; -const BAKC = "0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623"; const PETH_ETH_PAIR = "0x9848482da3Ee3076165ce6497eDA906E66bB85C5"; const PETH_ETH_VAULT = "0x56D1b6Ac326e152C9fAad749F1F4f9737a049d46"; @@ -122,23 +120,21 @@ module.exports = { VAULTS_ADDRESSES, BAYC_VAULTS, MAYC_VAULTS, + P2P_APE_STAKING, BAYC_APE_STAKING_STRATEGY, MAYC_APE_STAKING_STRATEGY, - BAKC_BAYC_STAKING_STRATEGY, - BAKC_MAYC_STAKING_STRATEGY, APE_STAKING, APE, - BAKC, JPEG, STAKING_CONTRACT, JPEG_WETH_SLP, PETH_ETH_PAIR, PETH_ETH_VAULT, LP_STAKING, - PETH_ETH_F: '0x56D1b6Ac326e152C9fAad749F1F4f9737a049d46', - PETH_POOL: '0x9848482da3ee3076165ce6497eda906e66bb85c5', - PUSD_USD_F: '0xF6Cbf5e56a8575797069c7A7FBED218aDF17e3b2', - USD_POOL: '0x8ee017541375f6bcd802ba119bddc94dad6911a1', + PETH_ETH_F: "0x56D1b6Ac326e152C9fAad749F1F4f9737a049d46", + PETH_POOL: "0x9848482da3ee3076165ce6497eda906e66bb85c5", + PUSD_USD_F: "0xF6Cbf5e56a8575797069c7A7FBED218aDF17e3b2", + USD_POOL: "0x8ee017541375f6bcd802ba119bddc94dad6911a1", helperToNftMapping, artBlockOwners, }; diff --git a/projects/jpeg-d/helper/index.js b/projects/jpeg-d/helper/index.js index 170c0928ce..2ca5ed7c02 100644 --- a/projects/jpeg-d/helper/index.js +++ b/projects/jpeg-d/helper/index.js @@ -1,4 +1,3 @@ -const ADDRESSES = require('../../helper/coreAssets.json') const { sumTokens2, nullAddress } = require("../../helper/unwrapLPs"); const abi = require("./abis"); const { @@ -7,12 +6,10 @@ const { MAYC_VAULTS, BAYC_APE_STAKING_STRATEGY, MAYC_APE_STAKING_STRATEGY, - BAKC_BAYC_STAKING_STRATEGY, - BAKC_MAYC_STAKING_STRATEGY, APE_STAKING, + P2P_APE_STAKING, STAKING_CONTRACT, APE, - BAKC, JPEG, PETH_POOL, USD_POOL, @@ -95,117 +92,91 @@ async function stakingJPEGD(_, _1, _2, { api }) { calls: VAULTS_ADDRESSES, }); - providersAddresses.push(STAKING_CONTRACT) + providersAddresses.push(STAKING_CONTRACT); - return sumTokens2({ owners: providersAddresses, tokens: [JPEG], api }) + return sumTokens2({ owners: providersAddresses, tokens: [JPEG], api }); } /** * @returns the amount of $APE tokens staked on JPEG'd */ async function getStakedApeAmount(api) { - const apeDepositAddresses = await getApeDepositAddresses(api); - const apeStakes = await api.multiCall({ - abi: abi.APE_STAKING.stakedTotal, - target: APE_STAKING, - calls: apeDepositAddresses, - }) - apeStakes.forEach(v => api.add(APE, v)) -} - -/** - * @returns the amount of wallet staked BAKC NFTs on JPEG'd - */ -async function getWalletStakedBakcCount(api) { - const apeDepositAddresses = await getApeDepositAddresses(api); - - const bakcBalances = await api.multiCall({ - abi: "erc20:balanceOf", - target: BAKC, - calls: apeDepositAddresses, - }); - - const bakcIdsBN = await api.multiCall({ - abi: abi.ERC721.tokenOfOwnerByIndex, - target: BAKC, - calls: apeDepositAddresses - .map((owner, i) => - Array.from({ length: bakcBalances[i].toString() }).map((_, j) => ({ - params: [owner, j], - })) - ) - .flat(), - }); - - const bakcIds = Array.from(new Set(bakcIdsBN.map((id) => id.toString()))); - const ownerBakcIndexTuples = bakcIds.map((bakcId) => [ - ADDRESSES.null, // random owner address, it's not used. just for consistent parameters - bakcId.toString(), + const [apeDepositAddresses, lastNonce] = await Promise.all([ + getApeDepositAddresses(api), + api.call({ + target: P2P_APE_STAKING, + abi: abi.P2P_APE_STAKING_ABI.nextNonce, + }), ]); - const [isNonLegacyBaycStaked, isNonLegacyMaycStaked] = await Promise.all([ + const [apeStakes, offers] = await Promise.all([ api.multiCall({ - abi: abi.STRATEGY_ABI.isDeposited, - calls: ownerBakcIndexTuples.map((params) => ({ - target: BAKC_BAYC_STAKING_STRATEGY, - params, - })), + abi: abi.APE_STAKING.stakedTotal, + target: APE_STAKING, + calls: apeDepositAddresses, }), api.multiCall({ - abi: abi.STRATEGY_ABI.isDeposited, - calls: ownerBakcIndexTuples.map((params) => ({ - target: BAKC_MAYC_STAKING_STRATEGY, - params, - })), + abi: abi.P2P_APE_STAKING_ABI.offers, + target: P2P_APE_STAKING, + calls: new Array(Number(lastNonce)).fill(null).map((_, i) => i), }), ]); - bakcIds.forEach((_, i) => { - const legacyBakc = !isNonLegacyBaycStaked[i] && !isNonLegacyMaycStaked[i]; - if (legacyBakc) api.add(BAKC, 1) - }); + apeStakes.forEach((v) => api.add(APE, v)); + offers.forEach((v) => api.add(APE, v.apeAmount)); } async function vaultsTvl(api) { // Fetch positions from vaults - const positions = await api.multiCall({ calls: VAULTS_ADDRESSES, abi: abi.VAULT_ABI.totalPositions, }) - let tokens = await api.multiCall({ abi: 'address:nftContract', calls: VAULTS_ADDRESSES }) - tokens = tokens.map(i => i.toLowerCase()) - const transform = t => helperToNftMapping[t.toLowerCase()] || t + const positions = await api.multiCall({ + calls: VAULTS_ADDRESSES, + abi: abi.VAULT_ABI.totalPositions, + }); + let tokens = await api.multiCall({ + abi: "address:nftContract", + calls: VAULTS_ADDRESSES, + }); + tokens = tokens.map((i) => i.toLowerCase()); + const transform = (t) => helperToNftMapping[t.toLowerCase()] || t; tokens.forEach((v, i) => { if (artBlockOwners.has(v)) return; - api.add(transform(v), positions[i]) - }) + api.add(transform(v), positions[i]); + }); } - async function autocompoundingTvl(api) { - const curveBalApi = 'function balances(uint256) view returns (uint256)' + const curveBalApi = "function balances(uint256) view returns (uint256)"; const [ - ethInPETHFactory, pethGaugeSupply, pethGaugeBalance, - usdInPUSDFactory, pusdGaugeSupply, pusdGaugeBalance, - ] = await api.batchCall([ - { target: PETH_POOL, abi: curveBalApi, params: [0]}, - { target: PETH_POOL, abi: 'erc20:totalSupply'}, - { target: PETH_ETH_F, abi: 'erc20:balanceOf', params: [LP_STAKING]}, - { target: USD_POOL, abi: curveBalApi, params: [1]}, - { target: USD_POOL, abi: 'erc20:totalSupply'}, - { target: PUSD_USD_F, abi: 'erc20:balanceOf', params: [LP_STAKING]}, - ]) - - api.add(nullAddress, ethInPETHFactory * pethGaugeSupply / pethGaugeSupply) - api.add('0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490', usdInPUSDFactory * pusdGaugeBalance / pusdGaugeSupply) + ethInPETHFactory, + pethGaugeSupply, + pethGaugeBalance, + usdInPUSDFactory, + pusdGaugeSupply, + pusdGaugeBalance, + ] = await api.batchCall([ + { target: PETH_POOL, abi: curveBalApi, params: [0] }, + { target: PETH_POOL, abi: "erc20:totalSupply" }, + { target: PETH_ETH_F, abi: "erc20:balanceOf", params: [LP_STAKING] }, + { target: USD_POOL, abi: curveBalApi, params: [1] }, + { target: USD_POOL, abi: "erc20:totalSupply" }, + { target: PUSD_USD_F, abi: "erc20:balanceOf", params: [LP_STAKING] }, + ]); + + api.add(nullAddress, (ethInPETHFactory * pethGaugeSupply) / pethGaugeSupply); + api.add( + "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", + (usdInPUSDFactory * pusdGaugeBalance) / pusdGaugeSupply + ); } async function tvl(ts, b, cb, { api }) { await Promise.all([ getStakedApeAmount(api), - getWalletStakedBakcCount(api), vaultsTvl(api), autocompoundingTvl(api), - sumTokens2({ api, resolveArtBlocks: true, owners: [...artBlockOwners], }), + sumTokens2({ api, resolveArtBlocks: true, owners: [...artBlockOwners] }), ]); } -module.exports = { tvl, stakingJPEGD, }; +module.exports = { tvl, stakingJPEGD }; diff --git a/projects/jpeg-d/index.js b/projects/jpeg-d/index.js index 4af3ac8c51..f27d8b8c71 100644 --- a/projects/jpeg-d/index.js +++ b/projects/jpeg-d/index.js @@ -1,21 +1,25 @@ const { staking } = require("../helper/staking"); const { tvl, stakingJPEGD } = require("./helper/index"); -const { - LP_STAKING, - JPEG_WETH_SLP, -} = require("./helper/addresses"); +const { LP_STAKING, JPEG_WETH_SLP } = require("./helper/addresses"); module.exports = { methodology: `Counts the floor value of all NFTs supplied in the protocol vaults`, ethereum: { tvl, staking: stakingJPEGD, - pool2: staking(LP_STAKING, [JPEG_WETH_SLP,]), + pool2: staking(LP_STAKING, [JPEG_WETH_SLP]), }, hallmarks: [ [1666003500, "pETH borrows"], [1669551000, "JPEG LTV boost"], [1670518800, "APE staking"], [1674669600, "Autoglyphs & Fidenza support"], + [1675166400, "Ringers & Chromie Squiggle support"], + [1675598400, "70% LTV for CryptoPunks & BAYC"], + [1678665600, "Otherdeeds support"], + [1678665600, "Meebits support"], + [1679529600, "BAKC support"], + [1683662400, "P2P Ape Staking"], + [1684108800, "Milady support"], ], }; From fed0ce3d545bceb16515c1ee83530bca4fd2680e Mon Sep 17 00:00:00 2001 From: Alexander Belokon Date: Fri, 19 May 2023 12:07:15 +0300 Subject: [PATCH 0451/1354] RociFi v2: add data for zkSync era mainnet (#6305) --- projects/rocifi-v2/index.js | 43 +++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/projects/rocifi-v2/index.js b/projects/rocifi-v2/index.js index 8e7b584cc8..5afc21779c 100644 --- a/projects/rocifi-v2/index.js +++ b/projects/rocifi-v2/index.js @@ -1,29 +1,40 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const sdk = require('@defillama/sdk') -const ROCI_COLLATERAL_MANAGER = "0xd85af14C32Cc98Be9Fe5195eDb797773af8bB609"; -const ROCI_SETTINGS_PROVIDER = "0xb2e577a112A6F2C6d3d511ade2AD512cEA312a6d"; -const ROCI_LIMIT_MANAGER = "0x347892c2c0C230f0803127F4E1137b3e975F57E4"; +const ROCI_COLLATERAL_MANAGER = { + polygon: '0xd85af14C32Cc98Be9Fe5195eDb797773af8bB609', + era: '0x0C10f6BeaF642Fa43bA8375f160F45704c865E65' +} + +const ROCI_SETTINGS_PROVIDER = { + polygon: '0xb2e577a112A6F2C6d3d511ade2AD512cEA312a6d', + era: '0x719b5f658C13C943010718266a22D8F76cbfc8B9' +} + +const ROCI_LIMIT_MANAGER = { + polygon: '0x347892c2c0C230f0803127F4E1137b3e975F57E4', + era: '0xc8531874Dfe8bc6415e06C1C1eD64dbf5dCeEa18' +} const limitManagerAbi = 'function poolToBorrowedAmount(address) view returns (uint256)' -async function getPools(api) { - const pools = await api.call({ target: ROCI_SETTINGS_PROVIDER, abi: "address[]:getPools", }); +const getPools = async (chain, api) => { + const pools = await api.call({ target: ROCI_SETTINGS_PROVIDER[chain], abi: "address[]:getPools", }); const underlyings = await api.multiCall({ abi: "address:underlyingToken", calls: pools }) return { pools, underlyings } } -async function tvl(_, __, _1, { api }) { - const { pools, underlyings } = await getPools(api); +const tvl = (chain) => async (_, __, _1, { api }) => { + const { pools, underlyings } = await getPools(chain, api); const collaterals = await api.call({ - target: ROCI_COLLATERAL_MANAGER, + target: ROCI_COLLATERAL_MANAGER[chain], abi: "address[]:getCollaterals", }); const toa = [ ...pools.map((pool, i) => [underlyings[i], pool]), - ...collaterals.map((collateral) => [collateral, ROCI_COLLATERAL_MANAGER]), + ...collaterals.map((collateral) => [collateral, ROCI_COLLATERAL_MANAGER[chain]]), ]; return sumTokens2({ @@ -32,18 +43,22 @@ async function tvl(_, __, _1, { api }) { }); } -async function borrowed(_, __, _1, { api }) { - const { pools, underlyings } = await getPools(api); +const borrowed = (chain) => async (_, __, _1, { api }) => { + const { pools, underlyings } = await getPools(chain, api); const balances = {}; - const borrowed = await api.multiCall({ abi: limitManagerAbi, calls: pools, target: ROCI_LIMIT_MANAGER }) + const borrowed = await api.multiCall({ abi: limitManagerAbi, calls: pools, target: ROCI_LIMIT_MANAGER[chain] }) underlyings.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain)) return balances } module.exports = { polygon: { - tvl, - borrowed, + tvl: tvl('polygon'), + borrowed: borrowed('polygon'), + }, + era: { + tvl: tvl('era'), + borrowed: borrowed('era'), }, }; From d85c5d5ad237051286de5aea34486329eb3d254d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 May 2023 15:47:07 +0530 Subject: [PATCH 0452/1354] Ethos (#6299) * tvl integration for ethos reserve * ethos: refactor code * refactor balancer pool unwrap logic --------- Co-authored-by: 0xTheCrow Co-authored-by: The Crow <16514232+0xTheCrow@users.noreply.github.com> --- projects/AxiaProtocol/index.js | 6 ++-- projects/aave/index.js | 4 +-- projects/aura-finance/index.js | 8 ++--- projects/ethos/index.js | 22 +++++++++++++ projects/helper/unwrapLPs.js | 60 ++++++++++++++++------------------ projects/roaring-lion/index.js | 16 +++------ 6 files changed, 64 insertions(+), 52 deletions(-) create mode 100644 projects/ethos/index.js diff --git a/projects/AxiaProtocol/index.js b/projects/AxiaProtocol/index.js index bdbf64279b..92d392856b 100644 --- a/projects/AxiaProtocol/index.js +++ b/projects/AxiaProtocol/index.js @@ -17,10 +17,10 @@ const oracleFundLPEth = '0xbf11db4e63c72c5dffde0f5831d667817c9e9ad5' async function tvl(_, _b, _cb, { api, }) { const balances = {} - + await Promise.all([ - unwrapBalancerToken({ ...api, owner: defiFundEth, balancerToken: defiFundLPEth, balances, isBPool: true, }), - unwrapBalancerToken({ ...api, owner: oracleFundEth, balancerToken: oracleFundLPEth, balances, isBPool: true, }), + unwrapBalancerToken({ api, owner: defiFundEth, balancerToken: defiFundLPEth, balances, isBPool: true, isV2: false, }), + unwrapBalancerToken({ api, owner: oracleFundEth, balancerToken: oracleFundLPEth, balances, isBPool: true, isV2: false, }), ]) return balances diff --git a/projects/aave/index.js b/projects/aave/index.js index 1f1aed2a4b..98f526686b 100644 --- a/projects/aave/index.js +++ b/projects/aave/index.js @@ -31,8 +31,8 @@ function ethereum(borrowed) { const aaveTokenAddress = ADDRESSES.ethereum.AAVE; -async function stakingBalancerTvl(timestamp, block) { - return unwrapBalancerToken({ block, owner: '0xa1116930326d21fb917d5a27f1e9943a9595fb47', balancerToken: '0x41a08648c3766f9f9d85598ff102a08f4ef84f84' }) +async function stakingBalancerTvl(timestamp, block, _, { api }) { + return unwrapBalancerToken({ api, owner: '0xa1116930326d21fb917d5a27f1e9943a9595fb47', balancerToken: '0x41a08648c3766f9f9d85598ff102a08f4ef84f84', isV2: false, }) } const aaveStakingContract = "0x4da27a545c0c5b758a6ba100e3a049001de870f5"; diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index d9462ad5d9..290d243f44 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -2,7 +2,7 @@ const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { staking } = require("../helper/staking"); const BigNumber = require('bignumber.js') -const { unwrapBalancerPool } = require('../helper/unwrapLPs') +const { unwrapBalancerToken } = require('../helper/unwrapLPs') const AURA_BOOSTER = "0x7818A1DA7BD1E64c199029E86Ba244a9798eEE10" const AURA_BOOSTER_2 = "0xA57b8d98dAE62B26Ec3bcC4a365338157060B234" @@ -40,15 +40,15 @@ async function tvl(_, block, _1, { api }) { const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veBal, owner: addresses.auraDelegate, block }) const ratio = veBalance / veBalTotalSupply const ratios = balancesinStaking.map((v, i) => +totalSupplies[i] > 0 ? v / totalSupplies[i]: 0) - const bal = await unwrapBalancerPool({ block, balancerPool: addresses.bal80eth20, owner: addresses.veBal, }) + const bal = await unwrapBalancerToken({ api, balancerToken: addresses.bal80eth20, owner: addresses.veBal, }) Object.entries(bal).forEach(([token, value]) => { api.add(token, +value * ratio, { skipChain: true,}) }) for (let [i, info] of poolTokensInfo.entries()) { - // // unwrapBalancerPool would be better here, but since crvRewards address holds aura-wrapped tokens, it won't work + // // unwrapBalancerToken would be better here, but since crvRewards address holds aura-wrapped tokens, it won't work // if (poolIds[i] == "0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249") { // // Pool is 80BAL-20ETH/auraBAL, need to unwrap 80BAL-20ETH - // const unwrapped = await unwrapBalancerPool({ block: api.block, balancerPool: addresses.bal80eth20, owner: BALANCER_VAULT }) + // const unwrapped = await unwrapBalancerToken({ block: api.block, balancerPool: addresses.bal80eth20, owner: BALANCER_VAULT }) // Object.entries(unwrapped).forEach(([token, balance]) => { // api.add(token, balance * ratio) // }) diff --git a/projects/ethos/index.js b/projects/ethos/index.js new file mode 100644 index 0000000000..5bb56ca4ed --- /dev/null +++ b/projects/ethos/index.js @@ -0,0 +1,22 @@ +const { unwrapBalancerToken } = require("../helper/unwrapLPs") + +async function tvl(_, _b, _cb, { api, }) { + const ADMIN_ADDR = '0xd584a5e956106db2fe74d56a0b14a9d64be8dc93' + const CONFIG_ADDR = await api.call({ abi: 'address:collateralConfig', target: ADMIN_ADDR }) + const collaterals = await api.call({ abi: 'address[]:getAllowedCollaterals', target: CONFIG_ADDR }) + const ACTIVE_POOL = await api.call({ abi: 'address:activePool', target: ADMIN_ADDR }) + const bals = await api.multiCall({ abi: 'function getEntireSystemColl(address) view returns (uint256)', target: ADMIN_ADDR, calls: collaterals }) + api.addTokens(collaterals, bals) +} + +async function pool2(_, _b, _cb, { api, }) { + return unwrapBalancerToken({ ...api, balancerToken: '0xd20f6F1D8a675cDCa155Cb07b5dC9042c467153f', owner: '0x9425b96462b1940e7563cd765464300f6a774805'}) + +} +module.exports = { + methodology: `TVL is fetched from the Ethos Reserve subgraph and the Byte Masons token price api.`, + optimism: { + tvl, + pool2, + }, +} diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 60cdaeb1c5..31c235b937 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -502,9 +502,9 @@ async function genericUnwrapCvx(balances, holder, cvx_BaseRewardPool, block, cha async function genericUnwrapCvxDeposit({ api, owner, token, balances }) { if (!balances) balances = await api.getBalances() - const [bal, cToken ] = await api.batchCall([ + const [bal, cToken] = await api.batchCall([ { target: token, params: owner, abi: 'erc20:balanceOf' }, - { target: token, abi: 'address:curveToken' }, + { target: token, abi: 'address:curveToken' }, ]) sdk.util.sumSingleBalance(balances, cToken, bal, api.chain) return balances @@ -705,39 +705,38 @@ function sumTokensExport({ balances, tokensAndOwners, tokens, owner, owners, tra return async (_, _b, _cb, { api }) => sumTokens2({ api, balances, tokensAndOwners, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) } -async function unwrapBalancerToken({ chain, block, balancerToken, owner, balances = {}, isBPool = false, }) { - const { output: lpTokens } = await sdk.api.erc20.balanceOf({ target: balancerToken, owner, chain, block, }) - const { output: lpSupply } = await sdk.api.erc20.totalSupply({ target: balancerToken, chain, block, }) - let underlyingPool = balancerToken - if (!isBPool) - underlyingPool = await sdk.api2.abi.call({ target: balancerToken, abi: bPool, chain, block, }) - const { output: underlyingTokens } = await sdk.api.abi.call({ target: underlyingPool, abi: getCurrentTokens, chain, block, }) - - const ratio = lpTokens / lpSupply - const tempBalances = await sumTokens2({ owner: underlyingPool, tokens: underlyingTokens, chain, block, }) - for (const [token, value] of Object.entries(tempBalances)) { - const newValue = BigNumber(value * ratio).toFixed(0) - sdk.util.sumSingleBalance(balances, token, newValue) +async function unwrapBalancerToken({ api, chain, block, balancerToken, owner, balances = {}, isBPool = false, isV2 = true }) { + if (!api) { + api = new sdk.ChainApi({ chain, block, }) } + const [lpSupply, lpTokens] = await api.batchCall([ + { abi: 'erc20:totalSupply', target: balancerToken }, + { abi: 'erc20:balanceOf', target: balancerToken, params: owner }, + ]) + if (+lpTokens === 0) return balances + const ratio = lpTokens / lpSupply - return balances -} + if (isV2) { + const poolId = await api.call({ abi: 'function getPoolId() view returns (bytes32)', target: balancerToken }) + const vault = await api.call({ abi: 'address:getVault', target: balancerToken }) + const [tokens, bals] = await api.call({ abi: 'function getPoolTokens(bytes32) view returns (address[], uint256[],uint256)', target: vault, params: poolId }) + tokens.forEach((v, i) => { + sdk.util.sumSingleBalance(balances, v, bals[i] * ratio, api.chain) + }) + } else { + let underlyingPool = balancerToken + if (!isBPool) + underlyingPool = await api.call({ target: balancerToken, abi: bPool, }) -async function unwrapBalancerPool({ chain = 'ethereum', block, balancerPool, owner, balances = {} }) { - const { output: vault } = await sdk.api.abi.call({ target: balancerPool, abi: getBalancerVault, chain, block, }) - const { output: poolId } = await sdk.api.abi.call({ target: balancerPool, abi: getPoolId, chain, block, }) - const { output: poolTokens } = await sdk.api.abi.call({ target: vault, params: [poolId], abi: getPoolTokens, chain, block, }) - const transform = await getChainTransform(chain) + const underlyingTokens = await api.call({ target: underlyingPool, abi: getCurrentTokens, }) - const { output: lpTokens } = await sdk.api.erc20.balanceOf({ target: balancerPool, owner, chain, block, }) - const { output: lpSupply } = await sdk.api.erc20.totalSupply({ target: balancerPool, chain, block, }) + const tempBalances = await sumTokens2({ owner: underlyingPool, tokens: underlyingTokens, api, }) + for (const [token, value] of Object.entries(tempBalances)) { + const newValue = BigNumber(value * ratio).toFixed(0) + sdk.util.sumSingleBalance(balances, token, newValue) + } + } - const ratio = lpTokens / lpSupply - const { tokens, balances: bal, } = poolTokens - tokens.forEach((token, i) => { - const newValue = BigNumber(+bal[i] * ratio).toFixed(0) - sdk.util.sumSingleBalance(balances, transform(token), newValue) - }) return balances } @@ -759,7 +758,6 @@ module.exports = { nullAddress, sumTokens2, unwrapBalancerToken, - unwrapBalancerPool, sumTokensExport, genericUnwrapCvxDeposit, } diff --git a/projects/roaring-lion/index.js b/projects/roaring-lion/index.js index 39ab03fe87..788051bb15 100644 --- a/projects/roaring-lion/index.js +++ b/projects/roaring-lion/index.js @@ -1,5 +1,5 @@ const sdk = require("@defillama/sdk"); -const { unwrapBalancerPool } = require('../helper/unwrapLPs') +const { unwrapBalancerToken } = require('../helper/unwrapLPs') const LION = "0x3CC9E655B6c4f530DFc1b1fC51CeEa65c6344716"; const LSHARE = "0x50d8D7F7CcEA28cc1C9dDb996689294dC62569cA"; @@ -8,22 +8,14 @@ const rewardPool = "0x119ad97096fff8629347f5af7f36ac1a32de4f2d"; //users can only lock lps in the boardroom -async function pool2(timestamp, block, chainBlocks) { - return await unwrapBalancerPool({ - chain: 'bsc', - chainBlocks, - balancerPool: "0x950667EF678bAe44Ef037c721E564C365FC8303E", - owner: boardroom, }) +async function pool2(timestamp, block, chainBlocks, { api }) { + return unwrapBalancerToken({ api, balancerToken: "0x950667EF678bAe44Ef037c721E564C365FC8303E", owner: boardroom, }) } -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - return balances; -} module.exports = { methodology: 'TVL consists of 30DAI-70LSHARE balancer pools that users can lock in the boardroom', bsc: { - tvl: tvl, + tvl: () => ({}), pool2: pool2, //staking: LshareRewardPool has no tokens locked } From e782efa9305f0b95153afc795ce9cd715c080ba7 Mon Sep 17 00:00:00 2001 From: xwaynec Date: Fri, 19 May 2023 18:20:44 +0800 Subject: [PATCH 0453/1354] update zomma protocol contract address (#6315) * update zomma protocol contract address * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zomma/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/zomma/index.js b/projects/zomma/index.js index 89c21e48ef..d558009b58 100644 --- a/projects/zomma/index.js +++ b/projects/zomma/index.js @@ -1,13 +1,14 @@ const { sumTokensExport } = require("../helper/sumTokens"); -const ZOMMA_CONTRACT = "0x709051774c60c0527dbaf880f41425eae036efaf"; +const ZOMMA_CONTRACT_old = "0x709051774c60c0527dbaf880f41425eae036efaf"; +const ZOMMA_CONTRACT = "0x7bf1f1c2d8caa200b068747487cb9bf109e529f1"; const USDC_CONTRACT = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; module.exports = { methodology: "TVL is calculated as the sum of USDC deposited by traders and the liquidity in the Pools.", era: { tvl: sumTokensExport({ - owner: ZOMMA_CONTRACT, + owners: [ZOMMA_CONTRACT,ZOMMA_CONTRACT_old], tokens: [USDC_CONTRACT], }), }, From 8632b0932bc334b96a8c50635c2fdb4d5f286fa1 Mon Sep 17 00:00:00 2001 From: Raul <42917076+elRaulito@users.noreply.github.com> Date: Fri, 19 May 2023 12:45:53 +0200 Subject: [PATCH 0454/1354] Added collection offers (#6201) --- projects/fluidtokens/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js index b3578dd723..f0488ad110 100644 --- a/projects/fluidtokens/index.js +++ b/projects/fluidtokens/index.js @@ -76,9 +76,17 @@ async function tvl( .forEach((x) => { SC2_tvl += parseInt(x.loanRequestData.loanAmnt); }); + + const dataOffers = await get("https://api.fluidtokens.com/get-available-collection-offers"); + let SC_offers_tvl = 0; + + dataOffers.forEach((i) => { + SC_offers_tvl += parseInt(i.offerData.loanAmnt); + }); + return { - cardano: (SC1_tvl + SC2_tvl) / 1e6, + cardano: (SC1_tvl + SC2_tvl +SC_offers_tvl) / 1e6, }; } From 76e1a17afb0775fc54b3363cdceadd5695dff20a Mon Sep 17 00:00:00 2001 From: Brdd Mnk Date: Fri, 19 May 2023 18:36:00 +0300 Subject: [PATCH 0455/1354] new strategy (#6316) --- projects/parallax/index.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/projects/parallax/index.js b/projects/parallax/index.js index 54483536a5..94b445f130 100644 --- a/projects/parallax/index.js +++ b/projects/parallax/index.js @@ -1,15 +1,25 @@ async function tvl(time, _ethBlock, _1, { api }) { - await Promise.all([ - addMIMStrategy(api) - ]) + await Promise.all([addMIMStrategy(api)]); } async function addMIMStrategy(api) { - const token = '0x30dF229cefa463e991e29D42DB0bae2e122B2AC7' - const sorbettiere = '0x839de324a1ab773f76a53900d70ac1b913d2b387' - const strategy = '0x7b8eFCd93ee71A0480Ad4dB06849B75573168AF4' - const [bal] = await api.call({ abi: 'function userInfo(uint256, address) view returns (uint256,uint256,uint256)', target: sorbettiere, params:[0, strategy] }) - api.add(token, bal) + const token = "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7"; + const sorbettiere = "0x839de324a1ab773f76a53900d70ac1b913d2b387"; + // const strategy = "0x7b8eFCd93ee71A0480Ad4dB06849B75573168AF4"; + const strategies = [ + "0x7b8eFCd93ee71A0480Ad4dB06849B75573168AF4", + "0xbf81Ba9D10F96ce0bb1206DE5F2d5B363f9796A9", + ]; + for (let iterator = 0; iterator < strategies.length; iterator++) { + const strategy = strategies[iterator]; + const [bal] = await api.call({ + abi: "function userInfo(uint256, address) view returns (uint256,uint256,uint256)", + target: sorbettiere, + params: [0, strategy], + }); + + api.add(token, bal); + } } module.exports = { From d6ccc2ec721efcb5a0391df2b1d1c68659cf2b2e Mon Sep 17 00:00:00 2001 From: Yolley Date: Fri, 19 May 2023 19:37:29 +0400 Subject: [PATCH 0456/1354] add Streamflow tvl for Aptos and EVM chains (#6318) --- projects/streamflow/index.js | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/projects/streamflow/index.js b/projects/streamflow/index.js index 956f69e4b5..517cc1b681 100644 --- a/projects/streamflow/index.js +++ b/projects/streamflow/index.js @@ -1,18 +1,27 @@ const { getCache } = require('../helper/http') -const SOLANA = "SOLANA"; const TVL_KEY = "tvl"; const VESTING_KEY = "tvl_vested"; const api = "https://metabase.internal-streamflow.com/_public/api/v1/stats/accumulated"; +const chains = [ + "solana", + "aptos", + "bsc", + "polygon", + "ethereum", +]; +const chainMapping = { + bsc: 'bnb' +}; -const getValueForKey = (arr, key) => { +const getValueForKey = (arr, chain, key) => { for (let i = 0; i < arr.length; i++) { - if (arr[i].chain === SOLANA && arr[i][key] !== undefined) { + if (arr[i].chain.toLowerCase() === (chainMapping[chain] || chain) && arr[i][key] !== undefined) { return arr[i][key]; } } - return null; + return 0; } async function getCachedApiRespnse() { @@ -21,14 +30,14 @@ async function getCachedApiRespnse() { return apiResponse; } -async function tvl() { +async function tvl(_, _1, _2, { api }) { return { - tether: getValueForKey(await getCachedApiRespnse(), TVL_KEY), + tether: getValueForKey(await getCachedApiRespnse(), api.chain, TVL_KEY), } } -async function vesting() { +async function vesting(_, _1, _2, { api }) { return { - tether: getValueForKey(await getCachedApiRespnse(), VESTING_KEY), + tether: getValueForKey(await getCachedApiRespnse(), api.chain, VESTING_KEY), } } @@ -36,7 +45,9 @@ module.exports = { methodology: 'Token breakdown: https://metabase.internal-streamflow.com/public/dashboard/fe3731c1-fbe4-4fb6-8960-515af1d6e72d', timetravel: false, misrepresentedTokens: true, - solana: { - tvl, vesting, - }, } +chains.forEach((chain) => { + module.exports[chain] = { + tvl, vesting + }; +}); From cb211a74cba402c80e990b3bdc3eece5ab9a02ea Mon Sep 17 00:00:00 2001 From: Raul <42917076+elRaulito@users.noreply.github.com> Date: Fri, 19 May 2023 17:38:33 +0200 Subject: [PATCH 0457/1354] Added repayments locked in smart contract until Lenders claim them (#6319) --- projects/fluidtokens/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js index f0488ad110..abb10b2309 100644 --- a/projects/fluidtokens/index.js +++ b/projects/fluidtokens/index.js @@ -84,9 +84,10 @@ async function tvl( SC_offers_tvl += parseInt(i.offerData.loanAmnt); }); + const repay_tvl = parseInt(await get("https://api.fluidtokens.com/get-total-available-repayments")); return { - cardano: (SC1_tvl + SC2_tvl +SC_offers_tvl) / 1e6, + cardano: (SC1_tvl + SC2_tvl +SC_offers_tvl+repay_tvl) / 1e6, }; } From c138e9cf5598aa0e843a6d51d7e7715b5a067b85 Mon Sep 17 00:00:00 2001 From: bigzPubkey Date: Fri, 19 May 2023 18:15:01 -0400 Subject: [PATCH 0458/1354] Update drift.js (#6320) --- projects/drift.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/projects/drift.js b/projects/drift.js index dc117efcca..f5c1c48e61 100644 --- a/projects/drift.js +++ b/projects/drift.js @@ -1,20 +1,24 @@ const { sumTokens2 } = require('./helper/solana') async function tvl() { + // token account authority: JCNCMFXo5M5qwUPg2Utu1u6YWp3MbygxqBsBeXXJfrw return sumTokens2({ tokenAccounts: [ - '6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S', - 'Bzjkrm1bFwVXUaV9HTnwxFrPtNso7dnwPQamhqSxtuhZ', - 'GXWqPpjQpdz7KZw9p7f5PX2eGxHAhvpNXiviFkAB8zXg', - 'DfYCNezifxAEsQbAJ1b3j6PX3JVBe8fu11KBhxsbw5d2', - '2CqkQvYxp9Mq4PqLvAQ1eryYxebUh4Liyn5YMDtXsYci', // insurance fund + '6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S', // legacy usdc vault + 'Bzjkrm1bFwVXUaV9HTnwxFrPtNso7dnwPQamhqSxtuhZ', // usdc insurance fund + 'GXWqPpjQpdz7KZw9p7f5PX2eGxHAhvpNXiviFkAB8zXg', // usdc vault + 'DfYCNezifxAEsQbAJ1b3j6PX3JVBe8fu11KBhxsbw5d2', // sol vault + '4vwQWa4RjmPkn1WrmyEE3t912yWsBf9JNkASH36AQL3F', // sol insurance fund + '5p8B6KhJjesV212heBu1o86W2vUSnW1P83ZNnMLtCAAx', // msol vault + 'iBM2BTsrXXDfwm4P4ssbzBAquaj7gGgNNhBVaq8ryiY', // msol insurance fund + '2CqkQvYxp9Mq4PqLvAQ1eryYxebUh4Liyn5YMDtXsYci', // legacy usdc insurance fund ] }) } module.exports = { timetravel: false, - methodology: "Calculate the USDC on 6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S through on-chain calls & add the USDC on Bzjkrm1bFwVXUaV9HTnwxFrPtNso7dnwPQamhqSxtuhZ which is the insurance fund for liquidations", + methodology: "Calculate sum across all program token accounts", solana: { tvl } From 3197a879cc4b4b65597ceee068239a22a0ee9478 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 20 May 2023 01:38:23 +0100 Subject: [PATCH 0459/1354] metapool aurora --- projects/metapool.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/metapool.js b/projects/metapool.js index 7e6f13d15a..92d45bdc3e 100644 --- a/projects/metapool.js +++ b/projects/metapool.js @@ -1,4 +1,6 @@ const utils = require('./helper/utils'); +const ADDRESSES = require('./helper/coreAssets.json') +const sdk = require("@defillama/sdk") async function tvl() { const totalTvl = await utils.fetchURL('http://validators.narwallets.com:7000/metrics_json') @@ -10,5 +12,10 @@ async function tvl() { module.exports = { methodology: 'TVL counts the NEAR tokens that are staked.', - near: { tvl, } + near: { tvl, }, + aurora: { + tvl: async (_, block, chainBlocks) => ({ + ["aurora:" + ADDRESSES.aurora.AURORA]: (await sdk.api.erc20.totalSupply({ target: "0xb01d35D469703c6dc5B369A1fDfD7D6009cA397F", chain:"aurora", block: chainBlocks.aurora})).output + }) + } } \ No newline at end of file From 3f510589706b5f30a9b07a4f3f9627ce18722b00 Mon Sep 17 00:00:00 2001 From: define Date: Sat, 20 May 2023 11:30:11 +0100 Subject: [PATCH 0460/1354] add bsc to defiegde --- projects/defiedge/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/defiedge/index.js b/projects/defiedge/index.js index 0391049962..c1d16d4143 100644 --- a/projects/defiedge/index.js +++ b/projects/defiedge/index.js @@ -28,4 +28,5 @@ module.exports = { polygon: { tvl: tvl("polygon") }, arbitrum: { tvl: tvl("arbitrum") }, optimism: { tvl: tvl("optimism") }, + bsc: {tvl: tvl("bsc")} }; From 3364e0c0bab871a217758774bbb1e8ece4663fb1 Mon Sep 17 00:00:00 2001 From: allinJB <134007079+allinJB@users.noreply.github.com> Date: Sat, 20 May 2023 14:58:30 +0300 Subject: [PATCH 0461/1354] WINR Protocol (#6309) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🔍 chore(index.js): add abi.js import and use it to call getReserve function 🔍 chore(abi.js): export getReserve function for use in index.js * winr: code refactor --------- Co-authored-by: Mert Anıl Gören Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/winr-protocol/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/winr-protocol/index.js diff --git a/projects/winr-protocol/index.js b/projects/winr-protocol/index.js new file mode 100644 index 0000000000..f743a7e34c --- /dev/null +++ b/projects/winr-protocol/index.js @@ -0,0 +1,9 @@ +const { gmxExports } = require('../helper/gmx') +const WINR_VAULT_CONTRACT = "0x8c50528F4624551Aad1e7A265d6242C3b06c9Fca"; + +module.exports = { + start: 67057671, + arbitrum: { + tvl: gmxExports({ vault: WINR_VAULT_CONTRACT }), + }, +}; From 34d36041886a9eba2503527e9b4bbf73a024ed15 Mon Sep 17 00:00:00 2001 From: qudacki Date: Sat, 20 May 2023 21:00:46 +0900 Subject: [PATCH 0462/1354] Fix calculation bug on starlay-finance (#6322) * format * fix calculation * fix typo * add native USDT * add nativeUSDT and aUSD on astar to coreAssets.json * refactor --- projects/helper/coreAssets.json | 6 ++-- projects/starlay/abi.json | 2 +- projects/starlay/constanrs.js | 53 --------------------------------- projects/starlay/constants.js | 53 +++++++++++++++++++++++++++++++++ projects/starlay/index.js | 45 ++++++++++++++++++---------- projects/starlay/starlay.js | 6 ++-- projects/starlay/utils.js | 14 ++++----- projects/starlay/ve.js | 26 ++++++++-------- 8 files changed, 111 insertions(+), 94 deletions(-) delete mode 100644 projects/starlay/constanrs.js create mode 100644 projects/starlay/constants.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index cb568c2a08..3490a09bf5 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -490,6 +490,7 @@ "MATIC": "0xdd90e5e87a2081dcf0391920868ebc2ffb81a1af", "USDC": "0x6a2d262d56735dba19dd70682b39f6be9a931d98", "USDT": "0x3795c36e7d12a8c252a20c5a7b455f7c57b60283", + "nativeUSDT": "0xffffffff000000000000000000000001000007c0", "ARSW": "0xde2578edec4669ba7f41c5d5d2386300bcea4678", "DOT": "0xffffffffffffffffffffffffffffffffffffffff", "DAI": "0x6de33698e9e9b787e09d3bd7771ef63557e148bb", @@ -510,7 +511,8 @@ "lBUSD": "0xb7ab962c42a8bb443e0362f58a5a43814c573ffb", "BAI": "0x733ebcc6df85f8266349defd0980f8ced9b45f35", "ATID": "0x5271d85ce4241b310c0b34b7c2f1f036686a6d7c", - "JPYC": "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb" + "JPYC": "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb", + "aUSD": "0xffffffff00000000000000010000000000000001" }, "cardano": { "ADA": "ADA" @@ -1269,4 +1271,4 @@ "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", "DAI": "0xefd766ccb38eaf1dfd701853bfce31359239f305" } -} \ No newline at end of file +} diff --git a/projects/starlay/abi.json b/projects/starlay/abi.json index a897dd15f6..ec629f3b10 100644 --- a/projects/starlay/abi.json +++ b/projects/starlay/abi.json @@ -11,4 +11,4 @@ "getReserveDataV2": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", "getHelperReserveData": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", "getReserveTotalBorrows": "function getReserveTotalBorrows(address _reserve) view returns (uint256)" -} \ No newline at end of file +} diff --git a/projects/starlay/constanrs.js b/projects/starlay/constanrs.js deleted file mode 100644 index 7ffd11a729..0000000000 --- a/projects/starlay/constanrs.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const DEFAULT_DECIMALS = 18 - -const TOKEN_INFO = { - dot: { key: "polkadot", decimals:10 }, - ausd: { key: "acala-dollar", decimals:12 } -} - -const LAY_ADDRESS = ADDRESSES.astar.LAY - -const TOKENS = { - // WASTR - "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720": "astar", - // WETH - [ADDRESSES.moonbeam.USDT]: - ADDRESSES.ethereum.WETH, - // wBTC - [ADDRESSES.astar.WBTC]: - ADDRESSES.ethereum.WBTC, - // SDN - [ADDRESSES.astar.SDN]: "shiden", - // USDC - [ADDRESSES.moonbeam.USDC]: - ADDRESSES.ethereum.USDC, - // USDT - [ADDRESSES.astar.USDT]: - ADDRESSES.ethereum.USDT, - // DAI - [ADDRESSES.astar.DAI]: - ADDRESSES.ethereum.DAI, - // BUSD - [ADDRESSES.oasis.ceUSDT]: "binance-usd", - // MATIC - [ADDRESSES.astar.MATIC]: "matic-network", - // BNB - [ADDRESSES.milkomeda.BNB]: "binancecoin", - // DOT - [ADDRESSES.astar.DOT]: TOKEN_INFO.dot.key, - // aUSD - "0xfFFFFfFF00000000000000010000000000000001": TOKEN_INFO.ausd.key, - // LAY - [LAY_ADDRESS]: "starlay-finance", -}; - -const VOTING_ESCROW_ADDRESS = "0xDf32D28c1BdF25c457E82797316d623C2fcB29C8" - -module.exports = { - DEFAULT_DECIMALS, - TOKEN_INFO, - LAY_ADDRESS, - TOKENS, - VOTING_ESCROW_ADDRESS, -} diff --git a/projects/starlay/constants.js b/projects/starlay/constants.js new file mode 100644 index 0000000000..6c06e77822 --- /dev/null +++ b/projects/starlay/constants.js @@ -0,0 +1,53 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const DEFAULT_DECIMALS = 18; + +const TOKEN_INFO = { + dot: { key: "polkadot", decimals: 10 }, + ausd: { key: "acala-dollar", decimals: 12 }, + wastr: { + key: "astar", + address: "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720", + }, +}; + +const TOKENS = { + // WASTR + [TOKEN_INFO.wastr.address.toLowerCase()]: TOKEN_INFO.wastr.key, + // WETH + [ADDRESSES.astar.WETH]: ADDRESSES.ethereum.WETH, + // wBTC + [ADDRESSES.astar.WBTC]: ADDRESSES.ethereum.WBTC, + // SDN + [ADDRESSES.astar.SDN]: "shiden", + // USDC + [ADDRESSES.astar.USDC]: ADDRESSES.ethereum.USDC, + // USDT (celer USDT) + [ADDRESSES.astar.USDT]: ADDRESSES.ethereum.USDT, + // USDT (native USDT) + [ADDRESSES.astar.nativeUSDT]: ADDRESSES.ethereum.USDT, + // DAI + [ADDRESSES.astar.DAI]: ADDRESSES.ethereum.DAI, + // BUSD + [ADDRESSES.astar.BUSD]: "binance-usd", + // MATIC + [ADDRESSES.astar.MATIC]: "matic-network", + // BNB + [ADDRESSES.astar.BNB]: "binancecoin", + // DOT + [ADDRESSES.astar.DOT]: TOKEN_INFO.dot.key, + // aUSD + [ADDRESSES.astar.aUSD]: TOKEN_INFO.ausd.key, + // LAY + [ADDRESSES.astar.LAY]: "starlay-finance", +}; + +const VOTING_ESCROW_ADDRESS = "0xDf32D28c1BdF25c457E82797316d623C2fcB29C8"; +const LAY_ADDRESS = ADDRESSES.astar.LAY; + +module.exports = { + DEFAULT_DECIMALS, + TOKEN_INFO, + LAY_ADDRESS, + TOKENS, + VOTING_ESCROW_ADDRESS, +}; diff --git a/projects/starlay/index.js b/projects/starlay/index.js index 9936364876..82b2b2d96b 100644 --- a/projects/starlay/index.js +++ b/projects/starlay/index.js @@ -1,13 +1,18 @@ const { getReserves, getStarlayTvl } = require("./starlay"); const BigNumber = require("bignumber.js"); const { getBorrowed } = require("../helper/aave"); -const { TOKENS, TOKEN_INFO, DEFAULT_DECIMALS, LAY_ADDRESS } = require("./constanrs"); +const { + TOKENS, + TOKEN_INFO, + DEFAULT_DECIMALS, + LAY_ADDRESS, +} = require("./constants"); const { getLockedLAY } = require("./ve"); -const transferFromAddress = (underlying) => TOKENS[underlying] +const transferFromAddress = (underlying) => TOKENS[underlying.toLowerCase()]; function astar(borrowed) { - return async (timestamp, _, {astar: block}) => { + return async (timestamp, _, { astar: block }) => { const balances = {}; const [lTokens, reserveTokens, validProtocolDataHelpers] = await getReserves(block); @@ -33,27 +38,37 @@ function astar(borrowed) { ); } - return Object.keys(balances).reduce((res, key) => { - if (key.startsWith("0x")) - return { ...res, [key]: balances[key] }; + return Object.keys(balances).reduce((res, key) => { + if (key.startsWith("0x")) return { ...res, [key]: balances[key] }; for (const token of Object.values(TOKEN_INFO)) { - if (key === token.key) - return { ...res, [key]: new BigNumber(balances[key]).shiftedBy(-token.decimals).toFixed(0) }; + if (key === token.key && token.decimals) + return { + ...res, + [key]: new BigNumber(balances[key]) + .shiftedBy(-token.decimals) + .toFixed(0), + }; } - return { ...res, [key]: new BigNumber(balances[key]).shiftedBy(-DEFAULT_DECIMALS).toFixed(0) }; + return { + ...res, + [key]: new BigNumber(balances[key]) + .shiftedBy(-DEFAULT_DECIMALS) + .toFixed(0), + }; }, {}); }; } -async function staking(_timestamp, _block, {astar: block}) { - const chain = "astar" - const stakedLay = await getLockedLAY(chain, block) +async function staking(_timestamp, _block, { astar: block }) { + const chain = "astar"; + const stakedLay = await getLockedLAY(chain, block); return { - [transferFromAddress(LAY_ADDRESS)]: stakedLay.shiftedBy(-DEFAULT_DECIMALS).toFixed(0) - } + [transferFromAddress(LAY_ADDRESS)]: stakedLay + .shiftedBy(-DEFAULT_DECIMALS) + .toFixed(0), + }; } - module.exports = { timetravel: true, methodology: `Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.`, diff --git a/projects/starlay/starlay.js b/projects/starlay/starlay.js index 138be8e7c8..3cabdc1f9a 100644 --- a/projects/starlay/starlay.js +++ b/projects/starlay/starlay.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { default: BigNumber } = require("bignumber.js"); @@ -28,9 +28,7 @@ async function getReserves(block) { }) ).output; const validProtocolDataHelpers = protocolDataHelpers - .filter( - (helper) => helper.output !== ADDRESSES.null - ) + .filter((helper) => helper.output !== ADDRESSES.null) .map((p) => p.output); const lTokenMarketData = ( diff --git a/projects/starlay/utils.js b/projects/starlay/utils.js index 696def55e5..9b7fe7d49b 100644 --- a/projects/starlay/utils.js +++ b/projects/starlay/utils.js @@ -1,11 +1,11 @@ const BigNumberJs = require("bignumber.js"); -BigNumberJs.config({ EXPONENTIAL_AT: 1e9 }) +BigNumberJs.config({ EXPONENTIAL_AT: 1e9 }); const toBigNumberJsOrZero = (value) => { - const bn = new BigNumberJs(value) - return bn.isNaN() ? new BigNumberJs('0') : bn -} - + const bn = new BigNumberJs(value); + return bn.isNaN() ? new BigNumberJs("0") : bn; +}; + module.exports = { - toBigNumberJsOrZero -} + toBigNumberJsOrZero, +}; diff --git a/projects/starlay/ve.js b/projects/starlay/ve.js index 7b87a9204a..a8118c826c 100644 --- a/projects/starlay/ve.js +++ b/projects/starlay/ve.js @@ -1,19 +1,21 @@ const sdk = require("@defillama/sdk"); const { toBigNumberJsOrZero } = require("./utils.js"); -const { VOTING_ESCROW_ADDRESS, LAY_ADDRESS } = require("./constanrs"); +const { VOTING_ESCROW_ADDRESS, LAY_ADDRESS } = require("./constants.js"); const getLockedLAY = async (chain, block) => { - const lockedLAYBalance = (await sdk.api.abi.call({ - target: LAY_ADDRESS, - abi: 'erc20:balanceOf', - params: [VOTING_ESCROW_ADDRESS], - block, - chain, - })).output - return toBigNumberJsOrZero(lockedLAYBalance) -} + const lockedLAYBalance = ( + await sdk.api.abi.call({ + target: LAY_ADDRESS, + abi: "erc20:balanceOf", + params: [VOTING_ESCROW_ADDRESS], + block, + chain, + }) + ).output; + return toBigNumberJsOrZero(lockedLAYBalance); +}; module.exports = { - getLockedLAY -} + getLockedLAY, +}; From 078f6adfbcf3581885c8970642753323a5b5fe3b Mon Sep 17 00:00:00 2001 From: C0deMunk33 Date: Sat, 20 May 2023 05:02:34 -0700 Subject: [PATCH 0463/1354] Update: Vega Protocol Staking Value (#6321) * Update index.js Vega can be staked in the Vesting contract as well as the Staking contract. This has been updated. * Update index.js forgot a const --- projects/vega-protocol/index.js | 39 ++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/projects/vega-protocol/index.js b/projects/vega-protocol/index.js index ae6839b86e..40e08887ab 100644 --- a/projects/vega-protocol/index.js +++ b/projects/vega-protocol/index.js @@ -1,18 +1,29 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') const assetListedEvent = "event Asset_Listed(address indexed asset_source, bytes32 indexed vega_asset_id, uint256 nonce)" +const BigNumber = require("bignumber.js"); const config = { - ethereum: { bridge: '0x124Dd8a6044ef048614AEA0AAC86643a8Ae1312D', fromBlock: 15263615, vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', assetPool: '0xF0f0FcDA832415b935802c6dAD0a6dA2c7EAed8f' } + ethereum: { bridge: '0x124Dd8a6044ef048614AEA0AAC86643a8Ae1312D', + fromBlock: 15263615, + vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', + stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', + assetPool: '0xF0f0FcDA832415b935802c6dAD0a6dA2c7EAed8f', + + vestingContract: '0x23d1bFE8fA50a167816fBD79D7932577c06011f4' }, +} + +const contractAbis = { + "totalStaked": "function total_staked() view returns (uint256)", + "balanceOf": "function balanceOf(address account) view returns (uint256)" } module.exports = { }; Object.keys(config).forEach(chain => { - const { bridge, fromBlock, vega, stakingContract, assetPool, } = config[chain] + const { bridge, fromBlock, vega, stakingContract, assetPool, vestingContract } = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { const logs = await getLogs({ @@ -26,9 +37,27 @@ Object.keys(config).forEach(chain => { const blacklistedTokens = [] if (vega) blacklistedTokens.push(vega) return sumTokens2({ api, blacklistedTokens, owner: assetPool, tokens: logs.map(i => i.asset_source) }) + }, + //staking: staking(stakingContract, vega) + staking: async (_, _b, cb, { chain, block, api } = {}) => { + + const vegaStakedInVesting = await api.call({ + abi: contractAbis.totalStaked, + target: vestingContract + }) + + const vegaStakedInStaking = await api.call({ + abi: contractAbis.balanceOf, + target: vega, + params: stakingContract + }) + + return { + '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e': BigNumber(vegaStakedInVesting).plus(BigNumber(vegaStakedInStaking)).toFixed(0) + } + } } +}) - if (staking) module.exports[chain].staking = staking(stakingContract, vega) -}) \ No newline at end of file From ab1455a9902ea0b5dbfcc5e2983f3d31252bf5b7 Mon Sep 17 00:00:00 2001 From: "flashliquidity.finance" Date: Sat, 20 May 2023 14:04:55 +0200 Subject: [PATCH 0464/1354] Add FlashLiquidity (#6326) * Add files via upload * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/FlashLiquidity/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/FlashLiquidity/index.js diff --git a/projects/FlashLiquidity/index.js b/projects/FlashLiquidity/index.js new file mode 100644 index 0000000000..d503e336d9 --- /dev/null +++ b/projects/FlashLiquidity/index.js @@ -0,0 +1,23 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +const factory = "0x6e553d5f028bD747a27E138FA3109570081A23aE" + +module.exports = { + misrepresentedTokens: true, + polygon: { + tvl: getUniTVL({ + factory: factory, + useDefaultCoreAssets: true, + fetchBalances: true, + }), + }, + polygon_zkevm: { + tvl: getUniTVL({ + factory: factory, + useDefaultCoreAssets: true, + fetchBalances: true, + }), + }, + methodology: + "TVL comes from the DEX liquidity pools" +}; \ No newline at end of file From b04295bc60fc25f366c9da59e6477e63999161e9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 20 May 2023 17:35:46 +0530 Subject: [PATCH 0465/1354] Astra-dao (#6313) * ASTRA DAO TVL * astra dao: code refactor --------- Co-authored-by: Ayush Jalan Co-authored-by: Manav Garg <54886674+manav650@users.noreply.github.com> --- projects/astra-dao/index.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 projects/astra-dao/index.js diff --git a/projects/astra-dao/index.js b/projects/astra-dao/index.js new file mode 100644 index 0000000000..e22a9a49d5 --- /dev/null +++ b/projects/astra-dao/index.js @@ -0,0 +1,31 @@ +const { sumTokensExport, sumTokens2 } = require('../helper/unwrapLPs') +const ASTRA_TOKEN_CONTRACT = '0x7E9c15C43f0D6C4a12E6bdfF7c7D55D0f80e3E23'; +const ASTRA_STAKING_CONTRACT = '0xDFE672C671943411fc16197fb8E328662B57CE2C'; + +async function tvl(_, _b, _cb, { api, }) { + let gotError = false + const indexAddr = '0x17b9B197E422820b3e28629a2BB101949EE7D12B' + const stableCoin = await api.call({ abi: 'address:baseStableCoin', target: indexAddr}) + let i = 0 + const tokens = [stableCoin] + do { + try { + const _tokens = await api.call({ abi: 'function getIndexTokenDetails(uint256) view returns (address[])', target: indexAddr, params: i}) + tokens.push(..._tokens) + i++ + } catch(e) { + if (i === 0) throw e + gotError = true + } + } while(!gotError) + return sumTokens2({ api, owner: indexAddr, tokens}) +} + +module.exports = { + start: 17243078, + ethereum: { + tvl, + pool2: sumTokensExport({ owner: ASTRA_STAKING_CONTRACT, resolveUniV3: true, }), + staking: sumTokensExport({ owner: ASTRA_STAKING_CONTRACT, tokens: [ASTRA_TOKEN_CONTRACT], }) + } +}; \ No newline at end of file From 769b4032235277fa2ac0e9c7e8b250a548d9072f Mon Sep 17 00:00:00 2001 From: Junwei Chen <11361147+KngZhi@users.noreply.github.com> Date: Sat, 20 May 2023 08:11:25 -0400 Subject: [PATCH 0466/1354] feat: add lp pool into convex TVL (#6000) * feat: add lp pool into TVL * alchemix: include convex tvl * remove unused code --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/alchemix/contracts.json | 20 ++++++++++++ projects/alchemix/index.js | 55 +++++++++++++++++++------------- 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/projects/alchemix/contracts.json b/projects/alchemix/contracts.json index ca657b6644..2ae2252739 100644 --- a/projects/alchemix/contracts.json +++ b/projects/alchemix/contracts.json @@ -69,5 +69,25 @@ "token": "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", "holder": "0xAB8e74017a8Cc7c15FFcCd726603790d26d7DeCa" } + }, + "cvxLPpools": { + "alUSD​+FRAXBP": { + "poolAddress": "0x26598e3E511ADFadefD70ab2C3475Ff741741104", + "holder": "0x06378717d86b8cd2dba58c87383da1eda92d3495", + "tokenAddress": "0xb30da2376f63de30b42dc055c93fa474f31330a5", + "alToken": "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9" + }, + "alUSD-3CRV": { + "poolAddress": "0x02E2151D4F351881017ABdF2DD2b51150841d5B3", + "holder": "0x9735f7d3ea56b454b24ffd74c58e9bd85cfad31b", + "tokenAddress": "0x43b4fdfd4ff969587185cdb6f0bd875c5fc83f8c", + "alToken": "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9" + }, + "alETH-ETH": { + "poolAddress": "0x48Bc302d8295FeA1f8c3e7F57D4dDC9981FEE410", + "holder": "0xe761bf731a06fe8259fee05897b2687d56933110", + "tokenAddress": "0xc4c319e2d4d66cca4464c0c2b32c9bd23ebe784e", + "alToken": "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6" + } } } \ No newline at end of file diff --git a/projects/alchemix/index.js b/projects/alchemix/index.js index 4ba3d89acf..9b6c096de2 100644 --- a/projects/alchemix/index.js +++ b/projects/alchemix/index.js @@ -1,36 +1,45 @@ -const { getChainTransform } = require('../helper/portedTokens.js'); -const { sumTokensSharedOwners } = require('../helper/unwrapLPs'); +const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking.js"); -const contracts = require('./contracts'); +const contracts = require("./contracts"); function tvl(chain) { - return async (timestamp, block, chainBlocks) => { - const balances = {}; - const transform = await getChainTransform(chain); + return async (timestamp, block, chainBlocks, { api }) => { + const tokens = Object.values(contracts[chain].underlyingTokens).concat(Object.values(contracts[chain].yvTokens)) + await sumTokens2({ tokens, api, owners: Object.values(contracts[chain].tokenHolders) }) + if (api.chain !== 'ethereum') return - await sumTokensSharedOwners( - balances, - Object.values(contracts[chain].underlyingTokens) - .concat(Object.values(contracts[chain].yvTokens)), - Object.values(contracts[chain].tokenHolders), - chainBlocks[chain], - chain, - transform - ); - - return balances; + await Promise.all( + Object.values(contracts.cvxLPpools).map(async ({ poolAddress, holder, tokenAddress, alToken }) => { + const lpTokenBalance = await api.call({ target: poolAddress, abi: "erc20:balanceOf", params: holder, }) + const supply = await api.call({ target: tokenAddress, abi: "erc20:totalSupply", }) + const ratio = lpTokenBalance / supply + if (+ratio === 0) return; + const tokenBalances = await api.multiCall({ target: tokenAddress, abi: 'function balances(uint256) view returns (uint256)', calls: [0, 1] }) + const tokens = await api.multiCall({ target: tokenAddress, abi: 'function coins(uint256) view returns (address)', calls: [0, 1] }) + alToken = alToken.toLowerCase() + tokens.forEach((token, i) => { + if (token.toLowerCase() !== alToken) { + api.add(token, tokenBalances[i] * ratio) + } + }) + }) + ); }; } module.exports = { + doublecounted: true, ethereum: { - tvl: tvl('ethereum'), - staking: staking(contracts.ethereum.staking.holder, contracts.ethereum.staking.token) + tvl: tvl("ethereum"), + staking: staking( + contracts.ethereum.staking.holder, + contracts.ethereum.staking.token + ), }, fantom: { - tvl: tvl('fantom') + tvl: tvl("fantom"), }, optimism: { - tvl: tvl('optimism') - } -}; \ No newline at end of file + tvl: tvl("optimism"), + }, +}; From 6220cbb4bd1e2ff652ab996273475422228d031e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 20 May 2023 15:02:02 +0200 Subject: [PATCH 0467/1354] add hallmark --- projects/swaprum/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/swaprum/index.js b/projects/swaprum/index.js index fade42032a..d0953fdc4f 100644 --- a/projects/swaprum/index.js +++ b/projects/swaprum/index.js @@ -12,5 +12,8 @@ module.exports = { arbitrum: { staking: stakings(pools, SAPR,), tvl: getUniTVL({ fetchBalances: true, useDefaultCoreAssets: true, factory }) - } + }, + hallmarks: [ + [Math.floor(new Date('2023-05-18')/1e3), 'Project rugged!'], + ], }; \ No newline at end of file From 6eddfbeab6f9b83d0716261a9026466d26338946 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Sat, 20 May 2023 17:39:15 +0100 Subject: [PATCH 0468/1354] blacklist crvusd --- projects/curve/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index dfc0afc302..9fe885a57c 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -171,7 +171,7 @@ async function unwrapPools({ poolList, registry, chain, block }) { } const blacklists = { - ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC'], + ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC', '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E'], } const config = { From f72abb5165d74e1e81c765127abbecccc809576a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 20 May 2023 22:18:33 +0200 Subject: [PATCH 0469/1354] update gnosis treasury --- projects/helper/coreAssets.json | 1 + projects/helper/unwrapLPs.js | 57 +++++++++++++++++- projects/treasury/gnosis-dao.js | 102 ++++++++++++++++++++++---------- 3 files changed, 127 insertions(+), 33 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 3490a09bf5..5eaed0fd19 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -29,6 +29,7 @@ "MKR": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", "CRV": "0xd533a949740bb3306d119cc777fa900ba034cd52", "FTM": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", + "GNO": "0x6810e776880C02933D47DB1b9fc05908e5386b96", "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" }, "fantom": { diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 31c235b937..9d97dd640d 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -7,10 +7,11 @@ const { getPoolTokens, getPoolId, bPool, getCurrentTokens, getVault: getBalancer const { requery } = require('./requery') const { getChainTransform, getFixBalances } = require('./portedTokens') const creamAbi = require('./abis/cream.json') -const { isLP, getUniqueAddresses, log, } = require('./utils') +const { isLP, log, } = require('./utils') const { sumArtBlocks, whitelistedNFTs, } = require('./nft') const wildCreditABI = require('../wildcredit/abi.json'); const { covalentGetTokens } = require("./http"); +const { getUniqueAddresses, normalizeAddress } = require('../helper/tokenMapping') const lpReservesAbi = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' const lpSuppliesAbi = "uint256:totalSupply" @@ -740,6 +741,57 @@ async function unwrapBalancerToken({ api, chain, block, balancerToken, owner, ba return balances } +async function unwrapMakerPositions({ api, blacklistedTokens = [], whitelistedTokens = [], owner, skipDebt = false }) { + const vaultIds = [] + const chain = api.chain + if (chain && chain !== 'ethereum') throw new Error('Maker protocol not found in chain') + blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) + whitelistedTokens = getUniqueAddresses(whitelistedTokens, chain) + // taken from https://maker.defiexplore.com/api/users/0x849d52316331967b6ff1198e5e32a0eb168d039d?orderTx=DESC&order=DESC&sortBy=debt + // https://docs.makerdao.com/smart-contract-modules/proxy-module/cdp-manager-detailed-documentation + const PROXY_REGISTRY = '0x4678f0a6958e4D2Bc4F1BAF7Bc52E8F3564f3fE4' + const ds_proxy = await api.call({ abi: 'function proxies(address) view returns (address)', target: PROXY_REGISTRY, params: owner }) + const CDP_MANAGER = '0x5ef30b9986345249bc32d8928b7ee64de9435e39' + const ILK_REGISTRY = '0x5a464C28D19848f44199D003BeF5ecc87d090F87' + const vaultCount = await api.call({ abi: 'function count(address) view returns (uint256)', target: CDP_MANAGER, params: ds_proxy }) + if (vaultCount < 1) return api.getBalances() + vaultIds.push(await api.call({ abi: 'function first(address) view returns (uint256)', target: CDP_MANAGER, params: ds_proxy })) + for (let i = 0; i < vaultCount - 1; i++) { + const [_, nextId] = await api.call({ abi: 'function list(uint256) view returns (uint256,uint256)', target: CDP_MANAGER, params: vaultIds[i] }) + vaultIds.push(nextId) + } + const ilks = await api.multiCall({ abi: 'function ilks(uint256) view returns (bytes32)', calls: vaultIds, target: CDP_MANAGER }) + const urns = await api.multiCall({ abi: 'function urns(uint256) view returns (address)', calls: vaultIds, target: CDP_MANAGER }) + let collaterals = await api.multiCall({ abi: 'function gem(bytes32) view returns (address)', calls: ilks, target: ILK_REGISTRY }) + const vat = await api.call({ abi: 'address:vat', target: CDP_MANAGER }) + const cdpData = await api.multiCall({ abi: 'function urns(bytes32, address) view returns (uint256 collateralBal, uint256 debt)', calls: urns.map((v, i) => ({ params: [ilks[i], v] })), target: vat }) + collaterals = collaterals.map(i => normalizeAddress(i, chain)) + cdpData.forEach(({ collateralBal, debt }, i) => { + if (!skipDebt) + api.add(ADDRESSES.ethereum.DAI, debt * -1) + const collateral = collaterals[i] + if (blacklistedTokens.length && blacklistedTokens.includes(collateral, chain)) return; + if (whitelistedTokens.length && !whitelistedTokens.includes(collateral, chain)) return; + api.add(collateral, collateralBal) + }) + return api.getBalances() +} + +async function unwrap4626Tokens({ api, tokensAndOwners, }) { + const tokens = tokensAndOwners.map(i => i[0]) + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(i => ({ target: i[0], params: i[1] })), }) + const assets = await api.multiCall({ abi: 'address:asset', calls: tokens, }) + api.addTokens(assets, bals) + return api.getBalances() +} + +async function unwrapConvexRewardPools({ api, tokensAndOwners }) { + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(([t, o]) => ({ target: t, params: o}))}) + const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: tokensAndOwners.map(i => i[0])}) + api.addTokens(tokens, bals) + return api.getBalances() +} + module.exports = { unwrapUniswapLPs, unwrapUniswapV3NFTs, @@ -760,4 +812,7 @@ module.exports = { unwrapBalancerToken, sumTokensExport, genericUnwrapCvxDeposit, + unwrapMakerPositions, + unwrap4626Tokens, + unwrapConvexRewardPools, } diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index aa29408599..e5d95c26a3 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -1,44 +1,82 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); +const { mergeExports } = require('../helper/utils'); +const { unwrap4626Tokens, unwrapMakerPositions, unwrapConvexRewardPools, } = require('../helper/unwrapLPs') const treasury = "0x4971DD016127F390a3EF6b956Ff944d0E2e1e462"; const treasury1 = "0x0DA0C3e52C977Ed3cBc641fF02DD271c3ED55aFe"; const treasury2 = "0x849D52316331967b6fF1198e5E32A0eB168D039d"; -const treasury3= "0xBc79855178842FDBA0c353494895DEEf509E26bB"; -const vestingAddress = "0x849d52316331967b6ff1198e5e32a0eb168d039d"; -const GNO= "0x6810e776880C02933D47DB1b9fc05908e5386b96"; -const LP = "0x6256518aE9a97C408a03AAF1A244989Ce6B937F6" -const LP2 = "0x228054e9c056F024FC724F515A2a8764Ae175ED6" +const treasury3 = "0xBc79855178842FDBA0c353494895DEEf509E26bB"; +const GNO = "0x6810e776880C02933D47DB1b9fc05908e5386b96"; +async function tvl(_, _b, _cb, { api, }) { + const treasury = '0x849d52316331967b6ff1198e5e32a0eb168d039d' + await addAuraTvl() + await unwrapMakerPositions({ api, owner: treasury, blacklistedTokens: [ADDRESSES.ethereum.GNO]}) + await unwrapConvexRewardPools({ api, tokensAndOwners: ['0x0A760466E1B4621579a82a39CB56Dda2F4E70f03', '0xf34DFF761145FF0B05e917811d488B441F33a968',].map(i => [i, treasury])}) + + return api.getBalances() + + async function addAuraTvl() { + const auraDepositVaults = [ + '0x712cc5bed99aa06fc4d5fb50aea3750fa5161d0f', + '0x5209db28b3cf22a944401c83370af7a703fffb08', + '0xd3780729035c5b302f76ced0e7f74cf0fb7c739a', + '0xacada51c320947e7ed1a0d0f6b939b0ff465e4c2', + '0x001b78cec62dcfdc660e06a91eb1bc966541d758', + '0xe4683fe8f53da14ca5dac4251eadfb3aa614d528', + '0x6256518ae9a97c408a03aaf1a244989ce6b937f6', + '0x228054e9c056f024fc724f515a2a8764ae175ed6', + ] + return unwrap4626Tokens({ api, tokensAndOwners: auraDepositVaults.map(i => [i, treasury])}) + } +} + +async function ownTokens(_, _b, _cb, { api, }) { + return unwrapMakerPositions({ api, owner: '0x849d52316331967b6ff1198e5e32a0eb168d039d', skipDebt: true, whitelistedTokens: [ADDRESSES.ethereum.GNO]}) +} module.exports = treasuryExports({ ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, //USDC - '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',//cDAI - '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC - '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT - ADDRESSES.ethereum.CRV,//CRV - '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - '0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B',//CVX - '0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB',//COW - ADDRESSES.ethereum.STETH,//stETH - '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb',//ankETH - '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS - '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d',//PNK - ADDRESSES.ethereum.WSTETH,//wstETH - '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA - '0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf',//GEN - '0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6',//RDN - '0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb',//INST - '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX - ADDRESSES.ethereum.LIDO,//LDO - '0x1982b2F5814301d4e9a8b0201555376e62F82428', - "0x712CC5BeD99aA06fC4D5FB50Aea3750fA5161D0f" - ], - owners: [treasury, treasury1, treasury2, treasury3, vestingAddress], - ownTokens: [GNO, LP, LP2], + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, //USDC + '0x6b175474e89094c44da98b954eedeac495271d0f',//DAI + '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',//cDAI + '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC + '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT + ADDRESSES.ethereum.CRV,//CRV + '0xba100000625a3754423978a60c9317c58a424e3D',//BAL + '0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B',//CVX + '0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB',//COW + ADDRESSES.ethereum.STETH,//stETH + '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb',//ankETH + '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS + '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d',//PNK + ADDRESSES.ethereum.WSTETH,//wstETH + '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA + '0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf',//GEN + '0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6',//RDN + '0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb',//INST + '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX + ADDRESSES.ethereum.LIDO,//LDO + '0x1982b2F5814301d4e9a8b0201555376e62F82428', + "0xd33526068d116ce69f19a9ee46f0bd304f21a51f", + "0x543ff227f64aa17ea132bf9886cab5db55dcaddf", + "0xde30da39c46104798bb5aa3fe8b9e0e1f348163f", + "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3", + "0x48c3399719b582dd63eb5aadf12a40b4c3f52fa2", + "0x20bc832ca081b91433ff6c17f85701b6e92486c5", + "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", + "0x9c39809dec7f95f5e0713634a4d0701329b3b4d2", // debt variableDebtWBTC + "0xa13a9247ea42d743238089903570127dda72fe44", + ], + owners: [treasury, treasury1, treasury2, treasury3,], + ownTokens: [GNO], resolveUniV3: true, }, -}) \ No newline at end of file +}) + +module.exports = mergeExports([module.exports, { + ethereum: { tvl, ownTokens } +}]) From 710294b83c1b3f7f63ae5886899d14305a6d8671 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 21 May 2023 00:18:24 +0200 Subject: [PATCH 0470/1354] add dynastyswap on pulse --- projects/dynastyswap-xyz/index.js | 8 ++++++++ projects/helper/coreAssets.json | 1 + 2 files changed, 9 insertions(+) create mode 100644 projects/dynastyswap-xyz/index.js diff --git a/projects/dynastyswap-xyz/index.js b/projects/dynastyswap-xyz/index.js new file mode 100644 index 0000000000..448503aa1b --- /dev/null +++ b/projects/dynastyswap-xyz/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + pulse: { + tvl: getUniTVL({ factory: '0x7abcEc2e35505aF1720431A6c414067717342B1F', useDefaultCoreAssets: true, fetchBalances: true, }), + }, +}; // node test.js projects/pulsex/index.js \ No newline at end of file diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 5eaed0fd19..25c60f9b56 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1269,6 +1269,7 @@ "WGRV": "0xE85f139488c689038028a3EB8fC38dcC29D4C340" }, "pulse": { + "WPLS": "0xa1077a294dde1b09bb078844df40758a5d0f9a27", "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", "DAI": "0xefd766ccb38eaf1dfd701853bfce31359239f305" } From 401e0b36fad15b70440f35bf677cca73ce22f06a Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 21 May 2023 17:35:26 +0100 Subject: [PATCH 0471/1354] eth foundation treasury --- projects/treasury/eth-foundation.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/treasury/eth-foundation.js b/projects/treasury/eth-foundation.js index 49d31c2c28..dfc066dd96 100644 --- a/projects/treasury/eth-foundation.js +++ b/projects/treasury/eth-foundation.js @@ -13,9 +13,8 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.USDC, //USDC "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", //OMG ADDRESSES.ethereum.BNB, //BNB - + WETH ], owners: [treasury], - ownTokens: [ETH, WETH], }, }) \ No newline at end of file From ba1f9693315fad107ade7a492fba34c939010079 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 May 2023 14:23:06 +0530 Subject: [PATCH 0472/1354] Rigoblock (#6337) * feat: rigoblock adapter - added rigoblock TVL adapter * feat: add GRG pools' own staked balances - added the staked balances of the rigobock pools - added grg vault abi.json - merge 2 sumTokens2 calls into 1 to query both tokens and Uni-V3 LP balances - code linting * added methodology helpers - added misrepresentedTokens: true as we compute GRG staking balances - added methodology description * code refactor --------- Co-authored-by: gab --- projects/helper/treasury.js | 6 ++-- projects/helper/unwrapLPs.js | 24 ++++++++----- projects/rigoblock/index.js | 67 ++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 11 deletions(-) create mode 100644 projects/rigoblock/index.js diff --git a/projects/helper/treasury.js b/projects/helper/treasury.js index 3b91a85903..82f912f781 100644 --- a/projects/helper/treasury.js +++ b/projects/helper/treasury.js @@ -8,11 +8,11 @@ function treasuryExports(config) { const chains = Object.keys(config) const exportObj = { } chains.forEach(chain => { - let { ownTokenOwners = [], ownTokens, owners = [], fetchTokens = false, tokens = [] } = config[chain] + let { ownTokenOwners = [], ownTokens = [], owners = [], fetchTokens = false, tokens = [], blacklistedTokens = [] } = config[chain] if (chain === 'solana') config[chain].solOwners = owners if (chain === 'solana') config[chain].solOwners = owners const tvlConfig = { ...config[chain] } - tvlConfig.blacklistedTokens = ownTokens + tvlConfig.blacklistedTokens = [...ownTokens, ...blacklistedTokens] if(fetchTokens === true){ exportObj[chain] = { tvl: async (_, _b, _cb, { api }) => { const tokens = await Promise.all(owners.map(address=>covalentGetTokens(address, chain))) @@ -29,7 +29,7 @@ function treasuryExports(config) { if (ownTokens) { const { solOwners, ...otherOptions } = config[chain] - const options = { ...otherOptions, owners: [...owners, ...ownTokenOwners], tokens: ownTokens, chain, resolveUniV3: false, } + const options = { ...otherOptions, owners: [...owners, ...ownTokenOwners], tokens: ownTokens, chain, uniV3WhitelistedTokens: ownTokens} exportObj[chain].ownTokens = sumTokensExport(options) } }) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 9d97dd640d..93c73a1693 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -188,7 +188,7 @@ async function sumLPWithOnlyOneTokenOtherThanKnown(balances, lpToken, owner, tok } await sumLPWithOnlyOneToken(balances, lpToken, owner, listedToken, block, chain, transformAddress) } -async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, chain = 'ethereum', transformAddress, owner, nftAddress, owners }) { +async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, chain = 'ethereum', owner, nftAddress, owners, blacklistedTokens = [], whitelistedTokens = [], }) { if (!nftsAndOwners.length) { if (!nftAddress) switch (chain) { @@ -205,13 +205,13 @@ async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, c owners = getUniqueAddresses(owners) nftsAndOwners = owners.map(o => [nftAddress, o]) } - await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain, transformAddress }))) + await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain, blacklistedTokens, whitelistedTokens, }))) return balances } -async function unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain = 'ethereum', transformAddress }) { - if (!transformAddress) - transformAddress = await getChainTransform(chain) +async function unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain = 'ethereum', blacklistedTokens = [], whitelistedTokens = [], }) { + blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) + whitelistedTokens = getUniqueAddresses(whitelistedTokens, chain) const nftPositions = (await sdk.api.erc20.balanceOf({ target: nftAddress, owner, block, chain })).output const factory = (await sdk.api.abi.call({ target: nftAddress, abi: wildCreditABI.factory, block, chain })).output @@ -276,11 +276,18 @@ async function unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain = amount1 = liquidity * (sb - sa) } - sdk.util.sumSingleBalance(balances, transformAddress(token0), new BigNumber(amount0).toFixed(0)) - sdk.util.sumSingleBalance(balances, transformAddress(token1), new BigNumber(amount1).toFixed(0)) + addToken({ balances, token: token0, amount: amount0, chain, blacklistedTokens, whitelistedTokens}) + addToken({ balances, token: token1, amount: amount1, chain, blacklistedTokens, whitelistedTokens}) } } +function addToken({ balances, token, amount, chain, blacklistedTokens = [], whitelistedTokens = [] }) { + const addr = normalizeAddress(token, chain) + if (blacklistedTokens.length && blacklistedTokens.includes(addr)) return; + if (whitelistedTokens.length && !whitelistedTokens.includes(addr)) return; + sdk.util.sumSingleBalance(balances, token, amount, chain) +} + /* tokens [ [token, owner, isLP] - eg ["0xaaa", "0xbbb", true] @@ -637,6 +644,7 @@ async function sumTokens2({ abis = {}, api, resolveUniV3 = false, + uniV3WhitelistedTokens = [], resolveArtBlocks = false, resolveNFTs = false, permitFailure = false, @@ -680,7 +688,7 @@ async function sumTokens2({ } if (resolveUniV3) - await unwrapUniswapV3NFTs({ balances, chain, block, owner, owners, }) + await unwrapUniswapV3NFTs({ balances, chain, block, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, }) blacklistedTokens = blacklistedTokens.map(t => t.toLowerCase()) tokensAndOwners = tokensAndOwners.map(([t, o]) => [t.toLowerCase(), o]).filter(([token]) => !blacklistedTokens.includes(token)) diff --git a/projects/rigoblock/index.js b/projects/rigoblock/index.js new file mode 100644 index 0000000000..7026005543 --- /dev/null +++ b/projects/rigoblock/index.js @@ -0,0 +1,67 @@ +const sdk = require('@defillama/sdk') +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { getUniqueAddresses } = require('../helper/tokenMapping') + +const E_WHITELIST = '0xB43baD2638696F8bC82247B92bD56B8DF37d89aB' +const REGISTRY = '0x06767e8090bA5c4Eca89ED00C3A719909D503ED6' // same on all chains + +module.exports = { + methodology: `Rigoblock TVL on Ethereum, Arbitrum, Optimism and Polygon pulled from onchain data`, +} +const config = { + ethereum: { fromBlock: 15817831, GRG_VAULT_ADDRESSES: '0xfbd2588b170Ff776eBb1aBbB58C0fbE3ffFe1931', GRG_TOKEN_ADDRESSES: '0x4FbB350052Bca5417566f188eB2EBCE5b19BC964', }, + arbitrum: { fromBlock: 32290603, GRG_VAULT_ADDRESSES: '0xE86a667F239A2531C9d398E81154ba125030497e', GRG_TOKEN_ADDRESSES: '0x7F4638A58C0615037deCc86f1daE60E55fE92874', }, + optimism: { fromBlock: 31239008, GRG_VAULT_ADDRESSES: '0x5932C223186F7856e08A1D7b35ACc2Aa5fC57BfD', GRG_TOKEN_ADDRESSES: '0xEcF46257ed31c329F204Eb43E254C609dee143B3', }, + polygon: { fromBlock: 34751673, GRG_VAULT_ADDRESSES: '0xF241De983959A483F376fDC8Ed09DC580BA66109', GRG_TOKEN_ADDRESSES: '0xBC0BEA8E634ec838a2a45F8A43E7E16Cd2a8BA99', }, +} + +Object.keys(config).forEach(chain => { + const { fromBlock, GRG_TOKEN_ADDRESSES, GRG_VAULT_ADDRESSES } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const { pools, tokens } = await getPoolInfo(api) + return sumTokens2({ owners: pools, tokens, api, resolveUniV3: true, blacklistedTokens: [GRG_TOKEN_ADDRESSES] }) + }, + staking: async (_, _b, _cb, { api, }) => { + const { pools, tokens } = await getPoolInfo(api) + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: pools, target: GRG_VAULT_ADDRESSES }) + bals.forEach(i => api.add(GRG_TOKEN_ADDRESSES, i)) + return sumTokens2({ owners: pools, tokens: [GRG_TOKEN_ADDRESSES], api, resolveUniV3: true, uniV3WhitelistedTokens: [GRG_TOKEN_ADDRESSES] }) + }, + } + + async function getPoolInfo(api) { + const poolKey = `${api.chain}-${api.block}` + if (!poolData[poolKey]) poolData[poolKey] = _getPoolInfo() + return poolData[poolKey] + + async function _getPoolInfo() { + const registeredLogs = await getLogs({ + api, + target: REGISTRY, + fromBlock, + topic: 'Registered(address,address,bytes32,bytes32,bytes32)', + onlyArgs: true, + eventAbi: 'event Registered(address indexed group, address pool, bytes32 indexed name, bytes32 indexed symbol, bytes32 id)' + }) + const whitelistedTokensLogs = await getLogs({ + api, + target: E_WHITELIST, + fromBlock, + topic: 'Whitelisted(address,bool)', + onlyArgs: true, + eventAbi: 'event Whitelisted(address indexed token, bool isWhitelisted)' + }) + const pools = registeredLogs.map(i => i.pool) + let tokens = whitelistedTokensLogs.map(i => i.token) + tokens.push(nullAddress) + // we may have duplicates if a token is first whitelisted than removed + tokens = getUniqueAddresses(tokens) + sdk.log('chain: ', api.chain, 'pools: ', pools.length, 'tokens: ', tokens.length) + return { pools, tokens } + } + } +}) + +const poolData = {} \ No newline at end of file From cae73242480f2e7ac7b65ee8b8f060fb5db418f6 Mon Sep 17 00:00:00 2001 From: Tigris of Gaul <81036209+tigris-of-gaul@users.noreply.github.com> Date: Mon, 22 May 2023 09:20:05 +0000 Subject: [PATCH 0473/1354] Add Tarot factory for zkSync Era (#6327) --- projects/tarot/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/tarot/index.js b/projects/tarot/index.js index a99f5036fb..ba4fb48e0c 100644 --- a/projects/tarot/index.js +++ b/projects/tarot/index.js @@ -58,6 +58,11 @@ const config = { '0x36Df0A76a124d8b2205fA11766eC2eFF8Ce38A35', // Tarot Paprika ] }, + era: { + factories: [ + '0xf450b51fb2E1e4f05DAf9Cf7D9BB97714540B4f4', // Tarot Zeniths + ] + }, } module.exports = {} From 861a16cb24310819fc7bfa1d53ea01cdff0e36e9 Mon Sep 17 00:00:00 2001 From: TJ <58812386+TJ-2@users.noreply.github.com> Date: Mon, 22 May 2023 10:20:40 +0100 Subject: [PATCH 0474/1354] Omnidex perpetuals (#6333) * Added OmniDex Perpetuals * Added OmniDex Perpetuals --- projects/omnidex-perpetuals/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/omnidex-perpetuals/index.js diff --git a/projects/omnidex-perpetuals/index.js b/projects/omnidex-perpetuals/index.js new file mode 100644 index 0000000000..fb6902ea6d --- /dev/null +++ b/projects/omnidex-perpetuals/index.js @@ -0,0 +1,10 @@ +const { gmxExports } = require('../helper/gmx') + +//Telos +const Vault = '0x8F23134EBc390856E01993dE9f7F837bcD93014a'; + +module.exports = { + telos: { + tvl: gmxExports({ vault: Vault }) + }, +}; \ No newline at end of file From 382818170af37513d3e4165ce27ecfd768a4cf0d Mon Sep 17 00:00:00 2001 From: fextr <34183870+fextr@users.noreply.github.com> Date: Mon, 22 May 2023 13:22:15 +0400 Subject: [PATCH 0475/1354] zunami: add APS holdings to tvl calcualtion (#6332) * zunami: rename * zunami: add zunami aps totalHoldings --- projects/zunami/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/zunami/index.js b/projects/zunami/index.js index 21cd7b29e8..01315f8b56 100644 --- a/projects/zunami/index.js +++ b/projects/zunami/index.js @@ -3,17 +3,25 @@ const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const zunamiContract = "0x2ffCC661011beC72e1A9524E12060983E74D14ce"; +const zunamiApsContract = "0xCaB49182aAdCd843b037bBF885AD56A3162698Bd"; const zunamiHoldingsDecimals = 18; const usdt = ADDRESSES.ethereum.USDT; const usdtDecimals = 6; async function ethTvl(timestamp, block) { - const totalHoldings = (await sdk.api.abi.call({ + const totalHoldingsOmnipool = (await sdk.api.abi.call({ block, abi: abi.totalHoldings, target: zunamiContract, })).output / 10 ** (zunamiHoldingsDecimals - usdtDecimals); + const totalHoldingsAps = (await sdk.api.abi.call({ + block, + abi: abi.totalHoldings, + target: zunamiApsContract, + })).output / 10 ** (zunamiHoldingsDecimals - usdtDecimals); + + const totalHoldings = totalHoldingsOmnipool + totalHoldingsAps; return { [usdt]: totalHoldings, From ee0d6f6fa48eaeab0cbbf39edd979e39ba79233a Mon Sep 17 00:00:00 2001 From: frank <116536040+ede-frank@users.noreply.github.com> Date: Mon, 22 May 2023 17:24:40 +0800 Subject: [PATCH 0476/1354] add elp3 (#6328) Co-authored-by: ekmanss --- package-lock.json | 7 +++---- package.json | 1 + projects/El-Dorado-Exchange/index.js | 22 +++++++++++++++++----- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index caefa21396..009f6f1efd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "borsh": "^0.7.0", "dotenv": "^8.6.0", "ethers": "^5.6.5", + "graphql": "^16.6.0", "graphql-request": "^4.0.0", "hi-base32": "^0.5.1", "js-sha512": "^0.8.0", @@ -2633,7 +2634,6 @@ "version": "16.6.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", - "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -5986,8 +5986,7 @@ "graphql": { "version": "16.6.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", - "peer": true + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" }, "graphql-request": { "version": "4.3.0", @@ -6790,7 +6789,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "5.0.1" + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { diff --git a/package.json b/package.json index 7fecc4e68c..20f3e82230 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "borsh": "^0.7.0", "dotenv": "^8.6.0", "ethers": "^5.6.5", + "graphql": "^16.6.0", "graphql-request": "^4.0.0", "hi-base32": "^0.5.1", "js-sha512": "^0.8.0", diff --git a/projects/El-Dorado-Exchange/index.js b/projects/El-Dorado-Exchange/index.js index 64754e97ea..c5749bb21f 100644 --- a/projects/El-Dorado-Exchange/index.js +++ b/projects/El-Dorado-Exchange/index.js @@ -7,13 +7,25 @@ module.exports = { tvl: sdk.util.sumChainTvls([ gmxExports({ vault: '0x7f90C8De425e2E21F6d152e881713DE5Fe37dEAB', }), gmxExports({ vault: '0x2c7077cF9bd07C3BC45B4E5b8C27f8B95c6550B3', }), + async (_, _1, _2, { api }) => { + const vault = '0xF1D7e3f06aF6EE68E22baFd37E6a67b1757c35a9' + const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) + return sumTokens2({ api, owner: vault, tokens, }) + } ]) }, arbitrum: { - tvl: async (_, _1, _2, { api }) => { - const vault = '0xfc36be177868b05f966e57bfc01617501b1f6926' - const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) - return sumTokens2({ api, owner: vault, tokens, }) - } + tvl: sdk.util.sumChainTvls([ + async (_, _1, _2, { api }) => { + const vault = '0xfc36be177868b05f966e57bfc01617501b1f6926' + const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) + return sumTokens2({ api, owner: vault, tokens, }) + }, + async (_, _1, _2, { api }) => { + const vault = '0x24b6137A5fe9d058baf654bb73aB857F57DF8BB4' + const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) + return sumTokens2({ api, owner: vault, tokens, }) + }, + ]) }, } From 0156b197a255d0ad79e73334fdac33d8f8ce7ee6 Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Mon, 22 May 2023 05:25:52 -0400 Subject: [PATCH 0477/1354] add umee to stride (#6334) --- projects/stride/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/stride/index.js b/projects/stride/index.js index 6d2efbbd8e..b6302721a0 100644 --- a/projects/stride/index.js +++ b/projects/stride/index.js @@ -9,6 +9,7 @@ const coinGeckoIds = { uluna: "terra-luna-2", aevmos: "evmos", inj: "injective-protocol", + uumee: "umee", }; function getCoinDenom(denom) { @@ -26,7 +27,7 @@ async function tvl() { const balances = {}; const { host_zone: hostZones } = await get( - "https://stride-library.main.stridenet.co/api/Stride-Labs/stride/stakeibc/host_zone" + "https://stride-fleet.main.stridenet.co/api/Stride-Labs/stride/stakeibc/host_zone" ); const { supply: assetBalances } = await get( From 68256122bbf3d001d1408d3e08a29fe7685b6d56 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Mon, 22 May 2023 13:32:12 +0100 Subject: [PATCH 0478/1354] blacklist crvusd (#6331) --- projects/curve/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index dfc0afc302..9fe885a57c 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -171,7 +171,7 @@ async function unwrapPools({ poolList, registry, chain, block }) { } const blacklists = { - ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC'], + ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC', '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E'], } const config = { From 21b12892651ee94bc995b9103c3888a23698a8f9 Mon Sep 17 00:00:00 2001 From: paulvaden Date: Mon, 22 May 2023 07:37:34 -0500 Subject: [PATCH 0479/1354] Add lyra treasury addresses (#6336) --- projects/treasury/lyra.js | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/projects/treasury/lyra.js b/projects/treasury/lyra.js index 6881e6b033..8602d08414 100644 --- a/projects/treasury/lyra.js +++ b/projects/treasury/lyra.js @@ -1,12 +1,37 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') -const treasury = "0x2ccf21e5912e9ecccb0ecdee9744e5c507cf88ae"; +const treasury_arb = "0x2ccf21e5912e9ecccb0ecdee9744e5c507cf88ae"; +const treasury_eth = "0xEE86E99b42981623236824D33b4235833Afd8044"; +const treasury_op = "0xD4C00FE7657791C2A43025dE483F05E49A5f76A6"; + +const lyra_eth = "0x01BA67AAC7f75f647D94220Cc98FB30FCc5105Bf"; +const lyra_arb = "0x079504b86d38119F859c4194765029F692b7B7aa"; +const lyra_op = "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb"; module.exports = treasuryExports({ arbitrum: { tokens: [ - nullAddress, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.WETH, + ], + owners: [treasury_arb], + ownTokens: [lyra_arb], + }, + ethereum: { + tokens: [ + ADDRESSES.ethereum.USDC, + ], + owners: [treasury_eth], + ownTokens: [lyra_eth], + }, + optimism: { + tokens: [ + ADDRESSES.optimism.OP, + ADDRESSES.optimism.sUSD, + ADDRESSES.optimism.WETH, ], - owners: [treasury], + owners: [treasury_op], + ownTokens: [lyra_op], }, }) \ No newline at end of file From 45c8b168bbf478c6525f54657546ebfaab2cfc59 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 May 2023 18:10:28 +0530 Subject: [PATCH 0480/1354] Bfx (#6338) * Add BFX * minor fix * fixup --------- Co-authored-by: bfxyz --- projects/bfx/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/bfx/index.js diff --git a/projects/bfx/index.js b/projects/bfx/index.js new file mode 100644 index 0000000000..b8cff8baf4 --- /dev/null +++ b/projects/bfx/index.js @@ -0,0 +1,14 @@ +const { staking } = require("../helper/staking"); +const { gmxExports } = require("../helper/gmx"); + +//bsc +const bscVault = "0xDDC99EE89f9556749e8e8916eEa5d3bBA8D6F13d"; +const bscStaking = "0x0F0b54d7446110210513295336E4A85dDA65e40D"; +const bscBFX = "0x491347561CEc563aD7D91135F92dBdC700277505"; + +module.exports = { + bsc: { + staking: staking(bscStaking, bscBFX), + tvl: gmxExports({ vault: bscVault }) + }, +}; From 8ea813573ae9cb7cd8390b80fe07bc3c6f3b55af Mon Sep 17 00:00:00 2001 From: sara-abbasi2 <106956907+sara-abbasi2@users.noreply.github.com> Date: Mon, 22 May 2023 14:42:35 +0200 Subject: [PATCH 0481/1354] Create crowdSwap --- projects/crowdSwap | 1 + 1 file changed, 1 insertion(+) create mode 100644 projects/crowdSwap diff --git a/projects/crowdSwap b/projects/crowdSwap new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/projects/crowdSwap @@ -0,0 +1 @@ + From 65555d0eec0dcbee851bc6e5ba5c3eb082b7fd88 Mon Sep 17 00:00:00 2001 From: sara-abbasi2 <106956907+sara-abbasi2@users.noreply.github.com> Date: Mon, 22 May 2023 15:14:31 +0200 Subject: [PATCH 0482/1354] Delete crowdSwap --- projects/crowdSwap | 1 - 1 file changed, 1 deletion(-) delete mode 100644 projects/crowdSwap diff --git a/projects/crowdSwap b/projects/crowdSwap deleted file mode 100644 index 8b13789179..0000000000 --- a/projects/crowdSwap +++ /dev/null @@ -1 +0,0 @@ - From c21a4bb861d5758b6484648b9fa595ac675d0c48 Mon Sep 17 00:00:00 2001 From: zhouJF <58616306+jfzhou5@users.noreply.github.com> Date: Mon, 22 May 2023 21:32:57 +0800 Subject: [PATCH 0483/1354] feat: add arbitrum tvl for paraspace (#6339) --- projects/paraspace/helper/address.js | 15 ++++++++++----- projects/paraspace/helper/index.js | 8 +++++--- projects/paraspace/index.js | 4 ++++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/projects/paraspace/helper/address.js b/projects/paraspace/helper/address.js index 11e70cfffc..f9e91b5887 100644 --- a/projects/paraspace/helper/address.js +++ b/projects/paraspace/helper/address.js @@ -1,14 +1,19 @@ module.exports = { ethereum: { - UiPoolDataProvider: '0xcFcca0A2531069f16634beeD1C74d28ac1F7d271', - PoolAddressProvider: '0x6cD30e716ADbE47dADf7319f6F2FB83d507c857d', - UniV3Pos: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88', + UiPoolDataProvider: "0xcFcca0A2531069f16634beeD1C74d28ac1F7d271", + PoolAddressProvider: "0x6cD30e716ADbE47dADf7319f6F2FB83d507c857d", + UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", P2PPairStaking: "0xf090Eb4c2B63e7B26E8Bb09e6Fc0cC3A7586263B", Bayc: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", Mayc: "0x60E4d786628Fea6478F785A6d7e704777c86a7c6", Bakc: "0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623", ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9", ApeCoin: "0x4d224452801ACEd8B2F0aebE155379bb5D594381", - cAPE: "0xC5c9fB6223A989208Df27dCEE33fC59ff5c26fFF" - } + cAPE: "0xC5c9fB6223A989208Df27dCEE33fC59ff5c26fFF", + }, + arbitrum: { + UiPoolDataProvider: "0x94bDD135ccC48fF0440D750300A4e4Ba9B216B3A", + PoolAddressProvider: "0x45a35124749B061a29f91cc8ddf85606586dcf24", + UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", + }, }; diff --git a/projects/paraspace/helper/index.js b/projects/paraspace/helper/index.js index 76926d2a2c..8f336773a8 100644 --- a/projects/paraspace/helper/index.js +++ b/projects/paraspace/helper/index.js @@ -18,11 +18,13 @@ async function tvl(_, _1, _cb, { api, }) { const uniswapOwners = reservesData.filter(isUniV3XToken).map(i => i.xTokenAddress) reservesData = reservesData.filter(i => !isUniV3XToken(i)) - await sumTokens2({ api, balances, owners: uniswapOwners, resolveUniV3: true, }) + await sumTokens2({ chain: api.chain, api, balances, owners: uniswapOwners, resolveUniV3: true}) } let toa = reservesData.map(i => ([i.underlyingAsset, i.xTokenAddress])) - toa.push(...[[Bayc, P2PPairStaking], [Mayc, P2PPairStaking], [Bakc, P2PPairStaking]]) - return sumTokens2({ balances, tokensAndOwners: toa, blacklistedTokens: ['0x0000000000000000000000000000000000000001'] }) + if (api.chain === "ethereum") { + toa.push(...[[Bayc, P2PPairStaking], [Mayc, P2PPairStaking], [Bakc, P2PPairStaking]]) + } + return sumTokens2({ chain: api.chain, balances, tokensAndOwners: toa, blacklistedTokens: ['0x0000000000000000000000000000000000000001'] }) } async function borrowed(_, _1, _cb, { api, }) { diff --git a/projects/paraspace/index.js b/projects/paraspace/index.js index 1beb9f6330..a4636ac551 100644 --- a/projects/paraspace/index.js +++ b/projects/paraspace/index.js @@ -9,4 +9,8 @@ module.exports = { tvl, borrowed, }, + arbitrum: { + tvl, + borrowed, + } }; From e9ebe8df95fbbcf77fe3154ba476ee87c4532148 Mon Sep 17 00:00:00 2001 From: Gabor Nagy Date: Sat, 13 May 2023 13:06:32 +0200 Subject: [PATCH 0484/1354] Set up Intercroneswap TVL --- projects/intercroneswap/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/intercroneswap/index.js diff --git a/projects/intercroneswap/index.js b/projects/intercroneswap/index.js new file mode 100644 index 0000000000..195699fc9d --- /dev/null +++ b/projects/intercroneswap/index.js @@ -0,0 +1,20 @@ +const { chainExports: getChainExports } = require('../helper/exports.js') +const { getUniTVL } = require('../helper/unknownTokens.js') + +const factories = { + tron: "0x991255549e4fd299f03acd368497366cb9a2bfb0", + bsc: "0xFa51B0746eb96deBC619Fd2EA88d5D8B43BD8230", + bittorrent: "0x5f4f1a36b7c141a12817580bc35277955c0afd78", + +} + +function chainTvl(chain) { + return getUniTVL({ chain, factory: factories[chain], useDefaultCoreAssets: true, }) +} + +const chainExports = getChainExports(chainTvl, Object.keys(factories)) + +chainExports.misrepresentedTokens = true +chainExports.timetravel = true + +module.exports = chainExports From 3109f50dd5e1123cc2b88b0cae871e064283d422 Mon Sep 17 00:00:00 2001 From: Gabor Nagy Date: Sun, 14 May 2023 12:25:11 +0200 Subject: [PATCH 0485/1354] Fix tron TVL retrieval --- projects/intercroneswap/index.js | 93 ++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 3 deletions(-) diff --git a/projects/intercroneswap/index.js b/projects/intercroneswap/index.js index 195699fc9d..c600114d72 100644 --- a/projects/intercroneswap/index.js +++ b/projects/intercroneswap/index.js @@ -1,15 +1,97 @@ const { chainExports: getChainExports } = require('../helper/exports.js') +const { unverifiedCall, multicall, getTokenBalance } = require('../helper/chain/tron.js') const { getUniTVL } = require('../helper/unknownTokens.js') +const factory = require('../helper/abis/uniswap.js') +const sdk = require('@defillama/sdk') +const { default: axios } = require('axios') +const { fromHex } = require('tron-format-address') +const TRON_FACTORY ='TPvaMEL5oY2gWsJv7MDjNQh2dohwvwwVwx' +//const TRON_FACTORY = "0x991255549e4fd299f03acd368497366cb9a2bfb0" const factories = { - tron: "0x991255549e4fd299f03acd368497366cb9a2bfb0", bsc: "0xFa51B0746eb96deBC619Fd2EA88d5D8B43BD8230", bittorrent: "0x5f4f1a36b7c141a12817580bc35277955c0afd78", +} + +const tokens = { + ACTIV: { 'address': 'TVoxBVmFuBM7dsRnfi1V8v1iupv4uyPifN', 'id': '_activ' }, + BBT: { 'address': 'TGyZUWrL97mmmYJwrC7ZCLVrhbzvHmmWPL', 'id': '_bbt' }, + BCN: { 'address': 'TAoA331n3iKDkR62kAZ4H2n3vNL7y3d8x9', 'id': 'bemchain' }, + BEMT: { 'address': 'TBp6ZMzkxci5o4sJjFa6Fo9Wy36gcubQLW', 'id': 'bem' }, + BTC: { 'address': 'TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9', 'id': 'bitcoin' }, + BTT: { 'address': 'TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4', 'id': 'bittorrent' }, + COME: { 'address': 'TXMdyszg7XyiVW98QyvwcBh71y7i4pytoH', 'id': 'communityearth' }, + CREED: { 'address': 'TM2fhs1CFiS696VW13s3oBuDdPazCEGcfJ', 'id': '_creed' }, + CREEDX: { 'address': 'TQSC8P2nLsawUZHF6iMAD6KPH8HdJXFWYi', 'id': '_creedx' }, + CUBE: { 'address': 'TQxzbBVFRFUgHXnhyCRiatrkwX9BAJnHam', 'id': '_cube' }, + CYFM: { 'address': 'TZ5jA9F5zGRgi9qk9ATMu6D7wyEpnxQGJh', 'id': 'cyberfm' }, + DOGE: { 'address': 'THbVQp8kMjStKNnf2iCY6NEzThKMK5aBHg', 'id': 'dogecoin' }, + ETH: { 'address': 'THb4CqiFdwNHsWsQCs4JhzwjMWys4aqCbF', 'id': 'ethereum' }, + HT: { 'address': 'TDyvndWuvX5xTBwHPYJi7J3Yq8pq8yh62h', 'id': 'huobi' }, + ICR: { 'address': 'TKqvrVG7a2zJvQ3VysLoiz9ijuMNDehwy7', 'id': 'intercrone' }, + JM: { 'address': 'TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR', 'id': 'justmoney-2' }, + JST: { 'address': 'TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9', 'id': 'just' }, + KLV: { 'address': 'TVj7RNVHy6thbM7BWdSe9G6gXwKhjhdNZS', 'id': 'klever' }, + KODX: { 'address': 'TTUwzoZAK6rpDjpSh8B2XFTnxGfbMLHJaq', 'id': 'kodx' }, + KTY: { 'address': 'TTroZqb95vmsw4kppupQ8tVEzkNDDP2bcG', 'id': '_kty' }, + LDA: { 'address': 'TNP1D18nJCqQHhv4i38qiNtUUuL5VyNoC1', 'id': '_lda' }, + LUMI: { 'address': 'TDBNKiYQ8yfJtT5MDP3byu7f1npJuG2DBN', 'id': 'lumi-credits' }, + MEOX: { 'address': 'TQy3PRQda43yb3Ku35AktG549KMQLCJVDb', 'id': '_meox' }, + NFT: { 'address': 'TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq', 'id': 'apenft' }, + NOLE: { 'address': 'TPt8DTDBZYfJ9fuyRjdWJr4PP68tRfptLG', 'id': '_nole' }, + OLDJM: { 'address': 'TT8VkSkW6igkiRsV5WiJgLrsbVwY5bLLjA', 'id': 'justmoney' }, + PLZ: { 'address': 'TYK71t3eD1pTxpkDp7gbqXM5DYfaVdfKjV', 'id': 'plz' }, + PROS: { 'address': 'TFf1aBoNFqxN32V2NQdvNrXVyYCy9qY8p1', 'id': '_pros' }, + SafeMoney: { 'address': 'TNBrVEzuVYbNbGF2ua3ivSX5Y5V9N4xhax', 'id': 'safemoney' }, + SFI: { 'address': 'TVGiaML3hJE7sv9NEEVjqLbF5DcXJgHSfy', 'id': 'strx-finance' }, + SUN: { 'address': 'TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S', 'id': 'sun-token' }, + TBT: { 'address': 'TJpCQC2gJRAbqG9nuQHvzYBmCuYJQzP3SS', 'id': '_tbt' }, + TNT: { 'address': 'TL33cN6t22RcKyqPKkb14iVrPHDFaFMH7t', 'id': '_tnt' }, + TRX: { 'address': 'TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR', 'id': 'tron' }, + TUSD: { 'address': 'TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4', 'id': 'trueusd' }, + turu: { 'address': 'TK8K7HFDLkhYS6XnFC8MKQkVK6Xq8D13qJ', 'id': '_turu' }, + TREX: { 'address': 'THyYjzy42cy83Nwg6pbsUTcV1GBrPPqGE5', 'id': '_trex' }, + TWJ: { 'address': 'TNq5PbSssK5XfmSYU4Aox4XkgTdpDoEDiY', 'id': '_twj' }, + USDC: { 'address': 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', 'id': 'usdc' }, + USDD: { 'address': 'TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn', 'id': 'usdd' }, + USDT: { 'address': 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 'id': 'tether' }, + USTX: { 'address': 'TYX2iy3i3793YgKU5vqKxDnLpiBMSa5EdV', 'id': 'upstabletoken' }, + VBS: { 'address': 'TJRc6ZTMhHEPrWPtfsVvXW1mxHPLw1arZo', 'id': '_vbs' }, + WOX: { 'address': 'TYVFMntFj7xLMxp1CvuXwg9LpPw1dPwWhM', 'id': '_wox' }, + WIN: { 'address': 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7', 'id': 'winklink' }, + ZLF: { 'address': 'TXoPCbHtWTerfiNjFBpJdMQqQJoXoT87pq', 'id': '_zlf' }, +} +const IswapURL = 'https://api.intercroneswap.com/pairs/all?chainId='; + +async function getTronPairs(balances) { + + const allPairs = await axios.get(IswapURL + '11111') + for (let index = 0; index < allPairs.data.data.length; index++) { + const pair = allPairs.data.data[index]; + t0 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount0.address) ) + t1 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount1.address) ) + if (!t0) { + sdk.log('couldn\'t find token: ', pair.tokenAmount0.symbol); + continue + } else if(!t1) { + sdk.log('couldn\'t find token: ', pair.tokenAmount1.symbol); + continue + } + + sdk.util.sumSingleBalance(balances, t0.id, Number(pair.tokenAmount0.numerator / (10 ** pair.tokenAmount0.decimals))) + sdk.util.sumSingleBalance(balances, t1.id, Number(pair.tokenAmount1.numerator / (10 ** pair.tokenAmount1.decimals))) + + } +} +async function tronTvl() { + const balances = {} + await getTronPairs(balances) + return balances } function chainTvl(chain) { - return getUniTVL({ chain, factory: factories[chain], useDefaultCoreAssets: true, }) + return getUniTVL({ chain, factory: factories[chain], useDefaultCoreAssets: false, }) } const chainExports = getChainExports(chainTvl, Object.keys(factories)) @@ -17,4 +99,9 @@ const chainExports = getChainExports(chainTvl, Object.keys(factories)) chainExports.misrepresentedTokens = true chainExports.timetravel = true -module.exports = chainExports +module.exports = { + ...chainExports, + tron: { + tvl: tronTvl + } +} From 70270aa07816e72e7a514986ca5183cf482f7490 Mon Sep 17 00:00:00 2001 From: Gabor Nagy Date: Sun, 14 May 2023 12:31:21 +0200 Subject: [PATCH 0486/1354] Fix linting error --- projects/intercroneswap/index.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/projects/intercroneswap/index.js b/projects/intercroneswap/index.js index c600114d72..c88875cde8 100644 --- a/projects/intercroneswap/index.js +++ b/projects/intercroneswap/index.js @@ -68,8 +68,8 @@ async function getTronPairs(balances) { const allPairs = await axios.get(IswapURL + '11111') for (let index = 0; index < allPairs.data.data.length; index++) { const pair = allPairs.data.data[index]; - t0 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount0.address) ) - t1 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount1.address) ) + const t0 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount0.address) ) + const t1 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount1.address) ) if (!t0) { sdk.log('couldn\'t find token: ', pair.tokenAmount0.symbol); continue @@ -78,8 +78,11 @@ async function getTronPairs(balances) { continue } - sdk.util.sumSingleBalance(balances, t0.id, Number(pair.tokenAmount0.numerator / (10 ** pair.tokenAmount0.decimals))) - sdk.util.sumSingleBalance(balances, t1.id, Number(pair.tokenAmount1.numerator / (10 ** pair.tokenAmount1.decimals))) + const { tokenAmount0, tokenAmount1 } = pair; + + sdk.util.sumSingleBalance(balances, t0.id, Number(tokenAmount0.numerator / (10 ** tokenAmount0.decimals))) + + sdk.util.sumSingleBalance(balances, t1.id, Number(tokenAmount1.numerator / (10 ** tokenAmount1.decimals))) } } From eb65f47c7d4ba000767834ae6ac383438148e606 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 May 2023 02:19:53 +0200 Subject: [PATCH 0487/1354] update tron api --- projects/flatcoin/index.js | 8 +- projects/helper/chain/tron-dex.js | 30 ++++++ projects/helper/chain/tron.js | 116 +++++++++++++++++------ projects/helper/coreAssets.json | 5 + projects/helper/portedTokens.js | 1 + projects/intercroneswap/index.js | 105 +++----------------- projects/justmoney/index.js | 18 ++-- projects/luminous/index.js | 35 +++---- projects/raidshift/index.js | 16 +++- projects/sun/index.js | 33 +++---- projects/sunSwap/index.js | 27 ++---- projects/unifi-protocol-staking/index.js | 32 +++++++ projects/unifi-protocol/index.js | 62 ++---------- 13 files changed, 232 insertions(+), 256 deletions(-) create mode 100644 projects/helper/chain/tron-dex.js create mode 100644 projects/unifi-protocol-staking/index.js diff --git a/projects/flatcoin/index.js b/projects/flatcoin/index.js index 54b554f80c..3deb36f591 100644 --- a/projects/flatcoin/index.js +++ b/projects/flatcoin/index.js @@ -1,15 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require('../helper/chain/tron') +const { sumTokensExport } = require('../helper/chain/tron') const owner = 'TV8ndiKP98SF537BM9XvEbzkY2TerXNzEs' const token = ADDRESSES.tron.USDT -async function tvl() { - return sumTokens({ tokensAndOwners: [[token, owner]], }) -} - module.exports = { tron: { - tvl, + tvl: sumTokensExport({tokensAndOwners: [[token, owner]], }), }, } diff --git a/projects/helper/chain/tron-dex.js b/projects/helper/chain/tron-dex.js new file mode 100644 index 0000000000..ee6505d00d --- /dev/null +++ b/projects/helper/chain/tron-dex.js @@ -0,0 +1,30 @@ +const { transformDexBalances } = require("../portedTokens") +const { call, multicall, fromHex } = require("./tron") +const sdk = require('@defillama/sdk') + + +function tronDex({ factory }) { + return async () => { + const pairsLength = await call({ target: factory, abi: 'allPairsLength()', resTypes: ['number'] }) + sdk.log('Pair length', pairsLength) + const pairCalls = [] + for (let i = 0; i < pairsLength; i++) pairCalls.push([{ type: 'uint256', value: i }]) + const pairs = await multicall({ calls: pairCalls, target: factory, abi: 'allPairs(uint256)', resTypes: ['address'], }) + const token0s = await multicall({ calls: pairs, abi: 'token0()', resTypes: ['address'], }) + const token1s = await multicall({ calls: pairs, abi: 'token1()', resTypes: ['address'], }) + const reserves = await multicall({ calls: pairs, abi: 'getReserves()', complexDecodeRes: ['uint112', 'uint112', 'uint32'], }) + const data = reserves.map(([reserve0, reserve1], i) => { + return { + token0: token0s[i], + token1: token1s[i], + token0Bal: +reserve0, + token1Bal: +reserve1, + } + }) + return transformDexBalances({ chain: 'tron', data }) + } +} + +module.exports = { + tronDex +} \ No newline at end of file diff --git a/projects/helper/chain/tron.js b/projects/helper/chain/tron.js index 4746740d71..1f28903443 100644 --- a/projects/helper/chain/tron.js +++ b/projects/helper/chain/tron.js @@ -5,14 +5,10 @@ const ethers = require('ethers') const sdk = require('@defillama/sdk') const { getUniqueAddresses, } = require('../utils') const { get, } = require('../http') -const { transformBalances, } = require('../portedTokens') const { toHex, fromHex, } = require('tron-format-address') +const { sliceIntoChunks } = require('@defillama/sdk/build/util') const axiosObj = axios.create({ - baseURL: 'https://api.trongrid.io/', - headers: { - 'TRON-PRO-API-KEY': 'b5681c79-7e8e-4dcc-a290-86b4eb95157b', - 'Content-Type': 'application/json' - }, + baseURL: 'https://rpc.ankr.com/http/tron/', timeout: 300000, }) @@ -56,7 +52,7 @@ function encodeParams(inputs) { return abiCoder.encode(types, values).replace(/^(0x)/, ''); } -function decodeParams({types, output, ignoreMethodHash}) { +function decodeParams({ types, output, ignoreMethodHash }) { if (ignoreMethodHash && output.replace(/^0x/, '').length % 64 === 8) output = '0x' + output.replace(/^0x/, '').substring(8); @@ -93,35 +89,82 @@ async function unverifiedCall({ target, abi, parameter = [], isBigNumber, types return decodeParams({ types, output: axiosResponse.data.constant_result[0], ignoreMethodHash: true }) } + +async function call({ target, abi, params = [], isBigNumber, resTypes = [], isAddress, complexDecodeRes }) { + if (target.startsWith('0x')) target = fromHex(target) + var body = { + owner_address: owner_address, + contract_address: target, + function_selector: abi, + parameter: encodeParams(params), + visible: true, + }; + const axiosResponse = await axiosObj.post('/wallet/triggerconstantcontract', body) + const result = axiosResponse.data['constant_result'] + if (isBigNumber) + return BigNumber("0x" + result[0]) + if (isAddress) { + const str = '0x' + result[0].slice(-40) + return fromHex(str) + } + let output + if (complexDecodeRes) { + output = ethers.utils.defaultAbiCoder.decode(complexDecodeRes, '0x' + result[0]) + complexDecodeRes.forEach((v, i) => { + if (v === 'address') output[i] = fromHex(output[i]) + }) + } else { + output = resTypes.map((resType, i) => { + switch (resType) { + case 'number': return +BigNumber('0x' + result[i]) + case 'address': return fromHex('0x' + result[i].slice(-40)) + default: + throw new Error('Unknown tron type: ' + resType) + } + }) + + } + return output.length === 1 ? output[0] : output +} + async function multicall({ calls, ...options }) { const res = [] - for (const target of calls) - res.push(await unverifiedCall({ target, ...options })) + const customParams = calls.map(v => { + if (options.target) return { params: v } + return { target: v, } + }) + const chunks = sliceIntoChunks(customParams, 5) + for (const chunk of chunks) { + const items = [] + for (const i of chunk) items.push(call({ ...options, ...i })) + res.push(...await Promise.all(items)) + } return res } -async function getUnverifiedTokenBalance(token, account) { - const data = await getAccountDetails(account) - const bal = data.trc20token_balances.find(i => i.tokenId === token)?.balance ?? 0 - return BigNumber(bal) -} - -async function getTokenDecimals(token, account) { - const data = await getAccountDetails(account) - return data.trc20token_balances.find(i => i.tokenId === token)?.tokenDecimal ?? 0 +async function getTokenBalance(token, account) { + return call({ + target: token, abi: 'balanceOf(address)', params: [{ + type: 'address', + value: toHex(account) + }], resTypes: ['number'] + }) } -async function getTokenBalance(token, account) { - const [balance, decimals] = await Promise.all([ - getUnverifiedTokenBalance(token, account), - getTokenDecimals(token, account) - ]); - return Number(balance.toString()) / (10 ** decimals) +async function getTokenDecimals(token) { + return call({ target: token, abi: 'decimals()', resTypes: ['number'] }) } async function getTrxBalance(account) { - const data = await getAccountDetails(account) - return data.balance + (data.totalFrozen || 0) + var body = { + address: account, + visible: true, + }; + const { data } = await axiosObj.post('/wallet/getaccount', body) + return data.balance ?? 0 + + // const data = await getAccountDetails(account) + // return data.balance + (data.totalFrozen || 0) } const nullAddress = ADDRESSES.null @@ -152,6 +195,9 @@ async function sumTokens({ return true tronBalanceInputs.push(i[1]) return false + }).map(([token, owner]) => { + if (token.startsWith('0x')) token = fromHex(token) + return [token, owner] }) tronBalanceInputs = getUniqueAddresses(tronBalanceInputs, true) @@ -160,10 +206,10 @@ async function sumTokens({ bals.forEach(balance => sdk.util.sumSingleBalance(balances, nullAddress, balance)) } - const results = await Promise.all(tokensAndOwners.map(i => getUnverifiedTokenBalance(i[0], i[1]))) + const results = await Promise.all(tokensAndOwners.map(i => getTokenBalance(i[0], i[1]))) - results.forEach((bal, i) => sdk.util.sumSingleBalance(balances, 'tron:' + tokensAndOwners[i][0], bal.toFixed(0))) - return transformBalances('tron', balances) + results.forEach((bal, i) => sdk.util.sumSingleBalance(balances, tokensAndOwners[i][0], bal, 'tron')) + return balances function getUniqueToA(toa) { toa = toa.map(i => i.join('-')) @@ -171,11 +217,19 @@ async function sumTokens({ } } +function sumTokensExport(params) { + return async () => sumTokens(params) +} + module.exports = { + fromHex, + toHex, + call, multicall, - getTokenBalance, getTrxBalance, - unverifiedCall, sumTokens, getStakedTron, + getTokenDecimals, + getTokenBalance, + sumTokensExport, } diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 25c60f9b56..8519fe4e01 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -537,9 +537,14 @@ "USDC": "TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8", "USDD": "TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn", "JM": "TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR", + "JST": "TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9", "BTC": "TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9", "LTC": "TR3DLthpnDdCGabhVDbD3VMsiJoCXY3bZd", "DOGE": "THbVQp8kMjStKNnf2iCY6NEzThKMK5aBHg", + "SUN": "TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S", + "WTRX": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", + "BTT": "TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4", + "TUSD": "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", "ETH": "THb4CqiFdwNHsWsQCs4JhzwjMWys4aqCbF" }, "lachain": { diff --git a/projects/helper/portedTokens.js b/projects/helper/portedTokens.js index 4f7e0d77d2..d60fecfb51 100644 --- a/projects/helper/portedTokens.js +++ b/projects/helper/portedTokens.js @@ -140,6 +140,7 @@ async function getChainTransform(chain) { if ([...ibcChains, 'ton', 'defichain', 'waves'].includes(chain)) return chainStr if (chain === 'cardano' && addr === 'ADA') return 'coingecko:cardano' if (chain === 'near' && addr.endsWith('.near')) return chainStr + if (chain === 'tron' && addr.startsWith('T')) return chainStr if (chain === 'tezos' && addr.startsWith('KT1')) return chainStr if (chain === 'terra2' && addr.startsWith('terra1')) return chainStr if (chain === 'algorand' && /^\d+$/.test(addr)) return chainStr diff --git a/projects/intercroneswap/index.js b/projects/intercroneswap/index.js index c88875cde8..15c942b1a2 100644 --- a/projects/intercroneswap/index.js +++ b/projects/intercroneswap/index.js @@ -1,100 +1,17 @@ +const sdk = require('@defillama/sdk') const { chainExports: getChainExports } = require('../helper/exports.js') -const { unverifiedCall, multicall, getTokenBalance } = require('../helper/chain/tron.js') const { getUniTVL } = require('../helper/unknownTokens.js') -const factory = require('../helper/abis/uniswap.js') -const sdk = require('@defillama/sdk') -const { default: axios } = require('axios') -const { fromHex } = require('tron-format-address') +const { tronDex } = require('../helper/chain/tron-dex.js') -const TRON_FACTORY ='TPvaMEL5oY2gWsJv7MDjNQh2dohwvwwVwx' -//const TRON_FACTORY = "0x991255549e4fd299f03acd368497366cb9a2bfb0" +const TRON_FACTORY_V2 = 'TPvaMEL5oY2gWsJv7MDjNQh2dohwvwwVwx' +const TRON_FACTORY_V1 = 'TJL9Tj2rf5WPUkaYMzbvWErn6M8wYRiHG7' const factories = { - bsc: "0xFa51B0746eb96deBC619Fd2EA88d5D8B43BD8230", - bittorrent: "0x5f4f1a36b7c141a12817580bc35277955c0afd78", -} - -const tokens = { - ACTIV: { 'address': 'TVoxBVmFuBM7dsRnfi1V8v1iupv4uyPifN', 'id': '_activ' }, - BBT: { 'address': 'TGyZUWrL97mmmYJwrC7ZCLVrhbzvHmmWPL', 'id': '_bbt' }, - BCN: { 'address': 'TAoA331n3iKDkR62kAZ4H2n3vNL7y3d8x9', 'id': 'bemchain' }, - BEMT: { 'address': 'TBp6ZMzkxci5o4sJjFa6Fo9Wy36gcubQLW', 'id': 'bem' }, - BTC: { 'address': 'TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9', 'id': 'bitcoin' }, - BTT: { 'address': 'TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4', 'id': 'bittorrent' }, - COME: { 'address': 'TXMdyszg7XyiVW98QyvwcBh71y7i4pytoH', 'id': 'communityearth' }, - CREED: { 'address': 'TM2fhs1CFiS696VW13s3oBuDdPazCEGcfJ', 'id': '_creed' }, - CREEDX: { 'address': 'TQSC8P2nLsawUZHF6iMAD6KPH8HdJXFWYi', 'id': '_creedx' }, - CUBE: { 'address': 'TQxzbBVFRFUgHXnhyCRiatrkwX9BAJnHam', 'id': '_cube' }, - CYFM: { 'address': 'TZ5jA9F5zGRgi9qk9ATMu6D7wyEpnxQGJh', 'id': 'cyberfm' }, - DOGE: { 'address': 'THbVQp8kMjStKNnf2iCY6NEzThKMK5aBHg', 'id': 'dogecoin' }, - ETH: { 'address': 'THb4CqiFdwNHsWsQCs4JhzwjMWys4aqCbF', 'id': 'ethereum' }, - HT: { 'address': 'TDyvndWuvX5xTBwHPYJi7J3Yq8pq8yh62h', 'id': 'huobi' }, - ICR: { 'address': 'TKqvrVG7a2zJvQ3VysLoiz9ijuMNDehwy7', 'id': 'intercrone' }, - JM: { 'address': 'TVHH59uHVpHzLDMFFpUgCx2dNAQqCzPhcR', 'id': 'justmoney-2' }, - JST: { 'address': 'TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9', 'id': 'just' }, - KLV: { 'address': 'TVj7RNVHy6thbM7BWdSe9G6gXwKhjhdNZS', 'id': 'klever' }, - KODX: { 'address': 'TTUwzoZAK6rpDjpSh8B2XFTnxGfbMLHJaq', 'id': 'kodx' }, - KTY: { 'address': 'TTroZqb95vmsw4kppupQ8tVEzkNDDP2bcG', 'id': '_kty' }, - LDA: { 'address': 'TNP1D18nJCqQHhv4i38qiNtUUuL5VyNoC1', 'id': '_lda' }, - LUMI: { 'address': 'TDBNKiYQ8yfJtT5MDP3byu7f1npJuG2DBN', 'id': 'lumi-credits' }, - MEOX: { 'address': 'TQy3PRQda43yb3Ku35AktG549KMQLCJVDb', 'id': '_meox' }, - NFT: { 'address': 'TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq', 'id': 'apenft' }, - NOLE: { 'address': 'TPt8DTDBZYfJ9fuyRjdWJr4PP68tRfptLG', 'id': '_nole' }, - OLDJM: { 'address': 'TT8VkSkW6igkiRsV5WiJgLrsbVwY5bLLjA', 'id': 'justmoney' }, - PLZ: { 'address': 'TYK71t3eD1pTxpkDp7gbqXM5DYfaVdfKjV', 'id': 'plz' }, - PROS: { 'address': 'TFf1aBoNFqxN32V2NQdvNrXVyYCy9qY8p1', 'id': '_pros' }, - SafeMoney: { 'address': 'TNBrVEzuVYbNbGF2ua3ivSX5Y5V9N4xhax', 'id': 'safemoney' }, - SFI: { 'address': 'TVGiaML3hJE7sv9NEEVjqLbF5DcXJgHSfy', 'id': 'strx-finance' }, - SUN: { 'address': 'TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S', 'id': 'sun-token' }, - TBT: { 'address': 'TJpCQC2gJRAbqG9nuQHvzYBmCuYJQzP3SS', 'id': '_tbt' }, - TNT: { 'address': 'TL33cN6t22RcKyqPKkb14iVrPHDFaFMH7t', 'id': '_tnt' }, - TRX: { 'address': 'TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR', 'id': 'tron' }, - TUSD: { 'address': 'TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4', 'id': 'trueusd' }, - turu: { 'address': 'TK8K7HFDLkhYS6XnFC8MKQkVK6Xq8D13qJ', 'id': '_turu' }, - TREX: { 'address': 'THyYjzy42cy83Nwg6pbsUTcV1GBrPPqGE5', 'id': '_trex' }, - TWJ: { 'address': 'TNq5PbSssK5XfmSYU4Aox4XkgTdpDoEDiY', 'id': '_twj' }, - USDC: { 'address': 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', 'id': 'usdc' }, - USDD: { 'address': 'TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn', 'id': 'usdd' }, - USDT: { 'address': 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 'id': 'tether' }, - USTX: { 'address': 'TYX2iy3i3793YgKU5vqKxDnLpiBMSa5EdV', 'id': 'upstabletoken' }, - VBS: { 'address': 'TJRc6ZTMhHEPrWPtfsVvXW1mxHPLw1arZo', 'id': '_vbs' }, - WOX: { 'address': 'TYVFMntFj7xLMxp1CvuXwg9LpPw1dPwWhM', 'id': '_wox' }, - WIN: { 'address': 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7', 'id': 'winklink' }, - ZLF: { 'address': 'TXoPCbHtWTerfiNjFBpJdMQqQJoXoT87pq', 'id': '_zlf' }, -} -const IswapURL = 'https://api.intercroneswap.com/pairs/all?chainId='; - -async function getTronPairs(balances) { - - const allPairs = await axios.get(IswapURL + '11111') - for (let index = 0; index < allPairs.data.data.length; index++) { - const pair = allPairs.data.data[index]; - const t0 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount0.address) ) - const t1 = Object.values(tokens).find((token) => token.address === fromHex(pair.tokenAmount1.address) ) - if (!t0) { - sdk.log('couldn\'t find token: ', pair.tokenAmount0.symbol); - continue - } else if(!t1) { - sdk.log('couldn\'t find token: ', pair.tokenAmount1.symbol); - continue - } - - const { tokenAmount0, tokenAmount1 } = pair; - - sdk.util.sumSingleBalance(balances, t0.id, Number(tokenAmount0.numerator / (10 ** tokenAmount0.decimals))) - - sdk.util.sumSingleBalance(balances, t1.id, Number(tokenAmount1.numerator / (10 ** tokenAmount1.decimals))) - - } -} - -async function tronTvl() { - const balances = {} - await getTronPairs(balances) - return balances + bsc: "0xFa51B0746eb96deBC619Fd2EA88d5D8B43BD8230", + bittorrent: "0x5f4f1a36b7c141a12817580bc35277955c0afd78", } function chainTvl(chain) { - return getUniTVL({ chain, factory: factories[chain], useDefaultCoreAssets: false, }) + return getUniTVL({ chain, factory: factories[chain], useDefaultCoreAssets: false, }) } const chainExports = getChainExports(chainTvl, Object.keys(factories)) @@ -103,8 +20,8 @@ chainExports.misrepresentedTokens = true chainExports.timetravel = true module.exports = { - ...chainExports, - tron: { - tvl: tronTvl - } + ...chainExports, + tron: { + tvl: sdk.util.sumChainTvls([tronDex({ factory: TRON_FACTORY_V1}), tronDex({ factory: TRON_FACTORY_V2})]) + } } diff --git a/projects/justmoney/index.js b/projects/justmoney/index.js index b163b54c8b..c856af2fb5 100644 --- a/projects/justmoney/index.js +++ b/projects/justmoney/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') const { getTokenBalance } = require('../helper/chain/tron') const { getUniTVL } = require('../helper/unknownTokens') +const { transformDexBalances } = require('../helper/portedTokens') const tokens = { ACTIV: { 'address': 'TVoxBVmFuBM7dsRnfi1V8v1iupv4uyPifN', 'id': '_activ' }, @@ -94,42 +94,42 @@ const pairs = [ ] async function tronTvl() { - const balances = {} + const data = [] await Promise.all(pairs.map(addPairs)) - return balances + return transformDexBalances({ chain: 'tron', data, }) async function addPairs([tokenA, tokenB, pool]) { - if (!tokenA.id.startsWith('_')) sdk.util.sumSingleBalance(balances, tokenA.id, await getTokenBalance(tokenA.address, pool)) - if (!tokenB.id.startsWith('_')) sdk.util.sumSingleBalance(balances, tokenB.id, await getTokenBalance(tokenB.address, pool)) + data.push({ + token0:tokenA.address, + token0Bal:await getTokenBalance(tokenA.address, pool), + token1:tokenB.address, + token1Bal:await getTokenBalance(tokenB.address, pool), + }) } } module.exports = { bsc: { tvl: getUniTVL({ - chain: 'bsc', factory: '0xF2Fb1b5Be475E7E1b3C31082C958e781f73a1712', useDefaultCoreAssets: true, }), }, bittorrent: { tvl: getUniTVL({ - chain: 'bittorrent', factory: '0x4dEb2f0976DC3Bf351555524B3A24A4feA4e137E', useDefaultCoreAssets: true, }), }, ethereum: { tvl: getUniTVL({ - chain: 'ethereum', factory: '0xd36Aba9Ec96523b0A89886c76065852aDFE2Eb39', useDefaultCoreAssets: true, }), }, polygon: { tvl: getUniTVL({ - chain: 'polygon', factory: '0xD36ABA9EC96523B0A89886C76065852ADFE2EB39', useDefaultCoreAssets: true, }), diff --git a/projects/luminous/index.js b/projects/luminous/index.js index 070e658019..15a4e12eae 100644 --- a/projects/luminous/index.js +++ b/projects/luminous/index.js @@ -1,8 +1,10 @@ const { getTokenBalance, getTrxBalance, - unverifiedCall, -} = require("../helper/chain/tron") + call, + sumTokensExport, +} = require("../helper/chain/tron"); +const { nullAddress } = require("../helper/tokenMapping"); const stakingWaterContract = "THyHbFrG5wnxdp9Lv7AgwJ4k7Nt1dp2pzj"; const WATER = "TFMUZn349bztRCCkL2PAmkWfy23Gyn5g5r"; @@ -10,13 +12,6 @@ const WATER = "TFMUZn349bztRCCkL2PAmkWfy23Gyn5g5r"; const stakingLumiContract = "TZD4xS3AFUixUwE28omTjeepCF6qUuxjCh"; const LUMI = "TDBNKiYQ8yfJtT5MDP3byu7f1npJuG2DBN"; -async function Staking() { - return { - water: await getTokenBalance(WATER, stakingWaterContract), - "lumi-credits": await getTokenBalance(LUMI, stakingLumiContract), - }; -} - const lumiFarm = "TJ6cgPpkri8cfrEh79TLdU2S16ugKHwAcW"; const waterLpToken = "TWH6NQ9tr28YoRdKuvcuQquVoEGrscPix4"; @@ -24,6 +19,7 @@ const waterFarm = "TY9mGUA8q1V9R9kmfUERpcG62SZ42gYuHW"; const lumiLpToken = "TUhZUbJaVicbQeNXHGBKxVsVuNL94usuoU"; async function Pool2() { + const { api } = arguments[3] const [ waterLpTokenAmount, lumiLpTokenAmount, @@ -40,23 +36,22 @@ async function Pool2() { getTokenBalance(LUMI, lumiLpToken), getTrxBalance(waterLpToken), getTrxBalance(lumiLpToken), - unverifiedCall({ target: waterLpToken, abi: 'totalSupply()', isBigNumber: true }), - unverifiedCall({ target: lumiLpToken, abi: 'totalSupply()', isBigNumber: true }), + call({ target: waterLpToken, abi: 'totalSupply()', resTypes:['number'] }), + call({ target: lumiLpToken, abi: 'totalSupply()', resTypes:['number'] }), ]); - return { - water: (waterInLp * waterLpTokenAmount) / (waterLpTotalSupply / 10 ** 6), - tron: - (trxInWaterLp * waterLpTokenAmount) / waterLpTotalSupply + - (trxInLumiLp * lumiLpTokenAmount) / lumiLpTotalSupply, - "lumi-credits": - (lumiInLp * lumiLpTokenAmount) / (lumiLpTotalSupply / 10 ** 6), - }; + api.add(WATER, (waterInLp * waterLpTokenAmount) / waterLpTotalSupply) + api.add(LUMI, (lumiInLp * lumiLpTokenAmount) / lumiLpTotalSupply) + api.add(nullAddress, (trxInWaterLp * waterLpTokenAmount) / waterLpTotalSupply) + api.add(nullAddress, (trxInLumiLp * lumiLpTokenAmount) / waterLpTotalSupply) } module.exports = { tron: { - staking: Staking, + staking: sumTokensExport({ tokensAndOwners: [ + [WATER,stakingWaterContract], + [LUMI,stakingLumiContract], + ]}), pool2: Pool2, tvl: (async) => ({}), }, diff --git a/projects/raidshift/index.js b/projects/raidshift/index.js index 68d1274fb8..da12d12877 100644 --- a/projects/raidshift/index.js +++ b/projects/raidshift/index.js @@ -1,4 +1,5 @@ -const { multicall, sumTokens } = require('../helper/chain/tron') +const { multicall, sumTokens, } = require('../helper/chain/tron') +const { nullAddress } = require('../helper/tokenMapping') const contracts = [ 'TC3TuowSyMxJSLaqiWJuCkZ2i3q7JCFR4x', @@ -16,12 +17,17 @@ const contracts = [ ] async function tvl() { - const tokenAs = await multicall({ calls: contracts, abi: 'tokenA()', isAddress: true,}) - const tokenBs = await multicall({ calls: contracts, abi: 'tokenB()', isAddress: true,}) + const tokenAs = await multicall({ calls: contracts, abi: 'tokenA()', resTypes:['address'],}) + const tokenBs = await multicall({ calls: contracts, abi: 'tokenB()', resTypes:['address'],}) const tokensAndOwners = [] - tokenAs.forEach((t, i) => tokensAndOwners.push([t, contracts[i]])) - tokenBs.forEach((t, i) => tokensAndOwners.push([t, contracts[i]])) + tokenAs.forEach((t, i) => tokensAndOwners.push([fixNullToken(t), contracts[i]])) + tokenBs.forEach((t, i) => tokensAndOwners.push([fixNullToken(t), contracts[i]])) return sumTokens({ tokensAndOwners, }) + + function fixNullToken(token) { + if (token === '0x') return nullAddress + return token + } } module.exports = { diff --git a/projects/sun/index.js b/projects/sun/index.js index 0232070e18..ac8321f10a 100644 --- a/projects/sun/index.js +++ b/projects/sun/index.js @@ -1,6 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const { getTokenBalance, getTrxBalance, unverifiedCall, sumTokens } = require('../helper/chain/tron'); +const { getTokenBalance, getTrxBalance, sumTokens, sumTokensExport, call, } = require('../helper/chain/tron'); +const { nullAddress } = require('../helper/unwrapLPs'); const pools = [ { @@ -68,43 +69,37 @@ const pools = [ } ] - async function tvl() { - const tokensAndOwners = pools.map(({ pool, stablecoins}) => { - return stablecoins.map(v => [v, pool]) - }).flat() - return sumTokens({ tokensAndOwners }) - } +async function tvl() { + const tokensAndOwners = pools.map(({ pool, stablecoins }) => { + return stablecoins.map(v => [v, pool]) + }).flat() + return sumTokens({ tokensAndOwners }) +} const stakingContract = "TXbA1feyCqWAfAQgXvN1ChTg82HpBT8QPb" const sun = "TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S" -async function staking() { - return { - "sun-token": await getTokenBalance(sun, stakingContract) - } -} const lpToken = 'TDQaYrhQynYV9aXTYj63nwLAafRffWSEj6' const oldLpStaking = "TGsymdggp98tLKZWGHcGX58TjTcaQr9s4x" const lpStaking = "TAkrcKsS5FW9f3ZfzvWy6Zvsz9uEjUxPoV" async function pool2() { + const { api } = arguments[3] const [lpTokenAmount, sunInLp, trxInLp, totalSupply] = await Promise.all([ getTokenBalance(lpToken, lpStaking), getTokenBalance(sun, lpToken), getTrxBalance(lpToken), - unverifiedCall({ target: lpToken, abi: 'totalSupply()', isBigNumber: true }), + call({ target: lpToken, abi: 'totalSupply()', resTypes: ['number'] }), ]) - return { - "sun-token": sunInLp * lpTokenAmount / (totalSupply / 10 ** 6), - "tron": trxInLp * lpTokenAmount / totalSupply, - } + api.add(sun, sunInLp * lpTokenAmount / totalSupply) + api.add(nullAddress, trxInLp * lpTokenAmount / totalSupply) } module.exports = { tron: { tvl, - staking, - pool2 + staking: sumTokensExport({ owner: stakingContract, tokens: [sun]}), + // pool2 }, } diff --git a/projects/sunSwap/index.js b/projects/sunSwap/index.js index 2dc34a6ee5..433673198e 100644 --- a/projects/sunSwap/index.js +++ b/projects/sunSwap/index.js @@ -1,28 +1,15 @@ -const axios = require('axios') +const { get } = require('../helper/http') -let nowDate = new Date(); -nowDate.setFullYear(nowDate.getFullYear() - 1); -let T = parseInt(nowDate.getTime() / 1000); - -const url = "https://apilist.tronscan.org/api/defiTvl?type=tvlline&project=&startTime=" + T; - -function getItemByName (projectName, listArr) { - for (let i = 0; i < listArr.length; i++) { - if (listArr[i].project === projectName) { - return listArr[i]; - } +async function tvl(){ + return { + tether: (await get('https://sbc.endjgfsv.link/ssp/getSunIOTvl')).data.allSwaps } } -async function fetch(){ - const pools = await axios.get(url); - let item = getItemByName('SUN.io', pools.data.projects); - return parseInt(item.locked); -} - module.exports = { + misrepresentedTokens: true, + timetravel: false, tron: { - fetch + tvl }, - fetch } \ No newline at end of file diff --git a/projects/unifi-protocol-staking/index.js b/projects/unifi-protocol-staking/index.js new file mode 100644 index 0000000000..b52edc3892 --- /dev/null +++ b/projects/unifi-protocol-staking/index.js @@ -0,0 +1,32 @@ + + +const { get } = require('../helper/http') +const { toUSDTBalances } = require('../helper/balances') +let _stakedResponse + +const mapping = { + harmony: 'Harmony', + icon: 'Icon', + ontology: 'Ontology', + tron: 'Tron', + iotex: 'IoTeX', +} + +module.exports = { + timetravel: false, + misrepresentedTokens: true, +} + +function stakingChain(chain) { + module.exports[chain] = { + tvl: async () => { + if (!_stakedResponse) _stakedResponse = get('https://data.unifi.report/api/stake-data/grouped') + const { results } = await _stakedResponse + const blockchainName = mapping[chain] + const { delegated_stake_usd } = results.find(i => i.blockchain === blockchainName) + return toUSDTBalances(delegated_stake_usd) + } + } +} + +Object.keys(mapping).forEach(stakingChain) \ No newline at end of file diff --git a/projects/unifi-protocol/index.js b/projects/unifi-protocol/index.js index bec9285299..b3baabf8ff 100644 --- a/projects/unifi-protocol/index.js +++ b/projects/unifi-protocol/index.js @@ -1,44 +1,38 @@ const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { staking } = require('../helper/staking') -const { getTokenBalance } = require('../helper/chain/tron'); -const { toUSDTBalances } = require('../helper/balances') -const { get } = require('../helper/http') -const { mergeExports } = require('../helper/utils') +const { sumTokensExport } = require('../helper/chain/tron'); const dexExports = { + timetravel: false, + misrepresentedTokens: true, avax: { tvl: getUniTVL({ factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - chain: 'avax', useDefaultCoreAssets: true, }), }, bsc: { tvl: getUniTVL({ factory: '0xA5Ba037Ec16c45f8ae09e013C1849554C01385f5', - chain: 'bsc', useDefaultCoreAssets: true, }), }, iotex: { tvl: getUniTVL({ factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - chain: 'iotex', useDefaultCoreAssets: true, }), }, ontology_evm: { tvl: getUniTVL({ factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - chain: 'ontology_evm', useDefaultCoreAssets: true, }), }, ethereum: { tvl: getUniTVL({ factory: '0x08e7974CacF66C5a92a37c221A15D3c30C7d97e0', - chain: 'ethereum', useDefaultCoreAssets: true, }), staking: staking('0x2e2fb3db9ecdb9b7d9eb05e00964c8941f7171a7', '0x441761326490cACF7aF299725B6292597EE822c2') @@ -46,71 +40,35 @@ const dexExports = { fantom: { tvl: getUniTVL({ factory: '0x839547067bc885db205F5fA42dcFeEcDFf5A8530', - chain: 'fantom', useDefaultCoreAssets: true, }), }, harmony: { tvl: getUniTVL({ factory: '0x7aB6ef0cE51a2aDc5B673Bad7218C01AE9B04695', - chain: 'harmony', useDefaultCoreAssets: true, }), }, polygon: { tvl: getUniTVL({ factory: '0x4FEE52912f81B78C3CdcB723728926ED6a893D27', - chain: 'polygon', useDefaultCoreAssets: true, }), }, bittorrent: { tvl: getUniTVL({ factory: '0xCAaB36C77841647dC9955B3b1D03710E9B9F127f', - chain: 'bittorrent', useDefaultCoreAssets: true, }), }, tron: { - tvl: async () => { - return { - "tether": await getTokenBalance(ADDRESSES.tron.USDT, 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'), - "tron": await getTokenBalance('TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR', 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'), - } - } + tvl: sumTokensExport({ + tokensAndOwners: [ + [ADDRESSES.tron.USDT, 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'], + [ADDRESSES.tron.WTRX, 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'], + ] + }) }, } - -let _stakedResponse - -const mapping = { - harmony: 'Harmony', - icon: 'Icon', - ontology: 'Ontology', - tron: 'Tron', - iotex: 'IoTeX', -} - -const stakingExports = {} - -function stakingChain(chain) { - stakingExports[chain] = { - tvl: async () => { - if (!_stakedResponse) _stakedResponse = get('https://data.unifi.report/api/stake-data/grouped') - const { results } = await _stakedResponse - const blockchainName = mapping[chain] - const { delegated_stake_usd } = results.find(i => i.blockchain === blockchainName) - return toUSDTBalances(delegated_stake_usd) - } - } -} - -Object.keys(mapping).forEach(stakingChain) - -module.exports = mergeExports([{ - timetravel: false, -}, - dexExports, - stakingExports, -]) +module.exports = dexExports \ No newline at end of file From 5a1092a67e6b18be55e393abf59c6c375f612a6c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 May 2023 02:31:28 +0200 Subject: [PATCH 0488/1354] refactor sunswap --- projects/sunSwap/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/sunSwap/index.js b/projects/sunSwap/index.js index 433673198e..6b471796cb 100644 --- a/projects/sunSwap/index.js +++ b/projects/sunSwap/index.js @@ -1,8 +1,12 @@ const { get } = require('../helper/http') -async function tvl(){ +async function tvl(ts){ + const { data } = await get('https://abc.endjgfsv.link/swap/scan/liquidityall') + const lastItem = data[data.length -1] + if (lastItem.time < (ts - 24 * 3600)) throw new Error('Outdated Data!') + return { - tether: (await get('https://sbc.endjgfsv.link/ssp/getSunIOTvl')).data.allSwaps + tether: lastItem.liquidity } } From d9c3993205669053c7d1a1107d2f8030b925f848 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 20 May 2023 11:24:34 +0200 Subject: [PATCH 0489/1354] move tron api to sdk --- package-lock.json | 30 ++-- projects/flatcoin/index.js | 2 +- projects/helper/cache/uniswap.js | 6 +- projects/helper/chain/tron-dex.js | 30 ---- projects/helper/chain/tron.js | 225 --------------------------- projects/helper/coreAssets.json | 1 + projects/helper/sumTokens.js | 1 - projects/helper/unwrapLPs.js | 17 +- projects/helper/utils.js | 60 +++---- projects/intercroneswap/index.js | 26 ++-- projects/justmoney/index.js | 114 +------------- projects/luminous/index.js | 43 ++--- projects/nervenetworkbridge/index.js | 4 +- projects/raidshift/index.js | 18 +-- projects/sun/index.js | 39 ++--- projects/sunswap-v2/index.js | 19 +++ projects/unifi-protocol/index.js | 12 +- 17 files changed, 144 insertions(+), 503 deletions(-) delete mode 100644 projects/helper/chain/tron-dex.js create mode 100644 projects/sunswap-v2/index.js diff --git a/package-lock.json b/package-lock.json index 009f6f1efd..2d5147b47b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,13 +63,14 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.19", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.19.tgz", - "integrity": "sha512-9MZFORjP9Ijl5ijnilm+UddknuETnCYtisQ0Kq+ezVBo6/8onhKEg2VSJtVNlpMjvdTNZHkdjvQ3msdVCXeICg==", + "version": "4.0.25", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.25.tgz", + "integrity": "sha512-5dQ4I5xVRk1FAD2qJetBp+84gPMGil5lSCS3okuVEHiU/p2uSDghDj+S0eiZYSm1xAzDniklerHuoHQs6MlqAg==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", - "node-fetch": "^2.6.7" + "node-fetch": "^2.6.7", + "tron-format-address": "^0.1.11" } }, "node_modules/@eslint/eslintrc": { @@ -3818,9 +3819,9 @@ "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==" }, "node_modules/tron-format-address": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/tron-format-address/-/tron-format-address-0.1.8.tgz", - "integrity": "sha512-oTtzUM43OZhQiv1p2aOVqbnev6mmJHXQrMpS3nn7zVAI/+ffA/aF+Y/vugHtYotckkromRLPEl/SR1HfJjAYQA==" + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/tron-format-address/-/tron-format-address-0.1.11.tgz", + "integrity": "sha512-Jx2i3R1yXrEMQsfc2jueAI71ivnySzdeva6SiSM/pddwj8TK7PVABSP6s/iYcTRI63GxJEgGMmOJXNNKoBmbQw==" }, "node_modules/ts-custom-error": { "version": "3.3.1", @@ -4193,13 +4194,14 @@ } }, "@defillama/sdk": { - "version": "4.0.19", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.19.tgz", - "integrity": "sha512-9MZFORjP9Ijl5ijnilm+UddknuETnCYtisQ0Kq+ezVBo6/8onhKEg2VSJtVNlpMjvdTNZHkdjvQ3msdVCXeICg==", + "version": "4.0.25", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.25.tgz", + "integrity": "sha512-5dQ4I5xVRk1FAD2qJetBp+84gPMGil5lSCS3okuVEHiU/p2uSDghDj+S0eiZYSm1xAzDniklerHuoHQs6MlqAg==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", - "node-fetch": "^2.6.7" + "node-fetch": "^2.6.7", + "tron-format-address": "^0.1.11" } }, "@eslint/eslintrc": { @@ -6850,9 +6852,9 @@ "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==" }, "tron-format-address": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/tron-format-address/-/tron-format-address-0.1.8.tgz", - "integrity": "sha512-oTtzUM43OZhQiv1p2aOVqbnev6mmJHXQrMpS3nn7zVAI/+ffA/aF+Y/vugHtYotckkromRLPEl/SR1HfJjAYQA==" + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/tron-format-address/-/tron-format-address-0.1.11.tgz", + "integrity": "sha512-Jx2i3R1yXrEMQsfc2jueAI71ivnySzdeva6SiSM/pddwj8TK7PVABSP6s/iYcTRI63GxJEgGMmOJXNNKoBmbQw==" }, "ts-custom-error": { "version": "3.3.1", diff --git a/projects/flatcoin/index.js b/projects/flatcoin/index.js index 3deb36f591..7955bcdcc1 100644 --- a/projects/flatcoin/index.js +++ b/projects/flatcoin/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/chain/tron') +const { sumTokensExport } = require('../helper/unwrapLPs') const owner = 'TV8ndiKP98SF537BM9XvEbzkY2TerXNzEs' const token = ADDRESSES.tron.USDT diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index 2c0141ea31..933eda835e 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -2,7 +2,7 @@ const uniswapAbi = require('../abis/uniswap') const { getCache, setCache, } = require('../cache'); const { transformBalances, transformDexBalances, } = require('../portedTokens') -const { getCoreAssets, } = require('../tokenMapping') +const { getCoreAssets, normalizeAddress, } = require('../tokenMapping') const { sliceIntoChunks, sleep } = require('../utils') const sdk = require('@defillama/sdk') @@ -22,13 +22,13 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, let updateCache = false const abi = { ...uniswapAbi, ...abis } - factory = factory.toLowerCase() - blacklist = (blacklistedTokens || blacklist).map(i => i.toLowerCase()) return async (_, _b, cb, { api, chain } = {}) => { if (!chain) chain = _chain + factory = normalizeAddress(factory, chain) + blacklist = (blacklistedTokens || blacklist).map(i => normalizeAddress(i, chain)) const key = `${factory}-${chain}` if (!coreAssets && useDefaultCoreAssets) diff --git a/projects/helper/chain/tron-dex.js b/projects/helper/chain/tron-dex.js deleted file mode 100644 index ee6505d00d..0000000000 --- a/projects/helper/chain/tron-dex.js +++ /dev/null @@ -1,30 +0,0 @@ -const { transformDexBalances } = require("../portedTokens") -const { call, multicall, fromHex } = require("./tron") -const sdk = require('@defillama/sdk') - - -function tronDex({ factory }) { - return async () => { - const pairsLength = await call({ target: factory, abi: 'allPairsLength()', resTypes: ['number'] }) - sdk.log('Pair length', pairsLength) - const pairCalls = [] - for (let i = 0; i < pairsLength; i++) pairCalls.push([{ type: 'uint256', value: i }]) - const pairs = await multicall({ calls: pairCalls, target: factory, abi: 'allPairs(uint256)', resTypes: ['address'], }) - const token0s = await multicall({ calls: pairs, abi: 'token0()', resTypes: ['address'], }) - const token1s = await multicall({ calls: pairs, abi: 'token1()', resTypes: ['address'], }) - const reserves = await multicall({ calls: pairs, abi: 'getReserves()', complexDecodeRes: ['uint112', 'uint112', 'uint32'], }) - const data = reserves.map(([reserve0, reserve1], i) => { - return { - token0: token0s[i], - token1: token1s[i], - token0Bal: +reserve0, - token1Bal: +reserve1, - } - }) - return transformDexBalances({ chain: 'tron', data }) - } -} - -module.exports = { - tronDex -} \ No newline at end of file diff --git a/projects/helper/chain/tron.js b/projects/helper/chain/tron.js index 1f28903443..02f07792cd 100644 --- a/projects/helper/chain/tron.js +++ b/projects/helper/chain/tron.js @@ -1,235 +1,10 @@ -const ADDRESSES = require('../coreAssets.json') -const axios = require('axios') -const BigNumber = require('bignumber.js') -const ethers = require('ethers') -const sdk = require('@defillama/sdk') -const { getUniqueAddresses, } = require('../utils') const { get, } = require('../http') -const { toHex, fromHex, } = require('tron-format-address') -const { sliceIntoChunks } = require('@defillama/sdk/build/util') -const axiosObj = axios.create({ - baseURL: 'https://rpc.ankr.com/http/tron/', - timeout: 300000, -}) - -const AbiCoder = ethers.utils.AbiCoder; -const ADDRESS_PREFIX_REGEX = /^(41)/; -const ADDRESS_PREFIX = "41"; -const accountData = { -} async function getStakedTron(account) { const data = await get(`https://apilist.tronscan.org/api/vote?candidate=${account}`) return data.totalVotes } -async function getAccountDetails(account) { - if (!accountData[account]) - accountData[account] = get('https://apilist.tronscan.org/api/account?address=' + account) - return accountData[account] -} - -function encodeParams(inputs) { - let typesValues = inputs - let parameters = '' - - if (typesValues.length == 0) - return parameters - const abiCoder = new AbiCoder(); - let types = []; - const values = []; - - for (let i = 0; i < typesValues.length; i++) { - let { type, value } = typesValues[i]; - if (type == 'address') - value = value.replace(ADDRESS_PREFIX_REGEX, '0x'); - else if (type == 'address[]') - value = value.map(v => toHex(v).replace(ADDRESS_PREFIX_REGEX, '0x')); - types.push(type); - values.push(value); - } - - return abiCoder.encode(types, values).replace(/^(0x)/, ''); -} - -function decodeParams({ types, output, ignoreMethodHash }) { - if (ignoreMethodHash && output.replace(/^0x/, '').length % 64 === 8) - output = '0x' + output.replace(/^0x/, '').substring(8); - - const abiCoder = new AbiCoder(); - - if (output.replace(/^0x/, '').length % 64) - throw new Error('The encoded string is not valid. Its length must be a multiple of 64.'); - return abiCoder.decode(types, output).reduce((obj, arg, index) => { - if (types[index] == 'address') - arg = ADDRESS_PREFIX + arg.substr(2).toLowerCase(); - obj.push(arg); - return obj; - }, []); -} - -// api reference: https://developers.tron.network/reference -const owner_address = ADDRESSES.tron.USDT - -async function unverifiedCall({ target, abi, parameter = [], isBigNumber, types = [], isAddress }) { - var body = { - owner_address: owner_address, - contract_address: target, - function_selector: abi, - parameter: encodeParams(parameter), - visible: true, - }; - const axiosResponse = await axiosObj.post('/wallet/triggerconstantcontract', body) - if (isBigNumber) - return BigNumber("0x" + axiosResponse.data['constant_result'][0]) - if (isAddress) { - const str = '0x' + axiosResponse.data.constant_result[0].replace(/^(0+)/, '') - return fromHex(str) - } - return decodeParams({ types, output: axiosResponse.data.constant_result[0], ignoreMethodHash: true }) -} - - -async function call({ target, abi, params = [], isBigNumber, resTypes = [], isAddress, complexDecodeRes }) { - if (target.startsWith('0x')) target = fromHex(target) - var body = { - owner_address: owner_address, - contract_address: target, - function_selector: abi, - parameter: encodeParams(params), - visible: true, - }; - const axiosResponse = await axiosObj.post('/wallet/triggerconstantcontract', body) - const result = axiosResponse.data['constant_result'] - if (isBigNumber) - return BigNumber("0x" + result[0]) - if (isAddress) { - const str = '0x' + result[0].slice(-40) - return fromHex(str) - } - let output - if (complexDecodeRes) { - output = ethers.utils.defaultAbiCoder.decode(complexDecodeRes, '0x' + result[0]) - complexDecodeRes.forEach((v, i) => { - if (v === 'address') output[i] = fromHex(output[i]) - }) - } else { - output = resTypes.map((resType, i) => { - switch (resType) { - case 'number': return +BigNumber('0x' + result[i]) - case 'address': return fromHex('0x' + result[i].slice(-40)) - default: - throw new Error('Unknown tron type: ' + resType) - } - }) - - } - return output.length === 1 ? output[0] : output -} - -async function multicall({ calls, ...options }) { - const res = [] - const customParams = calls.map(v => { - if (options.target) return { params: v } - return { target: v, } - }) - const chunks = sliceIntoChunks(customParams, 5) - for (const chunk of chunks) { - const items = [] - for (const i of chunk) items.push(call({ ...options, ...i })) - res.push(...await Promise.all(items)) - } - return res -} - -async function getTokenBalance(token, account) { - return call({ - target: token, abi: 'balanceOf(address)', params: [{ - type: 'address', - value: toHex(account) - }], resTypes: ['number'] - }) -} - -async function getTokenDecimals(token) { - return call({ target: token, abi: 'decimals()', resTypes: ['number'] }) -} - -async function getTrxBalance(account) { - var body = { - address: account, - visible: true, - }; - const { data } = await axiosObj.post('/wallet/getaccount', body) - return data.balance ?? 0 - - // const data = await getAccountDetails(account) - // return data.balance + (data.totalFrozen || 0) -} - -const nullAddress = ADDRESSES.null -const gasTokens = [nullAddress, '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'] - -async function sumTokens({ - balances = {}, - tokensAndOwners = [], - tokens = [], - owners = [], - owner, - blacklistedTokens = [], -}) { - if (!tokensAndOwners.length) { - tokens = getUniqueAddresses(tokens, true) - owners = getUniqueAddresses(owners, true) - if (owner) tokensAndOwners = tokens.map(t => [t, owner]) - if (owners.length) tokensAndOwners = tokens.map(t => owners.map(o => [t, o])).flat() - } - tokensAndOwners = tokensAndOwners.filter(([token]) => !blacklistedTokens.includes(token)) - tokensAndOwners = getUniqueToA(tokensAndOwners) - - let tronBalanceInputs = [] - - tokensAndOwners = tokensAndOwners.filter(i => { - const token = i[0] - if (token !== nullAddress && !gasTokens.includes(token)) - return true - tronBalanceInputs.push(i[1]) - return false - }).map(([token, owner]) => { - if (token.startsWith('0x')) token = fromHex(token) - return [token, owner] - }) - tronBalanceInputs = getUniqueAddresses(tronBalanceInputs, true) - - if (tronBalanceInputs.length) { - const bals = await Promise.all(tronBalanceInputs.map(getTrxBalance)) - bals.forEach(balance => sdk.util.sumSingleBalance(balances, nullAddress, balance)) - } - - const results = await Promise.all(tokensAndOwners.map(i => getTokenBalance(i[0], i[1]))) - - results.forEach((bal, i) => sdk.util.sumSingleBalance(balances, tokensAndOwners[i][0], bal, 'tron')) - return balances - - function getUniqueToA(toa) { - toa = toa.map(i => i.join('-')) - return getUniqueAddresses(toa, true).map(i => i.split('-')) - } -} - -function sumTokensExport(params) { - return async () => sumTokens(params) -} - module.exports = { - fromHex, - toHex, - call, - multicall, - getTrxBalance, - sumTokens, getStakedTron, - getTokenDecimals, - getTokenBalance, - sumTokensExport, } diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 8519fe4e01..dc78e5d2fd 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -545,6 +545,7 @@ "WTRX": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", "BTT": "TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4", "TUSD": "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", + "USDJ": "TMwFHYXLJaRUPeW6421aqXL4ZEzPRFGkGT", "ETH": "THb4CqiFdwNHsWsQCs4JhzwjMWys4aqCbF" }, "lachain": { diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index 24dedab24f..fdfbaab68c 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -4,7 +4,6 @@ const { sumTokens2: sumTokensEVM, nullAddress, } = require('./unwrapLPs') const sdk = require('@defillama/sdk') const helpers = { - "tron": require("./chain/tron"), "eos": require("./chain/eos"), "elrond": require("./chain/elrond"), "cardano":require("./chain/cardano"), diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 93c73a1693..2fa83f8fdb 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -6,6 +6,7 @@ const symbol = 'string:symbol' const { getPoolTokens, getPoolId, bPool, getCurrentTokens, getVault: getBalancerVault, } = require('./abis/balancer.json') const { requery } = require('./requery') const { getChainTransform, getFixBalances } = require('./portedTokens') +const { getUniqueAddresses, normalizeAddress } = require('./tokenMapping') const creamAbi = require('./abis/cream.json') const { isLP, log, } = require('./utils') const { sumArtBlocks, whitelistedNFTs, } = require('./nft') @@ -202,7 +203,7 @@ async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, c if ((!owners || !owners.length) && owner) owners = [owner] - owners = getUniqueAddresses(owners) + owners = getUniqueAddresses(owners, chain) nftsAndOwners = owners.map(o => [nftAddress, o]) } await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain, blacklistedTokens, whitelistedTokens, }))) @@ -382,14 +383,14 @@ async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereu let ethBalanceInputs = [] tokensAndOwners = tokensAndOwners.filter(i => { - const token = i[0].toLowerCase() + const token = normalizeAddress(i[0], chain) if (token !== nullAddress && !gasTokens.includes(token)) return true ethBalanceInputs.push(i[1]) return false }) - ethBalanceInputs = getUniqueAddresses(ethBalanceInputs) + ethBalanceInputs = getUniqueAddresses(ethBalanceInputs, chain) if (ethBalanceInputs.length) { const { output: ethBalances } = await sdk.api.eth.getBalances({ targets: ethBalanceInputs, chain, block }) @@ -670,8 +671,8 @@ async function sumTokens2({ } if (!tokensAndOwners.length) { - tokens = getUniqueAddresses(tokens) - owners = getUniqueAddresses(owners) + tokens = getUniqueAddresses(tokens, chain) + owners = getUniqueAddresses(owners, chain) if (owner) tokensAndOwners = tokens.map(t => [t, owner]) if (owners.length) tokensAndOwners = tokens.map(t => owners.map(o => [t, o])).flat() if (ownerTokens.length) { @@ -690,8 +691,8 @@ async function sumTokens2({ if (resolveUniV3) await unwrapUniswapV3NFTs({ balances, chain, block, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, }) - blacklistedTokens = blacklistedTokens.map(t => t.toLowerCase()) - tokensAndOwners = tokensAndOwners.map(([t, o]) => [t.toLowerCase(), o]).filter(([token]) => !blacklistedTokens.includes(token)) + blacklistedTokens = blacklistedTokens.map(t => normalizeAddress(t, chain)) + tokensAndOwners = tokensAndOwners.map(([t, o]) => [normalizeAddress(t, chain), o]).filter(([token]) => !blacklistedTokens.includes(token)) tokensAndOwners = getUniqueToA(tokensAndOwners) log(chain, 'summing tokens', tokensAndOwners.length) @@ -706,7 +707,7 @@ async function sumTokens2({ function getUniqueToA(toa) { toa = toa.map(i => i.join('-')) - return getUniqueAddresses(toa).map(i => i.split('-')) + return getUniqueAddresses(toa, chain).map(i => i.split('-')) } } diff --git a/projects/helper/utils.js b/projects/helper/utils.js index cdddb071c1..c8318b3655 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -178,6 +178,7 @@ async function diplayUnknownTable({ tvlResults = {}, tvlBalances = {}, storedKey try { await debugBalances({ balances, chain: storedKey, log, tableLabel, withETH: false, }) } catch (e) { + // console.log(e) log('failed to fetch prices for', balances) } } @@ -219,7 +220,13 @@ async function debugBalances({ balances = {}, chain, log = false, tableLabel = ' const tokens = [] const ethTokens = [] Object.keys(balances).forEach(label => { - const token = stripTokenHeader(label) + let token = stripTokenHeader(label) + if (chain === 'tron') { + token = label.slice(5) + tokens.push(token) + labelMapping[label] = token + return + } if (!token.startsWith('0x')) return; if (!label.startsWith(chain)) ethTokens.push(token) @@ -233,52 +240,29 @@ async function debugBalances({ balances = {}, chain, log = false, tableLabel = ' return; } + const api = new sdk.ChainApi({ chain }) - const { output: symbols } = await sdk.api.abi.multiCall({ - abi: 'erc20:symbol', - calls: tokens.map(i => ({ target: i })), - chain, - permitFailure: true, - }) - const { output: decimals } = await sdk.api.abi.multiCall({ - abi: 'erc20:decimals', - calls: tokens.map(i => ({ target: i })), - chain, - permitFailure: true, - }) - - const { output: name } = await sdk.api.abi.multiCall({ - abi: erc20.name, - calls: tokens.map(i => ({ target: i })), - chain, - permitFailure: true, - }) + const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens, permitFailure: true, }) + const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens, permitFailure: true, }) + const name = await api.multiCall({ abi: erc20.name, calls: tokens, permitFailure: true, }) let symbolsETH, nameETH if (withETH) { - symbolsETH = await sdk.api.abi.multiCall({ - abi: 'erc20:symbol', - calls: ethTokens.map(i => ({ target: i })), - permitFailure: true, - }) - - nameETH = await sdk.api.abi.multiCall({ - abi: erc20.name, - calls: ethTokens.map(i => ({ target: i })), - permitFailure: true, - }) + const ethApi = new sdk.ChainApi() + symbolsETH = await ethApi.multiCall({ abi: 'erc20:symbol', calls: ethTokens, permitFailure: true, }) + nameETH = await ethApi.multiCall({ abi: erc20.name, calls: ethTokens, permitFailure: true, }) - symbolsETH = symbolsETH.output - nameETH = nameETH.output + symbolsETH = symbolsETH + nameETH = nameETH } - let symbolMapping = symbols.reduce((a, i) => ({ ...a, [i.input.target]: i.output }), {}) - let decimalsMapping = decimals.reduce((a, i) => ({ ...a, [i.input.target]: i.output }), {}) - let nameMapping = name.reduce((a, i) => ({ ...a, [i.input.target]: i.output }), {}) + let symbolMapping = symbols.reduce((a, i, y) => ({ ...a, [tokens[y]]: i }), {}) + let decimalsMapping = decimals.reduce((a, i, y) => ({ ...a, [tokens[y]]: i }), {}) + let nameMapping = name.reduce((a, i, y) => ({ ...a, [tokens[y]]: i }), {}) if (withETH) { - symbolMapping = symbolsETH.reduce((a, i) => ({ ...a, [i.input.target]: i.output }), symbolMapping) - nameMapping = nameETH.reduce((a, i) => ({ ...a, [i.input.target]: i.output }), nameMapping) + symbolMapping = symbolsETH.reduce((a, i, y) => ({ ...a, [ethTokens[y]]: i }), symbolMapping) + nameMapping = nameETH.reduce((a, i, y) => ({ ...a, [ethTokens[y]]: i }), nameMapping) } const logObj = [] Object.entries(balances).forEach(([label, balance]) => { diff --git a/projects/intercroneswap/index.js b/projects/intercroneswap/index.js index 15c942b1a2..322e13be79 100644 --- a/projects/intercroneswap/index.js +++ b/projects/intercroneswap/index.js @@ -1,7 +1,5 @@ const sdk = require('@defillama/sdk') -const { chainExports: getChainExports } = require('../helper/exports.js') const { getUniTVL } = require('../helper/unknownTokens.js') -const { tronDex } = require('../helper/chain/tron-dex.js') const TRON_FACTORY_V2 = 'TPvaMEL5oY2gWsJv7MDjNQh2dohwvwwVwx' const TRON_FACTORY_V1 = 'TJL9Tj2rf5WPUkaYMzbvWErn6M8wYRiHG7' @@ -11,17 +9,21 @@ const factories = { } function chainTvl(chain) { - return getUniTVL({ chain, factory: factories[chain], useDefaultCoreAssets: false, }) + module.exports[chain] = { + tvl: getUniTVL({ factory: factories[chain], useDefaultCoreAssets: true, }) + } } -const chainExports = getChainExports(chainTvl, Object.keys(factories)) +module.exports = { + timetravel: false, + misrepresentedTokens: true +} -chainExports.misrepresentedTokens = true -chainExports.timetravel = true +Object.keys(factories).map(chainTvl) -module.exports = { - ...chainExports, - tron: { - tvl: sdk.util.sumChainTvls([tronDex({ factory: TRON_FACTORY_V1}), tronDex({ factory: TRON_FACTORY_V2})]) - } -} +module.exports.tron = { + tvl: sdk.util.sumChainTvls([ + getUniTVL({ factory: TRON_FACTORY_V1, useDefaultCoreAssets: true, }), + getUniTVL({ factory: TRON_FACTORY_V2, useDefaultCoreAssets: true, }), + ]) +} \ No newline at end of file diff --git a/projects/justmoney/index.js b/projects/justmoney/index.js index c856af2fb5..af8ef28f6b 100644 --- a/projects/justmoney/index.js +++ b/projects/justmoney/index.js @@ -1,113 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getTokenBalance } = require('../helper/chain/tron') const { getUniTVL } = require('../helper/unknownTokens') -const { transformDexBalances } = require('../helper/portedTokens') - -const tokens = { - ACTIV: { 'address': 'TVoxBVmFuBM7dsRnfi1V8v1iupv4uyPifN', 'id': '_activ' }, - BBT: { 'address': 'TGyZUWrL97mmmYJwrC7ZCLVrhbzvHmmWPL', 'id': '_bbt' }, - BCN: { 'address': 'TAoA331n3iKDkR62kAZ4H2n3vNL7y3d8x9', 'id': 'bemchain' }, - BEMT: { 'address': 'TBp6ZMzkxci5o4sJjFa6Fo9Wy36gcubQLW', 'id': 'bem' }, - BTT: { 'address': 'TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4', 'id': 'bittorrent' }, - CREED: { 'address': 'TM2fhs1CFiS696VW13s3oBuDdPazCEGcfJ', 'id': '_creed' }, - CREEDX: { 'address': 'TQSC8P2nLsawUZHF6iMAD6KPH8HdJXFWYi', 'id': '_creedx' }, - CUBE: { 'address': 'TQxzbBVFRFUgHXnhyCRiatrkwX9BAJnHam', 'id': '_cube' }, - CYFM: { 'address': 'TZ5jA9F5zGRgi9qk9ATMu6D7wyEpnxQGJh', 'id': 'cyberfm' }, - ICR: { 'address': 'TKqvrVG7a2zJvQ3VysLoiz9ijuMNDehwy7', 'id': 'intercrone' }, - JM: { 'address': ADDRESSES.tron.JM, 'id': 'justmoney-2' }, - JST: { 'address': 'TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9', 'id': 'just' }, - KLV: { 'address': 'TVj7RNVHy6thbM7BWdSe9G6gXwKhjhdNZS', 'id': 'klever' }, - KODX: { 'address': 'TTUwzoZAK6rpDjpSh8B2XFTnxGfbMLHJaq', 'id': 'kodx' }, - KTY: { 'address': 'TTroZqb95vmsw4kppupQ8tVEzkNDDP2bcG', 'id': '_kty' }, - LDA: { 'address': 'TNP1D18nJCqQHhv4i38qiNtUUuL5VyNoC1', 'id': '_lda' }, - LUMI: { 'address': 'TDBNKiYQ8yfJtT5MDP3byu7f1npJuG2DBN', 'id': 'lumi-credits' }, - MEOX: { 'address': 'TQy3PRQda43yb3Ku35AktG549KMQLCJVDb', 'id': '_meox' }, - NFT: { 'address': 'TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq', 'id': 'apenft' }, - NOLE: { 'address': 'TPt8DTDBZYfJ9fuyRjdWJr4PP68tRfptLG', 'id': '_nole' }, - OLDJM: { 'address': 'TT8VkSkW6igkiRsV5WiJgLrsbVwY5bLLjA', 'id': 'justmoney' }, - PROS: { 'address': 'TFf1aBoNFqxN32V2NQdvNrXVyYCy9qY8p1', 'id': '_pros' }, - SafeMoney: { 'address': 'TNBrVEzuVYbNbGF2ua3ivSX5Y5V9N4xhax', 'id': 'safemoney' }, - SFI: { 'address': 'TVGiaML3hJE7sv9NEEVjqLbF5DcXJgHSfy', 'id': 'strx-finance' }, - SUN: { 'address': 'TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S', 'id': 'sun-token' }, - TBT: { 'address': 'TJpCQC2gJRAbqG9nuQHvzYBmCuYJQzP3SS', 'id': '_tbt' }, - TNT: { 'address': 'TL33cN6t22RcKyqPKkb14iVrPHDFaFMH7t', 'id': '_tnt' }, - TRX: { 'address': 'TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR', 'id': 'tron' }, - turu: { 'address': 'TK8K7HFDLkhYS6XnFC8MKQkVK6Xq8D13qJ', 'id': '_turu' }, - TREX: { 'address': 'THyYjzy42cy83Nwg6pbsUTcV1GBrPPqGE5', 'id': '_trex' }, - TWJ: { 'address': 'TNq5PbSssK5XfmSYU4Aox4XkgTdpDoEDiY', 'id': '_twj' }, - USDD: { 'address': ADDRESSES.tron.USDD, 'id': 'usdd' }, - USDT: { 'address': ADDRESSES.tron.USDT, 'id': 'tether' }, - USTX: { 'address': 'TYX2iy3i3793YgKU5vqKxDnLpiBMSa5EdV', 'id': 'upstabletoken' }, - VBS: { 'address': 'TJRc6ZTMhHEPrWPtfsVvXW1mxHPLw1arZo', 'id': '_vbs' }, - WOX: { 'address': 'TYVFMntFj7xLMxp1CvuXwg9LpPw1dPwWhM', 'id': '_wox' }, - ZLF: { 'address': 'TXoPCbHtWTerfiNjFBpJdMQqQJoXoT87pq', 'id': '_zlf' }, -} - -const pairs = [ - [tokens.TRX, tokens.OLDJM, 'TFijK2dCUsrXoZM7PYhFqnM9F4Tac8uBJt'], - [tokens.TRX, tokens.USDT, 'TYA7DfE44XFsZEpBm7M2HAmEgU5kCtDDXg'], - [tokens.USDT, tokens.OLDJM, 'TSGv8is6ZMeHRwMQCvq6f16YFTLbw2bpmr'], - [tokens.SafeMoney, tokens.TRX, 'TTqB2CRJ2PF9qbCRkSVVGsFbx9mZUFNZS3'], - [tokens.NOLE, tokens.USDT, 'TEg25qPxj9zecferiUbf2Senqmbuae7p55'], - [tokens.TRX, tokens.SUN, 'TGzv3DHcsbxmCNj1Cd1W6P3Ao37fs2mot8'], - [tokens.LUMI, tokens.USDT, 'TWEee7dNN7Zc2M8f13M28KhBGrroVrdGxM'], - [tokens.BBT, tokens.TRX, 'TTFYn18KrMxpdoQCxsp5SYjmDgS6dDEQTv'], - [tokens.ICR, tokens.TRX, 'TTHoKhr85UiMPSHmdTukLkv3mAjjSdsiH5'], - [tokens.CREED, tokens.TRX, 'TVcbypQLttW96yHzBraXBVnhcKC7HDRSfD'], - [tokens.TRX, tokens.CREEDX, 'TN4BUph6ubYbmBDy2u9wpqoNg3DR1vrZRN'], - [tokens.USDT, tokens.CYFM, 'TYNTeRHHbqH4sm5GcrwhQqa89ZaBGipEuG'], - [tokens.USDT, tokens.KLV, 'TBB26dZsWFPDfYNyPWpD8LtdKCCRr3aDbY'], - [tokens.TRX, tokens.KTY, 'TGMgXjSEzf5h7qK7cMZPuvu4wAk9x21Vwu'], - [tokens.NFT, tokens.TRX, 'TQy4L8yguUXEsxUZmyrLfADgtwRhL6GgWH'], - [tokens.JST, tokens.TRX, 'TJAZ6MvFBUnRw8vVDvgvGRMWGzDVaS6eqr'], - [tokens.TNT, tokens.TRX, 'TFT7z2ELWzPuUeP8FgPTEAYe7syQ4TTYfo'], - [tokens.TRX, tokens.ZLF, 'TEwbxEXNd3P7fVP6v4W91mRhGCYeGUkEdE'], - [tokens.turu, tokens.TRX, 'TVBdRMsCnaNmY7jDVRm6VJxfeZZW3qKWoE'], - [tokens.TRX, tokens.KLV, 'TNMUT9h6zZDnxouGf1EfXQ4yt1nHhnM4Ae'], - [tokens.TWJ, tokens.USDT, 'TA95HcnsqfzKarHJzfB4V4JvrnZnqnBvWU'], - [tokens.BTT, tokens.TRX, 'TMz4JoDPUv8rgqUaZCkaSrH7kQ819z2Vd9'], - [tokens.TRX, tokens.ACTIV, 'TG2ZRTv3WX9cD53TEcTyjuuHd8pWCAg11X'], - [tokens.TRX, tokens.KODX, 'TL8wEwke3gGrnw4zEBxisSG2RxehZT7xXs'], - [tokens.BEMT, tokens.TRX, 'TWXEXQyEwSzSBENrWyiGu69Dd3yU8QREHV'], - [tokens.TRX, tokens.WOX, 'TG1CirSZHqQ3yGJBMfXHjBcWVctfihciQL'], - [tokens.TREX, tokens.TRX, 'TVzgLYrKSf2ZrPkWP7SbFXk6iKfR7PNHtR'], - [tokens.LDA, tokens.TRX, 'TDV1P9ZpN3VaE8Rti6PXDZ3gAWUNMbRfa2'], - [tokens.TRX, tokens.CUBE, 'TCqsrTUsBHBFoDRwjvjn6zooj6Cp6e1wUk'], - [tokens.TRX, tokens.JM, 'TR7SpMHzp5ZfsBedbXzQ5CJsqBmg8oxzzr'], - [tokens.USDT, tokens.JM, 'THTWV7R3U7XQsHWQt8YHgsqirvY9QttB7u'], - [tokens.USDD, tokens.USDT, 'TNR1gJVMjE47uZxCrQaQe1xat2uBs3jAHr'], - [tokens.TBT, tokens.TRX, 'TWwbk4ypVR6aKb2CS8TvERg1rxATUfWavP'], - [tokens.TRX, tokens.USTX, 'TUFeu1WbJwL4jCAyu9pcotuASnbxEUbphn'], - [tokens.BBT, tokens.VBS, 'TH6yNkvtthsPJLqVE1M8ri7zX9G7pi3fRR'], - [tokens.TRX, tokens.USDD, 'TAQTQvDWBvHmfjHDn8cPaPUUxqdGQK9UjS'], - [tokens.TRX, tokens.MEOX, 'TJLz2jF3aF6yLL27sdmfjakrcLyY29qfxL'], - [tokens.PROS, tokens.TRX, 'TA7hPWMWPWoadfFKWpTAdPYVZd3SNdtBDE'], - [tokens.PROS, tokens.USDT, 'TEApbrCXg4q6ccTvwLRNNh9N1wN4gfxTtd'], - // [tokens.GOLC, tokens.USDT, 'TPEZJ7Jm3FqzigM2PZ7tGxg6FMphfwVLn2'], - [tokens.MEOX, tokens.JM, 'TMS2EaT8oKQcNmrbjArhi1umN1kFStRqrj'], - [tokens.ICR, tokens.MEOX, 'TUetV2cVNwyeG24TKa1Vbdoom5Acu7Vuw2'], - [tokens.BCN, tokens.TRX, 'TTJVUzQnGcPcgkWHBmBBqGBtdEvaHdmVmG'], - // [tokens.THANX, tokens.USDT, 'TLht8w4xJMBsCn7keucn3PXzFyuGnQdjTS'], - [tokens.turu, tokens.USDT, 'TMGpNrSJvFeQSGtoLa3msFtKYmLAs3phAv'], - // [tokens.TRX, tokens.STRX, 'TTjMrfeaSivubKPNGTLJNKLrdffxh1Rq7v'], - [tokens.TRX, tokens.SFI, 'TUgeA5NHe9i8abXDUGn6YF29cfqNhY1P27'], -] - -async function tronTvl() { - const data = [] - - await Promise.all(pairs.map(addPairs)) - return transformDexBalances({ chain: 'tron', data, }) - - async function addPairs([tokenA, tokenB, pool]) { - data.push({ - token0:tokenA.address, - token0Bal:await getTokenBalance(tokenA.address, pool), - token1:tokenB.address, - token1Bal:await getTokenBalance(tokenB.address, pool), - }) - } -} module.exports = { bsc: { @@ -135,6 +26,9 @@ module.exports = { }), }, tron: { - tvl: tronTvl + tvl: getUniTVL({ + factory: 'TBfTeNjh7k8PbkTad8z6WS2vqh7SQZUfQ8', + useDefaultCoreAssets: true, + }), }, } diff --git a/projects/luminous/index.js b/projects/luminous/index.js index 15a4e12eae..a9e75a125a 100644 --- a/projects/luminous/index.js +++ b/projects/luminous/index.js @@ -1,9 +1,5 @@ -const { - getTokenBalance, - getTrxBalance, - call, - sumTokensExport, -} = require("../helper/chain/tron"); +const sdk = require('@defillama/sdk') +const { sumTokensExport } = require('../helper/unwrapLPs') const { nullAddress } = require("../helper/tokenMapping"); const stakingWaterContract = "THyHbFrG5wnxdp9Lv7AgwJ4k7Nt1dp2pzj"; @@ -20,24 +16,29 @@ const lumiLpToken = "TUhZUbJaVicbQeNXHGBKxVsVuNL94usuoU"; async function Pool2() { const { api } = arguments[3] + const [ waterLpTokenAmount, lumiLpTokenAmount, waterInLp, lumiInLp, - trxInWaterLp, - trxInLumiLp, waterLpTotalSupply, lumiLpTotalSupply, + ] = await api.batchCall([ + { abi: 'erc20:balanceOf', target: waterLpToken, params: lumiFarm }, + { abi: 'erc20:balanceOf', target: lumiLpToken, params: waterFarm }, + { abi: 'erc20:balanceOf', target: WATER, params: waterLpToken }, + { abi: 'erc20:balanceOf', target: LUMI, params: lumiLpToken }, + { abi: 'erc20:totalSupply', target: waterLpToken, }, + { abi: 'erc20:totalSupply', target: lumiLpToken, }, + ]) + + const [ + { output: trxInWaterLp}, + { output: trxInLumiLp}, ] = await Promise.all([ - getTokenBalance(waterLpToken, lumiFarm), - getTokenBalance(lumiLpToken, waterFarm), - getTokenBalance(WATER, waterLpToken), - getTokenBalance(LUMI, lumiLpToken), - getTrxBalance(waterLpToken), - getTrxBalance(lumiLpToken), - call({ target: waterLpToken, abi: 'totalSupply()', resTypes:['number'] }), - call({ target: lumiLpToken, abi: 'totalSupply()', resTypes:['number'] }), + sdk.api.eth.getBalance({ target: waterLpToken, chain: 'tron'}), + sdk.api.eth.getBalance({ target: lumiLpToken, chain: 'tron'}), ]); api.add(WATER, (waterInLp * waterLpTokenAmount) / waterLpTotalSupply) @@ -48,10 +49,12 @@ async function Pool2() { module.exports = { tron: { - staking: sumTokensExport({ tokensAndOwners: [ - [WATER,stakingWaterContract], - [LUMI,stakingLumiContract], - ]}), + staking: sumTokensExport({ + tokensAndOwners: [ + [WATER, stakingWaterContract], + [LUMI, stakingLumiContract], + ] + }), pool2: Pool2, tvl: (async) => ({}), }, diff --git a/projects/nervenetworkbridge/index.js b/projects/nervenetworkbridge/index.js index 2b31e496b8..fbffad6ae6 100644 --- a/projects/nervenetworkbridge/index.js +++ b/projects/nervenetworkbridge/index.js @@ -1,5 +1,4 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { sumTokens: sumTronTokens } = require('../helper/chain/tron'); const sdk = require("@defillama/sdk"); const { getConfig } = require('../helper/cache') const { get } = require('../helper/http') @@ -56,6 +55,7 @@ async function tvl(_, _b, _cb, { api, }) { } async function tronTvl() { + const { api } = arguments[3] let conf = await getTokensConf(); const tokens = conf['tron']; const tokenKeys = Object.keys(conf['tron']) @@ -66,7 +66,7 @@ async function tronTvl() { tokens1.push(token) } } - return sumTronTokens({ owner: tronBridgeContract, tokens: [nullAddress, ...tokens1] }) + return sumTokens2({ api, owner: tronBridgeContract, tokens: [nullAddress, ...tokens1] }) } module.exports = { diff --git a/projects/raidshift/index.js b/projects/raidshift/index.js index da12d12877..a97ef50d2d 100644 --- a/projects/raidshift/index.js +++ b/projects/raidshift/index.js @@ -1,9 +1,8 @@ -const { multicall, sumTokens, } = require('../helper/chain/tron') -const { nullAddress } = require('../helper/tokenMapping') +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const contracts = [ - 'TC3TuowSyMxJSLaqiWJuCkZ2i3q7JCFR4x', - 'TGxDz3kgbxwEAESNtfWk4JFXXEgZAoWqeG', + // 'TC3TuowSyMxJSLaqiWJuCkZ2i3q7JCFR4x', + // 'TGxDz3kgbxwEAESNtfWk4JFXXEgZAoWqeG', 'TVMuhpXdRvNjjFAWqZ5urvhrQQyFvc19SN', 'TJmx4Zg4xMjCZR5Q3aoCyDmYY3r42xU2GZ', 'TMiHbWfnzh8cFmxNptoDgBvhuFSe2eiDFQ', @@ -17,18 +16,19 @@ const contracts = [ ] async function tvl() { - const tokenAs = await multicall({ calls: contracts, abi: 'tokenA()', resTypes:['address'],}) - const tokenBs = await multicall({ calls: contracts, abi: 'tokenB()', resTypes:['address'],}) + const { api } = arguments[3] + const tokenAs = await api.multiCall({ calls: contracts, abi: 'address:tokenA', permitFailure: true }) + const tokenBs = await api.multiCall({ calls: contracts, abi: 'address:tokenB', permitFailure: true }) const tokensAndOwners = [] tokenAs.forEach((t, i) => tokensAndOwners.push([fixNullToken(t), contracts[i]])) tokenBs.forEach((t, i) => tokensAndOwners.push([fixNullToken(t), contracts[i]])) - return sumTokens({ tokensAndOwners, }) + return sumTokens2({ api, tokensAndOwners, blacklistedTokens: ['TNEjtKFHWpz8bN2ZruLVY2NW2AD39uSUAs']}) + function fixNullToken(token) { if (token === '0x') return nullAddress return token - } -} + }} module.exports = { tron: { diff --git a/projects/sun/index.js b/projects/sun/index.js index ac8321f10a..11c7987933 100644 --- a/projects/sun/index.js +++ b/projects/sun/index.js @@ -1,27 +1,25 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { getTokenBalance, getTrxBalance, sumTokens, sumTokensExport, call, } = require('../helper/chain/tron'); -const { nullAddress } = require('../helper/unwrapLPs'); +const { sumTokensExport } = require('../helper/unwrapLPs') const pools = [ { pool: 'TKcEU8ekq2ZoFzLSGFYCUY6aocJBX9X31b', stablecoins: [ ADDRESSES.tron.USDT, // USDT - "TMwFHYXLJaRUPeW6421aqXL4ZEzPRFGkGT", // // USDJ - "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", // // TUSD + ADDRESSES.tron.USDJ, + ADDRESSES.tron.TUSD, ] }, { pool: 'TKVsYedAY23WFchBniU7kcx1ybJnmRSbGt', stablecoins: [ // USDD 3pool - ADDRESSES.tron.USDT, // USDT - ADDRESSES.tron.USDD, // USDD - "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", // // TUSD + ADDRESSES.tron.USDT, // USDT + ADDRESSES.tron.USDD, // USDD + ADDRESSES.tron.TUSD, ] }, { pool: 'TAUGwRhmCP518Bm4VBqv7hDun9fg8kYjC4', stablecoins: [ // USDD 2pool - ADDRESSES.tron.USDD, // USDD - ADDRESSES.tron.USDT, // USDT + ADDRESSES.tron.USDD, // USDD + ADDRESSES.tron.USDT, // USDT ] }, { @@ -48,7 +46,7 @@ const pools = [ }, { pool: 'TS8d3ZrSxiGZkqhJqMzFKHEC1pjaowFMBJ', stablecoins: [ // new TUSD 2pool - "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", // // TUSD + ADDRESSES.tron.TUSD, ADDRESSES.tron.USDT, // USDT ] }, @@ -59,7 +57,7 @@ const pools = [ }, { pool: 'TKBqNLyGJRQbpuMhaT49qG7adcxxmFaVxd', stablecoins: [ // new USDJ/2USD - "TMwFHYXLJaRUPeW6421aqXL4ZEzPRFGkGT", // // USDJ + ADDRESSES.tron.USDJ, ] }, { @@ -69,12 +67,9 @@ const pools = [ } ] -async function tvl() { - const tokensAndOwners = pools.map(({ pool, stablecoins }) => { - return stablecoins.map(v => [v, pool]) - }).flat() - return sumTokens({ tokensAndOwners }) -} +const ownerTokens = pools.map(({ pool, stablecoins }) => { + return [stablecoins, pool] +}) const stakingContract = "TXbA1feyCqWAfAQgXvN1ChTg82HpBT8QPb" const sun = "TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S" @@ -83,7 +78,7 @@ const lpToken = 'TDQaYrhQynYV9aXTYj63nwLAafRffWSEj6' const oldLpStaking = "TGsymdggp98tLKZWGHcGX58TjTcaQr9s4x" const lpStaking = "TAkrcKsS5FW9f3ZfzvWy6Zvsz9uEjUxPoV" -async function pool2() { +/* async function pool2() { const { api } = arguments[3] const [lpTokenAmount, sunInLp, trxInLp, totalSupply] = await Promise.all([ getTokenBalance(lpToken, lpStaking), @@ -94,12 +89,12 @@ async function pool2() { api.add(sun, sunInLp * lpTokenAmount / totalSupply) api.add(nullAddress, trxInLp * lpTokenAmount / totalSupply) } - + */ module.exports = { tron: { - tvl, - staking: sumTokensExport({ owner: stakingContract, tokens: [sun]}), + tvl: sumTokensExport({ ownerTokens }), + staking: sumTokensExport({ owner: stakingContract, tokens: [sun] }), // pool2 }, } diff --git a/projects/sunswap-v2/index.js b/projects/sunswap-v2/index.js new file mode 100644 index 0000000000..283f373d4a --- /dev/null +++ b/projects/sunswap-v2/index.js @@ -0,0 +1,19 @@ +const { get } = require('../helper/http') + +async function tvl(ts){ + const { data } = await get('https://pabc.endjgfsv.link/swapv2/scan/getAllLiquidityVolume') + const lastItem = data[data.length -1] + if (lastItem.time < (ts - 24 * 3600)) throw new Error('Outdated Data!') + + return { + tether: lastItem.liquidity + } +} + +module.exports = { + misrepresentedTokens: true, + timetravel: false, + tron: { + tvl + }, +} \ No newline at end of file diff --git a/projects/unifi-protocol/index.js b/projects/unifi-protocol/index.js index b3baabf8ff..a40d5fe2aa 100644 --- a/projects/unifi-protocol/index.js +++ b/projects/unifi-protocol/index.js @@ -1,7 +1,5 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { staking } = require('../helper/staking') -const { sumTokensExport } = require('../helper/chain/tron'); const dexExports = { timetravel: false, @@ -62,12 +60,10 @@ const dexExports = { }), }, tron: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.tron.USDT, 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'], - [ADDRESSES.tron.WTRX, 'TDrFhbM8kDiPtSx3Cgd71K3qwwu77bRdYQ'], - ] - }) + tvl: getUniTVL({ + factory: 'TUtmsH4DZewoihrybFU2RG1pdW9sBhuSRZ', + useDefaultCoreAssets: true, + }), }, } From d22158fce49db179ba9ba35ea0882b4afb52f0a7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 May 2023 09:19:23 +0200 Subject: [PATCH 0490/1354] update tron adapters --- projects/helper/coreAssets.json | 3 ++ projects/justlend.js | 23 ++------------ projects/juststable/index.js | 30 ++++--------------- projects/oneswap/index.js | 53 +++++++++++---------------------- projects/socialswap/index.js | 22 ++++++++------ projects/sunswap-v2/index.js | 20 ++++--------- projects/uswap-me/index.js | 11 +++++++ 7 files changed, 59 insertions(+), 103 deletions(-) create mode 100644 projects/uswap-me/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index dc78e5d2fd..d63c926082 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -542,6 +542,9 @@ "LTC": "TR3DLthpnDdCGabhVDbD3VMsiJoCXY3bZd", "DOGE": "THbVQp8kMjStKNnf2iCY6NEzThKMK5aBHg", "SUN": "TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S", + "SUN_1": "TKkeiboTkxXKJpbmVFbv4a8ov5rAfRDMf9", + "WBTT": "TKfjV9RNKJJCqPvBtK8L7Knykh7DNWvnYt", + "BUSD": "TMz2SWatiAtZVVcH2ebpsbVtYwUPT9EdjH", "WTRX": "TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR", "BTT": "TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4", "TUSD": "TUpMhErZL2fhh4sVNULAbNKLokS4GjC1F4", diff --git a/projects/justlend.js b/projects/justlend.js index 13ce516008..f609798c85 100644 --- a/projects/justlend.js +++ b/projects/justlend.js @@ -1,23 +1,6 @@ -const { get } = require('./helper/http') -const { toUSDTBalances } = require('./helper/balances'); - -function core(borrowed){ -return async () => { - const response = ( - await get( - 'https://labc.ablesdxd.link/justlend/markets/dashboard') - ).data; - - const tvl = response.totalDepositedUSD - response.totalBorrowedUSD; - - return toUSDTBalances(borrowed? response.totalBorrowedUSD : tvl); -}; -} +const { compoundExports2 } = require('./helper/compound') +const ADDRESSES = require('./helper/coreAssets.json') module.exports = { - misrepresentedTokens: true, - tron: { - tvl: core(false), - borrowed: core(true), - }, + tron: compoundExports2({ comptroller: 'TGjYzgCyPobsNS9n6WcbdLVR9dH7mWqFx7', cether: '0x2c7c9963111905d29eb8da37d28b0f53a7bb5c28', cetheEquivalent: ADDRESSES.tron.WTRX, transformAdressRaw: i => 'tron:' + i }), }; diff --git a/projects/juststable/index.js b/projects/juststable/index.js index a7d6175d43..bbba4e37fb 100644 --- a/projects/juststable/index.js +++ b/projects/juststable/index.js @@ -1,27 +1,9 @@ -const axios = require('axios') -const {getApiTvl} = require('../helper/historicalApi') -const { usdtAddress } = require('../helper/balances') - -async function tvl(timestamp){ - const balances = await getApiTvl(timestamp, async ()=>{ - const r = (await axios.get("https://abc.ablesdxd.link/scan/collInfo/timeLine")).data.data - return Number(r[r.length-1].wtrxLocked)/1e12 - }, async()=>{ - const r = await axios.get("https://abc.ablesdxd.link/scan/collInfo/timeLine") - // {liquidity: "0.000000000000000000", time: 1597492800000} - return r.data.data.map(d=>({ - date: d.t/1000, - totalLiquidityUSD: Number(d.wtrxLocked)/1e12 - })) - }); - return { - "tron": Number(balances[usdtAddress]) - } -} +const { sumTokensExport } = require('../helper/unwrapLPs'); +const ADDRESSES = require('../helper/coreAssets.json'); module.exports = { - timetravel: true, - tron:{ - tvl - } + timetravel: false, + tron: { + tvl: sumTokensExport({ owner: 'TRrY9fXGnfLmcp7ytkLmHiTpvYMHG6zUGF', tokens: [ADDRESSES.tron.WTRX] }) + } } diff --git a/projects/oneswap/index.js b/projects/oneswap/index.js index c7e030af07..f69fc87473 100644 --- a/projects/oneswap/index.js +++ b/projects/oneswap/index.js @@ -1,38 +1,21 @@ -const utils = require('../helper/utils') -const { getApiTvl } = require('../helper/historicalApi') +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const tronNull = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' -function getTvlChain(chain) { - return async (timestamp) => { - return getApiTvl(timestamp, - async () => { - const data = await utils.fetchURL(`https://www.oneswap.net/res/${chain}/market/statistic/total`) - return data.data.data.total_liquidity_value - }, - async () => { - const data = await utils.fetchURL(`https://www.oneswap.net/res/${chain}/market/statistic/graph/liquidity?interval=30d`) - return data.data.data.map(d => ({ - date: Math.round(new Date(d.timestamp).getTime() / 1000), - totalLiquidityUSD: d.liquidity - })) - } - ) - } +const config = { + ethereum: { factory: '0x5ed3c9089ed0355bc77cf439dc2ed28c4054c8c4' }, + bsc: { factory: '0xEeFa8Ca24dd1D573882277b917720953e999734D' }, + csc: { factory: '0xEeFa8Ca24dd1D573882277b917720953e999734D' }, + tron: { factory: 'TTw6kcn7yGExHZRuJXNP2saq6xZ7oTHne4' }, } -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: getTvlChain("eth") - }, - csc: { - tvl: getTvlChain("cet") - }, - tron: { - tvl: getTvlChain("trx") - }, - bsc: { - tvl: getTvlChain("bnb") - }, - methodology: `Counts the liquidity on all AMM pools. Metrics come from: 'https://www.oneswap.net/eth', - 'https://www.oneswap.net/cet', 'https://www.oneswap.net/trx' and 'https://www.oneswap.net/bnb'`, -} \ No newline at end of file +Object.keys(config).forEach(chain => { + const { factory } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const pairs = await api.fetchList({ lengthAbi: 'uint256:allPairsLength', itemAbi: 'function allPairs(uint256) view returns (address)', target: factory, permitFailure: true, }) + const data = await api.multiCall({ abi: 'function getTokensFromPair(address) view returns (address, address)', calls: pairs, target: factory}) + const ownerTokens = data.map((v, i) => [v.map(i => i === tronNull ? nullAddress : i), pairs[i]]) + return sumTokens2({ api, ownerTokens, blacklistedTokens: pairs}) + } + } +}) \ No newline at end of file diff --git a/projects/socialswap/index.js b/projects/socialswap/index.js index 1e67570095..d57f5dc8b6 100644 --- a/projects/socialswap/index.js +++ b/projects/socialswap/index.js @@ -1,12 +1,16 @@ -const utils = require("../helper/utils"); +const sdk = require('@defillama/sdk') +const { getUniTVL } = require('../helper/unknownTokens.js') -// There are staking and pool2 parts, but the Social Swap Token (SST) is not on coingecko yet. It'll be updated !! - -async function fetch(timestamp, chainBlocks) { - const tvl = await utils.fetchURL("https://backend.socialswap.io/api/v1/tlv"); - return tvl.data.total_usdt; -} +const TRON_FACTORY_V1 = 'TN57jo2jGQz3v5YDybyLFHFtvkmRQvCNFz' +const TRON_FACTORY_V2 = 'TSzrq5j2Btn27eVcBAvZj9WQK3FhURamDQ' module.exports = { - fetch, -}; + timetravel: false, + misrepresentedTokens: true, + tron: { + tvl: sdk.util.sumChainTvls([ + getUniTVL({ factory: TRON_FACTORY_V1, useDefaultCoreAssets: true, }), + getUniTVL({ factory: TRON_FACTORY_V2, useDefaultCoreAssets: true, }), + ]) + } +} diff --git a/projects/sunswap-v2/index.js b/projects/sunswap-v2/index.js index 283f373d4a..90b64aa698 100644 --- a/projects/sunswap-v2/index.js +++ b/projects/sunswap-v2/index.js @@ -1,19 +1,9 @@ -const { get } = require('../helper/http') - -async function tvl(ts){ - const { data } = await get('https://pabc.endjgfsv.link/swapv2/scan/getAllLiquidityVolume') - const lastItem = data[data.length -1] - if (lastItem.time < (ts - 24 * 3600)) throw new Error('Outdated Data!') - - return { - tether: lastItem.liquidity - } -} +const { getUniTVL } = require('../helper/unknownTokens.js') module.exports = { - misrepresentedTokens: true, timetravel: false, + misrepresentedTokens: true, tron: { - tvl - }, -} \ No newline at end of file + tvl: getUniTVL({ factory: 'TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY', useDefaultCoreAssets: true, }), + } +} diff --git a/projects/uswap-me/index.js b/projects/uswap-me/index.js new file mode 100644 index 0000000000..dfec3ae19a --- /dev/null +++ b/projects/uswap-me/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +// https://uswap.me/analytics/ +module.exports = { + tron: { + tvl: getUniTVL({ + factory: 'TQ4F8Gr1qRKcMva64qYweAJNAVtgfj6ZJd', + useDefaultCoreAssets: true, + }), + }, +} From 6101ef5a551c34f9ee2430581484479d864fe33e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 May 2023 16:02:13 +0200 Subject: [PATCH 0491/1354] bugfix --- projects/helper/unwrapLPs.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 2fa83f8fdb..2ff925474f 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -12,7 +12,6 @@ const { isLP, log, } = require('./utils') const { sumArtBlocks, whitelistedNFTs, } = require('./nft') const wildCreditABI = require('../wildcredit/abi.json'); const { covalentGetTokens } = require("./http"); -const { getUniqueAddresses, normalizeAddress } = require('../helper/tokenMapping') const lpReservesAbi = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' const lpSuppliesAbi = "uint256:totalSupply" From e6100da79b8a7ebc393e9752f58c454a8eb3230c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 May 2023 21:24:07 +0530 Subject: [PATCH 0492/1354] Spiral-dao (#6343) * SpiralDao * move treasury to treasury adapter --------- Co-authored-by: Deleted --- projects/spiral-dao/abi.json | 6 +++++ projects/spiral-dao/index.js | 28 +++++++++++++++++++++ projects/treasury/spiral-dao.js | 44 +++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 projects/spiral-dao/abi.json create mode 100644 projects/spiral-dao/index.js create mode 100644 projects/treasury/spiral-dao.js diff --git a/projects/spiral-dao/abi.json b/projects/spiral-dao/abi.json new file mode 100644 index 0000000000..bc914099df --- /dev/null +++ b/projects/spiral-dao/abi.json @@ -0,0 +1,6 @@ +{ + "poolCount": "function poolCount() external view returns (uint256)", + "poolInfo": "function poolInfo(uint256 poolId) external view returns (tuple(address target, address adapter, uint256 targetPoolId, uint256 rewardableDeposits) memory)", + "lockableToken": "function lockableToken(uint256) external view returns (address)" +} + diff --git a/projects/spiral-dao/index.js b/projects/spiral-dao/index.js new file mode 100644 index 0000000000..839789b86d --- /dev/null +++ b/projects/spiral-dao/index.js @@ -0,0 +1,28 @@ +const { staking } = require('../helper/staking') +const sdk = require('@defillama/sdk'); +const abi = require('./abi.json'); + +const MASTERMIND = "0xFACE8DED582816E2f2cD4C6cc1cbD1aCCc9df65E" +const STAKING = "0x6701e792b7cd344bae763f27099eeb314a4b4943" +const COIL = '0x823E1B82cE1Dc147Bbdb25a203f046aFab1CE918' + +async function tvl(_, _1, _2, { api }) { + const balances = {} + let pools = await api.fetchList({ target: MASTERMIND, itemAbi: abi.poolInfo, lengthAbi: abi.poolCount, }) + let poolInputs = await api.fetchList({ target: MASTERMIND, itemAbi: abi.lockableToken, lengthAbi: abi.poolCount, }) + for (let i = 0; i < pools.length; i++) { + await sdk.util.sumSingleBalance(balances, poolInputs[i], pools[i].rewardableDeposits) + } + return balances; +} + + +module.exports = { + methodology: 'Information is retrieved from both the blockchain and the SpiralDAO API. "https://api.spiral.farm".', + start: 16991020, + ethereum: { + tvl, + staking: staking(STAKING, COIL), + } +}; + diff --git a/projects/treasury/spiral-dao.js b/projects/treasury/spiral-dao.js new file mode 100644 index 0000000000..06d3ccc42f --- /dev/null +++ b/projects/treasury/spiral-dao.js @@ -0,0 +1,44 @@ +const sdk = require('@defillama/sdk') +const utils = require('../helper/utils'); +const { ethers } = require("ethers"); +const ADDRESSES = require('../helper/coreAssets.json') +const { USDC } = ADDRESSES.ethereum + + +// treasury address: 0xc47ec74a753acb09e4679979afc428cde0209639 +async function tvl(_, _1, _2, { api }) { + let balances = {}; + + const toWei = async(address, balance) => { + if (!+balance > 0) return; + const decimals = await api.call({ + abi: 'erc20:decimals', + target: address, + }) + return ethers.utils.parseUnits((balance >> 0).toString(), decimals).toString() + } + + const response = await utils.fetchURL('https://api.spiral.farm/data/eth/treasury'); + if (response.data.success) { + for (let [address, info] of Object.entries(response.data.tokens)){ + if (address === 'eth'){ + await sdk.util.sumSingleBalance(balances, 'ethereum', info.totalAmount) + } else { + await sdk.util.sumSingleBalance(balances, address, await toWei(address, info.totalAmount)) + } + + } + await sdk.util.sumSingleBalance(balances, USDC, + await toWei(USDC, response.data.extraUsdValues.tokenRedeemContractUsdcBalance)) + await sdk.util.sumSingleBalance(balances, USDC, response.data.extraUsdValues.bribes) + } + + return balances; +} + +module.exports = { + timetravel: false, + ethereum: { + tvl + } +} \ No newline at end of file From 293bdd4d835756dc0ea6810d1dbe6384f3f00c8c Mon Sep 17 00:00:00 2001 From: TJakubek <39831436+TJakubek@users.noreply.github.com> Date: Mon, 22 May 2023 17:58:38 +0200 Subject: [PATCH 0493/1354] enosys farm with newly bridged XDC - exXDC (#6342) --- projects/flarefarm/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/flarefarm/index.js b/projects/flarefarm/index.js index ed3d6be0b8..5a5b5fc352 100644 --- a/projects/flarefarm/index.js +++ b/projects/flarefarm/index.js @@ -28,6 +28,7 @@ async function farmTvl(timestamp, ethblock, { [chain]: block }) { [EXFI, '0xD02C3e166223EE78F4d0ae99F5396142b48D97FE'], [WSGB, '0x745d8896629842ef8E44D269f89A7A873086A6F2'], [EXFI, "0x61128b44C299b0f7a752BF6278f44f1EcefD9109"], + ['0x3233642aCf7664a69c33e5a6FFAb321608d7A65f','0xF81B465C562ED3f54Aea772D8A56FAF93884ea2E'] ]; return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) From 7ff6d66c55deb0ca02eaafde3e84a14e72046481 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 May 2023 22:09:20 +0530 Subject: [PATCH 0494/1354] Kagla (#6344) * fix calculation * add native USDT * kagla: code refactor --------- Co-authored-by: qudacki --- projects/kagla/addresses.js | 44 --------------------- projects/kagla/index.js | 19 +++------- projects/kagla/pools.js | 76 ++++--------------------------------- projects/kagla/staking.js | 22 ----------- projects/kagla/utils.js | 11 ------ 5 files changed, 13 insertions(+), 159 deletions(-) delete mode 100644 projects/kagla/staking.js delete mode 100644 projects/kagla/utils.js diff --git a/projects/kagla/addresses.js b/projects/kagla/addresses.js index 5af9989daf..b51f3ce4cb 100644 --- a/projects/kagla/addresses.js +++ b/projects/kagla/addresses.js @@ -1,55 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') -const ZERO_ADDRESS = ADDRESSES.null const ADDRESS_PROVIDER_ADDRESS = "0x5a0ad8337E5C6895b3893E80c8333859DAcf7c01" const KGL_ADDRESS = ADDRESSES.astar.KGL const VOTING_ESCROW_ADDRESS = "0x432c8199F548425F7d5746416D98126E521e8174" -const transformTokenAddress = (address) => TOKENS[address] - -const TOKEN_INFO = { - ausd: { key: "acala-dollar", decimals: 12 } -} - -const TOKENS = { - // KGL - [KGL_ADDRESS]: "kagla-finance", - // muKGL: staked KGL by Muuu Finance - "0x5eaAe8435B178d4677904430BAc5079e73aFa56e": "kagla-finance", - // USDC - [ADDRESSES.moonbeam.USDC]: ADDRESSES.ethereum.USDC, - // Starlay lUSDC -> USDC - [ADDRESSES.astar.lUSDC]: ADDRESSES.ethereum.USDC, - // USDT - [ADDRESSES.astar.USDT]: ADDRESSES.ethereum.USDT, - // Starlay lUSDT -> USDT - [ADDRESSES.astar.lUSDT]: ADDRESSES.ethereum.USDT, - // DAI - [ADDRESSES.astar.DAI]: ADDRESSES.ethereum.DAI, - // Starlay lDAI -> DAI - [ADDRESSES.astar.lDAI]: ADDRESSES.ethereum.DAI, - // BUSD - [ADDRESSES.oasis.ceUSDT]: "binance-usd", - // BAI - [ADDRESSES.astar.BAI]: "bai-stablecoin", - // aUSD - "0xfFFFFfFF00000000000000010000000000000001": TOKEN_INFO.ausd.key, - // ASTR - "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" : "astar", - // nASTR: staked ASTR by Algem - [ADDRESSES.astar.nASTR]: "astar", - // LAY - [ADDRESSES.astar.LAY]: "starlay-finance", - // muLAY: staked LAY by Muuu Finance - "0xDDF2ad1d9bFA208228166311FC22e76Ea7a4C44D": "starlay-finance", -}; - - module.exports = { - ZERO_ADDRESS, ADDRESS_PROVIDER_ADDRESS, VOTING_ESCROW_ADDRESS, KGL_ADDRESS, - TOKEN_INFO, - transformTokenAddress } diff --git a/projects/kagla/index.js b/projects/kagla/index.js index 0eda07aca0..560f32dd17 100644 --- a/projects/kagla/index.js +++ b/projects/kagla/index.js @@ -1,26 +1,17 @@ const { getBalances } = require("./pools"); -const { getStaked } = require("./staking"); +const { VOTING_ESCROW_ADDRESS, KGL_ADDRESS, } = require("./addresses"); +const { staking } = require('../helper/staking') const START_BLOCK = 724359 -async function astar(_timestamp, _block, {astar: block}) { - const chain = "astar" - const balances = await getBalances(chain, block) - return balances -} - -async function staking(_timestamp, _block, {astar: block}) { - const chain = "astar" - const staked = await getStaked(chain, block) - return staked +async function astar(_timestamp, _block, {astar: block}, { api }) { + return getBalances(api) } module.exports = { - timetravel: true, - misrepresentedTokens: true, start: START_BLOCK, astar: { tvl: astar, - staking: staking + staking: staking(VOTING_ESCROW_ADDRESS, KGL_ADDRESS) }, }; diff --git a/projects/kagla/pools.js b/projects/kagla/pools.js index eef4140280..183c19b00a 100644 --- a/projects/kagla/pools.js +++ b/projects/kagla/pools.js @@ -1,76 +1,16 @@ -const sdk = require("@defillama/sdk"); -const { toBigNumberJsOrZero } = require("./utils.js"); +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const addressProviderABI = require("./abi/addressProvider.json"); const registryABI = require("./abi/registry.json"); -const { ADDRESS_PROVIDER_ADDRESS, ZERO_ADDRESS, transformTokenAddress, TOKEN_INFO } = require("./addresses"); +const { ADDRESS_PROVIDER_ADDRESS, } = require("./addresses"); -const getBalances = async (chain, block) => { - const registryAddress = (await sdk.api.abi.call({ - target: ADDRESS_PROVIDER_ADDRESS, - abi: addressProviderABI["get_registry"], - block, - chain, - })).output +const getBalances = async (api) => { + const registry = await api.call({ target: ADDRESS_PROVIDER_ADDRESS, abi: addressProviderABI["get_registry"], }) + const poolAddresses = await api.fetchList({ lengthAbi: registryABI["pool_count"], itemAbi: registryABI["pool_list"], target: registry }) - const poolAddresses = await listPoolAddresses(chain, block, registryAddress) - - const poolCoinsArray = (await sdk.api.abi.multiCall({ - calls: poolAddresses.map(address => ({ target: registryAddress, params: address })), - abi: registryABI["get_coins"], - block, - chain, - })).output.map(({ output }) => output.filter(address => address !== ZERO_ADDRESS)) - - const poolBalancesArray = (await sdk.api.abi.multiCall({ - calls: poolAddresses.map(address => ({ target: registryAddress, params: address })), - abi: registryABI["get_balances"], - block, - chain, - })).output.map(({ output }) => output) - - const balanceBNRecord = poolCoinsArray.reduce( - (result, coins, poolIndex) => - coins.reduce((coinsResult, coin, coinIndex) => { - const balance = toBigNumberJsOrZero(poolBalancesArray[poolIndex][coinIndex]) - const transformedCoin = transformTokenAddress(coin) - const exisitingBalance = coinsResult[transformedCoin] - if(!transformedCoin) return coinsResult - if(!exisitingBalance) - return { ...coinsResult, [transformedCoin]: balance } - return { ...coinsResult, [transformedCoin]: exisitingBalance.plus(balance) } - }, result), - {} - ) - - return Object.keys(balanceBNRecord).reduce((result, key) => { - if (key.startsWith("0x")) - return { ...result, [key]: balanceBNRecord[key].toString() } - for (const token of Object.values(TOKEN_INFO)) { - if (key === token.key) - return {...result, [key]: balanceBNRecord[key].shiftedBy(-token.decimals).toFixed(0) } - } - return ({ ...result, [key]: balanceBNRecord[key].shiftedBy(-18).toFixed(0) }) - }, {}) -} - -const listPoolAddresses = async (chain, block, registryAddress) => { - const numOfPools = (await sdk.api.abi.call({ - target: registryAddress, - abi: registryABI["pool_count"], - block, - chain, - })).output - const poolAddressesCalls = [] - for (let i = 0; i < numOfPools; i++) { - poolAddressesCalls.push({ target: registryAddress, params: i }) - } - return (await sdk.api.abi.multiCall({ - calls: poolAddressesCalls, - abi: registryABI["pool_list"], - block, - chain, - })).output.map(({ output }) => output) + const poolCoinsArray = await api.multiCall({ target: registry, calls: poolAddresses, abi: registryABI["get_coins"], }) + const ownerTokens = poolCoinsArray.map((v, i) => [v.filter(i => i !== nullAddress), poolAddresses[i]]) + return sumTokens2({ api, ownerTokens, blacklistedTokens: poolAddresses }) } module.exports = { diff --git a/projects/kagla/staking.js b/projects/kagla/staking.js deleted file mode 100644 index d28b721476..0000000000 --- a/projects/kagla/staking.js +++ /dev/null @@ -1,22 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { toBigNumberJsOrZero } = require("./utils.js"); - -const { VOTING_ESCROW_ADDRESS, KGL_ADDRESS, transformTokenAddress } = require("./addresses"); - -const getStaked = async (chain, block) => { - const lockedKGLBalance = (await sdk.api.abi.call({ - target: KGL_ADDRESS, - abi: 'erc20:balanceOf', - params: [VOTING_ESCROW_ADDRESS], - block, - chain, - })).output - - return { - [transformTokenAddress(KGL_ADDRESS)]: toBigNumberJsOrZero(lockedKGLBalance).shiftedBy(-18).toFixed(0) - } -} - -module.exports = { - getStaked -} diff --git a/projects/kagla/utils.js b/projects/kagla/utils.js deleted file mode 100644 index 696def55e5..0000000000 --- a/projects/kagla/utils.js +++ /dev/null @@ -1,11 +0,0 @@ -const BigNumberJs = require("bignumber.js"); -BigNumberJs.config({ EXPONENTIAL_AT: 1e9 }) - -const toBigNumberJsOrZero = (value) => { - const bn = new BigNumberJs(value) - return bn.isNaN() ? new BigNumberJs('0') : bn -} - -module.exports = { - toBigNumberJsOrZero -} From ce0b7979ff7c19dae1aa5ae104d5082c372b95ac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 May 2023 18:40:16 +0200 Subject: [PATCH 0495/1354] lint fix --- projects/helper/utils.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/helper/utils.js b/projects/helper/utils.js index c8318b3655..40dc19ab9c 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -252,9 +252,6 @@ async function debugBalances({ balances = {}, chain, log = false, tableLabel = ' const ethApi = new sdk.ChainApi() symbolsETH = await ethApi.multiCall({ abi: 'erc20:symbol', calls: ethTokens, permitFailure: true, }) nameETH = await ethApi.multiCall({ abi: erc20.name, calls: ethTokens, permitFailure: true, }) - - symbolsETH = symbolsETH - nameETH = nameETH } let symbolMapping = symbols.reduce((a, i, y) => ({ ...a, [tokens[y]]: i }), {}) From e2c4c8d1e32a950e2572136e0fc92602661cfe8b Mon Sep 17 00:00:00 2001 From: Jon Greenwood <81202085+0xJonHoldsCrypto@users.noreply.github.com> Date: Mon, 22 May 2023 13:21:15 -0500 Subject: [PATCH 0496/1354] Update index.js (#6345) Co-authored-by: Jon Greenwood --- projects/vesper/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/vesper/index.js b/projects/vesper/index.js index 54df5fbbfd..dae3a61ab0 100644 --- a/projects/vesper/index.js +++ b/projects/vesper/index.js @@ -15,6 +15,9 @@ const chainConfig = { polygon: { api: ['https://api-polygon.vesper.finance/pools?stages=prod'], }, + optimism: { + api: ['https://api-optimism.vesper.finance/pools'] + }, } function getChainExports(chain) { @@ -70,5 +73,5 @@ function getChainExports(chain) { module.exports = { start: 1608667205, // December 22 2020 at 8:00 PM UTC - ...['ethereum', 'avax', 'polygon'].reduce((acc, chain) => ({ ...acc, ...getChainExports(chain) }), {}) + ...['ethereum', 'avax', 'polygon','optimism'].reduce((acc, chain) => ({ ...acc, ...getChainExports(chain) }), {}) }; From 9c0f4dee2685e613f62b9d6da7c8f517204e0f03 Mon Sep 17 00:00:00 2001 From: stupid-boar <6961601+stupid-boar@users.noreply.github.com> Date: Mon, 22 May 2023 22:08:38 +0300 Subject: [PATCH 0497/1354] fix swop.fi TVL (#6190) --- projects/swop/index.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/projects/swop/index.js b/projects/swop/index.js index a036c598e5..e97e99921c 100644 --- a/projects/swop/index.js +++ b/projects/swop/index.js @@ -1,5 +1,17 @@ -const { wavesExport } = require('../helper/chain/wavesAdapter') +const { get } = require("../helper/http"); +const { toUSDTBalances } = require("../helper/balances"); -const endpoint = "/swop" +const swopfiBackendEndpoint = "https://backend.swop.fi"; -module.exports = wavesExport("/swop", item => item.totalLocked / 1e6) \ No newline at end of file +const getSwopFiTVL = async () => { + const poolsStats = await get(`${swopfiBackendEndpoint}/pools`); + return toUSDTBalances(poolsStats.overall.liquidity); +} + +module.exports = { + timetravel: false, // Waves blockchain, + methodology: "Counts the tokens locked on AMM pools", + waves: { + tvl: getSwopFiTVL, + } +}; From 3cebcc6f9021c983d4803e39c431088a8abd9236 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 22 May 2023 22:05:34 +0100 Subject: [PATCH 0498/1354] add staked tron to getBalance --- projects/helper/unwrapLPs.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 2ff925474f..e3ee50c1d4 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -3,7 +3,7 @@ const sdk = require("@defillama/sdk"); const BigNumber = require("bignumber.js"); const token0 = 'address:token0' const symbol = 'string:symbol' -const { getPoolTokens, getPoolId, bPool, getCurrentTokens, getVault: getBalancerVault, } = require('./abis/balancer.json') +const { getPoolTokens, getPoolId, bPool, getCurrentTokens, } = require('./abis/balancer.json') const { requery } = require('./requery') const { getChainTransform, getFixBalances } = require('./portedTokens') const { getUniqueAddresses, normalizeAddress } = require('./tokenMapping') @@ -11,7 +11,7 @@ const creamAbi = require('./abis/cream.json') const { isLP, log, } = require('./utils') const { sumArtBlocks, whitelistedNFTs, } = require('./nft') const wildCreditABI = require('../wildcredit/abi.json'); -const { covalentGetTokens } = require("./http"); +const { covalentGetTokens, get } = require("./http"); const lpReservesAbi = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' const lpSuppliesAbi = "uint256:totalSupply" @@ -368,6 +368,11 @@ async function sumBalancerLps(balances, tokensAndOwners, block, chain, transform }) } +async function getTrxBalance(account) { + const data = await get('https://apilist.tronscan.org/api/account?address=' + account) + return data.balance + (data.totalFrozen || 0) +} + const nullAddress = ADDRESSES.null const gasTokens = [nullAddress, '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'] /* @@ -392,8 +397,13 @@ async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereu ethBalanceInputs = getUniqueAddresses(ethBalanceInputs, chain) if (ethBalanceInputs.length) { - const { output: ethBalances } = await sdk.api.eth.getBalances({ targets: ethBalanceInputs, chain, block }) - ethBalances.forEach(({ balance }) => sdk.util.sumSingleBalance(balances, transformAddress(nullAddress), balance)) + if(chain === "tron"){ + const ethBalances = await Promise.all(ethBalanceInputs.map(getTrxBalance)) + ethBalances.forEach(balance => sdk.util.sumSingleBalance(balances, transformAddress(nullAddress), balance)) + } else { + const { output: ethBalances } = await sdk.api.eth.getBalances({ targets: ethBalanceInputs, chain, block }) + ethBalances.forEach(({ balance }) => sdk.util.sumSingleBalance(balances, transformAddress(nullAddress), balance)) + } } const balanceOfTokens = await sdk.api.abi.multiCall({ From 8cdbe5072268680b33ccd370044c678fcca46ba3 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Tue, 23 May 2023 04:22:42 +0100 Subject: [PATCH 0499/1354] add hallmark --- projects/shipyard-finance/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/shipyard-finance/index.js b/projects/shipyard-finance/index.js index 10544aa3d8..3cdb65f545 100644 --- a/projects/shipyard-finance/index.js +++ b/projects/shipyard-finance/index.js @@ -81,5 +81,8 @@ module.exports = { }, ethereum: { tvl: chainTvl('ethereum', ETHEREUM), - } + }, + hallmarks: [ + [1677200400, "Vaults deprecated"] + ] }; From 88a403b65175bab584c873276f940d1fc42c07a5 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Tue, 23 May 2023 05:10:07 +0100 Subject: [PATCH 0500/1354] Update index.js --- projects/level/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/level/index.js b/projects/level/index.js index a48cdad95b..9b65f1ba0e 100644 --- a/projects/level/index.js +++ b/projects/level/index.js @@ -26,6 +26,6 @@ module.exports = { pool2: pool2(Contracts.Chef, Contracts.LVL_BNB_LP) }, hallmarks: [ - [Math.floor(new Date('2023-05-01')/1e3), 'Protocol was hacked'], + [Math.floor(new Date('2023-05-01')/1e3), 'Referral contract hacked'], ], }; From 99248865f7d806f27c81122737ae4dd9dd549deb Mon Sep 17 00:00:00 2001 From: Drew <89287674+dewpe@users.noreply.github.com> Date: Tue, 23 May 2023 02:47:53 -0500 Subject: [PATCH 0501/1354] RH: Add Arbitrum VaultManager (#6349) * added arbitrum vaultManager addr * removed auto prettier changes --- projects/risk-harbor/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js index 1d09071f3d..31044b78ca 100644 --- a/projects/risk-harbor/index.js +++ b/projects/risk-harbor/index.js @@ -39,6 +39,7 @@ const networks = { ], }, arbitrum: { + vaultManager: "0x713C8810F79B4F101f66bB5b5a1326473ae5c7f7", vaults: [ [ ADDRESSES.arbitrum.USDC, From 1a1f1bc9e1fe35b8efc6391c206fbe2585aca6f4 Mon Sep 17 00:00:00 2001 From: Yahook Date: Tue, 23 May 2023 10:07:39 +0200 Subject: [PATCH 0502/1354] Add Avely-Finance staking and swap (#6348) * Add Avely-Finance staking and swap * remove token supply from tvl --------- Co-authored-by: Max Hiker Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/avely-finance-staking/index.js | 59 +++++++++++++++++++++++++ projects/avely-finance-swap/index.js | 53 ++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 projects/avely-finance-staking/index.js create mode 100644 projects/avely-finance-swap/index.js diff --git a/projects/avely-finance-staking/index.js b/projects/avely-finance-staking/index.js new file mode 100644 index 0000000000..2c90a7a32c --- /dev/null +++ b/projects/avely-finance-staking/index.js @@ -0,0 +1,59 @@ +const { + formQuery, + call +} = require('../helper/chain/zilliqa') + +const STZIL_CONTRACT_ADDRESS = 'zil1umc54ly88xjw4599gtq860le0qvsuwuj72s246' +const DECIMALS = 12 + +const tvlFields = { + + //'total_supply' contract field: it's total amount of minted stzil + //https://github.com/avely-finance/avely-contracts/blob/main/contracts/source/stzil.scilla#L355 + // [STZIL_CONTRACT_ADDRESS]: 'total_supply', + + //get 'totalstakeamount' contract field: it's total amount of zil, staked in Zilliqa native staking contract through StZIL contract + //https://github.com/avely-finance/avely-contracts/blob/main/contracts/source/stzil.scilla#L353 + 'zilliqa': 'totalstakeamount', +} + +async function tvl() { + const { api } = arguments[3] + const query = prepareQuery(tvlFields) + + const data = await call(query) + + data.forEach((response) => { + const { id, result } = response + if (!id || !result || !tvlFields[id] || !result[tvlFields[id]]) return + api.add(id, result[tvlFields[id]] / (10 ** DECIMALS), { skipChain: true}) + }) +} + +//prepare batch GetSmartContractSubState query +//https://dev.zilliqa.com/api/contract-related-methods/api-contract-get-smartcontract-substate/ +function prepareQuery(fields) { + const query = Object.entries(fields).map(([id, field]) => { + return formQuery({ + id: id, + params: [ + STZIL_CONTRACT_ADDRESS, + field, + [] + ] + }); + }); + + //console.log(query) + return query; +} + + +module.exports = { + zilliqa: { + tvl + }, + methodology: 'TVL represents the sum of stakes denominated in ZIL and staked in the native Zilliqa staking contract via the STZIL contract', + timetravel: false, +} + diff --git a/projects/avely-finance-swap/index.js b/projects/avely-finance-swap/index.js new file mode 100644 index 0000000000..8fa0240a51 --- /dev/null +++ b/projects/avely-finance-swap/index.js @@ -0,0 +1,53 @@ +const BigNumber = require('bignumber.js') +const { + formQuery, + call +} = require('../helper/chain/zilliqa') + + +const ASWAP_CONTRACT_ADDRESS = 'zil1uxfzk4n9ef2t3f4c4939ludlvp349uwqdx32xt' +const STZIL_CONTRACT_ADDRESS = 'zil1umc54ly88xjw4599gtq860le0qvsuwuj72s246' +//seems Zilliqa API take address in legacy format as map key +const STZIL_CONTRACT_ADDRESS_LEGACY = '0xe6f14afc8739a4ead0a542c07d3ff978190e3b92' +const DECIMALS = 12 + +async function tvl() { + + //https://dev.zilliqa.com/api/contract-related-methods/api-contract-get-smartcontract-substate/ + const query = formQuery({ + id: "1", + params: [ + ASWAP_CONTRACT_ADDRESS, + 'pools', + [STZIL_CONTRACT_ADDRESS_LEGACY] + ] + }); + //console.log(query) + + const data = await call(query) + //console.log(data) + + //(* POOL token -> Pair{zil_reserve, token_reserve} *) + //https://github.com/avely-finance/avely-contracts/blob/main/contracts/source/aswap.scilla#L301 + const zil_reserve = data?.result?.pools[STZIL_CONTRACT_ADDRESS_LEGACY]?.arguments[0] + const token_reserve = data?.result?.pools[STZIL_CONTRACT_ADDRESS_LEGACY]?.arguments[1] + if (zil_reserve == undefined || token_reserve == undefined) { + return + } + + const balances = { + [STZIL_CONTRACT_ADDRESS]: BigNumber(token_reserve).shiftedBy(DECIMALS * -1), + 'zilliqa': BigNumber(zil_reserve).shiftedBy(DECIMALS * -1), + } + //console.log(balances) + + return balances +} + +module.exports = { + zilliqa: { + tvl, + }, + methodology: 'TVL represents the state of the Aswap pool, which consists of a single liquidity pair: Zilliqa native token vs StZIL token.', + timetravel: false, +} From 3ceb9fcc5c7c9b416ef238ac749a4be747e5fdbe Mon Sep 17 00:00:00 2001 From: umarsa Date: Tue, 23 May 2023 11:13:18 +0100 Subject: [PATCH 0503/1354] feat: added hallmark (#6351) --- projects/flashstake/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/flashstake/index.js b/projects/flashstake/index.js index 34102aec68..3e2cc6bb58 100644 --- a/projects/flashstake/index.js +++ b/projects/flashstake/index.js @@ -24,7 +24,8 @@ module.exports = { [1666641600, "Optimism Launch"], [1674604800, "Flash Capacitor Launch"], [1676484000, "Flido Launch"], - [1680022800, "Arbitrum Launch"] + [1680022800, "Arbitrum Launch"], + [1684443600, "Rocket Pool Launch"] ] }; From 524ced72e973611dce0baf53910ba30aa118f10d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 May 2023 14:03:43 +0200 Subject: [PATCH 0504/1354] cells: add arbitrum --- projects/cells/index.js | 33 +++++++++++++++++++++------------ projects/node-dao/index.js | 5 ++--- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/projects/cells/index.js b/projects/cells/index.js index 35ff1f739b..b473ce2d1d 100644 --- a/projects/cells/index.js +++ b/projects/cells/index.js @@ -1,14 +1,23 @@ const { yieldHelper, } = require("../helper/yieldHelper") +const { mergeExports } = require('../helper/utils') -const contract = '0xAcb845A2a46F6De8cbAe8eA234b632a99ef93D31' -const cells = '0x3022d80e02075F5A2a442A318229487f9Ea66D82' - -module.exports = yieldHelper({ - project: 'cells-finance', - chain: 'bsc', - masterchef: contract, - nativeToken: cells, - abis: { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat, address )', - } -}) \ No newline at end of file +module.exports = mergeExports([ + yieldHelper({ + project: 'cells-finance', + chain: 'bsc', + masterchef: '0xAcb845A2a46F6De8cbAe8eA234b632a99ef93D31', + nativeToken: '0x3022d80e02075F5A2a442A318229487f9Ea66D82', + abis: { + poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat, address )', + } + }), + yieldHelper({ + project: 'cells-finance', + chain: 'arbitrum', + masterchef: '0xAcb845A2a46F6De8cbAe8eA234b632a99ef93D31', + nativeToken: '0x3022d80e02075f5a2a442a318229487f9ea66d82', + abis: { + poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat, address )', + } + }), +]) \ No newline at end of file diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js index 4ceff0042a..f898ec432a 100644 --- a/projects/node-dao/index.js +++ b/projects/node-dao/index.js @@ -4,9 +4,8 @@ module.exports = { ethereum: { tvl: async (_, _1, _2, { api }) => { const owner = '0x8103151E2377e78C04a3d2564e20542680ed3096' - const nfts = await api.call({ target: '0x58553f5c5a6aee89eabfd42c231a18ab0872700d', abi: 'erc20:balanceOf', params: owner }) - api.add(nullAddress, nfts * 32 * 1e18) - return sumTokens2({ api, owner, tokens: [nullAddress]}) + const totalEth = await api.call({ abi: 'uint256:getTotalEthValue', target: owner }) + api.add(nullAddress,totalEth) } }, filecoin: { From bd3f2db970d487a828d1ac0a3fd542d70730a515 Mon Sep 17 00:00:00 2001 From: happywomwom-wombat <129473631+happywomwom-wombat@users.noreply.github.com> Date: Tue, 23 May 2023 20:05:36 +0800 Subject: [PATCH 0505/1354] add arb ankETH address (#6352) --- projects/wombat-exchange/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 6568e30589..430e583e8d 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -40,6 +40,7 @@ module.exports = { bob: "0x917caF2b4D6040a9D67A5F8CEfC4F89d1b214c1A", mim: "0x29eeB257a2A6eCDE2984aCeDF80A1B687f18eC91", jUSDC: "0xc7a6bA5F28993BaDb566007bD2E0CB253c431974", + ankrETH: "0xB9bdfE449Da096256Fe7954Ef61A18eE195Db77B", }, }, hallmarks: [ From d4792aad3daa45af09389fe5cfb96ee8c0cafa10 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Tue, 23 May 2023 15:07:49 +0300 Subject: [PATCH 0506/1354] feat: symbiosis adds arbitrum nova (#6353) * feat: symbiosis adds arbitrum nova * fix: return optimism --- projects/symbiosis-finance/config.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 9401ffcd6e..cf4c1e089f 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -136,5 +136,14 @@ module.exports = { '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, + { + name: 'arbitrum_nova', + tokens: [ + ADDRESSES.arbitrum_nova.USDC, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From 845bdd265c271019d58300842c080267803043db Mon Sep 17 00:00:00 2001 From: stupid-boar <6961601+stupid-boar@users.noreply.github.com> Date: Tue, 23 May 2023 15:30:37 +0300 Subject: [PATCH 0507/1354] Add USDT/USDC/BTCB for BSC TVL (#6354) * fix swop.fi TVL * add USDT/USDC/BTCB for BSC TVL --- projects/pepe-bridge/index.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index 4a944260f3..ac3183fc9c 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -3,18 +3,26 @@ const { nullAddress, sumTokensExport, } = require('../helper/unwrapLPs'); const config = { ethereum: [ - [[nullAddress], '0x882260324AD5A87bF5007904B4A8EF87023c856A'], // ETH + [[nullAddress], '0x882260324AD5A87bF5007904B4A8EF87023c856A'], [ [ - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WBTC, ], '0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83' ] ], bsc: [ - [[nullAddress], '0xF1632012f6679Fcf464721433AFAAe9c11ad9e03'] // BNB + [[nullAddress], '0xF1632012f6679Fcf464721433AFAAe9c11ad9e03'], + [ + [ + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.BTCB, + ], + '0x8DF12786EC0E34e60D4c52f9052ba4e536e9367a' + ] ] } module.exports = {}; From be08808b7316fbdd6856cb9b2422e1278e5800fd Mon Sep 17 00:00:00 2001 From: zkSwap Date: Tue, 23 May 2023 18:09:54 +0530 Subject: [PATCH 0508/1354] add zkswap on era (#6355) * add zkswap on era * minor fix --------- Co-authored-by: zk-swap Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zk-swap/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/zk-swap/index.js diff --git a/projects/zk-swap/index.js b/projects/zk-swap/index.js new file mode 100644 index 0000000000..a74f607f6c --- /dev/null +++ b/projects/zk-swap/index.js @@ -0,0 +1,15 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const { stakings } = require("../helper/staking"); + +const factory = "0x5da48a338647e2DD79329b557b5729D8496aD83D"; +const masterchef = "0x7bA76d4e4cBD4A9B7E3fd9a3B7Db067a51ca9682"; +const zks = "0xAbdb137D013b8B328FA43Fc04a6fA340D1CeA733"; + +module.exports = { + misrepresentedTokens: true, + era: { + tvl: getUniTVL({ factory, useDefaultCoreAssets: true, fetchBalances: true, }), + staking: stakings([masterchef], zks), + }, +}; + From 981d0c9d2582fb0a82fa21634c0057b038ff9840 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Tue, 23 May 2023 16:03:13 +0100 Subject: [PATCH 0509/1354] Update index.js --- projects/level/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/level/index.js b/projects/level/index.js index 9b65f1ba0e..3a30465d4e 100644 --- a/projects/level/index.js +++ b/projects/level/index.js @@ -26,6 +26,6 @@ module.exports = { pool2: pool2(Contracts.Chef, Contracts.LVL_BNB_LP) }, hallmarks: [ - [Math.floor(new Date('2023-05-01')/1e3), 'Referral contract hacked'], + [Math.floor(new Date('2023-05-01')/1e3), 'Referral contract exploited'], ], }; From cb9da1d7aa39bf43d56ebee66144cb5071d4e7b5 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 23 May 2023 18:06:28 +0100 Subject: [PATCH 0510/1354] add vyfi staking --- projects/vyfi-dex/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/vyfi-dex/index.js b/projects/vyfi-dex/index.js index a7b16259ec..b2b638d69e 100644 --- a/projects/vyfi-dex/index.js +++ b/projects/vyfi-dex/index.js @@ -8,10 +8,17 @@ async function getLPData() { return {cardano:tvl.data.lp.totalLpTvl}; } +async function vyfiStaking() { + const tvl = await fetchURL("https://api.vyfi.io/analytics?filter=bar"); + + return {cardano:tvl.data.bar.tvl}; +} + module.exports = { misrepresentedTokens: true, timetravel: false, cardano: { tvl:getLPData, + staking: vyfiStaking }, }; \ No newline at end of file From c3d2ef771109114afd18f17b7877f3d78038edad Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 May 2023 20:10:33 +0200 Subject: [PATCH 0511/1354] count only ZIL part of avely dex --- projects/avely-finance-swap/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/avely-finance-swap/index.js b/projects/avely-finance-swap/index.js index 8fa0240a51..22c8ce7e8d 100644 --- a/projects/avely-finance-swap/index.js +++ b/projects/avely-finance-swap/index.js @@ -36,8 +36,8 @@ async function tvl() { } const balances = { - [STZIL_CONTRACT_ADDRESS]: BigNumber(token_reserve).shiftedBy(DECIMALS * -1), - 'zilliqa': BigNumber(zil_reserve).shiftedBy(DECIMALS * -1), + // [STZIL_CONTRACT_ADDRESS]: BigNumber(token_reserve).shiftedBy(DECIMALS * -1), + 'zilliqa': zil_reserve / 1e12, } //console.log(balances) @@ -50,4 +50,5 @@ module.exports = { }, methodology: 'TVL represents the state of the Aswap pool, which consists of a single liquidity pair: Zilliqa native token vs StZIL token.', timetravel: false, + misrepresentedTokens: true, } From 0eaf061cee3be058c5e0865926abbba1c2ea3254 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 May 2023 00:15:09 +0530 Subject: [PATCH 0512/1354] Morpho-av3 (#6361) * feat: implement morpho aaveV3 * minor refactor --------- Co-authored-by: julien --- projects/helper/abis/morpho.json | 7 ++++ projects/helper/coreAssets.json | 2 + projects/morpho-aaveV3/addresses.js | 3 ++ projects/morpho-aaveV3/index.js | 59 +++++++++++++++++++++++++++++ projects/morpho-aaveV3/markets.js | 17 +++++++++ 5 files changed, 88 insertions(+) create mode 100644 projects/morpho-aaveV3/addresses.js create mode 100644 projects/morpho-aaveV3/index.js create mode 100644 projects/morpho-aaveV3/markets.js diff --git a/projects/helper/abis/morpho.json b/projects/helper/abis/morpho.json index 64a079b0c4..7c74c4bf06 100644 --- a/projects/helper/abis/morpho.json +++ b/projects/helper/abis/morpho.json @@ -6,5 +6,12 @@ "getAllMarkets": "address[]:getAllMarkets", "getTotalMarketSupply": "function getTotalMarketSupply(address _poolTokenAddress) view returns (uint256 p2pSupplyAmount, uint256 poolSupplyAmount)", "getTotalMarketBorrow": "function getTotalMarketBorrow(address _poolTokenAddress) view returns (uint256 p2pBorrowAmount, uint256 poolBorrowAmount)" + }, + "morphoAaveV3": { + "marketsCreated": "address[]:marketsCreated", + "market": "function market(address underlying) returns (tuple( tuple(uint128 poolIndex, uint128 p2pIndex) supply, tuple(uint128 poolIndex, uint128 p2pIndex) borrow) indexes, tuple( tuple(uint256 scaledDelta, uint256 scaledP2PTotal) supply, tuple(uint256 scaledDelta, uint256 scaledP2PTotal) borrow) deltas, address underlying, tuple( bool isP2PDisabled, bool isSupplyPaused, bool isSupplyCollateralPaused, bool isBorrowPaused, bool isWithdrawPaused, bool isWithdrawCollateralPaused, bool isRepayPaused, bool isLiquidateCollateralPaused, bool isLiquidateBorrowPaused, bool isDeprecated) pauseStatues, bool isCollateral, address variableDebtToken, uint32 lastUpdateTimestamp, uint16 reserveFactor, uint16 p2pIndexCursor, address aToken, address stableDebtToken, uint256 idleSupply)" + }, + "pool": { + } } \ No newline at end of file diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index d63c926082..b261372312 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1280,6 +1280,8 @@ "pulse": { "WPLS": "0xa1077a294dde1b09bb078844df40758a5d0f9a27", "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", + "USDC": "0x15D38573d2feeb82e7ad5187aB8c1D52810B1f07", + "USDT": "0x0Cb6F5a34ad42ec934882A05265A7d5F59b51A2f", "DAI": "0xefd766ccb38eaf1dfd701853bfce31359239f305" } } diff --git a/projects/morpho-aaveV3/addresses.js b/projects/morpho-aaveV3/addresses.js new file mode 100644 index 0000000000..7fc42bd52a --- /dev/null +++ b/projects/morpho-aaveV3/addresses.js @@ -0,0 +1,3 @@ +module.exports = { + morphoAaveV3: "0x33333aea097c193e66081e930c33020272b33333" +} \ No newline at end of file diff --git a/projects/morpho-aaveV3/index.js b/projects/morpho-aaveV3/index.js new file mode 100644 index 0000000000..2fda90b77b --- /dev/null +++ b/projects/morpho-aaveV3/index.js @@ -0,0 +1,59 @@ +const abi = require("../helper/abis/morpho.json"); +const erc20 = require("../helper/abis/erc20.json"); +const {morphoAaveV3} = require("./addresses"); +const BigNumber = require("bignumber.js"); +const fetchMarketsData = require("./markets"); + +const getMetrics = async (api, borrowed) => { + const markets = await api.call({ target: morphoAaveV3, abi: abi.morphoAaveV3.marketsCreated, }); + const marketsData = await fetchMarketsData(markets, api); + const balancesTotalBorrowOnPool = await api.multiCall({ + calls: marketsData.map(({debtToken}) => ({ + target: debtToken, + params: [morphoAaveV3] + })), + abi: erc20.balanceOf + }); + const totalBorrows = marketsData.map(({scaledP2PBorrow, p2pBorrowIndex}, i) => { + const totalBorrowOnPool = balancesTotalBorrowOnPool[i]; + const totalBorrowP2P = BigNumber(scaledP2PBorrow).times(p2pBorrowIndex).div(10**27).toFixed(0); + return BigNumber(totalBorrowOnPool).plus(totalBorrowP2P).toFixed(0); + }); + if (borrowed) { + marketsData.forEach(({underlying}, idx) => { + api.add(underlying, totalBorrows[idx]) + }); + return; + } + + const balancesTotalSupplyOnPool = await api.multiCall({ + calls: marketsData.map(({aToken}) => ({ + target: aToken, + params: [morphoAaveV3] + })), + abi: erc20.balanceOf + }); + marketsData.forEach(({underlying, scaledP2PSupply, p2pSupplyIndex}, idx) => { + const totalBorrow = totalBorrows[idx]; + const totalSupplyOnPool = balancesTotalSupplyOnPool[idx]; + const totalSupplyP2P = BigNumber(scaledP2PSupply).times(p2pSupplyIndex).div(10**27).toFixed(0); + const totalSupply = BigNumber(totalSupplyOnPool).plus(totalSupplyP2P); + const tvl = totalSupply.minus(totalBorrow).toFixed(0); // Through morpho, for a given market, this value can be negative. + api.add(underlying, tvl) + }); +}; + +const ethereum = (borrowed) => { + return async (timestamp, block, _, { api }) => { + return getMetrics(api, borrowed); + }; +}; + +module.exports = { + methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, + ethereum: { + tvl: ethereum(false), + borrowed: ethereum(true) + } +}; +// node test.js projects/morpho-aave/index.js \ No newline at end of file diff --git a/projects/morpho-aaveV3/markets.js b/projects/morpho-aaveV3/markets.js new file mode 100644 index 0000000000..d617f20dcd --- /dev/null +++ b/projects/morpho-aaveV3/markets.js @@ -0,0 +1,17 @@ +const abi = require("../helper/abis/morpho.json"); +const { morphoAaveV3 } = require("./addresses") +module.exports = async (underlyings, api) => (await api.multiCall({ + calls: underlyings, + target: morphoAaveV3, + abi: abi.morphoAaveV3.market +})).map((output, i) => { + return { + aToken: output.aToken, + underlying: underlyings[i], + debtToken: output.variableDebtToken, + scaledP2PSupply: output.deltas.supply.scaledP2PTotal, + scaledP2PBorrow: output.deltas.borrow.scaledP2PTotal, + p2pSupplyIndex: output.indexes.supply.p2pIndex, + p2pBorrowIndex: output.indexes.borrow.p2pIndex, + } +}) \ No newline at end of file From a45cece3470123ee2dd723bab26a962a38b89f06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Cerqueira?= Date: Tue, 23 May 2023 19:46:54 +0100 Subject: [PATCH 0513/1354] feat: add interest-protocol sui tvl (#6359) --- projects/interest-protocol/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/interest-protocol/index.js diff --git a/projects/interest-protocol/index.js b/projects/interest-protocol/index.js new file mode 100644 index 0000000000..084c407d8b --- /dev/null +++ b/projects/interest-protocol/index.js @@ -0,0 +1,16 @@ +const { dexExport } = require('../helper/chain/sui'); + +const getTokens = (pool) => { + const type = pool.type.split('Pool'); + const poolArgs = type[1]; + const tokens = poolArgs.split(','); + return [tokens[1].trim(), tokens[2].split('>')[0].trim()]; +}; + +module.exports = dexExport({ + account: '0x108779144605a44e4b5447118b711f0b17adf6168cc9b08551d33daca58098e3', + poolStr: 'core::Pool', + token0Reserve: i => i.fields.balance_x, + token1Reserve: i => i.fields.balance_y, + getTokens +}); \ No newline at end of file From 6137f5afc839ee1ab51f832bfbd1519c9c81b359 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 May 2023 00:22:14 +0530 Subject: [PATCH 0514/1354] Sui-mole (#6347) * add Mole tvl on Sui chain * mole: update sui chain adapter --------- Co-authored-by: molefund --- projects/mole/index.js | 29 +++++---- projects/mole/lyf.js | 138 ++++++++++++++++++++++++++++++++++------- projects/mole/utils.js | 12 ++++ 3 files changed, 145 insertions(+), 34 deletions(-) create mode 100644 projects/mole/utils.js diff --git a/projects/mole/index.js b/projects/mole/index.js index 09d1611ee2..45b82448d7 100644 --- a/projects/mole/index.js +++ b/projects/mole/index.js @@ -1,23 +1,27 @@ -const { calLyfTvlAptos } = require("./lyf"); -const { calLyfTvl } = require("./lyf"); +const { calLyfTvl, calLyfTvlAptos, calLyfTvlSui } = require("./lyf"); const { calxMOLEtvl } = require('./xmole'); +// async function avaxTvl(timestamp, ethBlock, chainBlocks) { +// const lyfTvl = await calLyfTvl('avax', chainBlocks.avax); +// return {...lyfTvl}; +// } -async function avaxTvl(timestamp, ethBlock, chainBlocks) { - const lyfTvl = await calLyfTvl('avax', chainBlocks.avax); - return {...lyfTvl}; -} - -async function avaxStaking(timestamp, ethBlock, chainBlocks) { - return await calxMOLEtvl('avax', chainBlocks.avax); -} +// async function avaxStaking(timestamp, ethBlock, chainBlocks) { +// return await calxMOLEtvl('avax', chainBlocks.avax); +// } async function aptosTvl() { const lyfTvl = await calLyfTvlAptos() return {...lyfTvl}; } -// node test.js projects/mole/index.js +async function suiTvl() { + const { api } = arguments[3] + + return calLyfTvlSui(api) +} + +// run command: node test.js projects/mole/index.js module.exports = { timetravel: false, start: 1653840000, @@ -27,5 +31,8 @@ module.exports = { // }, aptos: { tvl: aptosTvl + }, + sui: { + tvl: suiTvl } }; diff --git a/projects/mole/lyf.js b/projects/mole/lyf.js index 4e51272873..966b803e48 100644 --- a/projects/mole/lyf.js +++ b/projects/mole/lyf.js @@ -5,28 +5,39 @@ const { coreTokens } = require("../helper/chain/aptos"); const { getResources } = require("../helper/chain/aptos"); const { getConfig } = require('../helper/cache') const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); +const sui = require('../helper/chain/sui') const { transformBalances } = require("../helper/portedTokens"); +const { i32BitsToNumber } = require("./utils") async function getProcolAddresses(chain) { - if (chain === 'avax') { + // if (chain === 'avax') { + // return ( + // await getConfig('mole/'+chain, + // "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.avalanche_mainnet.json" + // ) + // ); + // } + + if (chain === 'aptos') { return ( - await getConfig('mole/'+chain, - "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.avalanche_mainnet.json" + await getConfig('mole/' + chain, + "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.aptos_mainnet.json" ) ); - }else if(chain === 'aptos') { + } else if (chain === 'sui') { return ( - await getConfig('mole/'+chain, - "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.aptos_mainnet.json" + await getConfig('mole/' + chain, + "https://raw.githubusercontent.com/Mole-Fi/mole-protocol/main/.sui_mainnet.json" ) ); } } +// avax async function calLyfTvl(chain, block) { /// @dev Initialized variables const balances = {}; - const transform = addr => 'avax:'+addr + const transform = addr => 'avax:' + addr /// @dev Getting all addresses from Github const addresses = await getProcolAddresses(chain); @@ -93,6 +104,7 @@ async function calLyfTvl(chain, block) { return balances; } +// aptos async function calLyfTvlAptos() { /// @dev Initialized variables const balances = {}; @@ -113,18 +125,18 @@ async function calLyfTvlAptos() { /// @dev unwrap LP to get underlaying token balances for workers that are working with LPs await unwrapPancakeSwapLps({ - balances, - lps, - account: '0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa', - poolStr: 'swap::TokenPairReserve', - token0Reserve: i => i.data.reserve_x, - token1Reserve: i => i.data.reserve_y + balances, + lps, + account: '0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa', + poolStr: 'swap::TokenPairReserve', + token0Reserve: i => i.data.reserve_x, + token1Reserve: i => i.data.reserve_y }) /// @dev getting all unused liquidity on each vault resources.filter(i => i.type.includes("vault::VaultInfo")) .map(i => { - const token = i.type.split('<')[1].replace('>',''); + const token = i.type.split('<')[1].replace('>', ''); sdk.util.sumSingleBalance(balances, token, new BigNumber(i.data.coin.value).minus(i.data.reserve_pool).toFixed(0)) }) @@ -137,7 +149,7 @@ function sumPancakeWorkerStakingLps(resources, lps, workers) { i.type.includes("pancake_worker::WorkerInfo") || i.type.includes("delta_neutral_pancake_asset_worker::WorkerInfo") || i.type.includes("delta_neutral_pancake_stable_worker::WorkerInfo") - ) && workers[i.type.split('::',1)[0]] + ) && workers[i.type.split('::', 1)[0]] ) workerInfos.forEach(i => { @@ -146,7 +158,7 @@ function sumPancakeWorkerStakingLps(resources, lps, workers) { const lp = lpWithSuffix.substr(0, lpWithSuffix.length - 1); const amount = new BigNumber(i.data.total_balance ?? i.data.total_lp_balance) - if(lps[lp] === undefined) { + if (lps[lp] === undefined) { lps[lp] = { amount: amount } } else { lps[lp].amount = lps[lp].amount.plus(amount); @@ -162,13 +174,13 @@ async function unwrapPancakeSwapLps({ token0Reserve = i => i.data.coin_x_reserve.value, token1Reserve = i => i.data.coin_y_reserve.value, getTokens = i => i.type.split('<')[1].replace('>', '').split(', ') -}){ +}) { const coinInfos = {} const lpReserves = {} for (const lpType in lps) { - if(lps.hasOwnProperty(lpType)){ + if (lps.hasOwnProperty(lpType)) { coinInfos[`0x1::coin::CoinInfo<${lpType}>`] = lpType; - const tokens = getTokens({type: lpType}) + const tokens = getTokens({ type: lpType }) lpReserves[`${account}::${poolStr}<${tokens[0]}, ${tokens[1]}>`] = lpType; } } @@ -176,7 +188,7 @@ async function unwrapPancakeSwapLps({ let pools = await getResources(account); let lpInfos = pools; pools = pools.filter((i) => { - if(!i.type.includes(poolStr)){ + if (!i.type.includes(poolStr)) { return false } @@ -185,7 +197,7 @@ async function unwrapPancakeSwapLps({ }); lpInfos.forEach(i => { const lpType = coinInfos[i.type]; - if(lpType){ + if (lpType) { lps[lpType].totalSupply = new BigNumber(i.data.supply.vec[0].integer.vec[0].value) } }); @@ -215,8 +227,88 @@ async function unwrapPancakeSwapLps({ }) } +// sui +async function calLyfTvlSui(api) { + + // calculate the Farming TVL. + + /// @dev Getting all resources + const addresses = await getProcolAddresses('sui'); + const workerInfoIds = addresses.Vaults.flatMap(valut => valut.workers).map(worker => worker.workerInfo) + const workerInfos = await sui.getObjects(workerInfoIds) + + let poolIds = [] + workerInfos.forEach(workerInfo => { + let poolId = workerInfo.fields.position_nft.fields.pool + // poolId = poolId.replace('0x0', '0x') + if (!poolIds.includes(poolId)) { + poolIds.push(poolId) + } + } + ) + + const poolInfos = await sui.getObjects(poolIds) + let poolMap = new Map() + poolInfos.forEach(poolInfo => { + // const poolId = poolInfo.fields.id.id.replace('0x0', '0x') + poolMap.set(poolInfo.fields.id.id, poolInfo) + } + ) + + workerInfos.forEach(workerInfo => { + let poolId = workerInfo.fields.position_nft.fields.pool + + let coinAamount = 0 + let coinBamount = 0 + computeCLMMPositionBalances() + + const [coinA, coinB] = poolMap.get(poolId).type.replace('>', '').split('<')[1].split(', ') + api.add(coinA, coinAamount) + api.add(coinB, coinBamount) + + // code copied from uni v3 NFT resolver + function computeCLMMPositionBalances() { + const tickToPrice = (tick) => 1.0001 ** tick + + const liquidity = workerInfo.fields.position_nft.fields.liquidity + const tickLowerIndex = i32BitsToNumber(workerInfo.fields.position_nft.fields.tick_lower_index.fields.bits) + const tickUpperIndex = i32BitsToNumber(workerInfo.fields.position_nft.fields.tick_upper_index.fields.bits) + const bottomTick = tickLowerIndex + const topTick = tickUpperIndex + const tick = i32BitsToNumber(poolMap.get(poolId).fields.current_tick_index.fields.bits) + const sa = tickToPrice(bottomTick / 2) + const sb = tickToPrice(topTick / 2) + + if (tick < bottomTick) { + coinAamount = liquidity * (sb - sa) / (sa * sb) + } else if (tick < topTick) { + const price = tickToPrice(tick) + const sp = price ** 0.5 + + coinAamount = liquidity * (sb - sp) / (sp * sb) + coinBamount = liquidity * (sp - sa) + } else { + coinBamount = liquidity * (sb - sa) + } + } + } + ) + + // calculate the Vault TVL. + + const vaultInfoIds = addresses.Vaults.map(valut => valut.vaultInfo) + const vaultInfos = await sui.getObjects(vaultInfoIds) + + for (let i = 0; i < vaultInfos.length; i++) { + const baseToken = addresses.Vaults[i].baseToken + const tokenAmount = vaultInfos[i].fields.value.fields.coin + api.add(baseToken, tokenAmount) + } +} + + module.exports = { calLyfTvl, - calLyfTvlAptos + calLyfTvlAptos, + calLyfTvlSui, } - \ No newline at end of file diff --git a/projects/mole/utils.js b/projects/mole/utils.js new file mode 100644 index 0000000000..fc5220af10 --- /dev/null +++ b/projects/mole/utils.js @@ -0,0 +1,12 @@ + +function asIntN(int, bits = 32) { + return Number(BigInt.asIntN(bits, BigInt(int))); +} + +function i32BitsToNumber(v) { + return asIntN(BigInt(v), 32); +} + +module.exports = { + i32BitsToNumber, +} From ee6f9eadf2bb7c5a5871d44b20927931d846e085 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 May 2023 21:03:22 +0200 Subject: [PATCH 0515/1354] add componentswap.xyz --- projects/componentswap/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/componentswap/index.js diff --git a/projects/componentswap/index.js b/projects/componentswap/index.js new file mode 100644 index 0000000000..f8b1041e79 --- /dev/null +++ b/projects/componentswap/index.js @@ -0,0 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport, } = require('../helper/unwrapLPs'); + +const TOKEN_CONTRACTS = [ + ADDRESSES.pulse.DAI, + ADDRESSES.pulse.USDC, + ADDRESSES.pulse.USDT, +] + +module.exports = { + pulse: { + tvl: sumTokensExport({ owner: '0x35C49cB4fa16C557968cF43e237674b38bf05327', tokens: TOKEN_CONTRACTS}) + }, +}; \ No newline at end of file From e59d466cb4c0433c121a773dc5c5fcce0e89a580 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 May 2023 21:20:27 +0200 Subject: [PATCH 0516/1354] add femoby dao --- projects/treasury/femboy-dao.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/treasury/femboy-dao.js diff --git a/projects/treasury/femboy-dao.js b/projects/treasury/femboy-dao.js new file mode 100644 index 0000000000..274f7e0266 --- /dev/null +++ b/projects/treasury/femboy-dao.js @@ -0,0 +1,10 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ], + owners: ['0xf78A448E464a1fEB693D76c9211D2d03ae488206',], + }, +}) \ No newline at end of file From a5200073ac5a4437195fd39724740a2a3c10a619 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 23 May 2023 21:42:39 +0100 Subject: [PATCH 0517/1354] separate tvl from vyfi staking --- projects/vyfi/index.js | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/projects/vyfi/index.js b/projects/vyfi/index.js index 535b92cb48..b09183c250 100644 --- a/projects/vyfi/index.js +++ b/projects/vyfi/index.js @@ -2,18 +2,46 @@ const { toUSDTBalances } = require("../helper/balances"); const { fetchURL } = require("../helper/utils"); async function getStakingData() { - const tvl = await fetchURL("https://api.vyfi.io/analytics"); - if (tvl.data.totalValueLocked <= 0) { - throw new Error("vyfi tvl is below 0"); + const data = await fetchURL("https://api.vyfi.io/analytics"); + + let tvl = 0; + + // Include the total value locked in nftVaults and nftVaultsV2 and lpVaults + tvl += data.data.nftVaults.totalValueLocked; + tvl += data.data.nftVaultsV2.totalValueLocked; + tvl += data.data.lpVaultsV2.totalValueLocked; + + for (const vault of data.data.tokenVaults.vaults.concat(data.data.tokenVaultsV2.vaults)) { + if (vault.project !== 'vyfi') { + tvl += vault.totalVaultValue; + } + } + + return toUSDTBalances(tvl); +} + + +async function getVYFIVaultsData() { + const data = await fetchURL("https://api.vyfi.io/analytics"); + + let tvl = 0; + for (const vault of data.data.tokenVaults.vaults.concat(data.data.tokenVaultsV2.vaults)) { + if (vault.project === 'vyfi') { + tvl += vault.totalVaultValue; + } } - return toUSDTBalances(tvl.data.totalValueLocked); + + return toUSDTBalances(tvl); } + + + module.exports = { misrepresentedTokens: true, timetravel: false, cardano: { - tvl: () => ({}), - staking: getStakingData, + tvl: getStakingData, + staking: getVYFIVaultsData }, }; From 7fbd7331611fea9cf46a7a213ff8df6ddf91dc3b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 24 May 2023 06:46:59 +0100 Subject: [PATCH 0518/1354] add evmos tokens --- projects/helper/tokenMapping.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 25f22304ae..e66ef3d662 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -55,6 +55,15 @@ const fixBalancesTokens = { '0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c': { coingeckoId: ADDRESSES.ethereum.WETH, decimals: 0, }, '0xefd766ccb38eaf1dfd701853bfce31359239f305': { coingeckoId: ADDRESSES.ethereum.DAI, decimals: 0, }, }, + evmos: { + '0x2c68d1d6ab986ff4640b51e1f14c716a076e44c4': { coingeckoId: "evmos", decimals: 18 },//stEVMOS + '0x50de24b3f0b3136c50fa8a3b8ebc8bd80a269ce5': { coingeckoId: "axlweth", decimals: 18 },//axlWETH + '0xb5124fa2b2cf92b2d469b249433ba1c96bdf536d': { coingeckoId: "stride-staked-atom", decimals: 6 }, + '0xc5e00d3b04563950941f7137b5afa3a534f0d6d6': { coingeckoId: "cosmos", decimals: 6 }, + '0x8fa78ceb7f04118ec6d06aac37ca854691d8e963': { coingeckoId: "stride", decimals: 6 }, + '0xe60ce2dfa6d4ad37ade1dcb7ac4d6c3a093b3a7e': { coingeckoId: "rocket-pool-eth", decimals: 18 },//axlRETH + '0xb72a7567847aba28a2819b855d7fe679d4f59846': { coingeckoId: "tether-usd-celer", decimals: 6 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From cac13d6dc8aaabb5bbb706279b711352d32ef510 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 24 May 2023 18:28:05 +0100 Subject: [PATCH 0519/1354] remove smartbch from muesliswap add cowswap-cash --- projects/cowswap-cash/index.js | 14 ++++++++++++++ projects/muesliswap/index.js | 4 ---- 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 projects/cowswap-cash/index.js diff --git a/projects/cowswap-cash/index.js b/projects/cowswap-cash/index.js new file mode 100644 index 0000000000..ee736bc1a6 --- /dev/null +++ b/projects/cowswap-cash/index.js @@ -0,0 +1,14 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const { stakingPricedLP } = require('../helper/staking') + + +module.exports = { + misrepresentedTokens: true, + timetravel: false, + methodology: "The factory addresses are used to find the LP pairs on Smart BCH and Milkomeda. For Cardano we calculate the tokens on resting orders on the order book contracts. TVL is equal to the liquidity on the AMM plus the open orders in the order book", + smartbch: { + tvl: getUniTVL({ factory: '0x72cd8c0B5169Ff1f337E2b8F5b121f8510b52117', chain: 'smartbch', useDefaultCoreAssets: true }), + staking: stakingPricedLP("0x4856BB1a11AF5514dAA0B0DC8Ca630671eA9bf56", "0xc8E09AEdB3c949a875e1FD571dC4b3E48FB221f0", "smartbch", "0x599061437d8455df1f86d401FCC2211baaBC632D", "bitcoin-cash", false, 18) + }, + +} \ No newline at end of file diff --git a/projects/muesliswap/index.js b/projects/muesliswap/index.js index 0a69c4a057..f5fbb00e92 100644 --- a/projects/muesliswap/index.js +++ b/projects/muesliswap/index.js @@ -102,10 +102,6 @@ module.exports = { misrepresentedTokens: true, timetravel: false, methodology: "The factory addresses are used to find the LP pairs on Smart BCH and Milkomeda. For Cardano we calculate the tokens on resting orders on the order book contracts. TVL is equal to the liquidity on the AMM plus the open orders in the order book", - smartbch: { - tvl: getUniTVL({ factory: '0x72cd8c0B5169Ff1f337E2b8F5b121f8510b52117', chain: 'smartbch', useDefaultCoreAssets: true }), - staking: stakingPricedLP("0x4856BB1a11AF5514dAA0B0DC8Ca630671eA9bf56", "0xc8E09AEdB3c949a875e1FD571dC4b3E48FB221f0", "smartbch", "0x599061437d8455df1f86d401FCC2211baaBC632D", "bitcoin-cash", false, 18) - }, cardano: { tvl: adaTvl, staking From 6b19e8d23ed993d8198cd79a6342d7d1e123dd12 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 25 May 2023 01:33:24 +0100 Subject: [PATCH 0520/1354] remove usage of post /prices --- projects/shipyard-finance/index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/shipyard-finance/index.js b/projects/shipyard-finance/index.js index 3cdb65f545..f54788b5a7 100644 --- a/projects/shipyard-finance/index.js +++ b/projects/shipyard-finance/index.js @@ -1,7 +1,7 @@ const sdk = require('@defillama/sdk'); const abi = require('./abi.json'); const {usdtAddress} = require("../helper/balances"); -const { post } = require('../helper/http') +const { get } = require('../helper/http') const USDT_DECIMALS = 6; @@ -37,9 +37,7 @@ function chainTvl(chain, config) { coins.push(`${chain}:${want}`.toLowerCase()); } - const getCoins = post("https://coins.llama.fi/prices", { - "coins": coins - }) + const getCoins = get(`https://coins.llama.fi/prices/current/${coins.join(',')}`) const coinsData = (await getCoins).coins; From bad7406227f4fd03ecc105a4bd27bdee4e37ee95 Mon Sep 17 00:00:00 2001 From: mayfairfund <130176886+mayfairfund@users.noreply.github.com> Date: Thu, 25 May 2023 14:38:01 +0500 Subject: [PATCH 0521/1354] adapter for mayfair fund (#6362) --- projects/mayfair/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/mayfair/index.js diff --git a/projects/mayfair/index.js b/projects/mayfair/index.js new file mode 100644 index 0000000000..2ba744db36 --- /dev/null +++ b/projects/mayfair/index.js @@ -0,0 +1,11 @@ +const { staking } = require('../helper/staking'); + +const token = "0xF9DF075716B2D9B95616341DC6bC64c85e56645c"; +const masterchef = "0xe401c80962c521E751454Fc1C9ff34014e0b8FFB"; + +module.exports = { + arbitrum: { + tvl: () => 0, + staking: staking(masterchef, token) + } +} From 5dc60ba8b5c52e32711dd1fa34859d4e1c8fd903 Mon Sep 17 00:00:00 2001 From: MFIL <120017544+MFILDAO@users.noreply.github.com> Date: Thu, 25 May 2023 17:43:03 +0800 Subject: [PATCH 0522/1354] Add MFIL Protocol adapter (#6365) * Create index.js * Update index.js * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/MFIL/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/MFIL/index.js diff --git a/projects/MFIL/index.js b/projects/MFIL/index.js new file mode 100644 index 0000000000..6b16adf990 --- /dev/null +++ b/projects/MFIL/index.js @@ -0,0 +1,18 @@ +const MFILPOOLCONTRACT = '0x72A57760aE548B8d1B3a1b29bE25D2f09a6cB558'; +const MFILREGULARPOOLCONTRACT = '0xDcECF046dd21A7298Eb3c0a3c70d716999E7A607' +const ADDRESSES = require('../helper/coreAssets.json') + +async function mfilTvl(_, _1, _2, { api }) { + const mfilPoolStakeMfil = await api.call({ + target: MFILPOOLCONTRACT, + abi: "erc20:totalSupply", + }) + + api.add(ADDRESSES.null, mfilPoolStakeMfil) +} + +module.exports = { + filecoin: { + tvl: mfilTvl + }, +} From d8e9397feb3faf270f55227b9e822c3d7f32bdd4 Mon Sep 17 00:00:00 2001 From: Ravi Rasadiya Date: Thu, 25 May 2023 15:22:20 +0530 Subject: [PATCH 0523/1354] add 1pulse project (#6341) --- projects/1pulse/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/1pulse/index.js diff --git a/projects/1pulse/index.js b/projects/1pulse/index.js new file mode 100644 index 0000000000..11948494ac --- /dev/null +++ b/projects/1pulse/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + pulse: { + tvl: getUniTVL({ + fetchBalances: true, + useDefaultCoreAssets: true, + factory: "0x17C335D22456c798D5A3D021583eDAcbD4Ef6444", + }), + }, +}; From 7a0f3a909f5a664dc37ef4a18903a2c235472826 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 May 2023 12:26:57 +0200 Subject: [PATCH 0524/1354] add project: mcs --- projects/mcs/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/mcs/index.js diff --git a/projects/mcs/index.js b/projects/mcs/index.js new file mode 100644 index 0000000000..a4e94f19b4 --- /dev/null +++ b/projects/mcs/index.js @@ -0,0 +1,12 @@ +const { staking } = require('../helper/staking') + +const MCS_TOKEN_ADDRESS = '0xDa5aC8F284537d6eaB198801127a9d49b0CbDff5'; +const USDC_TOKEN_ADDRESS = '0xfa9343c3897324496a05fc75abed6bac29f8a40f'; +const STAKING_CONTRACT_ADDRESS = '0x258FC83E130Bc708541c33900bAEDE83242646db'; + +module.exports = { + kava: { + tvl: staking(STAKING_CONTRACT_ADDRESS, USDC_TOKEN_ADDRESS), + staking: staking(STAKING_CONTRACT_ADDRESS, MCS_TOKEN_ADDRESS), + } +} \ No newline at end of file From c514af0561c62bf1b66619972b1ec1fec73a0f4c Mon Sep 17 00:00:00 2001 From: ycg5250 <38691242+ycg5250@users.noreply.github.com> Date: Thu, 25 May 2023 18:31:19 +0800 Subject: [PATCH 0525/1354] update TokenPocket staking value (#6366) --- projects/TokenPocket/index.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/TokenPocket/index.js b/projects/TokenPocket/index.js index 40ea911aec..8e4b787573 100644 --- a/projects/TokenPocket/index.js +++ b/projects/TokenPocket/index.js @@ -11,7 +11,19 @@ async function tvl() { } ) ) - return { ethereum: tvlData.data.data.staking.total_amount} + const tvlDataOld = ( + await axios.get( + "https://preserver.mytokenpocket.vip/v1/pledge/method_any_v1", + { + headers: { + api: "/eth2/v1/global", + }, + } + ) + ) + const total = tvlData.data.data.staking.total_amount + tvlDataOld.data.data.data.staking_total + // return { ethereum: tvlData.data.data.staking.total_amount} + return { ethereum: total} } module.exports = { From 502c55911a29c7208a7987f173edf21512767bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Guimar=C3=A3es?= Date: Thu, 25 May 2023 07:32:10 -0300 Subject: [PATCH 0526/1354] feat(pods-yield): Support new Pods Yield Vault (#6368) --- projects/pods-yield/constants.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/pods-yield/constants.js b/projects/pods-yield/constants.js index fff7ad5d62..02d52087cf 100644 --- a/projects/pods-yield/constants.js +++ b/projects/pods-yield/constants.js @@ -8,7 +8,8 @@ module.exports = { vaults: [ '0xbab1e772d70300422312dff12daddcb60864bd41', '0x463F9ED5e11764Eb9029762011a03643603aD879', - '0x5FE4B38520e856921978715C8579D2D7a4d2274F' + '0x5FE4B38520e856921978715C8579D2D7a4d2274F', + '0x287f941aB4B5AaDaD2F13F9363fcEC8Ee312a969' ] }, ABI_SHORT: { From 2fb40e11da282d6c555626986b9fdc8d5f51c04d Mon Sep 17 00:00:00 2001 From: happywomwom-wombat <129473631+happywomwom-wombat@users.noreply.github.com> Date: Thu, 25 May 2023 18:34:03 +0800 Subject: [PATCH 0527/1354] add wstETH address (#6372) --- projects/wombat-exchange/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 430e583e8d..35e049480b 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -41,6 +41,7 @@ module.exports = { mim: "0x29eeB257a2A6eCDE2984aCeDF80A1B687f18eC91", jUSDC: "0xc7a6bA5F28993BaDb566007bD2E0CB253c431974", ankrETH: "0xB9bdfE449Da096256Fe7954Ef61A18eE195Db77B", + wstETH: "0xe14302040c0A1eb6fB5A4A79EfA46D60029358d9", }, }, hallmarks: [ From 2883fbe015cb1053376e904f5cfe73f25773dced Mon Sep 17 00:00:00 2001 From: zhaoxu Date: Thu, 25 May 2023 18:59:31 +0800 Subject: [PATCH 0528/1354] Add irisnet, carbon and chihuahua volume to stafi (#6371) * Add irisnet, carbon and chihuahua volume to stafi * Update code style * fix volume calculate * fix carbon * fix chaintvl * fix chaintvl * fix chaintvl * fix chaintvl --- projects/stafi/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/stafi/index.js b/projects/stafi/index.js index 8b8622cb76..3e44113aab 100644 --- a/projects/stafi/index.js +++ b/projects/stafi/index.js @@ -25,6 +25,9 @@ const chainToParams={ kusama: ["RKSM", "kusama"], solana: ["RSOL", "solana"], cosmos: ["RATOM", "cosmos"], + carbon: ["RSWTH", "switcheo"], + chihuahua: ["RHUAHUA", "chihuahua-token"], + irisnet:["RIRIS","iris-network"] } function getTvlFunction(token, cgId){ @@ -64,7 +67,7 @@ module.exports = { tvl: chainTvl('polygon') }, cosmos: { - tvl: chainTvl('cosmos') + tvl: sdk.util.sumChainTvls([chainTvl('cosmos'), chainTvl('carbon'), chainTvl('chihuahua'), chainTvl('irisnet')]) }, solana: { tvl: chainTvl('solana') From e009ec580d085936fc5dae2ca1241fb369676422 Mon Sep 17 00:00:00 2001 From: gbdotfi <132813187+GBFi@users.noreply.github.com> Date: Thu, 25 May 2023 19:00:24 +0800 Subject: [PATCH 0529/1354] Add Goldbank Finance (#6376) --- projects/goldbank/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/goldbank/index.js diff --git a/projects/goldbank/index.js b/projects/goldbank/index.js new file mode 100644 index 0000000000..f8ee752b8c --- /dev/null +++ b/projects/goldbank/index.js @@ -0,0 +1,10 @@ +const { compoundExports } = require("../helper/compound"); +const unitroller = "0x537A09Fd99Fc7eF737d297cDEeAB3b7f9602308c"; + +module.exports = { + methodology: + "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", + arbitrum: { + ...compoundExports(unitroller, "arbitrum"), + }, +}; \ No newline at end of file From d00c93e640bf7f5ce5622ba071159e7f7beb036c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 May 2023 20:13:42 +0530 Subject: [PATCH 0530/1354] Alpaca fi v2 (#6381) * include tvl from alpaca-perpetual module * move logic inside a module file * feat: alpaca lending * chore: remove unused liquidity from lyf * chore: remove unused alperp tvl * fix: exclude borrow tvl from lend * feat: add af2.0 tvl * refactor: refactor code * fix: update lend from defillama/main * refactor: af2.0 * fix: export getProcolAddresses * fix: rename folder * code refactor --------- Co-authored-by: m100alpaca <129822378+m100alpaca@users.noreply.github.com> --- projects/alpaca-finance-v2/abi.json | 4 +++ projects/alpaca-finance-v2/index.js | 10 ++++++++ projects/alpaca-finance-v2/moneyMarket.js | 30 +++++++++++++++++++++++ projects/alpaca-finance/lyf.js | 3 ++- 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 projects/alpaca-finance-v2/abi.json create mode 100644 projects/alpaca-finance-v2/index.js create mode 100644 projects/alpaca-finance-v2/moneyMarket.js diff --git a/projects/alpaca-finance-v2/abi.json b/projects/alpaca-finance-v2/abi.json new file mode 100644 index 0000000000..8650c709ef --- /dev/null +++ b/projects/alpaca-finance-v2/abi.json @@ -0,0 +1,4 @@ +{ + "getFloatingBalance": "function getFloatingBalance(address _token) external view returns (uint256 _floating)", + "getGlobalDebtValueWithPendingInterest": "function getGlobalDebtValueWithPendingInterest(address _token) external view returns (uint256)" +} \ No newline at end of file diff --git a/projects/alpaca-finance-v2/index.js b/projects/alpaca-finance-v2/index.js new file mode 100644 index 0000000000..546dabaa96 --- /dev/null +++ b/projects/alpaca-finance-v2/index.js @@ -0,0 +1,10 @@ +const { lendingTvl, borrowTvl } = require("./moneyMarket"); + +module.exports = { + start: 1602054167, + methodology: "Sum floating balance and borrow for each token", + bsc: { + tvl: lendingTvl, + borrowed: borrowTvl + }, +}; \ No newline at end of file diff --git a/projects/alpaca-finance-v2/moneyMarket.js b/projects/alpaca-finance-v2/moneyMarket.js new file mode 100644 index 0000000000..d469aacc7e --- /dev/null +++ b/projects/alpaca-finance-v2/moneyMarket.js @@ -0,0 +1,30 @@ +const sdk = require("@defillama/sdk"); +const abi = require("./abi.json"); +const { getConfig } = require("../helper/cache"); +const { sumTokens2 } = require('../helper/unwrapLPs') + +async function getMoneyMarketData() { + return (await getConfig("alpaca-finance-2.0", "https://raw.githubusercontent.com/alpaca-finance/alpaca-v2-money-market/main/.mainnet.json")).moneyMarket; +} + +async function lendingTvl(ts, _, _1, {api}) { + const { moneyMarketDiamond, markets } = await getMoneyMarketData(); + return sumTokens2({ api, owner: moneyMarketDiamond, tokens: markets.map(i => i.token)}) +} + +async function borrowTvl(ts, _, _1, {api}) { + const { moneyMarketDiamond, markets } = await getMoneyMarketData(); + const tokens = markets.map(i => i.token) + + const borrows = (await api.multiCall({ + abi: abi.getGlobalDebtValueWithPendingInterest, + target: moneyMarketDiamond, + calls: tokens + })) + api.addTokens(tokens, borrows) +} + +module.exports = { + lendingTvl, + borrowTvl +} \ No newline at end of file diff --git a/projects/alpaca-finance/lyf.js b/projects/alpaca-finance/lyf.js index c5e82dd58d..d448335c57 100644 --- a/projects/alpaca-finance/lyf.js +++ b/projects/alpaca-finance/lyf.js @@ -139,6 +139,7 @@ async function calLyfTvl(chain, block) { } module.exports = { - calLyfTvl, getProcolAddresses, + calLyfTvl, + getProcolAddresses } \ No newline at end of file From d24fcfd5a87bd8f0a7c26dad8873e364210e38d5 Mon Sep 17 00:00:00 2001 From: etherberry <134609712+etherberry@users.noreply.github.com> Date: Thu, 25 May 2023 21:51:16 +0700 Subject: [PATCH 0531/1354] Calculate Etherberry TVL (#6380) * Calculate Etherberry TVL * minor fix * remove log --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/etherberry/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/etherberry/index.js diff --git a/projects/etherberry/index.js b/projects/etherberry/index.js new file mode 100644 index 0000000000..4c2921668d --- /dev/null +++ b/projects/etherberry/index.js @@ -0,0 +1,34 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); +const { getLogs } = require("../helper/cache/getLogs"); +const { pool2 } = require("../helper/pool2"); + +const FACTORY_CONTRACT = "0x09cA2dF4956720aB75c55313a7c83A63286fDd42"; +const WETH_ADDRESS = ADDRESSES.arbitrum.WETH; +const BERRY_ETH_LP_ADDRESS = "0x6eF6eCD8AC5626525383d72AfaA9a7e7e39C0959"; +const BERRY_ETH_STAKING_POOL = "0xcA4319D51472D7111fa3A103b07fc08fC8b20655"; + +async function tvl(timestamp, block, chainBlocks, { api }) { + const logs = await getLogs({ + api, + target: FACTORY_CONTRACT, + topics: ["0x489ab9065c597368f4a678fadcb323bf4c848713ea7d5a296d16ec97203eae83",], + eventAbi: "event StakingPoolDeployed(address indexed poolAddress,address indexed stakingToken,uint256 startTime,uint256 roundDurationInDays)", + onlyArgs: true, + fromBlock: 93557929, + }); + + const lsdAddresses = logs.map((i) => i.stakingToken === nullAddress ? WETH_ADDRESS : i.stakingToken); + const poolAddresses = logs.map((i) => i.poolAddress); + + return sumTokens2({ api, tokensAndOwners2: [lsdAddresses, poolAddresses], blacklistedTokens: [BERRY_ETH_LP_ADDRESS], }); +} + +module.exports = { + arbitrum: { + methodology: + "TVL of Staked ETH & LSD tokens, with pool2 including value of staked BERRY/ETH Uniswap-V2 LP tokens", + tvl, + pool2: pool2([BERRY_ETH_STAKING_POOL], [BERRY_ETH_LP_ADDRESS]), + }, +}; From cf5acb2d44ec66bf4f9e211d5c933c123325170d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 May 2023 20:24:46 +0530 Subject: [PATCH 0532/1354] ktx (#6382) * add sdk adapter for project KTX.Finance * code refactor --------- Co-authored-by: nj --- projects/ktx/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/ktx/index.js diff --git a/projects/ktx/index.js b/projects/ktx/index.js new file mode 100644 index 0000000000..ae3eebfa68 --- /dev/null +++ b/projects/ktx/index.js @@ -0,0 +1,6 @@ +const { gmxExports } = require('../helper/gmx') +module.exports = { + bsc: { + tvl: gmxExports({ vault: '0xd98b46C6c4D3DBc6a9Cc965F385BDDDf7a660856', }) + } +}; From 13105bd41940dece10a730dbab87fcdb90dd397f Mon Sep 17 00:00:00 2001 From: paulvaden Date: Thu, 25 May 2023 11:53:29 -0500 Subject: [PATCH 0533/1354] Add new Lyra markets (#6383) * Add lyra treasury addresses * Add new markets --- projects/lyra/index.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/projects/lyra/index.js b/projects/lyra/index.js index d8a16e93fd..0d219e532c 100644 --- a/projects/lyra/index.js +++ b/projects/lyra/index.js @@ -35,12 +35,27 @@ const v1_3_arb_LiquidityPool = [ '0xec6f3ef9481e7b8484290edbae2cedcdb0ce790e', //WBTC ] -const op_pools = [...new Set([...v1_0_Pools, ...v1_1_LiquidityPool, ...v1_1_ShortCollateral, ...v1_2_LiquidityPool, ...v1_2_ShortCollateral].map(t=>t.toLowerCase()))] +const v2_op_ShortCollateral = [ + '0x8512028339bb67aee47c06a298031d91bb7d15ba', //WETH + '0xa95c6d6a2765627a854960e9ee96f607b857385a', //WBTC + '0x292a5929bd150d28eda3c17d9b7c754968b2899d', //OP + '0xa49f2ea43b445f9a2467b7279cfa1f6a0c2e3f4f', //ARB + ] +const v2_op_LiquidityPool = [ + '0xb8e90fd247700de65450aacd4a47b2948dc59fc1', //WETH + '0xacacff03241256304e841e89c13319eae09f14b3', //WBTC + '0x12a4fd54aa321eb16b45310ccb177bd87c6ae447', //OP + '0xdd0d125475453767e65f1a4dd30b62699fdcc9f5', //ARB + ] + +const op_pools = [...new Set([...v1_0_Pools, ...v1_1_LiquidityPool, ...v1_1_ShortCollateral, ...v1_2_LiquidityPool, ...v1_2_ShortCollateral, ...v2_op_ShortCollateral, ...v2_op_LiquidityPool].map(t=>t.toLowerCase()))] const arb_pools = [...new Set([...v1_3_arb_ShortCollateral, ...v1_3_arb_LiquidityPool].map(t=>t.toLowerCase()))] const op_tokens = [ADDRESSES.optimism.sUSD, ADDRESSES.optimism.sETH, - '0xc5db22719a06418028a40a9b5e9a7c02959d0d08', '0x298b9b95708152ff6968aafd889c6586e9169f1d'] + '0xc5db22719a06418028a40a9b5e9a7c02959d0d08', '0x298b9b95708152ff6968aafd889c6586e9169f1d', + ADDRESSES.optimism.OP, '0x68f180fcce6836688e9084f035309e29bf0a2095', + ADDRESSES.optimism.WETH, ADDRESSES.optimism.USDC] const arb_tokens = [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.WBTC] @@ -57,7 +72,7 @@ async function tvlOptimism(ttimestamp, _b, {optimism: block}){ const transform = (addr)=>{ return L2toL1Synths[addr] || addr; } - await sumTokens(balances, op_tokens.map(t=>op_pools.map(p=>[t,p])).flat(), block, 'optimism', transform) + await sumTokens(balances, op_tokens.map(t=>op_pools.map(p=>[t,p])).flat(), block, 'optimism') return balances } From d78bd097300e8235bb0728cd9e62082f421d5a96 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Thu, 25 May 2023 21:10:27 +0200 Subject: [PATCH 0534/1354] Track vlCVX in JPEG treasury (#6363) * Share CVX and vlCVX addies, create vlCVX->CVX token mapping * Track vlCVX in JPEG treasury --- projects/helper/coreAssets.json | 2 ++ projects/helper/tokenMapping.js | 3 ++- projects/pirex/index.js | 6 ++---- projects/redacted/index.js | 6 ++---- projects/treasury/jpegd.js | 17 +++++++++-------- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index b261372312..3e13aa3de1 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -18,6 +18,8 @@ "YFI": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", "DAI": "0x6b175474e89094c44da98b954eedeac495271d0f", "cvxFXS": "0xfeef77d3f69374f66429c91d732a244f074bdf74", + "vlCVX": "0x72a19342e8f1838460ebfccef09f6585e32db86e", + "CVX": "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", "BNB": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", "tBTC": "0x18084fba666a33d37592fa2633fd49a74dd93a88", "USX": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index e66ef3d662..03deae21a2 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -28,7 +28,8 @@ const distressedAssts = new Set(Object.values({ const transformTokens = { ethereum: { - '0xe0b469cb3eda0ece9e425cfeda4df986a55ea9f8': ADDRESSES.ethereum.WETH + '0xe0b469cb3eda0ece9e425cfeda4df986a55ea9f8': ADDRESSES.ethereum.WETH, + [ADDRESSES.ethereum.vlCVX]: ADDRESSES.ethereum.CVX, }, // Sample Code // cronos: { diff --git a/projects/pirex/index.js b/projects/pirex/index.js index 50ffe51b0b..ce193c685d 100644 --- a/projects/pirex/index.js +++ b/projects/pirex/index.js @@ -2,9 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); -const CVX = "0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b"; const PirexCVX = "0x35A398425d9f1029021A92bc3d2557D42C8588D7"; -const CVXLocker = "0x72a19342e8F1838460eBFCCEf09F6585e32db86E"; const pxGMX = "0x9a592b4539e22eeb8b2a3df679d572c7712ef999"; const pxGLP = "0x0eac365e4d7de0e293078bd771ba7d0ba9a4c892" const GMX = ADDRESSES.arbitrum.GMX; @@ -14,11 +12,11 @@ async function ethereum(ts, block, _, { api }) { const balances = {}; const { locked: lockedCVX } = await api.call({ abi: abi.balances, - target: CVXLocker, + target: ADDRESSES.ethereum.vlCVX, params: [PirexCVX], }); - sdk.util.sumSingleBalance(balances, CVX, lockedCVX); + sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.CVX, lockedCVX); return balances; } diff --git a/projects/redacted/index.js b/projects/redacted/index.js index b93d970007..be23561034 100644 --- a/projects/redacted/index.js +++ b/projects/redacted/index.js @@ -5,9 +5,8 @@ const { BigNumber } = require('ethers') const treasuries = ["0xa52fd396891e7a74b641a2cb1a6999fcf56b077e", "0x086c98855df3c78c6b481b6e1d47bef42e9ac36b"] -const CVXLocker = '0x72a19342e8f1838460ebfccef09f6585e32db86e' const cvxCRVStaking = '0x3Fe65692bfCD0e6CF84cB1E7d24108E434A7587e' -const CVX = '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b' +const CVX = ADDRESSES.ethereum.CVX const cvxCRV = '0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7' const FXS = '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0' const veFXS = '0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0' @@ -20,7 +19,6 @@ const AURALocker = '0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC' const rlBTRFLY = '0x742B70151cd3Bc7ab598aAFF1d54B90c3ebC6027' const BTRFLYV2 = '0xc55126051B22eBb829D00368f4B12Bde432de5Da' const cvxCRVPool = '0x0392321e86F42C2F94FBb0c6853052487db521F0' -const cvxFXSPool = '0xf27AFAD0142393e4b3E5510aBc5fe3743Ad669Cb' const rlBTRFLYAbi = { lockedSupply: "uint256:lockedSupply", @@ -55,7 +53,7 @@ async function tvl(timestamp, block, chainBlocks){ //Add vlCVX as CVX const vlCVXBalance = await sdk.api.erc20.balanceOf({ - target: CVXLocker, + target: ADDRESSES.ethereum.vlCVX, owner: treasuries[0], chain: 'ethereum', block: chainBlocks['ethereum'] diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index c10a739db3..68711630b1 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -14,20 +14,21 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, // USDT - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.TUSD, // TUSD - "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", // CVX + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.TUSD, + ADDRESSES.ethereum.CVX, "0x853d955aCEf822Db058eb8505911ED77F175b99e", // FRAX - ADDRESSES.ethereum.LINK, // LINK + ADDRESSES.ethereum.LINK, "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", // cvxCRV "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", "0x34eD182D0812D119c92907852D2B429f095A9b07", "0x836A808d4828586A69364065A1e064609F5078c7", - "0x9848482da3Ee3076165ce6497eDA906E66bB85C5" + "0x9848482da3Ee3076165ce6497eDA906E66bB85C5", + ADDRESSES.ethereum.vlCVX, ], owners: [multisig, donationEvent, usdcVault, usdtVault, pethVault], ownTokens: [jpegd, lp], From 53cdecf74d3dbc41c41aa3d3119884add9abe92b Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Thu, 25 May 2023 21:12:36 +0200 Subject: [PATCH 0535/1354] Share vlCVX and CVX in Olympus adapter (#6378) * Share CVX and vlCVX addies, create vlCVX->CVX token mapping * Track vlCVX in JPEG treasury * Share vlCVX and CVX in Olympus adapter --- projects/olympus/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/olympus/index.js b/projects/olympus/index.js index 1e25419995..eb4c2eb581 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { blockQuery } = require("../helper/http"); const env = require("../helper/env"); @@ -25,8 +26,8 @@ const addressMap = { "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0", // veFXS -> FXS "0x3fa73f1e5d8a792c80f426fc8f84fbf7ce9bbcac": "0xc0c293ce456ff0ed870add98a0828dd4d2903dbf", //vlAURA -> AURA - "0x72a19342e8f1838460ebfccef09f6585e32db86e": - "0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b", //vlCVX -> CVX + [ADDRESSES.ethereum.vlCVX]: + ADDRESSES.ethereum.CVX, //vlCVX -> CVX "0xa02d8861fbfd0ba3d8ebafa447fe7680a3fa9a93": "0xd1ec5e215e8148d76f4460e4097fd3d5ae0a3558", //aura50OHM-50WETH -> 50OHM-50WETH "0x0ef97ef0e20f84e82ec2d79cbd9eda923c3daf09": From 036e2df61deba8267e569cd4a3e7ffb3de6fc09f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 May 2023 22:05:03 +0200 Subject: [PATCH 0536/1354] add autocore-defi --- projects/autocoreDefi/index.js | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 projects/autocoreDefi/index.js diff --git a/projects/autocoreDefi/index.js b/projects/autocoreDefi/index.js new file mode 100644 index 0000000000..2569487a27 --- /dev/null +++ b/projects/autocoreDefi/index.js @@ -0,0 +1,38 @@ +const { sumUnknownTokens } = require('../helper/unknownTokens') + +const config = { + core: { + vaults: [ + "0x3132CDD419820f0D00152b95267FA013783e1F27", + "0x88f95f59c0FC1e9857188218F23315ECe6f64CFe", + "0xF71552C9893BDFf01a4a2debaB80E21b6E0e9481", + "0x1D165E1D48177592943275750C7ABeB946D44a6e", + "0x11606ce0D44a62027F6EEb28db7483E5ecB1103f", + "0xe79E557bf863383EB666197e96e73ACEFBf71347", + "0x91C143ED78970a4C3830070c6c1FA38EEc9F8c6E", + "0xE891d51D278518e522148271b65ec3a534012389", + "0xc09849236c5De1317e9a957cF695642285A2A5E2", + "0x0dc152dDC49e0f872489297D6Df0ef3Bb5498FF2", + "0xBafA023c72112ecfc04E661bedb30d9A8e7e08ad", + "0x746f5530FBebDcf984F0D15637f0217eb7cDcE73", + "0x87c98004D1F819fB6354CeD704304a1394Ac1F16", + "0x5D884E045d8F74E3b600c359395A300515b6F574", + "0x1f0c2507C500F24fdd765Dc4025E5c5b40FC33c3" + ] + } +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const { vaults } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const tokens = await api.multiCall({ abi: 'address:want', calls: vaults }) + const bals = await api.multiCall({ abi: 'uint256:balance', calls: vaults }) + api.addTokens(tokens, bals) + return sumUnknownTokens({ api , useDefaultCoreAssets: true, resolveLP: true, lps: tokens }) + } + } +}) \ No newline at end of file From ad1e2682de28916d8dd8be278f339b1cd68d2773 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 May 2023 22:18:55 +0200 Subject: [PATCH 0537/1354] iziswap: add chain: ontology --- projects/izumi-iziswap/index.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 9636ed5139..180fbe51cd 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -9,6 +9,13 @@ const poolHelpers = { 'arbitrum': '0x611575eE1fbd4F7915D0eABCC518eD396fF78F0c', 'era': '0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F', 'meter': '0x07aBf894D5C25E626bb30f75eFC728a1d86BEeDC', + 'aurora': '0xE78e7447223aaED59301b44513D1d3A892ECF212', + 'ethereumclassic': '0x1D377311b342633A970e71a787C50F83858BFC1B', + 'cronos': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', + 'polygon': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', + // 'conflux': '0x1502d025BfA624469892289D45C0352997251728', + 'ethereum': '0x19b683A2F45012318d9B2aE1280d68d3eC54D663', + 'ontology_evm': '0x110dE362cc436D7f54210f96b8C7652C2617887D', } const blacklistedTokens = [ @@ -43,21 +50,17 @@ const tvl = async (_, _1, _2, { api }) => { } } while (!foundLastPool) - const poolCalls = poolMetaData.map(i => ({params: [i.tokenX, i.tokenY, i.fee]})) + const poolCalls = poolMetaData.map(i => ({ params: [i.tokenX, i.tokenY, i.fee] })) const pools = await api.multiCall({ target: poolHelpers[chain], abi: abi.pool, calls: poolCalls, }) - + pools.forEach((output, i) => toa.push([poolMetaData[i].tokenX, output], [poolMetaData[i].tokenY, output],)) return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens, }) } -module.exports = { - era: { tvl }, - arbitrum: { tvl }, - bsc: { tvl }, - meter: {tvl}, - // ownTokens: ['IZI', 'IUSD'], -} +Object.keys(poolHelpers).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From bfda814b3a443b5c8859c9688aa61a15c705c5cc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 May 2023 23:05:21 +0200 Subject: [PATCH 0538/1354] add caviar v2 --- projects/caviar-v2/index.js | 25 +++++++++++++++++++++++++ projects/caviar/index.js | 1 - 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 projects/caviar-v2/index.js diff --git a/projects/caviar-v2/index.js b/projects/caviar-v2/index.js new file mode 100644 index 0000000000..b3b682a3ca --- /dev/null +++ b/projects/caviar-v2/index.js @@ -0,0 +1,25 @@ +const { getLogs, } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +async function tvl(_, _b, _cb, { api, }) { + const factory = '0xa16be8d32934a9aab272102ac4bb890481f4074e' + const logs = await getLogs({ + api, + target: factory, + topics: ['0x2e8b0eeead8b24c71386db9f08f074489fc7ceed52e7ee8a3ad4ab50b9c8c4f4'], + fromBlock: 16480338, + eventAbi: 'event Create(address indexed privatePool, uint256[] tokenIds, uint256 baseTokenAmount)', + onlyArgs: true, + }) + const pools = logs.map(i => i.privatePool) + console.log(pools) + const tokens = await api.multiCall({ abi: 'address:baseToken', calls: pools}) + const nfts = await api.multiCall({ abi: 'address:nft', calls: pools}) + const ownerTokens = pools.map((v, i) => [[tokens[i], nfts[i]], v]) + return sumTokens2({ ownerTokens, api}) +} + +module.exports = { + misrepresentedTokens: true, + ethereum: { tvl } +} \ No newline at end of file diff --git a/projects/caviar/index.js b/projects/caviar/index.js index 03c27c7a52..d9e7879574 100644 --- a/projects/caviar/index.js +++ b/projects/caviar/index.js @@ -1,5 +1,4 @@ const { getLogs, } = require('../helper/cache/getLogs') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') const { getUniqueAddresses } = require('../helper/utils') From 27668d14415aecc71afc0edbae133fbc97c4ef21 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 May 2023 23:25:18 +0200 Subject: [PATCH 0539/1354] add enosys bridge --- projects/caviar-v2/index.js | 1 - projects/enosys-bridge/index.js | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 projects/enosys-bridge/index.js diff --git a/projects/caviar-v2/index.js b/projects/caviar-v2/index.js index b3b682a3ca..798bffd0ba 100644 --- a/projects/caviar-v2/index.js +++ b/projects/caviar-v2/index.js @@ -12,7 +12,6 @@ async function tvl(_, _b, _cb, { api, }) { onlyArgs: true, }) const pools = logs.map(i => i.privatePool) - console.log(pools) const tokens = await api.multiCall({ abi: 'address:baseToken', calls: pools}) const nfts = await api.multiCall({ abi: 'address:nft', calls: pools}) const ownerTokens = pools.map((v, i) => [[tokens[i], nfts[i]], v]) diff --git a/projects/enosys-bridge/index.js b/projects/enosys-bridge/index.js new file mode 100644 index 0000000000..055ce33044 --- /dev/null +++ b/projects/enosys-bridge/index.js @@ -0,0 +1,6 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + xdc: { tvl: sumTokensExport({ owner: '0xd5308a4bb2d7121a26d0bd11257245f0efda2bc4', tokens: [ADDRESSES.xdc.WXDC]})} +} \ No newline at end of file From d928ff053985dfac855f6b8c77afdfc97de8474b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 26 May 2023 02:14:45 +0100 Subject: [PATCH 0540/1354] add hallmark --- projects/gearbox/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/gearbox/index.js b/projects/gearbox/index.js index 1baab20a44..0030759a16 100644 --- a/projects/gearbox/index.js +++ b/projects/gearbox/index.js @@ -122,6 +122,9 @@ const tvl = async (timestamp, block) => { }; module.exports = { + hallmarks:[ + [1666569600, "LM begins"], + ], ethereum: { tvl, }, From 145d0a6fcade8cea5d7973505ec4d20dc96d4a0e Mon Sep 17 00:00:00 2001 From: FireBotDev <134646129+FireBotDev@users.noreply.github.com> Date: Fri, 26 May 2023 12:37:27 +0200 Subject: [PATCH 0541/1354] FireBot listing (#6384) * Create index.js Adding the FireBot protocol on Polygon. Starting with two 2 tokens and their 2 vaults. * Update index.js Avoid counting EPs twice and returns EPs as is instead of converting it to FBX * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/firebot/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/firebot/index.js diff --git a/projects/firebot/index.js b/projects/firebot/index.js new file mode 100644 index 0000000000..1063d28b06 --- /dev/null +++ b/projects/firebot/index.js @@ -0,0 +1,29 @@ +const { sumTokensExport } = require('../helper/unknownTokens') +const { sumTokensExport: ogSumExport } = require('../helper/unwrapLPs') + +const FBX_TOKEN_CONTRACT = '0xD125443F38A69d776177c2B9c041f462936F8218'; +const FIRE_VAULT_CONTRACT = '0x960d43BE128585Ca45365CD74a7773B9d814dfBE'; +const EP_TOKEN_CONTRACT = '0x60Ed6aCEF3a96F8CDaF0c0D207BbAfA66e751af2'; +const FBX_LP = '0xcffbfa978ac3fb10e829ca6b763c307daafe8a77' +const EP_FBX_LP = '0x41D9DE53EBF26F766229E42Aa02904eB2495E397' + +module.exports = { + polygon: { + tvl: () => 0, + staking: sumTokensExport({ + tokensAndOwners: [ + [EP_TOKEN_CONTRACT, EP_TOKEN_CONTRACT], + [FBX_TOKEN_CONTRACT, FIRE_VAULT_CONTRACT], + ], + lps: [EP_FBX_LP], + coreAssets: [FBX_TOKEN_CONTRACT], + restrictTokenRatio: 100, + }), + pool2: ogSumExport({ + tokensAndOwners: [ + [FBX_LP, '0x92a9180af33531A5d78d81D90AFc0523dc6c62c9'], + ], + }), + }, + methodology: 'Counts the number of FBX and EP tokens in the Vault contracts.' +}; From e25b01b226c2d34d3ddd6e779b0003a28685091e Mon Sep 17 00:00:00 2001 From: "dev.d07" <108019900+Scriptoz@users.noreply.github.com> Date: Fri, 26 May 2023 14:05:27 +0300 Subject: [PATCH 0542/1354] bolide: provide info for vaults on Polygon (#6389) Co-authored-by: Dmitriy Berezin --- projects/bolide/index.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/projects/bolide/index.js b/projects/bolide/index.js index 209a16accb..50e7555bf3 100644 --- a/projects/bolide/index.js +++ b/projects/bolide/index.js @@ -5,24 +5,29 @@ const sdk = require('@defillama/sdk') const BigNumber = require("bignumber.js"); const VAULTS = { - STABLECOINS: '0xf1f25A26499B023200B3f9A30a8eCEE87b031Ee1', - ETH: '0x941ef9AaF3277052e2e6c737ae9a75b229A20988', - BTC: '0xed18f1CE58fED758C7937cC0b8BE66CB02Dc45c6', - ALTCOINS: '0x5d735e9ffE9664B80c405D16921912E5B989688C', + bsc: { + STABLECOINS: '0xf1f25A26499B023200B3f9A30a8eCEE87b031Ee1', + ETH: '0x941ef9AaF3277052e2e6c737ae9a75b229A20988', + BTC: '0xed18f1CE58fED758C7937cC0b8BE66CB02Dc45c6', + ALTCOINS: '0x5d735e9ffE9664B80c405D16921912E5B989688C', + }, + polygon: { + STABLECOINS: '0x0aF9F3297f34921Acd5Ac81970929964c9f3d0a7', + } } const getTotalDepositABI = 'uint256:getTotalDeposit' -async function tvl(ts, _block, chainBlocks) { +async function tvl(chain, ts, _block, chainBlocks) { let totalUsdt = new BigNumber(0); - for (const item of Object.values(VAULTS)) { + for (const item of Object.values(VAULTS[chain])) { const result = await sdk.api.abi.call({ target: item, abi: getTotalDepositABI, - block: chainBlocks.bsc, - chain: 'bsc' + block: chainBlocks[chain], + chain: chain }); if (result && result.output) { @@ -33,7 +38,7 @@ async function tvl(ts, _block, chainBlocks) { totalUsdt = totalUsdt.plus(usdt); } } - + return { [usdtAddress]: totalUsdt, }; @@ -41,8 +46,11 @@ async function tvl(ts, _block, chainBlocks) { module.exports = { bsc: { - tvl, + tvl: tvl.bind(this, 'bsc'), staking: staking('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x766AFcf83Fd5eaf884B3d529b432CA27A6d84617', 'bsc'), pool2: pool2('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x12c35ed2405bc70721584594723351bf5db6235c', 'bsc'), + }, + polygon: { + tvl: tvl.bind(this, 'polygon'), } } From 920a61c04bc667e1b9013420031dd34cc020d819 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 26 May 2023 17:12:46 +0100 Subject: [PATCH 0543/1354] update dMute contract --- projects/mute/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/mute/index.js b/projects/mute/index.js index 59ef86375b..3b49cd3d2b 100644 --- a/projects/mute/index.js +++ b/projects/mute/index.js @@ -2,7 +2,7 @@ const { getUniTVL } = require('../helper/unknownTokens'); const { sumTokensExport } = require("../helper/unwrapLPs"); const sdk = require("@defillama/sdk"); -const dMUTE_staking_contract = "0xd9Ee4c1e04059D4B0dd02b747282511bEE4E5fB5" +const dMUTE_staking_contract = "0x4336e06Be4F62bD757c4248c48D4C0b32615A2Df" const MUTE = "0x0e97C7a0F8B2C9885C8ac9fC6136e829CbC21d42" async function stakingTVL(timestamp, chain, chainBlocks) { From 66a83d9311b9051575ac92e464a84e940a07f31e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 26 May 2023 19:29:34 +0200 Subject: [PATCH 0544/1354] fix magpie --- projects/magpiexyz/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/magpiexyz/index.js b/projects/magpiexyz/index.js index 2208492ef4..a80b2858e3 100644 --- a/projects/magpiexyz/index.js +++ b/projects/magpiexyz/index.js @@ -7,8 +7,8 @@ const config = require("./config") async function getPoolList(api, MasterMagpieAddress, VlMGPAddress, MWOMAddress, MWOMSVAddress) { let poolTokens = await api.fetchList({ lengthAbi: MasterMagpieAbi.poolLength, itemAbi: MasterMagpieAbi.registeredToken, target: MasterMagpieAddress }) - const customPools = new Set([MWOMAddress, VlMGPAddress, MWOMSVAddress]) - poolTokens = poolTokens.filter(i => !customPools.has(i)) + const customPools = new Set([MWOMAddress, VlMGPAddress, MWOMSVAddress, '0x2130Df9dba40AfeFcA4C9b145f5ed095335c5FA3'].map(i => i.toLowerCase())) + poolTokens = poolTokens.filter(i => !customPools.has(i.toLowerCase())) const infos = await api.multiCall({ calls: poolTokens, abi: MasterMagpieAbi.tokenToPoolInfo, target: MasterMagpieAddress }) const depositTokens = await api.multiCall({ calls: infos.map(i => i.helper), abi: WombatPoolHelperAbi.depositToken, }) return [poolTokens, depositTokens] From f22e689351185a3e5a2333fd23a75362013ae7dc Mon Sep 17 00:00:00 2001 From: EVMlord <85406816+EVMlord@users.noreply.github.com> Date: Fri, 26 May 2023 23:00:34 +0100 Subject: [PATCH 0545/1354] Add support for Pulse Chain --- projects/kimberlite/config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/kimberlite/config.js b/projects/kimberlite/config.js index 81fbea8cc0..154aaa60a3 100644 --- a/projects/kimberlite/config.js +++ b/projects/kimberlite/config.js @@ -9,6 +9,11 @@ const config = { locker: "0xFb22A44FF24D599600A90eea13B14b5662b10353", startBlock: 25521834 }, + kimberliteSafePLS: { + chain: "pulse", + locker: "0x5752Ed96a3Bfe6bdA9A290230e02E5e9E3A6e955", + startBlock: 17366714 + }, kimberliteSafeMETIS: { chain: "metis", locker: "0xE4E56E5e234783BCb77A80e19C8B3B5b42588AAb", From 8f403cdd2a4f8add0370ef0b9453c3dcb6fb9e60 Mon Sep 17 00:00:00 2001 From: EVMlord <85406816+EVMlord@users.noreply.github.com> Date: Sat, 27 May 2023 19:51:02 +0100 Subject: [PATCH 0546/1354] Support Pulse Chain --- projects/kimberlite/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/kimberlite/config.js b/projects/kimberlite/config.js index 154aaa60a3..4da89a31c9 100644 --- a/projects/kimberlite/config.js +++ b/projects/kimberlite/config.js @@ -12,7 +12,7 @@ const config = { kimberliteSafePLS: { chain: "pulse", locker: "0x5752Ed96a3Bfe6bdA9A290230e02E5e9E3A6e955", - startBlock: 17366714 + startBlock: 17366715 }, kimberliteSafeMETIS: { chain: "metis", From 8903c23a0d3c1e635caac11aa32ea8c43c3a4747 Mon Sep 17 00:00:00 2001 From: carlomazzaferro Date: Sat, 27 May 2023 10:43:43 +0200 Subject: [PATCH 0547/1354] add missing pools --- projects/midas-capital/index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/midas-capital/index.js b/projects/midas-capital/index.js index 0953f70bff..221da4cdcd 100644 --- a/projects/midas-capital/index.js +++ b/projects/midas-capital/index.js @@ -6,17 +6,18 @@ const pools = { pools: [ "0x1851e32F34565cb95754310b031C5a2Fc0a8a905", // Helio-Ankr "0x31d76A64Bc8BbEffb601fac5884372DEF910F044", // Jarvis - "0xb2234eE69555EE4C3b6cEA4fd25c4979BbDBf0fd", // Risedile + "0xb2234eE69555EE4C3b6cEA4fd25c4979BbDBf0fd", // Risedle "0xEF0B026F93ba744cA3EDf799574538484c2C4f80", // AutoHedge "0x5373C052Df65b317e48D6CAD8Bb8AC50995e9459", // BOMB "0xCB2841d6d300b9245EB7745Db89A0A50D8468501", // Ankr - // "0xd3E5AAFebBF06A071509cf894f665710dDaa800d", // Tester "0x35F3a59389Dc3174A98610727C2e349E275Dc909", // Ellipsis "0x3F239A5C45849391E7b839190597B5130780790d", // PancakeStack "0x7f8B5fCA1a63C632776ffc9936D2e323c14B57f8", // Alpha Strategies "0x20a0ED8c794F96C1479e2867995C99E931Ee36Ba", // Transfero Stables - "0x5EB884651F50abc72648447dCeabF2db091e4117", //Stader BNBx + "0x5EB884651F50abc72648447dCeabF2db091e4117", // Stader BNBx "0xBc06411a6204B36ce6a5559FFBE3a56C5960F6fe", // pStake BNB + "0x1B6D43501E0c7201Ea061961cBAEc88FB012f57B", // THENA Core Pools + ], }, moonbeam: { @@ -32,11 +33,15 @@ const pools = { "0xB08A309eFBFFa41f36A06b2D0C9a4629749b17a2", // Arrakis "0xBd82D36B9CDfB9747aA12025CeCE3782EDe767FE", // Polygon Liquid Staking "0xF1ABd146B4620D2AE67F34EA39532367F73bbbd2", // MIMO + "0xBd82D36B9CDfB9747aA12025CeCE3782EDe767FE", // Stader MATICx + "0x59013D8a77D656777329D74ea1C88DA796005F1B" // Planet ix + ], }, arbitrum: { pools: [ "0x185Fa7d0e7d8A4FE7E09eB9df68B549c660e1116", // Risedle + "0x44a03C14F30D49cB43b7F7E91E987ecC10cc0b09" // OHM Pool ] } }; From 1c540910e9f5eb36b1a660b136f874110c2fcf11 Mon Sep 17 00:00:00 2001 From: theeazyswap Date: Sat, 27 May 2023 07:38:15 +0200 Subject: [PATCH 0548/1354] Add Eazyswap on Pulsechain --- projects/eazyswap/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/eazyswap/index.js diff --git a/projects/eazyswap/index.js b/projects/eazyswap/index.js new file mode 100644 index 0000000000..6dbb1f61f1 --- /dev/null +++ b/projects/eazyswap/index.js @@ -0,0 +1,15 @@ +const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') +const EAZY_TOKEN = "0x6cF99BAA0a4d079F960216d08cf9a1Bc7e4dd37C"; +module.exports = { + misrepresentedTokens: true, + methodology: "Factory address (0xbeE82c502eC48a962510Aa4505595259C3ba631f) is used to find the LP pairs. TVL is equal to the liquidity on the AMM. Staking balance is equal to the balance of $EAZY in $xEAZY contract", + pulse: { + tvl: getUniTVL({ factory: '0xbeE82c502eC48a962510Aa4505595259C3ba631f', useDefaultCoreAssets: true }), + staking: sumTokensExport({ + owners: ['0x23E1Be43887641E8c0EB9938FaB9D6539438115a'], + tokens: [EAZY_TOKEN], + }) + } +}; + + From edbc041c47d06d2b8cef66b4140492e7f2b22647 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 27 May 2023 22:47:05 +0100 Subject: [PATCH 0549/1354] add busd to era --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 03deae21a2..260e6f5a39 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -64,6 +64,9 @@ const fixBalancesTokens = { '0x8fa78ceb7f04118ec6d06aac37ca854691d8e963': { coingeckoId: "stride", decimals: 6 }, '0xe60ce2dfa6d4ad37ade1dcb7ac4d6c3a093b3a7e': { coingeckoId: "rocket-pool-eth", decimals: 18 },//axlRETH '0xb72a7567847aba28a2819b855d7fe679d4f59846': { coingeckoId: "tether-usd-celer", decimals: 6 }, + }, + era: { + '0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181': { coingeckoId: "binance-usd", decimals: 18 }, } } From 6561153381352f6d4abd3efbd2baf42118c4afa3 Mon Sep 17 00:00:00 2001 From: Curbis Norris Date: Sun, 28 May 2023 02:31:33 +0700 Subject: [PATCH 0550/1354] add Dexilla project --- projects/dexilla/index.js | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 projects/dexilla/index.js diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js new file mode 100644 index 0000000000..464fc2ef0c --- /dev/null +++ b/projects/dexilla/index.js @@ -0,0 +1,67 @@ +const sdk = require('@defillama/sdk') +const { transformBalances } = require('../helper/portedTokens') +const { era } = require('../helper/coreAssets.json') + +const WETH = era.WETH +const USDC = era.USDC +const BUSD = '0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181' + +const exchanges = [ + { + addr: '0x9AD0de2A1c5E5521aE5df1070de3b501844F34DB', + token1: WETH, + token2: USDC, + }, + { + addr: '0xBA64D4604032bc0cDaa66c79d74fde329a70DBeE', + token1: WETH, + token2: BUSD, + }, + { + addr: '0x61A9536f40bE8f6197562C6A3c69A29CA14D7B13', + token1: USDC, + token2: BUSD, + }, +] + +async function tvl(timestamp, ethBlock, chainBlocks, { api }) { + const balances = {} + const data = [] + + for (let i = 0; i < exchanges.length; i++) { + const reserves = await api.multiCall({ + calls: [ + { + target: exchanges[i].token1, + params: [exchanges[i].addr], + }, + { + target: exchanges[i].token2, + params: [exchanges[i].addr], + }, + ], + abi: 'erc20:balanceOf', + }) + + data.push({ + token0Bal: reserves[0], + token1Bal: reserves[1], + token0: exchanges[i].token1, + token1: exchanges[i].token2, + }) + } + + data.forEach((d) => { + sdk.util.sumSingleBalance(balances, d.token0, d.token0Bal) + sdk.util.sumSingleBalance(balances, d.token1, d.token1Bal) + }) + + return transformBalances('era', balances) +} + +module.exports = { + misrepresentedTokens: false, + methodology: 'TVL counts the ERC20 tokens on the exchange contracts.', + start: 1685022373, // May 25, 2023 @ 13:46:13 (UTC +0) + era: { tvl }, +} From d5ee0dfaadd58291dc8c5efcd21d1eeccac04f5a Mon Sep 17 00:00:00 2001 From: Shaman <86879251+pythinking@users.noreply.github.com> Date: Fri, 26 May 2023 16:52:40 -0300 Subject: [PATCH 0551/1354] =?UTF-8?q?=C3=88quilibre=20team=20and=20treasur?= =?UTF-8?q?y=20address:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Èquilibre team and treasury address --- projects/treasury/equilibre.js | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 projects/treasury/equilibre.js diff --git a/projects/treasury/equilibre.js b/projects/treasury/equilibre.js new file mode 100644 index 0000000000..2719359ed6 --- /dev/null +++ b/projects/treasury/equilibre.js @@ -0,0 +1,71 @@ +const { treasuryExports, nullAddress } = require("../helper/treasury"); + + +const equilibre = [ + '0x3a724E0082b0E833670cF762Ea6bd711bcBdFf37', // TREASURY ETH + '0x79dE631fFb7291Acdb50d2717AE32D44D5D00732', // TREASURY KAVA + '0x283270C265eB3D6e910920AdFf85e746C8063fed', + '0x4722FE058da1D359c1428C8F9B8F5b4531b58D17', + '0xAb7778933fb44514c864b2610b5d7E2A0bD91DDF', + '0x498Dd5A79ab7e19Be1dA81738239214F807E3462', + '0x78B3Ec25D285F7a9EcA8Da8eb6b20Be4d5D70E84', + '0xfcb3E3797A77946891c88A841d35d47c8F22CF53', + '0xd5524479C013d19e440872175400F396f35645fF', + '0x3ca2c227D47DF650ffcD39b64527e7c6e2E91DD1', + '0xc9C384a9E7e28f7Ef55903eb90947fe3ce71D475', + '0xA43Dd020E147F3A9C5cCe6860Cc4f51Ff71B56dc', + '0xb5B0c913acF48Bfb7bcB95e2F4fA241693dea513', + '0x4396c6e2a70c6b3c7b8a1f9e4043632e1c93d430', + '0xF9Ec0C05288d6726e1B3a7ccfcaEAc7b134d5F50' +] + + +const tokens = [ + nullAddress, + "0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73", // VARA + "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", // USDC + "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b", // WKAVA + "0x765277EebeCA2e31912C9946eAe1021199B39C61", // DAI + "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", // ETH + "0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b", // WBTC + "0xC19281F22A075E0F10351cd5D6Ea9f0AC63d4327", // BIFI + "0x6c2c113c8cA73dB67224EF4D8C8dFCeC61e52a9C", // LQDR + "0xb84Df10966a5D7e1ab46D9276F55d57bD336AFC7", // MAI + "0xDb0E1e86B01c4ad25241b1843E407Efc4D615248", // USX + "0x739ca6D71365a08f584c8FC4e1029045Fa8ABC4B", // ACS + "0xd86C8d4279CCaFbec840c782BcC50D201f277419", // MARE + "0x165DBb08de0476271714952C3C1F068693bd60D7", // TAROT + "0x74ccbe53f77b08632ce0cb91d3a545bf6b8e0979", // fBOMB + "0x9d9682577CA889c882412056669bd936894663fd", // swKAVA + "0xABd380327Fe66724FFDa91A87c772FB8D00bE488", // BNB + "0xEB466342C4d449BC9f53A865D5Cb90586f405215", // axlUSDC + "0xE1E9dB9b4d51A8878f030094F7965edC5eEC7802", // xSHRAP + "0x7ae97042a4a0eb4d1eb370c34bfec71042a056b7", // SLM + "0x06beE9E7238a331B68D83Df3B5B9B16d5DBa83ff", // axlATOM + "0x5E237e61469d1A5b85fA8fba63EB4D4498Ea8dEF", // YFX + "0xEffaE8eB4cA7db99e954adc060B736Db78928467", // GMD + "0x489e54EEc6C228A1457975Eb150A7EFb8350b5bE", // spVARA + "0x443ab8d6ab303ce28f9031be91c19c6b92e59c8a", // TORE Old Toreus + "0x8549724fcC84ee9ee6c7A676F1Ba2Cc2f43AAF5B", // TORE + "0x53a5dD07127739e5038cE81eff24ec503A6CC479", // acsVARA + "0xC09c73F7B32573d178138E76C0e286BA21085c20", // QI + "0x0Fb3E4E84FB78C93E466a2117Be7bc8BC063E430", // CHAM + "0x990e157fC8a492c28F5B50022F000183131b9026", // LION + "0x471F79616569343e8e84a66F342B7B433b958154", // TIGER + "0x38481Fdc1aF61E6E72E0Ff46F069315A59779C65", // BEAR + "0x13db70Ad2f2b7064EbD5B0CAA13Af445a77360f7", // KONK + "0xFa4384b298084A0ef13F378853DEDbB33A857B31", // cpVARA + "0xB44a9B6905aF7c801311e8F4E76932ee959c663C", // USDT + "0xde5ed76e7c05ec5e4572cfc88d1acea165109e44", // DEUS + "0xD22a58f79e9481D1a88e00c343885A588b34b68B", // DEXI + "0xde1e704dae0b4051e80dabb26ab6ad6c12262da0", // DEI +]; + + +module.exports = treasuryExports({ + kava: { + tokens, + owners: equilibre, + ownTokenOwners: equilibre + }, +}); From 3cfeb79ddc5851dd2fd83f44fe54865b8d6f49d8 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 27 May 2023 22:53:51 +0100 Subject: [PATCH 0552/1354] export vara as own token --- projects/treasury/equilibre.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/treasury/equilibre.js b/projects/treasury/equilibre.js index 2719359ed6..dd2b5e171f 100644 --- a/projects/treasury/equilibre.js +++ b/projects/treasury/equilibre.js @@ -1,5 +1,6 @@ const { treasuryExports, nullAddress } = require("../helper/treasury"); +const VARA = '0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73' const equilibre = [ '0x3a724E0082b0E833670cF762Ea6bd711bcBdFf37', // TREASURY ETH @@ -22,7 +23,7 @@ const equilibre = [ const tokens = [ nullAddress, - "0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73", // VARA + //"0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73", // VARA "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", // USDC "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b", // WKAVA "0x765277EebeCA2e31912C9946eAe1021199B39C61", // DAI @@ -66,6 +67,7 @@ module.exports = treasuryExports({ kava: { tokens, owners: equilibre, - ownTokenOwners: equilibre + ownTokenOwners: equilibre, + ownTokens: [VARA] }, }); From 4cf490d5421afa103bef338d4e03b1b81c488a31 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 29 May 2023 04:39:20 +0100 Subject: [PATCH 0553/1354] add arbitrum treasury --- projects/treasury/stakedao.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/treasury/stakedao.js b/projects/treasury/stakedao.js index 081783476f..c7b262bb6c 100644 --- a/projects/treasury/stakedao.js +++ b/projects/treasury/stakedao.js @@ -4,6 +4,7 @@ const { treasuryExports, nullAddress } = require("../helper/treasury"); const eth = "0xF930EBBd05eF8b25B1797b9b2109DDC9B0d43063"; const poly = "0xdA2D2f638D6fcbE306236583845e5822554c02EA"; const avax = "0x69D6C2ACb2485D629E184BC4E1DD972D8DDD8669"; +const arbitrumTreasury = "0xfdb1157ac847d334b8912df1cd24a93ee22ff3d0" const ethTokens = [ nullAddress, @@ -78,6 +79,12 @@ const polyTokens = [ "0x5aa0197D0d3E05c4aA070dfA2f54Cd67A447173A", // fagEUR-1 ]; +const arbTokens = [ + nullAddress, + "0x912CE59144191C1204E64559FE8253a0e49E6548", //arb + "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978", //crv +] + const avaxTokens = [nullAddress]; module.exports = treasuryExports({ @@ -99,4 +106,8 @@ module.exports = treasuryExports({ ownTokenOwners: [avax], owners: [avax], }, + arbitrum: { + tokens: arbTokens, + owners: [arbitrumTreasury,], + }, }); From c435a70fb17a766563244b7300d6e0653ed0bbbc Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 29 May 2023 04:39:58 +0100 Subject: [PATCH 0554/1354] delete duplicate --- projects/treasury/stake-dao.js | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 projects/treasury/stake-dao.js diff --git a/projects/treasury/stake-dao.js b/projects/treasury/stake-dao.js deleted file mode 100644 index c5569ad78b..0000000000 --- a/projects/treasury/stake-dao.js +++ /dev/null @@ -1,12 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); - -const treasury = "0xfdb1157ac847d334b8912df1cd24a93ee22ff3d0"; - -module.exports = treasuryExports({ - arbitrum: { - tokens: [ - nullAddress, - ], - owners: [treasury,], - }, -}) \ No newline at end of file From 91a31ecdb8247a3d8072148514c3d08838c4fd0d Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 29 May 2023 05:04:53 +0100 Subject: [PATCH 0555/1354] add hallmark --- projects/fundex/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/fundex/index.js b/projects/fundex/index.js index af8d59d6bc..881cddffc6 100644 --- a/projects/fundex/index.js +++ b/projects/fundex/index.js @@ -6,7 +6,11 @@ const config = { kava: '0xF28EFDEc09D15c6e206Ba15E7B4Ce13326d0ca90', } -module.exports = {}; +module.exports = { + hallmarks: [ + [1680134400, "Rugpull"] + ] +}; Object.keys(config).forEach(chain => { module.exports[chain] = {tvl} }) From e865f6b83cc46086d62c2df4dc2cec9a9c7b37d4 Mon Sep 17 00:00:00 2001 From: Sooraj hoysal <78635921+hoysal08@users.noreply.github.com> Date: Mon, 29 May 2023 14:54:15 +0530 Subject: [PATCH 0556/1354] Fxdx (#6386) * Added adapters for FXDX * TVL calculation for WETH, improvised * code refactor * code refactor --------- Co-authored-by: hoysal08 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fxdx/index.js | 14 ++++++++++++++ projects/helper/gmx.js | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 projects/fxdx/index.js diff --git a/projects/fxdx/index.js b/projects/fxdx/index.js new file mode 100644 index 0000000000..21aabc7326 --- /dev/null +++ b/projects/fxdx/index.js @@ -0,0 +1,14 @@ +const sdk = require('@defillama/sdk') +const { gmxExports } = require("../helper/gmx") +const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') + +const optimismvault = "0x10235996C4DAbCE8430a71Cbc06571bd475A1d0C"; +const customWETH = '0xd158b0f013230659098e58b66b602dff8f7ff120' +const wethTvl = sumTokensExport({ owner: customWETH, tokens: [nullAddress]}) +const gmxTVL = gmxExports({ vault: optimismvault, blacklistedTokens: [customWETH] }) + +module.exports = { + optimism: { + tvl: sdk.util.sumChainTvls([gmxTVL, wethTvl]), + }, +}; diff --git a/projects/helper/gmx.js b/projects/helper/gmx.js index d56c7076d6..971225b44b 100644 --- a/projects/helper/gmx.js +++ b/projects/helper/gmx.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require('./unwrapLPs') -function gmxExports({ vault, }) { +function gmxExports({ vault, blacklistedTokens = [] }) { return async (ts, _block, _, { api }) => { const tokenAddresses = await api.fetchList({ target: vault, @@ -8,7 +8,7 @@ function gmxExports({ vault, }) { itemAbi: abis.allWhitelistedTokens, }) - return sumTokens2({ api, owner: vault, tokens: tokenAddresses, }) + return sumTokens2({ api, owner: vault, tokens: tokenAddresses, blacklistedTokens, }) } } From d4e2795fc5324e77cb7152f6ddd9496fed08b314 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 May 2023 11:30:02 +0200 Subject: [PATCH 0557/1354] getLogs: app option to skip cache --- projects/helper/cache/getLogs.js | 19 ++++++++++++------- utils/formatAbis.js | 4 ++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/projects/helper/cache/getLogs.js b/projects/helper/cache/getLogs.js index 4b0b9d63ca..5945114250 100644 --- a/projects/helper/cache/getLogs.js +++ b/projects/helper/cache/getLogs.js @@ -7,7 +7,7 @@ const cacheFolder = 'logs' async function getLogs({ target, topic, keys = [], fromBlock, toBlock, topics, - api, eventAbi, onlyArgs = false, extraKey, }) { + api, eventAbi, onlyArgs = false, extraKey, skipCache = false, }) { if (!api) throw new Error('Missing sdk api object!') if (!target) throw new Error('Missing target!') if (!fromBlock) throw new Error('Missing fromBlock!') @@ -26,7 +26,7 @@ async function getLogs({ target, } target = target.toLowerCase() - const key = extraKey ? `${chain}/${target}-${extraKey}` : `${chain}/${target}` + const key = extraKey ? `${chain}/${target}-${extraKey}` : `${chain}/${target}` let cache = await _getCache(key) let response @@ -71,18 +71,23 @@ async function getLogs({ target, return true }) - await setCache(cacheFolder, key, cache) + if (!skipCache) + await setCache(cacheFolder, key, cache) return cache.logs } async function _getCache(key) { + const defaultRes = { + logs: [] + } + + if (skipCache) return defaultRes + let cache = await getCache(cacheFolder, key) // set initial structure if it is missing / reset if from block is moved to something older if (!cache.logs || fromBlock < cache.fromBlock) { - cache = { - logs: [] - } + return defaultRes } return cache @@ -91,5 +96,5 @@ async function getLogs({ target, module.exports = { getLogs, - getAddress: s=>"0x"+s.slice(26, 66), + getAddress: s => "0x" + s.slice(26, 66), } \ No newline at end of file diff --git a/utils/formatAbis.js b/utils/formatAbis.js index edbda43374..fea67dab82 100644 --- a/utils/formatAbis.js +++ b/utils/formatAbis.js @@ -3,7 +3,7 @@ const glob = require('glob') const jsonfile = require('jsonfile') const fs = require('fs') -let data = require('../projects/test/abi.js') +let data = require('../projects/test/abi.json') const rootFolder = '../projects' const rootFolderTest = '../projects/yfii' @@ -91,7 +91,7 @@ function print() { } console.log(res) res = transform(res) - fs.writeFileSync(__dirname+'/../projects/test/abi.js', 'module.exports = '+JSON.stringify(res, null, 2)) + fs.writeFileSync(__dirname+'/../projects/test/abi.js', JSON.stringify(res, null, 2)) // console.log(res) console.log(JSON.stringify(res, null, 2)) } From 5fb1e39e84169a70cea96cd9b13c403afa8ce551 Mon Sep 17 00:00:00 2001 From: C0deMunk33 Date: Mon, 29 May 2023 03:50:41 -0700 Subject: [PATCH 0558/1354] updated contract addresses for latest deployment (#6393) --- projects/vega-protocol/index.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/projects/vega-protocol/index.js b/projects/vega-protocol/index.js index 40e08887ab..84bbf5b61d 100644 --- a/projects/vega-protocol/index.js +++ b/projects/vega-protocol/index.js @@ -5,13 +5,14 @@ const assetListedEvent = "event Asset_Listed(address indexed asset_source, bytes const BigNumber = require("bignumber.js"); const config = { - ethereum: { bridge: '0x124Dd8a6044ef048614AEA0AAC86643a8Ae1312D', - fromBlock: 15263615, - vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', - stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', - assetPool: '0xF0f0FcDA832415b935802c6dAD0a6dA2c7EAed8f', - - vestingContract: '0x23d1bFE8fA50a167816fBD79D7932577c06011f4' }, + ethereum: { + fromBlock: 17346166, + vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', + stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', + assetPool: '0xA226E2A13e07e750EfBD2E5839C5c3Be80fE7D4d', + bridge: '0x23872549cE10B40e31D6577e0A920088B0E0666a', + vestingContract: '0x23d1bFE8fA50a167816fBD79D7932577c06011f4' + } } const contractAbis = { From 140cbd24e7673813c71c42427af90325875bb26e Mon Sep 17 00:00:00 2001 From: MuesliSwap Team <91151317+MuesliSwapTeam@users.noreply.github.com> Date: Mon, 29 May 2023 12:52:30 +0200 Subject: [PATCH 0559/1354] Add the newly introduced MILK Vault staking option (#6399) * Add the newly introduced MILK Vault staking option * Format --- projects/muesliswap/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/muesliswap/index.js b/projects/muesliswap/index.js index f5fbb00e92..de09fe0b67 100644 --- a/projects/muesliswap/index.js +++ b/projects/muesliswap/index.js @@ -6,7 +6,10 @@ const { fetchURL } = require('../helper/utils') async function staking() { let totalAda = 0 // Milk locked - const tvlMilk = (await fetchURL("https://staking.muesliswap.com/milk-locked")).data + const tvlMilk = ( + (await fetchURL("https://staking.muesliswap.com/milk-locked")).data + + (await fetchURL("https://staking.muesliswap.com/milk-vault-locked")).data + ) if (tvlMilk.data <= 0) { throw new Error("muesliswap tvl is below 0") } From 7f5504beee76e440852c75b318b4e69fd1ed981a Mon Sep 17 00:00:00 2001 From: zkDX-OliverRichards <130122950+zkDX-OliverRichards@users.noreply.github.com> Date: Mon, 29 May 2023 18:54:08 +0800 Subject: [PATCH 0560/1354] update staking addresses (#6400) --- projects/zkdx/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/zkdx/index.js b/projects/zkdx/index.js index 238d2d8f33..1bb227c9cc 100644 --- a/projects/zkdx/index.js +++ b/projects/zkdx/index.js @@ -6,7 +6,8 @@ module.exports = { start: 3744214, era: { tvl: staking( - ["0x79033C597B7d8e752a7511cF24512f4A7217C0B8", "0xd6cce119B45Efcb378a4735a96aE08826A37ca1c"], + ["0x79033C597B7d8e752a7511cF24512f4A7217C0B8", "0xd6cce119B45Efcb378a4735a96aE08826A37ca1c", + "0xDC9e925D2BB683d47203eCEddBD1d733EC035CaE","0xA9C595C8F718898f7eb96964Bc92517365c901C9"], [ADDRESSES.era.WETH, ADDRESSES.era.USDC] ) From a909f81ed1041e4415911edc23458fab53174bd2 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 29 May 2023 12:22:04 +0100 Subject: [PATCH 0561/1354] wip okcoin --- projects/okcoin/index.js | 67 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 projects/okcoin/index.js diff --git a/projects/okcoin/index.js b/projects/okcoin/index.js new file mode 100644 index 0000000000..0c93ffc75a --- /dev/null +++ b/projects/okcoin/index.js @@ -0,0 +1,67 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + '0xa28062bd708ce49e9311d6293def7df63f2b0816', + '0x2ce910fbba65b454bbaf6a18c952a70f3bcd8299', + '0xd30b438df65f4f788563b2b3611bd6059bff4ad9', + '0x4a8f1f5b2a3652131eac54a6f183a4a2cf44a9a6', + '0xd7efcbb86efdd9e8de014dafa5944aae36e817e4', + '0x964b78ef2925f24c3a8d270c10522638dee5f17f', + ], + }, + bitcoin: { + owners: [ + '3EunnmL6LhqcB9u3PVbUAdtj1vZdGQgFBP', + '3HPQGA5BDsfk2Wxy4jjkg9bNpxKz33kN5o', + '36Y1UJBWGGreKCKNYQPVPr41rgG2sQF7SC', + 'bc1qwx5493sxzt58j4w7tqdkkxg9prxwypcnu8yw564q9dx07j2dg2usvsgm8p', + 'bc1qdfczq588vxjw75708jnv0l58hunh0a3xpyl4xnx4pzymq0nwjfasldftyv', + '38xvfmxwR81ZtdQRw8j5XLwP38J2AioW6i', + '361SutatvucBNkTBZvmNPaXThLbDm1XK5i', + '36j6PzEU83pmM1PbHCP3uBH9HcuwYX1igb', + '36igHhLGsmCt4Qh1TZTgzinEjU3AQipVDi', + 'bc1qwkh46xvgq2znq972w9re56gznyf965244sznps3x8gfc9nk42ejsc5jn7f', + 'bc1q3kq7gcgaug7glvenrefytekkrl7wz988zqwucaulp645q76uxlzsnsayx2', + 'bc1qzqxlgw0nfuqswnrmnwpw95fdvcfvc5hcqza37c0kjuvu8zsfvlqspurstr', + 'bc1qcetd4jsxxllvj7psq7n22p5zt0z73ca8yd47wjgp2wh4rv6v4aqq7xexlk', + 'bc1q2gmemmlz64s4fnyvy3xqz98c73qpdc0p6dv7zj2qjzpc57cqnvpsshfa5e', + 'bc1qq59den5kwgas3yryp742m56crrwqqayhzzcx326s65sqw7myvqps7q0dy6', + 'bc1q6f5r5d75k4uyzly943p9z3n4n3lgaedtddt9zu9tw8d0ahsf339sucn978', + 'bc1qjnj9mvfz59kn40k9rceyxj3zue6zrzknsplk92kxsf5l26v05ezsey80cm', + 'bc1q7ud6u0gvgq2n4jl5huj5mswlxhkwmch6syn48ah72ph25ckcx4qsygvhh6', + 'bc1qr2smyzl5lcjwk03s5ca5ma74jl4sx007qmtvgx4a97fftvpm7ghq4nlvjn', + 'bc1q6vywz7nlemayvxnkacln47wr69j7j0r0dykcl23vdjr8ssdmkpjszaghna', + 'bc1qqvp7nwgh4yca3yz6ww5kxkuvwcwawcnufqzn0hv2nne7t8l0dqhqu6xjdz', + 'bc1qet9lkfpc2ggfa3pm93dd7algtx9uux5pywyq72l0m5ree82ee5cs5jy37v', + 'bc1qcmas6e30q6hyhxrsjlp02fltjpnm5ps7w54ndlhanydz6z8e2p2s3rm7ws', + 'bc1qzve88rsexgw4veds3u536j76q8u63qdqx4uyx7qmpfqls7d4d9dsvdfxa7', + 'bc1qlrkpwmw4maqendwghc726deh6ch0u659s3l3snlxnx9pvm2f7jhsfrd4lp', + 'bc1qu5t70knuu6nye084x877kny6elvx5waarj8r77v2q8eycymy6cfqnn832z', + 'bc1qdjaduy7409zl6qkf76knsv8vs96a0pcmevyply3hzyphvp6m2s6qhvljne', + 'bc1q2ckykmuc0u4l7zrsv5c52y5uku2zy3y82w8pwtks3mhpan00lplq2xv3tt', + 'bc1qet4drerlrwu86ep0xp8mdzxkmscdj3672uxeuwfzscly8axy04kq74e0ae', + 'bc1qnp7julzx0qyyz7dapdjjyuvlhd696frj0puu9gptwdutvhryyvcsuvc3na', + 'bc1quktu2u654pelsn7qtmv839yyg0xecmdr59r6tuu0t5hcxq5nsxwqc5fzpu', + 'bc1qzrz29mxxlv3lnsng50lzpa6xrl848jp3lwmcn67t082k2xv45muswkwelc', + ] + }, + tron: { + owners: [ + 'TQ7wK19fhZZqLdj2Xcw2e6Ejs3cTZbfBbF', + ] + }, + avax: { + owners: ["0x5793da1b0c41c7db8e3eb8dbcd18fdca94a58535"] + }, + polygon: { + owners: ["0x0f51a310a4dd79d373eb8be1c0ddd54570235443"] + }, + okexchain: { + owners: ["0x5b73841a54f6f2e8b179f1801f664f470d7f37ea"] + } +} + +module.exports = cexExports(config) + From b3e224802b3fe8aa6b28a8a096fb8e574b650a75 Mon Sep 17 00:00:00 2001 From: 0xPowerRanger <127472302+0xPowerRanger@users.noreply.github.com> Date: Mon, 29 May 2023 19:36:13 +0800 Subject: [PATCH 0562/1354] Integrate Range Protocol (#6401) * integrate range protocol * update * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/range/abi.json | 3 +++ projects/range/index.js | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 projects/range/abi.json create mode 100644 projects/range/index.js diff --git a/projects/range/abi.json b/projects/range/abi.json new file mode 100644 index 0000000000..240ac80526 --- /dev/null +++ b/projects/range/abi.json @@ -0,0 +1,3 @@ +{ + "underlyingBalance": "function getUnderlyingBalances() public view returns (uint256 amount0Current, uint256 amount1Current)" +} \ No newline at end of file diff --git a/projects/range/index.js b/projects/range/index.js new file mode 100644 index 0000000000..28e4cb27e3 --- /dev/null +++ b/projects/range/index.js @@ -0,0 +1,38 @@ +const { getLogs } = require('../helper/cache/getLogs') + +const ABI = require('./abi.json'); +const config = { + ethereum: { factory: '0xf1e70677fb1f49471604c012e8B42BA11226336b', fromBlock: 17266660, }, + arbitrum: { factory: '0xB9084c75D361D1d4cfC7663ef31591DeAB1086d6', fromBlock: 88503603, }, + bsc: { factory: '0xad2b34a2245b5a7378964BC820e8F34D14adF312', fromBlock: 28026886, }, + polygon: { factory: '0xad2b34a2245b5a7378964BC820e8F34D14adF312', fromBlock: 42446548, } +} + +module.exports = { + methodology: 'assets deployed on DEX as LP + asset balance of vaults', + start: 1683965157, +}; + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topic: 'VaultCreated(address,address)', + eventAbi: 'event VaultCreated(address indexed uniPool, address indexed vault)', + onlyArgs: true, + fromBlock, + }) + const vaults = logs.map(log => log.vault) + const token0s = await api.multiCall({ abi: "address:token0", calls: vaults, }) + const token1s = await api.multiCall({ abi: "address:token1", calls: vaults, }) + const bals = await api.multiCall({ abi: ABI.underlyingBalance, calls: vaults, }) + bals.forEach(({ amount0Current, amount1Current }, i) => { + api.add(token0s[i], amount0Current) + api.add(token1s[i], amount1Current) + }) + } + } +}) \ No newline at end of file From ead2ce4d068bc429104e007edfca50410d0a00a4 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 29 May 2023 12:48:42 +0100 Subject: [PATCH 0563/1354] update btc --- projects/okcoin/index.js | 149 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 148 insertions(+), 1 deletion(-) diff --git a/projects/okcoin/index.js b/projects/okcoin/index.js index 0c93ffc75a..a45c997563 100644 --- a/projects/okcoin/index.js +++ b/projects/okcoin/index.js @@ -44,7 +44,154 @@ const config = { 'bc1qet4drerlrwu86ep0xp8mdzxkmscdj3672uxeuwfzscly8axy04kq74e0ae', 'bc1qnp7julzx0qyyz7dapdjjyuvlhd696frj0puu9gptwdutvhryyvcsuvc3na', 'bc1quktu2u654pelsn7qtmv839yyg0xecmdr59r6tuu0t5hcxq5nsxwqc5fzpu', - 'bc1qzrz29mxxlv3lnsng50lzpa6xrl848jp3lwmcn67t082k2xv45muswkwelc', + 'bc1qzrz29mxxlv3lnsng50lzpa6xrl848jp3lwmcn67t082k2xv45muswkwelc', + //wallets within 0.05 and 1 btc + '3JnxnGXVn1iSkjhsAtNRq2GGgZaDXz9SZv', +'3BiJA1srAFWoaoCPAjvNiwSmgFGGnRXCQA', +'3Mn6GnHRtA5S9HWgKdJnTfGyCgj5r8a7d8', +'3DekqjWw33GGZi6ER4QLTsyDZV8gEycLnt', +'3DFiiWYGszd44qADZFMae4vSwVkzKH9D1J', +'3BQ2ZssxxTpkDhSC1kanGpQ2ofNfZHfqdE', +'3L8Jow9gos1tewxYKvhxUeE43dzxFP7jfw', +'3Jcus23RVs6iyCLS4x67o64wZJuxyLJPEy', +'3EsXfkx4hdLdX6GhzthGw4G4QJSPymGyqY', +'39yNTRaotoLsGtUWrJQ2FTg4uT9i8jETNs', +'34Hx5KffA1mUQG23ZdcZ7zhpPj1jdHRPB7', +'336RCi69KyksFvfd5K8nVgv2V6L4TzPo5e', +'33Us9LTox4pPCyDRucWAeAgv5HFJ3F8QEY', +'33Miwhfghqp2fPre272zM6bBPjU6fFBjdP', +'3JrDVvApcDrJvYUhGoSXAkwCxJkxH37uRY', +'3ARVBKq7MESv4aKXeXZVjhMxmBBC7Uohvt', +'37jUoYXzKb5M2kvdXRxGnwmRrHLXuBPkGR', +'3MWUMsGmx3y1iBDCwjkZp1XdUxEHYNzUq2', +'3L39V5WF9422tHSjK7joFPnriioCrPim7j', +'35tt48ioWimAbPLxk4MfWkp6La2B7gRbRd', +'35PTstw2PqGrquLnUhmye3A2nMZJzeK5MF', +'32UxKDSVdSeaNyAQQd5UfHveJzAikbGLmT', +'39uKss4GEpj7F8Z39tSThmatWivVW9N3cV', +'3Kv5DCmHU64wN68hiD6hGyTgfEv3E7czDd', +'bc1qngnta9lvmht9z6y4nq5kc8x57pzan0e5daxrxtg3llgpd2jfumts8056hj', +'3PTcMGdNKYV5ZZDQorNYmMxoVDoghFcwWn', +'bc1q73cqllektyf7wgkfl9ar85sr56vuz7w8lre75ux8m0r3vcplqjmq6d8jkd', +'3EXXcxmcfAtMG5SeUshEZMGD3NEuDZWSXg', +'3Bbyo51FEEM8jzw2JQEwu7DQmBPMJzWRj4', +'36LdQB5Ae5BbnQv18R61qotgicbG1dTaBj', +'3Ad6D5e83PfTxZpdYQumYiMrFnc7S6hE1P', +'3Kib3E62NKnL4bAy425G14BPofYH5qMgMF', +'3HWqMWUcDxFjyCKvSBSmYDpGXWNqPaYoW1', +'3H36uhmRugEN9ySYSh4ZftP1GerUfvseXP', +'3FmNm3byE5qwzfgQbQod3jHoKGy5r4Qapp', +'37x2VKLx335bQE5ypAmU1Ma5FnShb1MSBV', +'3MxBjHLRhvV1jPLTtgUAdfDw8xJ4ww5R3z', +'3GVHA98byHdxekZjBhHBWdHCMH4GRNC61e', +'35t1TFTbUcTH5ZnZiMVqQUPUtfT4sRcTrC', +'bc1qp8gd6xakvqqg7qt9ktfpq4wrsfhp0jlyzy4npfk22xh5qk83fztqsuuspf', +'3NMQ4igWQVAZq1NeUSd4a2NLJ65w8JqmFS', +'3AxGEYCt8Hq13E6LhENzL1q6ieP7fv9M8s', +'37J1MywnA1NY1mmC9ny4EgmkKEFB8zmg33', +'35VhixfJ7PhxF12F6oCSnzm6Cgu5RZUoMu', +'3FFyv1BR5r93YN8aVpmJ7JDeMH7TeccZw7', +'37HNTMRUGWFMzws1RF6fAp2sDP5m6tMwec', +'34UEa6zLvRpTb2EHXeCSvTsFm1Ps2GuLHQ', +'3JeBScBZpYp4szgK1R8LCZvA2tzkXr9VRD', +'38E56tLzMHxpmwfdgB6BaPgNkHFh5FzaTi', +'33L5akK2tnaupkERpCndewo9hVNFkSuzFw', +'351WbvpjVpaZvJQKr1bdeeSU22cQiNBiEd', +'3LA2CzGzVACJuZUaWLPL64oqS73HtW4cer', +'32EAqUdjJaz3XmKEnD9GKmC44vsrH48oCL', +'38QnFXRBXPWQLcfVrgWUWxMoQFN1j6h15d', +'3JkZ85L4KUFX5586MzuSZLLanDJsr1XZSP', +'37vusKNFpRR4zMbrEmapcW445E69a1imyk', +'3Lhys3GpCNCRchMc59EL1ooLbufnEos9uB', +'33G1yrrbYrCK6ciAWAjFo9iGrraN5m3Ahx', +'3QRAKmSCHHroDL5Cx6dWhRPcs5ppwFkJrX', +'38HADuJsqQnepqNkM9b7RNCRdHmSkRjFxH', +'3AZbWTkkdjgTC4VNgvzhtGCB57rj8CDaHH', +'3E9on9B9UeiThYJ6tTBF3QvNG1eqiX9cWT', +'3A4QPK7seQej6HeMpK56f49aKtCM4BZEzW', +'36qzQCduQU1o8kEmxEWqE3gxSTMQxRefFC', +'37MHYEueW5TwP4NL61hkyrZszvPzNPNL6H', +'3823shvqUTkvTkJxSAYnMJ1cNVoZMTHziN', +'3E6c1FWkkAgamGwS8uuyZTq8VxC7vEBJZe', +'3AJbWP8SLMeLon1nTVAwGUMDwRzqLvMTkP', +'3CgSD8pWNCwT2mqSMwRWh8V63eCarRw9GE', +'3E5k2j3grs2MWyAhaCWihHbp3qMmCZ7Jrp', +'36hjUNNQmEbcpQCH8tKDB4TeSPS7vnkxnr', +'37cUrvVYXErBBKZmRXnnZ43abKrb2zpkDv', +'35XnWbmbw346nibLUFaV9pniUuZ2y79Es6', +'3FqGZYQZcjVJoxzqtPiNSwKYGEABteVYcW', +'38Tqph89kZ7pACYfB3QEWMmcqwT6iLYzsF', +'3LXEMR78AZgDfWCdUtnWamMKum5g1ym6u1', +'3FjVztnMC1Zfw3UKFVkTR7BrApuiRQh7oV', +'377HhcLwuUjurePSRWbAqgyrF8KxyGNDQg', +'35ozJkakwt12zqSjZYGNsNJnCdDQVZzNbT', +'39as38s4cjCTJayD9yCqEXn2B3wZ2FUbDF', +'3Qe797rPwsiDdJKLmsBCuJeHpJdJda1kvY', +'3FacVnLk1ZSniBudYK7ZgnS2uUwPYuq4f7', +'3HuXaUKn27trUbow4Aa3HayFuEUnCGyvba', +'3Mb8G2Qnv45ggRbtUNziSj2vSTgSK2HNHD', +'3JWcAqsm8ieCGh9TBCMQ86i2bu5AjYLkS4', +'3QSnhC7HjTNufKogHBXYYG2NeRhSAFwqtf', +'3MJkvBtoT3fFThhmrUqu9Y8cnH2x6WQKGL', +'33HqYc2Af6f6oLtXs86e5NTdNCAZgfvELL', +'38ax4K5qVmcdH8RYEw38aVAzNQAggv529Q', +'3M24e5cQ4WhBAEE1MEChisHoNKtC2U2Y5q', +'34Zzuk8bUjyYs3VpbYxPAvz3WimZHxtKiR', +'3AuA5UPZnjPqo2zSucH47RoAfyZdQ3g35B', +'3AxbCB38wCXCuR4E3Wdh32y1oLwEydKcPG', +'37twN7poMtZZ5okXf6CKFc2zAQWE5z9DRn', +'378DgWMXnkGnyZUzzutHB1hUej971Hb3mN', +'37YQfndjTjzapiJgQTG5YhkaYigyDt1VVs', +'3HdRnYLj1srrWyafFGFTMS71mDtkvPfgQo', +'34rsrUyY2WyeofQmcmtN9hXRBoEGqNpoZH', +'38jKLyTYyQdUxfPHm8mrdeMRwk7ebYmUQw', +'35EyyC2Q7UTTzmcWeuVd7b96cjkR2ykadT', +'33EUWhxkUCrWBX4tLfWtWdQPSnk2hY97za', +'3J84KGUxAEGhFfB3Hs7HZ68GaMaKjgA3tZ', +'3EA7HQZWfymPFdxNhRfzG53XJLo9bZzYDw', +'3HMECK25HJ4iWdRfjWBJK5ueJsYia3yPyk', +'3BVzXXgq7fvsFDJ6ny1RNJ4s5ypXzshhET', +'343gXjVA3Wgbfg9K2RovDk4GsqHUGq8ZxB', +'3A54PouNJwghWiFQdn7FRno2YeTje4n4em', +'33jxtkLvLh8wWAoBC7RYq9S5Y3ydAjwvZs', +'3Bu5yq7beSbUUPtDMpFqhpZVbmYtqi3gpQ', +'3NmvX4dYvPbu5LwzWfons7mHDtTBZMZFtm', +'3FXEDv2jaCHiH5J1BkSFV5m8MtjmrL9jNa', +'3FG1ddek4PCL92qM7sRJrpF9eEJAyDW8tL', +'3FvoKWeNqL1GLJ8Roa8eDedkhra6RxqZ48', +'3C66QJi7fWHhz1hWPtnEUgsvVeJXe27Xi9', +'3JrGcLg1MzGQQEwCta3CmLJsWvPp8A7DtX', +'3E5pPeHTSc19a2bE3ZxwAHZYe6iHgyan2o', +'3Jjv396jerr6db2cBsFPCVudpfiU2H25WU', +'39VjSobUAfK8G1zze5PeW2sn8QY7fyvhbR', +'3EiSvSHQt4CsLX7AgnEKpsXrUpMZpeSMXe', +'3Mpo5zXBhEggr7sgs8vzo8ZU2i2T62ZNEk', +'3QE1BARbS2nsvVeSyByyBKjWZrEW4CQMZn', +'3DHaPJoRxcapq1dDauPngffaNgkXWiNFAM', +'3Bn2D21DepckmiLU4ni5qbf1vEnXAqyWVP', +'397h3jmCiYZHqb73ACz4Gi2Vv8AdG4F2pa', +'38zipfqoWTNbegueuJddxBmZWn9XtSjvPe', +'37aUTkbtgaDptrZdVRn2nqArhirHWSZ5Bi', +'3N2WeJRemChkBBz6kjsnh8XryG8Ngg28oh', +'3NEDrujnksv8ys8WMx5mQj6FpSPR1itavV', +'39Sgahv57LvDMncYkSVSQm5JE67JN3EwQB', +'3FkLBYuyoJSsazZPF1H8Hjcsg3uvzf1MFg', +'3NucAfKBkn8dsBV1r2jbUwjaUQqWZw4ZvM', +'35c95r3JijNVx45jFgq8vhYw3Djn9nGCMk', +'3E6SjVMiLoip4Nd95jBnEC8M2qFJ9MAWLL', +'3P2pNDQTjCo7bAwYEyPS5gChfNrVLpzQ4y', +'37AkghRoT6BA256qj4AeJNnHX1A3psDm3V', +'3AzX1AnppBt5JBs9P36KotZnYw6n7BbuxM', +'369FxNdxKkFEW8F5p783S8trx3fibXELzV', +'3KnDayd2eiGC47g1FSAm3kGuMhqf3upPrG', +'33ChGHWngwNd19xVAmi6XQWRyKRHrsK8CA', +'3GiwKE2VNPnDKbikEfTJGyWmeVSoGo9Uof', +'3MFHxwrY6YwDtibo3eY9eke6fvMSZMR4XS', +'3D3tAwDW8r9Qkawz873MX4fjAdeg74znjp', +'39f4BLdMLWj12QA3srLbsFhTaBZnyoxmiH', +'3G4djxBWaGe9vazH1DFAMuDikufXgP6xE4', +'3QdHCUC1DLEftGd5H6J6hdzz4B35fj38So', +'35vEh3wEYixfcr8kLWqGtWpsgoXHFMSGUf', ] }, tron: { From 102f4c2b09312d9e5a2c04747b86c85ad140b17e Mon Sep 17 00:00:00 2001 From: C0deMunk33 Date: Mon, 29 May 2023 07:25:21 -0700 Subject: [PATCH 0564/1354] updated start block (#6407) --- projects/vega-protocol/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/vega-protocol/index.js b/projects/vega-protocol/index.js index 84bbf5b61d..d3cf44ee98 100644 --- a/projects/vega-protocol/index.js +++ b/projects/vega-protocol/index.js @@ -6,7 +6,7 @@ const BigNumber = require("bignumber.js"); const config = { ethereum: { - fromBlock: 17346166, + fromBlock: 17343884, vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', assetPool: '0xA226E2A13e07e750EfBD2E5839C5c3Be80fE7D4d', From 3e66309f19e7db7e0a1f37baff440ba0d83c53d9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 May 2023 19:55:51 +0530 Subject: [PATCH 0565/1354] Equilibre (#6408) * Update equilibre.js MULTI-SIGN ETH added * code refactor --------- Co-authored-by: Shaman <86879251+pythinking@users.noreply.github.com> --- projects/treasury/equilibre.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/treasury/equilibre.js b/projects/treasury/equilibre.js index dd2b5e171f..86e6c21662 100644 --- a/projects/treasury/equilibre.js +++ b/projects/treasury/equilibre.js @@ -64,6 +64,10 @@ const tokens = [ module.exports = treasuryExports({ + ethereum: { + tokens: [nullAddress], + owners: ['0x8B21Bdb9B1aa2094460851dA19185A989529fBe3'] + }, kava: { tokens, owners: equilibre, From 3a7cbcd378aa9a619993c2e16b2e90505a586ea0 Mon Sep 17 00:00:00 2001 From: TJakubek <39831436+TJakubek@users.noreply.github.com> Date: Mon, 29 May 2023 16:30:06 +0200 Subject: [PATCH 0566/1354] exXDC/EXFI and 180 locked EXFI farms (#6405) missing comma --- projects/flarefarm/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/flarefarm/index.js b/projects/flarefarm/index.js index 5a5b5fc352..bd5a66bcf2 100644 --- a/projects/flarefarm/index.js +++ b/projects/flarefarm/index.js @@ -28,7 +28,9 @@ async function farmTvl(timestamp, ethblock, { [chain]: block }) { [EXFI, '0xD02C3e166223EE78F4d0ae99F5396142b48D97FE'], [WSGB, '0x745d8896629842ef8E44D269f89A7A873086A6F2'], [EXFI, "0x61128b44C299b0f7a752BF6278f44f1EcefD9109"], - ['0x3233642aCf7664a69c33e5a6FFAb321608d7A65f','0xF81B465C562ED3f54Aea772D8A56FAF93884ea2E'] + ['0x3233642aCf7664a69c33e5a6FFAb321608d7A65f','0xF81B465C562ED3f54Aea772D8A56FAF93884ea2E'], + [EXFI, "0x3B346b0b091fA8813f60Cd6e81b95b63375e22f5"], + ['0xc41aA3ac0e6efcb780cd4696E7eC3B8193BB46E1', "0xa275DD75C1182055C7039b839cC0Da017c78933a"] ]; return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) From 9cbdfbac5d669ddbc5a6b1c502322a549732a439 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 29 May 2023 16:44:34 +0100 Subject: [PATCH 0567/1354] thellamas treasury wip missing convex --- projects/treasury/thellamas.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/treasury/thellamas.js diff --git a/projects/treasury/thellamas.js b/projects/treasury/thellamas.js new file mode 100644 index 0000000000..55015aac31 --- /dev/null +++ b/projects/treasury/thellamas.js @@ -0,0 +1,18 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const Treasury = "0x73eb240a06f0e0747c698a219462059be6aaccc8"; + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.CVX, + "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", + "0x7f50786A0b15723D741727882ee99a0BF34e3466", + "0x9aE380F0272E2162340a5bB646c354271c0F5cFC" + ], + owners: [Treasury], + }, +}) \ No newline at end of file From b2a9c06713c88a48cf7ebb4ac798d58ffa753325 Mon Sep 17 00:00:00 2001 From: Niobium <96459070+NiobiumZeit@users.noreply.github.com> Date: Mon, 29 May 2023 23:47:56 +0800 Subject: [PATCH 0568/1354] feat(benddao): support apestaking v2 (#6406) --- package-lock.json | 2 +- projects/benddao-ape-staking/index.js | 80 ++++++++++++++++-------- projects/benddao/helper/abis/ERC721.json | 3 + projects/benddao/helper/abis/index.js | 2 + projects/benddao/helper/address.js | 12 +++- 5 files changed, 72 insertions(+), 27 deletions(-) create mode 100644 projects/benddao/helper/abis/ERC721.json diff --git a/package-lock.json b/package-lock.json index 2d5147b47b..75a0c132e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6791,7 +6791,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "5.0.1" } }, "strip-json-comments": { diff --git a/projects/benddao-ape-staking/index.js b/projects/benddao-ape-staking/index.js index 77f989005d..5c6cde163c 100644 --- a/projects/benddao-ape-staking/index.js +++ b/projects/benddao-ape-staking/index.js @@ -1,35 +1,65 @@ - const abi = require("../benddao/helper/abis"); -const address = require("../benddao/helper/address") -const sdk = require('@defillama/sdk') +const address = require("../benddao/helper/address"); +const sdk = require("@defillama/sdk"); module.exports = { ethereum: { - tvl: async (_, _b, _cb, { api, }) => { - const balances = {} + tvl: async (_, _b, _cb, { api }) => { + const balances = {}; const addressMap = address[api.chain]; - const bnftAssetList = await api.call({ - target: addressMap.BNFTRegistry, - abi: abi.BNFTRegistry.getBNFTAssetList, - }) - - const bnftProxyList = await api.multiCall({ - calls: bnftAssetList, - target: addressMap.BNFTRegistry, - abi: abi.BNFTRegistry.bNftProxys, - }); - const apeStakingStakedTotal = await api.multiCall({ - calls: bnftProxyList, - target: addressMap.ApeCoinStaking, - abi: abi.ApeCoinStaking.stakedTotal, - }) - apeStakingStakedTotal.forEach((d) => + const nftList = [addressMap.BAYC, addressMap.MAYC, addressMap.BAKC]; + + const [stakedTotal, apeCoinBalance, nftBalance] = await Promise.all([ + api.multiCall({ + calls: [ + // v1 + addressMap.BoundBAYC, + addressMap.BoundMAYC, + addressMap.BoundBAKC, + // v2 + addressMap.BendStakeManager, + addressMap.NftVault, + ], + target: addressMap.ApeCoinStaking, + abi: abi.ApeCoinStaking.stakedTotal, + }), + api.multiCall({ + calls: [ + // v1 + addressMap.BoundBAYC, + addressMap.BoundMAYC, + addressMap.BoundBAKC, + // v2 + addressMap.BendCoinPool, + addressMap.BendNftPool, + ], + target: addressMap.ApeCoin, + abi: "erc20:balanceOf", + }), + api.multiCall({ + calls: nftList.map((nft) => ({ + target: nft, + params: [addressMap.NftVault], + })), + abi: abi.ERC721.balanceOf, + }), + ]); + + stakedTotal.forEach((d) => sdk.util.sumSingleBalance(balances, addressMap.ApeCoin, d, api.chain) ); - return balances - } - } -} \ No newline at end of file + apeCoinBalance.forEach((d) => + sdk.util.sumSingleBalance(balances, addressMap.ApeCoin, d, api.chain) + ); + + nftBalance.forEach((d, i) => { + sdk.util.sumSingleBalance(balances, nftList[i], d, api.chain); + }); + + return balances; + }, + }, +}; diff --git a/projects/benddao/helper/abis/ERC721.json b/projects/benddao/helper/abis/ERC721.json new file mode 100644 index 0000000000..6db3f7d30a --- /dev/null +++ b/projects/benddao/helper/abis/ERC721.json @@ -0,0 +1,3 @@ +{ + "balanceOf": "function balanceOf(address account) view returns (uint256)" +} diff --git a/projects/benddao/helper/abis/index.js b/projects/benddao/helper/abis/index.js index 2fb7077640..cc67db36b6 100644 --- a/projects/benddao/helper/abis/index.js +++ b/projects/benddao/helper/abis/index.js @@ -1,9 +1,11 @@ const UiPoolDataProvider = require("./UiPoolDataProvider.json"); const ApeCoinStaking = require("./ApeCoinStaking.json"); const BNFTRegistry = require("./BNFTRegistry.json"); +const ERC721 = require("./ERC721.json"); module.exports = { UiPoolDataProvider, ApeCoinStaking, BNFTRegistry, + ERC721, }; diff --git a/projects/benddao/helper/address.js b/projects/benddao/helper/address.js index 5196abd028..f87ac5cec5 100644 --- a/projects/benddao/helper/address.js +++ b/projects/benddao/helper/address.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../../helper/coreAssets.json') +const ADDRESSES = require("../../helper/coreAssets.json"); module.exports = { ethereum: { UiPoolDataProvider: "0x5250cCE48E43AB930e45Cc8E71C87Ca4B51244cf", @@ -12,5 +12,15 @@ module.exports = { USDC: ADDRESSES.ethereum.USDC, ApeCoin: "0x4d224452801ACEd8B2F0aebE155379bb5D594381", BNFTRegistry: "0x79d922DD382E42A156bC0A354861cDBC4F09110d", + BendStakeManager: "0x9d1833becb105405a8305F775F0aF3157d12B33c", + NftVault: "0xaAa2DA255DF9Ee74C7075bCB6D81f97940908A5D", + BendCoinPool: "0x86862445f58F50382c421a7bceCBcd971cc25367", + BendNftPool: "0x9Da9571389BA2316ad98f695210aD5fB0363cDEd", + BAYC: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", + MAYC: "0x60E4d786628Fea6478F785A6d7e704777c86a7c6", + BAKC: "0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623", + BoundBAYC: "0xDBfD76AF2157Dc15eE4e57F3f942bB45Ba84aF24", + BoundMAYC: "0x69f37e419bD1457d2a25ed3f5d418169caAe8D1F", + BoundBAKC: "0xcF2CC4994Fe9E411A6aDC30d0A11f20CD4D8d2aB", }, }; From 9a30d492767c1dcd40a9f9140a89d3bfa880fd04 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 May 2023 18:03:17 +0200 Subject: [PATCH 0569/1354] thellamas treasury: include convex tvl --- projects/helper/unwrapLPs.js | 11 +++++++++++ projects/treasury/thellamas.js | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index e3ee50c1d4..9fc5a21ca6 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -528,6 +528,16 @@ async function genericUnwrapCvxDeposit({ api, owner, token, balances }) { return balances } +async function genericUnwrapCvxRewardPool({ api, owner, pool, balances }) { + if (!balances) balances = await api.getBalances() + const [bal, cToken] = await api.batchCall([ + { target: pool, params: owner, abi: 'erc20:balanceOf' }, + { target: pool, abi: 'address:stakingToken' }, + ]) + sdk.util.sumSingleBalance(balances, cToken, bal, api.chain) + return balances +} + async function unwrapLPsAuto({ api, balances, block, chain = "ethereum", transformAddress, excludePool2 = false, onlyPool2 = false, pool2Tokens = [], blacklistedLPs = [], abis = {}, }) { if (api) { chain = api.chain ?? chain @@ -830,6 +840,7 @@ module.exports = { unwrapBalancerToken, sumTokensExport, genericUnwrapCvxDeposit, + genericUnwrapCvxRewardPool, unwrapMakerPositions, unwrap4626Tokens, unwrapConvexRewardPools, diff --git a/projects/treasury/thellamas.js b/projects/treasury/thellamas.js index 55015aac31..8833048b20 100644 --- a/projects/treasury/thellamas.js +++ b/projects/treasury/thellamas.js @@ -1,9 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); +const { mergeExports } = require('../helper/utils'); +const { genericUnwrapCvxRewardPool } = require('../helper/unwrapLPs') const Treasury = "0x73eb240a06f0e0747c698a219462059be6aaccc8"; -module.exports = treasuryExports({ +module.exports = mergeExports([treasuryExports({ ethereum: { tokens: [ nullAddress, @@ -11,8 +13,17 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.CVX, "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", "0x7f50786A0b15723D741727882ee99a0BF34e3466", + "0x0148CF564318272c2Bad048488F90dF4e3769f32", "0x9aE380F0272E2162340a5bB646c354271c0F5cFC" ], owners: [Treasury], + ownTokens: ['0xe127ce638293fa123be79c25782a5652581db234'], }, -}) \ No newline at end of file +}), { + ethereum: { + tvl: async (_, _1, _2, { api }) => { + await genericUnwrapCvxRewardPool({ api, owner: Treasury, pool: '0x39D78f11b246ea4A1f68573c3A5B64E83Cff2cAe'}) + return api.getBalances() + } + } +}]) \ No newline at end of file From 877b9c96ecd1acc6e864e6f9ee251bd8301d18ed Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 May 2023 19:32:04 +0200 Subject: [PATCH 0570/1354] add tai.money --- projects/tai-money/index.js | 31 +++++++++++++++++++++++++++++++ utils/formatAbis.js | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 projects/tai-money/index.js diff --git a/projects/tai-money/index.js b/projects/tai-money/index.js new file mode 100644 index 0000000000..8691301bbc --- /dev/null +++ b/projects/tai-money/index.js @@ -0,0 +1,31 @@ +const { sumTokens2 } = require('../helper/unwrapLPs'); + +const config = { + ethereum: { + coinJoins: { + "GEB_JOIN_ETH_A": "0xf6c35af06ed2d97f62b31d7030370f8ae33bd3b1", + "GEB_JOIN_ETH_B": "0xa822e24f944127f445d8ad30adcddd721a5616e9", + "GEB_JOIN_ETH_C": "0x793a0de4db6f96cf30d371ef28278496b66223f8", + "GEB_JOIN_WSTETH_A": "0x5d527c9641effeb3802f2ffafdd15a1b95e41c8c", + "GEB_JOIN_WSTETH_B": "0x9e240daf92dd0edf903def1ff1dd036ca447aaf7", + "GEB_JOIN_RETH_A": "0xf4e8267f05cf1ead340ac7f2bff343528526f16b", + "GEB_JOIN_RETH_B": "0x7daedd26e1202897c9c6bf3967fb5ae45616aef5", + "GEB_JOIN_RAI_A": "0x67b97de3f10ad081fbddf36099699d5ab488828e", + "GEB_JOIN_CBETH_A": "0x10ff8d4376798f920fae147f109157fa6b9a985b", + "GEB_JOIN_CBETH_B": "0xb4941d2a62421adc6ce939cb466f884535bfbff9", + }, + }, +} + +module.exports = {} + +Object.keys(config).forEach(chain => { + let { coinJoins } = config[chain] + coinJoins = Object.values(coinJoins) + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const tokens = await api.multiCall({ abi: 'address:collateral', calls: coinJoins }) + return sumTokens2({ api, tokensAndOwners2: [tokens, coinJoins]}) + } + } +}) \ No newline at end of file diff --git a/utils/formatAbis.js b/utils/formatAbis.js index fea67dab82..afc7e52fc4 100644 --- a/utils/formatAbis.js +++ b/utils/formatAbis.js @@ -91,7 +91,7 @@ function print() { } console.log(res) res = transform(res) - fs.writeFileSync(__dirname+'/../projects/test/abi.js', JSON.stringify(res, null, 2)) + fs.writeFileSync(__dirname+'/../projects/test/abi.json', JSON.stringify(res, null, 2)) // console.log(res) console.log(JSON.stringify(res, null, 2)) } From 2f44e4cabf7914d53636c6aa4293d464e63b9a3a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 29 May 2023 19:12:35 +0100 Subject: [PATCH 0571/1354] update calculation to totalsupply*getrate --- projects/swell/index.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/projects/swell/index.js b/projects/swell/index.js index e37c909255..0a97b03fd2 100644 --- a/projects/swell/index.js +++ b/projects/swell/index.js @@ -2,8 +2,13 @@ const { nullAddress } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => ({ - [nullAddress]: await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:totalETHDeposited'}) - }) + tvl: async (_, _1, _2, { api }) => { + const totalSupply = await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:totalSupply'}); + const rate = await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:getRate'}); + + return { + [nullAddress]: (totalSupply * rate)/1e18 + }; + } } -} \ No newline at end of file +}; From 819b45cf28303de5dc96491f661046b634f1314e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 00:12:36 +0530 Subject: [PATCH 0572/1354] Mantisswap (#6411) * Added polygon_zkevm chain to Mantis Swap * code refactor --------- Co-authored-by: Oogway --- projects/MantisSwap/index.js | 49 ++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/projects/MantisSwap/index.js b/projects/MantisSwap/index.js index 4a2e75be5f..439b3c14a5 100644 --- a/projects/MantisSwap/index.js +++ b/projects/MantisSwap/index.js @@ -1,33 +1,26 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); -const tokenDict = { - "0x62Ba5e1AB1fa304687f132f67E35bFC5247166aD": [ - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.DAI, - ], -}; - -async function getTotalAssets(pool, api) { - const tokens = tokenDict[pool]; - const owners = await api.multiCall({ - abi: "function tokenLPs(address) view returns (address)", - calls: tokens, - target: pool, - }); - return tokens.map((val, i) => [val, owners[i]]); +const config = { + polygon: { vaults: ['0x62Ba5e1AB1fa304687f132f67E35bFC5247166aD'] }, + polygon_zkevm: { vaults: ['0x12d41b6DF938C739F00c392575e3FD9292d98215'] }, } -async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { - const totalAssets = ( - await Promise.all(Object.keys(tokenDict).map((i) => getTotalAssets(i, api))) - ).flat(); - return sumTokens2({ api, tokensAndOwners: totalAssets }); -} +const MAX_LP_TOKENS = 3 -module.exports = { - polygon: { - tvl, - }, -}; +Object.keys(config).forEach(chain => { + const { vaults } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const calls = vaults.map(vault => { + let res = [] + for (let i = 0; i < MAX_LP_TOKENS; i++) + res.push({ target: vault, params: i }) + return res + }).flat() + let lpVaults = await api.multiCall({ abi: 'function lpList(uint256) view returns (address)', calls, permitFailure: true }) + lpVaults = lpVaults.filter(v => v) + const tokens = await api.multiCall({ abi: 'address:underlier', calls: lpVaults }) + return sumTokens2({ api, tokensAndOwners2: [tokens, lpVaults] }) + } + } +}) From 7cf4b73d20c5ebb562535613a3448b4d38680937 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 May 2023 20:50:10 +0200 Subject: [PATCH 0573/1354] resolve LP for kimberlite --- projects/helper/utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/utils.js b/projects/helper/utils.js index 40dc19ab9c..c34c73af68 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -54,6 +54,7 @@ function isLP(symbol, token, chain) { if (token && blacklisted_LPS.includes(token.toLowerCase()) || symbol.includes('HOP-LP-')) return false if (chain === 'bsc' && ['OLP', 'DLP', 'MLP', 'LP'].includes(symbol)) return false if (chain === 'bsc' && ['WLP', 'FstLP', 'BLP',].includes(symbol)) return true + if (chain === 'pulse' && ['PLP',].includes(symbol)) return true if (chain === 'avax' && ['ELP', 'EPT', 'CRL', 'YSL', 'BGL', 'PLP'].includes(symbol)) return true if (chain === 'ethereum' && ['SSLP'].includes(symbol)) return true if (chain === 'polygon' && ['WLP', 'FLP'].includes(symbol)) return true From bdc9adec727e1258016d8833d9aa582ad11e7288 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 May 2023 21:41:21 +0200 Subject: [PATCH 0574/1354] add tezos dex: dexter --- projects/dexter-tezos/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/dexter-tezos/index.js diff --git a/projects/dexter-tezos/index.js b/projects/dexter-tezos/index.js new file mode 100644 index 0000000000..2aecf25d30 --- /dev/null +++ b/projects/dexter-tezos/index.js @@ -0,0 +1,18 @@ +const { sumTokensExport } = require('../helper/sumTokens') + +module.exports = { + tezos: { + tvl: sumTokensExport({ + owners: [ + 'KT1Puc9St8wdNoGtLiD2WXaHbWU7styaxYhD', + 'KT1Tr2eG3eVmPRbymrbU2UppUmKjFPXomGG9', + 'KT1DrJV8vhkdLEj76h1H9Q4irZDqAkMPo1Qf', + 'KT1BGQR7t4izzKZ7eRodKWTodAsM23P38v7N', + 'KT1Xf2Cwwwh67Ycu7E9yd3UhsABQC4YZPkab', + 'KT1AbYeDbjjcAnV1QK7EZUUdqku77CdkTuv6', + 'KT19c8n5mWrqpxMcR3J687yssHxotj88nGhZ', + 'KT1PDrBE59Zmxnb8vXRgRAG1XmvTMTs5EDHU', + ] + }), + } +} \ No newline at end of file From 255debb679a35a905514b2c3380a8d18b1cadfa9 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 30 May 2023 00:06:25 +0100 Subject: [PATCH 0575/1354] flag liquidity managers as doublecounted --- projects/antfarm-finance/index.js | 1 + projects/ichifarm/index.js | 1 + projects/range/index.js | 1 + 3 files changed, 3 insertions(+) diff --git a/projects/antfarm-finance/index.js b/projects/antfarm-finance/index.js index 935e8033e2..cbcef8f0b5 100644 --- a/projects/antfarm-finance/index.js +++ b/projects/antfarm-finance/index.js @@ -11,6 +11,7 @@ const ethereum_staking = "0x6142b36B3dD1812993C2ecaa300b962A7Da0A900"; module.exports = { misrepresentedTokens: true, + doublecounted: true, }; Object.keys(config).forEach((chain) => { diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index 3377cd7f13..aae4553e78 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -216,6 +216,7 @@ async function polygonTvl(_, _b, { polygon: block }){ module.exports = { methodology: "Tokens deposited to mint oneTokens excluding oneTokens , Vault deposits", misrepresentedTokens: true, + doublecounted: true, ethereum: { tvl, pool2: async (_, block) => { diff --git a/projects/range/index.js b/projects/range/index.js index 28e4cb27e3..c4254faff6 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -10,6 +10,7 @@ const config = { module.exports = { methodology: 'assets deployed on DEX as LP + asset balance of vaults', + doublecounted: true, start: 1683965157, }; From 62a40d7afdc3c680973817fff7c1d3d84fe7567b Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 30 May 2023 00:48:35 +0100 Subject: [PATCH 0576/1354] houdiniswap --- projects/houdiniswap/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/houdiniswap/index.js diff --git a/projects/houdiniswap/index.js b/projects/houdiniswap/index.js new file mode 100644 index 0000000000..837ba71d33 --- /dev/null +++ b/projects/houdiniswap/index.js @@ -0,0 +1,15 @@ +const { stakings } = require("../helper/staking") + +module.exports={ + ethereum:{ + tvl:()=>({}), + staking: stakings([ + "0x488B813ED84aB52857cA90ade050f8ca126bEda6", + "0xf9FA02cC165dBd70fF34d27b5AC9E0AE6D74D756", + "0xE42aDCB4B9F2e3E6acb70399c420Cb6D6795B09d", + "0xE3507B38342CCB9Aa03E5AF2deA6C1F54351F553", + "0xf7E1edF3E4EC64360aFB739EBD2c0F40A5CC57D3", + "0x979a7307Dd7Ba386b52F08a9A35a26807affbCC9" + ], "0x888cea2bbdd5d47a4032cf63668d7525c74af57a") + } +} \ No newline at end of file From 3caa2ea8f4789ea207b01afc82b5d5a4db5f2e79 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 10:07:05 +0200 Subject: [PATCH 0577/1354] add hallmark to ede --- projects/El-Dorado-Exchange/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/El-Dorado-Exchange/index.js b/projects/El-Dorado-Exchange/index.js index c5749bb21f..6ed3b8f509 100644 --- a/projects/El-Dorado-Exchange/index.js +++ b/projects/El-Dorado-Exchange/index.js @@ -28,4 +28,7 @@ module.exports = { }, ]) }, + hallmarks: [ + [Math.floor(new Date('2023-05-30')/1e3), 'Protocol was hacked!'], + ], } From 82d64268c3ae4ac1d40b3b7cddd235c75183548e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 13:49:30 +0530 Subject: [PATCH 0578/1354] Steer (#6402) * feat: :sparkles: Initial TVL integration Will support first 1000 vaults on polygon, using steerprotocol subgraph * feat: :sparkles: Include Arbitrum Includes Arbitrum vault addresses to scrape for token amounts * code refactor --------- Co-authored-by: Brandon --- projects/steer/index.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 projects/steer/index.js diff --git a/projects/steer/index.js b/projects/steer/index.js new file mode 100644 index 0000000000..eb77119f49 --- /dev/null +++ b/projects/steer/index.js @@ -0,0 +1,35 @@ +const { getLogs } = require('../helper/cache/getLogs') +const config = { + polygon: { registry: '0x24825b3c44742600d3995d1d3760ccee999a7f0b', fromBlock: 41535540, }, + arbitrum: { registry: '0x9f5b097AD23e2CF4F34e502A3E41D941678877Dc', fromBlock: 88698956, }, + optimism: { registry: '0xC1Ecd10398A6D7036CceE1f50551ff169715081c', fromBlock: 96971465, }, +} + +module.exports = {}; + +Object.keys(config).forEach(chain => { + const { registry, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: registry, + topic: "VaultCreated(address,address,string,uint256,address)", + eventAbi: 'event VaultCreated(address deployer, address vault, string beaconName, uint256 indexed tokenId, address vaultManager)', + onlyArgs: true, + fromBlock, + }) + const vaults = logs.map(log => log.vault) + const bals = await api.multiCall({ abi: "function getTotalAmounts() view returns (uint256 total0, uint256 total1)", calls: vaults, permitFailure: true, }) + const token0s = await api.multiCall({ abi: "address:token0", calls: vaults, permitFailure: true, }) + const token1s = await api.multiCall({ abi: "address:token1", calls: vaults, permitFailure: true, }) + bals.forEach((bal, i) => { + const token0 = token0s[i] + const token1 = token1s[i] + if (!bal || !token0 || !token1) return // skip failures + api.add(token0, bal.total0) + api.add(token1, bal.total1) + }) + } + } +}) \ No newline at end of file From c715e99962856413475e81a1346907df1441ee56 Mon Sep 17 00:00:00 2001 From: HHK <80489471+HHK-ETH@users.noreply.github.com> Date: Tue, 30 May 2023 10:20:31 +0200 Subject: [PATCH 0579/1354] feat: add thundercore deployement (#6412) --- projects/sushiswap-v3/index.js | 74 ++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js index d53f57dd11..9dea5ba634 100644 --- a/projects/sushiswap-v3/index.js +++ b/projects/sushiswap-v3/index.js @@ -1,19 +1,61 @@ -const { uniV3Export } = require('../helper/uniswapV3') +const { uniV3Export } = require("../helper/uniswapV3"); module.exports = uniV3Export({ - ethereum: { factory: '0xbACEB8eC6b9355Dfc0269C18bac9d6E2Bdc29C4F', fromBlock: 16955547, }, - arbitrum: { factory: '0x1af415a1EbA07a4986a52B6f2e7dE7003D82231e', fromBlock: 75998697, }, - optimism: { factory: '0x9c6522117e2ed1fE5bdb72bb0eD5E3f2bdE7DBe0', fromBlock: 85432013, }, - polygon: { factory: '0x917933899c6a5F8E37F31E19f92CdBFF7e8FF0e2', fromBlock: 41024971, }, - arbitrum_nova: { factory: '0xaa26771d497814e81d305c511efbb3ced90bf5bd', fromBlock: 4242300, }, - avax: { factory: '0x3e603C14aF37EBdaD31709C4f848Fc6aD5BEc715', fromBlock: 28186391 , }, - bsc: { factory: '0x126555dd55a39328F69400d6aE4F782Bd4C34ABb', fromBlock: 26976538 , }, - fantom: { factory: '0x7770978eED668a3ba661d51a773d3a992Fc9DDCB', fromBlock: 58860670 , }, - fuse: { factory: '0x1b9d177CcdeA3c79B6c8F40761fc8Dc9d0500EAa', fromBlock: 22556035 , }, - xdai: { factory: '0xf78031CBCA409F2FB6876BDFDBc1b2df24cF9bEf', fromBlock: 27232871, }, - moonbeam: { factory: '0x2ecd58F51819E8F8BA08A650BEA04Fc0DEa1d523', fromBlock: 3264275, }, - moonriver: { factory: '0x2F255d3f3C0A3726c6c99E74566c4b18E36E3ce6', fromBlock: 3945310, }, + ethereum: { + factory: "0xbACEB8eC6b9355Dfc0269C18bac9d6E2Bdc29C4F", + fromBlock: 16955547, + }, + arbitrum: { + factory: "0x1af415a1EbA07a4986a52B6f2e7dE7003D82231e", + fromBlock: 75998697, + }, + optimism: { + factory: "0x9c6522117e2ed1fE5bdb72bb0eD5E3f2bdE7DBe0", + fromBlock: 85432013, + }, + polygon: { + factory: "0x917933899c6a5F8E37F31E19f92CdBFF7e8FF0e2", + fromBlock: 41024971, + }, + arbitrum_nova: { + factory: "0xaa26771d497814e81d305c511efbb3ced90bf5bd", + fromBlock: 4242300, + }, + avax: { + factory: "0x3e603C14aF37EBdaD31709C4f848Fc6aD5BEc715", + fromBlock: 28186391, + }, + bsc: { + factory: "0x126555dd55a39328F69400d6aE4F782Bd4C34ABb", + fromBlock: 26976538, + }, + fantom: { + factory: "0x7770978eED668a3ba661d51a773d3a992Fc9DDCB", + fromBlock: 58860670, + }, + fuse: { + factory: "0x1b9d177CcdeA3c79B6c8F40761fc8Dc9d0500EAa", + fromBlock: 22556035, + }, + xdai: { + factory: "0xf78031CBCA409F2FB6876BDFDBc1b2df24cF9bEf", + fromBlock: 27232871, + }, + moonbeam: { + factory: "0x2ecd58F51819E8F8BA08A650BEA04Fc0DEa1d523", + fromBlock: 3264275, + }, + moonriver: { + factory: "0x2F255d3f3C0A3726c6c99E74566c4b18E36E3ce6", + fromBlock: 3945310, + }, // boba: { factory: '0x0BE808376Ecb75a5CF9bB6D237d16cd37893d904', fromBlock: 998556, }, - polygon_zkevm: { factory: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506', fromBlock: 80860, }, -}) - + polygon_zkevm: { + factory: "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506", + fromBlock: 80860, + }, + thundercore: { + factory: "0xc35dadb65012ec5796536bd9864ed8773abc74c4", + fromBlock: 132536332, + }, +}); From 75cedf81df7cad0fc09b64a471539bda9330f282 Mon Sep 17 00:00:00 2001 From: Drew <89287674+dewpe@users.noreply.github.com> Date: Tue, 30 May 2023 12:26:29 +0400 Subject: [PATCH 0580/1354] RH: Add bridge protection contracts (#6413) * added arbitrum vaultManager addr * removed auto prettier changes * added bridge protection dest contracts --- projects/risk-harbor/index.js | 56 +++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js index 31044b78ca..9cb5e9b0e8 100644 --- a/projects/risk-harbor/index.js +++ b/projects/risk-harbor/index.js @@ -53,6 +53,22 @@ const networks = { ADDRESSES.arbitrum.USDC, "0x2DafE4DD7C661c2CEaf967d51206f5130AA32782", ], + [ + ADDRESSES.arbitrum.USDC, + "0xdd74ee6c6568429537bf30cb63dab0061b83c41a" + ], + [ + ADDRESSES.arbitrum.USDC, + "0xc7c52aa35d499e0c18ff3854f24e65d43c97d5a4" + ], + [ + ADDRESSES.arbitrum.USDC, + "0x695d803207579bb4f34c97ab3e3a449de8ad042e" + ], + [ + ADDRESSES.arbitrum.USDC, + "0x451709e54474a7a7df889e98124180847782cb4a" + ] ], }, avax: { @@ -100,8 +116,45 @@ const networks = { ADDRESSES.optimism.USDC, "0xfB969b45Fa9186CD8B420407552aD447F7c3817b", ], + [ + ADDRESSES.optimism.USDC, + "0x88e7385eacf8e31c9cddce7632bfe654b58f4a09", + ], + [ + ADDRESSES.optimism.USDC, + "0x88e7385eacf8e31c9cddce7632bfe654b58f4a09" + ], + [ + ADDRESSES.optimism.USDC, + "0x01bd59477e03d9034684a118ba67cfa32cd9b123" + ], + [ + ADDRESSES.optimism.USDC, + "0xdf9d37e1a19474e5928fb410a3f8513a25ba680c" + ] + ], }, + polygon: { + vaults: [ + [ + ADDRESSES.polygon.USDC, + "0xdf9d37e1a19474e5928fb410a3f8513a25ba680c" + ], + [ + ADDRESSES.polygon.USDC, + "0xadaab38f3ecdf2b486eb3cab7f54bdcbdfb7fd66" + ], + [ + ADDRESSES.polygon.USDC, + "0x4db26943e581c1befaa5d682f6404de17c028487" + ], + [ + ADDRESSES.polygon.USDC, + "0xa644bdf7f0da0b83623ac4d01607ea91a24b1ede" + ] + ] + }, terra: { vaults: [ "terra1dlfz2teqt5shxuw87npfecjtv7xlrxvqd4sapt", // Ozone v1 pool 1 @@ -277,5 +330,8 @@ module.exports = { optimism: { tvl: evm("optimism"), }, + polygon: { + tvl: evm("polygon"), + }, hallmarks: [[1651881600, "UST depeg"]], }; From 9dcbbe04a17ce2b990b91a88bc533ac79d71b485 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 12:12:16 +0200 Subject: [PATCH 0581/1354] add marginx --- projects/helper/chain/cosmos.js | 1 + projects/helper/tokenMapping.js | 8 ++++++-- projects/marginx/index.js | 30 ++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 projects/marginx/index.js diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 5dad34afcb..23d98f29fa 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -23,6 +23,7 @@ const endPoints = { cronos: "https://lcd-crypto-org.cosmostation.io", injective: "https://lcd-injective.whispernode.com:443", migaloo: "https://migaloo-api.polkachu.com", + fxcore: "https://fx-rest.functionx.io", }; const chainSubpaths = { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 260e6f5a39..db9a7cafcf 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -16,7 +16,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList -const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', ] +const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore',] const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui'] const distressedAssts = new Set(Object.values({ @@ -67,7 +67,11 @@ const fixBalancesTokens = { }, era: { '0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181': { coingeckoId: "binance-usd", decimals: 18 }, - } + }, + fxcore: { + 'FX': { coingeckoId: "fx-coin", decimals: 18 }, + 'usdt': { coingeckoId: "tether", decimals: 6 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/marginx/index.js b/projects/marginx/index.js new file mode 100644 index 0000000000..ea552d4893 --- /dev/null +++ b/projects/marginx/index.js @@ -0,0 +1,30 @@ +const { sumTokens } = require('../helper/chain/cosmos') +const { getConfig } = require('../helper/cache'); +const bech32 = require('bech32'); +const { ethers } = require("ethers"); + +const toChecksumAddress = (address) => { + return ethers.utils.getAddress(address) +}; + +function bech32ToEthereum(bech32Address) { + const { prefix, words } = bech32.decode(bech32Address); + const data = bech32.fromWords(words); + const hex = Buffer.from(data).toString('hex'); + const ethereumAddress = toChecksumAddress(`0x${hex}`); + return ethereumAddress; +} + +async function tvl(_, _b, _cb, { api, }) { + const { data: chainInfo} = await getConfig('marginxConfig', 'https://api.marginx.io/settings/cross/chains') + const owners = chainInfo.map(i => i.ibcAddress) + return sumTokens({ chain: 'fxcore', owners }) + // const owners = chainInfo.map(i => bech32ToEthereum(i.ibcAddress)) + // return sumTokens2({ api, owners, tokens: [ADDRESSES.null, ADDRESSES.functionx.USDT], }) +} + +module.exports = { + functionx: { + tvl + }, +}; From cf546576a839a342570f5be59b23dbb8a89817c0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 12:58:42 +0200 Subject: [PATCH 0582/1354] pancakeswap v3: fix --- projects/pancakeswap-v3/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index 4a617c692a..a39991647a 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -4,6 +4,8 @@ module.exports = uniV3Export({ bsc: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 26956207, blacklistedTokens: [ '0x860368babf32129c18306a70ce7db10c5b437072', '0xc476d3961f77645464acccce404eb17815a80878', + '0xf8c7f403829cc0f9a37f126a3da41358c232acdf', + '0x95e7c70b58790a1cbd377bc403cd7e9be7e0afb1', ] }, ethereum: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 16950685, }, }) From cbdfe883c5cc4e0c8e93e9664f6637582072d2f9 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 30 May 2023 14:22:07 +0100 Subject: [PATCH 0583/1354] add more tokens treasury bancor --- projects/treasury/bancor.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/treasury/bancor.js b/projects/treasury/bancor.js index 14835e0349..599e0fb0c9 100644 --- a/projects/treasury/bancor.js +++ b/projects/treasury/bancor.js @@ -31,7 +31,19 @@ module.exports = treasuryExports({ "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", "0x6710c63432A2De02954fc0f851db07146a6c0312", ADDRESSES.ethereum.AAVE, - ADDRESSES.ethereum.WBTC + ADDRESSES.ethereum.WBTC, + '0x903bef1736cddf2a537176cf3c64579c3867a881', + '0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6', //ichi + '0x6c6EE5e31d828De241282B9606C8e98Ea48526E2', //hot + '0x275f5Ad03be0Fa221B4C6649B8AeE09a42D9412A', //mona + '0x4a220E6096B25EADb88358cb44068A3248254675', //qnt + '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', //ENS + '0xb9EF770B6A5e12E45983C5D80545258aA38F3B78', //zcn + '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07', //omg + '0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F', //trac + '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', //wsteth + '0x4C2e59D098DF7b6cBaE0848d66DE2f8A4889b9C3', //fodl + '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2', //mkr ], owners: [treasury], ownTokens: [BNT, vBNT], From 44b81a43d9b55e38400ecbda48f3102ee39a080e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 15:25:54 +0200 Subject: [PATCH 0584/1354] fix ease --- projects/ease/index.js | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/projects/ease/index.js b/projects/ease/index.js index 1d662b7de5..a85cd89098 100644 --- a/projects/ease/index.js +++ b/projects/ease/index.js @@ -27,31 +27,17 @@ const ARNXM_VAULT = { address: "0x1337DEF1FC06783D4b03CB8C1Bf3EBf7D0593FC4", } -async function tvl(_, block) { +async function tvl(_, block, _1, { api }) { //get TVL of Uninsurance vaults let resp = await getConfig('ease', VAULT_LIST_URL); - let vaults = resp - const balances = {}; - const { output: bal } = await sdk.api.abi.multiCall({ - abi: RCA_SHIELD.abis.uBalance, - calls: vaults.map(i => ({ target: i.address })), - block, - }) - bal.forEach(({ output}, i) => { - const { decimals, token, address } = vaults[i] - const fixDecimals = 10 ** (decimals - token.decimals) - sdk.util.sumSingleBalance(balances, token.address, BigNumber( output / fixDecimals).toFixed(0)); - }) - + let vaults = resp.map(i => i.address.toLowerCase()).filter(i => i !== '0x8f247eb2d71beeacdf212f8bc748f09cdf7144c0') + const bals = await api.multiCall({ abi: 'uint256:uBalance', calls: vaults }) + const tokens = await api.multiCall({ abi: 'address:uToken', calls: vaults }) + const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) + api.addTokens(tokens, bals.map((v, i) => v / 10 ** (18 - decimals[i]))) //get TVL of arNXM vault - const { output: balNXM } = await sdk.api.abi.call({ - target: ARNXM_VAULT.address, - abi: ARNXM_VAULT.abis.aum, - block, - }); - sdk.util.sumSingleBalance(balances, NXM, balNXM) - - return balances; + const balNXM = await api.call({ target: ARNXM_VAULT.address, abi: ARNXM_VAULT.abis.aum, }); + api.add(NXM, balNXM) } module.exports = { From 84addad4529de8105920b34800c4a9fd53640c27 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 16:00:39 +0200 Subject: [PATCH 0585/1354] fix deltaprime --- projects/deltaprime/mappings/assetToAddressMapping.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/deltaprime/mappings/assetToAddressMapping.json b/projects/deltaprime/mappings/assetToAddressMapping.json index 120d1913a1..420fb12593 100644 --- a/projects/deltaprime/mappings/assetToAddressMapping.json +++ b/projects/deltaprime/mappings/assetToAddressMapping.json @@ -26,5 +26,9 @@ "YY_TJ_AVAX_ETH_LP": "0x5219558ee591b030E075892acc41334A1694fd8A", "YY_TJ_AVAX_sAVAX_LP": "0x22EDe03f1115666CF05a4bAfafaEe8F43D42cD56", "MOO_TJ_AVAX_USDC_LP": "0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c", + "SHLB_BTC.b-AVAX_B": "0x668530302c6Ecc4eBe693ec877b79300AC72527C", + "SHLB_USDT.e-USDt_C": "0x9F44E67BA256C18411Bb041375e572E3dD11fA72", + "USDT.e": "0xc7198437980c041c805a1edcba50c1ce5db95118", + "SHLB_AVAX-USDC_B": "0x668530302c6Ecc4eBe693ec877b79300AC72527C", "GLP": "0x9e295B5B976a184B14aD8cd72413aD846C299660" } \ No newline at end of file From d9a711207d9fee808660330fa239980d7b6586fb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 16:13:05 +0200 Subject: [PATCH 0586/1354] fix sablier --- projects/sablier/index.js | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/projects/sablier/index.js b/projects/sablier/index.js index 8f5f5124e6..2cc460e14e 100644 --- a/projects/sablier/index.js +++ b/projects/sablier/index.js @@ -1,6 +1,7 @@ -const { GraphQLClient, gql } = require('graphql-request') const { sumTokens2 } = require('../helper/unwrapLPs') +const { covalentGetTokens } = require('../helper/http') const { isWhitelistedToken } = require('../helper/streamingHelper') +const { getUniqueAddresses } = require('../helper/utils') const sablierAddresses = { "v1.0.0": "0xA4fc358455Febe425536fd1878bE67FfDBDEC59a", @@ -9,29 +10,36 @@ const sablierAddresses = { const blacklistedTokens = [ '0x57ab1e02fee23774580c119740129eac7081e9d3', // sUSD legacy + '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', + '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', + '0x57ab1e02fee23774580c119740129eac7081e9d3', ] -async function getTokens(isVesting) { - const graphQLClient = new GraphQLClient('https://api.thegraph.com/subgraphs/name/sablierhq/sablier') - var query = gql`{tokens (first: 1000) { id name symbol }}` - const results = await graphQLClient.request(query) - return results.tokens.filter(i => isWhitelistedToken(i.symbol, i.id, isVesting)).map(i => i.id) +async function getTokens(api, isVesting) { + // const graphQLClient = new GraphQLClient('https://api.thegraph.com/subgraphs/name/sablierhq/sablier') + // var query = gql`{tokens (first: 1000) { id name symbol }}` + // const results = await graphQLClient.request(query) + let tokens = (await Promise.all(Object.values(sablierAddresses).map(i => covalentGetTokens(i, 'ethereum')))).flat().filter(i => !blacklistedTokens.includes(i)) + tokens = getUniqueAddresses(tokens) + const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens }) + return tokens.filter((v, i) => isWhitelistedToken(symbols[i], v, isVesting)) } -async function tvl(_, block) { - const tokens = await getTokens(false) - return sumTokens2({ block, owners: Object.values(sablierAddresses), tokens: tokens, blacklistedTokens, }) +async function tvl(_, block, _1, { api }) { + const tokens = await getTokens(api, false) + return sumTokens2({ api, owners: Object.values(sablierAddresses), tokens, blacklistedTokens, }) } -async function vesting(_, block) { - const tokens = await getTokens(true) - return sumTokens2({ block, owners: Object.values(sablierAddresses), tokens: tokens, blacklistedTokens, }) +async function vesting(_, block, _1, { api }) { + const tokens = await getTokens(api, true) + return sumTokens2({ api, owners: Object.values(sablierAddresses), tokens, blacklistedTokens, }) } module.exports = { hallmarks: [ - [Math.floor(new Date('2022-10-03')/1e3), 'Vesting tokens are not included in tvl'], + [Math.floor(new Date('2022-10-03') / 1e3), 'Vesting tokens are not included in tvl'], ], start: 1573582731, + timetravel: false, ethereum: { tvl, vesting, } }; \ No newline at end of file From 26cca502c864e11331ec58c46f7505ada4836623 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Tue, 30 May 2023 17:24:21 +0300 Subject: [PATCH 0587/1354] feat: symbiosis adds polygon zkevm (#6416) --- projects/symbiosis-finance/config.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index cf4c1e089f..f01d992ddb 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -145,5 +145,14 @@ module.exports = { '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, + { + name: 'polygon_zkevm', + tokens: [ + ADDRESSES.polygon_zkevm.USDC, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From e6b16f4870a81bcb5a4b6a121a1597ef9b07326f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 16:41:10 +0200 Subject: [PATCH 0588/1354] sablier: track more chains --- projects/sablier/index.js | 43 ++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/projects/sablier/index.js b/projects/sablier/index.js index 2cc460e14e..56457e4ecd 100644 --- a/projects/sablier/index.js +++ b/projects/sablier/index.js @@ -3,11 +3,6 @@ const { covalentGetTokens } = require('../helper/http') const { isWhitelistedToken } = require('../helper/streamingHelper') const { getUniqueAddresses } = require('../helper/utils') -const sablierAddresses = { - "v1.0.0": "0xA4fc358455Febe425536fd1878bE67FfDBDEC59a", - "v1.1.0": "0xCD18eAa163733Da39c232722cBC4E8940b1D8888", -} - const blacklistedTokens = [ '0x57ab1e02fee23774580c119740129eac7081e9d3', // sUSD legacy '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', @@ -15,24 +10,23 @@ const blacklistedTokens = [ '0x57ab1e02fee23774580c119740129eac7081e9d3', ] -async function getTokens(api, isVesting) { - // const graphQLClient = new GraphQLClient('https://api.thegraph.com/subgraphs/name/sablierhq/sablier') - // var query = gql`{tokens (first: 1000) { id name symbol }}` - // const results = await graphQLClient.request(query) - let tokens = (await Promise.all(Object.values(sablierAddresses).map(i => covalentGetTokens(i, 'ethereum')))).flat().filter(i => !blacklistedTokens.includes(i)) +async function getTokens(api, owners, isVesting) { + let tokens = (await Promise.all(owners.map(i => covalentGetTokens(i, api.chain)))).flat().filter(i => !blacklistedTokens.includes(i)) tokens = getUniqueAddresses(tokens) const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens }) return tokens.filter((v, i) => isWhitelistedToken(symbols[i], v, isVesting)) } async function tvl(_, block, _1, { api }) { - const tokens = await getTokens(api, false) - return sumTokens2({ api, owners: Object.values(sablierAddresses), tokens, blacklistedTokens, }) + const { owners } = config[api.chain] + const tokens = await getTokens(api, owners, false) + return sumTokens2({ api, owners, tokens, blacklistedTokens, }) } async function vesting(_, block, _1, { api }) { - const tokens = await getTokens(api, true) - return sumTokens2({ api, owners: Object.values(sablierAddresses), tokens, blacklistedTokens, }) + const { owners } = config[api.chain] + const tokens = await getTokens(api, owners, true) + return sumTokens2({ api, owners, tokens, blacklistedTokens, }) } module.exports = { @@ -41,5 +35,22 @@ module.exports = { ], start: 1573582731, timetravel: false, - ethereum: { tvl, vesting, } -}; \ No newline at end of file +}; + +const config = { + ethereum: { + owners: [ + "0xA4fc358455Febe425536fd1878bE67FfDBDEC59a", // v1.0.0 + "0xCD18eAa163733Da39c232722cBC4E8940b1D8888", // v1.1.0 + ] + }, + arbitrum: { owners: ['0xaDB944B478818d95659067E70D2e5Fc43Fa3eDe9'], }, + avax: { owners: ['0x73f503fad13203C87889c3D5c567550b2d41D7a4'], }, + bsc: { owners: ['0x05BC7f5fb7F248d44d38703e5C921A8c16825161'], }, + optimism: { owners: ['0x6C5927c0679e6d857E87367bb635decbcB20F31c'], }, + polygon: { owners: ['0xAC18EAB6592F5fF6F9aCf5E0DCE0Df8E49124C06'], }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl, vesting } +}) \ No newline at end of file From b06a3b1c6239e47b4c2fa6caa1be92027d28c784 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 May 2023 22:48:34 +0200 Subject: [PATCH 0589/1354] add astaria --- projects/astaria/index.js | 55 +++++++++++++++++++++++++++++++++++++++ projects/sablier/index.js | 12 ++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 projects/astaria/index.js diff --git a/projects/astaria/index.js b/projects/astaria/index.js new file mode 100644 index 0000000000..617c276829 --- /dev/null +++ b/projects/astaria/index.js @@ -0,0 +1,55 @@ +const { getLogs } = require('../helper/cache/getLogs'); +const { sumTokens2 } = require('../helper/unwrapLPs'); + +const config = { + ethereum: { factory: '0x197Bb6Cd6cC9E9ABBFdaBff23DE7435c51d1B7BE', fromBlock: 16935232 , ACT: '0x455ad0f677628ed40e7397fb41818f474e0e5afe' }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, ACT } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x9aa6282003aa425f2bb942f91daaf7080de24835fc4fa8f3f4dc52c7d014ea97'], + eventAbi: 'event NewVault (address strategist, address delegate, address vault, uint8 vaultType)', + onlyArgs: true, + fromBlock, + }) + const actLogs = await getLogs({ + api, + target: ACT, + topics: ['0xd6b6bfb15fe5be5c1a8af879e26df8c0e2470c4ad95a47a1397868b45910e853'], + eventAbi: 'event Deposit721 (address indexed tokenContract, uint256 indexed tokenId, uint256 indexed collateralId, address depositedFor)', + onlyArgs: true, + fromBlock, + }) + const vaults = logs.map(l => l.vault) + const nfts = actLogs.map(l => l.tokenContract) + const collIds = actLogs.map(l => l.collateralId) + const clearingHouses = await api.multiCall({ abi: "function getClearingHouse(uint256 collateralId) view returns (address)", calls: collIds.map(i => i.toString()), target:ACT}) + const tokensAndOwners = nfts.map((v, i) => [v, clearingHouses[i]]) + + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults}) + tokens.forEach((t, i) => tokensAndOwners.push([t, vaults[i]])) + return sumTokens2({ api, tokensAndOwners }) + }, + borrowed: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x9aa6282003aa425f2bb942f91daaf7080de24835fc4fa8f3f4dc52c7d014ea97'], + eventAbi: 'event NewVault (address strategist, address delegate, address vault, uint8 vaultType)', + onlyArgs: true, + fromBlock, + }) + const vaults = logs.map(l => l.vault) + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) + const deposited = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults}) + const liquidity = await api.multiCall({ abi: 'erc20:balanceOf', calls: vaults.map((v, i) => ({ target: tokens[i], params: v }))}) + tokens.forEach((token, i) => api.add(token, deposited[i] - liquidity[i])) + }, + } +}) \ No newline at end of file diff --git a/projects/sablier/index.js b/projects/sablier/index.js index 56457e4ecd..7080a22203 100644 --- a/projects/sablier/index.js +++ b/projects/sablier/index.js @@ -1,4 +1,4 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') const { covalentGetTokens } = require('../helper/http') const { isWhitelistedToken } = require('../helper/streamingHelper') const { getUniqueAddresses } = require('../helper/utils') @@ -35,6 +35,16 @@ module.exports = { ], start: 1573582731, timetravel: false, + ronin: { + tvl: sumTokensExport({ + owner: '0xDe9dCc27aa1552d591Fc9B9c21881feE43BD8118', + tokens: [ + '0x0b7007c13325c48911f73a2dad5fa5dcbf808adc', + '0xc99a6a985ed2cac1ef41640596c5a5f9f4e19ef5', + '0x97a9107c1793bc407d6f527b77e7fff4d812bece', + ] + }) + } }; const config = { From e81514176468b68d49ba1beb9c797356dfa35bc9 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 31 May 2023 00:49:23 +0100 Subject: [PATCH 0590/1354] locked cvx --- projects/treasury/thellamas.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/treasury/thellamas.js b/projects/treasury/thellamas.js index 8833048b20..76ecf6b368 100644 --- a/projects/treasury/thellamas.js +++ b/projects/treasury/thellamas.js @@ -11,6 +11,8 @@ module.exports = mergeExports([treasuryExports({ nullAddress, ADDRESSES.ethereum.USDC,//USDC ADDRESSES.ethereum.CVX, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.CRV, "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", "0x7f50786A0b15723D741727882ee99a0BF34e3466", "0x0148CF564318272c2Bad048488F90dF4e3769f32", From 93e0f351d58838365fc087727720c2a519046a50 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 31 May 2023 00:51:37 +0100 Subject: [PATCH 0591/1354] add arbitrum staking to v2.1 --- projects/traderjoe-lb-v2-1/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/traderjoe-lb-v2-1/index.js b/projects/traderjoe-lb-v2-1/index.js index c9521d2101..7dda6cb9d5 100644 --- a/projects/traderjoe-lb-v2-1/index.js +++ b/projects/traderjoe-lb-v2-1/index.js @@ -1,4 +1,5 @@ const { sumTokens2 } = require('../helper/unwrapLPs') +const { staking } = require("../helper/staking.js"); const factories = { avax: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', @@ -33,4 +34,6 @@ module.exports = { Object.keys(factories).forEach(chain => { module.exports[chain] = { tvl } -}) \ No newline at end of file +}) + +module.exports.arbitrum.staking = staking("0x43646A8e839B2f2766392C1BF8f60F6e587B6960", "0x371c7ec6D8039ff7933a2AA28EB827Ffe1F52f07", "arbitrum") \ No newline at end of file From 21ffaec5a684e8e0144b73e34fa647760e60fe82 Mon Sep 17 00:00:00 2001 From: Rentero Date: Wed, 31 May 2023 13:33:54 +0800 Subject: [PATCH 0592/1354] ADD:letsfil --- projects/letsfil/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/letsfil/index.js diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js new file mode 100644 index 0000000000..b52903f49e --- /dev/null +++ b/projects/letsfil/index.js @@ -0,0 +1,24 @@ +const sdk = require('@defillama/sdk'); +const LETSFIL_CONTRACT = '0xd08F7A4544a7C21283B4a063ebb53ADFc0506562'; + +async function tvl(_, _1, _2, { api }) { + const balances = {}; + const collateralBalance = await api.call({ + abi: 'function getTvl() external view returns (uint256)', + target: LETSFIL_CONTRACT, + }); + + await sdk.util.sumSingleBalance(balances, LETSFIL_CONTRACT, collateralBalance, api.chain) + return balances; +} + + + +module.exports = { + timetravel: false, + misrepresentedTokens: false, + methodology: 'counts the number of pledge filecoins in the letsfil contract', + filecoin: { + tvl + } +}; From 78ea2980d302c84853795ed21bd7903ff7bcb22b Mon Sep 17 00:00:00 2001 From: Rentero Date: Wed, 31 May 2023 13:46:01 +0800 Subject: [PATCH 0593/1354] FIX:tvl --- projects/letsfil/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js index b52903f49e..efb5fd6616 100644 --- a/projects/letsfil/index.js +++ b/projects/letsfil/index.js @@ -1,15 +1,18 @@ const sdk = require('@defillama/sdk'); +const ADDRESSES = require('../helper/coreAssets.json') const LETSFIL_CONTRACT = '0xd08F7A4544a7C21283B4a063ebb53ADFc0506562'; async function tvl(_, _1, _2, { api }) { - const balances = {}; + const collateralBalance = await api.call({ abi: 'function getTvl() external view returns (uint256)', target: LETSFIL_CONTRACT, }); - await sdk.util.sumSingleBalance(balances, LETSFIL_CONTRACT, collateralBalance, api.chain) - return balances; + // await sdk.util.sumSingleBalance(balances, LETSFIL_CONTRACT, collateralBalance, api.chain) + // return balances; + + api.add(ADDRESSES.null,collateralBalance) } From bc1a6fa414b9cad12d2551f6bf67c6654c46eea9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 31 May 2023 13:32:04 +0530 Subject: [PATCH 0594/1354] Hashmix (#6423) * feat: add hashmix adapter * fix: remove price * fix: tvl * fix: * fix: tvl 0 * fix: tvl * fix: tvl * code refactor --------- Co-authored-by: Kyli Bing --- projects/hashmix/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/hashmix/index.js diff --git a/projects/hashmix/index.js b/projects/hashmix/index.js new file mode 100644 index 0000000000..7bf6d28453 --- /dev/null +++ b/projects/hashmix/index.js @@ -0,0 +1,19 @@ +const POOL = "0x587A7eaE9b461ad724391Aa7195210e0547eD11d"; +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') + +async function tvl(_, _1, _2, { api }) { + const totalBorrows = await api.call({ target: POOL, abi: "uint256:totalBorrows", }); + const totalReserves = await api.call({ target: POOL, abi: "uint256:totalReserves", }); + api.add(nullAddress, totalBorrows) + api.add(nullAddress, totalReserves * -1) + + return sumTokens2({ api, owner: POOL, tokens: [nullAddress]}); +} + +module.exports = { + methodology: + "HashMix FIL Liquid Staking Protocol is a decentralized staking protocol on Filecoin, connecting FIL holders and miners in the ecosystem.", + filecoin: { + tvl, + }, +}; From fa25ef974131f6a73cc814254953a455dda81d80 Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 31 May 2023 01:06:07 -0700 Subject: [PATCH 0595/1354] Update GLIF tvl project post-launch (#6417) * Update GLIF tvl project post-launch * Fix type error --- projects/glif/index.js | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/projects/glif/index.js b/projects/glif/index.js index ae3fbb067c..2744e17f6a 100644 --- a/projects/glif/index.js +++ b/projects/glif/index.js @@ -1,15 +1,37 @@ +const { BigNumber } = require("@ethersproject/bignumber"); const { nullAddress } = require("../helper/tokenMapping"); +const { get } = require("../helper/http"); -const IFIL_TOKEN_CONTRACT = "0x690908f7fa93afC040CFbD9fE1dDd2C2668Aa0e0"; - -async function tvl(_, _1, _2, { api }) { - api.add(nullAddress, await api.call({ abi: "erc20:totalSupply", target: IFIL_TOKEN_CONTRACT, })) -} +const INFINITY_POOL_CONTRACT = "0x43dAe5624445e7679D16a63211c5ff368681500c"; // pool address +const totalAssetsABI = "function totalAssets() view returns (uint256)"; +const totalBorrowedABI = "function totalBorrowed() view returns (uint256)"; module.exports = { methodology: - "The Infinity Pool is accepting early depositers by minting 1 iFIL token per 1 FIL deposited. This adapter returns the total supply of iFIL tokens, representing the total amount of FIL and WFIL deposited into the early deposit contract.", + "The GLIF Pools protocol is a liquid staking protocol for Filecoin that requires borrowers to collateralize FIL in order to borrow for their storage providing operation. This TVL calculation adds the total amount of FIL staked into the protocol, and the total amount of locked FIL collateral by borrowers, to arrive at TVL.", filecoin: { - tvl, + tvl: async (_, _1, _2, { api }) => { + const [totalAssets, totalIssued, totalLockedByMiners] = await Promise.all([ + api.call({ abi: totalAssetsABI, target: INFINITY_POOL_CONTRACT }), + api.call({ abi: totalBorrowedABI, target: INFINITY_POOL_CONTRACT }), + // this call is too costly to perform on chain in this environment, + // we wrapped the locked miners collateral in a server that derives the information directly on-chain + // but serves it in a more efficient manner to not overload defillama frontend + // github repo: https://github.com/glifio/pools-metrics + get("https://pools-metrics.vercel.app/api/v0/miner-collaterals"), + ]); + + const totalAssetsBN = BigNumber.from(totalAssets) + const totalIssuedBN = BigNumber.from(totalIssued) + const totalLockedByMinersBN = BigNumber.from(totalLockedByMiners.totalMinerCollaterals) + + // first we remove the totalIssued by the Pool from its totalAssets, to avoid double counting in the next step + const totalAssetsMinusIssued = totalAssetsBN.sub(totalIssuedBN); + // then we add the totalLockedByMiners to the totalAssets, to account for the FIL locked by miners as borrow collateral + // this gets our tvl in attoFIL (wei denominated) without double counting + const tvl = totalAssetsMinusIssued.add(totalLockedByMinersBN).toString(); + + api.add(nullAddress, tvl) + }, }, }; From 7fb773b7f36d5fed94933d0e256c8cf25cb02472 Mon Sep 17 00:00:00 2001 From: touristversion2 <106364721+touristversion2@users.noreply.github.com> Date: Wed, 31 May 2023 15:09:41 +0700 Subject: [PATCH 0596/1354] SUI - TVL of BaySwap (#6418) --- projects/bayswap/index.js | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 projects/bayswap/index.js diff --git a/projects/bayswap/index.js b/projects/bayswap/index.js new file mode 100644 index 0000000000..f87d419bd6 --- /dev/null +++ b/projects/bayswap/index.js @@ -0,0 +1,40 @@ +const { dexExport } = require('../helper/chain/sui'); + +const enrichPrefixZero = (type_) => { + const parts = type_.split('::'); + if (parts.length !== 3) { + return parts.join('::'); + } + if (parts[0].length === 65) { + parts[0] = '0x0' + parts[0].slice(2); + } + + return parts.join('::'); +}; + +const parsingPoolTypes = (types_) => { + const t = types_.substring(types_.lastIndexOf('<') + 1, types_.lastIndexOf('>')); + const slice = t.replaceAll(' ', '').split(','); + if (slice.length < 3) { + throw new Error('invalid pool type'); + } + + return { + coinXType: enrichPrefixZero(slice[0]), + coinYType: enrichPrefixZero(slice[1]), + curveType: enrichPrefixZero(slice[2]), + }; +}; + +const getTokens = (pool) => { + const {coinXType, coinYType} = parsingPoolTypes(pool.type) + return [coinXType, coinYType] +}; + +module.exports = dexExport({ + account: '0x72b55bab9064f458451ccf0157e2e0317bcd9b210476b9954081c44ee07b7702', + poolStr: 'liquidity_pool::LiquidityPool', + token0Reserve: i => i.fields.coin_x_reserve, + token1Reserve: i => i.fields.coin_y_reserve, + getTokens +}); From f5c2d3c4f3a28b959d43b0851cf74b1ca8016170 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 31 May 2023 15:17:52 +0530 Subject: [PATCH 0597/1354] refactor sio2 (#6424) * refactor sio2 * refactor starlay * refactore more aave forks --- projects/mensa/abi.json | 14 ----- projects/mensa/index.js | 78 +------------------------- projects/sio2/abi.json | 14 ----- projects/sio2/constants.js | 39 ------------- projects/sio2/index.js | 58 +++---------------- projects/sio2/sio2.js | 101 ---------------------------------- projects/sio2/utils.js | 11 ---- projects/starlay/abi.json | 14 ----- projects/starlay/constants.js | 53 ------------------ projects/starlay/index.js | 86 ++++------------------------- projects/starlay/starlay.js | 96 -------------------------------- projects/starlay/utils.js | 11 ---- projects/starlay/ve.js | 21 ------- projects/xensa/abi.json | 14 ----- projects/xensa/index.js | 46 +++------------- 15 files changed, 27 insertions(+), 629 deletions(-) delete mode 100644 projects/mensa/abi.json delete mode 100644 projects/sio2/abi.json delete mode 100644 projects/sio2/constants.js delete mode 100644 projects/sio2/sio2.js delete mode 100644 projects/sio2/utils.js delete mode 100644 projects/starlay/abi.json delete mode 100644 projects/starlay/constants.js delete mode 100644 projects/starlay/starlay.js delete mode 100644 projects/starlay/utils.js delete mode 100644 projects/starlay/ve.js delete mode 100644 projects/xensa/abi.json diff --git a/projects/mensa/abi.json b/projects/mensa/abi.json deleted file mode 100644 index 1721b37d74..0000000000 --- a/projects/mensa/abi.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "getReservesList": "address[]:getReservesList", - "getAMMReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", - "getCurrentTokens": "address[]:getCurrentTokens", - "getReserveData": "function getReserveData(address _reserve) view returns (uint256 totalLiquidity, uint256 availableLiquidity, uint256 totalBorrowsStable, uint256 totalBorrowsVariable, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 utilizationRate, uint256 liquidityIndex, uint256 variableBorrowIndex, address aTokenAddress, uint40 lastUpdateTimestamp)", - "getReserveConfigurationData": "function getReserveConfigurationData(address _reserve) view returns (uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, address interestRateStrategyAddress, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive)", - "getReserves": "address[]:getReserves", - "getAddressesProvidersList": "address[]:getAddressesProvidersList", - "getAddress": "function getAddress(bytes32 id) view returns (address)", - "getAllATokens": "function getAllATokens() view returns (tuple(string symbol, address tokenAddress)[])", - "getUnderlying": "address:UNDERLYING_ASSET_ADDRESS", - "getReserveDataV2": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getBPool": "address:bPool" -} \ No newline at end of file diff --git a/projects/mensa/index.js b/projects/mensa/index.js index 831e4fdc08..fd999d8bed 100644 --- a/projects/mensa/index.js +++ b/projects/mensa/index.js @@ -1,85 +1,9 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -const abi = require('./abi.json'); -const {transformFantomAddress} = require('../helper/portedTokens') - -const _mensaCoreAddress = '0xa7D5d34207eb2EfB510Fb15b06feE6224Cd936Cd'; - -async function tvl(_, _ethBlock, chainBlocks) { - - const reserves_mensa = ( - await sdk.api.abi.call({ - target: _mensaCoreAddress, - abi: abi["getReserves"], - block: chainBlocks['fantom'], - chain: 'fantom' - }) - ).output.filter(t=>t!=="0x1111111111111111111111111111111111111111"); - - const decimalsOfReserve = ( - await sdk.api.abi.multiCall({ - calls: reserves_mensa.map((reserve) => ({ - target: reserve - })), - abi: "erc20:decimals", - block: chainBlocks['fantom'], - chain: 'fantom' - }) - ).output; - - const assets = []; - reserves_mensa.map((reserve, i) => { - - let symbol; - - let decimals = decimalsOfReserve[i]; - if (decimals.success) { - assets.push({ - address: reserve, - }) - } else { - throw new Error("Call failed") - } - }) - - const balance_ftm = ( - await sdk.api.eth.getBalance({ - target: _mensaCoreAddress, - block: chainBlocks['fantom'], - chain: 'fantom' - }) - ).output; - - - const balanceOfResults = await sdk.api.abi.multiCall({ - block: chainBlocks['fantom'], - chain: 'fantom', - calls: assets.map((reserve) => ({ - target: reserve.address, - params: _mensaCoreAddress, - })), - abi: "erc20:balanceOf", - }) - - const balances = {}; - const transform = await transformFantomAddress() - - assets.forEach((_item,_i)=>{ - balances[transform(_item.address)] = balanceOfResults.output[_i].output; - }) - - balances['fantom:' + ADDRESSES.fantom.WFTM] = balance_ftm - - return balances; - -} module.exports = { deadFrom: 1648765747, misrepresentedTokens: true, methodology: 'Using the same methodology applied to other lending platforms, TVL for Mensa consists deposits made to the protocol and borrowed tokens are not counted.', fantom:{ - tvl, + tvl: () => 0 }, }; diff --git a/projects/sio2/abi.json b/projects/sio2/abi.json deleted file mode 100644 index c35aa8a2bc..0000000000 --- a/projects/sio2/abi.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "getReservesList": "address[]:getReservesList", - "getCurrentTokens": "address[]:getCurrentTokens", - "getReserveData": "function getReserveData(address _reserve) view returns (uint256 totalLiquidity, uint256 availableLiquidity, uint256 totalBorrowsStable, uint256 totalBorrowsVariable, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 utilizationRate, uint256 liquidityIndex, uint256 variableBorrowIndex, address sTokenAddress, uint40 lastUpdateTimestamp)", - "getReserveConfigurationData": "function getReserveConfigurationData(address _reserve) view returns (uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, address interestRateStrategyAddress, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive)", - "getReserves": "address[]:getReserves", - "getAddressesProvidersList": "address[]:getAddressesProvidersList", - "getAddress": "function getAddress(bytes32 id) view returns (address)", - "getAllSTokens": "function getAllSTokens() view returns (tuple(string symbol, address tokenAddress)[])", - "getUnderlying": "address:UNDERLYING_ASSET_ADDRESS", - "getReserveDataV2": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getHelperReserveData": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getReserveTotalBorrows": "function getReserveTotalBorrows(address _reserve) view returns (uint256)" -} \ No newline at end of file diff --git a/projects/sio2/constants.js b/projects/sio2/constants.js deleted file mode 100644 index d20518235f..0000000000 --- a/projects/sio2/constants.js +++ /dev/null @@ -1,39 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const DEFAULT_DECIMALS = 18 - -const DOT_TOKEN = "polkadot" -const DOT_DECIMALS = 10 - -const TOKENS = { - // WASTR - "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720": "astar", - // DOT - [ADDRESSES.astar.DOT]: DOT_TOKEN, - // BAI - [ADDRESSES.astar.BAI]: "bai-stablecoin", - // USDC - [ADDRESSES.moonbeam.USDC]: ADDRESSES.ethereum.USDC, - // USDT - [ADDRESSES.astar.USDT]: - ADDRESSES.ethereum.USDT, - // BUSD - [ADDRESSES.oasis.ceUSDT]: "binance-usd", - // DAI - [ADDRESSES.astar.DAI]: - ADDRESSES.ethereum.DAI, - // WETH - [ADDRESSES.moonbeam.USDT]: - ADDRESSES.ethereum.WETH, - // wBTC - [ADDRESSES.astar.WBTC]: - ADDRESSES.ethereum.WBTC, - // BNB - [ADDRESSES.milkomeda.BNB]: "binancecoin", -}; - -module.exports = { - DEFAULT_DECIMALS, - DOT_DECIMALS, - DOT_TOKEN, - TOKENS, -} diff --git a/projects/sio2/index.js b/projects/sio2/index.js index d101ddd84c..cc7942e896 100644 --- a/projects/sio2/index.js +++ b/projects/sio2/index.js @@ -1,55 +1,11 @@ -const { getReserves, getSio2Tvl } = require("./sio2"); -const BigNumber = require("bignumber.js"); -const { getBorrowed } = require("../helper/aave"); -const { TOKENS, DOT_TOKEN, DOT_DECIMALS, DEFAULT_DECIMALS } = require("./constants"); - -const transferFromAddress = (underlying) => TOKENS[underlying] - -function astar(borrowed) { - return async (timestamp, _, {star: block}) => { - const balances = {}; - const [sTokens, reserveTokens, validProtocolDataHelpers] = - await getReserves(block); - - const chain = "astar"; - - if (borrowed) { - await getBorrowed( - balances, - block, - chain, - reserveTokens, - validProtocolDataHelpers, - transferFromAddress - ); - } else { - await getSio2Tvl( - balances, - block, - chain, - sTokens, - reserveTokens, - transferFromAddress - ); - } - - return Object.keys(balances).reduce((res, key) => { - if (key.startsWith("0x")) - return { ...res, [key]: balances[key] }; - if (key === DOT_TOKEN) - return { ...res, [key]: new BigNumber(balances[key]).shiftedBy(-DOT_DECIMALS).toNumber() }; - return { ...res, [key]: new BigNumber(balances[key]).shiftedBy(-DEFAULT_DECIMALS).toNumber() }; - }, {}); - }; -} - - +const { aaveExports } = require("../helper/aave"); module.exports = { timetravel: true, methodology: `Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.`, - astar: { - tvl: astar(false), - borrowed: astar(true) - } -} + astar: aaveExports("astar", '0x9D8bB85b1c728f69672923dD4A0209EC8b75EFda', undefined, undefined, { + abis: { + getAllATokens: "function getAllSTokens() view returns (tuple(string symbol, address tokenAddress)[])" + } + }) +} \ No newline at end of file diff --git a/projects/sio2/sio2.js b/projects/sio2/sio2.js deleted file mode 100644 index b240a28edc..0000000000 --- a/projects/sio2/sio2.js +++ /dev/null @@ -1,101 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { default: BigNumber } = require("bignumber.js"); -const addressesProviderRegistry = "0x9D8bB85b1c728f69672923dD4A0209EC8b75EFda"; // from https://sio2-finance.gitbook.io/en/development/contract-addresses - -async function getReserves(block) { - const chain = "astar"; - const addressesProviders = ( - await sdk.api.abi.call({ - target: addressesProviderRegistry, - abi: abi["getAddressesProvidersList"], - block, - chain, - }) - ).output; - - const protocolDataHelpers = ( - await sdk.api.abi.multiCall({ - calls: addressesProviders.map((provider) => ({ - target: provider, - params: - "0x0100000000000000000000000000000000000000000000000000000000000000", - })), - abi: abi["getAddress"], - block, - chain, - }) - ).output; - - const validProtocolDataHelpers = protocolDataHelpers - .filter( - (helper) => helper.output !== ADDRESSES.null - ) - .map((p) => p.output); - - const sTokenMarketData = ( - await sdk.api.abi.multiCall({ - calls: validProtocolDataHelpers.map((dataHelper) => ({ - target: dataHelper, - })), - abi: abi["getAllSTokens"], - block, - chain, - }) - ).output; - - let sTokenAddresses = []; - sTokenMarketData.map((sTokensData) => { - sTokenAddresses = [ - ...sTokenAddresses, - ...sTokensData.output.map((sToken) => sToken[1]), - ]; - }); - const underlyingAddressesData = ( - await sdk.api.abi.multiCall({ - calls: sTokenAddresses.map((sToken) => ({ - target: sToken, - })), - abi: abi["getUnderlying"], - block, - chain, - }) - ).output; - - const reserveAddresses = underlyingAddressesData.map( - (reserveData) => reserveData.output - ); - return [sTokenAddresses, reserveAddresses, validProtocolDataHelpers[0]]; -} - -async function getSio2Tvl( - balances, - block, - chain, - sTokens, - reserveTokens, - transformAddress -) { - const balanceOfUnderlying = await sdk.api.abi.multiCall({ - calls: sTokens.map((sToken, index) => ({ - target: reserveTokens[index], - params: sToken, - })), - abi: "erc20:balanceOf", - block, - chain, - }); - - sdk.util.sumMultiBalanceOf( - balances, - balanceOfUnderlying, - true, - transformAddress - ); -} - -module.exports = { - getReserves, - getSio2Tvl, -}; diff --git a/projects/sio2/utils.js b/projects/sio2/utils.js deleted file mode 100644 index 696def55e5..0000000000 --- a/projects/sio2/utils.js +++ /dev/null @@ -1,11 +0,0 @@ -const BigNumberJs = require("bignumber.js"); -BigNumberJs.config({ EXPONENTIAL_AT: 1e9 }) - -const toBigNumberJsOrZero = (value) => { - const bn = new BigNumberJs(value) - return bn.isNaN() ? new BigNumberJs('0') : bn -} - -module.exports = { - toBigNumberJsOrZero -} diff --git a/projects/starlay/abi.json b/projects/starlay/abi.json deleted file mode 100644 index ec629f3b10..0000000000 --- a/projects/starlay/abi.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "getReservesList": "address[]:getReservesList", - "getCurrentTokens": "address[]:getCurrentTokens", - "getReserveData": "function getReserveData(address _reserve) view returns (uint256 totalLiquidity, uint256 availableLiquidity, uint256 totalBorrowsStable, uint256 totalBorrowsVariable, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 utilizationRate, uint256 liquidityIndex, uint256 variableBorrowIndex, address lTokenAddress, uint40 lastUpdateTimestamp)", - "getReserveConfigurationData": "function getReserveConfigurationData(address _reserve) view returns (uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, address interestRateStrategyAddress, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive)", - "getReserves": "address[]:getReserves", - "getAddressesProvidersList": "address[]:getAddressesProvidersList", - "getAddress": "function getAddress(bytes32 id) view returns (address)", - "getAllLTokens": "function getAllLTokens() view returns (tuple(string symbol, address tokenAddress)[])", - "getUnderlying": "address:UNDERLYING_ASSET_ADDRESS", - "getReserveDataV2": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getHelperReserveData": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getReserveTotalBorrows": "function getReserveTotalBorrows(address _reserve) view returns (uint256)" -} diff --git a/projects/starlay/constants.js b/projects/starlay/constants.js deleted file mode 100644 index 6c06e77822..0000000000 --- a/projects/starlay/constants.js +++ /dev/null @@ -1,53 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const DEFAULT_DECIMALS = 18; - -const TOKEN_INFO = { - dot: { key: "polkadot", decimals: 10 }, - ausd: { key: "acala-dollar", decimals: 12 }, - wastr: { - key: "astar", - address: "0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720", - }, -}; - -const TOKENS = { - // WASTR - [TOKEN_INFO.wastr.address.toLowerCase()]: TOKEN_INFO.wastr.key, - // WETH - [ADDRESSES.astar.WETH]: ADDRESSES.ethereum.WETH, - // wBTC - [ADDRESSES.astar.WBTC]: ADDRESSES.ethereum.WBTC, - // SDN - [ADDRESSES.astar.SDN]: "shiden", - // USDC - [ADDRESSES.astar.USDC]: ADDRESSES.ethereum.USDC, - // USDT (celer USDT) - [ADDRESSES.astar.USDT]: ADDRESSES.ethereum.USDT, - // USDT (native USDT) - [ADDRESSES.astar.nativeUSDT]: ADDRESSES.ethereum.USDT, - // DAI - [ADDRESSES.astar.DAI]: ADDRESSES.ethereum.DAI, - // BUSD - [ADDRESSES.astar.BUSD]: "binance-usd", - // MATIC - [ADDRESSES.astar.MATIC]: "matic-network", - // BNB - [ADDRESSES.astar.BNB]: "binancecoin", - // DOT - [ADDRESSES.astar.DOT]: TOKEN_INFO.dot.key, - // aUSD - [ADDRESSES.astar.aUSD]: TOKEN_INFO.ausd.key, - // LAY - [ADDRESSES.astar.LAY]: "starlay-finance", -}; - -const VOTING_ESCROW_ADDRESS = "0xDf32D28c1BdF25c457E82797316d623C2fcB29C8"; -const LAY_ADDRESS = ADDRESSES.astar.LAY; - -module.exports = { - DEFAULT_DECIMALS, - TOKEN_INFO, - LAY_ADDRESS, - TOKENS, - VOTING_ESCROW_ADDRESS, -}; diff --git a/projects/starlay/index.js b/projects/starlay/index.js index 82b2b2d96b..fb7f3a7a12 100644 --- a/projects/starlay/index.js +++ b/projects/starlay/index.js @@ -1,80 +1,16 @@ -const { getReserves, getStarlayTvl } = require("./starlay"); -const BigNumber = require("bignumber.js"); -const { getBorrowed } = require("../helper/aave"); -const { - TOKENS, - TOKEN_INFO, - DEFAULT_DECIMALS, - LAY_ADDRESS, -} = require("./constants"); -const { getLockedLAY } = require("./ve"); - -const transferFromAddress = (underlying) => TOKENS[underlying.toLowerCase()]; - -function astar(borrowed) { - return async (timestamp, _, { astar: block }) => { - const balances = {}; - const [lTokens, reserveTokens, validProtocolDataHelpers] = - await getReserves(block); - const chain = "astar"; - - if (borrowed) { - await getBorrowed( - balances, - block, - chain, - reserveTokens, - validProtocolDataHelpers, - transferFromAddress - ); - } else { - await getStarlayTvl( - balances, - block, - chain, - lTokens, - reserveTokens, - transferFromAddress - ); - } - - return Object.keys(balances).reduce((res, key) => { - if (key.startsWith("0x")) return { ...res, [key]: balances[key] }; - for (const token of Object.values(TOKEN_INFO)) { - if (key === token.key && token.decimals) - return { - ...res, - [key]: new BigNumber(balances[key]) - .shiftedBy(-token.decimals) - .toFixed(0), - }; - } - return { - ...res, - [key]: new BigNumber(balances[key]) - .shiftedBy(-DEFAULT_DECIMALS) - .toFixed(0), - }; - }, {}); - }; -} - -async function staking(_timestamp, _block, { astar: block }) { - const chain = "astar"; - const stakedLay = await getLockedLAY(chain, block); - return { - [transferFromAddress(LAY_ADDRESS)]: stakedLay - .shiftedBy(-DEFAULT_DECIMALS) - .toFixed(0), - }; -} +const { aaveExports } = require("../helper/aave"); +const ADDRESSES = require('../helper/coreAssets.json') +const VOTING_ESCROW_ADDRESS = "0xDf32D28c1BdF25c457E82797316d623C2fcB29C8"; +const { staking } = require("../helper/staking"); module.exports = { - timetravel: true, methodology: `Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.`, astar: { - tvl: astar(false), - borrowed: astar(true), - staking, - }, + ...aaveExports("astar", '0xF6206297b6857779443eF7Eca4a3cFFb1660F952', undefined, undefined, { + abis: { + getAllATokens: "function getAllLTokens() view returns (tuple(string symbol, address tokenAddress)[])" + } + }), + staking: staking(VOTING_ESCROW_ADDRESS, ADDRESSES.astar.LAY), + } }; diff --git a/projects/starlay/starlay.js b/projects/starlay/starlay.js deleted file mode 100644 index 3cabdc1f9a..0000000000 --- a/projects/starlay/starlay.js +++ /dev/null @@ -1,96 +0,0 @@ -const ADDRESSES = require("../helper/coreAssets.json"); -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { default: BigNumber } = require("bignumber.js"); -const addressesProviderRegistry = "0xF6206297b6857779443eF7Eca4a3cFFb1660F952"; - -async function getReserves(block) { - const chain = "astar"; - const addressesProviders = ( - await sdk.api.abi.call({ - target: addressesProviderRegistry, - abi: abi["getAddressesProvidersList"], - block, - chain, - }) - ).output; - - const protocolDataHelpers = ( - await sdk.api.abi.multiCall({ - calls: addressesProviders.map((provider) => ({ - target: provider, - params: - "0x0100000000000000000000000000000000000000000000000000000000000000", - })), - abi: abi["getAddress"], - block, - chain, - }) - ).output; - const validProtocolDataHelpers = protocolDataHelpers - .filter((helper) => helper.output !== ADDRESSES.null) - .map((p) => p.output); - - const lTokenMarketData = ( - await sdk.api.abi.multiCall({ - calls: validProtocolDataHelpers.map((dataHelper) => ({ - target: dataHelper, - })), - abi: abi["getAllLTokens"], - block, - chain, - }) - ).output; - - let lTokenAddresses = []; - lTokenMarketData.map((lTokensData) => { - lTokenAddresses = [ - ...lTokenAddresses, - ...lTokensData.output.map((lToken) => lToken[1]), - ]; - }); - const underlyingAddressesData = ( - await sdk.api.abi.multiCall({ - calls: lTokenAddresses.map((lToken) => ({ - target: lToken, - })), - abi: abi["getUnderlying"], - block, - chain, - }) - ).output; - const reserveAddresses = underlyingAddressesData.map( - (reserveData) => reserveData.output - ); - return [lTokenAddresses, reserveAddresses, validProtocolDataHelpers[0]]; -} - -async function getStarlayTvl( - balances, - block, - chain, - lTokens, - reserveTokens, - transformAddress -) { - const balanceOfUnderlying = await sdk.api.abi.multiCall({ - calls: lTokens.map((lToken, index) => ({ - target: reserveTokens[index], - params: lToken, - })), - abi: "erc20:balanceOf", - block, - chain, - }); - sdk.util.sumMultiBalanceOf( - balances, - balanceOfUnderlying, - true, - transformAddress - ); -} - -module.exports = { - getReserves, - getStarlayTvl, -}; diff --git a/projects/starlay/utils.js b/projects/starlay/utils.js deleted file mode 100644 index 9b7fe7d49b..0000000000 --- a/projects/starlay/utils.js +++ /dev/null @@ -1,11 +0,0 @@ -const BigNumberJs = require("bignumber.js"); -BigNumberJs.config({ EXPONENTIAL_AT: 1e9 }); - -const toBigNumberJsOrZero = (value) => { - const bn = new BigNumberJs(value); - return bn.isNaN() ? new BigNumberJs("0") : bn; -}; - -module.exports = { - toBigNumberJsOrZero, -}; diff --git a/projects/starlay/ve.js b/projects/starlay/ve.js deleted file mode 100644 index a8118c826c..0000000000 --- a/projects/starlay/ve.js +++ /dev/null @@ -1,21 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { toBigNumberJsOrZero } = require("./utils.js"); - -const { VOTING_ESCROW_ADDRESS, LAY_ADDRESS } = require("./constants.js"); - -const getLockedLAY = async (chain, block) => { - const lockedLAYBalance = ( - await sdk.api.abi.call({ - target: LAY_ADDRESS, - abi: "erc20:balanceOf", - params: [VOTING_ESCROW_ADDRESS], - block, - chain, - }) - ).output; - return toBigNumberJsOrZero(lockedLAYBalance); -}; - -module.exports = { - getLockedLAY, -}; diff --git a/projects/xensa/abi.json b/projects/xensa/abi.json deleted file mode 100644 index 1721b37d74..0000000000 --- a/projects/xensa/abi.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "getReservesList": "address[]:getReservesList", - "getAMMReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 currentLiquidityRate, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint8 id))", - "getCurrentTokens": "address[]:getCurrentTokens", - "getReserveData": "function getReserveData(address _reserve) view returns (uint256 totalLiquidity, uint256 availableLiquidity, uint256 totalBorrowsStable, uint256 totalBorrowsVariable, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 utilizationRate, uint256 liquidityIndex, uint256 variableBorrowIndex, address aTokenAddress, uint40 lastUpdateTimestamp)", - "getReserveConfigurationData": "function getReserveConfigurationData(address _reserve) view returns (uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, address interestRateStrategyAddress, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive)", - "getReserves": "address[]:getReserves", - "getAddressesProvidersList": "address[]:getAddressesProvidersList", - "getAddress": "function getAddress(bytes32 id) view returns (address)", - "getAllATokens": "function getAllATokens() view returns (tuple(string symbol, address tokenAddress)[])", - "getUnderlying": "address:UNDERLYING_ASSET_ADDRESS", - "getReserveDataV2": "function getReserveData(address asset) view returns (uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)", - "getBPool": "address:bPool" -} \ No newline at end of file diff --git a/projects/xensa/index.js b/projects/xensa/index.js index 6ee65cbce2..177f675e99 100644 --- a/projects/xensa/index.js +++ b/projects/xensa/index.js @@ -1,51 +1,21 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require('./abi.json'); + +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const _xensaCoreAddress = '0xd1242313461dd533279f0cac0dbc06ecdb878a79'; -async function tvl(timestamp, _ethBlock, chainBlocks) { - const block = chainBlocks.okexchain +async function tvl(timestamp, _ethBlock, chainBlocks, { api }) { const reserves_xensa = ( - await sdk.api.abi.call({ + await api.call({ target: _xensaCoreAddress, - abi: abi["getReserves"], - block, - chain: 'okexchain' + abi: "address[]:getReserves", }) - ).output.filter(addr=>addr!=="0x1111111111111111111111111111111111111111"); - - const balance_okt = ( - await sdk.api.eth.getBalance({ - target: _xensaCoreAddress, - block, - chain: 'okexchain' - }) - ).output; - - - const balanceOfResults = await sdk.api.abi.multiCall({ - block, - chain: 'okexchain', - calls: reserves_xensa.map((reserve) => ({ - target: reserve, - params: _xensaCoreAddress, - })), - abi: "erc20:balanceOf", - }) - - const balances = {}; - balances['okexchain:' + ADDRESSES.okexchain.WOKT] = balance_okt - const transform = addr=>`okexchain:${addr}`// await transformAddress() - sdk.util.sumMultiBalanceOf(balances, balanceOfResults, true, transform) - - return balances; - + ).filter(addr=>addr!=="0x1111111111111111111111111111111111111111") + return sumTokens2({ api, owner: _xensaCoreAddress, tokens: [...reserves_xensa, nullAddress], resolveLP: true, }) } module.exports = { methodology: 'Using the same methodology applied to other lending platforms, TVL for Xensa consists deposits made to the protocol and borrowed tokens are not counted.', okexchain:{ - tvl, + tvl: () => 0 }, }; From c184aa2439891960a8e42d34a9a63d72ed8e47f1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 31 May 2023 15:30:10 +0530 Subject: [PATCH 0598/1354] Tranchess (#6425) * Add Tranchess ETH Liquidity Staking TVL tracker * code refactor --------- Co-authored-by: Bill Clippy --- projects/tranchess-ETH/abi.json | 4 ++++ projects/tranchess-ETH/index.js | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 projects/tranchess-ETH/abi.json create mode 100644 projects/tranchess-ETH/index.js diff --git a/projects/tranchess-ETH/abi.json b/projects/tranchess-ETH/abi.json new file mode 100644 index 0000000000..8427465632 --- /dev/null +++ b/projects/tranchess-ETH/abi.json @@ -0,0 +1,4 @@ +{ + "tokenUnderlying": "address:tokenUnderlying", + "getTotalUnderlying": "uint256:getTotalUnderlying" +} \ No newline at end of file diff --git a/projects/tranchess-ETH/index.js b/projects/tranchess-ETH/index.js new file mode 100644 index 0000000000..5d19aa93fa --- /dev/null +++ b/projects/tranchess-ETH/index.js @@ -0,0 +1,19 @@ +const sdk = require('@defillama/sdk') +const abi = require('./abi.json') + +const ETHV2Funds = [ + '0x69c53679EC1C06f3275b64C428e8Cd069a2d3966', // ETH V2 Fund (ETH mainnet) +] + +async function ethereum(timestamp, blockETH, chainBlocks, { api }){ + const tokens = await api.multiCall({ abi: abi.tokenUnderlying, calls: ETHV2Funds}) + const bals = await api.multiCall({ abi: abi.getTotalUnderlying, calls: ETHV2Funds}) + api.addTokens(tokens, bals) +} + +module.exports = { + methodology: `Only counts the staked ETH in ETH fund deployed on Ethereum mainnet.`, + ethereum:{ + tvl: ethereum + } +} \ No newline at end of file From 5968826fd03ed3f1cc621c89588dafb356eef78b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 31 May 2023 12:10:47 +0200 Subject: [PATCH 0599/1354] llamas treasury: add locked cvx balance --- projects/treasury/thellamas.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/treasury/thellamas.js b/projects/treasury/thellamas.js index 76ecf6b368..0599357757 100644 --- a/projects/treasury/thellamas.js +++ b/projects/treasury/thellamas.js @@ -24,6 +24,8 @@ module.exports = mergeExports([treasuryExports({ }), { ethereum: { tvl: async (_, _1, _2, { api }) => { + const lockedCVXBal = await api.call({ abi: 'erc20:balanceOf', target: '0x72a19342e8F1838460eBFCCEf09F6585e32db86E', params: Treasury }) + api.add(ADDRESSES.ethereum.CVX, lockedCVXBal) await genericUnwrapCvxRewardPool({ api, owner: Treasury, pool: '0x39D78f11b246ea4A1f68573c3A5B64E83Cff2cAe'}) return api.getBalances() } From 1eea2408ac4b77a93492cf9e1948a55b54dfc60f Mon Sep 17 00:00:00 2001 From: define Date: Wed, 31 May 2023 12:56:16 +0100 Subject: [PATCH 0600/1354] add treasury tranchess --- projects/treasury/tranchess.js | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/treasury/tranchess.js diff --git a/projects/treasury/tranchess.js b/projects/treasury/tranchess.js new file mode 100644 index 0000000000..27319621d4 --- /dev/null +++ b/projects/treasury/tranchess.js @@ -0,0 +1,37 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') + +const treasuryETH = "0x1bf019a44a708fbeba7adc79bdad3d0769ff3a7b"; +const CHESS = "0xD6123271F980D966B00cA4FCa6C2c021f05e2E73" +const qETH = "0x93ef1Ea305D11A9b2a3EbB9bB4FCc34695292E7d"; + +//BSC CHAIN + +const treasuryBSC = "0x1bf019a44a708fbeba7adc79bdad3d0769ff3a7b"; +const CHESSB = "0x20de22029ab63cf9A7Cf5fEB2b737Ca1eE4c82A6" + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, + "0x04248AAbca09E9a1a3D5129a7ba05b7F17DE7684", + "0xC764B55852F8849Ae69923e45ce077A576bF9a8d" + ], + owners: [treasuryETH], + ownTokens: [CHESS, qETH], + }, + bsc: { + tokens: [ + nullAddress, + "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.BTCB + ], + owners: [treasuryBSC], + ownTokens: [CHESSB], + }, +}) \ No newline at end of file From e5ee63ce77f4897b681f709e0643dc4c316ec2a2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 31 May 2023 20:51:56 +0530 Subject: [PATCH 0601/1354] Crowdswap (#6429) * Create crowdSwap * Delete crowdSwap * BLOC-1717 * code refactor * remove unused file * add eth config --------- Co-authored-by: sara-abbasi2 <106956907+sara-abbasi2@users.noreply.github.com> Co-authored-by: ajalalniya --- projects/crowdswap/index.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/crowdswap/index.js diff --git a/projects/crowdswap/index.js b/projects/crowdswap/index.js new file mode 100644 index 0000000000..bb55e3cf05 --- /dev/null +++ b/projects/crowdswap/index.js @@ -0,0 +1,37 @@ +const { sumTokensExport, sumTokens2, } = require("../helper/unwrapLPs"); +const { getLogs, getAddress } = require('../helper/cache/getLogs'); + +const polygonStakingContracts = '0x3C868fe859eF46a133e032f22B443e6Efd617449'; +const bscStakingContracts = '0x21224834612ecaC194c4b877b49e7794f193d2A2'; +const CROWD = "0x483dd3425278C1f79F377f1034d9d2CaE55648B6"; +const BscCROWD = "0xA5d4B64a639d93b660cdA04D331374dA1108F8f5"; + +async function tvl(_, _b, _cb, { api, }) { + const { factory, fromBlock } = config[api.chain] + + const logs = await getLogs({ + api, + target: factory, + topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], + fromBlock, + }) + const pools = logs.map(i => getAddress(i.data.slice(0, 64 + 2))) + const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) + const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) + const tokensAndOwners = pools.map((pool, i) => [[token0s[i], pool], [token1s[i], pool]]).flat() + return sumTokens2({ api, tokensAndOwners }) +} + +const config = { + ethereum: { factory: '0xBeA843A2DC516c6F38F159a6a55e80Ec40Cf2286', fromBlock: 16882649, }, + arbitrum: { factory: '0x9ff74eea1e7f0f8ee437b70d68f7cdc1a1030642', fromBlock: 91681087, }, + polygon: { factory: '0xab7dac1daf712693539d770a967a9bc7ba47470c', fromBlock: 37984740, }, + bsc: { factory: '0x08f65111cb9b517b10e5c1e63cb2224467e7988a', fromBlock: 25927093, }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) + +module.exports.polygon.staking = sumTokensExport({ owner: polygonStakingContracts, tokens: [CROWD] }) +module.exports.bsc.staking = sumTokensExport({ owner: bscStakingContracts, tokens: [BscCROWD] }) From c8ab8f81602b07b8e86b2016f1df0a359826ab85 Mon Sep 17 00:00:00 2001 From: Dmitry Mpower Date: Wed, 31 May 2023 19:33:53 +0300 Subject: [PATCH 0602/1354] feat: add DAOLama project (#6398) * feat: add DAOLama project * feat: add DAOLama project - change the TVL methodology * feat: add DAOLama project - change the TVL methodology --- projects/daolama/borrowed.js | 17 +++++++++++++++++ projects/daolama/constants.js | 4 ++++ projects/daolama/index.js | 12 ++++++++++++ projects/daolama/tvl.js | 17 +++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 projects/daolama/borrowed.js create mode 100644 projects/daolama/constants.js create mode 100644 projects/daolama/index.js create mode 100644 projects/daolama/tvl.js diff --git a/projects/daolama/borrowed.js b/projects/daolama/borrowed.js new file mode 100644 index 0000000000..ac27357701 --- /dev/null +++ b/projects/daolama/borrowed.js @@ -0,0 +1,17 @@ +const sdk = require("@defillama/sdk"); +const { transformBalances } = require("../helper/portedTokens"); +const { get } = require('../helper/http'); +const ADDRESSES = require('../helper/coreAssets.json'); +const { BASE_API_URL } = require("./constants"); +const nullAddress = ADDRESSES.null; + +async function borrowed(chain, timestamp, chainBlocks, { api }) { + const balances = {}; + const result = await get(`${BASE_API_URL}/api/v1/analytics/borrowed`); + sdk.util.sumSingleBalance(balances, nullAddress, result.value, api.chain); + return transformBalances(api.chain, balances); +} + +module.exports = { + borrowed, +} diff --git a/projects/daolama/constants.js b/projects/daolama/constants.js new file mode 100644 index 0000000000..9e4e707537 --- /dev/null +++ b/projects/daolama/constants.js @@ -0,0 +1,4 @@ +module.exports = { + BASE_API_URL: 'https://api.daolama.co', + POOL_ADDRESS: 'EQAwsDboFl_iGuaflNn5959HOamenkvQEQDwakO55CY2SGB8' +} diff --git a/projects/daolama/index.js b/projects/daolama/index.js new file mode 100644 index 0000000000..26d3f534bf --- /dev/null +++ b/projects/daolama/index.js @@ -0,0 +1,12 @@ +const { tvl } = require('./tvl'); +const { borrowed } = require('./borrowed'); + +module.exports = { + methodology: 'Counts the pool size as the TVL. Borrowed coins are not counted towards the TVL.', + timetravel: false, + misrepresentedTokens: true, + ton: { + tvl, + borrowed, + } +} diff --git a/projects/daolama/tvl.js b/projects/daolama/tvl.js new file mode 100644 index 0000000000..ad7f92ebd7 --- /dev/null +++ b/projects/daolama/tvl.js @@ -0,0 +1,17 @@ +const sdk = require("@defillama/sdk"); +const { get } = require("../helper/http"); +const { transformBalances } = require("../helper/portedTokens"); +const ADDRESSES = require("../helper/coreAssets.json"); +const { POOL_ADDRESS } = require("./constants"); +const nullAddress = ADDRESSES.null; + +async function tvl(chain, timestamp, chainBlocks, { api }) { + const balances = {}; + const balance = await get(`https://toncenter.com/api/v2/getAddressBalance?address=${encodeURIComponent(POOL_ADDRESS)}`) + sdk.util.sumSingleBalance(balances, nullAddress, balance.result, api.chain); + return transformBalances(api.chain, balances); +} + +module.exports = { + tvl, +} From 166db2c5b3eae9112e5f526f935882061702d0dc Mon Sep 17 00:00:00 2001 From: sashimiboi <53438741+AnthonyLoya913@users.noreply.github.com> Date: Wed, 31 May 2023 12:26:20 -0500 Subject: [PATCH 0603/1354] Cryptex v2 adapter (#6430) * Create .gitkeep * Delete projects/cryptex-derivatives directory * Create index.js Cryptex v2 adapter for short, long, and lp products --- projects/cryptex-v2/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/cryptex-v2/index.js diff --git a/projects/cryptex-v2/index.js b/projects/cryptex-v2/index.js new file mode 100644 index 0000000000..518f779f4c --- /dev/null +++ b/projects/cryptex-v2/index.js @@ -0,0 +1,25 @@ +const config = { + arbitrum: { + collateralContract: '0xaf8ced28fce00abd30463d55da81156aa5aeeec2', + products: [ + '0xea281a4c70ee2ef5ce3ed70436c81c0863a3a75a', // TCAP LP + '0x4243b34374cfb0a12f184b92f52035d03d4f7056', // TCAP Short + '0x1cd33f4e6edeee8263aa07924c2760cf2ec8aad0', // TCAP Long + ] + } +} + +module.exports = { + doublecounted: true, +}; + +Object.keys(config).forEach(chain => { + const { collateralContract, products, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const token = await api.call({ abi: 'address:token', target: collateralContract }) + const bals = await api.multiCall({ abi: 'function collateral(address) view returns (uint256)', calls: products, target: collateralContract }) + bals.forEach(i => api.add(token, i)) + } + } +}) From f1df30eb75f0795f74b33cb1bbc78b03a82e232d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 31 May 2023 23:04:57 +0530 Subject: [PATCH 0604/1354] Interport (#6432) * added USDC vaults to Interport Finance * code refactor --------- Co-authored-by: Dozer --- projects/interport-finance/index.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js index 9e23c1d0eb..b66f85da9f 100644 --- a/projects/interport-finance/index.js +++ b/projects/interport-finance/index.js @@ -1,20 +1,26 @@ const { sumTokens2 } = require('../helper/unwrapLPs'); const { staking } = require('../helper/staking'); -const vault = '0xEc8DDCb498b44C35EFaD7e5e43E0Caf6D16A66E8'; +const usdtVault = '0xEc8DDCb498b44C35EFaD7e5e43E0Caf6D16A66E8'; +const usdcVault = '0x5b45B414c6CD2a3341bE70Ba22BE786b0124003F'; +const defaultVaults = [usdtVault, usdcVault]; +const config = { + era: { vaults: ['0xc724832c5ed81599aE3E4EBC0eC4f87A285B5838'] }, +} module.exports = { - methodology: 'Interport TVL is calculated by summing the USDT balance of the vaults contracts, ITP token balance in the ITP Revenue Share contract and LP token balance in the LP Revenue Share contract.', + methodology: 'Interport TVL is calculated by summing the USDT and USDC balance of the vaults contracts, ITP token balance in the ITP Revenue Share contract and LP token balance in the LP Revenue Share contract.', }; -['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon'].forEach(chain => { +['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'era'].forEach(chain => { module.exports[chain] = { tvl: async (_, _1, _2, { api }) => { - const token = await api.call({ abi: 'address:asset', target: vault}) - return sumTokens2({ api, owner: vault, tokens: [token]}) + const vaults = config[chain]?.vaults || defaultVaults + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) + return sumTokens2({ api, tokensAndOwners2: [tokens, vaults]}) } } -}) +}); module.exports.ethereum.staking = staking('0x5DC6796Adc2420BD0f48e05f70f34B30F2AaD313', '0x2b1D36f5B61AdDAf7DA7ebbd11B35FD8cfb0DE31') -module.exports.ethereum.pool2 = staking('0x5F51A04c271C395994F156172cDe451a0188Ca75', '0x152E2502c22F73a7493df8B856836efBc69E3718') \ No newline at end of file +module.exports.ethereum.pool2 = staking('0x5F51A04c271C395994F156172cDe451a0188Ca75', '0x152E2502c22F73a7493df8B856836efBc69E3718') From df76132205308bceba095869ac20dde18ece4898 Mon Sep 17 00:00:00 2001 From: Monahawk <34764873+Monahawk@users.noreply.github.com> Date: Wed, 31 May 2023 20:05:15 +0200 Subject: [PATCH 0605/1354] Switch to the correct factory (#6433) --- projects/intercroneswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/intercroneswap/index.js b/projects/intercroneswap/index.js index 322e13be79..d03be82b2c 100644 --- a/projects/intercroneswap/index.js +++ b/projects/intercroneswap/index.js @@ -5,7 +5,7 @@ const TRON_FACTORY_V2 = 'TPvaMEL5oY2gWsJv7MDjNQh2dohwvwwVwx' const TRON_FACTORY_V1 = 'TJL9Tj2rf5WPUkaYMzbvWErn6M8wYRiHG7' const factories = { bsc: "0xFa51B0746eb96deBC619Fd2EA88d5D8B43BD8230", - bittorrent: "0x5f4f1a36b7c141a12817580bc35277955c0afd78", + bittorrent: "0x0cEE0dFb5C680e3CcAA46FA28D5057f204E24F0a", } function chainTvl(chain) { From 8a7454b5dcad47b11ef9fa247af93a2389065ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Kopa=C5=84ski?= Date: Wed, 31 May 2023 20:06:00 +0200 Subject: [PATCH 0606/1354] Add iUSD market to Liqwid adapter (#6434) --- projects/liqwid/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index 43c353c02a..a9fbaf225d 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -28,6 +28,10 @@ const scriptAddresses = [ "addr1wyw3ap36lnepstpjadwg8cg73llvmju4y94kmfld23lkzjggq4hyj", "addr1wxrxa3ucywn3lqpkzlyucak0a7aavkudh49fqt06yc05sws4l4zs2", "addr1wy6e9jukn8fpx7kesrpmapsnmz0cgq6lnskuff0xc0junggv6gd8l", + // iUSD Market + "addr1wyslq7j0q9kq2ve28yzfgv5fdz4nzfay6cup2r634zr5zdqlhptgt", // action + "addr1wxwwjr76m4cgn6768p9ljg2jrg08evhrvh0wdq0q60327rqfenh4g", // batch + "addr1w9p7xj8wxvgpfjs532a8nmue69zj73k8644zes7vmg7c72s8symwu", // batchFinal ]; module.exports = { From eb13b435ec901b0a42805b9199646e0c1136d714 Mon Sep 17 00:00:00 2001 From: honey1129 <42838973+honey1129@users.noreply.github.com> Date: Thu, 1 Jun 2023 14:50:05 +0800 Subject: [PATCH 0607/1354] ADD:letsfil (#6422) * ADD:letsfil * FIX:tvl --------- Co-authored-by: Rentero --- projects/letsfil/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/letsfil/index.js diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js new file mode 100644 index 0000000000..efb5fd6616 --- /dev/null +++ b/projects/letsfil/index.js @@ -0,0 +1,27 @@ +const sdk = require('@defillama/sdk'); +const ADDRESSES = require('../helper/coreAssets.json') +const LETSFIL_CONTRACT = '0xd08F7A4544a7C21283B4a063ebb53ADFc0506562'; + +async function tvl(_, _1, _2, { api }) { + + const collateralBalance = await api.call({ + abi: 'function getTvl() external view returns (uint256)', + target: LETSFIL_CONTRACT, + }); + + // await sdk.util.sumSingleBalance(balances, LETSFIL_CONTRACT, collateralBalance, api.chain) + // return balances; + + api.add(ADDRESSES.null,collateralBalance) +} + + + +module.exports = { + timetravel: false, + misrepresentedTokens: false, + methodology: 'counts the number of pledge filecoins in the letsfil contract', + filecoin: { + tvl + } +}; From 8cbe55d8d0810c86b486eeb6cbfefe52346e4c27 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 14:05:02 +0530 Subject: [PATCH 0608/1354] Fluxbeam-xyz (#6439) Add fluxbeam.xyz --- projects/fluxbeam-xyz/index.js | 24 + projects/helper/utils/solana/layout.js | 1 + projects/oxygen/idl.js | 608 +------------------------ projects/oxygen/index.js | 113 +---- 4 files changed, 50 insertions(+), 696 deletions(-) create mode 100644 projects/fluxbeam-xyz/index.js diff --git a/projects/fluxbeam-xyz/index.js b/projects/fluxbeam-xyz/index.js new file mode 100644 index 0000000000..9270f3b8d9 --- /dev/null +++ b/projects/fluxbeam-xyz/index.js @@ -0,0 +1,24 @@ +const { getConnection, decodeAccount, sumTokens2 } = require('../helper/solana') +const sdk = require('@defillama/sdk') +const { PublicKey } = require("@solana/web3.js") + +async function tvl(_, _1, _2, { api }) { + const connection = getConnection() + + const programPublicKey = new PublicKey('FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X') + const programAccounts = await connection.getProgramAccounts(programPublicKey, { + filters: [{ dataSize: 324 } ] + }); + sdk.log('#pools', programAccounts.length) + + const tokenAccounts = programAccounts.map((account) => { + const i = decodeAccount('fluxbeam', account.account) + return [i.tokenAccountA, i.tokenAccountB] + }).flat().map(i => i.toString()) + return sumTokens2({ tokenAccounts }) +} + +module.exports = { + timetravel: false, + solana: { tvl, }, +} diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index 740eab03d2..a9f3da336f 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -48,6 +48,7 @@ const customDecoders = { // raydiumLPv4: defaultParseLayout(RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4), raydiumCLMM: defaultParseLayout(RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM), raydiumLPStable: defaultParseLayout(RAYDIUM_STABLE_STATE_LAYOUT_V1), + fluxbeam: defaultParseLayout(TokenSwapLayout), } function decodeAccount(layout, accountInfo) { diff --git a/projects/oxygen/idl.js b/projects/oxygen/idl.js index f98bde9e5f..225d65a608 100644 --- a/projects/oxygen/idl.js +++ b/projects/oxygen/idl.js @@ -2,515 +2,8 @@ module.exports = { version: '0.0.0', name: 'borrow_lending', - instructions: [ - { - name: 'initializeMain', - accounts: [ - { - name: 'mainSigner', - isMut: false, - isSigner: false, - }, - { - name: 'mainAccount', - isMut: true, - isSigner: true, - }, - { - name: 'authority', - isMut: true, - isSigner: true, - }, - { - name: 'priceAuthority', - isMut: false, - isSigner: false, - }, - { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, - { - name: 'rent', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'signerBump', - type: 'u8', - }, - ], - }, - { - name: 'setPriceAuthority', - accounts: [ - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'authority', - isMut: false, - isSigner: true, - }, - { - name: 'newPriceAuthority', - isMut: false, - isSigner: false, - }, - ], - args: [], - }, - { - name: 'initializeMargin', - accounts: [ - { - name: 'marginAccount', - isMut: true, - isSigner: false, - }, - { - name: 'mainAccount', - isMut: false, - isSigner: false, - }, - { - name: 'authority', - isMut: true, - isSigner: true, - }, - { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, - { - name: 'rent', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'marginBump', - type: 'u8', - }, - ], - }, - { - name: 'deposit', - accounts: [ - { - name: 'marginAccount', - isMut: true, - isSigner: false, - }, - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'from', - isMut: true, - isSigner: false, - }, - { - name: 'to', - isMut: true, - isSigner: false, - }, - { - name: 'authority', - isMut: false, - isSigner: true, - }, - { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'quantity', - type: 'u64', - }, - { - name: 'vaultBump', - type: 'u8', - }, - ], - }, - { - name: 'withdraw', - accounts: [ - { - name: 'marginAccount', - isMut: true, - isSigner: false, - }, - { - name: 'mainSigner', - isMut: false, - isSigner: false, - }, - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'from', - isMut: true, - isSigner: false, - }, - { - name: 'to', - isMut: true, - isSigner: false, - }, - { - name: 'authority', - isMut: false, - isSigner: true, - }, - { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, - { - name: 'clock', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'quantity', - type: 'u64', - }, - { - name: 'vaultBump', - type: 'u8', - }, - ], - }, - { - name: 'liquidate', - accounts: [ - { - name: 'liquidateeAccount', - isMut: true, - isSigner: false, - }, - { - name: 'liquidatorAccount', - isMut: true, - isSigner: false, - }, - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'authority', - isMut: false, - isSigner: true, - }, - { - name: 'clock', - isMut: false, - isSigner: false, - }, - ], - args: [], - }, - { - name: 'crankInterest', - accounts: [ - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'tokenParamsAccount', - isMut: true, - isSigner: false, - }, - { - name: 'clock', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'tpaBump', - type: 'u8', - }, - { - name: 'tokenIds', - type: { - array: [ - 'u8', - 16, - ], - }, - }, - ], - }, - { - name: 'setPrice', - accounts: [ - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'priceAuthority', - isMut: false, - isSigner: true, - }, - { - name: 'clock', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'tokenIds', - type: { - array: [ - 'u8', - 16, - ], - }, - }, - { - name: 'prices', - type: { - array: [ - 'u128', - 16, - ], - }, - }, - ], - }, - { - name: 'crankPrice', - accounts: [], - args: [ - { - name: 'tokenIds', - type: { - array: [ - 'u8', - 16, - ], - }, - }, - ], - }, - { - name: 'addToken', - accounts: [ - { - name: 'mainSigner', - isMut: false, - isSigner: false, - }, - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'tokenVault', - isMut: true, - isSigner: false, - }, - { - name: 'feeVault', - isMut: true, - isSigner: false, - }, - { - name: 'mint', - isMut: false, - isSigner: false, - }, - { - name: 'authority', - isMut: true, - isSigner: true, - }, - { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, - { - name: 'rent', - isMut: false, - isSigner: false, - }, - { - name: 'tokenProgram', - isMut: false, - isSigner: false, - }, - { - name: 'clock', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'vaultBump', - type: 'u8', - }, - { - name: 'feeBump', - type: 'u8', - }, - ], - }, - { - name: 'initTokenParameters', - accounts: [ - { - name: 'mainAccount', - isMut: true, - isSigner: false, - }, - { - name: 'tokenParamsAccount', - isMut: true, - isSigner: false, - }, - { - name: 'authority', - isMut: true, - isSigner: true, - }, - { - name: 'systemProgram', - isMut: false, - isSigner: false, - }, - { - name: 'rent', - isMut: false, - isSigner: false, - }, - ], - args: [ - { - name: 'tpaBump', - type: 'u8', - }, - ], - }, - { - name: 'setTokenParameters', - accounts: [ - { - name: 'mainAccount', - isMut: false, - isSigner: false, - }, - { - name: 'tokenParamsAccount', - isMut: true, - isSigner: false, - }, - { - name: 'authority', - isMut: true, - isSigner: true, - }, - ], - args: [ - { - name: 'tpaBump', - type: 'u8', - }, - { - name: 'tokenId', - type: 'u8', - }, - { - name: 'uOptimal', - type: 'u16', - }, - { - name: 'baseRate', - type: 'u16', - }, - { - name: 'slopeOne', - type: 'u16', - }, - { - name: 'slopeTwo', - type: 'u16', - }, - ], - }, - ], + instructions: [], accounts: [ - { - name: 'MarginAccount', - type: { - kind: 'struct', - fields: [ - { - name: 'bump', - type: 'u8', - }, - { - name: 'authority', - type: 'publicKey', - }, - { - name: 'tokenShares', - type: { - array: [ - { - defined: 'TokenShares', - }, - 64, - ], - }, - }, - { - name: 'mainAccount', - type: 'publicKey', - }, - { - name: 'padding', - type: { - array: [ - 'u8', - 1024, - ], - }, - }, - ], - }, - }, { name: 'MainAccount', type: { @@ -573,67 +66,8 @@ module.exports = { ], }, }, - { - name: 'TokensParametersAccount', - type: { - kind: 'struct', - fields: [ - { - name: 'authority', - type: 'publicKey', - }, - { - name: 'params', - type: { - array: [ - { - defined: 'TokenParameters', - }, - 64, - ], - }, - }, - { - name: 'rates', - type: { - array: [ - { - defined: 'TokenRate', - }, - 64, - ], - }, - }, - { - name: 'padding', - type: { - array: [ - 'u8', - 500, - ], - }, - }, - ], - }, - }, ], types: [ - { - name: 'TokenShares', - type: { - kind: 'struct', - fields: [ - { - name: 'tokenId', - type: 'u8', - }, - { - name: 'shares', - type: 'i128', - }, - ], - }, - }, { name: 'Balance', type: { @@ -676,46 +110,6 @@ module.exports = { ], }, }, - { - name: 'TokenRate', - type: { - kind: 'struct', - fields: [ - { - name: 'borrowApr', - type: 'u128', - }, - { - name: 'depositApy', - type: 'u128', - }, - ], - }, - }, - { - name: 'TokenParameters', - type: { - kind: 'struct', - fields: [ - { - name: 'uOptimal', - type: 'u16', - }, - { - name: 'baseRate', - type: 'u16', - }, - { - name: 'slopeOne', - type: 'u16', - }, - { - name: 'slopeTwo', - type: 'u16', - }, - ], - }, - }, { name: 'TokenData', type: { diff --git a/projects/oxygen/index.js b/projects/oxygen/index.js index 455bb17b7e..05e9f705ce 100644 --- a/projects/oxygen/index.js +++ b/projects/oxygen/index.js @@ -1,52 +1,9 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getProvider } = require('../helper/solana') -const BigNumber = require('bignumber.js') +const { getProvider, getTokenDecimals } = require('../helper/solana') const { PublicKey } = require('@solana/web3.js') const { Program, } = require("@project-serum/anchor"); -const idl = require('./idl') -const MINTS = [ - { - name: 'Bitcoin', - mintAddress: '9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E', - decimals: 6, - }, - { - name: 'Ethereum', - mintAddress: '2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk', - decimals: 6, - }, - { - symbol: 'SOL', - mintAddress: ADDRESSES.solana.SOL, - decimals: 9, - }, - { - symbol: 'USDC', - mintAddress: ADDRESSES.solana.USDC, - decimals: 6, - }, - { - symbol: 'SRM', - mintAddress: 'SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt', - decimals: 6, - }, - { - symbol: 'USDT', - mintAddress: ADDRESSES.solana.USDT, - decimals: 6, - }, -]; -const INTERNAL_DECIMALS = 12; - -const convertFromBN = (amount, decimals) => { - const amountStr = new BigNumber(amount.toString()); - const toDivAmount = `1${'0'.repeat(decimals)}`; - return amountStr.dividedBy(toDivAmount).toNumber(); -}; +const idl = require('./idl'); -const numberToFixed = (amount, fixed = 2) => { - return new BigNumber(amount).decimalPlaces(fixed).toNumber(); -}; +const INTERNAL_DECIMALS = 12; let tokenData @@ -56,39 +13,10 @@ async function _getTokenData() { const provider = getProvider() const program = new Program(idl, programId, provider) const data = await program.account.mainAccount.fetch(mainAccountAddress) - - const { balancesMap, pricesMap, } = data.tokens.reduce((acc, { mint }, i) => { - acc.pricesMap[mint.toBase58()] = data.prices[i]?.price || new BigNumber(0); - acc.balancesMap[mint.toBase58()] = data.balances[i]?.balance || { - borrowTotal: new BigNumber(0), - depositTotal: new BigNumber(0), - }; - return acc; - }, { balancesMap: {}, pricesMap: {}}); - - data.balancesMap = balancesMap; - data.pricesMap = pricesMap; - - - const tokens = MINTS.reduce((acc, token, i) => { - const { mintAddress, decimals } = token; - const depositTotal = numberToFixed(convertFromBN(data.balancesMap[mintAddress].depositTotal, INTERNAL_DECIMALS), decimals); - const borrowTotal = numberToFixed(convertFromBN(data.balancesMap[mintAddress].borrowTotal, INTERNAL_DECIMALS), decimals); - const available = BigNumber.maximum(new BigNumber(depositTotal).minus(borrowTotal), 0); - const price = convertFromBN(data.pricesMap[mintAddress], INTERNAL_DECIMALS); - - acc[mintAddress] = { - borrowed: { - usd: numberToFixed((borrowTotal * price)), - }, - available: { - usd: numberToFixed(available * price), - }, - }; - return acc; - }, {}); - - return tokens + data.tokens = data.tokens.slice(0, 6) + data.balances = data.balances.slice(0, 6) + data.tokenDecimals = await getTokenDecimals(data.tokens.map(({ mint }) => mint.toBase58())) + return data } async function getTokenData() { @@ -96,25 +24,32 @@ async function getTokenData() { return tokenData } -async function tvl() { +async function tvl(_, _1, _2, { api }) { const data = await getTokenData() - return { - tether: Object.values(data).reduce((a, i) => a + i.available.usd, 0) - } + data.tokens.forEach(({ mint }, i) => { + const token = mint.toBase58() + if (token === '9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E') return; // skip soBTC + const { balance: { depositTotal, borrowTotal } } = data.balances[i] + const decimals = 10 ** (data.tokenDecimals[token] - INTERNAL_DECIMALS) + api.add(token, depositTotal.toString() * decimals) + api.add(token, borrowTotal.toString() * -1 * decimals) + }) } -async function borrowed() { +async function borrowed(_, _1, _2, { api }) { const data = await getTokenData() - return { - tether: Object.values(data).reduce((a, i) => a + i.borrowed.usd, 0) - } + data.tokens.forEach(({ mint }, i) => { + const token = mint.toBase58() + const { balance: { borrowTotal } } = data.balances[i] + const decimals = 10 ** (data.tokenDecimals[token] - INTERNAL_DECIMALS) + api.add(token, borrowTotal.toString()* decimals) + }) } module.exports = { timetravel: false, - misrepresentedTokens: true, solana: { tvl, - borrowed, + borrowed: () => 0, }, } From e22eb741067f4afe980673c9c4c37378cd86a12d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 11:10:45 +0200 Subject: [PATCH 0609/1354] update azuro --- projects/azuro/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/azuro/index.js b/projects/azuro/index.js index e874c8e7f5..f822f13bab 100644 --- a/projects/azuro/index.js +++ b/projects/azuro/index.js @@ -5,9 +5,11 @@ const config = { polygon: { owners: [ '0x2a838ab9b037db117576db8d0dcc3b686748ef7c', + '0x7043E4e1c4045424858ECBCED80989FeAfC11B36', ], tokens: [ - ADDRESSES.polygon.USDC, // USDC + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDT, ], }, xdai: { From 8d86c2443d4a8e1a2c370fb857d35d21c76e5b15 Mon Sep 17 00:00:00 2001 From: define Date: Thu, 1 Jun 2023 15:19:41 +0100 Subject: [PATCH 0610/1354] add hallmark --- projects/dexilla/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js index 464fc2ef0c..b1dbad72a4 100644 --- a/projects/dexilla/index.js +++ b/projects/dexilla/index.js @@ -60,8 +60,11 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) { } module.exports = { + hallmarks: [ + [1685577300,"Rug Pull"] + ], misrepresentedTokens: false, methodology: 'TVL counts the ERC20 tokens on the exchange contracts.', - start: 1685022373, // May 25, 2023 @ 13:46:13 (UTC +0) + start: 1685022373, // May 25, 2023 @ 13:46:13 (UTC +0) , era: { tvl }, } From 782307317e38ad95d2fbc24eb8f636a4b6d29c82 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 16:41:22 +0200 Subject: [PATCH 0611/1354] add y2k v2 --- projects/oxygen/index.js | 1 - projects/y2k-finance/index.js | 3 ++- projects/y2k-v2/index.js | 50 +++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 projects/y2k-v2/index.js diff --git a/projects/oxygen/index.js b/projects/oxygen/index.js index 05e9f705ce..e86bd41253 100644 --- a/projects/oxygen/index.js +++ b/projects/oxygen/index.js @@ -28,7 +28,6 @@ async function tvl(_, _1, _2, { api }) { const data = await getTokenData() data.tokens.forEach(({ mint }, i) => { const token = mint.toBase58() - if (token === '9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E') return; // skip soBTC const { balance: { depositTotal, borrowTotal } } = data.balances[i] const decimals = 10 ** (data.tokenDecimals[token] - INTERNAL_DECIMALS) api.add(token, depositTotal.toString() * decimals) diff --git a/projects/y2k-finance/index.js b/projects/y2k-finance/index.js index 9bb770ebca..148b5c573b 100644 --- a/projects/y2k-finance/index.js +++ b/projects/y2k-finance/index.js @@ -26,6 +26,7 @@ async function tvl(timestamp, _b, chainBlocks, { api }) { module.exports = { arbitrum: { tvl, - staking: sumTokensExport({ chain, owners: [], tokens: ['0x65c936f008BC34fE819bce9Fa5afD9dc2d49977f']}) + // staking: sumTokensExport({ chain, owners: [], tokens: ['0x65c936f008BC34fE819bce9Fa5afD9dc2d49977f']}), + pool2: sumTokensExport({ chain, owners: ['0xaefd22d0153e69f3316dca9095e7279b3a2f8af2', '0xbDAA858Fd7b0DC05F8256330fAcB35de86283cA0',], tokens: ['0x569061e2d807881f4a33e1cbe1063bc614cb75a4']}) } } diff --git a/projects/y2k-v2/index.js b/projects/y2k-v2/index.js new file mode 100644 index 0000000000..da3dc9bf37 --- /dev/null +++ b/projects/y2k-v2/index.js @@ -0,0 +1,50 @@ +const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') + +const chain = 'arbitrum' + +async function tvl(timestamp, _b, chainBlocks, { api }) { + const logs = await getLogs({ + api, + fromBlock: 33934273, + eventAbi: 'event MarketCreated(uint256 indexed mIndex, address hedge, address risk, address token, string name, int256 strikePrice)', + topics: ['0xf38f00404415af51ddd0dd57ce975d015de2f40ba8a087ac48cd7552b7580f32'], + target: '0x984e0eb8fb687afa53fc8b33e12e04967560e092', + }) + + const vaults = logs.map(({ args }) => ([args.hedge, args.risk])).flat() + const tokens = await api.multiCall({ + abi: 'address:asset', + calls: vaults, + }) + const tokensAndOwners = tokens.map((token, i) => ([token, vaults[i]])) + + return sumTokens2({ api, tokensAndOwners }) +} + +const config = { + arbitrum: { factory: '0xC3179AC01b7D68aeD4f27a19510ffe2bfb78Ab3e', fromBlock: 96059531 , }, +} + + +Object.keys(config).forEach(chain => { + const { factory, fromBlock} = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0xe8066e93c2c1e100c0c76002a546075b7c6b53025db53708875180c81afda250'], + eventAbi: 'event MarketCreated (uint256 indexed marketId, address premium, address collateral, address underlyingAsset, address token, string name, uint256 strike, address controller)', + onlyArgs: true, + fromBlock, + }) + const premiums = logs.map(i => i.premium) + const collaterals = logs.map(i => i.collateral) + const pTokens = await api.multiCall({ abi: 'address:asset', calls: premiums }) + const cTokens = await api.multiCall({ abi: 'address:asset', calls: collaterals }) + return sumTokens2({ api, tokensAndOwners2: [[...pTokens, ...cTokens], [...premiums, ...collaterals]] }) + } + } +}) + From a3daeccd032c7ccc04cad51c10f345d2f90c3b10 Mon Sep 17 00:00:00 2001 From: zkSwap Date: Thu, 1 Jun 2023 20:31:03 +0530 Subject: [PATCH 0612/1354] zkSwap era staking data fix (#6443) * add zkswap on era * minor fix * fix zk-swap era staking --------- Co-authored-by: zk-swap Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zk-swap/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/zk-swap/index.js b/projects/zk-swap/index.js index a74f607f6c..0dde03d9ab 100644 --- a/projects/zk-swap/index.js +++ b/projects/zk-swap/index.js @@ -1,5 +1,5 @@ const { getUniTVL } = require('../helper/unknownTokens') -const { stakings } = require("../helper/staking"); +const { stakingUnknownPricedLP } = require("../helper/staking"); const factory = "0x5da48a338647e2DD79329b557b5729D8496aD83D"; const masterchef = "0x7bA76d4e4cBD4A9B7E3fd9a3B7Db067a51ca9682"; @@ -9,7 +9,13 @@ module.exports = { misrepresentedTokens: true, era: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, fetchBalances: true, }), - staking: stakings([masterchef], zks), + staking: stakingUnknownPricedLP( + masterchef, + zks, + "era", + "0x8489727b22Dd7eF8BbC91E0E88ee781cb2B27274", + (addr) => `era:${addr}` + ), }, }; From f0bde725ce82495dc80546337eb532b00007de3a Mon Sep 17 00:00:00 2001 From: Bruno Wu Date: Thu, 1 Jun 2023 16:04:48 +0100 Subject: [PATCH 0613/1354] Add GDX staking tvl and update hallmarks (#6444) * Add staking and update hallmarks * Add staking hallmark --------- Co-authored-by: Bruno Wu --- projects/gridex/index.js | 45 ++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/projects/gridex/index.js b/projects/gridex/index.js index 4646c9fef4..576048cb3d 100644 --- a/projects/gridex/index.js +++ b/projects/gridex/index.js @@ -1,35 +1,48 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); -const { getLogs } = require('../helper/cache/getLogs') +const { getLogs } = require("../helper/cache/getLogs"); +const { stakings } = require("../helper/staking"); + +const stakingContract = ["0x035E9062286FD19460B3E22970ebB5691EED2C25"]; +const GDX = ["0x2F27118E3D2332aFb7d165140Cf1bB127eA6975d"]; module.exports = { methodology: `Counts the tokens locked on order book grid`, hallmarks: [ [1672531200, "GDX Airdrop #1"], - [1672531200, "GDX Airdrop #2"], + [1677628800, "GDX Airdrop #2"], [1678838400, "Maker Rewards Launch"], - [1672531200, "GDX Airdrop #3"], + [1679616000, "GDX Airdrop #3"], + [1682294400, "GDX Staking Launch"], + [1682550000, "GDX Airdrop #4"], ], }; const config = { - arbitrum: { factory: '0x32d1F0Dce675902f89D72251DB4AB1d728efa19c', fromBlock: 64404349, }, -} + arbitrum: { + factory: "0x32d1F0Dce675902f89D72251DB4AB1d728efa19c", + fromBlock: 64404349, + }, +}; -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] +Object.keys(config).forEach((chain) => { + const { factory, fromBlock } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (_, _b, _cb, { api }) => { const logs = await getLogs({ api, target: factory, - topics: ['0xfe23981920c53fdfe858f29ee2c426fb8bf164162938c157cdf27bac46fccab7'], - eventAbi: 'event GridCreated (address indexed token0, address indexed token1, int24 indexed resolution, address grid)', + topics: [ + "0xfe23981920c53fdfe858f29ee2c426fb8bf164162938c157cdf27bac46fccab7", + ], + eventAbi: + "event GridCreated (address indexed token0, address indexed token1, int24 indexed resolution, address grid)", onlyArgs: true, fromBlock, - }) + }); - const ownerTokens = logs.map(i => [[i.token0, i.token1], i.grid]) - return sumTokens2({ api, ownerTokens, }) - } - } -}) \ No newline at end of file + const ownerTokens = logs.map((i) => [[i.token0, i.token1], i.grid]); + return sumTokens2({ api, ownerTokens }); + }, + staking: stakings(stakingContract, GDX), + }; +}); From 8f26888fab1529bff31affee67cb7a0a0d658d4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment?= <55331875+clement-ux@users.noreply.github.com> Date: Thu, 1 Jun 2023 17:07:04 +0200 Subject: [PATCH 0614/1354] fix: handle pendle locker (#6441) --- projects/stakedao/index.js | 59 +++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/projects/stakedao/index.js b/projects/stakedao/index.js index 56a43ede52..5b7678bcd6 100644 --- a/projects/stakedao/index.js +++ b/projects/stakedao/index.js @@ -113,13 +113,15 @@ async function tvl(timestamp, block, _, { api }) { sanFraxEurV3, angleSushiAgEurV3, angleGuniAgEurUSDCV3, - ] = await api.multiCall({ abi: abi[angle_sanUSDC_V3.abi], calls: [ - angle_sanUSDC_V3.sanUsdcEurGauge, - angle_sanDAI_V3.sanDaiEurGauge, - angle_sanFRAX_V3.sanFraxEurGauge, - angle_sushi_agEUR_V3.sushiAgEURGauge, - angle_guni_agEUR_usdc_V3.guniAgEURUsdcGauge, - ].map(i => ({ target: i, params: angle_sanUSDC_V3.contract}))}) + ] = await api.multiCall({ + abi: abi[angle_sanUSDC_V3.abi], calls: [ + angle_sanUSDC_V3.sanUsdcEurGauge, + angle_sanDAI_V3.sanDaiEurGauge, + angle_sanFRAX_V3.sanFraxEurGauge, + angle_sushi_agEUR_V3.sushiAgEURGauge, + angle_guni_agEUR_usdc_V3.guniAgEURUsdcGauge, + ].map(i => ({ target: i, params: angle_sanUSDC_V3.contract })) + }) // ==== Calls Rate ==== // const [ @@ -159,16 +161,39 @@ async function tvl(timestamp, block, _, { api }) { lockersInfos.push({ contract: `${resp[i].infos.locker}`, veToken: `${resp[i].infos.ve}`, token: `${resp[i].infos.token}` }) } + // To deal with special vePendle case + const vePendle = "0x4f30A9D41B80ecC5B94306AB4364951AE3170210" const calls = [] - for (let i = 0; i < lockersInfos.length; ++i) - calls.push({ - target: lockersInfos[i].veToken, - params: lockersInfos[i].contract - }) - const lockerBals = await api.multiCall({ abi: abi.locked, calls }) - lockerBals.forEach(({ amount }, i) => sdk.util.sumSingleBalance(balances, lockersInfos[i].token, amount)) - - return sumTokens2({ api, tokensAndOwners: strategies, balances, }) + const callsPendle = [] + for (let i = 0; i < lockersInfos.length; ++i) { + if (lockersInfos[i].veToken == vePendle) { + callsPendle.push({ + target: lockersInfos[i].veToken, + params: lockersInfos[i].contract + }) + } else { + calls.push({ + target: lockersInfos[i].veToken, + params: lockersInfos[i].contract + }) + } + } + + let lockerBals = await api.multiCall({ abi: abi.locked, calls }) + let lockerPendleBal = await api.multiCall({ abi: "function positionData(address arg0) view returns (uint128 amount, uint128 end)", calls: callsPendle }) + + for (let i = 0; i < lockersInfos.length; ++i) { + let amount; + if (lockersInfos[i].veToken == vePendle) { + amount = lockerPendleBal.shift().amount + console.log("pendle") + } else { + amount = lockerBals.shift().amount + } + sdk.util.sumSingleBalance(balances, lockersInfos[i].token, amount) + } + + return sumTokens2({ api, tokensAndOwners: strategies, balances, }) } async function staking(timestamp, block) { @@ -227,7 +252,7 @@ async function bsc(timestamp, ethBlock, chainBlocks, { api }) { fusdt3EPS_vault_bsc ].map(i => i.contract) - const [bitcoin, usdc, tether] = (await api.multiCall({ abi: abi.balance, calls: vaultsBsc}) ).map(i => i/1e18) + const [bitcoin, usdc, tether] = (await api.multiCall({ abi: abi.balance, calls: vaultsBsc })).map(i => i / 1e18) return { bitcoin, tether, 'usd-coin': usdc } From e895a060f702a3724de4d44fa2b43cdac3eb480c Mon Sep 17 00:00:00 2001 From: Noah Bayindirli Date: Thu, 1 Jun 2023 10:25:11 -0700 Subject: [PATCH 0615/1354] Update prime-protocol adapter to use MAINNET v1.6.0 PToken addresses (#6435) * Update prime-protocol adapter to use MAINNET v1.6.0 PToken addresses * Add version # to asset names --- projects/prime-protocol/index.js | 72 ++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 12 deletions(-) diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js index b2b55ea51f..e48b424f25 100644 --- a/projects/prime-protocol/index.js +++ b/projects/prime-protocol/index.js @@ -11,60 +11,108 @@ const MASTER_VIEW_CONTRACT = { }; const MOONBEAM_MARKETS = { - GLMR: { + GLMR_v146: { + pTokenMarketAddress: '0x53d5a47bb874eE688acb479676aD133d47CB9B25', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + }, + whUSDC_v146: { + pTokenMarketAddress: '0x5f8d500ec32dB09aa3115a852f30e9C756867d5A', + pTokenUnderlyingAddress: '0x931715FEE2d06333043d11F658C8CE934aC61D0c', + }, + xcUSDT_v146: { + pTokenMarketAddress: '0x1D5CC7840a05BA39Db0AAd21e14dF1ff09b599ED', + pTokenUnderlyingAddress: '0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d', + }, + xcDOT_v146: { + pTokenMarketAddress: '0x8f7F208F38A4362e6Fe6112b720630f93bb608aA', + pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + }, + GLMR_v160: { pTokenMarketAddress: '0xdC427cDB81E1532747BEDeB8077a4AEcDbfB585e', pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', }, - whUSDC: { + whUSDC_v160: { pTokenMarketAddress: '0x227EEB717a3Ec78025bE51c87b3A7160192613D2', pTokenUnderlyingAddress: '0x931715FEE2d06333043d11F658C8CE934aC61D0c', }, - xcUSDT: { + xcUSDT_v160: { pTokenMarketAddress: '0x8ef25FAC30DeD9A210151C1d27e58F71f2142e2f', pTokenUnderlyingAddress: '0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d', }, - xcDOT: { + xcDOT_v160: { pTokenMarketAddress: '0x525c6B3D27B6b1Fc28bca7dc04964247c1a942B1', pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', } }; const AVALANCHE_MARKETS = { - ETH: { + ETH_v146: { + pTokenMarketAddress: '0x94ebF80b33120a1AbE370E56192db39f4944b6ca', + pTokenUnderlyingAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + }, + USDC_v146: { + pTokenMarketAddress: '0x6Cce9601CA44a9049A761C22b70D5849662c2C0a', + pTokenUnderlyingAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + }, + USDT_v146: { + pTokenMarketAddress: '0xe06F55FB6c6C62b74AAD7eb77f00b06920FB176e', + pTokenUnderlyingAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', + }, + ETH_v160: { pTokenMarketAddress: '0x4Ebba16380fEb2083938c008aEDD4b5EBeA80f72', pTokenUnderlyingAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', }, - USDC: { + USDC_v160: { pTokenMarketAddress: '0x73c5c93E78cB8CA4939307e0D95e032631fB9eEe', pTokenUnderlyingAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', }, - USDT: { + USDT_v160: { pTokenMarketAddress: '0x1BF6752282039ee82C06DE64D094C9E35578A1a0', pTokenUnderlyingAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', }, }; const ARBITRUM_MARKETS = { - ETH: { + ETH_v146: { + pTokenMarketAddress: '0x2E9F73aA3F16748C9c1E8243D204d60F87dEC872', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + }, + USDC_v146: { + pTokenMarketAddress: '0x1b0509D8CC044805F54D132ccDa7b4A4ED88261A', + pTokenUnderlyingAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + }, + ETH_v160: { pTokenMarketAddress: '0xc01683398fFCc86264ba17bC36977f51A1d25e06', pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', }, - USDC: { + USDC_v160: { pTokenMarketAddress: '0xddC6Df52F9749ED80966Fb6a9D4C87264cC1e6C1', pTokenUnderlyingAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', }, }; const ETHEREUM_MARKETS = { - ETH: { + ETH_v146: { + pTokenMarketAddress: '0xD15a15C0b6d79D9E59F4fcC0D17912219f6b470C', + pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + }, + USDC_v146: { + pTokenMarketAddress: '0x8F0Ba37DAC51a8102b1203C9D9ac26724DC684Ac', + pTokenUnderlyingAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + }, + USDT_v146: { + pTokenMarketAddress: '0x373bb8bE40Ee6f704576CDC815372ff71d6825c5', + pTokenUnderlyingAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + }, + ETH_v160: { pTokenMarketAddress: '0xd833F882ca07F69C4C5a069675B6B65C235325C3', pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', }, - USDC: { + USDC_v160: { pTokenMarketAddress: '0x67CeC45eB8d9f059D4c974a4BdEA357b68Ad80Ef', pTokenUnderlyingAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', }, - USDT: { + USDT_v160: { pTokenMarketAddress: '0xDC313B592949E8F4bB91A22c6DC9f7BE11b74Ea7', pTokenUnderlyingAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', }, From 77b95cc0890036bb89a92fc45dced88109bb3e05 Mon Sep 17 00:00:00 2001 From: DEFI FOUNDATION <106986644+DEFI-Foundation@users.noreply.github.com> Date: Thu, 1 Jun 2023 19:26:55 +0200 Subject: [PATCH 0616/1354] updated metalswap project optimism chain (#6446) Co-authored-by: Marco Braglia --- projects/metalswap/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/metalswap/index.js b/projects/metalswap/index.js index 84701992a4..6795699513 100644 --- a/projects/metalswap/index.js +++ b/projects/metalswap/index.js @@ -39,6 +39,16 @@ const config = { '0x799BfC125170ab4dF34E9dC07DB47AA0edB9bC7C', // Smart Pool 6 months + 6 months ], }, + + optimism: { + toa: [ + [nullAddress, '0x5B7C5daa5f4Bb37c457dA468Da1CDaA6219892A1'], // ETH pool + [ADDRESSES.optimism.USDC, '0x24682cFDc060316355C26C420d0748F289502e83'], //usdt pool new + ['0x68f180fcCe6836688e9084f035309E29Bf0A2095', '0x469CC7AF1696B5e4E6151796Dc3B3fEf39b34f39'], //wbtc pool new + [ADDRESSES.optimism.OP, '0xc9394748D5f633152AD3F8f557a9B7743148db1B'], //Op pool new + ], + token: '0x3E5D9D8a63CC8a88748f229999CF59487e90721e', + }, } module.exports = { From e54a7886b51a6436b22a00b15c1cfc562d706840 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 20:47:28 +0200 Subject: [PATCH 0617/1354] add compound fork paribus: https://app.paribus.io/ --- projects/paribus/index.js | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/paribus/index.js diff --git a/projects/paribus/index.js b/projects/paribus/index.js new file mode 100644 index 0000000000..483c5cea70 --- /dev/null +++ b/projects/paribus/index.js @@ -0,0 +1,4 @@ +const { compoundExports2 } = require('../helper/compound') +module.exports = { + arbitrum: compoundExports2({ comptroller: '0x712E2B12D75fe092838A3D2ad14B6fF73d3fdbc9', cether: '0xaffd437801434643b734d0b2853654876f66f7d7' }), +} \ No newline at end of file From 80d89245146edb66a3bac2e06f06e12241259e98 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 21:01:16 +0200 Subject: [PATCH 0618/1354] add https://www.unlimited.trade --- projects/unlimited-trade/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/unlimited-trade/index.js diff --git a/projects/unlimited-trade/index.js b/projects/unlimited-trade/index.js new file mode 100644 index 0000000000..d8dbac40ac --- /dev/null +++ b/projects/unlimited-trade/index.js @@ -0,0 +1,21 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + arbitrum: { + pools: [ + '0x1eBB487B42530D511091DC6bC4359ee767ad0d16', // bluechip + '0x0155d3f48e51e108f0dfF56F6EFBeA1A870B3cE7', // altcoin + '0x20A1012B79e8F3cA3f802533c07934eF97398dA7', // degen + ], + } +} + +Object.keys(config).forEach(chain => { + const { pools } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const tokens = await api.multiCall({ abi: 'address:asset', calls: pools}) + return sumTokens2({ api, tokensAndOwners2: [tokens, pools] }) + } + } +}) \ No newline at end of file From 0a75a3c221eb1c3cd2b72e591bfb87d46bc2aa09 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 21:47:30 +0200 Subject: [PATCH 0619/1354] add openeden t-bill: https://openeden.com/ --- projects/openeden-tbill/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/openeden-tbill/index.js diff --git a/projects/openeden-tbill/index.js b/projects/openeden-tbill/index.js new file mode 100644 index 0000000000..d5a4d63f31 --- /dev/null +++ b/projects/openeden-tbill/index.js @@ -0,0 +1,12 @@ +async function tvl(_, _b, _cb, { api, }) { + const contract = '0xad6250f0bd49f7a1eb11063af2ce9f25b9597b0f' + const [bal, token] = await api.batchCall([ + { abi: 'uint256:assetsAvailable', target: contract }, + { abi: 'address:asset', target: contract }, + ]) + api.add(token, bal) +} + +module.exports = { + ethereum: { tvl }, +} \ No newline at end of file From afd540f7d9e055d89615a2c682dcf18d37a97c38 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:05:45 +0200 Subject: [PATCH 0620/1354] liqwid: use cache --- projects/liqwid/api.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/liqwid/api.js diff --git a/projects/liqwid/api.js b/projects/liqwid/api.js new file mode 100644 index 0000000000..b50b56a397 --- /dev/null +++ b/projects/liqwid/api.js @@ -0,0 +1,6 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + ...getExports("liqwid", ['cardano']), +} \ No newline at end of file From c12824179faa28c2c0748a182cc028fc5173cdbd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Jun 2023 23:13:53 +0200 Subject: [PATCH 0621/1354] fix dxsale issue --- projects/helper/cache/vestingHelper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/cache/vestingHelper.js b/projects/helper/cache/vestingHelper.js index 09e59ed71e..3fb9c113d0 100644 --- a/projects/helper/cache/vestingHelper.js +++ b/projects/helper/cache/vestingHelper.js @@ -16,7 +16,7 @@ async function vestingHelper({ tokens = getUniqueAddresses(tokens) blacklist = getUniqueAddresses(blacklist) tokens = tokens.filter(t => !blacklist.includes(t)) - const chunks = sliceIntoChunks(tokens, 4000) + const chunks = sliceIntoChunks(tokens, 1000) const finalBalances = {} for (let i = 0; i < chunks.length; i++) { log('resolving for %s/%s of total tokens: %s (chain: %s)', i + 1, chunks.length, tokens.length, chain) From a5e0f25dbdf68b747a27d2e513601b6d5a3a914e Mon Sep 17 00:00:00 2001 From: park1847 <95893422+park1847@users.noreply.github.com> Date: Fri, 2 Jun 2023 15:50:26 +0900 Subject: [PATCH 0622/1354] re-add xpla (#6437) * xpla file add * fix PromisePool * fix try{} * bug fix * xpla: code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chain/cosmos.js | 1 + projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ projects/xpla/index.js | 10 ++++++++++ 4 files changed, 15 insertions(+) create mode 100644 projects/xpla/index.js diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 23d98f29fa..7f37ccfcba 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -24,6 +24,7 @@ const endPoints = { injective: "https://lcd-injective.whispernode.com:443", migaloo: "https://migaloo-api.polkachu.com", fxcore: "https://fx-rest.functionx.io", + xpla: "https://dimension-lcd.xpla.dev", }; const chainSubpaths = { diff --git a/projects/helper/chains.json b/projects/helper/chains.json index b43e4c983d..3fbf27bd85 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -205,6 +205,7 @@ "wemix", "xdai", "xdc", + "xpla", "zeniq", "zilliqa", "zksync", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index db9a7cafcf..d739ac330d 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -72,6 +72,9 @@ const fixBalancesTokens = { 'FX': { coingeckoId: "fx-coin", decimals: 18 }, 'usdt': { coingeckoId: "tether", decimals: 6 }, }, + xpla: { + 'axpla': { coingeckoId: "xpla", decimals: 18 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/xpla/index.js b/projects/xpla/index.js new file mode 100644 index 0000000000..19430cd40f --- /dev/null +++ b/projects/xpla/index.js @@ -0,0 +1,10 @@ +const { getFactoryTvl } = require('../terraswap/factoryTvl') + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + methodology: "Liquidity on the DEX", + xpla: { + tvl: getFactoryTvl('xpla1j33xdql0h4kpgj2mhggy4vutw655u90z7nyj4afhxgj4v5urtadq44e3vd') + }, +} \ No newline at end of file From a648217cbd21a6138c09840881f6c021277f3dae Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Jun 2023 12:32:28 +0530 Subject: [PATCH 0623/1354] Tropykus (#6449) * Added Tropykus zkEVM * Removed unnecesary characters * new listing for tropykus zkevm --------- Co-authored-by: dacarva --- projects/tropykus-zkevm/index.js | 6 ++++++ projects/tropykus/index.js | 6 ++---- 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 projects/tropykus-zkevm/index.js diff --git a/projects/tropykus-zkevm/index.js b/projects/tropykus-zkevm/index.js new file mode 100644 index 0000000000..70dce7d075 --- /dev/null +++ b/projects/tropykus-zkevm/index.js @@ -0,0 +1,6 @@ +const { aaveExports } = require('../helper/aave'); + +module.exports = { + methodology: `Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending`, + polygon_zkevm: aaveExports("polygon_zkevm", "0x4Dac514F520D051551372d277d1b2Fa3cF2AfdFF"), +} \ No newline at end of file diff --git a/projects/tropykus/index.js b/projects/tropykus/index.js index 28c69da162..f0bb4e9dbd 100644 --- a/projects/tropykus/index.js +++ b/projects/tropykus/index.js @@ -1,7 +1,5 @@ const { usdCompoundExports } = require('../helper/compound') module.exports = { - rsk: { - ...usdCompoundExports("0x962308fEf8edFaDD705384840e7701F8f39eD0c0", "rsk"), - } -} + rsk: usdCompoundExports("0x962308fEf8edFaDD705384840e7701F8f39eD0c0", "rsk"), +} \ No newline at end of file From e9228ed7b4fd9d5e6e4096d7f51bb8cfdd2b9598 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Jun 2023 14:27:26 +0530 Subject: [PATCH 0624/1354] refactor kava adapters (#6452) --- projects/hard.js | 84 ++++++++------------------------- projects/helper/chain/cosmos.js | 2 + projects/helper/tokenMapping.js | 22 +++++++++ projects/kava-boost/index.js | 48 +++++-------------- projects/kava-earn/index.js | 42 ++++------------- projects/kava-liquid/index.js | 37 +++------------ projects/kava.js | 50 ++++---------------- projects/kavaswap.js | 54 +++++---------------- projects/wrappedBNB.js | 9 ++-- 9 files changed, 95 insertions(+), 253 deletions(-) diff --git a/projects/hard.js b/projects/hard.js index 62896c7d51..6794b903d8 100644 --- a/projects/hard.js +++ b/projects/hard.js @@ -1,76 +1,30 @@ -const { get } = require('./helper/http'); +const { queryV1Beta1 } = require('./helper/chain/cosmos'); +const { transformBalances } = require('./helper/portedTokens') -const KAVA_DENOM = "ukava"; -const HARD_DENOM = "hard"; -const USDX_DENOM = "usdx"; -const BNB_DENOM = "bnb"; -const BTC_DENOM = "btcb"; -const BUSD_DENOM = "busd"; -const XRPB_DENOM = "xrpb"; -const ATOM_DENOM = "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2"; -const AKT_DENOM = "ibc/799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098"; -const AXLUSDC_DENOM = "erc20/axelar/usdc"; -const MULTICHAIN_WBTC = "erc20/multichain/wbtc"; -const MULTICHAIN_USDC = "erc20/multichain/usdc"; -const MULTICHAIN_USDT = "erc20/multichain/usdt"; - -const coingeckoIds = { - [KAVA_DENOM]: 'kava', - [HARD_DENOM]: 'kava-lend', - [USDX_DENOM]: 'usdx', - [BNB_DENOM]: 'binancecoin', - [BTC_DENOM]: 'bitcoin', - [BUSD_DENOM]: 'binance-usd', - [XRPB_DENOM]: 'ripple', - [ATOM_DENOM]: 'cosmos', - [AKT_DENOM]: 'akash-network', - [AXLUSDC_DENOM]: 'axlusdc', - [MULTICHAIN_WBTC]: 'wrapped-bitcoin', - [MULTICHAIN_USDC]: 'usd-coin', - [MULTICHAIN_USDT]: 'tether', -} -const decimals = { - [KAVA_DENOM]: 6, - [HARD_DENOM]: 6, - [USDX_DENOM]: 6, - [BNB_DENOM]: 8, - [BTC_DENOM]: 8, - [BUSD_DENOM]: 8, - [XRPB_DENOM]: 8, - [ATOM_DENOM]: 6, - [AKT_DENOM]: 6, - [AXLUSDC_DENOM]: 6, - [MULTICHAIN_WBTC]: 8, - [MULTICHAIN_USDC]: 6, - [MULTICHAIN_USDT]: 6, - [AXLUSDC_DENOM]: 6, - [AXLUSDC_DENOM]: 6, -} +const chain = 'kava' const tvl = async (_, _1, _2, { api }) => { - const totalDeposited = await get('https://api2.kava.io/hard/total-deposited'); - const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed'); - - for (const coin of totalDeposited.result) { - const borrowed = Number(totalBorrowed.result.find(item => item.denom === coin.denom)?.amount || 0); - api.add(coingeckoIds[coin.denom], (coin.amount - borrowed) / (10 ** decimals[coin.denom]), { skipChain: true }) - } + const [deposited, borrowed] = await Promise.all([ + queryV1Beta1({ chain, url: 'hard/v1beta1/total-deposited' }), + queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) + ]) + deposited.supplied_coins.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) + borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount * -1, { skipChain: true })) + return transformBalances(chain, api.getBalances()) } -const borrowed = async (_, _1, _2, { api }) => { - const totalBorrowed = await get('https://api2.kava.io/hard/total-borrowed'); - for (const coin of totalBorrowed.result) { - api.add(coingeckoIds[coin.denom], coin.amount / (10 ** decimals[coin.denom]), { skipChain: true }) - } +const borrowed = async (_, _1, _2, { api }) => { + const borrowed = await queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) + borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) + return transformBalances(chain, api.getBalances()) } - module.exports = { - timetravel: false, - kava: { - tvl, - borrowed - } + timetravel: false, + kava: { + tvl, + borrowed + } } diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 7f37ccfcba..e891459b80 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -25,12 +25,14 @@ const endPoints = { migaloo: "https://migaloo-api.polkachu.com", fxcore: "https://fx-rest.functionx.io", xpla: "https://dimension-lcd.xpla.dev", + kava: "https://api2.kava.io", }; const chainSubpaths = { crescent: "crescent", comdex: "comdex", umee: "umee", + kava: "kava", }; function getEndpoint(chain) { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index d739ac330d..f629672f5f 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -75,6 +75,28 @@ const fixBalancesTokens = { xpla: { 'axpla': { coingeckoId: "xpla", decimals: 18 }, }, + kava: { + 'bnb': { coingeckoId: "binancecoin", decimals: 8 }, + 'btcb': { coingeckoId: "bitcoin", decimals: 8 }, + 'busd': { coingeckoId: "binance-usd", decimals: 8 }, + 'hard': { coingeckoId: "kava-lend", decimals: 6 }, + 'swp': { coingeckoId: "kava-swap", decimals: 6 }, + 'ukava': { coingeckoId: "kava", decimals: 6 }, + 'bkava': { coingeckoId: "kava", decimals: 6 }, + 'xrpb': { coingeckoId: "ripple", decimals: 8 }, + 'usdx': { coingeckoId: "usdx", decimals: 6 }, + 'hbtc': { coingeckoId: "huobi-btc", decimals: 8 }, + 'erc20:axelar:usdc': { coingeckoId: "usd-coin", decimals: 6 }, + 'erc20:multichain:usdc': { coingeckoId: "usd-coin", decimals: 6 }, + 'erc20:multichain:usdt': { coingeckoId: "tether", decimals: 6 }, + 'erc20:multichain:wbtc': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, + 'erc20:multichain:dai': { coingeckoId: "dai", decimals: 18 }, + 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2': { coingeckoId: "cosmos", decimals: 6 }, + 'ibc/799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098': { coingeckoId: "akash-network", decimals: 6 }, + 'ibc/B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395': { coingeckoId: "terra-luna", decimals: 6 }, + 'ibc/0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B': { coingeckoId: "osmosis", decimals: 6 }, + 'ibc/B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C': { coingeckoId: "terrausd", decimals: 6 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/kava-boost/index.js b/projects/kava-boost/index.js index a6c9be3dcc..dccf1829bb 100644 --- a/projects/kava-boost/index.js +++ b/projects/kava-boost/index.js @@ -1,44 +1,18 @@ -const utils = require("../helper/utils"); -const sdk = require("@defillama/sdk"); +const { queryV1Beta1 } = require('../helper/chain/cosmos'); +const { transformBalances } = require('../helper/portedTokens') -async function tvl() { - let balances = {}; - let url = `https://api2.kava.io/kava/savings/v1beta1/total_supply`; +const chain = 'kava' +const blacklisted = new Set(['kava', 'ukava', 'bkava']) - const response = await utils.fetchURL(url); - - for (let coin of response.data.result) { - const tokenInfo = generic(coin.denom); - if (!tokenInfo) { - sdk.log("unknown token", coin.denom); - continue; - } - const tokenName = tokenInfo[0]; - if (tokenName !== 'kava') - sdk.util.sumSingleBalance(balances,tokenName,coin.amount / 10 ** tokenInfo[1]) - } - - return balances; -} - -function generic(ticker) { - switch (ticker) { - case "bkava": - return ["kava", 6]; - case "ukava": - return ["kava", 6]; - case "erc20/multichain/usdc": - return ["usd-coin", 6]; - case "erc20/multichain/usdt": - return ["tether", 6]; - case "erc20/multichain/dai": - return ["dai", 18]; - case "bnb": - return ["binancecoin", 8] - } +async function tvl(_, _1, _2, { api }) { + const { result: pools } = await queryV1Beta1({ chain, url: '/savings/v1beta1/total_supply' }); + pools + .filter(({ denom }) => !blacklisted.has(denom)) + .forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) + return transformBalances(chain, api.getBalances()) } module.exports = { timetravel: false, kava: { tvl } -}; +}; \ No newline at end of file diff --git a/projects/kava-earn/index.js b/projects/kava-earn/index.js index 6dc6f5a6a8..a216e2de7c 100644 --- a/projects/kava-earn/index.js +++ b/projects/kava-earn/index.js @@ -1,41 +1,15 @@ -const utils = require("../helper/utils"); -const sdk = require("@defillama/sdk"); +const { queryV1Beta1 } = require('../helper/chain/cosmos'); +const { transformBalances } = require('../helper/portedTokens') -async function tvl() { - const balances = {}; - let url = `https://api2.kava.io/kava/earn/v1beta1/total_supply`; +const chain = 'kava' - const response = await utils.fetchURL(url); - - for (let coin of response.data.result) { - const tokenInfo = generic(coin.denom); - if (!tokenInfo) { - utils.log("unknown token", coin.denom); - continue; - } - const tokenName = tokenInfo[0]; - sdk.util.sumSingleBalance(balances,tokenName,coin.amount / 10 ** tokenInfo[1]) - } - - return balances; -} - -function generic(ticker) { - switch (ticker) { - case "bkava": - return ["kava", 6]; - case "ukava": - return ["kava", 6]; - case "erc20/multichain/usdc": - return ["usd-coin", 6]; - case "erc20/multichain/usdt": - return ["tether", 6]; - case "erc20/multichain/dai": - return ["dai", 18]; - } +async function tvl(_, _1, _2, { api }) { + const { result: pools } = await queryV1Beta1({ chain, url: '/earn/v1beta1/total_supply' }); + pools.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) + return transformBalances(chain, api.getBalances()) } module.exports = { timetravel: false, kava: { tvl } -}; +}; \ No newline at end of file diff --git a/projects/kava-liquid/index.js b/projects/kava-liquid/index.js index 32ade01563..9dc7593879 100644 --- a/projects/kava-liquid/index.js +++ b/projects/kava-liquid/index.js @@ -1,37 +1,14 @@ -const utils = require("../helper/utils"); -// const sdk = require("@defillama/sdk"); +const { queryV1Beta1 } = require('../helper/chain/cosmos'); +const { transformBalances } = require('../helper/portedTokens') -async function tvl(timestamp) { - let totalValueLocked = {}; - let url = `https://api2.kava.io/kava/liquid/v1beta1/total_supply`; - // if (Math.abs(Date.now() / 1000 - timestamp) > 3600) { - // const block = await sdk.api.util.lookupBlock(timestamp, { chain: "kava" }); - // url += `?height=${block.block}`; - // } +const chain = 'kava' - const response = await utils.fetchURL(url); - - for (let coin of response.data.result) { - const tokenInfo = generic(coin.denom); - if (!tokenInfo) { - utils.log("unknown token", coin.denom); - continue; - } - - totalValueLocked[tokenInfo[0]] = coin.amount / 10 ** tokenInfo[1]; - } - return totalValueLocked; -} - - -function generic(ticker) { - switch (ticker) { - case "ukava": - return ["kava", 6]; - } +async function tvl(_, _1, _2, { api }) { + const { result: pools } = await queryV1Beta1({ chain, url: '/liquid/v1beta1/total_supply' }); + pools.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) + return transformBalances(chain, api.getBalances()) } - module.exports = { timetravel: false, kava: { tvl } diff --git a/projects/kava.js b/projects/kava.js index aca65536ce..ce46f925f6 100644 --- a/projects/kava.js +++ b/projects/kava.js @@ -1,45 +1,11 @@ -const { get } = require('./helper/http') - -async function tvl() { - let balances = {}; - - let deposits = (await get('https://api2.kava.io/cdp/totalCollateral')).result; - for (let i = 0; i < deposits.length; i++) { - const info = convertSymbol(deposits[i].amount.denom); - if (info.id in balances) { - balances[info.id] = Number(balances[info.id]) + - Number(deposits[i].amount.amount / 10 ** info.decimals); - } else { - balances[info.id] = deposits[i].amount.amount / 10 ** info.decimals; - } - } - - return balances; -} - -function convertSymbol(symbol) { - switch (symbol) { - case 'bnb': - return {id: 'binancecoin', decimals: 8}; - case 'btcb': - return {id: 'bitcoin', decimals: 8}; - case 'busd': - return {id: 'binance-usd', decimals: 8}; - case 'hard': - return {id: 'kava-lend', decimals: 6}; - case 'hbtc': - return {id: 'huobi-btc', decimals: 8}; - case 'swp': - return {id: 'kava-swap', decimals: 6}; - case 'ukava': - return {id: 'kava', decimals: 6}; - case 'xrpb': - return {id: 'ripple', decimals: 8}; - case 'ibc/B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C': - return {id: 'terra-usd', decimals: 6}; - default: - console.log(symbol); - } +const { queryV1Beta1 } = require('./helper/chain/cosmos'); +const { transformBalances } = require('./helper/portedTokens') + +const chain = 'kava' +async function tvl(_, _1, _2, { api }) { + const { total_collateral: pools } = await queryV1Beta1({ chain, url: 'cdp/v1beta1/totalCollateral' }); + pools.forEach(({ amount: { denom, amount} }) => api.add(denom, amount, { skipChain: true })) + return transformBalances(chain, api.getBalances()) } module.exports = { diff --git a/projects/kavaswap.js b/projects/kavaswap.js index 13527e7327..dd16b263bf 100644 --- a/projects/kavaswap.js +++ b/projects/kavaswap.js @@ -1,48 +1,18 @@ -const utils = require('./helper/utils'); -const sdk = require('@defillama/sdk') +const { queryV1Beta1 } = require('./helper/chain/cosmos'); +const { transformDexBalances } = require('./helper/portedTokens') -async function tvl(timestamp, ethBlock, chainBlocks) { - let balances = {}; - let url = `https://api2.kava.io/swap/pools` - if(Math.abs(Date.now()/1000 - timestamp) > 3600){ - const block = await sdk.api.util.lookupBlock(timestamp, {chain:'kava'}) - url += `?height=${block.block}` - } +const chain = 'kava' - const response = await utils.fetchURL(url); +async function tvl() { + const { pools } = await queryV1Beta1({ chain, url: 'swap/v1beta1/pools' }); - for (let pool of response.data.result) { - for (let coin of pool.coins) { - let tokenInfo = generic(coin.denom); - if(!tokenInfo) { - sdk.log('unknown token', coin.denom) - continue; - } - if (balances[tokenInfo[0]]) { - balances[tokenInfo[0]] += coin.amount / 10**tokenInfo[1]; - } else { - balances[tokenInfo[0]] = coin.amount / 10**tokenInfo[1]; - } - } - } -return balances; -} -function generic(ticker) { - switch(ticker) { - case 'bnb': return ['binancecoin',8]; - case 'btcb': return ['bitcoin',8]; - case 'busd': return ['binance-usd',8]; - case 'hard': return ['kava-lend',6]; - case 'swp': return ['kava-swap',6]; - case 'ukava': return ['kava',6]; - case 'xrpb': return ['ripple',8]; - case 'usdx': return ['usdx',6]; - case 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2': return ['cosmos',6]; - case 'ibc/799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098': return ['akash-network',6]; - case 'ibc/B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395': return ['terra-luna',6]; - case 'ibc/0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B': return ['osmosis',6]; - case 'ibc/B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C': return ['terrausd',6]; - } + const data = pools.map(({ coins }) => ({ + token0: coins[0].denom, + token1: coins[1].denom, + token0Bal: coins[0].amount, + token1Bal: coins[1].amount + })) + return transformDexBalances({ chain, data }) } module.exports = { diff --git a/projects/wrappedBNB.js b/projects/wrappedBNB.js index df834cabe7..f7b9e4c283 100644 --- a/projects/wrappedBNB.js +++ b/projects/wrappedBNB.js @@ -1,8 +1,11 @@ -const { get } = require('./helper/http') +const { queryV1Beta1 } = require('./helper/chain/cosmos'); +const { transformBalances } = require('./helper/portedTokens') + +const chain = 'kava' async function tvl() { - const data = await get('https://api2.kava.io/kava/bep3/v1beta1/assetsupply/bnb') // https://swagger.kava.io/#/BEP3/BEP3AssetSupply - return { 'binancecoin': data.asset_supply.current_supply.amount / 1e8 }; + const data = await queryV1Beta1({ chain, url: '/bep3/v1beta1/assetsupply/bnb'}) // https://swagger.kava.io/#/BEP3/BEP3AssetSupply + return transformBalances(chain, { bnb: data.asset_supply.current_supply.amount}) } module.exports = { From a387ff53200f8ed7bb70497c4349011a61fb48fa Mon Sep 17 00:00:00 2001 From: define Date: Fri, 2 Jun 2023 10:23:31 +0100 Subject: [PATCH 0625/1354] add btc wallet do maskex --- projects/maskex/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/maskex/index.js b/projects/maskex/index.js index 22c79f348e..fe9b6f6268 100644 --- a/projects/maskex/index.js +++ b/projects/maskex/index.js @@ -67,6 +67,11 @@ const config = { 'TYshj25EXjnPB7P5xRGLmFTNPV6HMoZyrq', 'TUiATx1SGs3TwwKY1atafMvYjrQD8KLiSk', ] + }, + bitcoin: { + owners: [ + '39DUz1NCkLu25GczWiAjjgZBu4mUjKbdNA', // this wallet was collected from https://blog.maskex.com/news/announcements/embracing-transparency-maskex-reveals-wallet-addresses + ] } } From 29fbe037598bd3bea09af42d0bf476cfdd835831 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 2 Jun 2023 13:20:25 +0100 Subject: [PATCH 0626/1354] add adapter chainport on chain --- projects/chainport1/index.js | 91 ++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 projects/chainport1/index.js diff --git a/projects/chainport1/index.js b/projects/chainport1/index.js new file mode 100644 index 0000000000..bf340a8dca --- /dev/null +++ b/projects/chainport1/index.js @@ -0,0 +1,91 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') + +//ETH + +const vault1eth = "0x894107b7b5051409f279e8300774b2f62febe057" +const vault2eth = "0xD2238E8c085E5059F8DFC52256530210bc7250F6" +const vault3eth = "0x7B8FDfCf79E72a9a8e656958647D139C0e16EA19" +const vault4eth = "0xfe83475880d3592833249baaacfec5ed51e29d82" +const vault5eth = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" +const vault6eth = "0x450aD18B4442ce2972Af2a7A12439984db4Afaf9" +const vault7eth = "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a" + +const portx = "0x104F3152D8ebFC3f679392977356962Ff36566aC" + +//BSC CHAIN + +const vault1bsc = "0x2cd90158baae285010a5ed7c549c2e5b4c0715f4"; +const vault2bsc = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" + +//Polygon + +const vault1poly= "0xc07cd7fcda887119bff8e1eed2256ad433bee125"; +const vault2poly = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" + +//Fantom + +const vault1ftm= "0xc30da5144d1b9f47ff86345fee14fe2da94c7203"; +const vault2ftm = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.BUSD, + "0x8B3870Df408fF4D7C3A26DF852D41034eDa11d81", + "0x0000000DE40dfa9B17854cBC7869D80f9F98D823", + "0x42Baf1f659D765C65ADE5BB7E08eb2C680360d9d", //CORNOPIA + "0xBb3A8FD6Ec4bF0FDc6Cd2739b1e41192D12B1873", + "0x3496B523e5C00a4b4150D6721320CdDb234c3079", + "0x5F0bc16D50F72d10b719dBF6845DE2E599eb5624", + "0x7659CE147D0e714454073a5dd7003544234b6Aa0", + "0x80D55c03180349Fff4a229102F62328220A96444", + "0xD567B5F02b9073aD3a982a099a23Bf019FF11d1c", + "0x4674a4F24C5f63D53F22490Fb3A08eAAAD739ff8", + "0x2653891204F463fb2a2F4f412564b19e955166aE", + "0x43A96962254855F16b925556f9e97BE436A43448", + "0x4da0C48376C277cdBd7Fc6FdC6936DEE3e4AdF75", + "0x8E0fE2947752BE0d5ACF73aaE77362Daf79cB379", + "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430" + ], + owners: [vault1eth, vault2eth, vault3eth, vault4eth, vault5eth, vault6eth, vault7eth], + ownTokens: [portx], + }, + bsc: { + tokens: [ + nullAddress, + "0x5B6bf0c7f989dE824677cFBD507D9635965e9cD3", + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.WBNB, + "0xF93f6b686f4A6557151455189a9173735D668154" + ], + owners: [vault1bsc, vault2bsc], + }, + polygon: { + tokens: [ + nullAddress, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.BUSD, + ADDRESSES.polygon.USDT, + "0x04d80CdF20285d5Ac590BBAd97C887b9C6781774", + "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c", + "0xa5Eb60CA85898f8b26e18fF7c7E43623ccbA772C" + ], + owners: [vault1poly, vault2poly], + }, + fantom: { + tokens: [ + nullAddress, + "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", + "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355" + ], + owners: [vault1ftm, vault2ftm], + }, +}) \ No newline at end of file From 5456fbd176412bd5e3fb503c8dfc617a2a4f8144 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Jun 2023 14:39:13 +0200 Subject: [PATCH 0627/1354] code refactor --- projects/chainport/index.js | 124 +++++++++++++++++++++++++---------- projects/chainport1/index.js | 91 ------------------------- 2 files changed, 88 insertions(+), 127 deletions(-) delete mode 100644 projects/chainport1/index.js diff --git a/projects/chainport/index.js b/projects/chainport/index.js index c4417a2361..d095583ded 100644 --- a/projects/chainport/index.js +++ b/projects/chainport/index.js @@ -1,46 +1,98 @@ -const { get } = require('../helper/http') -let _resposne +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); -async function getStats() { - if (!_resposne) _resposne = get('https://api.chainport.io/api/tvl_per_chain') - return _resposne -} +//ETH -function fetchByNetwork(network_name) { - return async () => ({ - tether: +(await getStats())[network_name] - }) -} +const vault1eth = "0x894107b7b5051409f279e8300774b2f62febe057" +const vault2eth = "0xD2238E8c085E5059F8DFC52256530210bc7250F6" +const vault3eth = "0x7B8FDfCf79E72a9a8e656958647D139C0e16EA19" +const vault4eth = "0xfe83475880d3592833249baaacfec5ed51e29d82" +const vault5eth = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" +const vault6eth = "0x450aD18B4442ce2972Af2a7A12439984db4Afaf9" +const vault7eth = "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a" + +const portx = "0x104F3152D8ebFC3f679392977356962Ff36566aC" + +//BSC CHAIN + +const vault1bsc = "0x2cd90158baae285010a5ed7c549c2e5b4c0715f4"; +const vault2bsc = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" + +//Polygon + +const vault1poly= "0xc07cd7fcda887119bff8e1eed2256ad433bee125"; +const vault2poly = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" + +//Fantom + +const vault1ftm= "0xc30da5144d1b9f47ff86345fee14fe2da94c7203"; +const vault2ftm = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "assets in liquidity are counted as TVL", + +const config = { ethereum: { - tvl: fetchByNetwork('ETHEREUM') - }, - polygon: { - tvl: fetchByNetwork('POLYGON') + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.BUSD, + "0x8B3870Df408fF4D7C3A26DF852D41034eDa11d81", + "0x0000000DE40dfa9B17854cBC7869D80f9F98D823", + // "0x42Baf1f659D765C65ADE5BB7E08eb2C680360d9d", //CORNOPIA + // "0xBb3A8FD6Ec4bF0FDc6Cd2739b1e41192D12B1873", OBI + "0x3496B523e5C00a4b4150D6721320CdDb234c3079", + "0x5F0bc16D50F72d10b719dBF6845DE2E599eb5624", + "0x7659CE147D0e714454073a5dd7003544234b6Aa0", + "0x80D55c03180349Fff4a229102F62328220A96444", + "0xD567B5F02b9073aD3a982a099a23Bf019FF11d1c", + "0x4674a4F24C5f63D53F22490Fb3A08eAAAD739ff8", + "0x2653891204F463fb2a2F4f412564b19e955166aE", + "0x43A96962254855F16b925556f9e97BE436A43448", + "0x4da0C48376C277cdBd7Fc6FdC6936DEE3e4AdF75", + "0x8E0fE2947752BE0d5ACF73aaE77362Daf79cB379", + "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430" + ], + owners: [vault1eth, vault2eth, vault3eth, vault4eth, vault5eth, vault6eth, vault7eth], + ownTokens: [portx], }, bsc: { - tvl: fetchByNetwork('BSC') - }, - fantom: { - tvl: fetchByNetwork('FANTOM') + tokens: [ + nullAddress, + "0x5B6bf0c7f989dE824677cFBD507D9635965e9cD3", + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.WBNB, + "0xF93f6b686f4A6557151455189a9173735D668154" + ], + owners: [vault1bsc, vault2bsc], }, - arbitrum: { - tvl: fetchByNetwork('ARBITRUM') - }, - optimism: { - tvl: fetchByNetwork('OPTIMISM') + polygon: { + tokens: [ + nullAddress, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.BUSD, + ADDRESSES.polygon.USDT, + "0x04d80CdF20285d5Ac590BBAd97C887b9C6781774", + "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c", + "0xa5Eb60CA85898f8b26e18fF7c7E43623ccbA772C" + ], + owners: [vault1poly, vault2poly], }, - avax: { - tvl: fetchByNetwork('AVALANCHE') + fantom: { + tokens: [ + nullAddress, + "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", + "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355" + ], + owners: [vault1ftm, vault2ftm], }, - milkomeda: { - tvl: fetchByNetwork('MILKOMEDA') - }, - hallmarks:[ - [1651881600, "UST depeg"], - ], } + +Object.keys(config).forEach(chain => { + const {owners, tokens} = config[chain] + module.exports[chain] = { + tvl: sumTokensExport({ owners, tokens }) + } +}) \ No newline at end of file diff --git a/projects/chainport1/index.js b/projects/chainport1/index.js deleted file mode 100644 index bf340a8dca..0000000000 --- a/projects/chainport1/index.js +++ /dev/null @@ -1,91 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') - -//ETH - -const vault1eth = "0x894107b7b5051409f279e8300774b2f62febe057" -const vault2eth = "0xD2238E8c085E5059F8DFC52256530210bc7250F6" -const vault3eth = "0x7B8FDfCf79E72a9a8e656958647D139C0e16EA19" -const vault4eth = "0xfe83475880d3592833249baaacfec5ed51e29d82" -const vault5eth = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" -const vault6eth = "0x450aD18B4442ce2972Af2a7A12439984db4Afaf9" -const vault7eth = "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a" - -const portx = "0x104F3152D8ebFC3f679392977356962Ff36566aC" - -//BSC CHAIN - -const vault1bsc = "0x2cd90158baae285010a5ed7c549c2e5b4c0715f4"; -const vault2bsc = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - -//Polygon - -const vault1poly= "0xc07cd7fcda887119bff8e1eed2256ad433bee125"; -const vault2poly = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - -//Fantom - -const vault1ftm= "0xc30da5144d1b9f47ff86345fee14fe2da94c7203"; -const vault2ftm = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.BUSD, - "0x8B3870Df408fF4D7C3A26DF852D41034eDa11d81", - "0x0000000DE40dfa9B17854cBC7869D80f9F98D823", - "0x42Baf1f659D765C65ADE5BB7E08eb2C680360d9d", //CORNOPIA - "0xBb3A8FD6Ec4bF0FDc6Cd2739b1e41192D12B1873", - "0x3496B523e5C00a4b4150D6721320CdDb234c3079", - "0x5F0bc16D50F72d10b719dBF6845DE2E599eb5624", - "0x7659CE147D0e714454073a5dd7003544234b6Aa0", - "0x80D55c03180349Fff4a229102F62328220A96444", - "0xD567B5F02b9073aD3a982a099a23Bf019FF11d1c", - "0x4674a4F24C5f63D53F22490Fb3A08eAAAD739ff8", - "0x2653891204F463fb2a2F4f412564b19e955166aE", - "0x43A96962254855F16b925556f9e97BE436A43448", - "0x4da0C48376C277cdBd7Fc6FdC6936DEE3e4AdF75", - "0x8E0fE2947752BE0d5ACF73aaE77362Daf79cB379", - "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430" - ], - owners: [vault1eth, vault2eth, vault3eth, vault4eth, vault5eth, vault6eth, vault7eth], - ownTokens: [portx], - }, - bsc: { - tokens: [ - nullAddress, - "0x5B6bf0c7f989dE824677cFBD507D9635965e9cD3", - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.WBNB, - "0xF93f6b686f4A6557151455189a9173735D668154" - ], - owners: [vault1bsc, vault2bsc], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.BUSD, - ADDRESSES.polygon.USDT, - "0x04d80CdF20285d5Ac590BBAd97C887b9C6781774", - "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c", - "0xa5Eb60CA85898f8b26e18fF7c7E43623ccbA772C" - ], - owners: [vault1poly, vault2poly], - }, - fantom: { - tokens: [ - nullAddress, - "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", - "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355" - ], - owners: [vault1ftm, vault2ftm], - }, -}) \ No newline at end of file From 12e307b32afa85fff5a0af82e680ff37a86b2368 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 2 Jun 2023 13:39:27 +0100 Subject: [PATCH 0628/1354] remove own tokens --- projects/chainport1/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/chainport1/index.js b/projects/chainport1/index.js index bf340a8dca..51c6ed658d 100644 --- a/projects/chainport1/index.js +++ b/projects/chainport1/index.js @@ -11,7 +11,6 @@ const vault5eth = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" const vault6eth = "0x450aD18B4442ce2972Af2a7A12439984db4Afaf9" const vault7eth = "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a" -const portx = "0x104F3152D8ebFC3f679392977356962Ff36566aC" //BSC CHAIN @@ -51,10 +50,10 @@ module.exports = treasuryExports({ "0x43A96962254855F16b925556f9e97BE436A43448", "0x4da0C48376C277cdBd7Fc6FdC6936DEE3e4AdF75", "0x8E0fE2947752BE0d5ACF73aaE77362Daf79cB379", - "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430" + "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430", + "0x104F3152D8ebFC3f679392977356962Ff36566aC" ], owners: [vault1eth, vault2eth, vault3eth, vault4eth, vault5eth, vault6eth, vault7eth], - ownTokens: [portx], }, bsc: { tokens: [ From a64c052b0a72bc76a6e7ac45ddcff68e1d8c5b8b Mon Sep 17 00:00:00 2001 From: define Date: Fri, 2 Jun 2023 13:54:02 +0100 Subject: [PATCH 0629/1354] fix commit --- projects/chainport/index.js | 124 +++++++++++++++++++++++++----------- 1 file changed, 88 insertions(+), 36 deletions(-) diff --git a/projects/chainport/index.js b/projects/chainport/index.js index c4417a2361..d095583ded 100644 --- a/projects/chainport/index.js +++ b/projects/chainport/index.js @@ -1,46 +1,98 @@ -const { get } = require('../helper/http') -let _resposne +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); -async function getStats() { - if (!_resposne) _resposne = get('https://api.chainport.io/api/tvl_per_chain') - return _resposne -} +//ETH -function fetchByNetwork(network_name) { - return async () => ({ - tether: +(await getStats())[network_name] - }) -} +const vault1eth = "0x894107b7b5051409f279e8300774b2f62febe057" +const vault2eth = "0xD2238E8c085E5059F8DFC52256530210bc7250F6" +const vault3eth = "0x7B8FDfCf79E72a9a8e656958647D139C0e16EA19" +const vault4eth = "0xfe83475880d3592833249baaacfec5ed51e29d82" +const vault5eth = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" +const vault6eth = "0x450aD18B4442ce2972Af2a7A12439984db4Afaf9" +const vault7eth = "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a" + +const portx = "0x104F3152D8ebFC3f679392977356962Ff36566aC" + +//BSC CHAIN + +const vault1bsc = "0x2cd90158baae285010a5ed7c549c2e5b4c0715f4"; +const vault2bsc = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" + +//Polygon + +const vault1poly= "0xc07cd7fcda887119bff8e1eed2256ad433bee125"; +const vault2poly = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" + +//Fantom + +const vault1ftm= "0xc30da5144d1b9f47ff86345fee14fe2da94c7203"; +const vault2ftm = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" -module.exports = { - timetravel: false, - misrepresentedTokens: true, - methodology: "assets in liquidity are counted as TVL", + +const config = { ethereum: { - tvl: fetchByNetwork('ETHEREUM') - }, - polygon: { - tvl: fetchByNetwork('POLYGON') + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.BUSD, + "0x8B3870Df408fF4D7C3A26DF852D41034eDa11d81", + "0x0000000DE40dfa9B17854cBC7869D80f9F98D823", + // "0x42Baf1f659D765C65ADE5BB7E08eb2C680360d9d", //CORNOPIA + // "0xBb3A8FD6Ec4bF0FDc6Cd2739b1e41192D12B1873", OBI + "0x3496B523e5C00a4b4150D6721320CdDb234c3079", + "0x5F0bc16D50F72d10b719dBF6845DE2E599eb5624", + "0x7659CE147D0e714454073a5dd7003544234b6Aa0", + "0x80D55c03180349Fff4a229102F62328220A96444", + "0xD567B5F02b9073aD3a982a099a23Bf019FF11d1c", + "0x4674a4F24C5f63D53F22490Fb3A08eAAAD739ff8", + "0x2653891204F463fb2a2F4f412564b19e955166aE", + "0x43A96962254855F16b925556f9e97BE436A43448", + "0x4da0C48376C277cdBd7Fc6FdC6936DEE3e4AdF75", + "0x8E0fE2947752BE0d5ACF73aaE77362Daf79cB379", + "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430" + ], + owners: [vault1eth, vault2eth, vault3eth, vault4eth, vault5eth, vault6eth, vault7eth], + ownTokens: [portx], }, bsc: { - tvl: fetchByNetwork('BSC') - }, - fantom: { - tvl: fetchByNetwork('FANTOM') + tokens: [ + nullAddress, + "0x5B6bf0c7f989dE824677cFBD507D9635965e9cD3", + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.WBNB, + "0xF93f6b686f4A6557151455189a9173735D668154" + ], + owners: [vault1bsc, vault2bsc], }, - arbitrum: { - tvl: fetchByNetwork('ARBITRUM') - }, - optimism: { - tvl: fetchByNetwork('OPTIMISM') + polygon: { + tokens: [ + nullAddress, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.BUSD, + ADDRESSES.polygon.USDT, + "0x04d80CdF20285d5Ac590BBAd97C887b9C6781774", + "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c", + "0xa5Eb60CA85898f8b26e18fF7c7E43623ccbA772C" + ], + owners: [vault1poly, vault2poly], }, - avax: { - tvl: fetchByNetwork('AVALANCHE') + fantom: { + tokens: [ + nullAddress, + "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", + "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355" + ], + owners: [vault1ftm, vault2ftm], }, - milkomeda: { - tvl: fetchByNetwork('MILKOMEDA') - }, - hallmarks:[ - [1651881600, "UST depeg"], - ], } + +Object.keys(config).forEach(chain => { + const {owners, tokens} = config[chain] + module.exports[chain] = { + tvl: sumTokensExport({ owners, tokens }) + } +}) \ No newline at end of file From 6b70ba4d37425ae6385e387a797f03323f8772a4 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 2 Jun 2023 13:55:19 +0100 Subject: [PATCH 0630/1354] deleted previous commit --- projects/chainport1/index.js | 90 ------------------------------------ 1 file changed, 90 deletions(-) delete mode 100644 projects/chainport1/index.js diff --git a/projects/chainport1/index.js b/projects/chainport1/index.js deleted file mode 100644 index 51c6ed658d..0000000000 --- a/projects/chainport1/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const { nullAddress, treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') - -//ETH - -const vault1eth = "0x894107b7b5051409f279e8300774b2f62febe057" -const vault2eth = "0xD2238E8c085E5059F8DFC52256530210bc7250F6" -const vault3eth = "0x7B8FDfCf79E72a9a8e656958647D139C0e16EA19" -const vault4eth = "0xfe83475880d3592833249baaacfec5ed51e29d82" -const vault5eth = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" -const vault6eth = "0x450aD18B4442ce2972Af2a7A12439984db4Afaf9" -const vault7eth = "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a" - - -//BSC CHAIN - -const vault1bsc = "0x2cd90158baae285010a5ed7c549c2e5b4c0715f4"; -const vault2bsc = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - -//Polygon - -const vault1poly= "0xc07cd7fcda887119bff8e1eed2256ad433bee125"; -const vault2poly = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - -//Fantom - -const vault1ftm= "0xc30da5144d1b9f47ff86345fee14fe2da94c7203"; -const vault2ftm = "0x873089bC765a1C0AFAd48e34fCd305d17D81be87" - - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.BUSD, - "0x8B3870Df408fF4D7C3A26DF852D41034eDa11d81", - "0x0000000DE40dfa9B17854cBC7869D80f9F98D823", - "0x42Baf1f659D765C65ADE5BB7E08eb2C680360d9d", //CORNOPIA - "0xBb3A8FD6Ec4bF0FDc6Cd2739b1e41192D12B1873", - "0x3496B523e5C00a4b4150D6721320CdDb234c3079", - "0x5F0bc16D50F72d10b719dBF6845DE2E599eb5624", - "0x7659CE147D0e714454073a5dd7003544234b6Aa0", - "0x80D55c03180349Fff4a229102F62328220A96444", - "0xD567B5F02b9073aD3a982a099a23Bf019FF11d1c", - "0x4674a4F24C5f63D53F22490Fb3A08eAAAD739ff8", - "0x2653891204F463fb2a2F4f412564b19e955166aE", - "0x43A96962254855F16b925556f9e97BE436A43448", - "0x4da0C48376C277cdBd7Fc6FdC6936DEE3e4AdF75", - "0x8E0fE2947752BE0d5ACF73aaE77362Daf79cB379", - "0xFe459828c90c0BA4bC8b42F5C5D44F316700B430", - "0x104F3152D8ebFC3f679392977356962Ff36566aC" - ], - owners: [vault1eth, vault2eth, vault3eth, vault4eth, vault5eth, vault6eth, vault7eth], - }, - bsc: { - tokens: [ - nullAddress, - "0x5B6bf0c7f989dE824677cFBD507D9635965e9cD3", - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.BUSD, - ADDRESSES.bsc.BTCB, - ADDRESSES.bsc.WBNB, - "0xF93f6b686f4A6557151455189a9173735D668154" - ], - owners: [vault1bsc, vault2bsc], - }, - polygon: { - tokens: [ - nullAddress, - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.BUSD, - ADDRESSES.polygon.USDT, - "0x04d80CdF20285d5Ac590BBAd97C887b9C6781774", - "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c", - "0xa5Eb60CA85898f8b26e18fF7c7E43623ccbA772C" - ], - owners: [vault1poly, vault2poly], - }, - fantom: { - tokens: [ - nullAddress, - "0x40DF1Ae6074C35047BFF66675488Aa2f9f6384F3", - "0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355" - ], - owners: [vault1ftm, vault2ftm], - }, -}) \ No newline at end of file From 91c3d7ed7234f1adfec08b1c3f39b28dd4d5ad5f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Jun 2023 21:08:06 +0530 Subject: [PATCH 0631/1354] Dexilla (#6459) * add Dexilla project * Update contract * update timestamp * add optimism chain * code refactor --------- Co-authored-by: Curbis Norris Co-authored-by: Curbis Norris <130688524+curbisn@users.noreply.github.com> --- projects/dexilla/index.js | 90 ++++++++++++--------------------------- 1 file changed, 27 insertions(+), 63 deletions(-) diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js index b1dbad72a4..e580c16851 100644 --- a/projects/dexilla/index.js +++ b/projects/dexilla/index.js @@ -1,70 +1,34 @@ -const sdk = require('@defillama/sdk') -const { transformBalances } = require('../helper/portedTokens') -const { era } = require('../helper/coreAssets.json') - -const WETH = era.WETH -const USDC = era.USDC -const BUSD = '0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181' - -const exchanges = [ - { - addr: '0x9AD0de2A1c5E5521aE5df1070de3b501844F34DB', - token1: WETH, - token2: USDC, - }, - { - addr: '0xBA64D4604032bc0cDaa66c79d74fde329a70DBeE', - token1: WETH, - token2: BUSD, +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + era: { + exchanges: [ + '0xCA2eE260BFA64D8Fb01B1cd75615aAa42D528214', + '0x588450db6e3586Ec0468a7Bb36f1d5f3BbbE2084', + '0x0DE31204e919D71f0E7b9E5766950e99f1017826', + ], }, - { - addr: '0x61A9536f40bE8f6197562C6A3c69A29CA14D7B13', - token1: USDC, - token2: BUSD, + optimism: { + exchanges: [ + '0x189c3f9dcAfe968Be3620cC58274E7c5DF057C7c', + '0x68D05405472C4f0c254A47922Dba9dbC4CFf2bD9', + '0x8F1F6751236855391BbBEDBf4Bf5AD7e383E6e50', + ], }, -] - -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { - const balances = {} - const data = [] - - for (let i = 0; i < exchanges.length; i++) { - const reserves = await api.multiCall({ - calls: [ - { - target: exchanges[i].token1, - params: [exchanges[i].addr], - }, - { - target: exchanges[i].token2, - params: [exchanges[i].addr], - }, - ], - abi: 'erc20:balanceOf', - }) - - data.push({ - token0Bal: reserves[0], - token1Bal: reserves[1], - token0: exchanges[i].token1, - token1: exchanges[i].token2, - }) - } - - data.forEach((d) => { - sdk.util.sumSingleBalance(balances, d.token0, d.token0Bal) - sdk.util.sumSingleBalance(balances, d.token1, d.token1Bal) - }) - - return transformBalances('era', balances) } module.exports = { - hallmarks: [ - [1685577300,"Rug Pull"] - ], - misrepresentedTokens: false, methodology: 'TVL counts the ERC20 tokens on the exchange contracts.', - start: 1685022373, // May 25, 2023 @ 13:46:13 (UTC +0) , - era: { tvl }, + start: 1685610580, // June 1, 2023 @ 9:09:40 (UTC +0) } + +Object.keys(config).forEach(chain => { + const { exchanges } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: exchanges}) + const quoteTokens = await api.multiCall({ abi: 'address:quoteToken', calls: exchanges}) + return sumTokens2({ api, tokensAndOwners: exchanges.map((v, i) => [[baseTokens[i], v], [quoteTokens[i], v ]]).flat()}) + } + } +}) From c9c2140056ac2aa11033804257c436956aefa57e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Jun 2023 22:10:16 +0530 Subject: [PATCH 0632/1354] liqwid: rely on graph (#6460) --- projects/liqwid/api.js | 6 ---- projects/liqwid/index.js | 63 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 7 deletions(-) delete mode 100644 projects/liqwid/api.js diff --git a/projects/liqwid/api.js b/projects/liqwid/api.js deleted file mode 100644 index b50b56a397..0000000000 --- a/projects/liqwid/api.js +++ /dev/null @@ -1,6 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - ...getExports("liqwid", ['cardano']), -} \ No newline at end of file diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index a9fbaf225d..65cacb6816 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -1,4 +1,5 @@ const { sumTokensExport } = require('../helper/chain/cardano'); +const { graphQuery } = require('../helper/http'); const scriptAddresses = [ // Ada Market @@ -36,8 +37,68 @@ const scriptAddresses = [ module.exports = { cardano: { - tvl: sumTokensExport({ scripts: scriptAddresses, }), + // tvl: sumTokensExport({ scripts: scriptAddresses, }), + tvl, + borrowed, staking: sumTokensExport({ scripts: ["addr1w8arvq7j9qlrmt0wpdvpp7h4jr4fmfk8l653p9t907v2nsss7w7r4"], }), methodology: 'Adds up the Ada in the 16 action tokens and batch final token.' } }; + + +const endpoint = 'https://api.liqwiddev.net/graphql' + +const query = `{ + markets { + asset { + marketId + name + } + totalSupply + marketId + decimals + qTokenId + qTokenPolicyId + utilization + market { + scripts { + actionToken { + assetClass { + name + } + script { + value0 { + value0 + } + } + } + } + } + } +}` + +const tokenMapping = { + ADA: 'lovelace', + DJED: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61446a65644d6963726f555344', + SHEN: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd615368656e4d6963726f555344', + IUSD: 'f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069555344', +} +const getToken = market => tokenMapping[market.marketId.toUpperCase()] + + +async function tvl(_, _b, _cb, { api, }) { + const {markets} = await graphQuery(endpoint, query) + + markets.filter(getToken).forEach(market => api.add(getToken(market) , market.totalSupply)) +} + +async function borrowed(_, _b, _cb, { api, }) { + const {markets} = await graphQuery(endpoint, query) + + markets.filter(getToken).forEach(market => { + const utilization = market.utilization + const availability = 1 - utilization + const totalBorrowed = market.totalSupply * utilization / availability + api.add(getToken(market), totalBorrowed) + }) +} From 88517bdb593c06c5d5a78025ba3fd56a3b122451 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Fri, 2 Jun 2023 19:05:47 +0200 Subject: [PATCH 0633/1354] Add Paraspace CEO drama as hallmark (#6462) --- projects/paraspace/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/paraspace/index.js b/projects/paraspace/index.js index a4636ac551..353aec961e 100644 --- a/projects/paraspace/index.js +++ b/projects/paraspace/index.js @@ -3,6 +3,7 @@ const { tvl, borrowed } = require("./helper/index"); module.exports = { hallmarks: [ [Math.floor(new Date('2023-03-17') / 1e3), 'Whitehat hack'], + [Math.floor(new Date('2023-05-10') / 1e3), 'CEO drama'], ], methodology: `TVL includes ERC-20 and ERC-721 tokens that have been supplied as well as ERC-20 tokens that are supplied for lending.`, ethereum: { From 0d8de8dc4394b3fe4744e018efd49d6b14e35e5a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Jun 2023 19:52:56 +0200 Subject: [PATCH 0634/1354] add pulsex v2 --- projects/pulsex-v2/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/pulsex-v2/index.js diff --git a/projects/pulsex-v2/index.js b/projects/pulsex-v2/index.js new file mode 100644 index 0000000000..9cec9bf684 --- /dev/null +++ b/projects/pulsex-v2/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + pulse: { + tvl: getUniTVL({ factory: '0x29ea7545def87022badc76323f373ea1e707c523', useDefaultCoreAssets: true }), + }, +}; // node test.js projects/pulsex/index.js \ No newline at end of file From 44d23426bb180c40b9fff2037c92f903da409d8e Mon Sep 17 00:00:00 2001 From: define Date: Fri, 2 Jun 2023 19:17:49 +0100 Subject: [PATCH 0635/1354] remove duplicated epoach --- projects/jpeg-d/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/jpeg-d/index.js b/projects/jpeg-d/index.js index f27d8b8c71..1f1f8545b8 100644 --- a/projects/jpeg-d/index.js +++ b/projects/jpeg-d/index.js @@ -16,8 +16,7 @@ module.exports = { [1674669600, "Autoglyphs & Fidenza support"], [1675166400, "Ringers & Chromie Squiggle support"], [1675598400, "70% LTV for CryptoPunks & BAYC"], - [1678665600, "Otherdeeds support"], - [1678665600, "Meebits support"], + [1678665600, "Otherdeeds & Meebits support"], [1679529600, "BAKC support"], [1683662400, "P2P Ape Staking"], [1684108800, "Milady support"], From e185be5c34b5de05a87cdaaed9b3a445cffc542c Mon Sep 17 00:00:00 2001 From: define Date: Fri, 2 Jun 2023 20:13:07 +0100 Subject: [PATCH 0636/1354] remove some hallamarks with low impact on TVL (JPE --- projects/jpeg-d/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/jpeg-d/index.js b/projects/jpeg-d/index.js index 1f1f8545b8..dd52413d5e 100644 --- a/projects/jpeg-d/index.js +++ b/projects/jpeg-d/index.js @@ -12,12 +12,12 @@ module.exports = { hallmarks: [ [1666003500, "pETH borrows"], [1669551000, "JPEG LTV boost"], - [1670518800, "APE staking"], - [1674669600, "Autoglyphs & Fidenza support"], - [1675166400, "Ringers & Chromie Squiggle support"], - [1675598400, "70% LTV for CryptoPunks & BAYC"], - [1678665600, "Otherdeeds & Meebits support"], - [1679529600, "BAKC support"], + // [1670518800, "APE staking"], not that much impact on TVL + //[1674669600, "Autoglyphs & Fidenza support"], not that much impact on TVL + //[1675166400, "Ringers & Chromie Squiggle support"], not that much impact on TVL + //[1675598400, "70% LTV for CryptoPunks & BAYC"], not that much impact on TVL + [1678665600, "Otherdeeds & Meebits support"], + // [1679529600, "BAKC support"], not that much impact on TVL [1683662400, "P2P Ape Staking"], [1684108800, "Milady support"], ], From 1ca1ba8f17b87a9f68ec6cb751ae6aa789298a88 Mon Sep 17 00:00:00 2001 From: ycg5250 <38691242+ycg5250@users.noreply.github.com> Date: Sat, 3 Jun 2023 05:13:15 +0800 Subject: [PATCH 0637/1354] update request url (#6450) * update TokenPocket staking value * update request url --- projects/TokenPocket/index.js | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/projects/TokenPocket/index.js b/projects/TokenPocket/index.js index 8e4b787573..97225d8b1d 100644 --- a/projects/TokenPocket/index.js +++ b/projects/TokenPocket/index.js @@ -1,29 +1,8 @@ const axios = require("axios"); async function tvl() { - const tvlData = ( - await axios.get( - "https://preserver.mytokenpocket.vip/v1/pledge/method_any_v2", - { - headers: { - api: "/eth2/v2/partner/dashboard", - }, - } - ) - ) - const tvlDataOld = ( - await axios.get( - "https://preserver.mytokenpocket.vip/v1/pledge/method_any_v1", - { - headers: { - api: "/eth2/v1/global", - }, - } - ) - ) - const total = tvlData.data.data.staking.total_amount + tvlDataOld.data.data.data.staking_total - // return { ethereum: tvlData.data.data.staking.total_amount} - return { ethereum: total} + const tvlData = await axios.get("https://preserver.mytokenpocket.vip/v1/pledge/global") + return { ethereum: tvlData.data.data.data.staking_total} } module.exports = { From bd6e8df5d16d65a9bb013d7a1fa1270c1487c0d5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 3 Jun 2023 03:19:26 +0530 Subject: [PATCH 0638/1354] Synfutures (#6465) * synfutures v2 TVL * code refactor --------- Co-authored-by: Eric Fan --- projects/synfutures-v1/index.js | 81 ++++++++++----------------------- projects/synfutures-v2/index.js | 26 +++++++++++ 2 files changed, 50 insertions(+), 57 deletions(-) create mode 100644 projects/synfutures-v2/index.js diff --git a/projects/synfutures-v1/index.js b/projects/synfutures-v1/index.js index 59bea27f05..0fd6498c91 100644 --- a/projects/synfutures-v1/index.js +++ b/projects/synfutures-v1/index.js @@ -1,62 +1,29 @@ -// SynFutures-v1 TVL from chain -const { request, gql } = require("graphql-request"); const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs, getAddress } = require('../helper/cache/getLogs'); -const QUERY_PAIRS = gql`{ - pairs(first: 1000, where: {state_: {status_not_in: [CREATED]}}) { - id - symbol - ammProxy - futuresProxy - quote { - id - symbol - decimals - } - state{ - status - } - } -}`; - -const info = { - ethereum: { - subgraph: 'https://api.thegraph.com/subgraphs/name/synfutures/ethereum-v1', - }, - bsc: { - subgraph: 'https://api.thegraph.com/subgraphs/name/synfutures/bsc-v1', - }, - polygon: { - subgraph: 'https://api.thegraph.com/subgraphs/name/synfutures/polygon-v1', - }, - arbitrum: { - subgraph: 'https://api.thegraph.com/subgraphs/name/synfutures/arbitrum-one-v1', - }, +const config = { + ethereum: { factory: '0x6e893ddfa75d67febb853e00f81c913c151bf9a9', fromBlock: 12599579 }, + bsc: { factory: '0x6e893ddfa75d67febb853e00f81c913c151bf9a9', fromBlock: 8142455 }, + arbitrum: { factory: '0x1e7db497d664e77fc96321a1ad0bf018e55cbff8', fromBlock: 218877 }, + polygon: { factory: '0x6e893ddfa75d67febb853e00f81c913c151bf9a9', fromBlock: 15508720 }, } -function chainTvl(chain) { - return async (_, _b, {[chain]: block}) => { - const pairsData = await request(info[chain].subgraph,QUERY_PAIRS,{ block }); - const toa = [] - - for (let pair of pairsData.pairs) - toa.push([pair.quote.id, pair.id]) - return sumTokens2({ chain, block, tokensAndOwners: toa, }) +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0xee193dabd87eb415480c4b61fae32c09068f2348d08b811bbf3a004404eae51b'], + fromBlock, + }) + const tokensAndOwners = logs.map((i) => { + const token = getAddress(i.data.slice(64, 64 * 2 + 2)); + const pool = getAddress(i.data.slice(64 * 5, 64 * 6 + 2)); + return [token, pool]; + }); + return sumTokens2({ tokensAndOwners, api, }) + } } -} - -module.exports = { - timetravel: false, - polygon: { - tvl: chainTvl('polygon'), - }, - bsc: { - tvl: chainTvl('bsc'), - }, - ethereum: { - tvl: chainTvl('ethereum'), - }, - arbitrum: { - tvl: chainTvl('arbitrum'), - }, -} \ No newline at end of file +}) \ No newline at end of file diff --git a/projects/synfutures-v2/index.js b/projects/synfutures-v2/index.js new file mode 100644 index 0000000000..be1e4a63a0 --- /dev/null +++ b/projects/synfutures-v2/index.js @@ -0,0 +1,26 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs, getAddress } = require('../helper/cache/getLogs'); + +const config = { + polygon: { factory: '0x1267c6e5d4048318ae48f936130c292e2e0edd73', fromBlock: 32799818 }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x3e54f626b503b6952f636f8f05b35a3a2c6345dd88a99285dede80fc89961706'], + fromBlock, + }) + const tokensAndOwners = logs.map((i) => { + const token = getAddress(i.data.slice(0, 64 + 2)); + const pool = getAddress(i.data.slice(64 * 3, 64 * 4 + 2)); + return [token, pool]; + }); + return sumTokens2({ tokensAndOwners, api, }) + } + } +}) \ No newline at end of file From 657a94fad1b5f22cd7f56a533f886944ddc60dfc Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Sat, 3 Jun 2023 04:48:11 +0100 Subject: [PATCH 0639/1354] remove events --- projects/jpeg-d/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/jpeg-d/index.js b/projects/jpeg-d/index.js index dd52413d5e..48431faa55 100644 --- a/projects/jpeg-d/index.js +++ b/projects/jpeg-d/index.js @@ -16,9 +16,9 @@ module.exports = { //[1674669600, "Autoglyphs & Fidenza support"], not that much impact on TVL //[1675166400, "Ringers & Chromie Squiggle support"], not that much impact on TVL //[1675598400, "70% LTV for CryptoPunks & BAYC"], not that much impact on TVL - [1678665600, "Otherdeeds & Meebits support"], + //[1678665600, "Otherdeeds & Meebits support"], // [1679529600, "BAKC support"], not that much impact on TVL [1683662400, "P2P Ape Staking"], - [1684108800, "Milady support"], + //[1684108800, "Milady support"], ], }; From 1c1b44c31977fd5a393e930b52e74216a98a8688 Mon Sep 17 00:00:00 2001 From: magicfoxfi <130137512+magicfoxfi@users.noreply.github.com> Date: Sat, 3 Jun 2023 11:10:30 +0200 Subject: [PATCH 0640/1354] Magic fox --- projects/magicfox/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/magicfox/index.js diff --git a/projects/magicfox/index.js b/projects/magicfox/index.js new file mode 100644 index 0000000000..8ac1d75910 --- /dev/null +++ b/projects/magicfox/index.js @@ -0,0 +1,13 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = { + ...uniTvlExport("bsc", "0xcEDa3234D7D5b36114d886682A399c6d126A03e0", { + hasStablePools: true, + }), + ...uniTvlExport("arbitrum", "0xBd7A8c05D0eB214e3C5cc63D4B77C2Ea38bDe440", { + hasStablePools: true, + }), + ...uniTvlExport("polygon", "0xa2d23C7Ca6D360D5B0b30CaFF79dbBfa242B4811", { + hasStablePools: true, + }), +}; From 9bd46e6dbd67022e0d251b8ba48f635d90170285 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 4 Jun 2023 13:40:48 +0530 Subject: [PATCH 0641/1354] Neutra-1 (#6470) * [FIX] fix tvl logic * [FIX] tvl logic * minor fix --------- Co-authored-by: RashdannHakim --- projects/neutra-finance/index.js | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/projects/neutra-finance/index.js b/projects/neutra-finance/index.js index 258db92e0a..e97a103fa8 100644 --- a/projects/neutra-finance/index.js +++ b/projects/neutra-finance/index.js @@ -1,19 +1,24 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { - const vaults = ['0x2a958665bc9a1680135241133569c7014230cb21'] - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults }) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) - api.addTokens(tokens, bals) - return sumTokens2({ - api, - owners: ['0x6bfa4f1dfafeb9c37e4e8d436e1d0c5973e47e25'], - tokens: [ADDRESSES.arbitrum.fsGLP, ADDRESSES.optimism.DAI,], - }) +async function tvl(_, _b, _cb, { api }) { + const nGlpVaults = "0x6Bfa4F1DfAfeb9c37E4E8d436E1d0C5973E47e25"; + const nUSDCVault = "0x2a958665bC9A1680135241133569C7014230Cb21"; + + const nGlpTotalValue = await api.call({ + abi: "uint256:totalValue", + target: nGlpVaults, + }); + const nUSDCTotalValue = await api.call({ + abi: "uint256:totalAssets", + target: nUSDCVault, + }); + + const tvl = +nUSDCTotalValue + nGlpTotalValue / 1e24; + api.add(ADDRESSES.arbitrum.USDC, tvl) } module.exports = { + misrepresentedTokens: true, arbitrum: { tvl, - } -}; \ No newline at end of file + }, +}; From bac97bfc443f915148fc8f7147d32c48df324aa6 Mon Sep 17 00:00:00 2001 From: Nathan Ramli Date: Sun, 4 Jun 2023 17:16:11 +0900 Subject: [PATCH 0642/1354] Feat/scallop sui (#6468) * add scallop sui tvl * add collateral balance * fix market id --- projects/scallop/index.js | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/projects/scallop/index.js b/projects/scallop/index.js index a07c77d0ab..eb67fce757 100644 --- a/projects/scallop/index.js +++ b/projects/scallop/index.js @@ -2,7 +2,9 @@ const anchor = require("@project-serum/anchor"); const { PublicKey } = require("@solana/web3.js"); const activePoolBases = require("./active-pools.json"); const { getConnection, decodeAccount } = require("../helper/solana"); +const sui = require("../helper/chain/sui"); const sdk = require('@defillama/sdk') +const BigNumber = require("bignumber.js"); const SCALLOP_PROGRAM_ID = new PublicKey("SCPv1LabixHirZbX6s7Zj3oiBogadWZvGUKRvXD3Zec"); @@ -10,6 +12,8 @@ const SCALLOP_PROGRAM_ID = new PublicKey("SCPv1LabixHirZbX6s7Zj3oiBogadWZvGUKRvX const COUPON_SEED = "coupon_seed"; const POOL_AUTHORITY = "pool_authority_seed"; +const SCALLOP_SUI_MARKET_ID = "0xcdd65d04519aea065fdbd15315ab75ff41a65a4a39fd71e107dffc4a06c02f32" + function getTokenGeckoId(mintAuthority) { for (let i = 0; i < activePoolBases.length; i++) { const pubkey = new PublicKey(activePoolBases[i].base) @@ -22,7 +26,7 @@ function getTokenGeckoId(mintAuthority) { } } -async function tvl() { +async function solanaTvl() { const connection = getConnection() // at Scallop, coupon representing deposited amount of a pool @@ -54,9 +58,40 @@ async function tvl() { return balances; } +async function suiTvl() { + const { api } = arguments[3] + const object = await sui.getObject(SCALLOP_SUI_MARKET_ID) + + const balanceSheetsFields = await sui.getDynamicFieldObjects({ + parent: object.fields.vault.fields.balance_sheets.fields.table.fields.id.id, + }); + + const balanceSheets = await sui.getObjects(balanceSheetsFields.map((e) => e.fields.id.id)) + + balanceSheets.forEach((e) => { + const coinType = '0x' + e.fields.name.fields.name + const amount = new BigNumber(e.fields.value.fields.cash).plus(new BigNumber(e.fields.value.fields.debt)).toString() + api.add(coinType, amount) + }) + + const collateralStatsFields = await sui.getDynamicFieldObjects({ + parent: object.fields.collateral_stats.fields.table.fields.id.id, + }); + + const collateralStats = await sui.getObjects(collateralStatsFields.map((e) => e.fields.id.id)) + + collateralStats.forEach((e) => { + const coinType = '0x' + e.fields.name.fields.name + api.add(coinType, e.fields.value.fields.amount) + }) +} + module.exports = { timetravel: false, solana: { - tvl, + tvl: solanaTvl, + }, + sui: { + tvl: suiTvl, }, } \ No newline at end of file From 48950bab96971cb6be3a0cf6d5cdf1898e459f04 Mon Sep 17 00:00:00 2001 From: MonopolyFinanceGit <128216453+MonopolyFinanceGit@users.noreply.github.com> Date: Sun, 4 Jun 2023 19:28:38 +0900 Subject: [PATCH 0643/1354] Update index.js (#6458) --- projects/monopoly-finance/index.js | 91 +++++------------------------- 1 file changed, 13 insertions(+), 78 deletions(-) diff --git a/projects/monopoly-finance/index.js b/projects/monopoly-finance/index.js index 9120d5c169..820a5d2a1a 100644 --- a/projects/monopoly-finance/index.js +++ b/projects/monopoly-finance/index.js @@ -1,31 +1,10 @@ -const { default: axios } = require("axios"); const { staking } = require("../helper/staking"); const abi = require("./abi.json"); -const chef = "0x72E4CcEe48fB8FEf18D99aF2965Ce6d06D55C8ba"; -const duo = "0x322F15d4BEDaa20C178fb75b2628663D2dA19736".toLowerCase(); -const ACC_DUO_PRECISION = 1e18; +const { unwrapLPsAuto } = require("../helper/unwrapLPs"); +const chef = "0x2900f5E68cD57b712806f60096514A4D3F772E9D"; +const poly = "0x34772C4D12F288368Aa35AE7bc527A6B2b3e8906".toLowerCase(); +const ACC_POLY_PRECISION = 1e18; -const zyberGammaLps = [ - "0x0adf0161bd2f174d94beadf8dc47f3af9b408627", - "0x282aa43579d2520545f0d927884e79226e269c07", - "0x2e8c115011098cae93dbf8b9662845fa92cc0730", - "0x35ea99ab62bcf7992136558e94fb97c7807fcd6a", - "0x3b3fec6029534e4e794f0cfb58cc64cdd66b90c7", - "0x589369676ed7cee7b6455cadcc951b02b6d10b9b", - "0x5d9648ba8dc63cdbdc1f3101178c5daa9408ed0e", - "0x86cd7fd91f2cfcf264396a4556c139379a5fbc5a", - "0x8ffac5723b0288e80f6fea715dbd98e360b11d6f", - "0x95177b49208fd176724a0058f357c1b69149affd", - "0xa634bb5eb81b3ec6041c68fc77dff2068df33cb4", - "0xaa3522d51448a33682692baccfbefc109d211f65", - "0xb5c335cfaf1769ee02597c6ac2db883f793a020d", - "0xc2be9df80ce62e4258c27b1ffef741adc118b8b0", - "0xd06e6a71121bfd6c1079bd0b4b231a92022953c9", - "0xd53eb268f6f717608c552c470ddc37bb59194593", - "0xd820502864dc8928b40b92e764908a22780a0ffe", - "0xde9b90e239de55baa063ab9fca5e82fb5a8d4042", - "0xea17b00b9fc3ecaf1cb24cc1d5c594146c68a4bc", -]; async function getTokensInMasterChef(time, ethBlock, chainBlocks, { api }) { const poolInfo = await api.fetchList({ lengthAbi: abi.poolLength, @@ -33,63 +12,19 @@ async function getTokensInMasterChef(time, ethBlock, chainBlocks, { api }) { target: chef, }); - const [gammaLpTotalSupply, gammaToken0, gammaToken1, gammaLpReserves] = - await Promise.all([ - api.multiCall({ calls: zyberGammaLps, abi: abi.totalSupply }), - api.multiCall({ calls: zyberGammaLps, abi: abi.token0 }), - api.multiCall({ calls: zyberGammaLps, abi: abi.token1 }), - api.multiCall({ calls: zyberGammaLps, abi: abi.getTotalAmounts }), - ]); - - const tokens = [...gammaToken0, ...gammaToken1] - .flat() - .map((i) => i.toLowerCase()); - const tokensDecimals = await api.multiCall({ - abi: "erc20:decimals", - calls: tokens, - }); - - const gammaLpData = zyberGammaLps.map((lp, i) => { - const supply = gammaLpTotalSupply[i] / 1e18; - const token0 = gammaToken0[i].toLowerCase(); - const token1 = gammaToken1[i].toLowerCase(); - const token0Decimals = tokensDecimals[tokens.indexOf(token0)]; - const token1Decimals = tokensDecimals[tokens.indexOf(token1)]; - - return { - lp, - lpPerToken0: - gammaLpReserves[i].totalAmount0 / (supply * 10 ** token0Decimals), - lpPerToken1: - gammaLpReserves[i].totalAmount1 / (supply * 10 ** token1Decimals), - token0, - token1, - token0Decimals, - token1Decimals, - }; - }); - poolInfo.forEach((pool) => { let { lpToken, totalShares, lpPerShare } = pool; lpToken = lpToken.toLowerCase(); - if (lpToken === duo) { + if (lpToken === poly) { return; } - let bals = (totalShares * lpPerShare) / ACC_DUO_PRECISION; - if (zyberGammaLps.includes(lpToken)) { - const { - token0, - token1, - token0Decimals, - token1Decimals, - lpPerToken0, - lpPerToken1, - } = gammaLpData.find((i) => i.lp === lpToken); - api.add(token0, (bals * lpPerToken0) / 10 ** (18 - token0Decimals)); - api.add(token1, (bals * lpPerToken1) / 10 ** (18 - token1Decimals)); - } else { - api.add(lpToken, bals); - } + let bals = (totalShares * lpPerShare) / ACC_POLY_PRECISION; + api.add(lpToken, bals); + }); + await unwrapLPsAuto({ + api, + lpAddresses: poolInfo.map((p) => p.lpToken), + block: chainBlocks["arbitrum"], }); } module.exports = { @@ -97,6 +32,6 @@ module.exports = { "TVL includes all farms in MasterChef contract, as well as staking pools.", arbitrum: { tvl: getTokensInMasterChef, - staking: staking("0x338f4D8E982de9518d84A40ceD1DD845862A727e", duo), + staking: staking("0xF30489AdB76745BFb201023403B5E1bCcb216354", poly), }, }; From e22a69bf2d0e72e614add2b075534563ebcbf04e Mon Sep 17 00:00:00 2001 From: DCota <32775237+DaigaroCota@users.noreply.github.com> Date: Sun, 4 Jun 2023 21:45:06 +0200 Subject: [PATCH 0644/1354] Feat/add xocolatl new collats wsteth maticx (#6461) * fix: coreAssets.json polygon wmatic legit address * feat: coreAssets.json add wsteth and maticx addresses * feat(ladao-xocolatl): add new reserves maticx and wsteth * chore(ladao-xocolatl): revert wmatic address back in coreAssets json * chore(ladao-xocolatl): update to wmatic_2 --- projects/helper/coreAssets.json | 3 +++ projects/ladao-xocolatl/index.js | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 3e13aa3de1..a2b2f53597 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -108,6 +108,8 @@ "polygon": { "WMATIC": "0xfd28c7cea3c50a060cb4c0059e453c6d4dd9829d", "WMATIC_1": "0x0000000000000000000000000000000000001010", + "WMATIC_2": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "MATICX": "0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6", "USDC": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "QUICK": "0xb5c064f955d8e7f38fe0460c556a72987494ee17", "WBTC": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", @@ -115,6 +117,7 @@ "DAI": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "WETH": "0x6cacfaf65b1b1f9979acf463a393a112d0980982", "WETH_1": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + "WSTETH": "0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD", "DINO": "0xaa9654becca45b5bdfa5ac646c939c62b527d394", "sUSDC": "0x2f28add68e59733d23d5f57d94c31fb965f835d0", "sBUSD": "0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd", diff --git a/projects/ladao-xocolatl/index.js b/projects/ladao-xocolatl/index.js index 3afd04b05b..5b76269ae8 100644 --- a/projects/ladao-xocolatl/index.js +++ b/projects/ladao-xocolatl/index.js @@ -9,7 +9,9 @@ module.exports = { [ADDRESSES.polygon.WETH_1, '0xd411BE9A105Ea7701FabBe58C2834b7033EBC203'], [ADDRESSES.polygon.WETH_1, '0x09dFC327364701d73683aCe049B8A5a8Ea27F3E8'], [ADDRESSES.polygon.WBTC,'0x983A0eC44bf1BB11592a8bD5F91f05adE4F44D81'], - ['0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270','0xdB9Dd25660240415d95144C6CE4f21f00Edf8168'] + [ADDRESSES.polygon.WMATIC_2,'0xdB9Dd25660240415d95144C6CE4f21f00Edf8168'], + [ADDRESSES.polygon.WSTETH, '0x28C7DF27e5bC7Cb004c8D4bb2C2D91f246D0A2C9'], + [ADDRESSES.polygon.MATICX, '0x102dda5f4621a08dafD327f29f9c815f851846dC'], ] }) }, From 7ed4f86dafbcde0bd7889898e91affd543f4f1d6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 5 Jun 2023 01:15:57 +0530 Subject: [PATCH 0645/1354] Muuuu (#6428) * add untracked token * add WASTR token * add mulLAY tvl * get pool's virtual price * calculate tvl with the virtual price of lp token * refactor muuu --------- Co-authored-by: Wolf Warrier --- projects/muuu/abi.json | 5 +- projects/muuu/index.js | 1 - projects/muuu/tvl.js | 226 +++++++++-------------------------------- projects/muuu/utils.js | 11 -- 4 files changed, 52 insertions(+), 191 deletions(-) delete mode 100644 projects/muuu/utils.js diff --git a/projects/muuu/abi.json b/projects/muuu/abi.json index 39c10b3598..ef0bd55a20 100644 --- a/projects/muuu/abi.json +++ b/projects/muuu/abi.json @@ -4,13 +4,14 @@ "coinsUint": "function coins(uint256 arg0) view returns (address) @2280", "coinsInt": "function coins(int128 arg0) view returns (address out) @2190", "coins": "function coins(uint256 arg0) view returns (address) @2280", - "get_balances": "function get_balances() view returns (uint256[2]) @2284", + "get_balances": "function get_balances(address _pool) view returns (uint256[8]) @2284", "underlying": "address:underlying", "exchangeRateStored": "uint256:exchangeRateStored", "get_underlying_coins": "function get_underlying_coins(address _pool) view returns (address[8]) @12194", "get_pool_from_lp_token": "function get_pool_from_lp_token(address arg0) view returns (address) @2443", - "get_coins": "function get_coins(address _pool) view returns (address[8]) @12102", + "get_coins": "function get_coins(address _pool) view returns (address[8])", "get_underlying_balances": "function get_underlying_balances(address _pool) view returns (uint256[8]) @162842", "get_virtual_price_from_lp_token": "function get_virtual_price_from_lp_token(address _token) view returns (uint256)", + "get_virtual_price": "function get_virtual_price() view returns (uint256)", "lockedSupply": "uint256:lockedSupply" } \ No newline at end of file diff --git a/projects/muuu/index.js b/projects/muuu/index.js index 1cdc2529e8..8e9fe9afc0 100644 --- a/projects/muuu/index.js +++ b/projects/muuu/index.js @@ -3,7 +3,6 @@ const { tvl, staking } = require("./tvl"); const START_BLOCK = 903029; module.exports = { - timetravel: true, misrepresentedTokens: true, start: START_BLOCK, astar: { diff --git a/projects/muuu/tvl.js b/projects/muuu/tvl.js index 6ef2139158..9955b13556 100644 --- a/projects/muuu/tvl.js +++ b/projects/muuu/tvl.js @@ -1,190 +1,62 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const BigNumberJs = require("bignumber.js"); +const ADDRESSES = require("../helper/coreAssets.json"); const ABI = require("./abi.json"); -const { toBigNumberJsOrZero } = require("./utils.js"); +const { staking } = require('../helper/staking') const ZERO_ADDRESS = ADDRESSES.null; const REGISTRY_ADDRESS = "0xDA820e20A89928e43794645B9A9770057D65738B"; const BOOSTER_ADDRESS = "0x6d12e3dE6dAcDBa2779C4947c0F718E13b78cfF4"; const MUKGL_ADDRESS = "0x5eaAe8435B178d4677904430BAc5079e73aFa56e"; +const MULAY_ADDRESS = "0xDDF2ad1d9bFA208228166311FC22e76Ea7a4C44D"; +const MUU_TOKEN = "0xc5BcAC31cf55806646017395AD119aF2441Aee37"; const MUUU_REWARDS_ADDRESS = "0xB2ae0CF4819f2BE89574D3dc46D481cf80C7a255"; -const TOKENS = { - // USDC - [ADDRESSES.moonbeam.USDC]: - ADDRESSES.ethereum.USDC, - // USDT - [ADDRESSES.astar.USDT]: - ADDRESSES.ethereum.USDT, - // DAI - [ADDRESSES.astar.DAI]: - ADDRESSES.ethereum.DAI, - // Starlay lUSDC -> USDC - [ADDRESSES.astar.lUSDC]: - ADDRESSES.ethereum.USDC, - // Starlay lUSDT -> USDT - [ADDRESSES.astar.lUSDT]: - ADDRESSES.ethereum.USDT, - // Starlay lDAI -> DAI - [ADDRESSES.astar.lDAI]: - ADDRESSES.ethereum.DAI, - // BUSD - [ADDRESSES.oasis.ceUSDT]: - ADDRESSES.ethereum.BUSD, - // 3KGL -> DAI(TMP) - "0x18BDb86E835E9952cFaA844EB923E470E832Ad58": - ADDRESSES.ethereum.DAI, - // BAI -> DAI(TMP) - [ADDRESSES.astar.BAI]: - ADDRESSES.ethereum.DAI, - // oUSD -> DAI(TMP) - [ADDRESSES.astar.oUSD]: - ADDRESSES.ethereum.DAI, -}; - -const transformTokenAddress = (address) => TOKENS[address]; - -async function tvl(timestamp, block, chainBlocks) { - let allCoins = {}; - - const poolLength = ( - await sdk.api.abi.call({ - target: BOOSTER_ADDRESS, - abi: ABI.poolLength, - block: chainBlocks["astar"], - chain: "astar", - }) - ).output; - const poolInfo = []; - const calldata = []; - for (let i = 0; i < poolLength; i++) { - calldata.push({ - target: BOOSTER_ADDRESS, - params: [i], - }); - } - const returnData = await sdk.api.abi.multiCall({ - abi: ABI.poolInfo, - calls: calldata, - block: chainBlocks["astar"], - chain: "astar", - }); - for (let i = 0; i < poolLength; i++) { - const pdata = returnData.output[i].output; - if (pdata.shutdown) continue; - poolInfo.push(pdata); - } - await Promise.all( - [...Array(Number(poolInfo.length)).keys()].map(async (i) => { - const supplyFromMuuuFinance = ( - await sdk.api.erc20.totalSupply({ - target: poolInfo[i].token, - block: chainBlocks["astar"], - chain: "astar", - }) - ).output; - - const totalsupply = ( - await sdk.api.erc20.totalSupply({ - target: poolInfo[i].lptoken, - block: chainBlocks["astar"], - chain: "astar", - }) - ).output; - - const muuuFinanceShare = BigNumberJs(supplyFromMuuuFinance) - .times(1e18) - .div(totalsupply) - .toFixed(6); - - const pool = ( - await sdk.api.abi.call({ - target: REGISTRY_ADDRESS, - block: chainBlocks["astar"], - chain: "astar", - abi: ABI.get_pool_from_lp_token, - params: poolInfo[i].lptoken, - }) - ).output; - - const maincoins = ( - await sdk.api.abi.call({ - target: REGISTRY_ADDRESS, - block: chainBlocks["astar"], - chain: "astar", - abi: ABI.get_coins, - params: pool, - }) - ).output; - - const coins = []; - for (let key in maincoins) { - let coin = maincoins[key]; - if (coin == ZERO_ADDRESS) { - continue; - } - - const bal = await sdk.api.erc20.balanceOf({ - target: coin, - owner: pool, - block: chainBlocks["astar"], - chain: "astar", - }); - coins.push({ coin: coin, balance: bal.output }); - } - for (var c = 0; c < coins.length; c++) { - const balanceShare = BigNumberJs(coins[c].balance.toString()) - .times(muuuFinanceShare) - .div(1e18) - .toFixed(0); - - const coinAddress = coins[c].coin; - - // convert 3KGL tokens to DAI. This is temp and should convert using virtual price - // as the tokens have accrued interest, this means current tvl is under reporting - sdk.util.sumSingleBalance( - allCoins, - transformTokenAddress(coinAddress), - balanceShare - ); - } - }) - ); - - // When KGL's price is determined, we can count muKGL's TVL - const muKGL = await sdk.api.erc20.totalSupply({ - target: MUKGL_ADDRESS, - block: chainBlocks["astar"], - chain: "astar", - }); - sdk.util.sumSingleBalance( - allCoins, - "kagla-finance", - toBigNumberJsOrZero(muKGL.output).shiftedBy(-18).toNumber() - ); - - return allCoins; -} - -// When MUUU's price is determined, we can count MUUU's TVL -async function staking(timestamp, block, chainBlocks) { - const balances = {}; - const muuuStakedSupply = await sdk.api.erc20.totalSupply({ - target: MUUU_REWARDS_ADDRESS, - block: chainBlocks["astar"], - chain: "astar", - }); - - sdk.util.sumSingleBalance( - balances, - "muuu", - toBigNumberJsOrZero(muuuStakedSupply.output).shiftedBy(-18).toNumber() - ); - return balances; +async function tvl(timestamp, block, chainBlocks, { api }) { + const [veKGL, veLAY] = await api.multiCall({ abi: 'erc20:totalSupply', calls: [MUKGL_ADDRESS, MULAY_ADDRESS] }) + api.add(ADDRESSES.astar.KGL, veKGL) + api.add(ADDRESSES.astar.LAY, veLAY) + const pools = await api.fetchList({ lengthAbi: ABI.poolLength, itemAbi: ABI.poolInfo, target: BOOSTER_ADDRESS }) + const supply = await api.multiCall({ abi: 'erc20:totalSupply', calls: pools.map(i => i.token) }) + let i = 0 + for (const pool of pools) await addTokensInPool(api, pool.lptoken, supply[i++]) } module.exports = { tvl, - staking, + staking: staking(MUUU_REWARDS_ADDRESS, MUU_TOKEN), }; + +const poolMapping = { + '0x5c71534db6e54322943ad429209d97fa25bbfcd2': { pool:'0x4fD9011F0867e7e8AF7608Ad1BB969Da8b0aBa9B', tokenCount: 2 }, + '0xe12332a6118832cbafc1913ec5d8c3a05e6fd880': { pool:'0xe12332a6118832cbafc1913ec5d8c3a05e6fd880', tokenCount: 2 }, + '0xb91e7abcbf38d0cac1f99b062b75ae0c18e169d1': { pool:'0x578AA1be6D258677e80c9067711861dd981a663E', tokenCount: 2 }, + '0xdc1c5babb4dad3117fd46d542f3b356d171417fa': { pool:'0xdc1c5babb4dad3117fd46d542f3b356d171417fa', tokenCount: 2 }, +} + +async function addTokensInPool(api, lpToken, tokenBal) { + let pool = await api.call({ target: REGISTRY_ADDRESS, abi: ABI.get_pool_from_lp_token, params: lpToken, }) + let tokens = [] + let bals = [] + const mappingPool = poolMapping[lpToken.toLowerCase()] + const supply = await api.call({ abi: 'erc20:totalSupply', target: lpToken }) + if (pool === ZERO_ADDRESS && !mappingPool) { + api.add(lpToken, tokenBal) + return; + } + + if (mappingPool){ + const { pool , tokenCount } = mappingPool + bals = await api.multiCall({ abi: "function balances(uint256) view returns (uint256)", target: pool, calls: Array(tokenCount).fill(0).map((_, i) => i)}) + tokens = await api.multiCall({ abi: ABI.coins, target: pool, calls: Array(tokenCount).fill(0).map((_, i) => i)}) + console.log(bals, tokens) + } else { + tokens = await api.call({ abi: ABI.get_coins, target: REGISTRY_ADDRESS, params: pool }) + bals = await api.call({ abi: ABI.get_balances, target: REGISTRY_ADDRESS, params: pool }) + } + const ratio = tokenBal / supply + for (const t of tokens) { + if (t === ZERO_ADDRESS) continue; + const name = await api.call({ abi: 'string:name', target: t }) + if (name.includes('Kagla.fi')) await addTokensInPool(api, t, bals[tokens.indexOf(t)] * ratio) + else api.add(t, bals[tokens.indexOf(t)] * ratio) + } +} \ No newline at end of file diff --git a/projects/muuu/utils.js b/projects/muuu/utils.js deleted file mode 100644 index 9b7fe7d49b..0000000000 --- a/projects/muuu/utils.js +++ /dev/null @@ -1,11 +0,0 @@ -const BigNumberJs = require("bignumber.js"); -BigNumberJs.config({ EXPONENTIAL_AT: 1e9 }); - -const toBigNumberJsOrZero = (value) => { - const bn = new BigNumberJs(value); - return bn.isNaN() ? new BigNumberJs("0") : bn; -}; - -module.exports = { - toBigNumberJsOrZero, -}; From 218b2dd205f288208c1b8bfdcb43898216e9b4ad Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Mon, 5 Jun 2023 07:29:36 +0100 Subject: [PATCH 0646/1354] add dfx hack --- projects/dfx/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/dfx/index.js b/projects/dfx/index.js index 7a8eb53eeb..4bd11a15f7 100644 --- a/projects/dfx/index.js +++ b/projects/dfx/index.js @@ -47,4 +47,5 @@ module.exports = { polygon: { tvl: tvl("polygon"), }, + hallmarks: [1667955600, "Hack"] }; From 66348c3ad0809e6622b8a22ae24e553a886a75ff Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 5 Jun 2023 13:17:58 +0530 Subject: [PATCH 0647/1354] minor fix (#6473) * temp fix * fixed missing packages * minor fix --------- Co-authored-by: Kostas Tzoumpas Co-authored-by: Kostas Tzoumpas --- projects/quantumx-network/farms.abi.json | 2 +- projects/quantumx-network/index.js | 67 +++++++++++++++++------- 2 files changed, 48 insertions(+), 21 deletions(-) diff --git a/projects/quantumx-network/farms.abi.json b/projects/quantumx-network/farms.abi.json index 23b7fad077..b53e4b0e1b 100644 --- a/projects/quantumx-network/farms.abi.json +++ b/projects/quantumx-network/farms.abi.json @@ -28,7 +28,7 @@ "inputs": [], "outputs": [ { - "type": "variadic>", + "type": "variadic>", "multi_result": true } ] diff --git a/projects/quantumx-network/index.js b/projects/quantumx-network/index.js index 71828e6f8e..d1a9c07ea5 100644 --- a/projects/quantumx-network/index.js +++ b/projects/quantumx-network/index.js @@ -5,14 +5,16 @@ var { ContractFunction, ResultsParser, SmartContract, - SmartContractAbi, + // SmartContractAbi, Address, -} = require("@elrondnetwork/erdjs/out"); +} = require("@multiversx/sdk-core/out"); var { ProxyNetworkProvider, -} = require("@elrondnetwork/erdjs-network-providers/out"); +} = require("@multiversx/sdk-network-providers"); var axios = require("axios"); var BigNumber = require("bignumber.js"); +const sdk = require('@defillama/sdk') + //provider const provider = new ProxyNetworkProvider("https://api.multiversx.com", { timeout: 30000, @@ -78,12 +80,12 @@ const formatBalanceDolar = (token, price) => { const scQuery = async (funcName, args) => { try { const abiRegistry = await AbiRegistry.create(abiFile); - const abi = new SmartContractAbi(abiRegistry, ["Farms"]); + // const abi = new SmartContractAbi(abiRegistry, ["Farms"]); const contract = new SmartContract({ address: new Address( "erd1qqqqqqqqqqqqqpgql6dxenaameqn2uyyru3nmmpf7e95zmlxu7zskzpdcw" ), - abi: abi, + abi: abiRegistry, }); const query = contract.createQuery({ @@ -107,11 +109,13 @@ const tvl = async () => { let tvlDollar = 0; try { + sdk.log("getting all farms"); const scFarmsRes = await scQuery("getAllFarms", []); const allFarmsFirstValue = scFarmsRes?.firstValue?.valueOf(); if (allFarmsFirstValue) { // get all farms from sc const allFarms = allFarmsFirstValue.map((farm) => { + // sdk.log(farm); return { farm: { farmId: farm.field0.id.toNumber(), @@ -120,8 +124,8 @@ const tvl = async () => { rewardToken: farm.field0.reward_token, creator: farm.field0.creator.bech32(), }, - stakedBalance: farm.field1.toNumber(), - totalRewardsLeft: farm.field2.toNumber(), + stakedBalance: farm.field2.toNumber(), + totalRewardsLeft: farm.field3.toNumber(), }; }); @@ -131,18 +135,22 @@ const tvl = async () => { let tokensInfo = []; // get the info of tokens in array from multiversx api + sdk.log("\n\ngetting all tokens info"); const { data: tokensData } = await getFromAllTokens({ identifiers: tokensIdentifiers.join(","), }); // add info of the returned tokens to the array of info tokensInfo = [...tokensData]; + // sdk.log(tokensInfo); // if egld is include in tokens indentifeirs, we need to get the data of egld for price const isEgldonTokens = tokensIdentifiers.includes("EGLD"); if (isEgldonTokens) { // fetch egld data + sdk.log("getting egld data"); const { data: egldData } = await getEconomics(); + sdk.log("egldData", egldData); tokensInfo.unshift({ type: "FungibleESDT", @@ -157,8 +165,13 @@ const tvl = async () => { }); } + sdk.log("\n\ngetting lp prices"); const lptokensInfo = await fetchLpPrices(); + // sdk.log(lptokensInfo); + + sdk.log("\n\ngetting mex pairs"); const { data: mexPairs } = await getMexPairs(); + const pools = mexPairs ? allFarms.filter( (farm) => @@ -172,10 +185,13 @@ const tvl = async () => { (farm) => mexPairs.findIndex( (mexPair) => mexPair.id === farm.farm.stakingToken - ) !== -1 + ) !== -1 || farm.farm.stakingToken == "RAREWEGLD-b29251" ) : []; + // sdk.log(pools); + // sdk.log(farms.length); + // get tvl in dollar for farms for (let i = 0; i < farms.length; i++) { // info from sc about the farm @@ -188,16 +204,19 @@ const tvl = async () => { lptokensInfo.find( (lpToken) => lpToken.token === farm.farm.stakingToken )?.tokenvalue || 0; - if (lpPrice) { - tvlDollar += formatBalanceDolar( - { - balance: farm.stakedBalance, - decimals: stakingToken.decimals, - }, - Number(lpPrice) - ); - } + + tvlDollar += formatBalanceDolar( + { + balance: farm.stakedBalance, + decimals: stakingToken.decimals, + }, + Number(lpPrice) + ); + // sdk.log(stakingToken?.identifier); + // sdk.log(farm.stakedBalance); + // sdk.log(tvlDollar); } + // // get tvl in dollar for pools for (let i = 0; i < pools.length; i++) { const farm = pools[i]; @@ -205,7 +224,11 @@ const tvl = async () => { const stakingToken = tokensInfo.find( (token) => token.identifier === farm.farm.stakingToken ); - if (stakingToken?.price) { + + if (stakingToken?.identifier != "BONEZ-ff9a73" + && stakingToken?.identifier != "RAREWEGLD-b29251" + && farm.farm.farmId != 36 + && farm.farm.farmId != 41) { tvlDollar += formatBalanceDolar( { balance: farm.stakedBalance, @@ -213,15 +236,19 @@ const tvl = async () => { }, stakingToken?.price ); + // sdk.log(stakingToken?.identifier); + // sdk.log(tvlDollar); + // sdk.log(farm); } } + sdk.log("\n\nTotal calculated: ", tvlDollar); return toUSDTBalances(tvlDollar); } } catch (err) { - console.log("Exeption error : ", err); + sdk.log("Exeption error : ", err); } - return toUSDTBalances(tvlDollar); + return tvlDollar; }; module.exports = { From cf1f936413ae51bd047ca7efdfe41acdefff1358 Mon Sep 17 00:00:00 2001 From: slasher125 Date: Mon, 5 Jun 2023 17:22:00 +0400 Subject: [PATCH 0648/1354] lido add eth withdrawal hallmark --- projects/lido/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/lido/index.js b/projects/lido/index.js index f88f6c0fff..e633555645 100644 --- a/projects/lido/index.js +++ b/projects/lido/index.js @@ -77,7 +77,8 @@ module.exports = { hallmarks: [ [1610496000, "Start of incentives for curve pool"], [1651881600,"UST depeg"], - [1667865600, "FTX collapse"] + [1667865600, "FTX collapse"], + [1684108800, "ETH Withdrawal Activation"] ], methodology: 'Staked tokens are counted as TVL based on the chain that they are staked on and where the liquidity tokens are issued, stMATIC is counted as Ethereum TVL since MATIC is staked in Ethereum and the liquidity token is also issued on Ethereum', timetravel: false, // solana From ffd754898f9cb1693c9bd1fec074b4213e02f2f4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 5 Jun 2023 15:33:21 +0200 Subject: [PATCH 0649/1354] fix midas capital --- projects/chee-finance/index.js | 4 +-- projects/helper/compound.js | 14 +++++++---- projects/midas-capital/index.js | 44 ++++++++++++++++++++++++--------- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/projects/chee-finance/index.js b/projects/chee-finance/index.js index e800c1d8ce..afd6c95ed4 100644 --- a/projects/chee-finance/index.js +++ b/projects/chee-finance/index.js @@ -1,7 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const {compoundExports, compoundExportsWithAsyncTransform} = require('../helper/compound') -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); +const {compoundExports } = require('../helper/compound') module.exports={ hallmarks: [ diff --git a/projects/helper/compound.js b/projects/helper/compound.js index ed2011f168..1f2aa7eee4 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -7,7 +7,7 @@ const { requery } = require("./requery"); const { getChainTransform, getFixBalances, } = require('./portedTokens'); const { usdtAddress } = require('./balances'); const agoraAbi = require("./../agora/abi.json"); -const { sumTokens2, nullAddress } = require('./unwrapLPs') +const { sumTokens2, nullAddress, unwrapLPsAuto, } = require('./unwrapLPs') // ask comptroller for all markets array async function getAllCTokens(comptroller, block, chain, allMarketsAbi = abi['getAllMarkets']) { return (await sdk.api.abi.call({ @@ -109,7 +109,8 @@ function getCompoundV2Tvl(comptroller, chain, transformAdress, { fetchBalances = false, blacklistedTokens = [], - abis = {} + abis = {}, + resolveLPs = true, } = {}) { abis = { ...abi, ...abis } blacklistedTokens = blacklistedTokens.map(i => i.toLowerCase()) @@ -170,6 +171,9 @@ function getCompoundV2Tvl(comptroller, chain, transformAdress, } else if (lpPositions.length > 0) { await unwrapUniswapLPs(balances, lpPositions, block, chain, transformAdress) } + + if (resolveLPs) return unwrapLPsAuto({ balances, block, chain}) + return balances; } } @@ -276,15 +280,15 @@ function compoundExports(comptroller, chain, cether, cetheEquivalent, transformA } } -function compoundExportsWithAsyncTransform(comptroller, chain, cether, cetheEquivalent, transformAdressConstructor) { +function compoundExportsWithAsyncTransform(comptroller, chain, cether, cetheEquivalent, options) { return { tvl: async (...args) => { const transformAddress = await getChainTransform(chain) - return getCompoundV2Tvl(comptroller, chain, transformAddress, cether, cetheEquivalent)(...args) + return getCompoundV2Tvl(comptroller, chain, transformAddress, cether, cetheEquivalent, false, undefined, options)(...args) }, borrowed: async (...args) => { const transformAddress = await getChainTransform(chain) - return getCompoundV2Tvl(comptroller, chain, transformAddress, cether, cetheEquivalent, true)(...args) + return getCompoundV2Tvl(comptroller, chain, transformAddress, cether, cetheEquivalent, true, undefined, options)(...args) }, } } diff --git a/projects/midas-capital/index.js b/projects/midas-capital/index.js index 221da4cdcd..e4d2cc09e9 100644 --- a/projects/midas-capital/index.js +++ b/projects/midas-capital/index.js @@ -1,6 +1,7 @@ const sdk = require("@defillama/sdk"); const { compoundExportsWithAsyncTransform } = require("../helper/compound"); + const pools = { bsc: { pools: [ @@ -49,17 +50,38 @@ const pools = { function getTvl(chain) { const config = pools[chain] ?? { pools: [] }; const tvls = config.pools.map((pool) => - compoundExportsWithAsyncTransform( - pool, - chain, - undefined, - undefined - ) + compoundExportsWithAsyncTransform(pool, chain, undefined, undefined, { resolveLPs: true }) ); - return { - tvl: sdk.util.sumChainTvls(tvls.map((t) => t.tvl)), - borrowed: sdk.util.sumChainTvls(tvls.map((t) => t.borrowed)), - }; + let _tvl = sdk.util.sumChainTvls(tvls.map((t) => t.tvl)) + let _borrowed = sdk.util.sumChainTvls(tvls.map((t) => t.borrowed)) + let tvl = _tvl + let borrowed = _borrowed + if (chain === "bsc") { + tvl = resolveHypervisor(_tvl) + borrowed = resolveHypervisor(_borrowed) + } + return { tvl, borrowed }; } -Object.keys(pools).forEach(chain => module.exports[chain] = getTvl(chain)) \ No newline at end of file +Object.keys(pools).forEach(chain => module.exports[chain] = getTvl(chain)) + +function resolveHypervisor(tvlFunc) { + return async (...args) => { + const { api } = args[3] + const balances = await tvlFunc(...args) + let bscTokens = Object.keys(balances).filter(t => t.startsWith('bsc:')).map(t => t.slice(4)) + const res = await api.multiCall({ abi: 'function getTotalAmounts() view returns (uint256,uint256)', calls: bscTokens, permitFailure: true }) + const hyperVisorTokens = bscTokens.filter((t, i) => res[i]) + const totalAmounts = res.filter(i => i) + const token0s = await api.multiCall({ abi: 'address:token0', calls: hyperVisorTokens, }) + const token1s = await api.multiCall({ abi: 'address:token1', calls: hyperVisorTokens, }) + const totalSupplies = await api.multiCall({ abi: 'function totalSupply() returns (uint256)', calls: hyperVisorTokens, }) + hyperVisorTokens.forEach((token, i) => { + const bal = balances[`bsc:${token}`] / totalSupplies[i] + delete balances[`bsc:${token}`] + sdk.util.sumSingleBalance(balances, token0s[i], totalAmounts[i][0] * bal, api.chain) + sdk.util.sumSingleBalance(balances, token1s[i], totalAmounts[i][1] * bal, api.chain) + }) + return balances + } +} \ No newline at end of file From fbf2635ea59fbdacabff3aefc894dedd31557130 Mon Sep 17 00:00:00 2001 From: 0xtekgrinder <72015889+0xtekgrinder@users.noreply.github.com> Date: Mon, 5 Jun 2023 15:39:02 +0200 Subject: [PATCH 0650/1354] Add Paladin Finance Warload (#6469) * feat: paladin warload sdk adapter * refactor: rename paladin to paladinfinance --- projects/paladinfinance-warlord/abi.json | 5 +++ projects/paladinfinance-warlord/index.js | 45 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 projects/paladinfinance-warlord/abi.json create mode 100644 projects/paladinfinance-warlord/index.js diff --git a/projects/paladinfinance-warlord/abi.json b/projects/paladinfinance-warlord/abi.json new file mode 100644 index 0000000000..ab2a894df7 --- /dev/null +++ b/projects/paladinfinance-warlord/abi.json @@ -0,0 +1,5 @@ +{ + "token": "address:token", + "getCurrentLockedTokens": "uint256:getCurrentLockedTokens", + "lockers": "function lockers(uint256) view returns (address)" +} \ No newline at end of file diff --git a/projects/paladinfinance-warlord/index.js b/projects/paladinfinance-warlord/index.js new file mode 100644 index 0000000000..d269ee7f4e --- /dev/null +++ b/projects/paladinfinance-warlord/index.js @@ -0,0 +1,45 @@ +const sdk = require("@defillama/sdk"); +const abi = require("./abi.json"); +const { BigNumber } = require("ethers"); + +const WAR_CONTROLLER = "0xFDeac9F9e4a5A7340Ac57B47C67d383fb4f13DBb"; + +async function getLockers(api) { + let lockers = []; + + for (let i = 0; i != -1; ++i) { + try { + const output = await api.call({ + target: WAR_CONTROLLER, + abi: abi["lockers"], + params: [BigNumber.from(i)] + }) + lockers.push(output); + } catch(e) { + break; + } + } + + return lockers; +} + +async function ethTvl(timestamp, block, _, { api },) { + const balances = {}; + + const lockers = await getLockers(api); + + const bals = await api.multiCall({ abi: abi["getCurrentLockedTokens"], calls: lockers.map(i => ({ target: i})) }) + const tokens = await api.multiCall({ abi: abi["token"], calls: lockers.map(i => ({ target: i})) }) + + bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v)) + + return balances; +} + +module.exports = { + methodology: "Counts the total locked tokens inside the lockers contracts", + ethereum: { + tvl: ethTvl, + }, + start: 17368026 +}; From 1b126e10e7f05327d585e3e83ab4731ce3cbe66a Mon Sep 17 00:00:00 2001 From: Full Stack Developer Date: Mon, 5 Jun 2023 09:46:12 -0400 Subject: [PATCH 0651/1354] Equito Finance (#6474) * add Equito Finace project * add hallmarks * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/equito-finance/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/equito-finance/index.js diff --git a/projects/equito-finance/index.js b/projects/equito-finance/index.js new file mode 100644 index 0000000000..5f2410f455 --- /dev/null +++ b/projects/equito-finance/index.js @@ -0,0 +1,19 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokensExport } = require("../helper/sumTokens"); + +// Addresses +const ALGO_VAULT = "XYE5SU66M6JV24REYQJMXUMIWK54X5I6TWYP25RIA3NH7YEEY6UPPWM3RY"; +const ETH_VAULT = "0x274af57Cc969cA96980BA043332D4fb79F496708"; +const BSC_VAULT = "0x9Aa09a1D7ACD6Bb7b4bB5ae4c6F91279E78502a8"; + +module.exports = { + hallmarks: [ + [1671724719, "Start of bridge"], + [1683547217, "Ethereum, Binance vaults deployed"], + ], + methodology: + "TVL counts native tokens locked in EquitoFinance bridge vaults.", + algorand: { tvl: sumTokensExport({ owner: ALGO_VAULT,}) }, + ethereum: { tvl: sumTokensExport({ owner: ETH_VAULT, tokens: [ADDRESSES.null]}) }, + bsc: { tvl: sumTokensExport({ owner: BSC_VAULT, tokens: [ADDRESSES.null]}) }, +}; From e6b547ad94936f6ae353b17f25839a91d0d68279 Mon Sep 17 00:00:00 2001 From: hoomp3 Date: Mon, 5 Jun 2023 09:47:08 -0400 Subject: [PATCH 0652/1354] Update Shade Protocol (#6475) * add new shade protocol adapters * fix linting --- projects/shadeprotocol-derivatives/index.js | 15 +++++++++++++++ projects/shadeprotocol-lend/index.js | 16 ++++++++++++++++ projects/shadeprotocol-silk/index.js | 15 +++++++++++++++ projects/shadeprotocol-swap/index.js | 17 +++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 projects/shadeprotocol-derivatives/index.js create mode 100644 projects/shadeprotocol-lend/index.js create mode 100644 projects/shadeprotocol-silk/index.js create mode 100644 projects/shadeprotocol-swap/index.js diff --git a/projects/shadeprotocol-derivatives/index.js b/projects/shadeprotocol-derivatives/index.js new file mode 100644 index 0000000000..6b03ff08d6 --- /dev/null +++ b/projects/shadeprotocol-derivatives/index.js @@ -0,0 +1,15 @@ +const { get } = require("../helper/http") + +async function tvl(_, _b, _cb, { api, }) { + const data = await get('https://ruvzuawwz7.execute-api.us-east-1.amazonaws.com/prod-analytics-v1/derivatives') + return { + tether: data.totalUsd + } +} + +module.exports = { + misrepresentedTokens: true, + secret: { + tvl + } +} \ No newline at end of file diff --git a/projects/shadeprotocol-lend/index.js b/projects/shadeprotocol-lend/index.js new file mode 100644 index 0000000000..c5f1e60f77 --- /dev/null +++ b/projects/shadeprotocol-lend/index.js @@ -0,0 +1,16 @@ +const { get } = require("../helper/http") + +// Total Collateral Deposited in Vaults + Silk in Earn Pool +async function tvl(_, _b, _cb, { api, }) { + const data = await get('https://ruvzuawwz7.execute-api.us-east-1.amazonaws.com/prod-analytics-v1/lend') + return { + tether: data.totalUsd + } +} + +module.exports = { + misrepresentedTokens: true, + secret: { + tvl + } +} \ No newline at end of file diff --git a/projects/shadeprotocol-silk/index.js b/projects/shadeprotocol-silk/index.js new file mode 100644 index 0000000000..0b1d3f2a40 --- /dev/null +++ b/projects/shadeprotocol-silk/index.js @@ -0,0 +1,15 @@ +const { get } = require("../helper/http") + +async function tvl(_, _b, _cb, { api, }) { + const data = await get('https://ruvzuawwz7.execute-api.us-east-1.amazonaws.com/prod-analytics-v1/silk') + return { + tether: data.totalUsd + } +} + +module.exports = { + misrepresentedTokens: true, + secret: { + tvl + } +} \ No newline at end of file diff --git a/projects/shadeprotocol-swap/index.js b/projects/shadeprotocol-swap/index.js new file mode 100644 index 0000000000..26666b229d --- /dev/null +++ b/projects/shadeprotocol-swap/index.js @@ -0,0 +1,17 @@ +const { get } = require("../helper/http") + +async function tvl(_, _b, _cb, { api, }) { + const data = await get('https://na36v10ce3.execute-api.us-east-1.amazonaws.com/API-mainnet-STAGE/shadeswap/pairs') + return { + tether: data.map(i => +i.liquidity_usd).filter(i=>i<1e9).reduce((a, i) => a + i) + } + +} + + +module.exports = { + misrepresentedTokens: true, + secret: { + tvl + } +} \ No newline at end of file From d64ccf529f3a02facd0c3365cc7fda5bd64b6651 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 5 Jun 2023 23:44:28 +0100 Subject: [PATCH 0653/1354] count value of each collateral as tvl --- projects/shadeprotocol-lend/index.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/projects/shadeprotocol-lend/index.js b/projects/shadeprotocol-lend/index.js index c5f1e60f77..2bf9299ee7 100644 --- a/projects/shadeprotocol-lend/index.js +++ b/projects/shadeprotocol-lend/index.js @@ -1,10 +1,18 @@ const { get } = require("../helper/http") -// Total Collateral Deposited in Vaults + Silk in Earn Pool +// Total Collateral Deposited in Vaults async function tvl(_, _b, _cb, { api, }) { const data = await get('https://ruvzuawwz7.execute-api.us-east-1.amazonaws.com/prod-analytics-v1/lend') + + let totalValue = 0; + + for (let i = 0; i < data.collaterals.length; i++) { + // Add the value of each collateral to the total value + totalValue += data.collaterals[i].value; + } + return { - tether: data.totalUsd + tether: totalValue } } @@ -13,4 +21,4 @@ module.exports = { secret: { tvl } -} \ No newline at end of file +} From 6ef2e611f23c759d686feaeef6e2e3521c76c272 Mon Sep 17 00:00:00 2001 From: wshino Date: Tue, 6 Jun 2023 14:53:39 +0900 Subject: [PATCH 0654/1354] breakdown predy versions --- projects/predy-v3/api.js | 7 ++++ projects/predy-v3/index.js | 44 +++++++++++++++++++++++++ projects/predy-v320/api.js | 7 ++++ projects/{predy => predy-v320}/index.js | 11 +------ projects/predy.js | 19 +++++++++++ 5 files changed, 78 insertions(+), 10 deletions(-) create mode 100644 projects/predy-v3/api.js create mode 100644 projects/predy-v3/index.js create mode 100644 projects/predy-v320/api.js rename projects/{predy => predy-v320}/index.js (81%) create mode 100644 projects/predy.js diff --git a/projects/predy-v3/api.js b/projects/predy-v3/api.js new file mode 100644 index 0000000000..a62d1e2ec0 --- /dev/null +++ b/projects/predy-v3/api.js @@ -0,0 +1,7 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + ...getExports("predy-v3", ['predy']), +} diff --git a/projects/predy-v3/index.js b/projects/predy-v3/index.js new file mode 100644 index 0000000000..e81cf82617 --- /dev/null +++ b/projects/predy-v3/index.js @@ -0,0 +1,44 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const sdk = require('@defillama/sdk'); +const { sumTokensExport } = require('../helper/unwrapLPs') +const BigNumber = require("bignumber.js"); + +const v3Address = '0x4006A8840F8640A7D8F46D2c3155a58c76eCD56e'; + +const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; +const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; + +const abi = { + v3: { + getTokenState: 'function getTokenState() returns (tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth), tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth))' + }, + v320: { + getAsset: 'function getAsset(uint256 _id) external view returns (tuple(uint256 id, address token, address supplyTokenAddress, tuple(uint256 riskRatio, int24 rangeSize, int24 rebalanceThreshold), tuple(uint256 totalCompoundDeposited, uint256 totalCompoundBorrowed, uint256 totalNormalDeposited, uint256 totalNormalBorrowed, uint256 assetScaler, uint256 debtScaler, uint256 assetGrowth, uint256 debtGrowth), tuple(address uniswapPool, int24 tickLower, int24 tickUpper, uint256 totalAmount, uint256 borrowedAmount, uint256 supplyPremiumGrowth, uint256 borrowPremiumGrowth, uint256 fee0Growth, uint256 fee1Growth, tuple(int256 positionAmount, uint256 lastFeeGrowth), tuple(int256 positionAmount, uint256 lastFeeGrowth), int256 rebalanceFeeGrowthUnderlying, int256 rebalanceFeeGrowthStable), bool isMarginZero, tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2), tuple(uint256 baseRate, uint256 kinkRate, uint256 slope1, uint256 slope2), uint256 lastUpdateTimestamp, uint256 accumulatedProtocolRevenue))' + } +} + + +async function borrowed(_time, _ethBlock, chainBlocks, { api }) { + let balances = {}; + + // V3 + const v3TokenState = await api.call({ abi: abi.v3.getTokenState, target: v3Address, }) + + await sdk.util.sumSingleBalance(balances, WETH_CONTRACT, v3TokenState[0]['totalNormalBorrowed'], api.chain); + await sdk.util.sumSingleBalance(balances, USDC_CONTRACT, v3TokenState[1]['totalNormalBorrowed'], api.chain); + + return balances; +} + + +module.exports = { + methodology: "USDC and WETH locked on predy contracts", + arbitrum: { + tvl: sumTokensExport({ owners: [v3Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), + borrowed + }, + hallmarks: [ + [1671092333, "Launch Predy V3"], + [1678734774, "Launch Predy V3.2"] + ], +}; diff --git a/projects/predy-v320/api.js b/projects/predy-v320/api.js new file mode 100644 index 0000000000..501c8b6d11 --- /dev/null +++ b/projects/predy-v320/api.js @@ -0,0 +1,7 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + ...getExports("predy-v3.2", ['predy']), +} diff --git a/projects/predy/index.js b/projects/predy-v320/index.js similarity index 81% rename from projects/predy/index.js rename to projects/predy-v320/index.js index f1f288f02e..094a98f824 100644 --- a/projects/predy/index.js +++ b/projects/predy-v320/index.js @@ -3,9 +3,6 @@ const sdk = require('@defillama/sdk'); const { sumTokensExport } = require('../helper/unwrapLPs') const BigNumber = require("bignumber.js"); -const v2Address = '0xc7ec02AEeCdC9087bf848c4C4f790Ed74A93F2AF'; -const v202Address = '0xAdBAeE9665C101413EbFF07e20520bdB67C71AB6'; -const v3Address = '0x4006A8840F8640A7D8F46D2c3155a58c76eCD56e'; const v320Address = '0x68a154fB3e8ff6e4DA10ECd54DEF25D9149DDBDE'; const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; @@ -24,12 +21,6 @@ const abi = { async function borrowed(_time, _ethBlock, chainBlocks, { api }) { let balances = {}; - // V3 - const v3TokenState = await api.call({ abi: abi.v3.getTokenState, target: v3Address, }) - - await sdk.util.sumSingleBalance(balances, WETH_CONTRACT, v3TokenState[0]['totalNormalBorrowed'], api.chain); - await sdk.util.sumSingleBalance(balances, USDC_CONTRACT, v3TokenState[1]['totalNormalBorrowed'], api.chain); - // V3.2 const v320USDCState = await api.call({ abi: abi.v320.getAsset, target: v320Address, params: 1}) const v320ETHState = await api.call({ abi: abi.v320.getAsset, target: v320Address, params: 2 }) @@ -47,7 +38,7 @@ async function borrowed(_time, _ethBlock, chainBlocks, { api }) { module.exports = { methodology: "USDC and WETH locked on predy contracts", arbitrum: { - tvl: sumTokensExport({ owners: [v202Address, v2Address, v3Address, v320Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), + tvl: sumTokensExport({ owners: [v320Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), borrowed }, hallmarks: [ diff --git a/projects/predy.js b/projects/predy.js new file mode 100644 index 0000000000..03c4969e0c --- /dev/null +++ b/projects/predy.js @@ -0,0 +1,19 @@ +const ADDRESSES = require('./helper/coreAssets.json') +const { sumTokensExport } = require('./helper/unwrapLPs') + +const v2Address = '0xc7ec02AEeCdC9087bf848c4C4f790Ed74A93F2AF'; +const v202Address = '0xAdBAeE9665C101413EbFF07e20520bdB67C71AB6'; + +const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; +const USDC_CONTRACT = ADDRESSES.arbitrum.USDC; + +module.exports = { + methodology: "USDC and WETH locked on predy contracts", + arbitrum: { + tvl: sumTokensExport({ owners: [v202Address, v2Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), + }, + hallmarks: [ + [1671092333, "Launch Predy V3"], + [1678734774, "Launch Predy V3.2"] + ], +}; From 729b5cd035d9e94d570655cbd40b5b30ef635904 Mon Sep 17 00:00:00 2001 From: Stefan Ionescu <15263515+stefanionescu@users.noreply.github.com> Date: Tue, 6 Jun 2023 14:50:19 +0100 Subject: [PATCH 0655/1354] Add the Astroport deployment on Neutron mainnet (#6477) * Add the Astroport deployment on Neutron mainnet * Add missing comma in Astroport's index.js * fix kava --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/astroport/index.js | 5 +++- projects/hard.js | 10 +++---- projects/helper/chain/cosmos.js | 1 + projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 24 ++++++++++++++++- projects/helper/portedTokens.js | 6 ++--- projects/helper/tokenMapping.js | 48 +-------------------------------- projects/kava-boost/index.js | 4 +-- projects/kava-earn/index.js | 4 +-- projects/kava-liquid/index.js | 3 +-- projects/kava.js | 4 +-- 11 files changed, 40 insertions(+), 70 deletions(-) diff --git a/projects/astroport/index.js b/projects/astroport/index.js index eea9fb28fe..8274121dfa 100644 --- a/projects/astroport/index.js +++ b/projects/astroport/index.js @@ -13,8 +13,11 @@ module.exports = { terra2: { tvl: getFactoryTvl("terra14x9fr055x5hvr48hzy2t4q7kvjvfttsvxusa4xsdcy702mnzsvuqprer8r") }, + neutron: { + tvl: getFactoryTvl("neutron1hptk0k5kng7hjy35vmh009qd5m6l33609nypgf2yc6nqnewduqasxplt4e") + }, hallmarks: [ [1651881600, "UST depeg"], ] -} // node test.js projects/astroport/index.js \ No newline at end of file +} // node test.js projects/astroport/index.js diff --git a/projects/hard.js b/projects/hard.js index 6794b903d8..879f419043 100644 --- a/projects/hard.js +++ b/projects/hard.js @@ -1,6 +1,4 @@ const { queryV1Beta1 } = require('./helper/chain/cosmos'); -const { transformBalances } = require('./helper/portedTokens') - const chain = 'kava' const tvl = async (_, _1, _2, { api }) => { @@ -8,17 +6,15 @@ const tvl = async (_, _1, _2, { api }) => { queryV1Beta1({ chain, url: 'hard/v1beta1/total-deposited' }), queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) ]) - deposited.supplied_coins.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) - borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount * -1, { skipChain: true })) - return transformBalances(chain, api.getBalances()) + deposited.supplied_coins.forEach(({ denom, amount }) => api.add(denom, amount)) + borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount * -1)) } const borrowed = async (_, _1, _2, { api }) => { const borrowed = await queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) - borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) - return transformBalances(chain, api.getBalances()) + borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount)) } module.exports = { diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index e891459b80..f54cd35da4 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -26,6 +26,7 @@ const endPoints = { fxcore: "https://fx-rest.functionx.io", xpla: "https://dimension-lcd.xpla.dev", kava: "https://api2.kava.io", + neutron: "https://rest-kralum.neutron-1.neutron.org", }; const chainSubpaths = { diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 3fbf27bd85..e2045ab3ff 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -124,6 +124,7 @@ "near", "neo", "neo3", + "neutron", "nova", "nuls", "oasis", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a2b2f53597..9433d9c775 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -245,6 +245,13 @@ }, "evmos": { "WEVMOS": "0xd4949664cd82660aae99bedc034a0dea8a0bd517", + "STEVMOS": "0x2c68d1d6ab986ff4640b51e1f14c716a076e44c4", + "STATIM": "0xb5124fa2b2cf92b2d469b249433ba1c96bdf536d", + "ATOM": "0xc5e00d3b04563950941f7137b5afa3a534f0d6d6", + "STRIDE": "0x8fa78ceb7f04118ec6d06aac37ca854691d8e963", + "axlRETH": "0xe60ce2dfa6d4ad37ade1dcb7ac4d6c3a093b3a7e", + "USDT_CEL": "0xb72a7567847aba28a2819b855d7fe679d4f59846", + "AXL_WETH": "0x50de24b3f0b3136c50fa8a3b8ebc8bd80a269ce5", "USDC": "0x51e44ffad5c2b122c8b635671fcc8139dc636e82", "tBTC": "0x8d395affc1767141387fff45af88a074614e7ccf", "renBTC": "0xb1a8c961385b01c3aa782fba73e151465445d319", @@ -1120,6 +1127,7 @@ "ibc": { "JUNO": "EFF323CC632EC4F747C61BCE238A758EFDB7699C3226565F7C20DA06509D59A5", "JUNO_1": "167E3D88D71B7D2F6308D3EF93FC3DD51932B2D9672D72B71418F61CBC5F5717", + "AXL_2": "C0E66D1C81D8AAF0E6896E05190FDFBC222367148F86AC3EA679C28327A763CD", "STRD": "3FDD002A3A4019B05A33D324B2F29748E77AF501BEA5C96D1F28B2D6755F9F25", "BNB": "DADB399E742FCEE71853E98225D13E44E90292852CD0033DF5CABAB96F80B833", "AXLWETH": "F1806958CA98757B91C3FA1573ECECD24F6FA3804F074A6977658914A49E65A3", @@ -1162,6 +1170,12 @@ "IST": "CA1261224952DF089EFD363D8DBB30A8AB6D8CD181E60EE9E68E432F8DE14FE3", "USDT": "CBF67A2BCF6CAE343FDF251E510C8E18C361FC02B23430C121116E0811835DEF", "USDT_1": "F2331645B9683116188EF36FC04A809C28BD36B54555E8705A37146D0182F045", + "ATOM_3": "27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2", + "AKT_1": "799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098", + "LUNA_2": "B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395", + "OSMO_3": "0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B", + "UST_2": "B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C", + "AXL_USDC_1": "F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349", "BLD": "11F940BCDFD7CFBFD7EDA13F25DA95D308286D441209D780C9863FD4271514EB" }, "starknet": { @@ -1243,7 +1257,8 @@ }, "era": { "WETH": "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", - "USDC": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4" + "USDC": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4", + "BUSD": "0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181" }, "polygon_zkevm": { "WETH": "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9", @@ -1282,6 +1297,13 @@ "grove": { "WGRV": "0xE85f139488c689038028a3EB8fC38dcC29D4C340" }, + "fxcore": { + "FX": "FX", + "USDT": "usdt" + }, + "xpla": { + "XPLA": "axpla" + }, "pulse": { "WPLS": "0xa1077a294dde1b09bb078844df40758a5d0f9a27", "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", diff --git a/projects/helper/portedTokens.js b/projects/helper/portedTokens.js index d60fecfb51..638a9a4adb 100644 --- a/projects/helper/portedTokens.js +++ b/projects/helper/portedTokens.js @@ -144,7 +144,7 @@ async function getChainTransform(chain) { if (chain === 'tezos' && addr.startsWith('KT1')) return chainStr if (chain === 'terra2' && addr.startsWith('terra1')) return chainStr if (chain === 'algorand' && /^\d+$/.test(addr)) return chainStr - if (addr.startsWith('0x') || ['solana'].includes(chain)) return chainStr + if (addr.startsWith('0x') || ['solana', 'kava'].includes(chain)) return chainStr return addr }; } @@ -191,8 +191,8 @@ async function transformDexBalances({ chain, data, balances = {}, restrictTokenR } function addTokens({ token0, token0Bal, token1, token1Bal }) { - const isCoreToken0 = coreTokens.has(token0) - const isCoreToken1 = coreTokens.has(token1) + const isCoreToken0 = coreTokens.has(token0.replace('ibc/', '')) + const isCoreToken1 = coreTokens.has(token1.replace('ibc/', '')) if ((isCoreToken0 && isCoreToken1) || (!isCoreToken0 && !isCoreToken1)) { sdk.util.sumSingleBalance(balances, token0, token0Bal) sdk.util.sumSingleBalance(balances, token1, token1Bal) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f629672f5f..7f566e944b 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -16,7 +16,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList -const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore',] +const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron',] const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui'] const distressedAssts = new Set(Object.values({ @@ -51,52 +51,6 @@ const fixBalancesTokens = { // [ADDRESSES.arbitrum_nova.USDT]: { coingeckoId: "tether", decimals: 6 }, // [ADDRESSES.arbitrum_nova.USDC]: { coingeckoId: "usd-coin", decimals: 6 }, // }, - pulse: { - '0xa1077a294dde1b09bb078844df40758a5d0f9a27': { coingeckoId: "pulsechain", decimals: 18 }, - '0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c': { coingeckoId: ADDRESSES.ethereum.WETH, decimals: 0, }, - '0xefd766ccb38eaf1dfd701853bfce31359239f305': { coingeckoId: ADDRESSES.ethereum.DAI, decimals: 0, }, - }, - evmos: { - '0x2c68d1d6ab986ff4640b51e1f14c716a076e44c4': { coingeckoId: "evmos", decimals: 18 },//stEVMOS - '0x50de24b3f0b3136c50fa8a3b8ebc8bd80a269ce5': { coingeckoId: "axlweth", decimals: 18 },//axlWETH - '0xb5124fa2b2cf92b2d469b249433ba1c96bdf536d': { coingeckoId: "stride-staked-atom", decimals: 6 }, - '0xc5e00d3b04563950941f7137b5afa3a534f0d6d6': { coingeckoId: "cosmos", decimals: 6 }, - '0x8fa78ceb7f04118ec6d06aac37ca854691d8e963': { coingeckoId: "stride", decimals: 6 }, - '0xe60ce2dfa6d4ad37ade1dcb7ac4d6c3a093b3a7e': { coingeckoId: "rocket-pool-eth", decimals: 18 },//axlRETH - '0xb72a7567847aba28a2819b855d7fe679d4f59846': { coingeckoId: "tether-usd-celer", decimals: 6 }, - }, - era: { - '0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181': { coingeckoId: "binance-usd", decimals: 18 }, - }, - fxcore: { - 'FX': { coingeckoId: "fx-coin", decimals: 18 }, - 'usdt': { coingeckoId: "tether", decimals: 6 }, - }, - xpla: { - 'axpla': { coingeckoId: "xpla", decimals: 18 }, - }, - kava: { - 'bnb': { coingeckoId: "binancecoin", decimals: 8 }, - 'btcb': { coingeckoId: "bitcoin", decimals: 8 }, - 'busd': { coingeckoId: "binance-usd", decimals: 8 }, - 'hard': { coingeckoId: "kava-lend", decimals: 6 }, - 'swp': { coingeckoId: "kava-swap", decimals: 6 }, - 'ukava': { coingeckoId: "kava", decimals: 6 }, - 'bkava': { coingeckoId: "kava", decimals: 6 }, - 'xrpb': { coingeckoId: "ripple", decimals: 8 }, - 'usdx': { coingeckoId: "usdx", decimals: 6 }, - 'hbtc': { coingeckoId: "huobi-btc", decimals: 8 }, - 'erc20:axelar:usdc': { coingeckoId: "usd-coin", decimals: 6 }, - 'erc20:multichain:usdc': { coingeckoId: "usd-coin", decimals: 6 }, - 'erc20:multichain:usdt': { coingeckoId: "tether", decimals: 6 }, - 'erc20:multichain:wbtc': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, - 'erc20:multichain:dai': { coingeckoId: "dai", decimals: 18 }, - 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2': { coingeckoId: "cosmos", decimals: 6 }, - 'ibc/799FDD409719A1122586A629AE8FCA17380351A51C1F47A80A1B8E7F2A491098': { coingeckoId: "akash-network", decimals: 6 }, - 'ibc/B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395': { coingeckoId: "terra-luna", decimals: 6 }, - 'ibc/0471F1C4E7AFD3F07702BEF6DC365268D64570F7C1FDC98EA6098DD6DE59817B': { coingeckoId: "osmosis", decimals: 6 }, - 'ibc/B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C': { coingeckoId: "terrausd", decimals: 6 }, - } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/kava-boost/index.js b/projects/kava-boost/index.js index dccf1829bb..166bb75044 100644 --- a/projects/kava-boost/index.js +++ b/projects/kava-boost/index.js @@ -1,5 +1,4 @@ const { queryV1Beta1 } = require('../helper/chain/cosmos'); -const { transformBalances } = require('../helper/portedTokens') const chain = 'kava' const blacklisted = new Set(['kava', 'ukava', 'bkava']) @@ -8,8 +7,7 @@ async function tvl(_, _1, _2, { api }) { const { result: pools } = await queryV1Beta1({ chain, url: '/savings/v1beta1/total_supply' }); pools .filter(({ denom }) => !blacklisted.has(denom)) - .forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) - return transformBalances(chain, api.getBalances()) + .forEach(({ denom, amount }) => api.add(denom, amount)) } module.exports = { diff --git a/projects/kava-earn/index.js b/projects/kava-earn/index.js index a216e2de7c..07bab0a106 100644 --- a/projects/kava-earn/index.js +++ b/projects/kava-earn/index.js @@ -1,12 +1,10 @@ const { queryV1Beta1 } = require('../helper/chain/cosmos'); -const { transformBalances } = require('../helper/portedTokens') const chain = 'kava' async function tvl(_, _1, _2, { api }) { const { result: pools } = await queryV1Beta1({ chain, url: '/earn/v1beta1/total_supply' }); - pools.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) - return transformBalances(chain, api.getBalances()) + pools.forEach(({ denom, amount }) => api.add(denom, amount)) } module.exports = { diff --git a/projects/kava-liquid/index.js b/projects/kava-liquid/index.js index 9dc7593879..de7e1d7ae2 100644 --- a/projects/kava-liquid/index.js +++ b/projects/kava-liquid/index.js @@ -5,8 +5,7 @@ const chain = 'kava' async function tvl(_, _1, _2, { api }) { const { result: pools } = await queryV1Beta1({ chain, url: '/liquid/v1beta1/total_supply' }); - pools.forEach(({ denom, amount }) => api.add(denom, amount, { skipChain: true })) - return transformBalances(chain, api.getBalances()) + pools.forEach(({ denom, amount }) => api.add(denom, amount)) } module.exports = { diff --git a/projects/kava.js b/projects/kava.js index ce46f925f6..74450f74c0 100644 --- a/projects/kava.js +++ b/projects/kava.js @@ -1,11 +1,9 @@ const { queryV1Beta1 } = require('./helper/chain/cosmos'); -const { transformBalances } = require('./helper/portedTokens') const chain = 'kava' async function tvl(_, _1, _2, { api }) { const { total_collateral: pools } = await queryV1Beta1({ chain, url: 'cdp/v1beta1/totalCollateral' }); - pools.forEach(({ amount: { denom, amount} }) => api.add(denom, amount, { skipChain: true })) - return transformBalances(chain, api.getBalances()) + pools.forEach(({ amount: { denom, amount} }) => api.add(denom, amount)) } module.exports = { From 9a04578ed8b803bf6a6a0f91ec3a1f5850e85173 Mon Sep 17 00:00:00 2001 From: yuval-weiss <43820038+yuval-weiss@users.noreply.github.com> Date: Tue, 6 Jun 2023 15:50:51 +0200 Subject: [PATCH 0656/1354] add Raft TVL adapter (#6476) * add Raft TVL adapter * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/raft/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/raft/index.js diff --git a/projects/raft/index.js b/projects/raft/index.js new file mode 100644 index 0000000000..f53a5f9336 --- /dev/null +++ b/projects/raft/index.js @@ -0,0 +1,10 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +const RAFT_POSITION_MANAGER = '0x5f59b322eb3e16a0c78846195af1f588b77403fc'; + +module.exports = { + ethereum: { + tvl: sumTokensExport({ owner: RAFT_POSITION_MANAGER, tokens: [ADDRESSES.ethereum.WSTETH]}), + } +} From 061505d22a3b1db56589bc8027f6d2d50fa3f410 Mon Sep 17 00:00:00 2001 From: ytrobert <91405156+ytrobert@users.noreply.github.com> Date: Tue, 6 Jun 2023 21:51:52 +0800 Subject: [PATCH 0657/1354] Update index.js (#6478) update project: aboard-exchange, to add chain: zkSync Era for it. --- projects/aboard-exchange/index.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/projects/aboard-exchange/index.js b/projects/aboard-exchange/index.js index e30206d2bf..21472aee31 100644 --- a/projects/aboard-exchange/index.js +++ b/projects/aboard-exchange/index.js @@ -1,7 +1,9 @@ -const ADDRESSES = require('../helper/coreAssets.json') //20230428 initial release: simple and clear +//20230606 update: add chain: zkSync Era +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); +//arbitrum const ownerArbitrum = '0x7a08b29A7Ad4A19A5ECa0c82F5F082872488D135'; // contract address const tokensArbitrum = [ ADDRESSES.arbitrum.USDC, // USDC @@ -9,7 +11,7 @@ const tokensArbitrum = [ ADDRESSES.arbitrum.USDT, // USDT ADDRESSES.arbitrum.WBTC, // WBTC ]; - +//avalanche const ownerAvalanche = '0xd8b0D18faE7eA29F2AD95d01FFb479E0021a9A5e'; // contract address const tokensAvalanche = [ ADDRESSES.avax.USDC, // USDC @@ -18,6 +20,12 @@ const tokensAvalanche = [ ADDRESSES.avax.WETH_e, // WETH.e ADDRESSES.avax.USDt, // USDt ]; +//zkSync Era +const ownerEra = '0xa1795B95C543428AFf866dA613e43895457bf1C1'; // contract address +const tokensEra = [ + ADDRESSES.era.USDC, // USDC + ADDRESSES.null, // ETH +]; module.exports = { methodology: "TVL is equal to users' deposits minus withdrawals", @@ -28,4 +36,7 @@ module.exports = { avax: { tvl: sumTokensExport({ owner:ownerAvalanche, tokens:tokensAvalanche }) }, + era: { + tvl: sumTokensExport({ owner:ownerEra, tokens:tokensEra }) + } }; From 6cccff9f3e4a934659ccb32d50a89a0deef12f29 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 6 Jun 2023 16:29:49 +0100 Subject: [PATCH 0658/1354] fix hallmarks --- projects/dfx/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/dfx/index.js b/projects/dfx/index.js index 4bd11a15f7..9e880ec191 100644 --- a/projects/dfx/index.js +++ b/projects/dfx/index.js @@ -47,5 +47,5 @@ module.exports = { polygon: { tvl: tvl("polygon"), }, - hallmarks: [1667955600, "Hack"] + hallmarks: [[1667955600, "Hack"]] }; From e9b864bb5360bd900e52957a1237bc869b524e53 Mon Sep 17 00:00:00 2001 From: stupid-boar <6961601+stupid-boar@users.noreply.github.com> Date: Tue, 6 Jun 2023 18:50:13 +0300 Subject: [PATCH 0659/1354] Add CRV token for PepeTeam Bridge (#6487) --- projects/pepe-bridge/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index ac3183fc9c..afb9292836 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -9,6 +9,7 @@ const config = { ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.CRV, ], '0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83' ] From 102ebced77b29892753817a87100651d398650ce Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 6 Jun 2023 21:29:01 +0530 Subject: [PATCH 0660/1354] add quipuswap v2 & v3 (#6488) --- projects/quipuswap-stableswap/index.js | 52 ++++++++++++++++++++++++++ projects/quipuswap-v2/index.js | 16 ++++++++ projects/quipuswap-v3/index.js | 12 ++++++ projects/quipuswap/index.js | 25 ++++--------- 4 files changed, 88 insertions(+), 17 deletions(-) create mode 100644 projects/quipuswap-stableswap/index.js create mode 100644 projects/quipuswap-v2/index.js create mode 100644 projects/quipuswap-v3/index.js diff --git a/projects/quipuswap-stableswap/index.js b/projects/quipuswap-stableswap/index.js new file mode 100644 index 0000000000..54d77322af --- /dev/null +++ b/projects/quipuswap-stableswap/index.js @@ -0,0 +1,52 @@ +const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') +const { PromisePool } = require('@supercharge/promise-pool') +const sdk = require('@defillama/sdk') + +const stableSwap = async (_, _1, _2, { api }) => { + const data = await getStorage('KT1UPiYB4HrLFcHQ5tkjahGnDM55E8iEbNAx') + const pools = await getBigMapById(data.storage.pool_id_to_address); + return sumTokens2({ owners: Object.values(pools), includeTezos: false, }) +} + +const sswapAndYupuna = async (_, _1, _2, { api }) => { + const data = await getStorage('KT1Q9gw5mZSLPGkoCaWc5a8FKLGDiTiULc6R') + const pools = await getBigMapById(data.storage.pool_id_to_address); + const { errors } = await PromisePool.withConcurrency(10) + .for(Object.values(pools).slice(0, 2)) + .process(async pool => { + const { storage: data } = await getStorage(pool) + const tokenInfos = await getBigMapById(data.pools); + const tokenDatas = await getBigMapById(data.tokens); + Object.keys(tokenInfos).forEach(key => { + const { tokens_info } = tokenInfos[key] + const tokenData = tokenDatas[key] + Object.keys(tokens_info).forEach(key => { + const token = getToken(tokenData[key]) + const { reserves } = tokens_info[key] + api.add(token, reserves) + }) + }) + }) + + if (errors && errors.length) + throw errors[0] + return api.getBalances() +} + +function getToken(object) { + if (object.fa12) return object.fa12 + if (object.fa2) { + const { token_id, token_address } = object.fa2 + if (token_id && token_id !== '0') return `${token_address}-${token_id}` + return token_address + } + throw new Error("Unknown token type" + JSON.stringify(object, null, 2)) +} + +module.exports = { + timetravel: false, + tezos: { + tvl: sdk.util.sumChainTvls([stableSwap, sswapAndYupuna]), + } +} + diff --git a/projects/quipuswap-v2/index.js b/projects/quipuswap-v2/index.js new file mode 100644 index 0000000000..106bf9b34e --- /dev/null +++ b/projects/quipuswap-v2/index.js @@ -0,0 +1,16 @@ +const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') + + +const factory = 'KT1J8Hr3BP8bpbfmgGpRPoC9nAMSYtStZG43' +module.exports = { + timetravel: false, + tezos: { + tvl: async () => { + const data = await getStorage(factory) + const pools = await getBigMapById(data.storage.pairs); + const owners = Object.values(pools).map(i => i.bucket).filter(i => i) + owners.push(factory) + return sumTokens2({ owners, includeTezos: true, }) + }, + } +} diff --git a/projects/quipuswap-v3/index.js b/projects/quipuswap-v3/index.js new file mode 100644 index 0000000000..7f3cdf1615 --- /dev/null +++ b/projects/quipuswap-v3/index.js @@ -0,0 +1,12 @@ +const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') + +module.exports = { + timetravel: false, + tezos: { + tvl: async () => { + const data = await getStorage('KT1JNNMMGyNNy36Zo6pcgRTMLUZyqRrttMZ4') + const pools = await getBigMapById(data.pools); + return sumTokens2({ owners: Object.values(pools), includeTezos: false, }) + }, + } +} diff --git a/projects/quipuswap/index.js b/projects/quipuswap/index.js index c1f64f64fa..209cd98281 100644 --- a/projects/quipuswap/index.js +++ b/projects/quipuswap/index.js @@ -1,23 +1,14 @@ +const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezos') -const { sumTokens2, } = require('../helper/chain/tezos') -const { get, } = require('../helper/http') - -async function tvl() { - const tokenToTokenLPAddress = 'KT1VNEzpf631BLsdPJjt2ZhgUitR392x6cSi' - return sumTokens2({ owners: [tokenToTokenLPAddress, ... await getLPs('Quipuswap')], includeTezos: true, }) -} - -async function getLPs(dex) { - const { contracts } = await get('https://api.teztools.io/token/prices') - const LPs = {} - for (const { pairs } of contracts) - pairs.filter(p => p.dex === dex).forEach(p => LPs[p.address] = p) - return Object.keys(LPs) -} +const factory = 'KT1Lw8hCoaBrHeTeMXbqHPG4sS4K1xn7yKcD' module.exports = { timetravel: false, tezos: { - tvl, + tvl: async () => { + const data = await getStorage(factory) + const pools = await getBigMapById(data.token_to_exchange); + return sumTokens2({ owners: Object.values(pools), includeTezos: true, }) + }, } -} +} \ No newline at end of file From e41da23abd4438822285ee9f022af583972fe945 Mon Sep 17 00:00:00 2001 From: dan2xxx <65246666+dan2xxx@users.noreply.github.com> Date: Tue, 6 Jun 2023 18:59:16 +0300 Subject: [PATCH 0661/1354] Add dubble-exchange adapter (#6481) * Create abi.json * Create index.js * Update index.js * Update abi.json * Update index.js * Update abi.json * Update index.js * Delete abi.json * code refactor --------- Co-authored-by: Ivan <76028641+block4chain226@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dubble-exchange/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/dubble-exchange/index.js diff --git a/projects/dubble-exchange/index.js b/projects/dubble-exchange/index.js new file mode 100644 index 0000000000..90f0e199ce --- /dev/null +++ b/projects/dubble-exchange/index.js @@ -0,0 +1,14 @@ +const VAULT_CONTRACT = "0xD522395dfD017F47a932D788eC7CB058aDBbc783"; +const ADDRESSES = require('../helper/coreAssets.json') + +async function tvl(timestamp, block, chainBlocks, { api }) { + const bal = await api.call({ abi: 'uint256:checkBalance', target: VAULT_CONTRACT }) + api.add(ADDRESSES.arbitrum.USDC, bal) +} + +module.exports = { + misrepresentedTokens: true, + arbitrum: { + tvl + } +}; From 65d8061268fd2a1b8254d2dc798ece995aa893a0 Mon Sep 17 00:00:00 2001 From: Elliot Shiu Date: Wed, 7 Jun 2023 01:09:45 +0900 Subject: [PATCH 0662/1354] sommelier: add new real yield cellars, link, 1inch, uni, snx, ens (#6483) --- projects/sommelier/index.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index afcd40b22d..fba01c1bd2 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -23,13 +23,25 @@ const cellarsV0816 = [ { id: STEADY_MATIC, startBlock: 16192732 }, ]; +// v2 Cellars +const DEFI_STARS = "0x03df2a53cbed19b824347d6a45d09016c2d1676a"; const REAL_YIELD_USD = "0x97e6e0a40a3d02f12d1cec30ebfbae04e37c119e"; const REAL_YIELD_ETH = "0xb5b29320d2dde5ba5bafa1ebcd270052070483ec"; -const DEFI_STARS = "0x03df2a53cbed19b824347d6a45d09016c2d1676a"; +const REAL_YIELD_LINK = "0x4068bdd217a45f8f668ef19f1e3a1f043e4c4934"; +const REAL_YIELD_1INCH = "0xc7b69e15d86c5c1581dacce3cacaf5b68cd6596f"; +const REAL_YIELD_UNI = "0x6a6af5393dc23d7e3db28d28ef422db7c40932b6"; +const REAL_YIELD_SNX = "0xcbf2250f33c4161e18d4a2fa47464520af5216b5"; +const REAL_YIELD_ENS = "0x18ea937aba6053bc232d9ae2c42abe7a8a2be440"; + const cellarsV2 = [ + { id: DEFI_STARS, startBlock: 17181497 }, { id: REAL_YIELD_USD, startBlock: 16431804 }, { id: REAL_YIELD_ETH, startBlock: 16986127 }, - { id: DEFI_STARS, startBlock: 17181497 }, + { id: REAL_YIELD_LINK, startBlock: 17377190 }, + { id: REAL_YIELD_1INCH, startBlock: 17377190 }, + { id: REAL_YIELD_UNI, startBlock: 17377190 }, + { id: REAL_YIELD_SNX, startBlock: 17377190 }, + { id: REAL_YIELD_ENS, startBlock: 17377190 }, ]; async function tvl(timestamp, block, chainBlocks, { api }) { From 794de3521e162ec2ce9dad2b41b6ec4011e5da56 Mon Sep 17 00:00:00 2001 From: Niobium <96459070+NiobiumZeit@users.noreply.github.com> Date: Wed, 7 Jun 2023 00:12:03 +0800 Subject: [PATCH 0663/1354] Feat/benddao/lend stnft (#6485) * feat(benddao): replace stnft in lendpool with underlying asset to get the real price * fix(lend): use lowercase address to match map --- projects/benddao/helper/address.js | 3 ++ projects/benddao/helper/index.js | 52 +++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/projects/benddao/helper/address.js b/projects/benddao/helper/address.js index f87ac5cec5..32c0e519d4 100644 --- a/projects/benddao/helper/address.js +++ b/projects/benddao/helper/address.js @@ -22,5 +22,8 @@ module.exports = { BoundBAYC: "0xDBfD76AF2157Dc15eE4e57F3f942bB45Ba84aF24", BoundMAYC: "0x69f37e419bD1457d2a25ed3f5d418169caAe8D1F", BoundBAKC: "0xcF2CC4994Fe9E411A6aDC30d0A11f20CD4D8d2aB", + StBAYC: "0x08f5F0126aF89B4fD5499E942891D904A027624B", + StMAYC: "0xc1ED28E4b4d8e284A41E7474CA5522b010f3A64F", + StBAKC: "0xf6d3B8098967dd349d0477F01C16E8864a832ac2", }, }; diff --git a/projects/benddao/helper/index.js b/projects/benddao/helper/index.js index 4b2a92cda5..d40d088365 100644 --- a/projects/benddao/helper/index.js +++ b/projects/benddao/helper/index.js @@ -7,18 +7,17 @@ const address = require("./address"); async function tvl(chain, timestamp, chainBlocks, { api }) { const addressMap = address[api.chain]; - const [simpleReservesData, bnftAssetList] = - await Promise.all([ - api.call({ - target: addressMap.UiPoolDataProvider, - params: [addressMap.LendPoolAddressProvider], - abi: abi.UiPoolDataProvider.getSimpleReservesData, - }), - api.call({ - target: addressMap.BNFTRegistry, - abi: abi.BNFTRegistry.getBNFTAssetList, - }), - ]); + const [simpleReservesData, bnftAssetList] = await Promise.all([ + api.call({ + target: addressMap.UiPoolDataProvider, + params: [addressMap.LendPoolAddressProvider], + abi: abi.UiPoolDataProvider.getSimpleReservesData, + }), + api.call({ + target: addressMap.BNFTRegistry, + abi: abi.BNFTRegistry.getBNFTAssetList, + }), + ]); const bnftProxyList = await api.multiCall({ calls: bnftAssetList, @@ -27,11 +26,34 @@ async function tvl(chain, timestamp, chainBlocks, { api }) { }); const toa = [ - ...bnftAssetList.map((i, idx) => [i, bnftProxyList[idx]]), - ...simpleReservesData.map((i) => [i.underlyingAsset, i.bTokenAddress]), + ...bnftAssetList.map((bnftAsset, idx) => { + const bnftProxy = bnftProxyList[idx]; + return [bnftAsset, bnftProxy]; + }), + ...simpleReservesData.map((reserve) => [ + reserve.underlyingAsset, + reserve.bTokenAddress, + ]), ]; - return sumTokens2({ api, tokensAndOwners: toa }); + const balances = await sumTokens2({ api, tokensAndOwners: toa }); + + // cause stNFT do not have price, it should use the underlying asset price + const stNFTMap = { + [addressMap.StBAYC.toLowerCase()]: addressMap.BAYC.toLowerCase(), + [addressMap.StMAYC.toLowerCase()]: addressMap.MAYC.toLowerCase(), + [addressMap.StBAKC.toLowerCase()]: addressMap.BAKC.toLowerCase(), + }; + + for (const asset in balances) { + const underlyingAsset = stNFTMap[asset]; + if (underlyingAsset) { + sdk.util.sumSingleBalance(balances, underlyingAsset, balances[asset]); + delete balances[asset]; + } + } + + return balances; } async function borrowed(chain, timestamp, chainBlocks, { api }) { From 836b8cdea74b6e335ecf9861034f35bb58a2ac1f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 6 Jun 2023 18:35:20 +0100 Subject: [PATCH 0664/1354] add usdt to rangers chain --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7f566e944b..5bbfa5fef6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -51,6 +51,9 @@ const fixBalancesTokens = { // [ADDRESSES.arbitrum_nova.USDT]: { coingeckoId: "tether", decimals: 6 }, // [ADDRESSES.arbitrum_nova.USDC]: { coingeckoId: "usd-coin", decimals: 6 }, // }, + rpg: { + '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 5d4b8b092777a6c2a35731bed64d36caad2a6bdd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 6 Jun 2023 22:21:45 +0200 Subject: [PATCH 0665/1354] fix jpegd treasury --- projects/helper/coreAssets.json | 1 + projects/treasury/jpegd.js | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 9433d9c775..045b716163 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -32,6 +32,7 @@ "CRV": "0xd533a949740bb3306d119cc777fa900ba034cd52", "FTM": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", "GNO": "0x6810e776880C02933D47DB1b9fc05908e5386b96", + "LUSD": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" }, "fantom": { diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index 68711630b1..e8b4b458d7 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -1,3 +1,4 @@ +const sdk = require('@defillama/sdk') const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); @@ -10,7 +11,7 @@ const pethVault = "0x548cAB89eBF34509Ae562BC8cE8D5Cdb4F08c3AD"; const lp = "0xdB06a76733528761Eda47d356647297bC35a98BD" const lp2 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" -module.exports = treasuryExports({ +const treasuryTvl = treasuryExports({ ethereum: { tokens: [ nullAddress, @@ -29,10 +30,25 @@ module.exports = treasuryExports({ "0x836A808d4828586A69364065A1e064609F5078c7", "0x9848482da3Ee3076165ce6497eDA906E66bB85C5", ADDRESSES.ethereum.vlCVX, + lp, + lp2, ], owners: [multisig, donationEvent, usdcVault, usdtVault, pethVault], - ownTokens: [jpegd, lp], - resolveLP: true, + ownTokens: [jpegd], resolveUniV3: true, }, }); + +const liquidityTvl = async (timestamp, ethBlock, chainBlocks, { api }) => { + const troveManager = '0xA39739EF8b0231DbFA0DcdA07d7e29faAbCf4bb2' + const stabilityPool = '0x66017d22b0f8556afdd19fc67041899eb65a21bb' + const troveData = await api.call({ abi: 'function Troves(address) view returns (uint256 debt, uint256 coll,uint256 stake ,uint8 status , uint128 arrayIndex )', target: troveManager, params: multisig }) + const stabilityData = await api.call({ abi: 'function deposits(address) view returns ( uint256 initialValue, address frontEndTag )', target: stabilityPool, params: multisig }) + api.add(ADDRESSES.ethereum.LUSD, troveData.debt * -1) + api.add(ADDRESSES.ethereum.LUSD, stabilityData.initialValue) + api.add(ADDRESSES.null, troveData.coll) + return api.getBalances() +} +treasuryTvl.ethereum.tvl = sdk.util.sumChainTvls([treasuryTvl.ethereum.tvl, liquidityTvl]) + +module.exports = treasuryTvl \ No newline at end of file From 33af010572e533d0e86012ebe8648b87b5f3c14f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 7 Jun 2023 03:38:49 +0100 Subject: [PATCH 0666/1354] add pulse to velocimeter-v2 --- projects/velocimeter-v2/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/velocimeter-v2/index.js b/projects/velocimeter-v2/index.js index 7fbcb7975f..b3b9d2a7cc 100644 --- a/projects/velocimeter-v2/index.js +++ b/projects/velocimeter-v2/index.js @@ -8,5 +8,12 @@ module.exports = { useDefaultCoreAssets: true, hasStablePools: true, }) + }, + pulse: { + tvl: getUniTVL({ + factory: '0x6B4449C74a9aF269A5f72B88B2B7B8604685D9B9', + useDefaultCoreAssets: true, + hasStablePools: true, + }) } } From 6a5e314881d811ee99f6d37e197ca1acb332f909 Mon Sep 17 00:00:00 2001 From: Chinmay Gopal Date: Wed, 7 Jun 2023 00:56:24 -0700 Subject: [PATCH 0667/1354] chore: add new ethereum GBPT token to contracts (#6490) * chore: add new ethereum GBPT token to contracts * chore: small fix * chore: remove deprecated addresses and add arbitrum * fix: add bridges usdc to contracts * chore: remove deprecated address * chore: remove another deprecated address * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dfx/contracts.json | 180 ------------------------------------ projects/dfx/index.js | 77 ++++++--------- 2 files changed, 30 insertions(+), 227 deletions(-) delete mode 100644 projects/dfx/contracts.json diff --git a/projects/dfx/contracts.json b/projects/dfx/contracts.json deleted file mode 100644 index 8b0ccb1ca0..0000000000 --- a/projects/dfx/contracts.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "usdc": { - "ethereum": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "polygon": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" - }, - "ethereum": [ - { - "address": "0xa6c0cbcaebd93ad3c6c94412ec06aaa37870216d", - "token": "0xcadc0acd4b445166f12d2c07eac6e2544fbe2eef" - }, - { - "address": "0x1a4ffe0dcbdb4d551cfca61a5626afd190731347", - "token": "0xdb25f211ab05b1c97d595516f45794528a807ad8" - }, - { - "address": "0x2bab29a12a9527a179da88f422cdaaa223a90bd5", - "token": "0x70e8de73ce538da2beed35d14187f6959a8eca96" - }, - { - "address": "0xdD39379AB7C93b9bAAE29E6eC03795d0bC99a889", - "token": "0xebf2096e01455108badcbaf86ce30b6e5a72aa52" - }, - { - "address": "0xE9669516e09f5710023566458F329cCE6437AaaC", - "token": "0xda446fad08277b4d2591536f204e018f32b6831c", - "currency": "NZDS" - }, - { - "address": "0xC574A613A3900e4314da13eB2287f13689A5b64D", - "token": "0x2c537e5624e4af88a7ae4060c022609376c8d0eb", - "currency": "TRYb" - }, - { - "address": "0x66310ec13f36CAf5532c32B4359760592Db835Ab", - "token": "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c", - "currency": "EUROC" - }, - { - "address": "0x57BC10876fEbdC57f0ABb8C82ffAE600eEcc03A2", - "token": "0xC08512927D12348F6620a698105e1BAac6EcD911", - "currency": "GYEN" - }, - { - "address": "0xF3d7AA346965656E7c65FB4135531e0C2270AF83", - "token": "0xcadc0acd4b445166f12d2c07eac6e2544fbe2eef" - }, - { - "address": "0x9a6c7ae10eb82a0d7dc3c296ecbc2e2bdc53e80b", - "token": "0x70e8de73ce538da2beed35d14187f6959a8eca96" - }, - { - "address": "0x46161158b1947d9149e066d6d31af1283b2d377c", - "token": "0xebf2096e01455108badcbaf86ce30b6e5a72aa52" - }, - { - "address": "0x764a5A29f982D3513e76fe07dF2034821fBdba72", - "token": "0xda446fad08277b4d2591536f204e018f32b6831c", - "currency": "NZDS" - }, - { - "address": "0xcF3c8f51DE189C8d5382713B716B133e485b99b7", - "token": "0x2c537e5624e4af88a7ae4060c022609376c8d0eb", - "currency": "TRYb" - }, - { - "address": "0x477658494c3541ba272a7120176d77674a0183ba", - "token": "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c", - "currency": "EUROC" - }, - { - "address": "0x63cb0f59b7e67c7d4cb96214ca456597d85c587d", - "token": "0xC08512927D12348F6620a698105e1BAac6EcD911", - "currency": "GYEN" - }, - { - "address": "0xDA9dcc7fd51F0D9Aa069a82647A5F3ba594edAED", - "token": "0xcadc0acd4b445166f12d2c07eac6e2544fbe2eef" - }, - { - "address": "0xACC5Dca0B684f444bC6b4be30B95Ca7D928A4B9c", - "token": "0x70e8de73ce538da2beed35d14187f6959a8eca96" - }, - { - "address": "0xb7dB2F8d25C51A26799bE6765720c3C6D84CD2f2", - "token": "0xebf2096e01455108badcbaf86ce30b6e5a72aa52" - }, - { - "address": "0xc147cee0F6BB0e56240868c9f53aE916D3b86073", - "token": "0xda446fad08277b4d2591536f204e018f32b6831c", - "currency": "NZDS" - }, - { - "address": "0x38F818fCd57F8A1782bBCC1C90CB0FD03e7f0bd1", - "token": "0x2c537e5624e4af88a7ae4060c022609376c8d0eb", - "currency": "TRYb" - }, - { - "address": "0x8cd86fbC94BeBFD910CaaE7aE4CE374886132c48", - "token": "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c", - "currency": "EUROC" - }, - { - "address": "0x9aFD65013770525E43a84e49c87B3015C2C32517", - "token": "0xC08512927D12348F6620a698105e1BAac6EcD911", - "currency": "GYEN" - } - ], - "polygon": [ - { - "address": "0x288Ab1b113C666Abb097BB2bA51B8f3759D7729e", - "token": "0x5d146d8b1dacb1ebba5cb005ae1059da8a1fbf57", - "currency": "CADC" - }, - { - "address": "0xB72d390E07F40D37D42dfCc43E954Ae7c738Ad44", - "token": "0xe111178a87a3bff0c8d18decba5798827539ae99", - "currency": "EURS" - }, - { - "address": "0x8e3e9cB46E593Ec0CaF4a1Dcd6DF3A79a87b1fd7", - "token": "0x769434dca303597c8fc4997bf3dab233e961eda2", - "currency": "XSGD" - }, - { - "address": "0xea75cd0b12a8b48f5bddad37ceb15f8cb3d2cc75", - "token": "0x4fb71290ac171e1d144f7221d882becac7196eb5", - "currency": "TRYb" - }, - { - "address": "0x931d6a6cc3f992beee80a1a14a6530d34104b000", - "token": "0xeafe31cd9e8e01c8f0073a2c974f728fb80e9dce", - "currency": "NZDs" - }, - { - "address": "0xbe9fa3E654A1bf8fe740E9d930D595f31Fce1aE2", - "token": "0x9de41aFF9f55219D5bf4359F167d1D0c772A396D", - "currency": "CADC" - }, - { - "address": "0x7e4a73278d6e578af34faaaba76ed29583ac0341", - "token": "0xe111178a87a3bff0c8d18decba5798827539ae99", - "currency": "EURS" - }, - { - "address": "0x8c6eb8c26f166f87b4f886ce07116a823805602c", - "token": "0xDC3326e71D45186F113a2F448984CA0e8D201995", - "currency": "XSGD" - }, - { - "address": "0x17f8ddcea03a8972559a8d32874e144c87baf5b6", - "token": "0x4fb71290ac171e1d144f7221d882becac7196eb5", - "currency": "TRYb" - }, - { - "address": "0xefac71536feBE220D0Bb5128AeBBD1e3df2a1e67", - "token": "0xeafe31cd9e8e01c8f0073a2c974f728fb80e9dce", - "currency": "NZDs" - }, - { - "address": "0x6691FA63aa1d7E422Dc5D19C9B04F25909fdE966", - "token": "0x9de41aFF9f55219D5bf4359F167d1D0c772A396D", - "currency": "CADC" - }, - { - "address": "0x2385D7aB31F5a470B1723675846cb074988531da", - "token": "0xe111178a87a3bff0c8d18decba5798827539ae99", - "currency": "EURS" - }, - { - "address": "0xBc408da6A7237682c8672eF7a66AFF09a9069b15", - "token": "0xDC3326e71D45186F113a2F448984CA0e8D201995", - "currency": "XSGD" - }, - { - "address": "0xAAb708fBd208Ac262821E229ded16234277b2B13", - "token": "0x4fb71290ac171e1d144f7221d882becac7196eb5", - "currency": "TRYb" - } - ] -} diff --git a/projects/dfx/index.js b/projects/dfx/index.js index 9e880ec191..1c7c14db36 100644 --- a/projects/dfx/index.js +++ b/projects/dfx/index.js @@ -1,51 +1,34 @@ -const sdk = require("@defillama/sdk"); -const { transformPolygonAddress } = require("../helper/portedTokens"); -const contracts = require('./contracts.json'); +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') -// node test.js projects/dfx/index.js -function tvl(chain) { - return async (timestamp, block, chainBlocks) => { - const transform = - chain == "polygon" ? await transformPolygonAddress() : (a) => a; - const balances = {}; - - const [tokenBalances, usdcBalances] = await Promise.all([ - sdk.api.abi.multiCall({ - calls: contracts[chain].map((c) => ({ - target: c.token, - params: [c.address], - })), - abi: "erc20:balanceOf", - block: chainBlocks[chain], - chain, - }), - - sdk.api.abi.multiCall({ - calls: contracts[chain].map((c) => ({ - target: contracts.usdc[chain], - params: [c.address], - })), - abi: "erc20:balanceOf", - block: chainBlocks[chain], - chain, - }), - ]); - - await Promise.all([ - sdk.util.sumMultiBalanceOf(balances, tokenBalances, true, transform), - sdk.util.sumMultiBalanceOf(balances, usdcBalances, true, transform), - ]); +module.exports = { + hallmarks: [[1667955600, "Hack"]], +}; - return balances; - }; +const config = { + arbitrum: { factory: "0x9544995B5312B26acDf09e66E699c34310b7c856", fromBlock: 65832059 }, + ethereum: { factory: "0x9adeac3b6d29d9d5e543b8579e803a7cce72c9cd", fromBlock: 16607851 }, + polygon: { factory: "0x3591040cE5dF8828b3Ed4Ec39D030F832d43fD53", fromBlock: 39183403 }, } -module.exports = { - ethereum: { - tvl: tvl("ethereum"), - }, - polygon: { - tvl: tvl("polygon"), - }, - hallmarks: [[1667955600, "Hack"]] -}; +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0xe7a19de9e8788cc07c144818f2945144acd6234f790b541aa1010371c8b2a73b'], + eventAbi: 'event NewCurve (address indexed caller, bytes32 indexed id, address indexed curve)', + onlyArgs: true, + fromBlock, + }) + let pools = logs.map(log => log.curve) + if (chain === 'arbitrum') pools = pools.slice(1) + const calls = pools.map(pool => [{ target: pool, params: 0 }, { target: pool, params: 1 }]).flat() + const tokens = await api.multiCall({ abi: 'function numeraires(uint256) view returns (address)', calls }) + const tokensAndOwners = tokens.map((token, i) => [token, pools[Math.floor(i / 2)]]) + return sumTokens2({ api, tokensAndOwners, }) + } + } +}) \ No newline at end of file From bbac507b5ac3ab98274357600fcc74c6c092c464 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 7 Jun 2023 12:08:13 +0100 Subject: [PATCH 0668/1354] wip binance new wallets + algo not working --- projects/binance/config.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/projects/binance/config.js b/projects/binance/config.js index a3258d737e..7442a09bb9 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -311,6 +311,33 @@ const assetList = [ ["DOT", "DOT", "1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF"], ["DOT", "DOT", "1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7"], ["DOT", "DOT", "16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD"], + //new chains + //["USDC", "ALGO", "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI"], + //["ALGO", "ALGO", "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI"], + //["USDC", "ALGO", "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U"], + //["ALGO", "ALGO", "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U"], + ["APT", "APT", "0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e"], + ["APT", "APT", "0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70"], + ["APT", "APT", "0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a"], + ["APT", "APT", "0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f"], + ["APT", "APT", "0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00"], + //new tokens UNI + ["UNI", "BEP2", "bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg"], + ["UNI", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], + ["UNI", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], + ["UNI", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], + ["UNI", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], + ["UNI", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], + ["UNI", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], + ["UNI", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], + ["UNI", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], + ["UNI", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], + //new token ARB + ["ARB", "ARB", "0xf977814e90da44bfa03b6295a0616a897441acec"], + ["ARB", "ARB", "0xb38e8c17e38363af6ebdcb3dae12e0243582891d"], + ["ARB", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], + ["ARB", "ARB", "0xf92402bb795fd7cd08fb83839689db79099c8c9c"], + ] function getAddresses(chain) { @@ -367,4 +394,10 @@ module.exports = { polkadot: { owners: getOwners('DOT') }, + algorand: { + owners: getOwners('ALGO') + }, + aptos: { + owners: getOwners('APT') + }, } \ No newline at end of file From dca14c235bd112f12d279899e8370298191127c7 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 7 Jun 2023 13:28:24 +0100 Subject: [PATCH 0669/1354] add treasury hegic --- projects/treasury/hegic.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/projects/treasury/hegic.js b/projects/treasury/hegic.js index 95de35b1ab..6f8d6337f9 100644 --- a/projects/treasury/hegic.js +++ b/projects/treasury/hegic.js @@ -1,12 +1,25 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') -const treasury = "0xf15968a096fc8f47650001585d23bee819b5affb"; +const treasuryARB = "0xf15968a096fc8f47650001585d23bee819b5affb"; +const treasuryETH = "0xd884aca1897ac45515cee6d5fd48f341b4023ace" +const hegic = "0x584bC13c7D411c00c01A62e8019472dE68768430" module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, ], - owners: [treasury,], + owners: [treasuryARB], + }, + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDC + ], + owners: [treasuryETH], + ownTokens: [hegic], }, }) \ No newline at end of file From 81fbb0f57ac39b6dcb703199bed1606b810accdc Mon Sep 17 00:00:00 2001 From: g1nt0ki Date: Wed, 7 Jun 2023 14:53:52 +0200 Subject: [PATCH 0670/1354] binance fix algorand --- projects/binance/config.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index 7442a09bb9..c93aff449f 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -312,10 +312,10 @@ const assetList = [ ["DOT", "DOT", "1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7"], ["DOT", "DOT", "16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD"], //new chains - //["USDC", "ALGO", "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI"], - //["ALGO", "ALGO", "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI"], - //["USDC", "ALGO", "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U"], - //["ALGO", "ALGO", "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U"], + ["USDC", "ALGO", "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI"], + ["ALGO", "ALGO", "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI"], + ["USDC", "ALGO", "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U"], + ["ALGO", "ALGO", "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U"], ["APT", "APT", "0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e"], ["APT", "APT", "0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70"], ["APT", "APT", "0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a"], @@ -344,7 +344,7 @@ function getAddresses(chain) { return assetList.filter(i => i[1] === chain).map(i => i[2]) } function getOwners(chain) { - const isCaseSensitive = ['BTC', 'TRX', 'SOL', 'XRP', 'LTC', 'DOT'].includes(chain) + const isCaseSensitive = ['BTC', 'TRX', 'SOL', 'XRP', 'LTC', 'DOT', 'ALGO'].includes(chain) return getUniqueAddresses(assetList.filter(i => i[1] === chain).map(i => i[2]), isCaseSensitive) } From 4326186b110b764bc2849780672ed3ecefba21f2 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 7 Jun 2023 14:59:04 +0100 Subject: [PATCH 0671/1354] binance final --- projects/binance/config.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index c93aff449f..03cca46da7 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -7,10 +7,11 @@ const assetList = [ ["BTC", "BTC", "34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo"], //["BTC", "BTC", "3LYJfcfHPXYJreMsASk2jkn69LWEYKzexb"], ["BTC", "BTC", "3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6"], + ["BTC", "BTC", "3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH"], ["BTC", "BTC", "3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ"], ["BTC", "BTC", "3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA"], ["BTC", "BTC", "395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ"], - ["BTC", "BTC", "3FrmCRcGKiTATfreBDM9F17yAUDoDsnWeA"], + //["BTC", "BTC", "3FrmCRcGKiTATfreBDM9F17yAUDoDsnWeA"], ["BTC", "BTC", "3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B"], ["BTC", "BTC", "3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a"], ["BTC", "BTC", "3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry"], @@ -276,7 +277,7 @@ const assetList = [ ["ENJ", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], ["LTC", "LTC", "MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67"], ["LTC", "LTC", "MLkNzCps6cXou2DELVfxDuRC4uZGwr397o"], - ["LTC", "LTC", "MRwsBPhSteTreKQrNE6BXU1U33PMsn8jCS"], + //["LTC", "LTC", "MRwsBPhSteTreKQrNE6BXU1U33PMsn8jCS"], ["LTC", "LTC", "MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z"], ["LTC", "LTC", "MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N"], ["LTC", "LTC", "MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS"], @@ -337,7 +338,17 @@ const assetList = [ ["ARB", "ARB", "0xb38e8c17e38363af6ebdcb3dae12e0243582891d"], ["ARB", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], ["ARB", "ARB", "0xf92402bb795fd7cd08fb83839689db79099c8c9c"], - + ["USDC", "ETH", "0xf8d3e5fe8bb885325d98a751a30a1573e887a953"], + ["USDC", "ETH", "0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4"], + ["USDC", "ETH", "0x95e63f78bd2fd5ea8a0d58182f3d998558881fda"], + ["USDC", "ETH", "0x39e2d89f4b4708077a48d75c5cf2ab059a4b3e48"], + ["USDC", "ETH", "0x558a87a7c8b79ffb66a3d10a4a2de8c73a46707d"], + ["USDC", "ETH", "0xf033bce292bcaaf998ca13755104a4b23c04af5c"], + ["LTC", "LTC", "LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN"], + ["LTC", "LTC", "LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq"], + ["LTC", "LTC", "MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k"], + ["USDC", "TRX", "TDjPeMNaRxoNMwENrdtNYmZt1YAfVVjp59"], + ["USDC", "TRX", "TL6VgVKo6natQb6hW5Hy2jcyX5EHgmwXLE"], ] function getAddresses(chain) { From 665f674f3744e17d42ea494297829678d4ecba93 Mon Sep 17 00:00:00 2001 From: g1nt0ki Date: Wed, 7 Jun 2023 16:22:50 +0200 Subject: [PATCH 0672/1354] code refactor --- projects/predy-v3/api.js | 7 ------- projects/predy-v3/index.js | 14 ++------------ projects/predy-v320/api.js | 7 ------- projects/predy-v320/index.js | 18 ++---------------- projects/{predy.js => predy/index.js} | 4 ++-- 5 files changed, 6 insertions(+), 44 deletions(-) delete mode 100644 projects/predy-v3/api.js delete mode 100644 projects/predy-v320/api.js rename projects/{predy.js => predy/index.js} (82%) diff --git a/projects/predy-v3/api.js b/projects/predy-v3/api.js deleted file mode 100644 index a62d1e2ec0..0000000000 --- a/projects/predy-v3/api.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("predy-v3", ['predy']), -} diff --git a/projects/predy-v3/index.js b/projects/predy-v3/index.js index e81cf82617..9249b49e0f 100644 --- a/projects/predy-v3/index.js +++ b/projects/predy-v3/index.js @@ -1,7 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); const { sumTokensExport } = require('../helper/unwrapLPs') -const BigNumber = require("bignumber.js"); const v3Address = '0x4006A8840F8640A7D8F46D2c3155a58c76eCD56e'; @@ -19,15 +17,11 @@ const abi = { async function borrowed(_time, _ethBlock, chainBlocks, { api }) { - let balances = {}; - // V3 const v3TokenState = await api.call({ abi: abi.v3.getTokenState, target: v3Address, }) + api.add(WETH_CONTRACT, v3TokenState[0].totalNormalBorrowed) + api.add(USDC_CONTRACT, v3TokenState[1].totalNormalBorrowed) - await sdk.util.sumSingleBalance(balances, WETH_CONTRACT, v3TokenState[0]['totalNormalBorrowed'], api.chain); - await sdk.util.sumSingleBalance(balances, USDC_CONTRACT, v3TokenState[1]['totalNormalBorrowed'], api.chain); - - return balances; } @@ -37,8 +31,4 @@ module.exports = { tvl: sumTokensExport({ owners: [v3Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), borrowed }, - hallmarks: [ - [1671092333, "Launch Predy V3"], - [1678734774, "Launch Predy V3.2"] - ], }; diff --git a/projects/predy-v320/api.js b/projects/predy-v320/api.js deleted file mode 100644 index 501c8b6d11..0000000000 --- a/projects/predy-v320/api.js +++ /dev/null @@ -1,7 +0,0 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - timetravel: false, - misrepresentedTokens: true, - ...getExports("predy-v3.2", ['predy']), -} diff --git a/projects/predy-v320/index.js b/projects/predy-v320/index.js index 094a98f824..9ac870dd68 100644 --- a/projects/predy-v320/index.js +++ b/projects/predy-v320/index.js @@ -1,7 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); const { sumTokensExport } = require('../helper/unwrapLPs') -const BigNumber = require("bignumber.js"); const v320Address = '0x68a154fB3e8ff6e4DA10ECd54DEF25D9149DDBDE'; @@ -19,19 +17,11 @@ const abi = { async function borrowed(_time, _ethBlock, chainBlocks, { api }) { - let balances = {}; - // V3.2 const v320USDCState = await api.call({ abi: abi.v320.getAsset, target: v320Address, params: 1}) const v320ETHState = await api.call({ abi: abi.v320.getAsset, target: v320Address, params: 2 }) - - const v320USDCBorrowed = (new BigNumber(v320USDCState[4][3])).toNumber() - const v320ETHBorrowed = (new BigNumber(v320ETHState[4][3])).toNumber() - - await sdk.util.sumSingleBalance(balances, USDC_CONTRACT, v320USDCBorrowed, api.chain); - await sdk.util.sumSingleBalance(balances, WETH_CONTRACT, v320ETHBorrowed, api.chain); - - return balances; + api.add(WETH_CONTRACT, v320ETHState[4][3]) + api.add(USDC_CONTRACT, v320USDCState[4][3]) } @@ -41,8 +31,4 @@ module.exports = { tvl: sumTokensExport({ owners: [v320Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), borrowed }, - hallmarks: [ - [1671092333, "Launch Predy V3"], - [1678734774, "Launch Predy V3.2"] - ], }; diff --git a/projects/predy.js b/projects/predy/index.js similarity index 82% rename from projects/predy.js rename to projects/predy/index.js index 03c4969e0c..101dc8cf78 100644 --- a/projects/predy.js +++ b/projects/predy/index.js @@ -1,5 +1,5 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensExport } = require('./helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require('../helper/unwrapLPs') const v2Address = '0xc7ec02AEeCdC9087bf848c4C4f790Ed74A93F2AF'; const v202Address = '0xAdBAeE9665C101413EbFF07e20520bdB67C71AB6'; From b2c22e025d53e709d9cb991a8bb34207364b15cb Mon Sep 17 00:00:00 2001 From: define Date: Wed, 7 Jun 2023 16:28:26 +0100 Subject: [PATCH 0673/1354] add mexc cex + add new tokens to cex helper --- projects/helper/cex.js | 13 +++++++++++ projects/mexc-cex/index.js | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 projects/mexc-cex/index.js diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 986efb3f3b..7a4a5cd8e2 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -72,11 +72,22 @@ const defaultTokens = { '0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206', // NEXO ,(Nexo cex token) '0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44', //kp3r '0xcf0c122c6b73ff809c693db761e7baebe62b6a2e', //FLOKI ETH CHAIN + '0x11eef04c884e24d9b7b4760e7476d06ddf797f36', //MX TOKEN, mecx exchange token + '0xa4be4cDC552891a6702E1aE9645EF445179a4463', //FON + '0x356A5160F2B34BC8d88FB084745465eBBbed0174', //invi + '0x9813037ee2218799597d83D4a5B6F3b6778218d9', //bone + '0xf3b9569F82B18aEf890De263B84189bd33EBe452',//caw + '0x04abeda201850ac0124161f037efd70c74ddc74c',//nest + '0x9d71CE49ab8A0E6D2a1e7BFB89374C9392FD6804',//nvir + '0x5b649C07E7Ba0a1C529DEAabEd0b47699919B4a2',//sgt + '0x4385328cc4d643ca98dfea734360c0f596c83449', + ], tron: [ nullAddress, ADDRESSES.tron.USDT, // USDT ADDRESSES.tron.USDC, // USDC + 'TFptbWaARrWTX5Yvy3gNG5Lm8BmhPx82Bt' //wbt ], polygon: [ nullAddress, @@ -87,6 +98,7 @@ const defaultTokens = { ADDRESSES.polygon.WBTC, //WBTC ADDRESSES.polygon.USDC, //USDC ADDRESSES.polygon.DAI, //DAI + '0x2AB0e9e4eE70FFf1fB9D67031E44F6410170d00e', //xen ], algorand: [], solana: [ @@ -126,6 +138,7 @@ const defaultTokens = { ADDRESSES.arbitrum.USDC, // USDC ADDRESSES.arbitrum.USDT, // USDT ADDRESSES.optimism.DAI, // DAI + '0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b' //aidoge ], avax: [ diff --git a/projects/mexc-cex/index.js b/projects/mexc-cex/index.js new file mode 100644 index 0000000000..9c9323c29d --- /dev/null +++ b/projects/mexc-cex/index.js @@ -0,0 +1,44 @@ +const { cexExports } = require('../helper/cex') + +const config = { + bitcoin: { + owners: [ + "13uZyaPbt4rTwYQ8xWFySVUzWH3pk2P5c7" + ], + }, + ethereum:{ + owners: [ + "0x3cc936b795a188f0e246cbb2d74c5bd190aecf18", + "0x0162cd2ba40e23378bf0fd41f919e1be075f025f", + "0x75e89d5979e4f6fba9f97c104c2f0afb3f1dcb88", + ] + }, + bsc: { + owners:[ + "0x4982085c9e2f89f2ecb8131eca71afad896e89cb", + "0x2e8f79ad740de90dc5f5a9f0d8d9661a60725e64" + ] + }, + polygon: { + owners:[ + "0x51e3d44172868acc60d68ca99591ce4230bc75e0", + ] + }, + tron: { + owners:[ + "TEPSrSYPDSQ7yXpMFPq91Fb1QEWpMkRGfn", + ] + }, + arbitrum: { + owners:[ + "0x9b64203878f24eb0cdf55c8c6fa7d08ba0cf77e5", + ] + }, + optimism: { + owners:[ + "0xdf90c9b995a3b10a5b8570a47101e6c6a29eb945", + ] + } +} + +module.exports = cexExports(config) \ No newline at end of file From 0589a2341e50181f33b612813bb4d28e1cd624c7 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 7 Jun 2023 16:46:50 +0100 Subject: [PATCH 0674/1354] remove borrowed from predy --- projects/predy-v3/index.js | 1 - projects/predy-v320/index.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/predy-v3/index.js b/projects/predy-v3/index.js index 9249b49e0f..336d68c6bf 100644 --- a/projects/predy-v3/index.js +++ b/projects/predy-v3/index.js @@ -29,6 +29,5 @@ module.exports = { methodology: "USDC and WETH locked on predy contracts", arbitrum: { tvl: sumTokensExport({ owners: [v3Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), - borrowed }, }; diff --git a/projects/predy-v320/index.js b/projects/predy-v320/index.js index 9ac870dd68..05a6780d27 100644 --- a/projects/predy-v320/index.js +++ b/projects/predy-v320/index.js @@ -29,6 +29,6 @@ module.exports = { methodology: "USDC and WETH locked on predy contracts", arbitrum: { tvl: sumTokensExport({ owners: [v320Address], tokens: [USDC_CONTRACT, WETH_CONTRACT,] }), - borrowed + }, }; From 166273dd6afa886983aab865307078200dafca76 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 7 Jun 2023 17:52:26 +0200 Subject: [PATCH 0675/1354] cryptex: fix staking --- projects/cryptex-finance/index.js | 38 +++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/projects/cryptex-finance/index.js b/projects/cryptex-finance/index.js index db1040300f..ee8c6bf88c 100755 --- a/projects/cryptex-finance/index.js +++ b/projects/cryptex-finance/index.js @@ -1,7 +1,8 @@ +const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const { sumTokensSharedOwners} = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); +const { sumTokensSharedOwners, sumTokens2 } = require("../helper/unwrapLPs"); +const { staking } = require('../helper/staking') const ctxToken = "0x321c2fe4446c7c963dc41dd58879af648838f98d"; const factory = "0x70236b36f86AB4bd557Fe9934E1246537B472918"; @@ -16,13 +17,13 @@ const ethPool2s = [ "0x2A93167Ed63A31F35CA4788e2EB9fBd9fA6089D0", // CTX-WETH ] const ethVaults = [ - "0x717170b66654292dfbd89c39f5ae6753d2ac1381", // WETH VAULT - "0x443366a7a5821619D8d57405511E4fadD9964771", // DAI VAULT - // Hardmode Vaults - "0xc2Ba6B8E0EE3cf48B045D966F1dCda767df74833", // WETH VAULT - "0xA5b3Bb6e1f206624B3B8CE0c6A0f7614fd35Fa03", // DAI VAULT - "0xa8CcA36A624215a39D5af6854ac24868559424d3", // USDC VAULT - "0x2364536F4891Ed560A6728f4B36871de8176eE5c", // WBTC VAULT + "0x717170b66654292dfbd89c39f5ae6753d2ac1381", // WETH VAULT + "0x443366a7a5821619D8d57405511E4fadD9964771", // DAI VAULT + // Hardmode Vaults + "0xc2Ba6B8E0EE3cf48B045D966F1dCda767df74833", // WETH VAULT + "0xA5b3Bb6e1f206624B3B8CE0c6A0f7614fd35Fa03", // DAI VAULT + "0xa8CcA36A624215a39D5af6854ac24868559424d3", // USDC VAULT + "0x2364536F4891Ed560A6728f4B36871de8176eE5c", // WBTC VAULT ] const ethCollaterals = [ @@ -83,10 +84,27 @@ module.exports = { ethereum: { tvl: ethTvl, pool2: staking(ethStakingContracts, ethPool2s), - staking: staking(factory, ctxToken), + staking: staking_, treasury }, optimism: { tvl: optTvl } }; + + + + +async function staking_(_, _b, _cb, { api, }) { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x0976a62688d14faa8e35e63a7ada50f147ba1a0357f99182a596f9afea2502f4'], + eventAbi: 'event DelegatorCreated (address indexed delegator, address indexed delegatee)', + onlyArgs: true, + fromBlock: 13360296, + }) + const owners = [factory,] + logs.forEach(log => owners.push(log.delegator)) + return sumTokens2({ api, owners, tokens: [ctxToken] }) +} \ No newline at end of file From 030f1aaacfef287510c2c204f7b419655c26bdb2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 7 Jun 2023 21:30:14 +0530 Subject: [PATCH 0676/1354] Minevra (#6502) * Create index.js * code refactor --------- Co-authored-by: MyNameIsKellKell <86309030+chimpydev@users.noreply.github.com> --- projects/minerva/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/minerva/index.js diff --git a/projects/minerva/index.js b/projects/minerva/index.js new file mode 100644 index 0000000000..1dcc93e636 --- /dev/null +++ b/projects/minerva/index.js @@ -0,0 +1,9 @@ +const {staking} = require('../helper/staking') +const { gmxExports } = require('../helper/gmx') + +module.exports = { + optimism: { + staking: staking('0x21563764f5641ffcb89f25560644e39947b21be0', '0xE4d8701C69b3B94A620ff048e4226C895b67b2c0'), + tvl: gmxExports({ vault: '0x7EF6f8abAc00689e057C9ec14E34aC232255a2fb', }) + } +} \ No newline at end of file From a7de6551a512dba2b2b0aa7c5e1c0d8ce85a4264 Mon Sep 17 00:00:00 2001 From: Rushabh Parmar <43805620+RushabhParmar12@users.noreply.github.com> Date: Wed, 7 Jun 2023 21:37:17 +0530 Subject: [PATCH 0677/1354] Added FathomDex (#6495) * Added FathomDex * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fathom-dex/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/fathom-dex/index.js diff --git a/projects/fathom-dex/index.js b/projects/fathom-dex/index.js new file mode 100644 index 0000000000..921bfb37c6 --- /dev/null +++ b/projects/fathom-dex/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + xdc: { + tvl: getUniTVL({ factory: "0x9fAb572F75008A42c6aF80b36Ab20C76a38ABc4B", useDefaultCoreAssets: true, }), + }, +}; \ No newline at end of file From 7cd1d0c0707ff3d339b95652d141fe96303f8b7f Mon Sep 17 00:00:00 2001 From: dev0kokoa <86997922+dev0kokoa@users.noreply.github.com> Date: Thu, 8 Jun 2023 01:08:20 +0900 Subject: [PATCH 0678/1354] feat: add kokonutswap for polygon zkevm (#6492) * feat: add kokonutswap for polygon zkevm * fix: eslint --- projects/kokonut-swap/abi.json | 1 + projects/kokonut-swap/index.js | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/projects/kokonut-swap/abi.json b/projects/kokonut-swap/abi.json index 8b72fe568a..fbcc0eb5af 100644 --- a/projects/kokonut-swap/abi.json +++ b/projects/kokonut-swap/abi.json @@ -1,5 +1,6 @@ { "getPoolPriceInfo": "function getPoolPriceInfo(address swap) view returns (address[] tokens, uint256[] balances, uint256[] prices)", "getStakedEyePriceInfo": "function getStakedEyePriceInfo() view returns (uint256 balance, uint256 price)", + "getRegisteredPools": "function getRegisteredPools() view returns (tuple(address addr,string name,string symbol,address lpTokenAddress,uint256 lpTokenVirtualPrice,uint256 lpTokenTotalSupply,uint256 adminFee,tuple(address addr,string name,string symbol,uint8 decimals,uint256 balance,uint256 nativeBalance,uint256 allowance,bool isLpToken)[] liquidity,uint256 xcpProfit,uint256 priceScale,uint256 priceOracle)[])", "getPoolList": "address[]:getPoolList" } \ No newline at end of file diff --git a/projects/kokonut-swap/index.js b/projects/kokonut-swap/index.js index d4d37c4d1b..bd3d46276b 100644 --- a/projects/kokonut-swap/index.js +++ b/projects/kokonut-swap/index.js @@ -1,12 +1,13 @@ const abi = require("./abi.json"); const sdk = require("@defillama/sdk"); const { requery } = require('../helper/requery.js'); +const { sumTokens2 } = require("../helper/unwrapLPs"); const registry_addr = "0xBd21dD5BCFE28475D26154935894d4F515A7b1C0"; const helper_addr = "0x1A09643f4D70B9Aa9da5737568C1935ED37423aa"; const chain = 'klaytn'; -async function tvl(timestamp, _, { klaytn: block }) { +async function klaytn_tvl(timestamp, _, { klaytn: block }) { const balances = {}; const poolList = (await sdk.api.abi.call({ @@ -63,6 +64,19 @@ async function tvl(timestamp, _, { klaytn: block }) { return balances; } +async function polygon_zkevm_tvl(_, _b, _cb, { api }) { + const ownerTokens = []; + const poolList = (await sdk.api.abi.call({ + target: "0x677bBBAd41D784a4731d902c613f8af43AAb4feb", + abi: abi.getRegisteredPools, + chain: 'polygon_zkevm' + })).output; + for (const pool of poolList) { + ownerTokens.push([pool.liquidity.map(t => t.addr), pool.addr]); + } + return sumTokens2({ api, ownerTokens }); +} + async function staking(timestamp, _, { klaytn: block }) { const info = (await sdk.api.abi.call({ target: helper_addr, @@ -78,7 +92,10 @@ module.exports = { misrepresentedTokens: true, klaytn: { staking, - tvl + tvl: klaytn_tvl + }, + polygon_zkevm: { + tvl: polygon_zkevm_tvl }, methodology: "tvl is calculated using the total value of protocol's liquidity pool. Staked tokens include staked EYE values. Pool2 includes staked lp tokens eligible for KOKOS emissions" From a304fa617ec91b4bfc9470d9e41a278e4feb9c93 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 7 Jun 2023 17:12:17 +0100 Subject: [PATCH 0679/1354] add cbeth vault --- projects/qidao/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/qidao/index.js b/projects/qidao/index.js index 92cd4e443d..e1d8e0f58e 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -107,7 +107,8 @@ const config = { "0x8C45969aD19D297c9B85763e90D0344C6E2ac9d1", "0xcc61Ee649A95F2E2f0830838681f839BDb7CB823", "0x82E90EB7034C1DF646bD06aFb9E67281AAb5ed28", - "0xCA3EB45FB186Ed4e75B9B22A514fF1d4abAdD123" + "0xCA3EB45FB186Ed4e75B9B22A514fF1d4abAdD123", + "0x4ce4C542D96Ce1872fEA4fa3fbB2E7aE31862Bad" ] }, bsc: { From 464385f0360a26970474eda7e2470f60b87fbfb3 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Wed, 7 Jun 2023 18:13:52 +0100 Subject: [PATCH 0680/1354] penpie --- projects/penpie/config.js | 16 +++++++++++++ projects/penpie/index.js | 48 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 projects/penpie/config.js create mode 100644 projects/penpie/index.js diff --git a/projects/penpie/config.js b/projects/penpie/config.js new file mode 100644 index 0000000000..36b200559d --- /dev/null +++ b/projects/penpie/config.js @@ -0,0 +1,16 @@ +module.exports = { + ethereum: { + masterPenpie: "0x16296859C15289731521F199F0a5f762dF6347d0", + vePENDLE: "0x4f30A9D41B80ecC5B94306AB4364951AE3170210", + mPENDLE: "0x83e817E1574e2201a005EC0f7e700ED5606F555E", + PENDLE: "0x808507121b80c02388fad14726482e061b8da827", + pendleStaking: "0x6E799758CEE75DAe3d84e09D40dc416eCf713652", + }, + arbitrum: { + masterPenpie: "0x0776C06907CE6Ff3d9Dbf84bA9B3422d7225942D", + vePENDLE: "0x3209E9412cca80B18338f2a56ADA59c484c39644", + mPENDLE: "0xB688BA096b7Bb75d7841e47163Cd12D18B36A5bF", + PENDLE: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", + pendleStaking: "0x6DB96BBEB081d2a85E0954C252f2c1dC108b3f81", + }, +}; diff --git a/projects/penpie/index.js b/projects/penpie/index.js new file mode 100644 index 0000000000..4162298d21 --- /dev/null +++ b/projects/penpie/index.js @@ -0,0 +1,48 @@ +const sdk = require("@defillama/sdk"); +const { staking } = require("../helper/staking"); +const MasterMagpieAbi = require("../magpiexyz/abis/masterMagpie.json"); +const config = require("./config"); + +async function tvl(timestamp, block, chainBlocks, { api }) { + const { masterPenpie, pendleStaking, vePENDLE, PENDLE } = config[api.chain]; + + const poolTokens = await api.fetchList({ + lengthAbi: MasterMagpieAbi.poolLength, + itemAbi: MasterMagpieAbi.registeredToken, + target: masterPenpie, + }); + + const decimals = await api.multiCall({ + abi: "erc20:decimals", + calls: poolTokens, + }); + + const balances = {}; + poolTokens.push(vePENDLE); + decimals.push("18"); + + const bals = await api.multiCall({ + abi: "erc20:balanceOf", + calls: poolTokens.map((i) => ({ target: i, params: pendleStaking })), + }); + + bals.forEach((v, i) => { + v /= 10 ** (18 - decimals[i]); + sdk.util.sumSingleBalance( + balances, + poolTokens[i] == vePENDLE ? PENDLE : poolTokens[i], + v, + api.chain + ); + }); + + return balances; +} + +Object.keys(config).forEach((chain) => { + const { masterPenpie, mPENDLE } = config[chain]; + module.exports[chain] = { + tvl: tvl, + staking: staking(masterPenpie, mPENDLE), + }; +}); From 86b75da2a2c0e81f4a9f4fb572366f2a82a43fa4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 02:10:19 +0530 Subject: [PATCH 0681/1354] add magicfox-vault (#6493) * add magicfox-vault * add bluechip voters --- projects/magicfox-vault/index.js | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 projects/magicfox-vault/index.js diff --git a/projects/magicfox-vault/index.js b/projects/magicfox-vault/index.js new file mode 100644 index 0000000000..b1e46316ff --- /dev/null +++ b/projects/magicfox-vault/index.js @@ -0,0 +1,45 @@ +const { unwrapLPsAuto } = require('../helper/unwrapLPs') + +const config = { + bsc: { voters: ['0x3Bb920C4875411C40981f6eb6959d4e169877A66', '0xaE0439eC64985D4165d12dDE7F514D092B4C0E23'] }, + arbitrum: { voters: ['0x01A07719596713bE5aB1C3AeEA76e3f5fde0885d', '0xF995f72445B14ae8D56523C9A0dE3F03334BFE2C'] }, + polygon: { voters: ['0x3F316559EB4f493C75638425106144261e20F3a2', '0xf999009fF931749a0930B8db02C6Cd888c7DC5ED'] }, +} + +const totalAmountAbi = "function getTotalAmounts() view returns (uint256 total0, uint256 total1)" +const guageAbiBsc = "function gaugeListExtended() view returns (address[], address[], uint16[])" +const guageAbi = "function gaugeListExtended() view returns (address[], address[])" + +Object.keys(config).forEach(chain => { + const { voters } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const res = await api.multiCall({ abi: chain === 'bsc' ? guageAbiBsc : guageAbi, calls: voters }) + let gauges = res.flatMap(i => i[0]) + gauges = [...new Set(gauges.map(i => i.toLowerCase()))] + const tokens = await api.multiCall({ abi: 'address:TOKEN', calls: gauges }) + const bals = (await api.multiCall({ abi: 'uint256:balance', calls: gauges, permitFailure: true })).map(i => i ?? 0) + const isHypervisor = await api.multiCall({ abi: totalAmountAbi, calls: tokens, permitFailure: true }) + const items = gauges.map((gauge, i) => ({ + gauge, + token: tokens[i], + balance: bals[i], + isHypervisor: !!isHypervisor[i] + })).filter(i => i.balance > 0) + const hypervisorItems = items.filter(i => i.isHypervisor) + const lpItems = items.filter(i => !i.isHypervisor) + lpItems.forEach(i => api.add(i.token, i.balance)) + const hypTokens = hypervisorItems.map(i => i.token) + const hypToken0s = await api.multiCall({ abi: 'address:token0', calls: hypTokens }) + const hypToken1s = await api.multiCall({ abi: 'address:token1', calls: hypTokens }) + const hypTotalSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: hypTokens }) + const hypTokenBals = await api.multiCall({ abi: totalAmountAbi, calls: hypTokens }) + hypTokens.forEach((_, i) => { + const ratio = hypervisorItems[i].balance / hypTotalSupplies[i] + api.add(hypToken0s[i], hypTokenBals[i][0] * ratio) + api.add(hypToken1s[i], hypTokenBals[i][1] * ratio) + }) + return unwrapLPsAuto({ api,}) + } + } +}) \ No newline at end of file From 6e143965811be5d28a2203a69e87e76c54c9aafa Mon Sep 17 00:00:00 2001 From: stacey-zklend <97830654+stacey-zklend@users.noreply.github.com> Date: Thu, 8 Jun 2023 06:33:25 +0900 Subject: [PATCH 0682/1354] feat: add zkLend project (#6420) * feat: add zkLend project * feat: add borrowed amount of assets * feat: replace data source with contract call --- projects/zklend/abi.js | 25 +++++++++++++++++++++++++ projects/zklend/index.js | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 projects/zklend/abi.js create mode 100644 projects/zklend/index.js diff --git a/projects/zklend/abi.js b/projects/zklend/abi.js new file mode 100644 index 0000000000..9a3879ef62 --- /dev/null +++ b/projects/zklend/abi.js @@ -0,0 +1,25 @@ +const market = [ + { + "name": "get_total_debt_for_token", + "type": "function", + "inputs": [ + { + "name": "token", + "type": "felt" + } + ], + "outputs": [ + { + "name": "debt", + "type": "felt" + } + ], + "stateMutability": "view" + }, +] +const marketAbi = {} +market.forEach(i => marketAbi[i.name] = i) + +module.exports = { + marketAbi +} \ No newline at end of file diff --git a/projects/zklend/index.js b/projects/zklend/index.js new file mode 100644 index 0000000000..12b7f8e354 --- /dev/null +++ b/projects/zklend/index.js @@ -0,0 +1,37 @@ +const { BigNumber } = require("bignumber.js"); +const { multiCall, sumTokens } = require('../helper/chain/starknet') +const { marketAbi } = require('./abi'); + +const valueToBigNumber = (amount) => { + if (amount instanceof BigNumber) { + return amount; + } + return new BigNumber(amount); +} +const market = '0x4c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05' + +const assets = [ + '0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac', + '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', + '0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8', + '0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3', + '0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8' +] + +async function tvl(_, _1, _2, { api }) { + return sumTokens({ api, owner: market, tokens: assets }) +} + +async function borrowed(_, _1, _2, { api }) { + let data = await multiCall({ calls: assets, target: market, abi: marketAbi.get_total_debt_for_token }); + data = data.map(i => valueToBigNumber(i).toNumber()) + api.addTokens(assets, data) +} + +module.exports = { + methodology: 'Value of user supplied asset on zkLend is considered as TVL', + starknet: { + tvl, + borrowed + }, +} From cf505820c9b7d84108c38279197c8bb3accb358a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 00:09:36 +0200 Subject: [PATCH 0683/1354] fix iziswap --- projects/izumi-iziswap/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 180fbe51cd..0c0196df57 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -30,6 +30,7 @@ const tvl = async (_, _1, _2, { api }) => { let foundLastPool = false const chunkSize = 10 const poolMetaData = [] + const bTokens = [...blacklistedTokens] do { const calls = [] @@ -58,7 +59,8 @@ const tvl = async (_, _1, _2, { api }) => { }) pools.forEach((output, i) => toa.push([poolMetaData[i].tokenX, output], [poolMetaData[i].tokenY, output],)) - return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens, }) + if (chain === 'era') bTokens.push('0x82af49447d8a07e3bd95bd0d56f35241523fbab1') + return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, }) } Object.keys(poolHelpers).forEach(chain => { From 1b0d3fa62ef8ad59628dc94869837d8712e63246 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 7 Jun 2023 23:34:51 +0100 Subject: [PATCH 0684/1354] add galoswap --- projects/galoswap/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/galoswap/index.js diff --git a/projects/galoswap/index.js b/projects/galoswap/index.js new file mode 100644 index 0000000000..65a3e9dac4 --- /dev/null +++ b/projects/galoswap/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require('../helper/unknownTokens'); +const sdk = require("@defillama/sdk"); + +module.exports = { + misrepresentedTokens: true, + era: { + tvl: getUniTVL({ factory: '0x48E571C645bbeD451b7C58650E643F534fCaB693', useDefaultCoreAssets: true, hasStablePools: true }), + }, + methodology: "Counts liquidity in pools", +}; \ No newline at end of file From 5e8998808f71a06b507544c00bd21bc89023fea6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 00:38:29 +0200 Subject: [PATCH 0685/1354] fix pancakeswap --- projects/pancakeswap-v3/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index a39991647a..ad6cb2748f 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -6,6 +6,7 @@ module.exports = uniV3Export({ '0xc476d3961f77645464acccce404eb17815a80878', '0xf8c7f403829cc0f9a37f126a3da41358c232acdf', '0x95e7c70b58790a1cbd377bc403cd7e9be7e0afb1', + '0x454f4597582df557c2757403f47d3f3bbb890d43', ] }, ethereum: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 16950685, }, }) From 4cb3b5d290360c2f9d0d6b3aa13ab787e4689b11 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Wed, 7 Jun 2023 23:42:23 -0700 Subject: [PATCH 0686/1354] Update index.js (#6509) add moonbeam, retro, beamswap, and reorg --- projects/visor/index.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/projects/visor/index.js b/projects/visor/index.js index 0709aa833a..bd831603b7 100644 --- a/projects/visor/index.js +++ b/projects/visor/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const hypervisorAbi = require("./abis/hypervisor.json"); const { staking } = require("../helper/staking"); @@ -18,14 +18,20 @@ const LIQUIDITY_MINING_POOLS = [ /* List of hypervisor registries by chain One chain can have multiple registries for different underlying DEXes */ const HYPE_REGISTRY = { - ethereum: ["0x31ccdb5bd6322483bebd0787e1dabd1bf1f14946"], + ethereum: [ + "0x31ccdb5bd6322483bebd0787e1dabd1bf1f14946", // Uniswap + ], polygon: [ "0x0Ac4C7b794f3D7e7bF1093A4f179bA792CF15055", // Uniswap "0xAeC731F69Fa39aD84c7749E913e3bC227427Adfd", // Quickswap + "0xcAC19d43C9558753d7535978A370055614Ce832E", // Retro + ], + polygon_zkevm: [ + "0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", // Quickswap ], - polygon_zkevm: ["0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", // Quickswap + optimism: [ + "0xF5BFA20F4A77933fEE0C7bB7F39E7642A070d599", // Uniswap ], - optimism: ["0xF5BFA20F4A77933fEE0C7bB7F39E7642A070d599"], arbitrum: [ "0x66CD859053c458688044d816117D5Bdf42A56813", // Uniswap "0x37595FCaF29E4fBAc0f7C1863E3dF2Fe6e2247e9", // Zyberswap @@ -34,7 +40,12 @@ const HYPE_REGISTRY = { "0x0b4645179C1b668464Df01362fC6219a7ab3234c", // Uniswap "0xd4bcFC023736Db5617E5638748E127581d5929bd", // Thena ], - celo: ["0x0F548d7AD1A0CB30D1872b8C18894484d76e1569"], + moonbeam: [ + "0xB7dfC304D9cd88D98A262cE5B6a39Bb9d6611063", // Beamswap + ], + celo: [ + "0x0F548d7AD1A0CB30D1872b8C18894484d76e1569", // Uniswap + ], }; /* List of bad addresses added to registries that need to be excluded manually */ @@ -138,6 +149,9 @@ module.exports = { bsc: { tvl: tvlWrapper, }, + moonbeam: { + tvl: tvlWrapper, + }, celo: { tvl: tvlWrapper, }, From db5931061e7522e73d1b7a417ebbaef715b29839 Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Thu, 8 Jun 2023 03:28:43 -0400 Subject: [PATCH 0687/1354] metatdex: fix incomplete adapter (#6506) --- projects/metatdex/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/metatdex/index.js b/projects/metatdex/index.js index 272971632c..e445d01512 100644 --- a/projects/metatdex/index.js +++ b/projects/metatdex/index.js @@ -29,8 +29,9 @@ Object.keys(config).forEach(chain => { params: [0, 301], chain, block, }) - if (chain === 'heco') - tokens.push(ADDRESSES.heco.USDT) + if (chain === 'bsc') tokens.push(ADDRESSES.bsc.USDT) + if (chain === 'heco') tokens.push(ADDRESSES.heco.USDT) + if (chain === 'polygon') tokens.push(ADDRESSES.polygon.USDT) return sumTokens2({ tokens, owner, chain, block, }) } } @@ -38,4 +39,4 @@ Object.keys(config).forEach(chain => { const abi = { getTokenAddressList: "function getTokenAddressList(uint256 start, uint256 end) view returns (address[] list)", -} \ No newline at end of file +} From cefffa790254c384d8e3ec55a62ceff6e28d2855 Mon Sep 17 00:00:00 2001 From: rolik2001 Date: Thu, 8 Jun 2023 10:11:48 +0200 Subject: [PATCH 0688/1354] Added atomic.green (#6503) --- projects/atomic/index.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 projects/atomic/index.js diff --git a/projects/atomic/index.js b/projects/atomic/index.js new file mode 100644 index 0000000000..2df5412b64 --- /dev/null +++ b/projects/atomic/index.js @@ -0,0 +1,35 @@ +const Lendings = [ + "0x561920028545985c60fb93d48717ff0070cb4e74", + "0xBAE99752dA245089698Bc1b5F0a14eAE91694FBc", + "0xc1b677039892C048f2eFb7E9C5da1B51fDE92504" +]; + +async function tvl(_, _1, _2, { api }) { + const balances = {}; + + const collateralBalance = await api.multiCall({ + abi: "uint256:totalSupplied", + calls: Lendings.map(i => ({ target: i })) + }); + + const lendingTokens = await api.multiCall({ + abi: "address:token", + calls: Lendings.map(i => ({ target: i })) + }); + + + for (let i = 0; i < collateralBalance.length; i++) { + balances[`arbitrum:${lendingTokens[i]}`] = collateralBalance[i]; + } + + return balances; +} + +module.exports = { + misrepresentedTokens: false, + arbitrum: { + tvl + } +}; + + From 7505edef4b79f86f05d413b8b3286c600aa47bf7 Mon Sep 17 00:00:00 2001 From: pulssy <134281137+pulssy@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:36:21 +0800 Subject: [PATCH 0689/1354] Add OlympulseX (#6497) * Add olympulsex tvl * Add olympulsex treasury * code refactor --------- Co-authored-by: pulssy <> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/olympulsex/index.js | 12 ++++++++++++ projects/treasury/olympulsex.js | 11 +++++++++++ 2 files changed, 23 insertions(+) create mode 100644 projects/olympulsex/index.js create mode 100644 projects/treasury/olympulsex.js diff --git a/projects/olympulsex/index.js b/projects/olympulsex/index.js new file mode 100644 index 0000000000..2fced2012d --- /dev/null +++ b/projects/olympulsex/index.js @@ -0,0 +1,12 @@ +const { sumTokensExport } = require('../helper/unknownTokens') + +const stakingToken = "0xBB366A397D7d4d2BEDABD9139D4c32a8826605Ed"; // SEX +const staking = "0xf1Bc988e7EaBA7a2dbF0121E6ad9BEA82A1AB1ff"; +const LP = '0x2d593b3472d6a5439bC1523a04C2aec314CBc44c' + +module.exports = { + pulse: { + tvl: () => 0, + staking: sumTokensExport({ owner: staking, tokens: [stakingToken], lps: [LP], useDefaultCoreAssets: true, }), + } +} \ No newline at end of file diff --git a/projects/treasury/olympulsex.js b/projects/treasury/olympulsex.js new file mode 100644 index 0000000000..bacb8b14a2 --- /dev/null +++ b/projects/treasury/olympulsex.js @@ -0,0 +1,11 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokensExport } = require('../helper/unknownTokens') + +const treasury = "0x767d028d6d49ac86Aba52d23746c6dC5285C4852"; +const LP = '0x2d593b3472d6a5439bC1523a04C2aec314CBc44c' + +module.exports = { + pulse: { + tvl: sumTokensExport({ owner: treasury, tokens: [ADDRESSES.pulse.DAI, LP], useDefaultCoreAssets: true, }), + } +} \ No newline at end of file From 0df172ca20bb848b4a0d304a6359a35d2b9d6456 Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:37:05 +0800 Subject: [PATCH 0690/1354] [izumi-iziswap] add permitFailure and ultron config (#6511) --- projects/izumi-iziswap/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 0c0196df57..95517556f0 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -10,12 +10,13 @@ const poolHelpers = { 'era': '0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F', 'meter': '0x07aBf894D5C25E626bb30f75eFC728a1d86BEeDC', 'aurora': '0xE78e7447223aaED59301b44513D1d3A892ECF212', - 'ethereumclassic': '0x1D377311b342633A970e71a787C50F83858BFC1B', + // 'ethereumclassic': '0x1D377311b342633A970e71a787C50F83858BFC1B', 'cronos': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', 'polygon': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', // 'conflux': '0x1502d025BfA624469892289D45C0352997251728', 'ethereum': '0x19b683A2F45012318d9B2aE1280d68d3eC54D663', 'ontology_evm': '0x110dE362cc436D7f54210f96b8C7652C2617887D', + 'ultron' : '0xcA7e21764CD8f7c1Ec40e651E25Da68AeD096037' } const blacklistedTokens = [ @@ -59,8 +60,8 @@ const tvl = async (_, _1, _2, { api }) => { }) pools.forEach((output, i) => toa.push([poolMetaData[i].tokenX, output], [poolMetaData[i].tokenY, output],)) - if (chain === 'era') bTokens.push('0x82af49447d8a07e3bd95bd0d56f35241523fbab1') - return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, }) + // if (chain === 'era') bTokens.push('0x82af49447d8a07e3bd95bd0d56f35241523fbab1') + return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, permitFailure: true}) } Object.keys(poolHelpers).forEach(chain => { From b7c2d52260fd73c2d6b2690fed40dc5e2907cc8c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 12:26:33 +0200 Subject: [PATCH 0691/1354] add https://l2fibank.xyz/ --- projects/l2fibank-xyz/index.js | 9 +++ projects/unipilot/index.js | 106 ++++++++++++++++++++------------- 2 files changed, 74 insertions(+), 41 deletions(-) create mode 100644 projects/l2fibank-xyz/index.js diff --git a/projects/l2fibank-xyz/index.js b/projects/l2fibank-xyz/index.js new file mode 100644 index 0000000000..f72ad4f0bc --- /dev/null +++ b/projects/l2fibank-xyz/index.js @@ -0,0 +1,9 @@ +const { compoundV3Exports } = require('../helper/compoundV3') + +module.exports = compoundV3Exports({ + arbitrum: { + markets: [ + "0x0596355e1d3a467a7b22a9e96e5b0fba494b9f89", // USDT Market + ], + } +}) \ No newline at end of file diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js index ae599d8200..28d98a92b1 100644 --- a/projects/unipilot/index.js +++ b/projects/unipilot/index.js @@ -13,17 +13,30 @@ const FACTORY_ADDRESSES = { polygon: { activeFactory: "0x95b77505b38f8a261ada04f54b8d0cda08904708", passiveFactory: "0x2536527121fc1048ae5d45327a34241a355a6a95", + activeFactoryQ: "0xC99fA77AB721817Da9dD3C3b4F8ecB13772FCECE", + passiveFactoryQ: "0xbd712D4dbd4b8d0cD2A98aDb0f9fC2928031b16F", }, arbitrum: { activeFactory: "0xca69c359e3297aa855e77f83e071feab17f0ede6", passiveFactory: "0x6900c436cf15d6d0016dc71a5ce5ade843031efd", }, + bsc: { + activeFactory: "0x9c7cB0BB03044D6c1c472b26058bFA61B9956D22", + passiveFactory: "0x6900c436CF15D6D0016dC71A5CE5ADe843031eFd", + }, + polygon_zkevm: { + activeFactoryQ: "0xC99fA77AB721817Da9dD3C3b4F8ecB13772FCECE", + passiveFactoryQ: "0xbd712D4dbd4b8d0cD2A98aDb0f9fC2928031b16F", + }, + dogechain: { + activeFactoryQ: "0x16C6D274e076c7b36a4D3fEE2f9AB2E12d220bd5", + passiveFactoryQ: "0x30BeB7A1d66CBE9594E159979F0c7e31A9F68e74", + }, }; +const DEFAULT_VAULT_CREATION_TOPIC = "VaultCreated(address,address,uint16,uint24,address)"; const VAULT_CREATION_TOPIC = { ethereum: "VaultCreated(address,address,uint24,address)", - polygon: "VaultCreated(address,address,uint16,uint24,address)", - arbitrum: "VaultCreated(address,address,uint16,uint24,address)", }; const PILOT_STAKING_CONTRACT = "0xc9256e6e85ad7ac18cd9bd665327fc2062703628"; @@ -37,25 +50,45 @@ const START_BLOCKS = { polygon: { activeFactory: 34288237, passiveFactory: 34371363, + activeFactoryQ: 42886155, + passiveFactoryQ: 42212527, }, arbitrum: { activeFactory: 59667444, passiveFactory: 58774134, }, + bsc: { + activeFactory: 27139991, + passiveFactory: 27140068, + }, + polygon_zkevm: { + activeFactoryQ: 300919, + passiveFactoryQ: 209294, + }, + dogechain: { + activeFactoryQ: 12700049, + passiveFactoryQ: 12829893, + }, }; -async function getVaultLogs(chain, block, factoryType, api) { - const vaults = {}; +async function getVaultLogs(vaults, factoryType, api) { + const chain = api.chain + let topic = DEFAULT_VAULT_CREATION_TOPIC + if (VAULT_CREATION_TOPIC[chain]) + topic = VAULT_CREATION_TOPIC[chain] + + if (factoryType === "activeFactoryQ" || factoryType === "passiveFactoryQ") + topic = 'VaultCreated(address,address,uint16,address)' const vaultLogs = await getLogs({ target: FACTORY_ADDRESSES[chain][factoryType], - topic: VAULT_CREATION_TOPIC[chain], + topic, fromBlock: START_BLOCKS[chain][factoryType], api, }); for (let log of vaultLogs) { - vaults[`0x${log.topics[3].substr(-40)}`] = { + vaults[`0x${log.topics[3].substr(-40)}`.toLowerCase()] = { token0Address: `0x${log.topics[1].substr(-40)}`, token1Address: `0x${log.topics[2].substr(-40)}`, }; @@ -64,42 +97,33 @@ async function getVaultLogs(chain, block, factoryType, api) { return vaults; } -function protocolTvl(chain) { - return async (timestamp, block, chainBlocks, { api }) => { - const balances = {}; - let vaults = {}; - const activeVaultLogs = await getVaultLogs(chain, chainBlocks[chain], "activeFactory", api); - const passiveVaultLogs = await getVaultLogs(chain, chainBlocks[chain], "passiveFactory", api); - vaults = { ...activeVaultLogs, ...passiveVaultLogs }; - const ownerTokens = Object.entries(vaults).map(([v, i]) => [[i.token0Address, i.token1Address], v]) - const vaultKeys = Object.keys(vaults) - - //get vault reserves(amount, fees) from contract - const vaultReserves = await api.multiCall({ - abi: getPositionDetails, - calls: vaultKeys, - }) - - - vaultKeys.forEach((v, i) => { - i = vaultReserves[i] - sdk.util.sumSingleBalance(balances,vaults[v].token0Address,i.amount0, api.chain) - sdk.util.sumSingleBalance(balances,vaults[v].token1Address,i.amount1, api.chain) - }) - return sumTokens2({ balances, api, ownerTokens}) - }; -} +async function tvl(timestamp, block, chainBlocks, { api }) { + let vaults = {}; + for (const label of Object.keys(START_BLOCKS[api.chain])) + await getVaultLogs(vaults, label, api) + + const ownerTokens = Object.entries(vaults).map(([v, i]) => [[i.token0Address, i.token1Address], v]) + const vaultKeys = Object.keys(vaults) + + //get vault reserves(amount, fees) from contract + const vaultReserves = await api.multiCall({ abi: getPositionDetails, calls: vaultKeys, }) + + vaultKeys.forEach((v, i) => { + i = vaultReserves[i] + api.add(vaults[v].token0Address, i.amount0) + api.add(vaults[v].token0Address, i.fees0) + api.add(vaults[v].token1Address, i.amount1) + api.add(vaults[v].token1Address, i.fees1) + }) + return sumTokens2({ api, ownerTokens }) +}; module.exports = { doublecounted: true, - ethereum: { - tvl: protocolTvl("ethereum"), - staking: staking(PILOT_STAKING_CONTRACT, PILOT, "ethereum"), - }, - polygon: { - tvl: protocolTvl("polygon"), - }, - arbitrum: { - tvl: protocolTvl("arbitrum"), - }, }; + +Object.keys(FACTORY_ADDRESSES).forEach(chain => { + module.exports[chain] = { tvl } +}) + +module.exports.ethereum.staking = staking(PILOT_STAKING_CONTRACT, PILOT) \ No newline at end of file From 45d1006aab6615b1c02348bb82f3a3943d0c5c48 Mon Sep 17 00:00:00 2001 From: Urdex-finance <129468742+Urdex-finance@users.noreply.github.com> Date: Thu, 8 Jun 2023 17:42:55 +0700 Subject: [PATCH 0692/1354] add UrDEX Finance adapter (#6512) * add urdex adapter * minor refactor --------- Co-authored-by: inti25 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/urdex/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/urdex/index.js diff --git a/projects/urdex/index.js b/projects/urdex/index.js new file mode 100644 index 0000000000..4e2c3b2978 --- /dev/null +++ b/projects/urdex/index.js @@ -0,0 +1,21 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require("../helper/unwrapLPs"); +const { staking } = require("../helper/staking"); + +const Contracts = { + Pool: "0xF67D3a53a110a764DCa7123b9f3FC5B404566577", + Chef: "0x235dB7AFE577A239150160ab7429bC3D6e25fdAa", + Tokens: { + BTC: ADDRESSES.arbitrum.WBTC, + USDT: ADDRESSES.arbitrum.USDT, + WETH: ADDRESSES.arbitrum.WETH + }, + URD_USDT_LP: "0xA8eC0aa8fe4287E768Fd382845442Fa29F2886ef" +} + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ owner: Contracts.Pool, tokens: Object.values(Contracts.Tokens) }), + pool2: staking(Contracts.Chef, Contracts.URD_USDT_LP) + } +}; From f17e019dafa3ca055ad224d65f2f358ff735e204 Mon Sep 17 00:00:00 2001 From: montero-xbank <99632051+montero-xbank@users.noreply.github.com> Date: Thu, 8 Jun 2023 18:46:02 +0700 Subject: [PATCH 0693/1354] add xbank (#6513) --- projects/xbank/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/xbank/index.js diff --git a/projects/xbank/index.js b/projects/xbank/index.js new file mode 100644 index 0000000000..c9e3f5ef78 --- /dev/null +++ b/projects/xbank/index.js @@ -0,0 +1,8 @@ +const { compoundExports2 } = require('../helper/compound'); + +module.exports = { + era: compoundExports2({ + comptroller: '0xC6d329a2C3f8cFDECAe7FeEc387fa633C6520991', + cether: '0xE4622A57Ab8F4168b80015BBA28fA70fb64fa246', + }) +}; \ No newline at end of file From c6169638f337732bc045be04d43539b96a78b39c Mon Sep 17 00:00:00 2001 From: Harry Ma Date: Thu, 8 Jun 2023 19:48:51 +0800 Subject: [PATCH 0694/1354] filet project split tvl to multiple chains (#6484) * split tvl to multiple chains * add the codes * improve heco chain * improve the codes for go pass * fix Mixed spaces and tabs errors * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/filet/abi.js | 7 ++++ projects/filet/index.js | 93 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 projects/filet/abi.js diff --git a/projects/filet/abi.js b/projects/filet/abi.js new file mode 100644 index 0000000000..45f869d902 --- /dev/null +++ b/projects/filet/abi.js @@ -0,0 +1,7 @@ +const filetFVMAbi = "function minePoolMap(uint256) view returns (tuple(address tokenAddress, uint256 expireType, uint256 actionType, uint256 canSell, address[] minerList, uint256 stakingPrice, uint256 tokenRate, uint256 FILRate, uint256 tokenPrecision, uint256 miniPurchaseAmount, uint256 hasSoldOutToken) mPool, bool isEntity)" +const filetBSCAbi = "function minePoolMap(uint256) view returns (tuple(address tokenInterface, address tokenAddress, uint256 expireType, uint256 actionType, tuple(uint256 canSell, uint256 canNotSell) maxMiningPower, address earlyRedeemFundAccount, address redeemFundAccount, address minerAccount, uint256 stakingPrice, uint256 tokenRate, uint256 FILRate, uint256 tokenPrecision, address recievePaymentAccount, uint256 miniPurchaseAmount, uint256 hasSoldOutToken, uint256 lockInterval, uint256[] poolThredhold, uint256[] serviceFeePercent) mPool, bool isEntity)" +const FiletBSCCurrentAbi = "function minePoolMap(uint256) view returns (tuple(address tokenInterface, address tokenAddress, uint256 expireType, uint256 actionType, tuple(uint256 canSell, uint256 canNotSell) maxMiningPower, address earlyRedeemFundAccount, address redeemFundAccount, address profitFundAccount, address minerAccount, uint256 stakingPrice, uint256 tokenRate, uint256 FILRate, uint256 tokenPrecision, address recievePaymentAccount, uint256 miniPurchaseAmount, uint256 maxPurchaseAmount, uint256 hasSoldOutToken, uint256 lockInterval, uint256[] poolThredhold, uint256[] serviceFeePercent, uint256 lendhubExtraRatio) mPool, bool isEntity)" + +module.exports = { + filetFVMAbi, filetBSCAbi, FiletBSCCurrentAbi +} \ No newline at end of file diff --git a/projects/filet/index.js b/projects/filet/index.js index 16ce7d84a2..3b17ce993d 100644 --- a/projects/filet/index.js +++ b/projects/filet/index.js @@ -1,10 +1,91 @@ -const { get } = require('../helper/http') -async function fetch() { - const resp = await get('https://api.filet.finance/pledge/ext/tx/pledgeTxAll') - return resp.data.tvl; +const abi = require("./abi.js") +const { fetchURL } = require('../helper/utils') + + +const BigNumber = require("bignumber.js") +const { getExports } = require('../helper/heroku-api') +const { nullAddress } = require("../helper/tokenMapping"); +const { get } = require("../helper/http"); +const {utils} = require("ethers"); + +//bsc staking con +const filetStakingCon_BSC = "0x9c821defD3BBb07C5c786C3bB039051364Fa6F39"; +const filetStakingConFlexible_BSC = "0xE989ef3118C685603B86123569340438ab670505"; +//bsc FILE con +const filetFILECon_BSC = "0xA8F19840e08dC3f134FF45062b953a2B14E02F5A" +const filetStorageCon_FVM = "0xFca90089d63D099c80A4ae91edCdfC904c2afa8e"; +const filetNativeCon = "0xBfd5BB742940a5b059710F4d1216db1F1287F4e0"; + +const filetStakingCon_HECO = "0x62C7aaCdCCEc32A2E33d5fa535B374f8a4a42566"; +const filetStakingConFlexible_HECO = "0x64F23Eb153D7496Fc31C1b38a41068995354773E" + +const poolOnFVM180 = 4010 +const poolOnFVM360 = 4011 + +// filet +const filetAPI = "https://api.filet.finance/pledge/ext/tx/pledgeTxAll" +const minerList = "https://api.filet.finance/pledge/pool/querySpList" +const { sumTokens2 } = require('../helper/unwrapLPs') + + +const getMinersList = async () => { + const resp = await get(minerList) + return resp.data.map(({minerId}) => { + + let bytes = Buffer.alloc(20); + bytes.writeUint8(0xff, 0); + bytes.writeBigUint64BE(BigInt(minerId), 12); + return utils.getAddress('0x' + bytes.toString('hex')); + }); } +// + module.exports = { - fetch, -}; + timetravel: false, + heco: { + tvl: async (_, _1, _2, { api}) => { + const tvlData = await fetchURL(filetAPI) + return { + ["filecoin"]: new BigNumber(tvlData.data.data.hecoTvl), + } + } + }, + bsc: { + tvl: async (_, _1, _2, { api}) => { + + const tvlData = await fetchURL(filetAPI) + return { + ["filecoin"]: new BigNumber(tvlData.data.data.bscTvl), + } + + } + }, + filecoin: { + tvl: async (_, _1, _2, { api }) => { + + const filetMpool180 = await api.call({ target: filetStorageCon_FVM, abi: abi.filetFVMAbi, params:[poolOnFVM180] }); + const filetMpool360 = await api.call({ target: filetStorageCon_FVM, abi: abi.filetFVMAbi, params:[poolOnFVM360] }); + + const filetNative_hasSoldOutToken = await api.call({ target: filetNativeCon, abi: "uint256:hasSoldOutToken", params:[] }); + api.add(nullAddress, filetMpool180.mPool.hasSoldOutToken) + api.add(nullAddress, filetMpool360.mPool.hasSoldOutToken ) + api.add(nullAddress, filetNative_hasSoldOutToken ) + + // getMinersList + const minerList = await getMinersList(); + let balances = await sumTokens2({ owner: filetStorageCon_FVM, tokens:[nullAddress], api, }); + return sumTokens2({balances, api, owners: minerList, tokens: [nullAddress]}); + }, + }, + mixin: { + tvl: async (_, _1, _2, { api }) => { + const tvlData = await fetchURL(filetAPI) + console.log("tvlData:",tvlData.data.data.mixinTvl) + return { + ["filecoin"]: new BigNumber(tvlData.data.data.mixinTvl), + } + } + } +} From b69dc0eac20501a61e79fb2fa84aaf1a7205c05d Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 8 Jun 2023 13:38:32 +0100 Subject: [PATCH 0695/1354] equilibria --- projects/equilibria/index.js | 97 ++++++++++++++++++++++++++++++++++++ projects/penpie/index.js | 1 + 2 files changed, 98 insertions(+) create mode 100644 projects/equilibria/index.js diff --git a/projects/equilibria/index.js b/projects/equilibria/index.js new file mode 100644 index 0000000000..78879fc677 --- /dev/null +++ b/projects/equilibria/index.js @@ -0,0 +1,97 @@ +const sdk = require("@defillama/sdk"); +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const contracts = { + ethereum: { + boosterAddress: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", + staker: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3", + eqbAddress: "0xfE80D611c6403f70e5B1b9B722D2B3510B740B2B", + eqbRewardsAddress: "0xd8967B2B15b3CDF96039b7407813B4037f73ec27", + pendleAddress: "0x808507121b80c02388fad14726482e061b8da827", + }, + arbitrum: { + boosterAddress: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", + staker: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3", + eqbRewardsAddress: "0x70f61901658aAFB7aE57dA0C30695cE4417e72b9", + pendleAddress: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", + }, +}; + +async function tvl(chain, block) { + const balances = {}; + + if (chain === "ethereum") { + const pendleLocked = await sdk.api2.abi.call({ + target: "0x4f30A9D41B80ecC5B94306AB4364951AE3170210", + params: contracts[chain].staker, + abi: "erc20:balanceOf", + block, + }); + sdk.util.sumSingleBalance( + balances, + contracts[chain].pendleAddress, + pendleLocked + ); + } + + const poolLength = await sdk.api2.abi.call({ + chain, + block, + target: contracts[chain].boosterAddress, + abi: "function poolLength() view returns (uint256)", + }); + + const poolInfos = await Promise.all( + Array.from(Array(Number(poolLength)).keys()).map((params) => + sdk.api2.abi.call({ + chain, + block, + target: contracts[chain].boosterAddress, + params, + abi: "function poolInfo(uint256) view returns (address market, address token, address rewardPool, bool shutdown)", + }) + ) + ); // multicall fails here + + const { output: gaugeBalances } = await sdk.api.abi.multiCall({ + abi: "erc20:balanceOf", + calls: Array.from(new Set(poolInfos.map((p) => p.market))).map((i) => ({ + target: i, + params: contracts[chain].staker, + })), + chain, + block, + }); + + gaugeBalances.forEach(({ output, input }, i) => + sdk.util.sumSingleBalance( + balances, + chain + + ":" + + poolInfos.find( + (p) => p.market.toLowerCase() === input.target.toLowerCase() + ).market, + output + ) + ); + + return balances; +} +// node test.js projects/convex2/index.js + +const chains = ["ethereum", "arbitrum"]; + +module.exports = { + doublecounted: true, +}; + +chains.forEach((chain) => { + module.exports[chain] = { + tvl: async (_, _b, { [chain]: block }) => tvl(chain, block), + }; +}); + +module.exports.ethereum.staking = sumTokensExport({ + owner: contracts.ethereum.eqbRewardsAddress, + tokens: [contracts.ethereum.eqbAddress], +}); diff --git a/projects/penpie/index.js b/projects/penpie/index.js index 4162298d21..a353314614 100644 --- a/projects/penpie/index.js +++ b/projects/penpie/index.js @@ -42,6 +42,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { Object.keys(config).forEach((chain) => { const { masterPenpie, mPENDLE } = config[chain]; module.exports[chain] = { + doublecounted: true, tvl: tvl, staking: staking(masterPenpie, mPENDLE), }; From ccde98e8d3d6550b2b29ec10b961e8f577e1c76d Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 8 Jun 2023 13:40:06 +0100 Subject: [PATCH 0696/1354] remove comment --- projects/equilibria/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/equilibria/index.js b/projects/equilibria/index.js index 78879fc677..eef4aa7849 100644 --- a/projects/equilibria/index.js +++ b/projects/equilibria/index.js @@ -77,7 +77,6 @@ async function tvl(chain, block) { return balances; } -// node test.js projects/convex2/index.js const chains = ["ethereum", "arbitrum"]; From a11bbe4b380b9d1afa122f274b6682b7ecdc2194 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 8 Jun 2023 13:42:46 +0100 Subject: [PATCH 0697/1354] fix lint --- projects/unipilot/index.js | 46 ++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js index ae599d8200..20a9d3ce69 100644 --- a/projects/unipilot/index.js +++ b/projects/unipilot/index.js @@ -1,6 +1,6 @@ const sdk = require("@defillama/sdk"); const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); const getPositionDetails = "function getPositionDetails() returns (uint256 amount0, uint256 amount1, uint256 fees0, uint256 fees1, uint128 baseLiquidity, uint128 rangeLiquidity)"; @@ -68,25 +68,47 @@ function protocolTvl(chain) { return async (timestamp, block, chainBlocks, { api }) => { const balances = {}; let vaults = {}; - const activeVaultLogs = await getVaultLogs(chain, chainBlocks[chain], "activeFactory", api); - const passiveVaultLogs = await getVaultLogs(chain, chainBlocks[chain], "passiveFactory", api); + const activeVaultLogs = await getVaultLogs( + chain, + chainBlocks[chain], + "activeFactory", + api + ); + const passiveVaultLogs = await getVaultLogs( + chain, + chainBlocks[chain], + "passiveFactory", + api + ); vaults = { ...activeVaultLogs, ...passiveVaultLogs }; - const ownerTokens = Object.entries(vaults).map(([v, i]) => [[i.token0Address, i.token1Address], v]) - const vaultKeys = Object.keys(vaults) + const ownerTokens = Object.entries(vaults).map(([v, i]) => [ + [i.token0Address, i.token1Address], + v, + ]); + const vaultKeys = Object.keys(vaults); //get vault reserves(amount, fees) from contract const vaultReserves = await api.multiCall({ abi: getPositionDetails, calls: vaultKeys, - }) - + }); vaultKeys.forEach((v, i) => { - i = vaultReserves[i] - sdk.util.sumSingleBalance(balances,vaults[v].token0Address,i.amount0, api.chain) - sdk.util.sumSingleBalance(balances,vaults[v].token1Address,i.amount1, api.chain) - }) - return sumTokens2({ balances, api, ownerTokens}) + i = vaultReserves[i]; + sdk.util.sumSingleBalance( + balances, + vaults[v].token0Address, + i.amount0, + api.chain + ); + sdk.util.sumSingleBalance( + balances, + vaults[v].token1Address, + i.amount1, + api.chain + ); + }); + return sumTokens2({ balances, api, ownerTokens }); }; } From 0f6157796341d317ab38727e66765df36a5d5e1b Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 8 Jun 2023 13:50:54 +0100 Subject: [PATCH 0698/1354] lint error --- projects/unipilot/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js index cf94b51d6a..9ff6ea60d9 100644 --- a/projects/unipilot/index.js +++ b/projects/unipilot/index.js @@ -116,7 +116,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { api.add(vaults[v].token1Address, i.fees1) }) return sumTokens2({ api, ownerTokens }) -}; +} module.exports = { doublecounted: true, From 65a4bbdaebd10ec8d961b541c80fd8b0cb2744d9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:00:12 +0200 Subject: [PATCH 0699/1354] fix broken adapters --- projects/MellowProtocol/index.js | 8 ++------ projects/drachma/index.js | 6 +++--- projects/friktion/index.js | 2 +- projects/wepiggy.js | 3 +++ 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/projects/MellowProtocol/index.js b/projects/MellowProtocol/index.js index 26ba2a429c..fced703a11 100644 --- a/projects/MellowProtocol/index.js +++ b/projects/MellowProtocol/index.js @@ -16,10 +16,6 @@ module.exports = { doublecounted: true, }; -const ignored = [ - '0x728fD7ec3cBB50D809735879318d04D8CbEb7157' -] - Object.keys(config).forEach(chain => { const { registry, fromBlock, } = config[chain] module.exports[chain] = { @@ -46,9 +42,9 @@ Object.keys(config).forEach(chain => { extraKey: 'TokenLocked' }) tokenLockedLogs.forEach(i => delete vaultKeys[i.nft]) - let vaults = Object.values(vaultKeys).filter(i => !ignored.includes(i)) + let vaults = Object.values(vaultKeys) const tokens = await api.multiCall({ abi: 'function vaultTokens() view returns (address[])', calls: vaults }) - const bals = await api.multiCall({ abi: 'function tvl() view returns (uint256[] minTokenAmounts, uint256[] maxTokenAmounts)', calls: vaults }) + const bals = await api.multiCall({ abi: 'function tvl() view returns (uint256[] minTokenAmounts, uint256[] maxTokenAmounts)', calls: vaults, permitFailure: true }) tokens.forEach((tokens, i) => { if (!bals[i]) return; let balsInner = bals[i].minTokenAmounts diff --git a/projects/drachma/index.js b/projects/drachma/index.js index 85f22e30c1..a1b85c2742 100644 --- a/projects/drachma/index.js +++ b/projects/drachma/index.js @@ -22,11 +22,11 @@ function tvl(chain) { } module.exports = { - timetravel: true, - incentivized: true, - misrepresentedTokens: true, metis: { tvl: sdk.util.sumChainTvls([drachmaTvl, tvl("metis")]), borrowed: drachmaBorrowed, }, }; + + +module.exports.metis = { tvl: tvl("metis") } \ No newline at end of file diff --git a/projects/friktion/index.js b/projects/friktion/index.js index 173a329621..bc5f02b0e8 100644 --- a/projects/friktion/index.js +++ b/projects/friktion/index.js @@ -20,7 +20,7 @@ async function tvl() { throw new Error("Unexpected shape of friktionShapshot"); } - if (!friktionSnapshot.totalTvlUSD || friktionSnapshot.totalTvlUSD < 1000000) { + if (!friktionSnapshot.totalTvlUSD || friktionSnapshot.totalTvlUSD < 1000) { console.log(friktionSnapshot); throw new Error("Unexpected totalTvlUSD"); } diff --git a/projects/wepiggy.js b/projects/wepiggy.js index 0c6a6ac77b..736c416c9b 100644 --- a/projects/wepiggy.js +++ b/projects/wepiggy.js @@ -99,3 +99,6 @@ module.exports={ ...chainExports, methodology: `TVL is comprised of tokens deposited to the protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.` } + +module.exports.oasis = { tvl: () => 0, borrowed: () => 0 } +module.exports.heco = { tvl: () => 0, borrowed: () => 0 } \ No newline at end of file From 1cb5c31df90d1af3e26888d70baa9d1ebcda851a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 18:01:12 +0200 Subject: [PATCH 0700/1354] add projects in onus chain --- package-lock.json | 12 ++++++------ projects/defily-dex/index.js | 15 +++++++++++++++ projects/defilyio/index.js | 1 + projects/devil-finance/index.js | 2 ++ projects/ergopad/index.js | 2 +- projects/gambit-financial/index.js | 15 +++++++++++++++ projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 8 ++++++++ projects/helper/gmx.js | 5 +++-- projects/heraswap/index.js | 8 ++++++++ projects/miaswap/index.js | 8 ++++++++ projects/omt-finance/index.js | 7 +++++++ projects/onus-usdo/index.js | 8 ++++++++ 13 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 projects/defily-dex/index.js create mode 100644 projects/gambit-financial/index.js create mode 100644 projects/heraswap/index.js create mode 100644 projects/miaswap/index.js create mode 100644 projects/omt-finance/index.js create mode 100644 projects/onus-usdo/index.js diff --git a/package-lock.json b/package-lock.json index 75a0c132e4..71cde297b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.25", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.25.tgz", - "integrity": "sha512-5dQ4I5xVRk1FAD2qJetBp+84gPMGil5lSCS3okuVEHiU/p2uSDghDj+S0eiZYSm1xAzDniklerHuoHQs6MlqAg==", + "version": "4.0.26", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.26.tgz", + "integrity": "sha512-qZ0aZHocHhpWC/Mis/rvc/CCOs1Z+MCbLIVSVfJi/6d4acOzgV5m+oLtxVK1Rz0bsMrPZHdT+kUFkum8EKPodw==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.25", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.25.tgz", - "integrity": "sha512-5dQ4I5xVRk1FAD2qJetBp+84gPMGil5lSCS3okuVEHiU/p2uSDghDj+S0eiZYSm1xAzDniklerHuoHQs6MlqAg==", + "version": "4.0.26", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.26.tgz", + "integrity": "sha512-qZ0aZHocHhpWC/Mis/rvc/CCOs1Z+MCbLIVSVfJi/6d4acOzgV5m+oLtxVK1Rz0bsMrPZHdT+kUFkum8EKPodw==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/defily-dex/index.js b/projects/defily-dex/index.js new file mode 100644 index 0000000000..8ebc8cb1a5 --- /dev/null +++ b/projects/defily-dex/index.js @@ -0,0 +1,15 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +const config = { + onus: '0xf57578DD26422e80ab4051165Fb64DA1F25E740A', +} + +module.exports = { + misrepresentedTokens: true, +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: config[chain], }) + } +}) diff --git a/projects/defilyio/index.js b/projects/defilyio/index.js index f9fd11b4b4..c9c60aa3cb 100644 --- a/projects/defilyio/index.js +++ b/projects/defilyio/index.js @@ -10,6 +10,7 @@ const DFL = "0xD675fF2B0ff139E14F86D87b7a6049ca7C66d76e"; const DFL_Harmony = ADDRESSES.arbitrum.MIM; const fetch = async () => { + return 0 const tvl = (await utils.fetchURL("https://api.defily.io/v1/statistics")).data .payload.totalValueLocked.total; return tvl; diff --git a/projects/devil-finance/index.js b/projects/devil-finance/index.js index da544d9f2d..627b6ae592 100644 --- a/projects/devil-finance/index.js +++ b/projects/devil-finance/index.js @@ -17,3 +17,5 @@ module.exports = { staking: tvl("native"), }, }; + +module.exports.fantom = { tvl: () => 0} \ No newline at end of file diff --git a/projects/ergopad/index.js b/projects/ergopad/index.js index df62b8fdf6..a4e4335d02 100644 --- a/projects/ergopad/index.js +++ b/projects/ergopad/index.js @@ -9,7 +9,7 @@ async function staking() { } async function getErgopadPrice() { - const { data: { lockedX, lockedY, } } = await utils.fetchURL('https://api.ergodex.io/v1/amm/pool/d7868533f26db1b1728c1f85c2326a3c0327b57ddab14e41a2b77a5d4c20f4b2/stats'); + const { data: { lockedX, lockedY, } } = await utils.fetchURL('https://api.spectrum.fi/v1/amm/pool/d7868533f26db1b1728c1f85c2326a3c0327b57ddab14e41a2b77a5d4c20f4b2/stats'); let ergQuantity, padQunatity const ergId = '0000000000000000000000000000000000000000000000000000000000000000' diff --git a/projects/gambit-financial/index.js b/projects/gambit-financial/index.js new file mode 100644 index 0000000000..cc06448b27 --- /dev/null +++ b/projects/gambit-financial/index.js @@ -0,0 +1,15 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + bsc: { + tvl: sumTokensExport({ owner: '0xc73A8DcAc88498FD4b4B1b2AaA37b0a2614Ff67B', tokens: [ + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.ETH, + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.USDT, + ]}) + }, +} diff --git a/projects/helper/chains.json b/projects/helper/chains.json index e2045ab3ff..b5e031952c 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -134,6 +134,7 @@ "omax", "ontology", "ontology_evm", + "onus", "optimism", "ore", "orai", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 045b716163..03901715f6 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1311,5 +1311,13 @@ "USDC": "0x15D38573d2feeb82e7ad5187aB8c1D52810B1f07", "USDT": "0x0Cb6F5a34ad42ec934882A05265A7d5F59b51A2f", "DAI": "0xefd766ccb38eaf1dfd701853bfce31359239f305" + }, + "onus": { + "WONUS": "0x4c761e48d1e735af551cc38abcbdce1d7faac6e4", + "BUSD": "0xdfB5E8a4AC08E46258A12AbE737bba5D8c452508", + "BNB": "0xbdce8c50c1e6f6501c2af8232d2d76ec75cda51d", + "USDT": "0xff276c6bca1f66fd54a8915e830735d6ab0c7b09", + "BTC": "0x935765ad27a1af00f73097c998a9fb721d2d7790", + "ETH": "0xb4373ebb073a4dcba47e567d075a9583fa3c763e" } } diff --git a/projects/helper/gmx.js b/projects/helper/gmx.js index 971225b44b..07295c3c56 100644 --- a/projects/helper/gmx.js +++ b/projects/helper/gmx.js @@ -1,6 +1,7 @@ const { sumTokens2 } = require('./unwrapLPs') -function gmxExports({ vault, blacklistedTokens = [] }) { +function gmxExports({ vault, blacklistedTokens = [], abis = {} }) { + abis = { ...defaultAbis, ...abis} return async (ts, _block, _, { api }) => { const tokenAddresses = await api.fetchList({ target: vault, @@ -12,7 +13,7 @@ function gmxExports({ vault, blacklistedTokens = [] }) { } } -const abis = { +const defaultAbis = { allWhitelistedTokensLength: 'uint256:allWhitelistedTokensLength', allWhitelistedTokens: 'function allWhitelistedTokens(uint256) view returns (address)' } diff --git a/projects/heraswap/index.js b/projects/heraswap/index.js new file mode 100644 index 0000000000..485c0d0d80 --- /dev/null +++ b/projects/heraswap/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + onus: { + tvl: getUniTVL({ factory: '0x6CD368495D90b9Ba81660e2b35f7Ea2AcE2B8cD6', useDefaultCoreAssets: true }), + } +} \ No newline at end of file diff --git a/projects/miaswap/index.js b/projects/miaswap/index.js new file mode 100644 index 0000000000..85dae95585 --- /dev/null +++ b/projects/miaswap/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + onus: { + tvl: getUniTVL({ factory: '0xA5DA4dC244c7aD33a0D8a10Ed5d8cFf078E86Ef3', useDefaultCoreAssets: true }), + } +} \ No newline at end of file diff --git a/projects/omt-finance/index.js b/projects/omt-finance/index.js new file mode 100644 index 0000000000..cd1404a9f8 --- /dev/null +++ b/projects/omt-finance/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + onus:{ + tvl: gmxExports({ vault: '0x9a10B55FdE534e7809345D9DE0191a2b01E2F399', }) + }, +}; diff --git a/projects/onus-usdo/index.js b/projects/onus-usdo/index.js new file mode 100644 index 0000000000..ad96fa1cf5 --- /dev/null +++ b/projects/onus-usdo/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + onus: { + tvl: sumTokensExport({ owner: '0x3D513abc13f53A1E18Ae59A7B5B0930E55733C87', tokens: [ADDRESSES.onus.BUSD]}) + } +} \ No newline at end of file From b80c1bb7b74af3c92337806a7fbe5cfb7ebd6d47 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 20:52:56 +0200 Subject: [PATCH 0701/1354] fix broken adapters --- projects/everlend/index.js | 18 +-- projects/frfi/index.js | 1 + projects/iotube/index.js | 243 +++---------------------------------- projects/maple/index.js | 29 +++-- projects/pizza/index.js | 6 +- 5 files changed, 44 insertions(+), 253 deletions(-) diff --git a/projects/everlend/index.js b/projects/everlend/index.js index 21ed7a4ddf..e941a1e371 100644 --- a/projects/everlend/index.js +++ b/projects/everlend/index.js @@ -1,15 +1,9 @@ -const { get } = require('../helper/http') - -async function fetch() { - const response = await get('https://api.everlend.finance/api/v1/info') - - return response.tvl; -} +// token vault: GV2MntTz56GmbzvKLYfM3T54KjSgW1fc71kFAeFfrYxC module.exports = { timetravel: false, - solana: { - fetch - }, - fetch, -}; + solana: { tvl: () => 0, }, + hallmarks: [ + [Math.floor(new Date('2023-02-01')/1e3), 'Product is winding down'], + ], +} diff --git a/projects/frfi/index.js b/projects/frfi/index.js index 0c6c434b92..45bfd3f1d7 100644 --- a/projects/frfi/index.js +++ b/projects/frfi/index.js @@ -2,6 +2,7 @@ const { fetchURL } = require("../helper/utils"); const { toUSDTBalances } = require("../helper/balances"); const tvl = (chain) => async () => { + return {} const response = await fetchURL( `https://backend-api-prod.frfi.io/autofarm?chainId=${chain}&$limit=100` ); diff --git a/projects/iotube/index.js b/projects/iotube/index.js index 9b64299b99..bda759defe 100644 --- a/projects/iotube/index.js +++ b/projects/iotube/index.js @@ -1,230 +1,25 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { request, gql } = require("graphql-request"); +const { sumTokens2 } = require('../helper/unwrapLPs') -const apiURL = "https://smart-graph.iotex.me/iotube/graphql"; - -const query = gql` - query ( - $iotexTokens: [String!]! - $ethTokens: [String!]! - $bscTokens: [String!]! - $polygonTokens: [String!]! - ) { - iotex: IoTeX { - chainId - CIOTX: ERC20(address: [ADDRESSES.iotex.CIOTX]) { - address - symbol - decimals - totalSupply - balance: market_cap - } - CYC: ERC20(address: [ADDRESSES.iotex.CYC]) { - address - symbol - decimals - totalSupply - balance: market_cap - } - Tokens: ERC20(address: $iotexTokens) { - address - symbol - decimals - totalSupply - balance: market_cap - } - TokenSafe: ERC20( - address: [ADDRESSES.iotex.WIOTX] - ) { - address - symbol - decimals - balance: balanceUSD(account: "0xc4a29a94f12be03033daa4e6ce9b9678c26275a2") - } - } - ethereum: ETH { - chainId - CYC: ERC20(address: ["0x8861cfF2366C1128fd699B68304aD99a0764Ef9a"]) { - address - symbol - decimals - totalSupply - balance: market_cap - } - TokenSafe: ERC20(address: $ethTokens) { - address - symbol - decimals - balance: balanceUSD(account: "0xc2e0f31d739cb3153ba5760a203b3bd7c27f0d7a") - } - } - bsc: BSC { - chainId - CIOTX: ERC20(address: ["0x2aaF50869739e317AB80A57Bf87cAA35F5b60598"]) { - address - symbol - decimals - totalSupply - balance: market_cap - } - CYC: ERC20(address: ["0x810ee35443639348adbbc467b33310d2ab43c168"]) { - address - symbol - decimals - totalSupply - balance: market_cap - } - TokenSafe: ERC20(address: $bscTokens) { - address - symbol - decimals - balance: balanceUSD(account: "0xfbe9a4138afdf1fa639a8c2818a0c4513fc4ce4b") - } - } - polygon: Polygon { - chainId - CIOTX: ERC20(address: ["0x300211Def2a644b036A9bdd3e58159bb2074d388"]) { - address - symbol - decimals - totalSupply - balance: market_cap - } - CYC: ERC20(address: ["0xcFb54a6D2dA14ABeCD231174FC5735B4436965D8"]) { - address - symbol - decimals - totalSupply - balance: market_cap - - } - TokenSafe: ERC20(address: $polygonTokens) { - address - symbol - decimals - balance: balanceUSD(account: "0xa239f03cda98a7d2aaaa51e7bf408e5d73399e45") - } - } - } -`; - -const variables = { - iotexTokens: [ - ADDRESSES.iotex.ioETH, - ADDRESSES.iotex.ioWBTC, - ADDRESSES.iotex.ioBUSD, - "0xedeefaca6a1581fe2349cdfc3083d4efa8188e55", - "0x2a6003e4b618ff3457a4a2080d028b0249b51c80", - ADDRESSES.iotex.ioUSDT, - ADDRESSES.iotex.ioUSDC, - ADDRESSES.iotex.ioDAI, - ADDRESSES.iotex.BNB_bsc, - ADDRESSES.iotex.BUSD_bsc, - ADDRESSES.iotex.USDT_b, - ADDRESSES.iotex.USDC_b, - "0x0bDF82F276309E2efd4947Ee8E0A248b2726E8Df", - ADDRESSES.iotex.WMATIC, - "0x653656f84381e8a359a268f3002621bbb14c62f8", - "0x7f0ad63c902c67b1fa1b1102b0daffb889f5d5cb", - ADDRESSES.iotex.DAI_matic, - ADDRESSES.iotex.USDT_matic, - ADDRESSES.iotex.USDC_matic, - "0x295ebb8c782e186bcb70d9a8124053043d1adf5c", - "0xe46ba98a87dca989725e9a2389975c0bbbb8f985", - "0xaadc74127109d944e36cbd70f71fc5f0c921fc6c", - "0x0499a3ec965136bea01e4350113a2105724785dc", - "0x28873cEA8c26F603b15937f9985A888C5DA5Fd90", - "0xc1B58620aD839383c662BFe80dB4514344DeC6d7", - ], - ethTokens: [ - "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69", - ADDRESSES.ethereum.WETH, - "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69", - ADDRESSES.ethereum.WBTC, - "0x8861cfF2366C1128fd699B68304aD99a0764Ef9a", - ADDRESSES.ethereum.BUSD, - ADDRESSES.ethereum.UNI, - "0x45804880de22913dafe09f4980848ece6ecbaf78", - ADDRESSES.ethereum.USDT, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - "0xD227c3e4f3F8dE94180269eF9DC221a6efc1F4C4", - "0xf79deaBc1406a3AD07c70877fBaEb90777B77E68", - ], - bscTokens: [ - ADDRESSES.bsc.WBNB, - ADDRESSES.bsc.BUSD, - "0x810ee35443639348adbbc467b33310d2ab43c168", - "0x2aaF50869739e317AB80A57Bf87cAA35F5b60598", - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.USDC, - "0x7e544f2fEDDc69b1cB12555779c824CFe100ee34", - "0x049Dd7532148826CdE956c7B45fec8c30b514052", - "0x049Dd7532148826CdE956c7B45fec8c30b514052", - "0xab951271F025D93c278516e3d131e017e8a3089D", - ], - polygonTokens: [ - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - ADDRESSES.polygon.WETH_1, - ADDRESSES.polygon.WBTC, - ADDRESSES.polygon.DAI, - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.USDC, - "0x0b3F868E0BE5597D5DB7fEB59E1CADBb0fdDa50a", - "0x831753DD7087CaC61aB5644b308642cc1c33Dc13", - "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", - "0xcFb54a6D2dA14ABeCD231174FC5735B4436965D8", - "0x300211Def2a644b036A9bdd3e58159bb2074d388", - ], -}; -let cache = null; - -const loadTvl = async () => { - const result = cache - ? cache - : await request(apiURL, query, variables).then( - (res) => { - Object.entries(res).forEach(([k, v]) => { - res[k] = [ - ...(v.CIOTX?.filter((i) => i.balance > 0).map((i) => - Number(i.balance) - ) || []), - ...(v.Tokens?.filter((i) => i.balance > 0).map((i) => - Number(i.balance) - ) || []), - ...(v.CYC?.filter((i) => i.balance > 0).map((i) => - Number(i.balance) - ) || []), - ...(v.TokenSafe?.filter((i) => i.balance > 0).map((i) => - Number(i.balance) - ) || []), - ].reduce((acc, i) => acc + i, 0) - if (!cache) cache = {}; - cache[res] = res[k]; - }); - return res; - } - ); - return result; -}; - -const allChains = ["iotex", "ethereum", "bsc", "polygon"].reduce((p, c) => { - p[c] = { - fetch: async () => { - const tvl = await loadTvl(); - return tvl[c]; - }, - }; - return p; -}, {}); +const config = { + ethereum: { tokenSafe: '0xc2e0f31d739cb3153ba5760a203b3bd7c27f0d7a', tokenList: '0x7c0bef36e1b1cbeb1f1a5541300786a7b608aede', }, + iotex: { tokenSafe: '0xc4a29a94f12be03033daa4e6ce9b9678c26275a2', tokenList: '0x59caeb8dc448df0e070b803062cfd9351ad39390', }, + bsc: { tokenSafe: '0xFBe9A4138AFDF1fA639a8c2818a0C4513fc4CE4B', tokenList: '0x0d793F4D4287265B9bdA86b7a4083193E8743b34', }, + polygon: { tokenSafe: '0xA239F03Cda98A7d2AaAA51e7bF408e5d73399e45', tokenList: '0xDe9395d2f4940aA501f9a27B98592589D14Bb0f7', }, +} module.exports = { - ...allChains, - fetch: async () => { - const tvl = await loadTvl(); - return Object.values(tvl).reduce((acc, i) => acc + i, 0) - }, - hallmarks:[ + hallmarks: [ [1651881600, "UST depeg"], ], }; + +Object.keys(config).forEach(chain => { + const { tokenList, tokenSafe, } = config[chain] + module.exports[chain] = { + tvl: async (_0, _b, _cb, { api, }) => { + const [_, tokens] = await api.call({ abi: 'function getActiveItems(uint256 offset, uint8 limit) view returns (uint256 count, address[] items)', target: tokenList, params: [0, 99] }) + return sumTokens2({ api, tokens, owner: tokenSafe }) + } + } +}) + diff --git a/projects/maple/index.js b/projects/maple/index.js index f151ff0221..b39a42fa3b 100644 --- a/projects/maple/index.js +++ b/projects/maple/index.js @@ -66,41 +66,40 @@ async function getPoolInfo(block, api) { if (!pInfos[block]) pInfos[block] = _getPoolInfo() return pInfos[block] - async function _getPoolInfo(){ + async function _getPoolInfo() { const loanFactory = '0x1551717ae4fdcb65ed028f7fb7aba39908f6a7a6' - + const logs = await getLogs({ api, target: loanFactory, topic: "InstanceDeployed(uint256,address,bytes)", fromBlock: 16126995, }); - const proxies = logs.map(s=>"0x"+s.topics[2].slice(26, 66)) - const assets = await sdk.api2.abi.multiCall({ block, abi: abis.fundsAsset, calls: proxies, }) - return { proxies, assets, } + const proxies = logs.map(s => "0x" + s.topics[2].slice(26, 66)) + const managers = await api.multiCall({ abi: 'address:poolManager', calls: proxies }) + const assets = await api.multiCall({ block, abi: abis.fundsAsset, calls: proxies, }) + return { proxies, assets, managers } } } async function ethTvl2(_, block, _1, { api }) { - const { proxies, assets, } = await getPoolInfo(block, api) - const pools = await sdk.api2.abi.multiCall({ + const { managers, assets, } = await getPoolInfo(block, api) + const pools = await api.multiCall({ abi: abis.pool, - calls: proxies, - block, + calls: managers, }) - return sumTokens2({ block, tokensAndOwners: pools.map((o, i) => ([assets[i], o]))}) + return sumTokens2({ block, tokensAndOwners: pools.map((o, i) => ([assets[i], o])) }) } async function borrowed2(_, block, _1, { api }) { const balances = {} const { proxies, assets, } = await getPoolInfo(block, api) - const principalOut = await sdk.api2.abi.multiCall({ + const principalOut = await api.multiCall({ abi: abis.principalOut, calls: proxies, - block, }) - principalOut.forEach((val, i) => sdk.util.sumSingleBalance(balances,assets[i],val)) + principalOut.forEach((val, i) => sdk.util.sumSingleBalance(balances, assets[i], val)) return balances } @@ -119,8 +118,8 @@ module.exports = { methodology: "We count liquidity by USDC deposited on the pools through PoolFactory contract", } - -const abis ={ + +const abis = { fundsAsset: "address:fundsAsset", principalOut: "uint128:principalOut", pool: "address:pool", diff --git a/projects/pizza/index.js b/projects/pizza/index.js index 776afc57e8..8d1fd73bef 100644 --- a/projects/pizza/index.js +++ b/projects/pizza/index.js @@ -14,7 +14,9 @@ async function fetch() { module.exports = { methodology: `${lendingMarket}. Pizza TVL is achieved by making a call to its Pizza API V2.`, eos: { - fetch: eos + tvl: () => 0, }, - fetch + hallmarks: [ + [Math.floor(new Date('2023-02-16')/1e3), 'Product is winding down'], + ], } From c182205868514f6cc6975254e18d63b7882efdf1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Jun 2023 21:15:14 +0200 Subject: [PATCH 0702/1354] lint fix --- projects/defilyio/index.js | 3 ++- projects/frfi/index.js | 3 ++- projects/unipilot/index.js | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/defilyio/index.js b/projects/defilyio/index.js index c9c60aa3cb..eca2a2ca3f 100644 --- a/projects/defilyio/index.js +++ b/projects/defilyio/index.js @@ -11,9 +11,10 @@ const DFL_Harmony = ADDRESSES.arbitrum.MIM; const fetch = async () => { return 0 + /* const tvl = (await utils.fetchURL("https://api.defily.io/v1/statistics")).data .payload.totalValueLocked.total; - return tvl; + return tvl; */ }; module.exports = { diff --git a/projects/frfi/index.js b/projects/frfi/index.js index 45bfd3f1d7..275930bd8b 100644 --- a/projects/frfi/index.js +++ b/projects/frfi/index.js @@ -3,13 +3,14 @@ const { toUSDTBalances } = require("../helper/balances"); const tvl = (chain) => async () => { return {} + /* const response = await fetchURL( `https://backend-api-prod.frfi.io/autofarm?chainId=${chain}&$limit=100` ); const data = response?.data?.data; const result = data?.reduce((acc, item) => acc + (item?.strategyTVL ?? 0), 0) ?? 0; - return toUSDTBalances(result); + return toUSDTBalances(result); */ }; module.exports = { diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js index 28d98a92b1..02a667316c 100644 --- a/projects/unipilot/index.js +++ b/projects/unipilot/index.js @@ -116,7 +116,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { api.add(vaults[v].token1Address, i.fees1) }) return sumTokens2({ api, ownerTokens }) -}; +} module.exports = { doublecounted: true, From 72d46d3d3327968daa81e14d823563d4c2b58417 Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:17:04 -0400 Subject: [PATCH 0703/1354] abcdefx: adjust for stableswap pools (#6517) --- projects/ABCDEFX/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ABCDEFX/index.js b/projects/ABCDEFX/index.js index c73ee2eb5c..1623b148fa 100644 --- a/projects/ABCDEFX/index.js +++ b/projects/ABCDEFX/index.js @@ -7,5 +7,5 @@ module.exports = { }; chains.forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: '0x01F43D2A7F4554468f77e06757e707150e39130c', useDefaultCoreAssets: true, }) } + module.exports[chain] = { tvl: getUniTVL({ factory: '0x01F43D2A7F4554468f77e06757e707150e39130c', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'ABcDeFx.LP' }) } }) From 9ba291dbc41d27f1c1bc9330dd30a4251fd1afc4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 00:51:26 +0530 Subject: [PATCH 0704/1354] Tegisto (#6518) * Update Tegisto to include DEX pools * minor fix --------- Co-authored-by: Aaron Hunt --- projects/tegisto/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/tegisto/index.js b/projects/tegisto/index.js index 24d20a58d5..11032fd500 100644 --- a/projects/tegisto/index.js +++ b/projects/tegisto/index.js @@ -1,8 +1,9 @@ const { staking } = require("../helper/staking") +const { getUniTVL } = require("../helper/unknownTokens") module.exports = { kava: { - tvl: () => 0, + tvl: getUniTVL({ chain: 'kava', factory: '0x07fA706528c0bb721327798B5686B620BCcf5b99', useDefaultCoreAssets: true, fetchBalances: true }), staking: staking('0x744Dd9f79b80437a9e5eb0292128045F51C48b6d', '0x87F1E00d6bcD3712031e5edD26DFcdB0FEd35D20', undefined, 'tegisto', 18), } } \ No newline at end of file From 25e28845764f866d086fb86f150b639c7d5df64c Mon Sep 17 00:00:00 2001 From: Roy Date: Thu, 8 Jun 2023 14:22:46 -0500 Subject: [PATCH 0705/1354] feat: add ve_zoo and x_zoo contracts for staking (#6516) --- projects/zoodao/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js index 671e8d369e..5da95abe17 100644 --- a/projects/zoodao/index.js +++ b/projects/zoodao/index.js @@ -1,11 +1,19 @@ const ADDRESSES = require('../helper/coreAssets.json') const battleArenaAbi = require('./abis/battle-arena-abi.json'); -const { staking } = require('../helper/staking'); +const { stakings } = require('../helper/staking'); const VAULT_CONTRACT = '0x1C55649f73CDA2f72CEf3DD6C5CA3d49EFcF484C'; const BATTLE_ARENA_CONTRACT = '0x0ADeb5A930875606F325e114FD5147148e042828'; const FRAX_TOKEN = ADDRESSES.moonbeam.FRAX const ZOODAO_TOKEN = "0x7cd3e6e1A69409deF0D78D17a492e8e143F40eC5" +const VE_ZOO_CONTRACT = "0x1bd77c71568f723d6906ea80fee45f1f52834c15" +const X_ZOO_CONTRACT = "0x1c535c24f911a8741018cf09f3030ab6e1b910cf" + +const stakingContracts = [ + BATTLE_ARENA_CONTRACT, + VE_ZOO_CONTRACT, + X_ZOO_CONTRACT +]; async function tvl(_, _1, _2, { api }) { const vaultStablecoinStaked = await api.call({ abi: 'erc20:balanceOf', target: VAULT_CONTRACT, params: [BATTLE_ARENA_CONTRACT] }); @@ -19,6 +27,6 @@ module.exports = { methodology: "Counts the supplied value of FRAX and ZOO through ZooDAO's contracts", moonbeam: { tvl, - staking: staking(BATTLE_ARENA_CONTRACT, ZOODAO_TOKEN) + staking: stakings(stakingContracts, ZOODAO_TOKEN) }, }; From a987616be53c0470a2315c0cd0318505d173826a Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 8 Jun 2023 20:24:06 +0100 Subject: [PATCH 0706/1354] equilibria (#6514) * equilibria * remove comment * fix lint * lint error --- projects/equilibria/index.js | 96 ++++++++++++++++++++++++++++++++++++ projects/penpie/index.js | 1 + projects/unipilot/index.js | 2 +- 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 projects/equilibria/index.js diff --git a/projects/equilibria/index.js b/projects/equilibria/index.js new file mode 100644 index 0000000000..eef4aa7849 --- /dev/null +++ b/projects/equilibria/index.js @@ -0,0 +1,96 @@ +const sdk = require("@defillama/sdk"); +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const contracts = { + ethereum: { + boosterAddress: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", + staker: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3", + eqbAddress: "0xfE80D611c6403f70e5B1b9B722D2B3510B740B2B", + eqbRewardsAddress: "0xd8967B2B15b3CDF96039b7407813B4037f73ec27", + pendleAddress: "0x808507121b80c02388fad14726482e061b8da827", + }, + arbitrum: { + boosterAddress: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF", + staker: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3", + eqbRewardsAddress: "0x70f61901658aAFB7aE57dA0C30695cE4417e72b9", + pendleAddress: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", + }, +}; + +async function tvl(chain, block) { + const balances = {}; + + if (chain === "ethereum") { + const pendleLocked = await sdk.api2.abi.call({ + target: "0x4f30A9D41B80ecC5B94306AB4364951AE3170210", + params: contracts[chain].staker, + abi: "erc20:balanceOf", + block, + }); + sdk.util.sumSingleBalance( + balances, + contracts[chain].pendleAddress, + pendleLocked + ); + } + + const poolLength = await sdk.api2.abi.call({ + chain, + block, + target: contracts[chain].boosterAddress, + abi: "function poolLength() view returns (uint256)", + }); + + const poolInfos = await Promise.all( + Array.from(Array(Number(poolLength)).keys()).map((params) => + sdk.api2.abi.call({ + chain, + block, + target: contracts[chain].boosterAddress, + params, + abi: "function poolInfo(uint256) view returns (address market, address token, address rewardPool, bool shutdown)", + }) + ) + ); // multicall fails here + + const { output: gaugeBalances } = await sdk.api.abi.multiCall({ + abi: "erc20:balanceOf", + calls: Array.from(new Set(poolInfos.map((p) => p.market))).map((i) => ({ + target: i, + params: contracts[chain].staker, + })), + chain, + block, + }); + + gaugeBalances.forEach(({ output, input }, i) => + sdk.util.sumSingleBalance( + balances, + chain + + ":" + + poolInfos.find( + (p) => p.market.toLowerCase() === input.target.toLowerCase() + ).market, + output + ) + ); + + return balances; +} + +const chains = ["ethereum", "arbitrum"]; + +module.exports = { + doublecounted: true, +}; + +chains.forEach((chain) => { + module.exports[chain] = { + tvl: async (_, _b, { [chain]: block }) => tvl(chain, block), + }; +}); + +module.exports.ethereum.staking = sumTokensExport({ + owner: contracts.ethereum.eqbRewardsAddress, + tokens: [contracts.ethereum.eqbAddress], +}); diff --git a/projects/penpie/index.js b/projects/penpie/index.js index 4162298d21..a353314614 100644 --- a/projects/penpie/index.js +++ b/projects/penpie/index.js @@ -42,6 +42,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { Object.keys(config).forEach((chain) => { const { masterPenpie, mPENDLE } = config[chain]; module.exports[chain] = { + doublecounted: true, tvl: tvl, staking: staking(masterPenpie, mPENDLE), }; diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js index 02a667316c..9ff6ea60d9 100644 --- a/projects/unipilot/index.js +++ b/projects/unipilot/index.js @@ -1,6 +1,6 @@ const sdk = require("@defillama/sdk"); const { getLogs } = require("../helper/cache/getLogs"); -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); const getPositionDetails = "function getPositionDetails() returns (uint256 amount0, uint256 amount1, uint256 fees0, uint256 fees1, uint128 baseLiquidity, uint128 rangeLiquidity)"; From 7841ec305b69436f8bcc14f0dc91f35f24222d1a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 9 Jun 2023 04:27:39 +0100 Subject: [PATCH 0707/1354] export thunderpokt tvl under pokt network --- projects/helper/chains.json | 1 + projects/thunderpokt/index.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index b5e031952c..185a09e2ee 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -143,6 +143,7 @@ "palm", "parallel", "persistence", + "pokt", "polis", "polkadot", "polygon", diff --git a/projects/thunderpokt/index.js b/projects/thunderpokt/index.js index abc2278808..11a62a118e 100644 --- a/projects/thunderpokt/index.js +++ b/projects/thunderpokt/index.js @@ -21,7 +21,7 @@ async function tvl(timestamp, ethBlock, chainBlocks) { module.exports = { methodology: 'tPOKT is backed 1:1 by POKT. Total supply of tPOKT is pulled and multiplied by POKT price to get the TVL', - polygon: { + pokt: { tvl } } \ No newline at end of file From b0b0b447bbe53c9553a7266d89c928888f968765 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 9 Jun 2023 04:39:00 +0100 Subject: [PATCH 0708/1354] add pulse --- projects/genius/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/genius/index.js b/projects/genius/index.js index ceb96c3284..ea96901d1a 100644 --- a/projects/genius/index.js +++ b/projects/genius/index.js @@ -45,6 +45,10 @@ const STABILITY_POOL_COLLATERAL_ADDRESSES = { "polygon": { "DAI": ADDRESSES.polygon.DAI, "MATIC": nullAddress, + }, + "pulse": { + "DAI": ADDRESSES.pulse.DAI, + "PLS": nullAddress } }; @@ -96,5 +100,9 @@ TVL: counts total number of value locked of all collateral tokens and native in avax: { staking, tvl - } + }, + pulse: { + staking, + tvl + }, }; From 7f5c02f56bc40a33471ce1b97c3904dd6c5fe481 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 9 Jun 2023 05:01:16 +0100 Subject: [PATCH 0709/1354] export matic staked on ethereum as ethereum tvl --- projects/stafi/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/stafi/index.js b/projects/stafi/index.js index 3e44113aab..da7757101b 100644 --- a/projects/stafi/index.js +++ b/projects/stafi/index.js @@ -57,15 +57,15 @@ function chainTvl(chain){ module.exports = { timetravel: true, ethereum: { - tvl: ethereum, + tvl: sdk.util.sumChainTvls([chainTvl('polygon'), ethereum]), staking: getTvlFunction("RFIS", "stafi") }, bsc: { tvl: chainTvl('bsc') - }, + },/* polygon: { - tvl: chainTvl('polygon') - }, + tvl: chainTvl('polygon') //exported along with ethereum tvl since MATIC's are staked on the Ethereum Mainnet + },*/ cosmos: { tvl: sdk.util.sumChainTvls([chainTvl('cosmos'), chainTvl('carbon'), chainTvl('chihuahua'), chainTvl('irisnet')]) }, From ab1e3b86c90814eff899055ce74c609fe12d2f72 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 9 Jun 2023 05:02:31 +0100 Subject: [PATCH 0710/1354] flag as double-counted --- projects/revert-v3-staker/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/revert-v3-staker/index.js b/projects/revert-v3-staker/index.js index 836fd83f96..ac1fca1137 100644 --- a/projects/revert-v3-staker/index.js +++ b/projects/revert-v3-staker/index.js @@ -7,6 +7,7 @@ const config = { } module.exports = { + doublecounted: true }; Object.keys(config).forEach(chain => { From 95596e4633cbafdfb1e003b46e248389574e20c8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 14:21:16 +0530 Subject: [PATCH 0711/1354] Dhedge (#6521) * Remove obsolete code from Toros adapter * Revamp dHEDGE adapter * Add hallmarks for Toros * minor refactor --------- Co-authored-by: Denis Ignatovich --- projects/dhedge.js | 139 ++++++++++++++++++++++++--------------- projects/toros/abis.js | 6 +- projects/toros/config.js | 10 --- projects/toros/index.js | 27 ++++---- 4 files changed, 105 insertions(+), 77 deletions(-) diff --git a/projects/dhedge.js b/projects/dhedge.js index b130308f8b..85354f39c8 100644 --- a/projects/dhedge.js +++ b/projects/dhedge.js @@ -1,64 +1,99 @@ -const utils = require('./helper/utils'); -const { GraphQLClient, } = require('graphql-request'); - -/* * * * * * * * - * ==> Correct adapter needs to be created. - * - *****************/ - -const STATS_URL = 'https://us-central1-dh-alpha.cloudfunctions.net/stats'; - -async function fetch() { - var totalTvl = await utils.fetchURL(STATS_URL); - return totalTvl.data.protocolStats.totalAssetUnderManagement; -} - -async function ethereum() { - var totalTvl = await utils.fetchURL(STATS_URL); - return totalTvl.data.protocolStats.ethereum.totalAumEthereum; -} - -async function polygon() { - var totalTvl = await utils.fetchURL(STATS_URL); - return totalTvl.data.protocolStats.polygon.totalAumPolygon; -} - -async function optimism() { - var totalTvl = await utils.fetchURL(STATS_URL); - return totalTvl.data.protocolStats.optimism.totalAumOptimism; -} - -async function staking() { - var endpoint = 'https://api.thegraph.com/subgraphs/name/dhedge/dht-staking'; - var graphQLClient = new GraphQLClient(endpoint); - - var query = ` - { - stakingContracts { - id - balance - } - } - `; - - const data = await graphQLClient.request(query); - const balance = data.stakingContracts[0].balance; +/* *** Common config *** */ +const { sliceIntoChunks } = require("@defillama/sdk/build/util"); + +const DHEDGE_FACTORY_PROXIES = { + ethereum: "0x03D20ef9bdc19736F5e8Baf92D02C8661a5941F7", + polygon: "0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0", + optimism: "0x5e61a079A178f0E5784107a4963baAe0c5a680c6", +}; + +/* *** dHEDGE V1 *** */ + +const DHEDGE_V1_VAULTS_QUANTITY_ABI = + "function deployedFundsLength() view returns (uint256)"; +const DHEDGE_V1_VAULTS_ABI = + "function deployedFunds(uint256) view returns (address)"; +const DHEDGE_V1_TVL_ABI = "function totalFundValue() view returns (uint256)"; + +const getV1TotalValueLocked = async (_, __, ___, { api, chain }) => { + const target = DHEDGE_FACTORY_PROXIES[chain]; + const vaults = await api.fetchList({ lengthAbi: DHEDGE_V1_VAULTS_QUANTITY_ABI, itemAbi: DHEDGE_V1_VAULTS_ABI, target, }); + const vaultsValues = await api.multiCall({ abi: DHEDGE_V1_TVL_ABI, calls: vaults, permitFailure: true, }); + const totalValueLocked = vaultsValues.reduce((acc, value) => acc + +(value ?? 0), 0); return { - 'dhedge-dao': balance / 10 ** 18 + tether: totalValueLocked / 1e18, + }; +}; + +/* *** dHEDGE V2 *** */ + +const DHEDGE_V2_VAULTS_ABI = + "function getDeployedFunds() view returns (address[])"; +const DHEDGE_V2_VAULT_SUMMARY_ABI = + "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; + +const tvl = async (_, __, ___, { api, chain }) => { + const target = DHEDGE_FACTORY_PROXIES[chain]; + const vaults = await api.call({ abi: DHEDGE_V2_VAULTS_ABI, target, }) + let chunkSize = chain === 'optimism' ? 42 : 250 // Optimism has a lower gas limit + const vaultChunks = sliceIntoChunks(vaults, chunkSize); + const summaries = []; + for (const chunk of vaultChunks) { + summaries.push(...await api.multiCall({ abi: DHEDGE_V2_VAULT_SUMMARY_ABI, calls: chunk, permitFailure: true, })) } -} + const totalValueLocked = summaries.reduce((acc, vault) => acc + +(vault?.totalFundValue ?? 0), 0); + return { + tether: totalValueLocked / 1e18, + }; +}; + +/* *** DHT Staking V1 *** */ + +const DHT_STAKING_V1_PROXY = "0xEe1B6b93733eE8BA77f558F8a87480349bD81F7f"; +const DHT_ON_MAINNET = "0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84"; + +const getV1StakingTotalAmount = async (_, __, ___, { api }) => ({ + [DHT_ON_MAINNET]: await api.call({ + abi: "erc20:balanceOf", + target: DHT_ON_MAINNET, + params: [DHT_STAKING_V1_PROXY], + }), +}); + +/* *** DHT Staking V2 *** */ + +const DHT_STAKED_ABI = "function dhtStaked() view returns (uint256)"; +const DHT_STAKING_V2_PROXY = "0xf165ca3d75120d817b7428eef8c39ea5cb33b612"; +const DHT_ON_OPTIMISM = "optimism:0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151"; + +const getV2StakingTotalAmount = async (_, __, ___, { api }) => ({ + [DHT_ON_OPTIMISM]: await api.call({ + abi: DHT_STAKED_ABI, + target: DHT_STAKING_V2_PROXY, + }), +}); + +/* *** Exports *** */ module.exports = { ethereum: { - fetch: ethereum, - staking, + tvl: getV1TotalValueLocked, + staking: getV1StakingTotalAmount, }, polygon: { - fetch: polygon, + tvl, }, optimism: { - fetch: optimism, + tvl, + staking: getV2StakingTotalAmount, }, - fetch, + misrepresentedTokens: true, + methodology: "Aggregates total value of each dHEDGE vault ever created", + hallmarks: [ + [1627693200, "dHEDGE V2 Launch"], + [1639616400, "Optimism Launch"], + [1674003600, "Optimism Incentives Start"], + [1679965200, "DHT Staking V2 Release"], + ], }; diff --git a/projects/toros/abis.js b/projects/toros/abis.js index 349171656e..938c9930d5 100644 --- a/projects/toros/abis.js +++ b/projects/toros/abis.js @@ -1,6 +1,8 @@ -const DHEDGE_FACTORY_ABI = 'function getManagedPools(address manager) view returns (address[] managedPools)'; +const DHEDGE_FACTORY_ABI = + "function getManagedPools(address manager) view returns (address[] managedPools)"; -const TOROS_POOL_ABI = 'function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue, address manager, string managerName, uint256 creationTime, bool privatePool, uint256 performanceFeeNumerator, uint256 managerFeeNumerator, uint256 managerFeeDenominator, uint256 exitFeeNumerator, uint256 exitFeeDenominator))' +const TOROS_POOL_ABI = + "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; module.exports = { DHEDGE_FACTORY_ABI, diff --git a/projects/toros/config.js b/projects/toros/config.js index ecc5b3a2c6..b914d15c4c 100644 --- a/projects/toros/config.js +++ b/projects/toros/config.js @@ -1,21 +1,11 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { - transformPolygonAddress, - transformOptimismAddress, -} = require("../helper/portedTokens"); - const CONFIG_DATA = { polygon: { - transformAddress: transformPolygonAddress, dhedgeFactory: "0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0", torosMultisigManager: "0x090e7fbd87a673ee3d0b6ccacf0e1d94fb90da59", - daiToken: ADDRESSES.polygon.DAI, }, optimism: { - transformAddress: transformOptimismAddress, dhedgeFactory: "0x5e61a079A178f0E5784107a4963baAe0c5a680c6", torosMultisigManager: "0x813123a13d01d3f07d434673fdc89cbba523f14d", - daiToken: ADDRESSES.optimism.DAI, }, }; diff --git a/projects/toros/index.js b/projects/toros/index.js index 8b25bde76e..93b142fa67 100644 --- a/projects/toros/index.js +++ b/projects/toros/index.js @@ -1,27 +1,27 @@ - const { DHEDGE_FACTORY_ABI, TOROS_POOL_ABI } = require("./abis"); const { CONFIG_DATA } = require("./config"); async function tvl(_, _b, _cb, { api, chain }) { - const { dhedgeFactory, torosMultisigManager, } = CONFIG_DATA[chain]; + const { dhedgeFactory, torosMultisigManager } = CONFIG_DATA[chain]; - let pools = await api.call({ + const pools = await api.call({ abi: DHEDGE_FACTORY_ABI, target: dhedgeFactory, params: [torosMultisigManager], - }) - - pools = pools.filter(i => i.toLowerCase() !== '0x44Ca2d499E6254DfDc17fdef8C23e7283e7c24e4'.toLowerCase()) + }); const poolSummaries = await api.multiCall({ abi: TOROS_POOL_ABI, - calls: pools - }) + calls: pools, + }); - const totalValue = poolSummaries.reduce((acc, i) => acc + +i.totalFundValue, 0) + const totalValue = poolSummaries.reduce( + (acc, i) => acc + +i.totalFundValue, + 0 + ); return { - tether: totalValue/1e18 + tether: totalValue / 1e18, }; } @@ -30,11 +30,12 @@ module.exports = { misrepresentedTokens: true, start: 1627776000, // Sunday, August 1, 2021 12:00:00 AM methodology: - "Aggregates total value of each Toros product both on Polygon and Optimism", + "Aggregates total value of each Toros vault both on Polygon and Optimism", polygon: { - tvl + tvl, }, optimism: { - tvl + tvl, }, + hallmarks: [[1674003600, "Optimism Incentives Start"]], }; From 7f5f78d8f49f86bd3165efdd5c5ea621954b67f7 Mon Sep 17 00:00:00 2001 From: flisko Date: Fri, 9 Jun 2023 10:54:15 +0200 Subject: [PATCH 0712/1354] feat: add beamswap v3 (#6520) - Add Beamswap V3 tracking --- projects/beamswap-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/beamswap-v3/index.js diff --git a/projects/beamswap-v3/index.js b/projects/beamswap-v3/index.js new file mode 100644 index 0000000000..890183f7f8 --- /dev/null +++ b/projects/beamswap-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + moonbeam: { factory: '0xd118fa707147c54387b738f54838ea5dd4196e71', fromBlock: 3579833 }, +}) From e10ed688ae9f22954c0008180a3dd8379d0d9622 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Fri, 9 Jun 2023 10:27:37 +0100 Subject: [PATCH 0713/1354] pendle patch --- projects/pendle/v2.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index d0e2e47452..a6f3a7ae14 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -1,7 +1,7 @@ const contracts = require("./contracts"); const { staking } = require('../helper/staking') const { getLogs } = require('../helper/cache/getLogs') - +const steth = "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"; const config = { ethereum: { factory: '0x27b1dacd74688af24a64bd3c9c1b143118740784', fromBlock: 16032059 }, arbitrum: { factory: '0xf5a7de2d276dbda3eef1b62a9e718eff4d29ddc8', fromBlock: 62979673 }, @@ -39,7 +39,13 @@ Object.keys(config).forEach(chain => { let value = supply[i] * (10 ** (v.decimals - decimals[i])) api.add(v.uAsset, value) }) - return api.getBalances() + let balances = api.getBalances(); + const bridged = `arbitrum:${steth}`; + if (bridged in balances) { + balances[steth] = balances[bridged]; + delete balances[bridged]; + } + return balances; } } }) From d8012693baf4a821b5c3c17a0e3ccba07cf45be3 Mon Sep 17 00:00:00 2001 From: eZKalibur <130600962+eZKalibur@users.noreply.github.com> Date: Fri, 9 Jun 2023 15:55:48 +0200 Subject: [PATCH 0714/1354] ezkalibur (#6523) * ezkalibur * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ezkalibur/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/ezkalibur/index.js diff --git a/projects/ezkalibur/index.js b/projects/ezkalibur/index.js new file mode 100644 index 0000000000..23958c76c1 --- /dev/null +++ b/projects/ezkalibur/index.js @@ -0,0 +1,9 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + start: 1686309181, + era: { + tvl: getUniTVL({ factory: '0x15C664A62086c06D43E75BB3fddED93008B8cE63', useDefaultCoreAssets: true,fetchBalances: true, }), + }, +}; \ No newline at end of file From e1530a3014931c50e881dfb5af20826bd5677903 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 16:38:43 +0200 Subject: [PATCH 0715/1354] kujira ghost: show borrowed tvl --- projects/ghost/index.js | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/projects/ghost/index.js b/projects/ghost/index.js index 1e89952f3b..00c5ad52e2 100644 --- a/projects/ghost/index.js +++ b/projects/ghost/index.js @@ -6,27 +6,34 @@ const { async function tvl(_, _1, _2, { api }) { const chain = api.chain const vaultContracts = await queryContracts({ chain, codeId: 106 }); - const vaultDeposited = (await Promise.all( - vaultContracts.map(contract => queryContract({ contract, chain, data: { status: {} } })) - )).map(i => i.deposited) - const vaultTokens = (await Promise.all( - vaultContracts.map(contract => queryContract({ contract, chain, data: { config: {} } })) - )).map(i => i.denom) - api.addTokens(vaultTokens, vaultDeposited) - const marketContracts = await queryContracts({ chain, codeId: 113 }); - const marketDeposited = (await Promise.all( - marketContracts.map(contract => queryContract({ contract, chain, data: { status: {} } })) - )).map(i => i.deposited) - const marketTokens = (await Promise.all( - marketContracts.map(contract => queryContract({ contract, chain, data: { config: {} } })) - )).map(i => i.collateral_denom) - api.addTokens(marketTokens, marketDeposited) + for (const contract of vaultContracts) { + const { deposited, borrowed } = await queryContract({ contract, chain, data: { status: {} } }) + const { denom } = await queryContract({ contract, chain, data: { config: {} } }) + api.add(denom, deposited - borrowed) + } + + for (const contract of marketContracts) { + const { deposited } = await queryContract({ contract, chain, data: { status: {} } }) + const { collateral_denom } = await queryContract({ contract, chain, data: { config: {} } }) + api.add(collateral_denom, deposited) + } +} + +async function borrowed(_, _1, _2, { api }) { + const chain = api.chain + const vaultContracts = await queryContracts({ chain, codeId: 106 }); + for (const contract of vaultContracts) { + const { borrowed } = await queryContract({ contract, chain, data: { status: {} } }) + const { denom } = await queryContract({ contract, chain, data: { config: {} } }) + api.add(denom, borrowed) + } } module.exports = { timetravel: false, kujira: { tvl, + borrowed, }, }; From 230260b647150bc7b5c7a58d0f0315f9c2525c43 Mon Sep 17 00:00:00 2001 From: Richard Nguyen Date: Fri, 9 Jun 2023 22:58:13 +0700 Subject: [PATCH 0716/1354] update Minswap TVL calculation (#6524) --- projects/minswap/index.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/projects/minswap/index.js b/projects/minswap/index.js index 3ade807887..4f0068244c 100644 --- a/projects/minswap/index.js +++ b/projects/minswap/index.js @@ -1,14 +1,20 @@ const { getAdaInAddress } = require("../helper/chain/cardano"); +const axios = require("axios"); async function tvl() { - const liquidityPoolLocked = await getAdaInAddress("addr1z8snz7c4974vzdpxu65ruphl3zjdvtxw8strf2c2tmqnxz2j2c79gy9l76sdg0xwhd7r0c0kna0tycz4y5s6mlenh8pq0xmsha") - const batchOrderLocked = - (await getAdaInAddress( - "addr1wxn9efv2f6w82hagxqtn62ju4m293tqvw0uhmdl64ch8uwc0h43gt" - )) + - (await getAdaInAddress( - "addr1zxn9efv2f6w82hagxqtn62ju4m293tqvw0uhmdl64ch8uw6j2c79gy9l76sdg0xwhd7r0c0kna0tycz4y5s6mlenh8pq6s3z70" - )); + const res = await axios.get("https://api-mainnet-prod.minswap.org/defillama/dex-addresses") + const poolAddresses = res.data.pools + const orderAddresses = res.data.orders + let liquidityPoolLocked = 0 + for (const addr of poolAddresses) { + const adaLocked = await getAdaInAddress(addr) + liquidityPoolLocked += adaLocked + } + let batchOrderLocked = 0 + for (const addr of orderAddresses) { + const adaLocked = await getAdaInAddress(addr) + batchOrderLocked += adaLocked + } return { cardano: (liquidityPoolLocked * 2) + batchOrderLocked, }; From d674cf280bef27b003dfbb79c3ffc902e30757ac Mon Sep 17 00:00:00 2001 From: Iwooo21 <98951143+Iwooo21@users.noreply.github.com> Date: Fri, 9 Jun 2023 18:00:55 +0200 Subject: [PATCH 0717/1354] Add TVL for Milkomeda Asset's Consolidation Contracts (#6525) Co-authored-by: IW021 <98951143+IW021@users.noreply.github.com> --- projects/milkomeda-macc/abi.json | 3 +++ projects/milkomeda-macc/index.js | 44 ++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 projects/milkomeda-macc/abi.json create mode 100644 projects/milkomeda-macc/index.js diff --git a/projects/milkomeda-macc/abi.json b/projects/milkomeda-macc/abi.json new file mode 100644 index 0000000000..f6a1957f9f --- /dev/null +++ b/projects/milkomeda-macc/abi.json @@ -0,0 +1,3 @@ +{ + "getAllFragmentedTokens" : "address[]:getAllFragmentedTokens" +} \ No newline at end of file diff --git a/projects/milkomeda-macc/index.js b/projects/milkomeda-macc/index.js new file mode 100644 index 0000000000..6a71e4111b --- /dev/null +++ b/projects/milkomeda-macc/index.js @@ -0,0 +1,44 @@ +const sdk = require('@defillama/sdk'); +const abi = require("./abi.json"); + +const TokenMerger = '0x36A06C470342Fc3443d768a9c85Aa43985D82219'; + + +async function tvl(chain, chainBlocks) { + const balances = {}; + + const fragmentedTokens = await sdk.api.abi.call({ + abi: abi.getAllFragmentedTokens, + target: TokenMerger, + params: [], + chain: chain, + block: chainBlocks[chain], + }); + + for (const fragmentedToken of fragmentedTokens.output) { + const fragmentedTokenBalance = await sdk.api.erc20.balanceOf({ + target: fragmentedToken, + owner: TokenMerger, + chain: chain, + block: chainBlocks[chain], + }); + + sdk.util.sumSingleBalance( + balances, + fragmentedToken, + fragmentedTokenBalance.output, + chain + ); + } + + return balances; + } + +module.exports = { + methodology: 'Counts the total balance of Fragmented tokens held in the Token Merger contract on Milkomeda C1 MACC.', + milkomeda: { + start: 0, + tvl: (timestamp, block, chainBlocks) => tvl('milkomeda', chainBlocks) + }, +}; + From c05b307abb27037e1f2955b543b71354165fd34e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 18:04:56 +0200 Subject: [PATCH 0718/1354] minor fix --- projects/milkomeda-macc/index.js | 40 +++++--------------------------- projects/minswap/index.js | 8 +++---- 2 files changed, 10 insertions(+), 38 deletions(-) diff --git a/projects/milkomeda-macc/index.js b/projects/milkomeda-macc/index.js index 6a71e4111b..2a09134156 100644 --- a/projects/milkomeda-macc/index.js +++ b/projects/milkomeda-macc/index.js @@ -1,44 +1,16 @@ -const sdk = require('@defillama/sdk'); const abi = require("./abi.json"); - +const { sumTokens2 } = require('../helper/unwrapLPs') const TokenMerger = '0x36A06C470342Fc3443d768a9c85Aa43985D82219'; - -async function tvl(chain, chainBlocks) { - const balances = {}; - - const fragmentedTokens = await sdk.api.abi.call({ - abi: abi.getAllFragmentedTokens, - target: TokenMerger, - params: [], - chain: chain, - block: chainBlocks[chain], - }); - - for (const fragmentedToken of fragmentedTokens.output) { - const fragmentedTokenBalance = await sdk.api.erc20.balanceOf({ - target: fragmentedToken, - owner: TokenMerger, - chain: chain, - block: chainBlocks[chain], - }); - - sdk.util.sumSingleBalance( - balances, - fragmentedToken, - fragmentedTokenBalance.output, - chain - ); - } - - return balances; - } +async function tvl(_, _1, _2, { api }) { + const tokens = await api.call({ abi: abi.getAllFragmentedTokens, target: TokenMerger }) + return sumTokens2({ api, owner: TokenMerger, tokens, }) +} module.exports = { methodology: 'Counts the total balance of Fragmented tokens held in the Token Merger contract on Milkomeda C1 MACC.', milkomeda: { - start: 0, - tvl: (timestamp, block, chainBlocks) => tvl('milkomeda', chainBlocks) + tvl, }, }; diff --git a/projects/minswap/index.js b/projects/minswap/index.js index 4f0068244c..18c537ae71 100644 --- a/projects/minswap/index.js +++ b/projects/minswap/index.js @@ -1,10 +1,10 @@ const { getAdaInAddress } = require("../helper/chain/cardano"); -const axios = require("axios"); +const { getConfig } = require('../helper/cache') async function tvl() { - const res = await axios.get("https://api-mainnet-prod.minswap.org/defillama/dex-addresses") - const poolAddresses = res.data.pools - const orderAddresses = res.data.orders + const res = await getConfig("minswap", "https://api-mainnet-prod.minswap.org/defillama/dex-addresses") + const poolAddresses = res.pools + const orderAddresses = res.orders let liquidityPoolLocked = 0 for (const addr of poolAddresses) { const adaLocked = await getAdaInAddress(addr) From b94453def36497dabbbba4e0d30054508292b386 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 18:32:44 +0200 Subject: [PATCH 0719/1354] disable solv v3 earn tvl --- projects/solv-protocol/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/solv-protocol/index.js b/projects/solv-protocol/index.js index 5978e4fb1f..50b69cfc99 100644 --- a/projects/solv-protocol/index.js +++ b/projects/solv-protocol/index.js @@ -18,7 +18,7 @@ async function tvl() { const chainId = api.getChainId() const tokens = await tokenList(chainId); await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) - await graphEarn(api) + // await graphEarn(api) } async function graphEarn(api) { From e947f319805adeb1345251cb9de44a15b0f05d6e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 19:24:26 +0200 Subject: [PATCH 0720/1354] add sudoswap v2 --- projects/dhedge.js | 2 +- projects/sudoswap-v2/index.js | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 projects/sudoswap-v2/index.js diff --git a/projects/dhedge.js b/projects/dhedge.js index 85354f39c8..e4364d3f88 100644 --- a/projects/dhedge.js +++ b/projects/dhedge.js @@ -36,7 +36,7 @@ const DHEDGE_V2_VAULT_SUMMARY_ABI = const tvl = async (_, __, ___, { api, chain }) => { const target = DHEDGE_FACTORY_PROXIES[chain]; const vaults = await api.call({ abi: DHEDGE_V2_VAULTS_ABI, target, }) - let chunkSize = chain === 'optimism' ? 42 : 250 // Optimism has a lower gas limit + let chunkSize = chain === 'optimism' ? 42 : 51 // Optimism has a lower gas limit const vaultChunks = sliceIntoChunks(vaults, chunkSize); const summaries = []; for (const chunk of vaultChunks) { diff --git a/projects/sudoswap-v2/index.js b/projects/sudoswap-v2/index.js new file mode 100644 index 0000000000..35a8b732f3 --- /dev/null +++ b/projects/sudoswap-v2/index.js @@ -0,0 +1,23 @@ +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') + +async function tvl(_, _b, _cb, { api, }) { + const multicallAddy = '0xca11bde05977b3631167028862be2a173976ca11' + const logs = await getLogs({ + api, + target: '0xA020d57aB0448Ef74115c112D18a9C231CC86000', + topics: ['0x2966b6b401975e778520aec46cbefbe73799119a5670feda3e8f884c7c3ffb11'], + eventAbi: 'event NewERC1155Pair (address indexed pool, uint256 initialBalance)', + onlyArgs: true, + fromBlock: 17309203, + }) + const pools = logs.map(log => log.pool) + const nfts = await api.multiCall({ abi: 'address:nft', calls: pools}) + const ethBals = await api.multiCall({ abi: 'function getEthBalance(address) view returns (uint256)', calls: pools, target: multicallAddy}) + ethBals.forEach(i => api.add(nullAddress, i)) + await sumTokens2({ api, tokensAndOwners2: [nfts, pools], permitFailure: true, }) +} + +module.exports = { + ethereum: { tvl, } +} \ No newline at end of file From cf3728d744e94f6ac1a64f75566f7abfa55da6a7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 19:29:50 +0200 Subject: [PATCH 0721/1354] fix sudoswap v2 --- projects/sudoswap-v2/index.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/projects/sudoswap-v2/index.js b/projects/sudoswap-v2/index.js index 35a8b732f3..43b20ad057 100644 --- a/projects/sudoswap-v2/index.js +++ b/projects/sudoswap-v2/index.js @@ -3,17 +3,28 @@ const { getLogs } = require('../helper/cache/getLogs') async function tvl(_, _b, _cb, { api, }) { const multicallAddy = '0xca11bde05977b3631167028862be2a173976ca11' - const logs = await getLogs({ + const logs1155 = await getLogs({ api, target: '0xA020d57aB0448Ef74115c112D18a9C231CC86000', topics: ['0x2966b6b401975e778520aec46cbefbe73799119a5670feda3e8f884c7c3ffb11'], - eventAbi: 'event NewERC1155Pair (address indexed pool, uint256 initialBalance)', + eventAbi: 'event NewERC1155Pair(address indexed pool, uint256 initialBalance)', onlyArgs: true, fromBlock: 17309203, + extraKey: 'erc1155', }) - const pools = logs.map(log => log.pool) + const logs721 = await getLogs({ + api, + target: '0xA020d57aB0448Ef74115c112D18a9C231CC86000', + topics: ['0xe8e1cee58c33f242c87d563bbc00f2ac82eb90f10a252b0ba8498ae6c1dc241a'], + eventAbi: 'event NewERC721Pair(address indexed pool, uint256[] initialIds)', + onlyArgs: true, + fromBlock: 17309203, + extraKey: 'erc721', + }) + const pools = logs721.map(i => i.pool) + const allPools = [...logs1155, ...logs721].map(log => log.pool) const nfts = await api.multiCall({ abi: 'address:nft', calls: pools}) - const ethBals = await api.multiCall({ abi: 'function getEthBalance(address) view returns (uint256)', calls: pools, target: multicallAddy}) + const ethBals = await api.multiCall({ abi: 'function getEthBalance(address) view returns (uint256)', calls: allPools, target: multicallAddy}) ethBals.forEach(i => api.add(nullAddress, i)) await sumTokens2({ api, tokensAndOwners2: [nfts, pools], permitFailure: true, }) } From 086cb5df2c143d3ac096635d7c4d5cd3e9f43ef2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Jun 2023 20:51:44 +0200 Subject: [PATCH 0722/1354] add ramses concentrated liquidity --- projects/ramses-cl/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/ramses-cl/index.js diff --git a/projects/ramses-cl/index.js b/projects/ramses-cl/index.js new file mode 100644 index 0000000000..476cff6cc3 --- /dev/null +++ b/projects/ramses-cl/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + arbitrum: { factory: '0xaa2cd7477c451e703f3b9ba5663334914763edf8', fromBlock: 90593047, }, +}) \ No newline at end of file From 7aae34fae932a14d194e77e9a33e4b2ed57f1f5a Mon Sep 17 00:00:00 2001 From: kavsky02 <95619352+kavsky02@users.noreply.github.com> Date: Fri, 9 Jun 2023 21:43:22 +0200 Subject: [PATCH 0723/1354] Add SteakHut tokens (#6527) --- .../mappings/assetToAddressMapping.json | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/projects/deltaprime/mappings/assetToAddressMapping.json b/projects/deltaprime/mappings/assetToAddressMapping.json index 420fb12593..b56e79bd9b 100644 --- a/projects/deltaprime/mappings/assetToAddressMapping.json +++ b/projects/deltaprime/mappings/assetToAddressMapping.json @@ -9,6 +9,10 @@ "PNG": "0x60781C2586D68229fde47564546784ab3fACA982", "PTP": "0x22d4002028f537599bE9f666d1c4Fa138522f9c8", "JOE": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", + "gmdUSDC": "0x33f0a866d9024d44de2E0602f4C9B94755944B6F", + "gmdWAVAX": "0x13AF25f924056d4D4668705C33aB9b70D505050e", + "gmdBTCb": "0x8fe3024351B9a51a3439183e940c2aF3994DD52F", + "gmdWETHe": "0xE28c95e9EB0f6D16b05D265cAa4BcEE9E5C2e625", "YY_AAVE_AVAX": "0xaAc0F2d0630d1D09ab2B5A400412a4840B866d95", "YY_PTP_sAVAX": "0xb8f531c0d3c53B1760bcb7F57d87762Fd25c4977", "YY_GLP": "0x9f637540149f922145c06e1aa3f38dcDc32Aff5C", @@ -26,9 +30,13 @@ "YY_TJ_AVAX_ETH_LP": "0x5219558ee591b030E075892acc41334A1694fd8A", "YY_TJ_AVAX_sAVAX_LP": "0x22EDe03f1115666CF05a4bAfafaEe8F43D42cD56", "MOO_TJ_AVAX_USDC_LP": "0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c", - "SHLB_BTC.b-AVAX_B": "0x668530302c6Ecc4eBe693ec877b79300AC72527C", - "SHLB_USDT.e-USDt_C": "0x9F44E67BA256C18411Bb041375e572E3dD11fA72", - "USDT.e": "0xc7198437980c041c805a1edcba50c1ce5db95118", - "SHLB_AVAX-USDC_B": "0x668530302c6Ecc4eBe693ec877b79300AC72527C", - "GLP": "0x9e295B5B976a184B14aD8cd72413aD846C299660" + "GLP": "0x9e295B5B976a184B14aD8cd72413aD846C299660", + "DAIe": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + "USDCe": "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", + "USDT.e": "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", + "WBTCe": "0x50b7545627a5162F82A992c33b87aDc75187B218", + "crvUSDBTCETH": "0x1daB6560494B04473A0BE3E7D83CF3Fdf3a51828", + "SHLB_AVAX-USDC_B": "0x668530302c6ecc4ebe693ec877b79300ac72527c", + "SHLB_BTC.b-AVAX_B": "0x536d7e7423e8fb799549caf574cfa12aae95ffcd", + "SHLB_USDT.e-USDt_C": "0x9f44e67ba256c18411bb041375e572e3dd11fa72" } \ No newline at end of file From 133c9b99e40435de9c46f447e25d112fe2a2a099 Mon Sep 17 00:00:00 2001 From: FroggyProtocol <135436125+FroggyProtocol@users.noreply.github.com> Date: Sat, 10 Jun 2023 20:10:38 +0800 Subject: [PATCH 0724/1354] Listing on DefiLlama (#6528) * Listing on DefiLlama * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/froggy-protocol/index.js | 17 +++++++++++++++++ projects/helper/utils.js | 1 + projects/helper/yieldHelper.js | 30 +++++++++++++++++------------- 3 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 projects/froggy-protocol/index.js diff --git a/projects/froggy-protocol/index.js b/projects/froggy-protocol/index.js new file mode 100644 index 0000000000..c7ebea44a9 --- /dev/null +++ b/projects/froggy-protocol/index.js @@ -0,0 +1,17 @@ +const { yieldHelper, } = require("../helper/yieldHelper") + +const masterchef = '0x6c8eE277A958751c97e8d0AFfEbbB8478bC755ce' +const froggy = '0x5217483171b2550C74234C583620C355b74b3095' + +module.exports = yieldHelper({ + project: 'froggy-ink', + chain: 'era', + masterchef: masterchef, + nativeToken: froggy, + abis: { + poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat)', + poolLength: 'function poolLength() view returns (uint256)', + getReservesABI: 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)', + }, + useDefaultCoreAssets: true, +}) \ No newline at end of file diff --git a/projects/helper/utils.js b/projects/helper/utils.js index c34c73af68..aa0dda93ac 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -65,6 +65,7 @@ function isLP(symbol, token, chain) { if (chain === 'harmony' && ['HLP'].includes(symbol)) return true if (chain === 'klaytn' && ['NLP'].includes(symbol)) return true if (chain === 'fantom' && ['HLP'].includes(symbol)) return true + if (chain === 'era' && symbol.includes('cSLP')) return true // for syncswap if (chain === 'songbird' && ['FLRX', 'OLP'].includes(symbol)) return true if (chain === 'arbitrum' && ['DXS', 'ZLP',].includes(symbol)) return true if (chain === 'metis' && ['NLP', 'ALP'].includes(symbol)) return true // Netswap/Agora LP Token diff --git a/projects/helper/yieldHelper.js b/projects/helper/yieldHelper.js index 479a00867c..3bfdf7dd5c 100644 --- a/projects/helper/yieldHelper.js +++ b/projects/helper/yieldHelper.js @@ -1,9 +1,8 @@ const ADDRESSES = require('./coreAssets.json') const abi = require("../tenfinance/abi.json") -const { getUniqueAddresses, log, } = require('../helper/utils') -const { getLPData, } = require('../helper/unknownTokens') -const { getChainTransform, getFixBalancesSync, } = require('../helper/portedTokens') +const { getUniqueAddresses, } = require('../helper/utils') +const { getLPData, getTokenPrices } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') const { unwrapLPsAuto } = require("./unwrapLPs") @@ -21,11 +20,12 @@ function yieldHelper({ getPoolIds, getTokens, getTokenBalances, + useDefaultCoreAssets = false, }) { blacklistedTokens = getUniqueAddresses(blacklistedTokens) - nativeTokens = getUniqueAddresses(blacklistedTokens) + if (nativeToken) nativeTokens.push(nativeToken) + nativeTokens = getUniqueAddresses(nativeTokens) if (!project) throw new Error('Missing project name') - if (nativeToken) nativeTokens = [nativeToken] async function getAllTVL(api) { const key = `${project}-${chain}-${api.block}` @@ -33,8 +33,7 @@ function yieldHelper({ return allData[key] async function _getAllTVL() { - const transform = await getChainTransform(chain) - const fixBalances = getFixBalancesSync(chain) + const transform = i => `${chain}:${i.toLowerCase()}` const balances = { tvl: {}, pool2: {}, @@ -71,7 +70,7 @@ function yieldHelper({ tokens = await getTokens({ poolInfos, api }) } else tokens = poolInfos.map(i => i.want.toLowerCase()) - const pairInfos = await getLPData({ lps: tokens, ...api }) + const pairInfos = await getLPData({ lps: tokens, ...api, abis, }) const blacklistedSet = new Set(...(blacklistedTokens.map(i => i.toLowerCase()))) tokens.forEach((token, i) => { if (nativeTokens.includes(token)) { @@ -87,19 +86,24 @@ function yieldHelper({ }) await Promise.all([ - unwrapLPsAuto({ api, balances: balances.tvl, transformAddress: transform, }), - unwrapLPsAuto({ api, balances: balances.pool2, transformAddress: transform, }), + unwrapLPsAuto({ api, balances: balances.tvl, transformAddress: transform, abis, }), + unwrapLPsAuto({ api, balances: balances.pool2, transformAddress: transform, abis, }), ]) - fixBalances(balances.tvl) - fixBalances(balances.pool2) - fixBalances(balances.staking) + const lps = Object.keys(pairInfos) + if (lps.length && useDefaultCoreAssets) { + const { updateBalances } = await getTokenPrices({ lps, ...api, abis, useDefaultCoreAssets, }) + balances.tvl = await updateBalances(balances.tvl) + balances.pool2 = await updateBalances(balances.pool2) + balances.staking = await updateBalances(balances.staking) + } return balances } } return { + misrepresentedTokens: useDefaultCoreAssets, [chain]: { tvl: async (_, _b, _cb, { api }) => (await getAllTVL(api)).tvl, pool2: async (_, _b, _cb, { api }) => (await getAllTVL(api)).pool2, From 4a322c9627b1d7fad5f8ad5edf770ffc30b2b3fd Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 12 Jun 2023 05:30:34 +0100 Subject: [PATCH 0725/1354] add staked token --- projects/ezkalibur/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/ezkalibur/index.js b/projects/ezkalibur/index.js index 23958c76c1..2b61648181 100644 --- a/projects/ezkalibur/index.js +++ b/projects/ezkalibur/index.js @@ -1,9 +1,15 @@ const { getUniTVL } = require("../helper/unknownTokens"); +const { stakingPricedLP } = require("../helper/staking"); + +const xSWORD = '0x11ef47783740B3F0c9736D54BE8eF8953C3Ead99' +const SWORD_TOKEN = '0x240f765Af2273B0CAb6cAff2880D6d8F8B285fa4' +const SWORD_WETH_LP = '0xc8b6b3a4d2d8428ef3a940eac1e32a7ddadcb0f1' module.exports = { misrepresentedTokens: true, start: 1686309181, era: { tvl: getUniTVL({ factory: '0x15C664A62086c06D43E75BB3fddED93008B8cE63', useDefaultCoreAssets: true,fetchBalances: true, }), + staking: stakingPricedLP(xSWORD,SWORD_TOKEN,'era',SWORD_WETH_LP,'weth') }, }; \ No newline at end of file From dca8fb9434ca706fa6414b10a595e6a481d05b6e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 12 Jun 2023 10:43:44 +0200 Subject: [PATCH 0726/1354] fix broken adapters --- projects/curve/index.js | 3 ++- projects/helper/cache/vestingHelper.js | 3 ++- projects/pinksale/config.js | 3 +++ projects/sturdy/index.js | 3 +++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index 9fe885a57c..665099ec94 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -171,7 +171,8 @@ async function unwrapPools({ poolList, registry, chain, block }) { } const blacklists = { - ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC', '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E'], + ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC', '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E', '0x29b41fe7d754b8b43d4060bb43734e436b0b9a33'], + arbitrum: ['0x3aef260cb6a5b469f970fae7a1e233dbd5939378'], } const config = { diff --git a/projects/helper/cache/vestingHelper.js b/projects/helper/cache/vestingHelper.js index 3fb9c113d0..f64477caf7 100644 --- a/projects/helper/cache/vestingHelper.js +++ b/projects/helper/cache/vestingHelper.js @@ -16,7 +16,8 @@ async function vestingHelper({ tokens = getUniqueAddresses(tokens) blacklist = getUniqueAddresses(blacklist) tokens = tokens.filter(t => !blacklist.includes(t)) - const chunks = sliceIntoChunks(tokens, 1000) + const chunkSize = chain === 'polygon' ? 250 : 500 // polygon has a lower gas limit + const chunks = sliceIntoChunks(tokens, chunkSize) const finalBalances = {} for (let i = 0; i < chunks.length; i++) { log('resolving for %s/%s of total tokens: %s (chain: %s)', i + 1, chunks.length, tokens.length, chain) diff --git a/projects/pinksale/config.js b/projects/pinksale/config.js index 2f7c7f02e4..1e6931cb9b 100644 --- a/projects/pinksale/config.js +++ b/projects/pinksale/config.js @@ -32,6 +32,9 @@ module.exports = { '0x33d4cC8716Beb13F814F538Ad3b2de3b036f5e2A', '0x71B5759d73262FBb223956913ecF4ecC51057641', ], + blacklist: [ + '0xd626661e2d4f93a1c4122d386fa9ea0f62b5ab0b', + ], }, polygon: { vaults: [ diff --git a/projects/sturdy/index.js b/projects/sturdy/index.js index 55d306c74b..55d9f32cb5 100644 --- a/projects/sturdy/index.js +++ b/projects/sturdy/index.js @@ -8,6 +8,9 @@ module.exports = mergeExports([ }, { misrepresentedTokens: true, + hallmarks: [ + [Math.floor(new Date('2023-06-11')/1e3), 'Protocol was hacked'], + ], ethereum: aaveV2Export('0xA422CA380bd70EeF876292839222159E41AAEe17', { useOracle: true }), fantom: aaveV2Export('0x7ff2520cd7b76e8c49b5db51505b842d665f3e9a', { useOracle: true, baseCurrency: ADDRESSES.fantom.DAI }), methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.. TVL is calculated by getting the market addresses from comptroller and calling the getCash() on-chain method to get the amount of tokens locked in each of these addresses, then we get the price of each token from coingecko. To view the Borrowed amounts along with the currently liquidity, click the 'Borrowed' check box", From d190d454a98b65e633aff51d96514a655eb0b664 Mon Sep 17 00:00:00 2001 From: lo-pawnfi Date: Mon, 12 Jun 2023 19:03:22 +0800 Subject: [PATCH 0727/1354] Add PawnFi --- projects/pawnfi-ape-staking/index.js | 26 +++++++++++++++ projects/pawnfi-lbp/index.js | 10 ++++++ projects/pawnfi-lending/index.js | 47 ++++++++++++++++++++++++++++ projects/pawnfi-nft/index.js | 32 +++++++++++++++++++ projects/pawnfi/helper/abi.json | 4 +++ projects/pawnfi/helper/config.js | 28 +++++++++++++++++ projects/pawnfi/index.js | 12 +++++++ 7 files changed, 159 insertions(+) create mode 100644 projects/pawnfi-ape-staking/index.js create mode 100644 projects/pawnfi-lbp/index.js create mode 100644 projects/pawnfi-lending/index.js create mode 100644 projects/pawnfi-nft/index.js create mode 100644 projects/pawnfi/helper/abi.json create mode 100644 projects/pawnfi/helper/config.js create mode 100644 projects/pawnfi/index.js diff --git a/projects/pawnfi-ape-staking/index.js b/projects/pawnfi-ape-staking/index.js new file mode 100644 index 0000000000..715be14330 --- /dev/null +++ b/projects/pawnfi-ape-staking/index.js @@ -0,0 +1,26 @@ +const ABI = require("../pawnfi/helper/abi.json") +const sdk = require("@defillama/sdk"); +const { ApeStakingPoolAddress } = require("../pawnfi/helper/config.js") + +module.exports = { + ethereum: { + tvl: async (_, _b, _cb, { api }) => { + const balances = {}; + + const stakedTotal = await api.multiCall({ + calls: [ + ApeStakingPoolAddress.BoundApe, + ApeStakingPoolAddress.BoundBAYC, + ApeStakingPoolAddress.BoundMAYC, + ApeStakingPoolAddress.BoundBAKC, + ], + target: ApeStakingPoolAddress.ApeCoinStaking, + abi: ABI.stakedTotal, + }) + stakedTotal.forEach((d) => + sdk.util.sumSingleBalance(balances, ApeStakingPoolAddress.APE, d, api.chain) + ); + return balances; + }, + }, +}; diff --git a/projects/pawnfi-lbp/index.js b/projects/pawnfi-lbp/index.js new file mode 100644 index 0000000000..5250e47c9b --- /dev/null +++ b/projects/pawnfi-lbp/index.js @@ -0,0 +1,10 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +module.exports = { + ethereum: { + tvl: function tvl(_, _b, _cb, { api, }) { + const owner = '0x0f41eAdEc8FA71787516CCC5CEAcBD6430848f9E' + return sumTokens2({ api, owner, resolveUniV3: true }) + } + } +}; diff --git a/projects/pawnfi-lending/index.js b/projects/pawnfi-lending/index.js new file mode 100644 index 0000000000..b435996c62 --- /dev/null +++ b/projects/pawnfi-lending/index.js @@ -0,0 +1,47 @@ +const ABI = require("../pawnfi/helper/abi.json") +const { Lending,LendCToken } = require("../pawnfi/helper/config.js") +const sdk = require("@defillama/sdk") + + +async function borrowed(timestamp, block, _, { api }) { + const tokens = [] + const bals = [] + const items = await api.call({ + abi: ABI.cTokenMetadataAll, + target: Lending, + params: [LendCToken], + }) + items.forEach((v) => { + tokens.push(v['underlyingAssetAddress']) + bals.push(v['totalBorrows']) + }) + const balances = {} + bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v, api.chain)) + return balances +} + + +async function tvl(timestamp, block, _, { api }) { + const tokens = [] + const bals = [] + const items = await api.call({ + abi: ABI.cTokenMetadataAll, + target: Lending, + params: [LendCToken], + }) + items.forEach((v) => { + tokens.push(v['underlyingAssetAddress']) + bals.push(v['totalCash']) + }) + const balances = {} + bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v, api.chain)) + return balances +} + + +module.exports = module.exports = { + ethereum: { + tvl: tvl, + borrowed: borrowed + } +} diff --git a/projects/pawnfi-nft/index.js b/projects/pawnfi-nft/index.js new file mode 100644 index 0000000000..47dea04f44 --- /dev/null +++ b/projects/pawnfi-nft/index.js @@ -0,0 +1,32 @@ +const nftsAndOwners = [ + ["0x5f0A4a59C8B39CDdBCf0C683a6374655b4f5D76e","0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"], + ["0x32EcC1de70dCeCeEB5b745e9a039a12bA6ae7F42","0xb7F7F6C52F2e2fdb1963Eab30438024864c313F6"], + ["0x27e49962E2C8Ffd7cb7b4501fc2D967a1ec2ee7d","0x790B2cF29Ed4F310bf7641f013C65D4560d28371"], + ["0x7514799CB447752D145b6D176a453F59375b2eE8","0xE012Baf811CF9c05c408e879C399960D1f305903"], + ["0x7d0B6fB139408Af77f1c5bfdc8BD9166F5901304","0x60E4d786628Fea6478F785A6d7e704777c86a7c6"], + ["0x25d6fe0d7bFB59924F08027eDA334073A552A400","0x49cF6f5d44E70224e2E23fDcdd2C053F30aDA28B"], + ["0x5eEAEF7D88D805AD080Bc6F8Fe5c22F4F0c4a7D2","0xED5AF388653567Af2F388E6224dC7C4b3241C544"], + ["0x23012599f9ABBA61Cb1A62D3785af7E434F692C6","0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623"], +] + +module.exports = { + ethereum: { + tvl: async function tvl(_, _b, _cb, { api, }) { + + const result = await api.multiCall({ + calls: nftsAndOwners.map(([owner,nft]) => ({ + target: nft, + params: [owner], + })), + abi: "function balanceOf(address account) view returns (uint256)", + }) + + const balances = [] + nftsAndOwners.forEach((item,index)=>{ + balances[item[1]] = result[index] + }) + + return balances; + } + } +} diff --git a/projects/pawnfi/helper/abi.json b/projects/pawnfi/helper/abi.json new file mode 100644 index 0000000000..00f8f43a4a --- /dev/null +++ b/projects/pawnfi/helper/abi.json @@ -0,0 +1,4 @@ +{ + "cTokenMetadataAll": "function cTokenMetadataAll(address[] cTokens) view returns (tuple(address cToken,uint exchangeRateCurrent,uint supplyRatePerBlock,uint borrowRatePerBlock,uint reserveFactorMantissa,uint totalBorrows,uint totalReserves,uint totalSupply,uint totalCash,bool isListed,uint collateralFactorMantissa,address underlyingAssetAddress,uint cTokenDecimals,uint underlyingDecimals,uint compSupplySpeed,uint compBorrowSpeed,uint borrowCap)[])", + "stakedTotal": "function stakedTotal(address _address) external view returns (uint256)" +} \ No newline at end of file diff --git a/projects/pawnfi/helper/config.js b/projects/pawnfi/helper/config.js new file mode 100644 index 0000000000..a39620cf05 --- /dev/null +++ b/projects/pawnfi/helper/config.js @@ -0,0 +1,28 @@ +module.exports = { + Lending: "0x136491CFEae8655501c847F2987B9Bc923A94065", + LendCToken:[ + "0xE8Ca2212c1F4a108d8728cb065622c6387a9860e", + "0x37B614714e96227D81fFffBdbDc4489e46eAce8C", + "0x223D9e0A8db805B0d2Bb06ef5D41b79fb29B5BC7", + "0xF58C9ba6e836919da211858191E6CbC5da7D44FC", + "0xE9373Ca88004bbF192B05A6460aFD05A88D9e1bC", + "0x9C1c49B595D5c25F0Ccc465099E6D9d0a1E5aB37", + "0xB77441172E72d93dde9742DE23c0562d3090966F", + "0x3B2da9304bd1308Dc0d1b2F9c3C14F4CF016a955", + "0x0b7d8EdA67cE2555abe41d2dF2102D62becf38BD", + "0x5CD407de334525C710FA485a8E19D8E98adE39E8", + "0x6A55080D5bA7cFf935Fb6aC54f4af4486EE24B1C" + ], + ApeStakingPoolAddress:{ + BoundApe: '0x73625745eD66F0d4C68C91613086ECe1Fc5a0119', + BoundBAYC: '0x5f0a4a59c8b39cddbcf0c683a6374655b4f5d76e', + BoundMAYC: '0x7d0b6fb139408af77f1c5bfdc8bd9166f5901304', + BoundBAKC: '0x23012599f9ABBA61Cb1A62D3785af7E434F692C6', + APE: '0x4d224452801ACEd8B2F0aebE155379bb5D594381', + ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9" + } + +} + + + diff --git a/projects/pawnfi/index.js b/projects/pawnfi/index.js new file mode 100644 index 0000000000..e2371c975b --- /dev/null +++ b/projects/pawnfi/index.js @@ -0,0 +1,12 @@ +const { get } = require('../helper/http.js') + +async function fetch(arg) { + const data = await get('https://api-app.pawnfi.com/api/stat/queryplatstatinfo.do') + return data.info.f_total_tvl; +} + +module.exports = { + timetravel: false, + methodology: "The Pawnfi API endpoint fetches on-chain data from Pawnfi NFT contracts, token balance for each lending liquidity pools, and any value generated within Pawnfi platform.", + fetch: fetch, +}; From 66f2b8ad2cb7921a7af2de111eeb0ed9f3cec4a6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 12 Jun 2023 13:48:02 +0200 Subject: [PATCH 0728/1354] fix broken adapters --- projects/atlantisloans/index.js | 15 ++++++++++----- projects/cells/index.js | 30 +++++++----------------------- projects/warp/index.js | 22 +++++++++++++--------- 3 files changed, 30 insertions(+), 37 deletions(-) diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js index cc9fc0491c..4f99e4fb2e 100644 --- a/projects/atlantisloans/index.js +++ b/projects/atlantisloans/index.js @@ -21,11 +21,12 @@ module.exports = { bsc: { pool2: pool2(lpVaultStakingContract_BNB, ALT_BUSD_CakeLP_BNB, "bsc"), staking: staking(vaultStakingContract_BNB, ATL, "bsc"), - ...compoundExports(comptroller, - "bsc", - "0x5A9A90983A369b6bB8F062f0AFe6219Ac01caF63", - ADDRESSES.bsc.WBNB - ), + // ...compoundExports(comptroller, + // "bsc", + // "0x5A9A90983A369b6bB8F062f0AFe6219Ac01caF63", + // ADDRESSES.bsc.WBNB + // ), + tvl: async () => ({}), }, polygon: compoundExports(polygonComptroller, "polygon", @@ -42,6 +43,10 @@ module.exports = { "0xbc46Dc817ce983CfD1B36cBc599031aCBEc2FDfe", ADDRESSES.dogechain.WWDOGE ), + hallmarks: [ + [Math.floor(new Date('2023-04-01') / 1e3), 'Team stops all comms, stole funds (?)'], + [Math.floor(new Date('2023-06-10') / 1e3), 'Project rugged'], + ], methodology: "TVL is comprised of tokens deposited to the protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.", }; diff --git a/projects/cells/index.js b/projects/cells/index.js index b473ce2d1d..6cc7ec3d6d 100644 --- a/projects/cells/index.js +++ b/projects/cells/index.js @@ -1,23 +1,7 @@ -const { yieldHelper, } = require("../helper/yieldHelper") -const { mergeExports } = require('../helper/utils') - -module.exports = mergeExports([ - yieldHelper({ - project: 'cells-finance', - chain: 'bsc', - masterchef: '0xAcb845A2a46F6De8cbAe8eA234b632a99ef93D31', - nativeToken: '0x3022d80e02075F5A2a442A318229487f9Ea66D82', - abis: { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat, address )', - } - }), - yieldHelper({ - project: 'cells-finance', - chain: 'arbitrum', - masterchef: '0xAcb845A2a46F6De8cbAe8eA234b632a99ef93D31', - nativeToken: '0x3022d80e02075f5a2a442a318229487f9ea66d82', - abis: { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 , uint256 , uint256 , uint256 , uint256 , uint256 , uint256 amount, uint256 , address strat, address )', - } - }), -]) \ No newline at end of file +module.exports = { + bsc: { tvl: () => 0 }, + arbitrum: { tvl: () => 0 }, + hallmarks: [ + [Math.floor(new Date('2023-06-11') / 1e3), 'Project rugged'], + ], +} \ No newline at end of file diff --git a/projects/warp/index.js b/projects/warp/index.js index e2193dc8ce..3be4c1a74d 100644 --- a/projects/warp/index.js +++ b/projects/warp/index.js @@ -9,11 +9,19 @@ async function tvl(_timestamp, block, _1, { api }) { ...group.logConfig, api, }).then(logs => logs.map((poolLog) => `0x${poolLog.data.substr(26, 40)}`)) - if (group.abi === 'address:LPtoken') - holders = holders.filter(i => i .toLowerCase() !== '0xac6f575fda9b5009993f783845dac63c079f3de7') - const _tokens = await api.multiCall({ abi: group.abi, calls: holders, }) - owners.push(...holders) - tokens.push(..._tokens) + const _tokens = await api.multiCall({ abi: 'address:LPtoken', calls: holders, permitFailure: true, }) + const failedHolders = holders.filter((holder, i) => { + if (_tokens[i]) { + owners.push(holder) + tokens.push(_tokens[i]) + return false + } + return true + }) + + const _tokens2 = await api.multiCall({ abi: 'address:stablecoin', calls: failedHolders }) + owners.push(...failedHolders) + tokens.push(..._tokens2) } return sumTokens2({ api, tokensAndOwners2: [tokens, owners], }) } @@ -30,7 +38,6 @@ const tokenHolderMap = [ topic: "NewLPVault(address)", fromBlock: 11803584, }, - abi: "address:LPtoken", }, { logConfig: { @@ -38,7 +45,6 @@ const tokenHolderMap = [ topic: "NewSCVault(address,address)", fromBlock: 11803584, }, - abi: "address:stablecoin", }, { logConfig: { @@ -46,7 +52,6 @@ const tokenHolderMap = [ topic: "NewLPVault(address)", fromBlock: 11654924, }, - abi: "address:LPtoken", }, { logConfig: { @@ -54,6 +59,5 @@ const tokenHolderMap = [ topic: "NewSCVault(address,address)", fromBlock: 11654924, }, - abi: "address:LPtoken", }, ] From 3fca2b85849c93533a793f74f4cb520b8af477a7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 12 Jun 2023 20:53:04 +0530 Subject: [PATCH 0729/1354] Coindrip (#6535) * add coindrip tvl * remove misrepresentedTokens * code refactor --------- Co-authored-by: Razvan Statescu --- projects/coindrip/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/coindrip/index.js diff --git a/projects/coindrip/index.js b/projects/coindrip/index.js new file mode 100644 index 0000000000..dd48f8021c --- /dev/null +++ b/projects/coindrip/index.js @@ -0,0 +1,17 @@ +const { toUSDTBalances } = require("../helper/balances"); +const { get } = require("../helper/http"); +const { sumTokensExport } = require('../helper/sumTokens') + +const API_URL = "https://app.coindrip.finance/api/tvl"; + +async function tvl() { + const data = await get(API_URL); + return toUSDTBalances(data); +} + +module.exports = { + timetravel: false, + elrond: { + tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqnm3x37972323nuv3l3kywev0n8q5n6gyc8qwljqz9', }) + }, +}; \ No newline at end of file From eda94056eb00c9532fcaae2ff1d9c9c7e5791916 Mon Sep 17 00:00:00 2001 From: Avedith Date: Tue, 13 Jun 2023 01:24:21 +1000 Subject: [PATCH 0730/1354] refactor dyson & add avax chain (#6531) --- projects/dyson-money/index.js | 36 +++++++++++------------------------ 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/projects/dyson-money/index.js b/projects/dyson-money/index.js index 314f1b4be6..69ae31abaf 100644 --- a/projects/dyson-money/index.js +++ b/projects/dyson-money/index.js @@ -1,20 +1,9 @@ const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const { sumTokens2 } = require('../helper/unwrapLPs'); -const sdk = require('@defillama/sdk'); -const { get } = require('../helper/http') const utils = require('../helper/utils'); const { toUSDTBalances } = require('../helper/balances'); -//contract the deposits into official GNS Staking Contract -const gnsDysonVault = "0x035001DdC2f6DcF2006565Af31709f8613a7D70C" - -//grab GNS price from DefiLlama Price API -const getGNSPrice = async () => { - const response = await get('https://coins.llama.fi/prices/current/polygon:0xE5417Af564e4bFDA1c483642db72007871397896') - return response.coins['polygon:0xE5417Af564e4bFDA1c483642db72007871397896'].price -} - const sphere_token = "0x62F594339830b90AE4C084aE7D223fFAFd9658A7" const ylSPHEREvault = "0x4Af613f297ab00361D516454E5E46bc895889653" @@ -25,18 +14,18 @@ async function polygonTvl(timestamp, block, chainBlocks) { await sumTokens2({ balances, owners: [ylSPHEREvault], - tokens: ["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", ADDRESSES.polygon.USDC, ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.USDT, "0x4Af613f297ab00361D516454E5E46bc895889653", ADDRESSES.polygon.WBTC], + tokens: [ + ADDRESSES.polygon.WMATIC_2, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.WETH_1, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.WBTC, + "0x172370d5Cd63279eFa6d502DAB29171933a610AF" + ], chain: 'polygon', block: chainBlocks.polygon }) - const gnsDysonVaultSupply = (await sdk.api.erc20.totalSupply({ - target: gnsDysonVault, - chain: 'polygon', - block: chainBlocks.polygon - })).output / 1e18 * ((await getGNSPrice()) * 1e18) / 6.24 //Don't even ask why 6.24 is needed, it just is the only way to get the correct TVL - balances["polygon:0xE5417Af564e4bFDA1c483642db72007871397896"] = gnsDysonVaultSupply - // calculate TVL for polygon from API const dysonTvl = await fetchChain(137)() for (const [token, balance] of Object.entries(dysonTvl)) { @@ -66,12 +55,6 @@ function fetchChain(chainId) { } } -const chains = { - optimism: 10, - polygon: 137, - arbitrum: 42161, -} - module.exports = { doublecounted: true, misrepresentedTokens: false, @@ -89,4 +72,7 @@ module.exports = { bsc: { tvl: fetchChain(56) }, + avax: { + tvl: fetchChain(43114) + } }; From 2b7760fc597ef7f602751ace6432b69c4c75aa2b Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Mon, 12 Jun 2023 11:25:30 -0400 Subject: [PATCH 0731/1354] =?UTF-8?q?E=E2=85=A2=20:=20Add=20Arbitrum1=20(#?= =?UTF-8?q?6532)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/E3/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/E3/index.js b/projects/E3/index.js index 0000fd47d1..473dc90087 100644 --- a/projects/E3/index.js +++ b/projects/E3/index.js @@ -1,7 +1,8 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const factories = { - fantom: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B' + fantom: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B', + arbitrum: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B' ///zkevm: tbd } async function tvl(_, _b, _cb, { api, }) { @@ -27,7 +28,7 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { - methodology: 'Only the tokens inside our Liquidity Pools are counted in our TVL.', + methodology: 'Only the tokens inside E3 Liquidity Pools are counted in our TVL.', } Object.keys(factories).forEach(chain => { From 28f91bd6de5410fb41c3b1d0d0721e493f272838 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 12 Jun 2023 18:17:13 +0200 Subject: [PATCH 0732/1354] pawnfi: code refactor --- projects/pawnfi-lbp/index.js | 10 ------ projects/pawnfi-lending/index.js | 56 +++++++++++++------------------- projects/pawnfi-nft/index.js | 39 ++++++++-------------- 3 files changed, 36 insertions(+), 69 deletions(-) delete mode 100644 projects/pawnfi-lbp/index.js diff --git a/projects/pawnfi-lbp/index.js b/projects/pawnfi-lbp/index.js deleted file mode 100644 index 5250e47c9b..0000000000 --- a/projects/pawnfi-lbp/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') - -module.exports = { - ethereum: { - tvl: function tvl(_, _b, _cb, { api, }) { - const owner = '0x0f41eAdEc8FA71787516CCC5CEAcBD6430848f9E' - return sumTokens2({ api, owner, resolveUniV3: true }) - } - } -}; diff --git a/projects/pawnfi-lending/index.js b/projects/pawnfi-lending/index.js index b435996c62..b4db4b231b 100644 --- a/projects/pawnfi-lending/index.js +++ b/projects/pawnfi-lending/index.js @@ -1,47 +1,37 @@ const ABI = require("../pawnfi/helper/abi.json") -const { Lending,LendCToken } = require("../pawnfi/helper/config.js") -const sdk = require("@defillama/sdk") +const { Lending, LendCToken } = require("../pawnfi/helper/config.js") +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') +async function getPawnNFTTokens(api) { + const logs = await getLogs({ + api, + target: '0x82cac2725345ea95a200187ae9a5506e48fe1c5d', + topics: ['0x0e9af31ba332bde3bd4bd41172ead69274cb4263d5a6f2fa934a14dacefed4b1'], + eventAbi: 'event PieceTokenCreated (address token, address pieceToken, uint256 pieceTokenLength)', + onlyArgs: true, + fromBlock: 17107816, + }) + return logs.map(log => log.pieceToken) +} async function borrowed(timestamp, block, _, { api }) { - const tokens = [] - const bals = [] - const items = await api.call({ - abi: ABI.cTokenMetadataAll, - target: Lending, - params: [LendCToken], - }) + const blacklistedTokens = await getPawnNFTTokens(api) + const items = await api.call({ abi: ABI.cTokenMetadataAll, target: Lending, params: [LendCToken], }) items.forEach((v) => { - tokens.push(v['underlyingAssetAddress']) - bals.push(v['totalBorrows']) + if (blacklistedTokens.includes(v.underlyingAssetAddress)) return + api.add(v.underlyingAssetAddress, v.totalBorrows) }) - const balances = {} - bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v, api.chain)) - return balances } async function tvl(timestamp, block, _, { api }) { - const tokens = [] - const bals = [] - const items = await api.call({ - abi: ABI.cTokenMetadataAll, - target: Lending, - params: [LendCToken], - }) - items.forEach((v) => { - tokens.push(v['underlyingAssetAddress']) - bals.push(v['totalCash']) - }) - const balances = {} - bals.forEach((v, i) => sdk.util.sumSingleBalance(balances, tokens[i], v, api.chain)) - return balances + const blacklistedTokens = await getPawnNFTTokens(api) + const items = await api.call({ abi: ABI.cTokenMetadataAll, target: Lending, params: [LendCToken], }) + return sumTokens2({ api, tokensAndOwners: items.map(i => [i.underlyingAssetAddress, i.cToken]), blacklistedTokens }) } -module.exports = module.exports = { - ethereum: { - tvl: tvl, - borrowed: borrowed - } +module.exports = { + ethereum: { tvl, borrowed }, } diff --git a/projects/pawnfi-nft/index.js b/projects/pawnfi-nft/index.js index 47dea04f44..918744e83f 100644 --- a/projects/pawnfi-nft/index.js +++ b/projects/pawnfi-nft/index.js @@ -1,32 +1,19 @@ -const nftsAndOwners = [ - ["0x5f0A4a59C8B39CDdBCf0C683a6374655b4f5D76e","0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"], - ["0x32EcC1de70dCeCeEB5b745e9a039a12bA6ae7F42","0xb7F7F6C52F2e2fdb1963Eab30438024864c313F6"], - ["0x27e49962E2C8Ffd7cb7b4501fc2D967a1ec2ee7d","0x790B2cF29Ed4F310bf7641f013C65D4560d28371"], - ["0x7514799CB447752D145b6D176a453F59375b2eE8","0xE012Baf811CF9c05c408e879C399960D1f305903"], - ["0x7d0B6fB139408Af77f1c5bfdc8BD9166F5901304","0x60E4d786628Fea6478F785A6d7e704777c86a7c6"], - ["0x25d6fe0d7bFB59924F08027eDA334073A552A400","0x49cF6f5d44E70224e2E23fDcdd2C053F30aDA28B"], - ["0x5eEAEF7D88D805AD080Bc6F8Fe5c22F4F0c4a7D2","0xED5AF388653567Af2F388E6224dC7C4b3241C544"], - ["0x23012599f9ABBA61Cb1A62D3785af7E434F692C6","0xba30E5F9Bb24caa003E9f2f0497Ad287FDF95623"], -] - +const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') + module.exports = { ethereum: { tvl: async function tvl(_, _b, _cb, { api, }) { - - const result = await api.multiCall({ - calls: nftsAndOwners.map(([owner,nft]) => ({ - target: nft, - params: [owner], - })), - abi: "function balanceOf(address account) view returns (uint256)", - }) - - const balances = [] - nftsAndOwners.forEach((item,index)=>{ - balances[item[1]] = result[index] + const logs = await getLogs({ + api, + target: '0x82cac2725345ea95a200187ae9a5506e48fe1c5d', + topics: ['0x0e9af31ba332bde3bd4bd41172ead69274cb4263d5a6f2fa934a14dacefed4b1'], + eventAbi: 'event PieceTokenCreated (address token, address pieceToken, uint256 pieceTokenLength)', + onlyArgs: true, + fromBlock: 17107816, }) - - return balances; - } + return sumTokens2({ api, tokensAndOwners: logs.map(log=>[log.token, log.pieceToken])}) + }, + pool2: sumTokensExport({ owner: '0x0f41eAdEc8FA71787516CCC5CEAcBD6430848f9E', resolveUniV3: true}) } } From 6abf9e4d557a01197087ab5006053706b688c140 Mon Sep 17 00:00:00 2001 From: Curbis Norris <130688524+curbisn@users.noreply.github.com> Date: Tue, 13 Jun 2023 02:42:28 +0700 Subject: [PATCH 0733/1354] Add new contracts for Dexilla (#6537) * add Dexilla project * Update contract * update timestamp * add optimism chain * add V.4 contracts * add zk contracts --- projects/dexilla/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js index e580c16851..000dd94ee1 100644 --- a/projects/dexilla/index.js +++ b/projects/dexilla/index.js @@ -6,6 +6,9 @@ const config = { '0xCA2eE260BFA64D8Fb01B1cd75615aAa42D528214', '0x588450db6e3586Ec0468a7Bb36f1d5f3BbbE2084', '0x0DE31204e919D71f0E7b9E5766950e99f1017826', + '0x16412BE389278B81594027E77FF9b61b2d200caa', + '0xE0D2833D9ED879D16BfC1cEc3573293770b8abBB', + '0x66831746E2F5a3CfC2A6E2b9eB5Ea8b7dd78Ee6A', ], }, optimism: { @@ -13,6 +16,10 @@ const config = { '0x189c3f9dcAfe968Be3620cC58274E7c5DF057C7c', '0x68D05405472C4f0c254A47922Dba9dbC4CFf2bD9', '0x8F1F6751236855391BbBEDBf4Bf5AD7e383E6e50', + '0xb0BE48F722a8AD727b99064EE18b715e9757e959', + '0x2d10b03854e970d3772434FF1133BCb3E59Ca4b8', + '0x2BF9D7e4173B882335b464e2fB38f5b57768ab61', + '0x44F1C33ED3bf77A5883cBEce1c1b34E71425CE84', ], }, } From b4cfb42b713463a572ac1586281b17709152eb7c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 12 Jun 2023 23:15:42 +0200 Subject: [PATCH 0734/1354] add athenafinance.io --- projects/athenafinance-io/index.js | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 projects/athenafinance-io/index.js diff --git a/projects/athenafinance-io/index.js b/projects/athenafinance-io/index.js new file mode 100644 index 0000000000..b5b66e3400 --- /dev/null +++ b/projects/athenafinance-io/index.js @@ -0,0 +1,39 @@ +const { unwrapLPsAuto, nullAddress, sumTokensExport } = require('../helper/unwrapLPs') + +const masterchef = '0x652a63c4df14e29080Ab058d6f151aBa61F86c10' + +async function tvl(_, _b, _cb, { api, }) { + const pools = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function registeredToken(uint256) view returns (address)', target: masterchef }) + const poolInfo = await api.multiCall({ abi: 'function getPoolInfo(address) view returns ( uint256 emission, uint256 allocpoint, uint256 sizeOfPool, uint256 totalPoint)', calls: pools, target: masterchef }) + const poolInfo2 = await api.multiCall({ abi: 'function addressToPoolInfo(address) view returns ( address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accATHPerShare, address rewarder, address helper, address locker)', calls: pools, target: masterchef }) + + const poolHelperData = [] + poolInfo2.forEach((data, index) => { + if (pools[index].toLowerCase() === '0xfc56eac0d0e53105f7a45a669baf662c0ee292ed') return; // ignore ATH token + if (pools[index].toLowerCase() === '0x724ccdcf3f77096963b8e0849dab3eb142b167a4') return; // ignore ATH LP token + if (data.helper === '0xeB27E1C356b173277bb75ACA3a3f8a0164Fa0ABa') { + api.add('0x724CcDcf3F77096963B8e0849dab3Eb142b167a4', poolInfo[index].sizeOfPool) + } else if (data.helper === nullAddress) { + api.add(pools[index], poolInfo[index].sizeOfPool) + } else { + poolHelperData.push({ + helper: data.helper, + balance: poolInfo[index].sizeOfPool + }) + } + }) + const depositToken = await api.multiCall({ abi: 'address:depositToken', calls: poolHelperData.map(i => i.helper) }) + depositToken.forEach((data, index) => api.add(data, poolHelperData[index].balance)) + + return unwrapLPsAuto({ api, }) +} + + +module.exports = { + doublecounted: true, + metis: { + tvl, + staking: sumTokensExport({ owner: '0xD481eD22a20708839aeB7f1d07E1d01cbc526184', tokens: ['0xA4eE142e34d0676Edc2b760DD0016003D99a4ceC'] }), + pool2: sumTokensExport({ owner: masterchef, tokens: ['0x724CcDcf3F77096963B8e0849dab3Eb142b167a4'], resolveLP: true, }), + } +} \ No newline at end of file From 8b5c18c46d73debcb9a078676d60b0289446b66e Mon Sep 17 00:00:00 2001 From: KannagiFinance <131143958+KannagiFinance@users.noreply.github.com> Date: Tue, 13 Jun 2023 05:27:49 +0800 Subject: [PATCH 0735/1354] add kannagi finance adapter (#6529) * add kannagi finance adapter * add staked token * fix broken adapters * fix broken adapters * code refactor --------- Co-authored-by: realdealshaman Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/utils.js | 2 +- projects/helper/yieldHelper.js | 18 ++++++++++++------ projects/kannagi-finance/abi.json | 4 ++++ projects/kannagi-finance/index.js | 16 ++++++++++++++++ 4 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 projects/kannagi-finance/abi.json create mode 100644 projects/kannagi-finance/index.js diff --git a/projects/helper/utils.js b/projects/helper/utils.js index aa0dda93ac..16b977e7d2 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -65,7 +65,7 @@ function isLP(symbol, token, chain) { if (chain === 'harmony' && ['HLP'].includes(symbol)) return true if (chain === 'klaytn' && ['NLP'].includes(symbol)) return true if (chain === 'fantom' && ['HLP'].includes(symbol)) return true - if (chain === 'era' && symbol.includes('cSLP')) return true // for syncswap + if (chain === 'era' && /(cSLP|sSLP)$/.test(symbol)) return true // for syncswap if (chain === 'songbird' && ['FLRX', 'OLP'].includes(symbol)) return true if (chain === 'arbitrum' && ['DXS', 'ZLP',].includes(symbol)) return true if (chain === 'metis' && ['NLP', 'ALP'].includes(symbol)) return true // Netswap/Agora LP Token diff --git a/projects/helper/yieldHelper.js b/projects/helper/yieldHelper.js index 3bfdf7dd5c..452e56237e 100644 --- a/projects/helper/yieldHelper.js +++ b/projects/helper/yieldHelper.js @@ -21,6 +21,7 @@ function yieldHelper({ getTokens, getTokenBalances, useDefaultCoreAssets = false, + getPoolsFn, }) { blacklistedTokens = getUniqueAddresses(blacklistedTokens) if (nativeToken) nativeTokens.push(nativeToken) @@ -40,13 +41,18 @@ function yieldHelper({ staking: {}, } - let poolInfos = await api.fetchList({ - lengthAbi: abis.poolLength || abi.poolLength, - itemAbi: abis.poolInfo || abi.poolInfo, - target: masterchef, - }) + let poolInfos + if (getPoolsFn) { + poolInfos = await getPoolsFn(api) + } else { + poolInfos = await api.fetchList({ + lengthAbi: abis.poolLength || abi.poolLength, + itemAbi: abis.poolInfo || abi.poolInfo, + target: masterchef, + }) + } - let _poolFilter = i => !blacklistedTokens.includes(i.want.toLowerCase()) && !blacklistedTokens.includes(i.strat.toLowerCase()) && i.strat !== ADDRESSES.null + let _poolFilter = i => !blacklistedTokens.includes(i.want.toLowerCase()) && !blacklistedTokens.includes(i.strat?.toLowerCase()) && i.strat !== ADDRESSES.null let _getPoolIds = i => i.strat if (getPoolIds) _getPoolIds = getPoolIds diff --git a/projects/kannagi-finance/abi.json b/projects/kannagi-finance/abi.json new file mode 100644 index 0000000000..bc8ebbfe26 --- /dev/null +++ b/projects/kannagi-finance/abi.json @@ -0,0 +1,4 @@ +{ + "poolTvlInfo":"function totalTvl() view returns (tuple(uint256 pid, address want, uint256 tvl)[])", + "reserves":"function getReserves() external view returns (uint _reserve0, uint _reserve1)" +} \ No newline at end of file diff --git a/projects/kannagi-finance/index.js b/projects/kannagi-finance/index.js new file mode 100644 index 0000000000..a0cda90c0e --- /dev/null +++ b/projects/kannagi-finance/index.js @@ -0,0 +1,16 @@ +const abi = require("./abi.json"); +const {yieldHelper} = require('../helper/yieldHelper'); +const KANA_ADDRESS = "0x26aC1D9945f65392B8E4E6b895969b5c01A7B414"; +const YIELD_ADDRESS= "0x6E415ba5a37761256D13E84B45f4822c179DEF47"; + +module.exports = yieldHelper({ + project: 'kannagi-finance', + chain: 'era', + masterchef: YIELD_ADDRESS, + nativeToken: KANA_ADDRESS, + getPoolsFn: async (api) => api.call({ target: YIELD_ADDRESS, abi: abi.poolTvlInfo }), + getTokenBalances: async ({ poolInfos }) => poolInfos.map(poolInfo => poolInfo.tvl), + abis: { + getReservesABI: abi.reserves, + } +}) From 2595de70ac8fa3f7198ead3ec2c2a7c6bb9419b4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 13 Jun 2023 10:18:02 +0200 Subject: [PATCH 0736/1354] refactor fractional art --- projects/fractional-art.js | 180 ++++++++++--------------------------- 1 file changed, 45 insertions(+), 135 deletions(-) diff --git a/projects/fractional-art.js b/projects/fractional-art.js index f464b5008b..d607a5bc10 100644 --- a/projects/fractional-art.js +++ b/projects/fractional-art.js @@ -1,146 +1,56 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { PromisePool } = require('@supercharge/promise-pool') -const { BigNumber } = require("bignumber.js"); -const { get } = require('./helper/http') +const { getLogs } = require('./helper/cache/getLogs') const { sumTokens2 } = require('./helper/unwrapLPs') +const { isArtBlocks } = require('./helper/nft') + +async function tvl(_, _b, _cb, { api, }) { + const factory = '0x85aa7f78bdb2de8f3e0c0010d99ad5853ffcfc63' + const logs = await getLogs({ + api, + target: factory, + topics: ['0xf9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e'], + eventAbi: 'event Mint (address indexed token, uint256 id, uint256 price, address vault, uint256 vaultId)', + onlyArgs: true, + fromBlock: 12743932, + }) + const artBlockOwners = [] + const tokensAndOwners = logs.map(log => [log.token, log.vault]).filter(([token, vault]) => { + if (isArtBlocks(token)) { + artBlockOwners.push(vault) + return false + } + return true + }) + await sumTokens2({ api, owners: artBlockOwners, resolveArtBlocks: true, }) -// Retrieve needed vaults attributes from REST API -const fractional_api_url = 'https://mainnet-api.fractional.art/vaults?perPage=100' // &page=1' - -async function getVaults() { - const vaults = [] - let page = 1 - const { - data, metadata - } = await get(fractional_api_url + `&page=${page}`) - vaults.push(...data) - page++ - const totalPages = metadata.pagination.totalPages - const pages = [] - for (; page <= totalPages; page++) pages.push(page) - - await PromisePool - .withConcurrency(21) - .for(pages) - .process(addPage) - - async function addPage(i) { - const { data, } = await get(fractional_api_url + `&page=${i}`) - vaults.push(...data) - sdk.log('fetched', i, 'of', totalPages) - } - - sdk.log(vaults.length) - return vaults -} - -// This API returns a list of vaults similar to the following exampleVaultDebug -function exampleVaultDebug() { - return { - "symbol": "DOG", - "contractAddress": "0xbaac2b4491727d78d2b78815144570b9f2fe8899", - "pools": [{ - "pool": "0x7731CA4d00800b6a681D031F565DeB355c5b77dA", - "tokens": ["0xBAac2B4491727D78D2b78815144570b9f2Fe8899", ADDRESSES.ethereum.WETH], - "provider": "UNISWAP_V3" - }], - "tokenAddress": "0xabEFBc9fD2F806065b4f3C237d4b59D9A97Bcac7", - "analytics": { - "tvlUsd": 21790624 - }, - "slug": "the-doge-nft", - "isClosed": false, - } -} - -// Get Fractional.art TVL -async function tvl(_, block) { - // Get vaults and Compute vaults TVL (trusting fractional rest api) - const vaults = await getVaults() - const toa = [] - let token0; - let token1; - vaults.forEach(vault => { - vault.pools.forEach(pool => { - token0 = pool.tokens[0]; - token1 = pool.tokens[1]; - // Swap token0 and token1 if needed so token0 is always vault token - if (vault.contractAddress.toLowerCase() === token1.toLowerCase()) - toa.push([token0, pool.pool]) - else - toa.push([token1, pool.pool]) - }) + return sumTokens2({ + api, tokensAndOwners, blacklistedTokens: [ + '0x9ef27de616154ff8b38893c59522b69c7ba8a81c', + '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', + ] }) - - return sumTokens2({ tokensAndOwners: toa, block, }) } - -// Using fractional REST API, a TVL is returned in USD, stored as USDC -function getVaultsTvlApi(vaults) { - return vaults.reduce((acc, vault) => acc.plus(BigNumber(vault.analytics ? vault.analytics.tvlUsd : 0)), BigNumber(0)) +async function tvlLPDA(_, _b, _cb, { api, }) { + const factory = '0x32e8ab1e243d8d912a5ae937635e07e7e451d2ae' + const logs = await getLogs({ + api, + target: factory, + topics: ['0x4a08e09eb1f4b221a4d4faff944c52d3bb85486dd0f7e647977d35b406e16e43'], + eventAbi: 'event CreatedLPDA(address indexed vault, address indexed token, uint256 _id, tuple(uint32 startTime, uint32 endTime, uint64 dropPerSecond, uint128 startPrice, uint128 endPrice, uint128 minBid, uint16 supply, uint16 numSold, uint128 curatorClaimed, address curator) _lpdaInfo)', + onlyArgs: true, + fromBlock: 16125170, + }) + + return sumTokens2({ + api, tokensAndOwners: logs.map(log => [log.token, log.vault]), blacklistedTokens: [ + '0x9ef27de616154ff8b38893c59522b69c7ba8a81c', + ], + }) } -const usdc = ADDRESSES.ethereum.USDC -/* async function tvl_api(timestamp, block, chainBlocks, chain) { - const { vaults, openedVaultsCount } = await retrieveVaultsAPI() - return { [usdc]: getVaultsTvlApi(vaults).times(1e6) } -} */ - module.exports = { - ethereum: { tvl }, - methodology: `TVL is the total quantity of tokens held in LPs against any vault token. Each vault has a token, which is provided as LP in several pools returned by fractional REST API. Do not account for vault token locked in pools as contributing to TVL.` -} - - - -// ------------ -// Alternatives -// ------------ - -// 1. COULD USE unwrapUniswapLPs with lpPositions set to erc20:totalSupply of pool but does not work for uni_v3 -/* - // Get UNISWAP_V2 and SUSHISWAP_V1 LPs - // Call unwrapUniswapLPs with lpPositions set to totalSupply of LP token. So you unwrap the whole pool without needing to pull reserves of token1 - only pull totalSupply of LP token - const univ2_sushiv1_pairAddresses = univ2_sushiv1_pools.map(p => p.pool) - const univ3_pairAddresses = univ3_pools.map(p => p.pool) - const lpSupply = (await sdk.api.abi.multiCall({ - block, - abi: 'erc20:totalSupply', - calls: univ2_sushiv1_pairAddresses.map(address=>({ // cannot retrieve uni_v3 balances - target: address - })), - chain - })).output - // Format the way unwrapUniswapLPs function requires the token/balance pairs - const lpPositions = lpSupply.map(call => ({ - token: call.input.target, - balance: call.output - })) - // Accumulate to balances - await unwrapUniswapLPs(balances, lpPositions, block, chain=chain) - */ - -// 2. COULD USE staking contract, but too slow to retrieve call by call the amount of tokens -/* -const { staking } = require("./helper/staking.js"); -balances = {} -for (const pool of v2_v3_pools) { // univ3_pools - const token1_locked = staking(pool.pool, pool.token1, chain="ethereum") - token1_pool_balance = await token1_locked(timestamp, block, chainBlocks) - - sdk.util.sumSingleBalance(balances, pool.token1, token1_pool_balance[pool.token1]); - // sdk.util.sumMultiBalanceOf(balances, [token1_pool_balance], true); + ethereum: { tvl: tvl }, + methodology: `TVL is value of nfts in the vaults` } -*/ -// 3. COULD USE core/index.js functions to get TL locked in given Uniswap pools, but too much to copy-paste from ./CORE/INDEX.JS -/* -const {getUniswapPairInfo, getPairUnderlyingReserves, flattenUnderlyingReserves} = require('./core/index.js'); -Would need to copy-paste these functions are export them by module -const pairInfo = await getUniswapPairInfo(univ2_sushiv1_pairAddresses, timestamp, block); -const underlyingReserves = await Promise.all(pairInfo.map(info => getPairUnderlyingReserves(info, timestamp, block))); -let balances = flattenUnderlyingReserves(underlyingReserves); -*/ From 781557e4522e21b1c9f83a55b8a1aa674495d959 Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Tue, 13 Jun 2023 04:25:44 -0400 Subject: [PATCH 0737/1354] frax-swap: add missing v2 factories (#6539) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * frax-swap: add missing v2 factories * 🦙 frax-swap: add missing v2 factories * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/frax-swap/index.js | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/projects/frax-swap/index.js b/projects/frax-swap/index.js index 7ecdecf165..aaffa8e7eb 100644 --- a/projects/frax-swap/index.js +++ b/projects/frax-swap/index.js @@ -1,20 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') const sdk = require("@defillama/sdk") -const fx = (chain, factory1, factory2) => ({ +const fx = (chain, ...factories) => ({ [chain]: { - tvl: factory2 === undefined ? - getUniTVL({ - factory: factory1, - }) - : sdk.util.sumChainTvls([ - getUniTVL({ - factory: factory1, - }), - getUniTVL({ - factory: factory2, - }), - ]) + tvl: sdk.util.sumChainTvls(factories.map(factory => getUniTVL({ factory }))) }, }) @@ -26,11 +15,11 @@ https://facts.frax.finance/pools/0x247b71D57Ac80883364599ad5c9D74ea5EDc8660 (2k module.exports = { ...fx("ethereum", "0xb076b06f669e682609fb4a8c6646d2619717be4b", "0x43ec799eadd63848443e2347c49f5f52e8fe0f6f"), - ...fx("arbitrum", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E"), - ...fx("avax", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E"), - ...fx("bsc", "0xa007a9716dba05289df85A90d0Fd9D39BEE808dE"), + ...fx("arbitrum", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", "0x8374A74A728f06bEa6B7259C68AA7BBB732bfeaD"), + ...fx("avax", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", "0xf77ca9B635898980fb219b4F4605C50e4ba58afF"), + ...fx("bsc", "0xa007a9716dba05289df85A90d0Fd9D39BEE808dE", "0xf89e6CA06121B6d4370f4B196Ae458e8b969A011"), ...fx("dogechain", "0x67b7DA7c0564c6aC080f0A6D9fB4675e52E6bF1d"), - ...fx("fantom", "0xF55C563148cA0c0F1626834ec1B8651844D76792","0xDc745E09fC459aDC295E2e7baACe881354dB7F64"), - ...fx("moonbeam", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E"), - ...fx("polygon", "0xc2544A32872A91F4A553b404C6950e89De901fdb"), + ...fx("fantom", "0xF55C563148cA0c0F1626834ec1B8651844D76792", "0xDc745E09fC459aDC295E2e7baACe881354dB7F64"), + ...fx("moonbeam", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", "0x51f9DBEd76f5Dcf209817f641b549aa82F35D23F"), + ...fx("polygon", "0xc2544A32872A91F4A553b404C6950e89De901fdb", "0x54F454D747e037Da288dB568D4121117EAb34e79"), }; From ec3b638b258930c46c619667e5d3cd6fd4e1cc5e Mon Sep 17 00:00:00 2001 From: tajikistanismylove <133168832+tajikistanismylove@users.noreply.github.com> Date: Tue, 13 Jun 2023 10:13:46 +0100 Subject: [PATCH 0738/1354] Add Baton TVL (#6538) * add baton * code refactor --------- Co-authored-by: tajikistanismylove Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/baton/index.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 projects/baton/index.js diff --git a/projects/baton/index.js b/projects/baton/index.js new file mode 100644 index 0000000000..99931c7b8d --- /dev/null +++ b/projects/baton/index.js @@ -0,0 +1,41 @@ +const { getLogs } = require("../helper/cache/getLogs"); +const { nullAddress } = require("../helper/tokenMapping"); + +async function tvl(timestamp, blockHeight, _2, { api }) { + const batonFactory = "0xEB8D09235255b37fBC810df41Fa879225c04639a"; + + // get all the farms from the factory + const logs = await getLogs({ + api, + target: batonFactory, + topic: "FarmCreated(address,address,address,address,address,uint256,uint8)", + fromBlock: 17411300, + eventAbi: + "event FarmCreated(address farmAddress, address owner, address rewardsDistributor, address rewardsToken, address pairAddress, uint256 rewardsDuration, uint8 farmType)", + onlyArgs: true + }); + + // filter any farms where the reward token is not fractional nfts or the underlying pair is not paired with eth + let filteredLogs = logs.filter(i => i.pairAddress === i.rewardsToken) + const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: filteredLogs.map(i => i.pairAddress) }) + const filteredFarms = filteredLogs.filter((i, idx) => baseTokens[idx] = nullAddress) + + const farms = filteredFarms.map(i => i.farmAddress) + const pairs = filteredFarms.map(i => i.pairAddress) + const totalSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: farms }) + const prices = await api.multiCall({ abi: 'uint256:price', calls: pairs }) + const baseTokenAmounts = (await api.multiCall({ abi: "function removeQuote(uint256) view returns (uint256,uint256)", calls: pairs.map((v, i) => ({ target: v, params: [totalSupplies[i]] })) })).map(i => i[0]) + const rewardBalances = (await api.multiCall({ abi: "erc20:balanceOf", calls: pairs.map((v, i) => ({ target: v, params: [farms[i]] })) })) + baseTokenAmounts.forEach(i => api.add(nullAddress, i * 2)); + rewardBalances.forEach((v, i) => api.add(nullAddress, (prices[i] * v) / 1e18)); +} + +module.exports = { + misrepresentedTokens: true, + methodology: + "Sums the total staked in baton farms and the total amount of tokens deposited as yield farming rewards.", + start: 17411300, + ethereum: { + tvl + } +}; From 86b91c9037b594d511edb3fffea6bedd3a127b2b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 13 Jun 2023 12:21:20 +0200 Subject: [PATCH 0739/1354] add maple rwa --- projects/atlantisloans/index.js | 2 +- projects/maple-rwa/index.js | 16 ++++++++++++++++ projects/maple/index.js | 15 ++++++++++++--- 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 projects/maple-rwa/index.js diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js index 4f99e4fb2e..381da2ace7 100644 --- a/projects/atlantisloans/index.js +++ b/projects/atlantisloans/index.js @@ -45,7 +45,7 @@ module.exports = { ), hallmarks: [ [Math.floor(new Date('2023-04-01') / 1e3), 'Team stops all comms, stole funds (?)'], - [Math.floor(new Date('2023-06-10') / 1e3), 'Project rugged'], + [Math.floor(new Date('2023-06-10') / 1e3), 'Governance Attack'], ], methodology: "TVL is comprised of tokens deposited to the protocol as collateral, similar to Compound Finance and other lending protocols the borrowed tokens are not counted as TVL.", diff --git a/projects/maple-rwa/index.js b/projects/maple-rwa/index.js new file mode 100644 index 0000000000..4f5adf1285 --- /dev/null +++ b/projects/maple-rwa/index.js @@ -0,0 +1,16 @@ + +const rwaPools = [ + '0xfe119e9C24ab79F1bDd5dd884B86Ceea2eE75D92', // Cash Management + '0xe9d33286f0E37f517B1204aA6dA085564414996d', // AQRU +] + +async function tvl(_, _b, _cb, { api, }) { + const tokens = await api.multiCall({ abi: 'address:asset', calls: rwaPools }) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: rwaPools }) + api.addTokens(tokens, bals) +} + +module.exports = { + doublecounted: true, + ethereum: { tvl, } +} \ No newline at end of file diff --git a/projects/maple/index.js b/projects/maple/index.js index b39a42fa3b..b18f898920 100644 --- a/projects/maple/index.js +++ b/projects/maple/index.js @@ -6,9 +6,7 @@ const { getConnection, getTokenBalance } = require('../helper/solana') const { PublicKey } = require('@solana/web3.js') const { getLogs } = require('../helper/cache/getLogs') -const MapleTreasury = "0xa9466EaBd096449d650D5AEB0dD3dA6F52FD0B19"; const USDC = ADDRESSES.ethereum.USDC; -const chain = 'ethereum' /*** Solana TVL Portions ***/ const POOL_DISCRIMINATOR = "35K4P9PCU"; @@ -68,6 +66,7 @@ async function getPoolInfo(block, api) { async function _getPoolInfo() { const loanFactory = '0x1551717ae4fdcb65ed028f7fb7aba39908f6a7a6' + const openTermLoanManagerFactory = '0x90b14505221a24039A2D11Ad5862339db97Cc160' const logs = await getLogs({ api, @@ -75,7 +74,17 @@ async function getPoolInfo(block, api) { topic: "InstanceDeployed(uint256,address,bytes)", fromBlock: 16126995, }); - const proxies = logs.map(s => "0x" + s.topics[2].slice(26, 66)) + const logs2 = await getLogs({ // open term + api, + target: openTermLoanManagerFactory, + topic: "InstanceDeployed(uint256,address,bytes)", + fromBlock: 17372608, + }); + + let proxies = logs.map(s => "0x" + s.topics[2].slice(26, 66)) + const proxiesOpenTerm = logs2.map(s => "0x" + s.topics[2].slice(26, 66)) + proxies.push(...proxiesOpenTerm) + proxies = [...new Set(proxies.map(i => i.toLowerCase()))] const managers = await api.multiCall({ abi: 'address:poolManager', calls: proxies }) const assets = await api.multiCall({ block, abi: abis.fundsAsset, calls: proxies, }) return { proxies, assets, managers } From d8eec99aa59d3f0980c83fd2e7dbc631361a0c77 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 13 Jun 2023 19:03:12 +0100 Subject: [PATCH 0740/1354] sudoswap treasury --- projects/treasury/sudoswap.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/treasury/sudoswap.js diff --git a/projects/treasury/sudoswap.js b/projects/treasury/sudoswap.js new file mode 100644 index 0000000000..f5ff7594ec --- /dev/null +++ b/projects/treasury/sudoswap.js @@ -0,0 +1,23 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') + +const treasury = "0xb16c1342E617A5B6E4b631EB114483FDB289c0A4" //pair factor1 +const treasury2 = "0xA020d57aB0448Ef74115c112D18a9C231CC86000" //pair factor2 +const treasury3 = "0x6853f8865BA8e9FBd9C8CCE3155ce5023fB7EEB0" //sudo governance +const SUDO = "0x3446Dd70B2D52A6Bf4a5a192D9b0A161295aB7F9" + +module.exports = treasuryExports({ + ethereum: { + owners: [treasury, treasury2, treasury3], + ownTokens: [SUDO], + tokens: [ + nullAddress, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + "0x853d955aCEf822Db058eb8505911ED77F175b99e", //frax + "0xb23d80f5FefcDDaa212212F028021B41DEd428CF", //PRIME + ], + }, +}); \ No newline at end of file From 54ca9d4dfe75d2a52b741e917ce9242b78f460b4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 13 Jun 2023 20:59:59 +0200 Subject: [PATCH 0741/1354] balaner add matic zkevm --- projects/balancer/onchain.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/balancer/onchain.js b/projects/balancer/onchain.js index facd484313..0a94f00369 100644 --- a/projects/balancer/onchain.js +++ b/projects/balancer/onchain.js @@ -17,6 +17,7 @@ const config = { polygon: { fromBlock: 15832990, }, arbitrum: { fromBlock: 222832, }, xdai: { fromBlock: 24821598, }, + polygon_zkevm: { fromBlock: 203079, }, } module.exports = {}; From e620d02f6f2900c048ef03b32d33429fd953dbfc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 13 Jun 2023 21:55:26 +0200 Subject: [PATCH 0742/1354] track ambient finance --- projects/ambient-finance/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/ambient-finance/index.js diff --git a/projects/ambient-finance/index.js b/projects/ambient-finance/index.js new file mode 100644 index 0000000000..3cc0199eb2 --- /dev/null +++ b/projects/ambient-finance/index.js @@ -0,0 +1,13 @@ +const { sumTokens2 } = require('../helper/unwrapLPs'); +const { covalentGetTokens } = require("../helper/http"); + +const vault = "0xAaAaAAAaA24eEeb8d57D431224f73832bC34f688" + +module.exports = { + ethereum: { + tvl: async (_, _1, _2, { api }) => { + const tokens = await covalentGetTokens(vault, api.chain) + return sumTokens2({ api, owner: vault, tokens, }) + }, + } +} \ No newline at end of file From 63fa165739b29fab262b4ea0f47b28c66b99374a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 14 Jun 2023 03:40:30 +0100 Subject: [PATCH 0743/1354] add hallmark --- projects/goldbank/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/goldbank/index.js b/projects/goldbank/index.js index f8ee752b8c..bc8ad24489 100644 --- a/projects/goldbank/index.js +++ b/projects/goldbank/index.js @@ -2,6 +2,9 @@ const { compoundExports } = require("../helper/compound"); const unitroller = "0x537A09Fd99Fc7eF737d297cDEeAB3b7f9602308c"; module.exports = { + hallmarks: [ + [Math.floor(new Date('2023-06-11') / 1e3), 'Project rugged'], + ], methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", arbitrum: { From 9641fe2725b764e1d5404beea66b3494d72568f7 Mon Sep 17 00:00:00 2001 From: Rentero Date: Wed, 14 Jun 2023 15:13:19 +0800 Subject: [PATCH 0744/1354] Fix:replace contract address --- projects/letsfil/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js index efb5fd6616..32eb5b28c1 100644 --- a/projects/letsfil/index.js +++ b/projects/letsfil/index.js @@ -1,6 +1,6 @@ const sdk = require('@defillama/sdk'); const ADDRESSES = require('../helper/coreAssets.json') -const LETSFIL_CONTRACT = '0xd08F7A4544a7C21283B4a063ebb53ADFc0506562'; +const LETSFIL_CONTRACT = '0x74a37AC5f124d25284ffEc0107cB93a6f9A2E433'; async function tvl(_, _1, _2, { api }) { From c35f1555ba3ac337a5af687ecb30acfc7d1798e2 Mon Sep 17 00:00:00 2001 From: Rentero Date: Wed, 14 Jun 2023 15:15:35 +0800 Subject: [PATCH 0745/1354] Fix:replace contract address --- projects/letsfil/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js index 32eb5b28c1..7aee2e7308 100644 --- a/projects/letsfil/index.js +++ b/projects/letsfil/index.js @@ -1,6 +1,6 @@ const sdk = require('@defillama/sdk'); const ADDRESSES = require('../helper/coreAssets.json') -const LETSFIL_CONTRACT = '0x74a37AC5f124d25284ffEc0107cB93a6f9A2E433'; +const LETSFIL_CONTRACT = "0x74a37AC5f124d25284ffEc0107cB93a6f9A2E433"; async function tvl(_, _1, _2, { api }) { From b56b9db52a5cb74f22c088fb1b9da3924684c6dd Mon Sep 17 00:00:00 2001 From: define Date: Wed, 14 Jun 2023 13:46:34 +0100 Subject: [PATCH 0746/1354] add op staking contract --- projects/perp/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/perp/index.js b/projects/perp/index.js index bc4e377433..d0e69d6892 100644 --- a/projects/perp/index.js +++ b/projects/perp/index.js @@ -2,13 +2,15 @@ const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const perpToken = "0xbC396689893D065F41bc2C6EcbeE5e0085233447" +const perpTokenOP = "0x9e1028F5F1D5eDE59748FFceE5532509976840E0" const stakingContract = "0x0f346e19F01471C02485DF1758cfd3d624E399B4" - +const stakingContractOP = "0xD360B73b19Fb20aC874633553Fb1007e9FcB2b78" module.exports = { ethereum: { staking: staking(stakingContract, perpToken) }, optimism: { + staking: staking(stakingContractOP, perpTokenOP), tvl: staking( [ "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60" From 7c6a601965a16a452372e657dba116cc35583762 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 14 Jun 2023 15:27:30 +0200 Subject: [PATCH 0747/1354] shoebill: add kava network --- projects/shoebillFinance/index.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/projects/shoebillFinance/index.js b/projects/shoebillFinance/index.js index da496599b8..9db30a8c81 100644 --- a/projects/shoebillFinance/index.js +++ b/projects/shoebillFinance/index.js @@ -1,9 +1,9 @@ const { toUSDTBalances } = require("../helper/balances"); -const shoebillDataProviderAddress = "0xBdc26Ba6a0ebFD83c76CEf76E8F9eeb7714A5884"; const protocolDataProviderAbi = "function getAllAggregatedReservesData() view returns (tuple(tuple(string internalSymbol, address internalAddress, string externalSymbol, address externalAddress, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress) token, tuple(uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, uint256 reserveFactor, bool usageAsCollateralEnabled, bool borrowingEnabled, bool stableBorrowRateEnabled, bool isActive, bool isFrozen, uint256 decimals) configuration, tuple(uint256 availableLiquidity, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp, bool isCollateral, address yieldAddress) overview, uint256 oraclePrice)[])" async function tvl(timestamp, ethBlock, chainBlocks, { api }) { + const shoebillDataProviderAddress = config[api.chain].dataProvider const aggregatedData = await api.call({ target: shoebillDataProviderAddress, abi: protocolDataProviderAbi }) const data = aggregatedData.filter(i => i.overview).map((e) => { @@ -17,6 +17,7 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) { return toUSDTBalances(totalSupplyTvl); } async function borrowed(timestamp, ethBlock, chainBlocks, { api }) { + const shoebillDataProviderAddress = config[api.chain].dataProvider const aggregatedData = await api.call({ target: shoebillDataProviderAddress, abi: protocolDataProviderAbi }) const data = aggregatedData.map((e) => { @@ -33,8 +34,13 @@ module.exports = { doublecounted: true, methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending", - klaytn: { - tvl, - borrowed, - }, }; + +const config = { + klaytn: { dataProvider: '0xBdc26Ba6a0ebFD83c76CEf76E8F9eeb7714A5884', }, + kava: { dataProvider: '0xb2631276eE6524C6A7f205600F44E1408F21235F', }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl, borrowed, } +}) \ No newline at end of file From bab2d7e25fe41a16e56322a4fcab33b1e7276b3d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 14 Jun 2023 16:15:23 +0200 Subject: [PATCH 0748/1354] voltz: add arbitrum and avax --- projects/voltz/index.js | 32 ++++++++++++++++++++------------ projects/wbtc.js | 7 +++++++ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/projects/voltz/index.js b/projects/voltz/index.js index c48c93b33b..afbc7607e4 100644 --- a/projects/voltz/index.js +++ b/projects/voltz/index.js @@ -3,28 +3,36 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') async function getTokensAndOwners(api) { - const Factory = '0x6a7a5c3824508D03F0d2d24E0482Bea39E08CcAF' + const { factory, fromBlock } = config[api.chain] const logs = await getLogs({ api, - target: Factory, - fromBlock: 14878442, + target: factory, + fromBlock, + onlyArgs: true, topic: 'IrsInstance(address,address,uint256,uint256,int24,address,address,address,uint8,uint8)', eventAbi: 'event IrsInstance (address indexed underlyingToken, address indexed rateOracle, uint256 termStartTimestampWad, uint256 termEndTimestampWad, int24 tickSpacing, address marginEngine, address vamm, address fcm, uint8 yieldBearingProtocolID, uint8 underlyingTokenDecimals)', }) - return logs.map((log) => log.args).map(i => ([i[0], i[5]])) + return logs.map(i => ([i.underlyingToken, i.marginEngine])) } async function tvl(_, block, _1, { api }) { - return sumTokens2({ - tokensAndOwners: await getTokensAndOwners(api), - block, - }); + return sumTokens2({ api, tokensAndOwners: await getTokensAndOwners(api), }) } module.exports = { - ethereum: { - tvl, - }, methodology: `It takes the list of all the Margin Engines deployed by the Voltz Factory and aggregates their token holdings. These token holdings represent the margin that supports liquidity provider and trader positions in Voltz interest rate swap pools.`, -}; \ No newline at end of file +}; + +const config = { + ethereum: { factory: '0x6a7a5c3824508D03F0d2d24E0482Bea39E08CcAF', fromBlock: 14878442 }, + arbitrum: { factory: '0xda66a7584da7210fd26726EFb12585734F7688c1', fromBlock: 60246384 }, + avax: { factory: '0xda66a7584da7210fd26726EFb12585734F7688c1', fromBlock: 30096058 }, +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file diff --git a/projects/wbtc.js b/projects/wbtc.js index 83a24d49a8..39e9bc8f89 100644 --- a/projects/wbtc.js +++ b/projects/wbtc.js @@ -6,8 +6,15 @@ async function tvl(ts, block) { [ADDRESSES.ethereum.WBTC]: (await sdk.api.erc20.totalSupply({ target: ADDRESSES.ethereum.WBTC, block })).output } } +async function tvlTron(ts, block, _, { api }) { + return { + [ADDRESSES.ethereum.WBTC]: (await api.call({ target: 'TXpw8XeWYeTUd4quDskoUqeQPowRh4jY65', abi: 'erc20:totalSupply' })), + ['ethereum:'+ADDRESSES.null]: (await api.call({ target: 'TXWkP3jLBqRGojUih1ShzNyDaN5Csnebok', abi: 'erc20:totalSupply' })), + } +} module.exports = { ethereum: { tvl }, + tron: { tvl: tvlTron }, methodology: `TVL for WBTC consists of the BTC deposits in custody that were used to mint WBTC` } From 939e720d4ae01673651995ac4146f81b65395e8e Mon Sep 17 00:00:00 2001 From: Cian <96416801+NatureLab@users.noreply.github.com> Date: Wed, 14 Jun 2023 22:24:26 +0800 Subject: [PATCH 0749/1354] Add arbitrum data for cian. (#6545) --- projects/cian/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/cian/index.js b/projects/cian/index.js index a3e52f3e6e..62506014f0 100644 --- a/projects/cian/index.js +++ b/projects/cian/index.js @@ -19,6 +19,12 @@ async function fetchPolygon() { return toUSDTBalances(value); } +async function fetchArbitrum() { + const value = await get("https://data.cian.app/arbitrum/api/v1/tvl"); + + return toUSDTBalances(value); +} + module.exports = { misrepresentedTokens: true, doublecounted: true, @@ -32,4 +38,7 @@ module.exports = { ethereum: { tvl: fetchEthereum, }, + arbitrum: { + tvl: fetchArbitrum, + }, }; From d62c9bc5129c6986b8a9894091cc8f44a4ba4c8d Mon Sep 17 00:00:00 2001 From: Kostas Tzoumpas Date: Wed, 14 Jun 2023 14:29:05 +0000 Subject: [PATCH 0750/1354] new farm added (#6544) --- projects/quantumx-network/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/quantumx-network/index.js b/projects/quantumx-network/index.js index d1a9c07ea5..3dfa35b250 100644 --- a/projects/quantumx-network/index.js +++ b/projects/quantumx-network/index.js @@ -185,7 +185,7 @@ const tvl = async () => { (farm) => mexPairs.findIndex( (mexPair) => mexPair.id === farm.farm.stakingToken - ) !== -1 || farm.farm.stakingToken == "RAREWEGLD-b29251" + ) !== -1 || farm.farm.stakingToken == "RAREWEGLD-b29251" || farm.farm.stakingToken == "HYPELEGLD-d65493" ) : []; @@ -227,6 +227,7 @@ const tvl = async () => { if (stakingToken?.identifier != "BONEZ-ff9a73" && stakingToken?.identifier != "RAREWEGLD-b29251" + && stakingToken?.identifier != "HYPELEGLD-d65493" && farm.farm.farmId != 36 && farm.farm.farmId != 41) { tvlDollar += formatBalanceDolar( From 6a369084038451cd04a82a3947728add08ed7013 Mon Sep 17 00:00:00 2001 From: Roch Date: Wed, 14 Jun 2023 16:30:56 +0200 Subject: [PATCH 0751/1354] feat: adds Owna protocol for polygon zkevm (#6543) --- projects/owna/config.js | 14 ++++++++++++++ projects/owna/index.js | 13 +++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 projects/owna/config.js create mode 100644 projects/owna/index.js diff --git a/projects/owna/config.js b/projects/owna/config.js new file mode 100644 index 0000000000..05d736df3c --- /dev/null +++ b/projects/owna/config.js @@ -0,0 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') +module.exports = { + chains: [ + { + name: 'polygon_zkevm', + tokens: [ + ADDRESSES.polygon_zkevm.USDC, + ], + holders: [ + '0x27Ca3D6c64398FF9BcF2E66896EC4B3BEc5e1959', + ] + }, + ] +} \ No newline at end of file diff --git a/projects/owna/index.js b/projects/owna/index.js new file mode 100644 index 0000000000..ad2b1240da --- /dev/null +++ b/projects/owna/index.js @@ -0,0 +1,13 @@ +const config = require("./config"); +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + methodology: 'Counts the amount of stables locked in Owna protocol contracts', +}; + +config.chains.forEach(chainInfo => { + const {name: chain, tokens, holders} = chainInfo + module.exports[chain] = { + tvl: sumTokensExport({ chain, tokens, owners: holders }) + } +}) \ No newline at end of file From ebec0505519f7f185c5ee41d86f6157de7511b3e Mon Sep 17 00:00:00 2001 From: deif Date: Wed, 14 Jun 2023 17:59:53 +0100 Subject: [PATCH 0752/1354] add on-chain gravita-protocol liquidation adapter --- liquidations/gravita-protocol/index.ts | 174 +++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 liquidations/gravita-protocol/index.ts diff --git a/liquidations/gravita-protocol/index.ts b/liquidations/gravita-protocol/index.ts new file mode 100644 index 0000000000..e681aeb183 --- /dev/null +++ b/liquidations/gravita-protocol/index.ts @@ -0,0 +1,174 @@ +import axios from "axios"; +import BigNumber from "bignumber.js"; +import { Liq } from "../utils/types"; +const sdk = require("@defillama/sdk"); + +type MulticallResponse = { + output: { + input: any; + success: boolean; + output: T; + }[]; +}; + +const ADMIN_CONTRACT_ADDRESS = "0xf7Cc67326F9A1D057c1e4b110eF6c680B13a1f53"; +const VESSEL_MANAGER_CONTRACT_ADDRESS = "0xdB5DAcB1DFbe16326C3656a88017f0cB4ece0977"; +const BLUSD_CONTRACT_ADDRESS = "0xB9D7DdDca9a4AC480991865EfEf82E01273F79C3"; +const WETH_CONTRACT_ADDRESS = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; + +const EXPLORER_BASE_URL = "https://etherscan.io/address/"; + +const getTokenInfo = async (tokenId: string) => { + const info = (await axios.get("https://coins.llama.fi/prices/current/" + tokenId)).data.coins as { + [tokenId: string]: { + decimals: number; + price: number; + symbol: string; + timestamp: number; + confidence: number; + }; + }; + const price = info[tokenId]; + return price; +}; + +// cr * debt / collateral = price +const calculateLiquidationPrice = (debt: string, collateral: string, cr: string) => { + const price = new BigNumber(cr).times(debt).div(collateral).toString(); + return price; +}; + +const tokenToCollateralAddress = (token: string) => { + if (token === WETH_CONTRACT_ADDRESS) { + return "ethereum:0x0000000000000000000000000000000000000000" + } + return "ethereum:" + token +} + +const positions = async () => { + let collAddresses = (await sdk.api.abi.call({ + abi: "function getValidCollateral() external view returns (address[])", + target: ADMIN_CONTRACT_ADDRESS, + })).output; + + collAddresses = collAddresses.filter(i => i !== BLUSD_CONTRACT_ADDRESS) // BLUSD is not liquidatable + + // get prices for calculating recovery mode + const prices = {} + for (const c of collAddresses) { + const info = await getTokenInfo(`ethereum:${c}`) + prices[c] = BigNumber(info.price).times(10e18).toFixed() + } + + const vesselCounts = ( + (await sdk.api.abi.multiCall({ + calls: collAddresses.map((i) => ({ target: VESSEL_MANAGER_CONTRACT_ADDRESS, params: [i] })), + abi: "function getVesselOwnersCount(address) external view returns (uint256)", + requery: true, + })) as MulticallResponse + ).output.map((x, i) => { + return { + asset: collAddresses[i], + count: x.output + } + }); + + const vesselOwnerQueries = ([] as any[]).concat(...vesselCounts.map(({ asset, count }) => { + return Array.from(Array(Number(count))).map((_, i) => { + return { + target: VESSEL_MANAGER_CONTRACT_ADDRESS, + params: [asset, i] + } + }) + })); + + const vesselAddresses = ( + (await sdk.api.abi.multiCall({ + calls: vesselOwnerQueries, + abi: "function getVesselFromVesselOwnersArray(address,uint256) external view returns (address)", + requery: true, + })) as MulticallResponse + ).output.map((x, i) => { + return { + asset: vesselOwnerQueries[i].params[0], + vessel: x.output + } + }); + + const vesselDebtsAndCollaterals = ( + (await sdk.api.abi.multiCall({ + calls: vesselAddresses.map((i) => ({ target: VESSEL_MANAGER_CONTRACT_ADDRESS, params: [i.asset, i.vessel] })), + abi: "function getEntireDebtAndColl(address,address) external view returns (uint256,uint256,uint256,uint256)", + requery: true, + })) as MulticallResponse + ).output.map((x, i) => { + return { + asset: vesselAddresses[i].asset, + owner: vesselAddresses[i].vessel, + coll: x.output[1], + debt: x.output[0] + } + }); + + const recoveryModeCRs = ( + (await sdk.api.abi.multiCall({ + calls: collAddresses.map((i) => ({ target: ADMIN_CONTRACT_ADDRESS, params: [i] })), + abi: "function getCcr(address) external view returns (uint256)", + requery: true, + })) as MulticallResponse + ).output.map((x, i) => { + return { + asset: collAddresses[i], + recoveryCR: BigNumber(x.output).div(10e17).toFixed(3) + } + }); + + const minimumCRs = ( + (await sdk.api.abi.multiCall({ + calls: collAddresses.map((i) => ({ target: ADMIN_CONTRACT_ADDRESS, params: [i] })), + abi: "function getMcr(address) external view returns (uint256)", + requery: true, + })) as MulticallResponse + ).output.map((x, i) => { + return { + asset: collAddresses[i], + minCR: BigNumber(x.output).div(10e17).toFixed(3) + } + }); + + const recoveryModes = ( + (await sdk.api.abi.multiCall({ + calls: collAddresses.map((i) => ({ target: VESSEL_MANAGER_CONTRACT_ADDRESS, params: [i, prices[i]] })), + abi: "function checkRecoveryMode(address,uint256) external view returns (bool)", + requery: true, + })) as MulticallResponse + ).output.map((x, i) => { + return { + asset: collAddresses[i], + isRecoveryMode: x.output + } + }); + + const vessels = vesselDebtsAndCollaterals.map(({ asset, coll, debt, owner }) => { + const cr = recoveryModes.find(i => i.asset === asset).isRecoveryMode ? + recoveryModeCRs.find(i => i.asset === asset).recoveryCR : + minimumCRs.find(i => i.asset === asset).minCR; + return { + owner, + liqPrice: Number(calculateLiquidationPrice(debt, coll, cr)), + collateral: tokenToCollateralAddress(asset), // ETH + collateralAmount: coll, + extra: { + url: EXPLORER_BASE_URL + owner, + }, + } as Liq; + }); + + return vessels; +}; + +module.exports = { + ethereum: { + liquidations: positions, + }, +}; From 339fc5c3b8a3150a270d0ff5f8620267daf3a0f2 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Wed, 14 Jun 2023 20:30:43 +0100 Subject: [PATCH 0753/1354] serum hallmark --- projects/serum.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/serum.js b/projects/serum.js index 8cf1a10ba5..9e1f68e6c5 100644 --- a/projects/serum.js +++ b/projects/serum.js @@ -32,6 +32,7 @@ module.exports = { timetravel: false, hallmarks: [ [1667826000, "FTX/Alameda collapse"], + [1680310800, "Move to onchain data"], ], solana: { tvl, }, } From 32ae6a9e41e1c5733a65b958e0f89bce75e9fd60 Mon Sep 17 00:00:00 2001 From: Jon Greenwood <81202085+0xJonHoldsCrypto@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:33:11 -0500 Subject: [PATCH 0754/1354] Support for OP Tokens - OP, WETH, USDC, wstETH and VA variants (#6549) * Update index.js * Add OP Support vaOP, vaUSDC, vaETH, vawstETH, wstETH, WETH, OP, USDC * Update index.js * minor fix --------- Co-authored-by: Jon Greenwood Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/metronome-synth/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/projects/metronome-synth/index.js b/projects/metronome-synth/index.js index 454c2bf01d..52915b8153 100644 --- a/projects/metronome-synth/index.js +++ b/projects/metronome-synth/index.js @@ -21,4 +21,18 @@ module.exports = { ] }), }, + optimism: { + tvl: sumTokensExport({ + owner: '0x4c6bf87b7fc1c8db85877151c6ede38ed27c34f6', + tokens: [ + ADDRESSES.optimism.USDC, + ADDRESSES.optimism.WETH, + ADDRESSES.optimism.OP, + "0xdd63ae655b388cd782681b7821be37fdb6d0e78d", + "0xccf3d1acf799bae67f6e354d685295557cf64761", + "0x19382707d5a47e74f60053b652ab34b6e30febad", + "0x539505dde2b9771debe0898a84441c5e7fdf6bc0", + ] + }), + } } From a479274127dd9f1cf2846fc78325a100fc6d9987 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 14 Jun 2023 21:50:54 +0100 Subject: [PATCH 0755/1354] add eigenlayer --- projects/eigenlayer/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/eigenlayer/index.js diff --git a/projects/eigenlayer/index.js b/projects/eigenlayer/index.js new file mode 100644 index 0000000000..a94a0fe18d --- /dev/null +++ b/projects/eigenlayer/index.js @@ -0,0 +1,19 @@ +const { sumTokensExport } = require("../helper/unwrapLPs") + +// eigen pods are paused for now but theyre missing +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owners: [ + '0x93c4b944d05dfe6df7645a86cd2206016c51564d', //steth + '0x1bee69b7dfffa4e2d53c2a2df135c388ad25dcd2', //reth + '0x54945180db7943c0ed0fee7edab2bd24620256bc', //cbeth + ], + tokens: [ + '0xae7ab96520de3a18e5e111b5eaab095312d7fe84', + '0xae78736cd615f374d3085123a210448e74fc6393', + '0xbe9895146f7af43049ca1c1ae358b0541ea49704', + ] + }), + }, +} \ No newline at end of file From 09baabea1d98a23d57c50e2a22c07bad1e678870 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 14 Jun 2023 23:19:02 +0200 Subject: [PATCH 0756/1354] update eigenlayer --- projects/eigenlayer/index.js | 43 ++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/projects/eigenlayer/index.js b/projects/eigenlayer/index.js index a94a0fe18d..8e0ed8e799 100644 --- a/projects/eigenlayer/index.js +++ b/projects/eigenlayer/index.js @@ -1,19 +1,34 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') -// eigen pods are paused for now but theyre missing +async function tvl(_, _b, _cb, { api, }) { + const logs = await getLogs({ + api, + target: '0x858646372CC42E1A627fcE94aa7A7033e7CF075A', + topic: 'StrategyAddedToDepositWhitelist(address)', + eventAbi: "event StrategyAddedToDepositWhitelist(address strategy)", + onlyArgs: true, + fromBlock: 17445564, + }) + const podLogs = await getLogs({ + api, + target: '0x91E677b07F7AF907ec9a428aafA9fc14a0d3A338', + topics: ['0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a'], + eventAbi: "event PodDeployed (address indexed eigenPod, address indexed podOwner)", + onlyArgs: true, + fromBlock: 17445564, + }) + const strategies = logs.map(log => log.strategy) + const pods = podLogs.map(log => log.eigenPod) + const restakedStatus = await api.multiCall({ abi: 'bool:hasRestaked', calls: pods }) + restakedStatus.filter(i => i).forEach(() => api.add(nullAddress, 32 * 1e18)) + const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: strategies }) + return sumTokens2({ api, tokensAndOwners2: [tokens, strategies] }) +} + +// https://github.com/Layr-Labs/eigenlayer-contracts/blob/master/script/output/M1_deployment_mainnet_2023_6_9.json module.exports = { ethereum: { - tvl: sumTokensExport({ - owners: [ - '0x93c4b944d05dfe6df7645a86cd2206016c51564d', //steth - '0x1bee69b7dfffa4e2d53c2a2df135c388ad25dcd2', //reth - '0x54945180db7943c0ed0fee7edab2bd24620256bc', //cbeth - ], - tokens: [ - '0xae7ab96520de3a18e5e111b5eaab095312d7fe84', - '0xae78736cd615f374d3085123a210448e74fc6393', - '0xbe9895146f7af43049ca1c1ae358b0541ea49704', - ] - }), + tvl, }, } \ No newline at end of file From aa876e8c3ac66a923a48238a87002d164506d21d Mon Sep 17 00:00:00 2001 From: xIceyyx <77045488+xIceyyx@users.noreply.github.com> Date: Wed, 14 Jun 2023 23:50:30 +0100 Subject: [PATCH 0757/1354] Add files via upload (#6551) * Add files via upload * Update index.js --- projects/PlsPrint/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/PlsPrint/index.js diff --git a/projects/PlsPrint/index.js b/projects/PlsPrint/index.js new file mode 100644 index 0000000000..f703f28ade --- /dev/null +++ b/projects/PlsPrint/index.js @@ -0,0 +1,18 @@ +const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); + +const contract = "0x750684313510d680D172FD5734e49De3cE91925D"; + +async function tvl(time, ethBlock, { bsc: block }) { + return sumTokens2({ + tokens: [nullAddress], + owner: contract, + block, + chain: "pulse", + }); +} + +module.exports = { + pulse: { + tvl, + }, +}; From c26450a4237da32ed75787e29d2df70cd74ec3da Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Thu, 15 Jun 2023 08:28:40 +0200 Subject: [PATCH 0758/1354] feat: add carmine options tvl --- projects/carmine-options/abi.js | 42 ++++++++++++++++++++++ projects/carmine-options/api.js | 59 +++++++++++++++++++++++++++++++ projects/carmine-options/index.js | 1 + 3 files changed, 102 insertions(+) create mode 100644 projects/carmine-options/abi.js create mode 100644 projects/carmine-options/api.js create mode 100644 projects/carmine-options/index.js diff --git a/projects/carmine-options/abi.js b/projects/carmine-options/abi.js new file mode 100644 index 0000000000..d00bfb9aae --- /dev/null +++ b/projects/carmine-options/abi.js @@ -0,0 +1,42 @@ +const abi = [ + { + inputs: [ + { + name: "lptoken_address", + type: "felt", + }, + ], + name: "get_unlocked_capital", + outputs: [ + { + name: "unlocked_capital", + type: "Uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + name: "lptoken_address", + type: "felt", + }, + ], + name: "get_value_of_pool_position", + outputs: [ + { + name: "res", + type: "felt", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const objAbi = {}; + +abi.forEach((i) => (objAbi[i.name] = i)); + +module.exports = objAbi; diff --git a/projects/carmine-options/api.js b/projects/carmine-options/api.js new file mode 100644 index 0000000000..b4ac67cd72 --- /dev/null +++ b/projects/carmine-options/api.js @@ -0,0 +1,59 @@ +// https://www.starknetjs.com/docs/API/contract + +const BN = require("bn.js"); +const { multiCall, parseAddress } = require("../helper/chain/starknet"); +const abi = require("./abi"); + +const amm = + "0x076dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa"; +const twoPow61 = new BN(2).pow(new BN(61)); +const tenPowN = (n) => new BN(10).pow(new BN(n)); + +const pools = [ + // EthUsdcCall pool + { + address: + "0x7aba50fdb4e024c1ba63e2c60565d0fd32566ff4b18aa5818fc80c30e749024", + token: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + decimals: 18, + }, + // EthUsdcPut pool + { + address: + "0x18a6abca394bd5f822cfa5f88783c01b13e593d1603e7b41b00d31d2ea4827a", + token: "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", + decimals: 6, + }, +]; + +async function tvl(_, _1, _2, { api }) { + const calls = pools.map((pool) => ({ + params: [parseAddress(pool.address)], + })); + + const [unlocked_capitals, pool_positions] = await Promise.all([ + multiCall({ abi: abi.get_unlocked_capital, target: amm, calls }), + multiCall({ + abi: abi.get_value_of_pool_position, + target: amm, + calls, + }), + ]); + + pools.forEach((pool, i) => { + // pool TVL is unlocked capital in the pool + position of the pool + // the position is in Math64x61, therefore: + // TVL = unlocked + pool_position * 10**decimals / 2**61 + const poolTvl = unlocked_capitals[i].add( + pool_positions[i].mul(tenPowN(pool.decimals)).div(twoPow61) + ); + api.add(pool.token, poolTvl); + }); +} + +module.exports = { + methodology: 'Sums the unlocked capital and position of each pool.', + starknet: { + tvl, + }, +}; diff --git a/projects/carmine-options/index.js b/projects/carmine-options/index.js new file mode 100644 index 0000000000..674e8c995c --- /dev/null +++ b/projects/carmine-options/index.js @@ -0,0 +1 @@ +module.exports = require('./api') \ No newline at end of file From 300714a5c8b9069ad7451abdf77c6db1b9422b03 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 09:00:35 +0200 Subject: [PATCH 0759/1354] merge pawnfi: lending & nft --- projects/pawnfi-lending/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/pawnfi-lending/index.js b/projects/pawnfi-lending/index.js index b4db4b231b..eab3631fc0 100644 --- a/projects/pawnfi-lending/index.js +++ b/projects/pawnfi-lending/index.js @@ -2,6 +2,8 @@ const ABI = require("../pawnfi/helper/abi.json") const { Lending, LendCToken } = require("../pawnfi/helper/config.js") const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') +const { mergeExports } = require('../helper/utils') +const nftTvl = require('../pawnfi-nft/index.js') async function getPawnNFTTokens(api) { const logs = await getLogs({ @@ -32,6 +34,6 @@ async function tvl(timestamp, block, _, { api }) { } -module.exports = { +module.exports = mergeExports([{ ethereum: { tvl, borrowed }, -} +}, nftTvl]) From 85c2777c8314e567ceb586577597b055fe56e906 Mon Sep 17 00:00:00 2001 From: xlsd <136213400+extlsd@users.noreply.github.com> Date: Thu, 15 Jun 2023 15:11:50 +0800 Subject: [PATCH 0760/1354] add XLSD tvl calculation (#6547) * Create index.js initial defillama xlsd project * Update index.js * Update index.js * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/unwrapLPs.js | 4 ++-- projects/xlsd/index.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 projects/xlsd/index.js diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 9fc5a21ca6..cff2ca6b24 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -730,8 +730,8 @@ async function sumTokens2({ } } -function sumTokensExport({ balances, tokensAndOwners, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) { - return async (_, _b, _cb, { api }) => sumTokens2({ api, balances, tokensAndOwners, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) +function sumTokensExport({ balances, tokensAndOwners,tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) { + return async (_, _b, _cb, { api }) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) } async function unwrapBalancerToken({ api, chain, block, balancerToken, owner, balances = {}, isBPool = false, isV2 = true }) { diff --git a/projects/xlsd/index.js b/projects/xlsd/index.js new file mode 100644 index 0000000000..6c194d3d50 --- /dev/null +++ b/projects/xlsd/index.js @@ -0,0 +1,12 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const LSD_TOKENS = ['0x22aB6bC52CAD84AAe84bD5781258677a6E0cFaB0', '0xce3a75572bc375476438206f6F29f46F8466EcC2', '0xC56dC613C8EF3C57314171d73EAEFE87Aa469186']; +const STAKING_POOL_ADDRESS = ['0x675B74A939fF8b16bA90Af9Cc9e6981a7975401E', '0x7931bfCeeD6FC04D35de75608F2977F3d3a69bc5', '0x77b16981d200dFe89Dd3AD5dc3238967646DDB28']; + +module.exports = { + methodology: "TVL of Staked ETH & LSD tokens in the StakingPool contracts", + arbitrum: { + tvl: () => ({}), + staking: sumTokensExport({ tokensAndOwners2: [LSD_TOKENS, STAKING_POOL_ADDRESS], }), + }, +}; From f2ad8ad76286752ea5cfc7a87da1a103a11e73e0 Mon Sep 17 00:00:00 2001 From: define Date: Thu, 15 Jun 2023 10:48:10 +0100 Subject: [PATCH 0761/1354] cex adapter for okcoin --- projects/okcoin/index.js | 270 +++++++++++++-------------------------- 1 file changed, 88 insertions(+), 182 deletions(-) diff --git a/projects/okcoin/index.js b/projects/okcoin/index.js index a45c997563..f97b4f305e 100644 --- a/projects/okcoin/index.js +++ b/projects/okcoin/index.js @@ -3,195 +3,100 @@ const { cexExports } = require('../helper/cex') const config = { ethereum: { owners: [ - '0xa28062bd708ce49e9311d6293def7df63f2b0816', - '0x2ce910fbba65b454bbaf6a18c952a70f3bcd8299', + //only wallets with more than 100 USD '0xd30b438df65f4f788563b2b3611bd6059bff4ad9', '0x4a8f1f5b2a3652131eac54a6f183a4a2cf44a9a6', - '0xd7efcbb86efdd9e8de014dafa5944aae36e817e4', + '0x2ce910fbba65b454bbaf6a18c952a70f3bcd8299', + '0xa28062bd708ce49e9311d6293def7df63f2b0816', '0x964b78ef2925f24c3a8d270c10522638dee5f17f', + '0xd7efcbb86efdd9e8de014dafa5944aae36e817e4' ], }, bitcoin: { owners: [ - '3EunnmL6LhqcB9u3PVbUAdtj1vZdGQgFBP', - '3HPQGA5BDsfk2Wxy4jjkg9bNpxKz33kN5o', - '36Y1UJBWGGreKCKNYQPVPr41rgG2sQF7SC', - 'bc1qwx5493sxzt58j4w7tqdkkxg9prxwypcnu8yw564q9dx07j2dg2usvsgm8p', - 'bc1qdfczq588vxjw75708jnv0l58hunh0a3xpyl4xnx4pzymq0nwjfasldftyv', - '38xvfmxwR81ZtdQRw8j5XLwP38J2AioW6i', - '361SutatvucBNkTBZvmNPaXThLbDm1XK5i', - '36j6PzEU83pmM1PbHCP3uBH9HcuwYX1igb', - '36igHhLGsmCt4Qh1TZTgzinEjU3AQipVDi', - 'bc1qwkh46xvgq2znq972w9re56gznyf965244sznps3x8gfc9nk42ejsc5jn7f', - 'bc1q3kq7gcgaug7glvenrefytekkrl7wz988zqwucaulp645q76uxlzsnsayx2', - 'bc1qzqxlgw0nfuqswnrmnwpw95fdvcfvc5hcqza37c0kjuvu8zsfvlqspurstr', - 'bc1qcetd4jsxxllvj7psq7n22p5zt0z73ca8yd47wjgp2wh4rv6v4aqq7xexlk', - 'bc1q2gmemmlz64s4fnyvy3xqz98c73qpdc0p6dv7zj2qjzpc57cqnvpsshfa5e', - 'bc1qq59den5kwgas3yryp742m56crrwqqayhzzcx326s65sqw7myvqps7q0dy6', - 'bc1q6f5r5d75k4uyzly943p9z3n4n3lgaedtddt9zu9tw8d0ahsf339sucn978', - 'bc1qjnj9mvfz59kn40k9rceyxj3zue6zrzknsplk92kxsf5l26v05ezsey80cm', - 'bc1q7ud6u0gvgq2n4jl5huj5mswlxhkwmch6syn48ah72ph25ckcx4qsygvhh6', - 'bc1qr2smyzl5lcjwk03s5ca5ma74jl4sx007qmtvgx4a97fftvpm7ghq4nlvjn', - 'bc1q6vywz7nlemayvxnkacln47wr69j7j0r0dykcl23vdjr8ssdmkpjszaghna', - 'bc1qqvp7nwgh4yca3yz6ww5kxkuvwcwawcnufqzn0hv2nne7t8l0dqhqu6xjdz', - 'bc1qet9lkfpc2ggfa3pm93dd7algtx9uux5pywyq72l0m5ree82ee5cs5jy37v', - 'bc1qcmas6e30q6hyhxrsjlp02fltjpnm5ps7w54ndlhanydz6z8e2p2s3rm7ws', - 'bc1qzve88rsexgw4veds3u536j76q8u63qdqx4uyx7qmpfqls7d4d9dsvdfxa7', - 'bc1qlrkpwmw4maqendwghc726deh6ch0u659s3l3snlxnx9pvm2f7jhsfrd4lp', - 'bc1qu5t70knuu6nye084x877kny6elvx5waarj8r77v2q8eycymy6cfqnn832z', - 'bc1qdjaduy7409zl6qkf76knsv8vs96a0pcmevyply3hzyphvp6m2s6qhvljne', - 'bc1q2ckykmuc0u4l7zrsv5c52y5uku2zy3y82w8pwtks3mhpan00lplq2xv3tt', - 'bc1qet4drerlrwu86ep0xp8mdzxkmscdj3672uxeuwfzscly8axy04kq74e0ae', - 'bc1qnp7julzx0qyyz7dapdjjyuvlhd696frj0puu9gptwdutvhryyvcsuvc3na', - 'bc1quktu2u654pelsn7qtmv839yyg0xecmdr59r6tuu0t5hcxq5nsxwqc5fzpu', - 'bc1qzrz29mxxlv3lnsng50lzpa6xrl848jp3lwmcn67t082k2xv45muswkwelc', - //wallets within 0.05 and 1 btc - '3JnxnGXVn1iSkjhsAtNRq2GGgZaDXz9SZv', -'3BiJA1srAFWoaoCPAjvNiwSmgFGGnRXCQA', -'3Mn6GnHRtA5S9HWgKdJnTfGyCgj5r8a7d8', -'3DekqjWw33GGZi6ER4QLTsyDZV8gEycLnt', -'3DFiiWYGszd44qADZFMae4vSwVkzKH9D1J', -'3BQ2ZssxxTpkDhSC1kanGpQ2ofNfZHfqdE', -'3L8Jow9gos1tewxYKvhxUeE43dzxFP7jfw', -'3Jcus23RVs6iyCLS4x67o64wZJuxyLJPEy', -'3EsXfkx4hdLdX6GhzthGw4G4QJSPymGyqY', -'39yNTRaotoLsGtUWrJQ2FTg4uT9i8jETNs', -'34Hx5KffA1mUQG23ZdcZ7zhpPj1jdHRPB7', -'336RCi69KyksFvfd5K8nVgv2V6L4TzPo5e', -'33Us9LTox4pPCyDRucWAeAgv5HFJ3F8QEY', -'33Miwhfghqp2fPre272zM6bBPjU6fFBjdP', -'3JrDVvApcDrJvYUhGoSXAkwCxJkxH37uRY', -'3ARVBKq7MESv4aKXeXZVjhMxmBBC7Uohvt', -'37jUoYXzKb5M2kvdXRxGnwmRrHLXuBPkGR', -'3MWUMsGmx3y1iBDCwjkZp1XdUxEHYNzUq2', -'3L39V5WF9422tHSjK7joFPnriioCrPim7j', -'35tt48ioWimAbPLxk4MfWkp6La2B7gRbRd', -'35PTstw2PqGrquLnUhmye3A2nMZJzeK5MF', -'32UxKDSVdSeaNyAQQd5UfHveJzAikbGLmT', -'39uKss4GEpj7F8Z39tSThmatWivVW9N3cV', -'3Kv5DCmHU64wN68hiD6hGyTgfEv3E7czDd', -'bc1qngnta9lvmht9z6y4nq5kc8x57pzan0e5daxrxtg3llgpd2jfumts8056hj', -'3PTcMGdNKYV5ZZDQorNYmMxoVDoghFcwWn', -'bc1q73cqllektyf7wgkfl9ar85sr56vuz7w8lre75ux8m0r3vcplqjmq6d8jkd', -'3EXXcxmcfAtMG5SeUshEZMGD3NEuDZWSXg', -'3Bbyo51FEEM8jzw2JQEwu7DQmBPMJzWRj4', -'36LdQB5Ae5BbnQv18R61qotgicbG1dTaBj', -'3Ad6D5e83PfTxZpdYQumYiMrFnc7S6hE1P', -'3Kib3E62NKnL4bAy425G14BPofYH5qMgMF', -'3HWqMWUcDxFjyCKvSBSmYDpGXWNqPaYoW1', -'3H36uhmRugEN9ySYSh4ZftP1GerUfvseXP', -'3FmNm3byE5qwzfgQbQod3jHoKGy5r4Qapp', -'37x2VKLx335bQE5ypAmU1Ma5FnShb1MSBV', -'3MxBjHLRhvV1jPLTtgUAdfDw8xJ4ww5R3z', -'3GVHA98byHdxekZjBhHBWdHCMH4GRNC61e', -'35t1TFTbUcTH5ZnZiMVqQUPUtfT4sRcTrC', -'bc1qp8gd6xakvqqg7qt9ktfpq4wrsfhp0jlyzy4npfk22xh5qk83fztqsuuspf', -'3NMQ4igWQVAZq1NeUSd4a2NLJ65w8JqmFS', -'3AxGEYCt8Hq13E6LhENzL1q6ieP7fv9M8s', -'37J1MywnA1NY1mmC9ny4EgmkKEFB8zmg33', -'35VhixfJ7PhxF12F6oCSnzm6Cgu5RZUoMu', -'3FFyv1BR5r93YN8aVpmJ7JDeMH7TeccZw7', -'37HNTMRUGWFMzws1RF6fAp2sDP5m6tMwec', -'34UEa6zLvRpTb2EHXeCSvTsFm1Ps2GuLHQ', -'3JeBScBZpYp4szgK1R8LCZvA2tzkXr9VRD', -'38E56tLzMHxpmwfdgB6BaPgNkHFh5FzaTi', -'33L5akK2tnaupkERpCndewo9hVNFkSuzFw', -'351WbvpjVpaZvJQKr1bdeeSU22cQiNBiEd', -'3LA2CzGzVACJuZUaWLPL64oqS73HtW4cer', -'32EAqUdjJaz3XmKEnD9GKmC44vsrH48oCL', -'38QnFXRBXPWQLcfVrgWUWxMoQFN1j6h15d', -'3JkZ85L4KUFX5586MzuSZLLanDJsr1XZSP', -'37vusKNFpRR4zMbrEmapcW445E69a1imyk', -'3Lhys3GpCNCRchMc59EL1ooLbufnEos9uB', -'33G1yrrbYrCK6ciAWAjFo9iGrraN5m3Ahx', -'3QRAKmSCHHroDL5Cx6dWhRPcs5ppwFkJrX', -'38HADuJsqQnepqNkM9b7RNCRdHmSkRjFxH', -'3AZbWTkkdjgTC4VNgvzhtGCB57rj8CDaHH', -'3E9on9B9UeiThYJ6tTBF3QvNG1eqiX9cWT', -'3A4QPK7seQej6HeMpK56f49aKtCM4BZEzW', -'36qzQCduQU1o8kEmxEWqE3gxSTMQxRefFC', -'37MHYEueW5TwP4NL61hkyrZszvPzNPNL6H', -'3823shvqUTkvTkJxSAYnMJ1cNVoZMTHziN', -'3E6c1FWkkAgamGwS8uuyZTq8VxC7vEBJZe', -'3AJbWP8SLMeLon1nTVAwGUMDwRzqLvMTkP', -'3CgSD8pWNCwT2mqSMwRWh8V63eCarRw9GE', -'3E5k2j3grs2MWyAhaCWihHbp3qMmCZ7Jrp', -'36hjUNNQmEbcpQCH8tKDB4TeSPS7vnkxnr', -'37cUrvVYXErBBKZmRXnnZ43abKrb2zpkDv', -'35XnWbmbw346nibLUFaV9pniUuZ2y79Es6', -'3FqGZYQZcjVJoxzqtPiNSwKYGEABteVYcW', -'38Tqph89kZ7pACYfB3QEWMmcqwT6iLYzsF', -'3LXEMR78AZgDfWCdUtnWamMKum5g1ym6u1', -'3FjVztnMC1Zfw3UKFVkTR7BrApuiRQh7oV', -'377HhcLwuUjurePSRWbAqgyrF8KxyGNDQg', -'35ozJkakwt12zqSjZYGNsNJnCdDQVZzNbT', -'39as38s4cjCTJayD9yCqEXn2B3wZ2FUbDF', -'3Qe797rPwsiDdJKLmsBCuJeHpJdJda1kvY', -'3FacVnLk1ZSniBudYK7ZgnS2uUwPYuq4f7', -'3HuXaUKn27trUbow4Aa3HayFuEUnCGyvba', -'3Mb8G2Qnv45ggRbtUNziSj2vSTgSK2HNHD', -'3JWcAqsm8ieCGh9TBCMQ86i2bu5AjYLkS4', -'3QSnhC7HjTNufKogHBXYYG2NeRhSAFwqtf', -'3MJkvBtoT3fFThhmrUqu9Y8cnH2x6WQKGL', -'33HqYc2Af6f6oLtXs86e5NTdNCAZgfvELL', -'38ax4K5qVmcdH8RYEw38aVAzNQAggv529Q', -'3M24e5cQ4WhBAEE1MEChisHoNKtC2U2Y5q', -'34Zzuk8bUjyYs3VpbYxPAvz3WimZHxtKiR', -'3AuA5UPZnjPqo2zSucH47RoAfyZdQ3g35B', -'3AxbCB38wCXCuR4E3Wdh32y1oLwEydKcPG', -'37twN7poMtZZ5okXf6CKFc2zAQWE5z9DRn', -'378DgWMXnkGnyZUzzutHB1hUej971Hb3mN', -'37YQfndjTjzapiJgQTG5YhkaYigyDt1VVs', -'3HdRnYLj1srrWyafFGFTMS71mDtkvPfgQo', -'34rsrUyY2WyeofQmcmtN9hXRBoEGqNpoZH', -'38jKLyTYyQdUxfPHm8mrdeMRwk7ebYmUQw', -'35EyyC2Q7UTTzmcWeuVd7b96cjkR2ykadT', -'33EUWhxkUCrWBX4tLfWtWdQPSnk2hY97za', -'3J84KGUxAEGhFfB3Hs7HZ68GaMaKjgA3tZ', -'3EA7HQZWfymPFdxNhRfzG53XJLo9bZzYDw', -'3HMECK25HJ4iWdRfjWBJK5ueJsYia3yPyk', -'3BVzXXgq7fvsFDJ6ny1RNJ4s5ypXzshhET', -'343gXjVA3Wgbfg9K2RovDk4GsqHUGq8ZxB', -'3A54PouNJwghWiFQdn7FRno2YeTje4n4em', -'33jxtkLvLh8wWAoBC7RYq9S5Y3ydAjwvZs', -'3Bu5yq7beSbUUPtDMpFqhpZVbmYtqi3gpQ', -'3NmvX4dYvPbu5LwzWfons7mHDtTBZMZFtm', -'3FXEDv2jaCHiH5J1BkSFV5m8MtjmrL9jNa', -'3FG1ddek4PCL92qM7sRJrpF9eEJAyDW8tL', -'3FvoKWeNqL1GLJ8Roa8eDedkhra6RxqZ48', -'3C66QJi7fWHhz1hWPtnEUgsvVeJXe27Xi9', -'3JrGcLg1MzGQQEwCta3CmLJsWvPp8A7DtX', -'3E5pPeHTSc19a2bE3ZxwAHZYe6iHgyan2o', -'3Jjv396jerr6db2cBsFPCVudpfiU2H25WU', -'39VjSobUAfK8G1zze5PeW2sn8QY7fyvhbR', -'3EiSvSHQt4CsLX7AgnEKpsXrUpMZpeSMXe', -'3Mpo5zXBhEggr7sgs8vzo8ZU2i2T62ZNEk', -'3QE1BARbS2nsvVeSyByyBKjWZrEW4CQMZn', -'3DHaPJoRxcapq1dDauPngffaNgkXWiNFAM', -'3Bn2D21DepckmiLU4ni5qbf1vEnXAqyWVP', -'397h3jmCiYZHqb73ACz4Gi2Vv8AdG4F2pa', -'38zipfqoWTNbegueuJddxBmZWn9XtSjvPe', -'37aUTkbtgaDptrZdVRn2nqArhirHWSZ5Bi', -'3N2WeJRemChkBBz6kjsnh8XryG8Ngg28oh', -'3NEDrujnksv8ys8WMx5mQj6FpSPR1itavV', -'39Sgahv57LvDMncYkSVSQm5JE67JN3EwQB', -'3FkLBYuyoJSsazZPF1H8Hjcsg3uvzf1MFg', -'3NucAfKBkn8dsBV1r2jbUwjaUQqWZw4ZvM', -'35c95r3JijNVx45jFgq8vhYw3Djn9nGCMk', -'3E6SjVMiLoip4Nd95jBnEC8M2qFJ9MAWLL', -'3P2pNDQTjCo7bAwYEyPS5gChfNrVLpzQ4y', -'37AkghRoT6BA256qj4AeJNnHX1A3psDm3V', -'3AzX1AnppBt5JBs9P36KotZnYw6n7BbuxM', -'369FxNdxKkFEW8F5p783S8trx3fibXELzV', -'3KnDayd2eiGC47g1FSAm3kGuMhqf3upPrG', -'33ChGHWngwNd19xVAmi6XQWRyKRHrsK8CA', -'3GiwKE2VNPnDKbikEfTJGyWmeVSoGo9Uof', -'3MFHxwrY6YwDtibo3eY9eke6fvMSZMR4XS', -'3D3tAwDW8r9Qkawz873MX4fjAdeg74znjp', -'39f4BLdMLWj12QA3srLbsFhTaBZnyoxmiH', -'3G4djxBWaGe9vazH1DFAMuDikufXgP6xE4', -'3QdHCUC1DLEftGd5H6J6hdzz4B35fj38So', -'35vEh3wEYixfcr8kLWqGtWpsgoXHFMSGUf', + // we only added wallets with more than 0.1 BTC + 'bc1q39q4hqvchfq2ynyl5xttshkpvdsvp958uq94m0ddv4gt92xhnlvsj32mfy', + 'bc1qv3ertag30cfd58e9krg7ee2etp2628yapwfv27scf3t4yaqvz5wslag54w', + "36Y1UJBWGGreKCKNYQPVPr41rgG2sQF7SC", + "bc1qwkq9e5teav7n4v5v9msdyxh3tdl8782xhf9y02ffnkutppkm4rxsq5wes2", + "bc1qzrz29mxxlv3lnsng50lzpa6xrl848jp3lwmcn67t082k2xv45muswkwelc", + "bc1quktu2u654pelsn7qtmv839yyg0xecmdr59r6tuu0t5hcxq5nsxwqc5fzpu", + "bc1q65v48necseqseqm7dggtz5wf6clvwj8t8a0wswucgy8664uad7ysyf705a", + "bc1q8hnvhz3kdpxv7p7nzh2pm5qn95kfp0ff8sfk435ega90cxae374sgd8658", + "bc1qwqtm4d9x4fa7lvc88xl0autp42lkqgmp6pdpw9hpsvt9ac8k2xvq83dkz4", + "bc1qsrdlqttu69x44z9ch4r2e4t9x099rpf3p7rtu3yzpufrz4dsse0qcpqxjn", + "bc1q0peyk5wv6uathf6jlal3sqd4s66y5hfux2vh5x9z47kkt6cu4dxq05t57u", + "bc1qnp7julzx0qyyz7dapdjjyuvlhd696frj0puu9gptwdutvhryyvcsuvc3na", + "bc1qyc54t9mc7rh0srk5ctyshykqmz793y30r6jrn372v8wx76gydgwqafugxu", + "bc1qx0v26ajsfq07j4l9c60eqa7putpcvakz2u234ywh9yk3lsrd5u0s8zh9hr", + "bc1qmsdxj3j3fq9mw2733dhpvc5d79u3nhekt6fqz4y3h40gqzq7kvgq0fwjku", + "bc1qxty7nz6zwk6lfxtzsldksfsgfpvem2hewn72mc9dm09y3xq7dh7qcnyul9", + "bc1q6pgpwufv42jrq724waqdhsv9vg3wrgrcw93mj0kpdpy3d622uyyspfc9nr", + "bc1qvc6tmyr9pas29d09hu7l0n8q5eqmcepptls3lrdkhxvdc4jhatzsa6wfls", + "bc1qlaltsl05swgtvweq9uc9qmy94n2l8t92y2rxy0wnxz72jdt3qugschn0rt", + "bc1qy3s7efla47m9s32pqwg220p3a4de4f2uqe0rfmqhdfh30h52rguspl52g6", + "bc1q0708h4g2g35xfwujrrgxj6e0j2et6qkfr3a85dc2lzmyyezg4eeszmkrae", + "35EyyC2Q7UTTzmcWeuVd7b96cjkR2ykadT", + "36igHhLGsmCt4Qh1TZTgzinEjU3AQipVDi", + "36j6PzEU83pmM1PbHCP3uBH9HcuwYX1igb", + "361SutatvucBNkTBZvmNPaXThLbDm1XK5i", + "38xvfmxwR81ZtdQRw8j5XLwP38J2AioW6i", + "33qUcf4RyoysAn1TxQgzEBodvq22pDT32H", + "3HPQGA5BDsfk2Wxy4jjkg9bNpxKz33kN5o", + "3FJ6vkm44vwPQz7X82S2q9poh55tTgECM7", + "3EunnmL6LhqcB9u3PVbUAdtj1vZdGQgFBP", + "3JnxnGXVn1iSkjhsAtNRq2GGgZaDXz9SZv", + "3BiJA1srAFWoaoCPAjvNiwSmgFGGnRXCQA", + "3Mn6GnHRtA5S9HWgKdJnTfGyCgj5r8a7d8", + "bc1q2s3rjwvam9dt2ftt4sqxqjf3twav0gdx0k0q2etxflx38c3x8tnssdmnjq", + "3DekqjWw33GGZi6ER4QLTsyDZV8gEycLnt", + "3DFiiWYGszd44qADZFMae4vSwVkzKH9D1J", + "3BQ2ZssxxTpkDhSC1kanGpQ2ofNfZHfqdE", + "3L8Jow9gos1tewxYKvhxUeE43dzxFP7jfw", + "3Jcus23RVs6iyCLS4x67o64wZJuxyLJPEy", + "3EsXfkx4hdLdX6GhzthGw4G4QJSPymGyqY", + "39yNTRaotoLsGtUWrJQ2FTg4uT9i8jETNs", + "34Hx5KffA1mUQG23ZdcZ7zhpPj1jdHRPB7", + "336RCi69KyksFvfd5K8nVgv2V6L4TzPo5e", + "33Us9LTox4pPCyDRucWAeAgv5HFJ3F8QEY", + "33Miwhfghqp2fPre272zM6bBPjU6fFBjdP", + "3JrDVvApcDrJvYUhGoSXAkwCxJkxH37uRY", + "3ARVBKq7MESv4aKXeXZVjhMxmBBC7Uohvt", + "37jUoYXzKb5M2kvdXRxGnwmRrHLXuBPkGR", + "358DzMfBG2fzVMYTZjktqUQaDMR5WpYFGJ", + "35tt48ioWimAbPLxk4MfWkp6La2B7gRbRd", + "3MWUMsGmx3y1iBDCwjkZp1XdUxEHYNzUq2", + "3L39V5WF9422tHSjK7joFPnriioCrPim7j", + "35PTstw2PqGrquLnUhmye3A2nMZJzeK5MF", + "39uKss4GEpj7F8Z39tSThmatWivVW9N3cV", + "bc1qngnta9lvmht9z6y4nq5kc8x57pzan0e5daxrxtg3llgpd2jfumts8056hj", + "bc1q73cqllektyf7wgkfl9ar85sr56vuz7w8lre75ux8m0r3vcplqjmq6d8jkd", + "3Bbyo51FEEM8jzw2JQEwu7DQmBPMJzWRj4", + "3Kib3E62NKnL4bAy425G14BPofYH5qMgMF", + "3H36uhmRugEN9ySYSh4ZftP1GerUfvseXP", + "3EXXcxmcfAtMG5SeUshEZMGD3NEuDZWSXg", + "3PTcMGdNKYV5ZZDQorNYmMxoVDoghFcwWn", + "3FmNm3byE5qwzfgQbQod3jHoKGy5r4Qapp", + "36LdQB5Ae5BbnQv18R61qotgicbG1dTaBj", + "3HWqMWUcDxFjyCKvSBSmYDpGXWNqPaYoW1", + "3MxBjHLRhvV1jPLTtgUAdfDw8xJ4ww5R3z", + "3GVHA98byHdxekZjBhHBWdHCMH4GRNC61e", + "35t1TFTbUcTH5ZnZiMVqQUPUtfT4sRcTrC", + "3AxGEYCt8Hq13E6LhENzL1q6ieP7fv9M8s", + "bc1qp8gd6xakvqqg7qt9ktfpq4wrsfhp0jlyzy4npfk22xh5qk83fztqsuuspf", + "3NMQ4igWQVAZq1NeUSd4a2NLJ65w8JqmFS", + "33L5akK2tnaupkERpCndewo9hVNFkSuzFw", + "37J1MywnA1NY1mmC9ny4EgmkKEFB8zmg33", + "3Ad6D5e83PfTxZpdYQumYiMrFnc7S6hE1P", + "35VhixfJ7PhxF12F6oCSnzm6Cgu5RZUoMu", + "3FFyv1BR5r93YN8aVpmJ7JDeMH7TeccZw7", + "32UxKDSVdSeaNyAQQd5UfHveJzAikbGLmT", + "37HNTMRUGWFMzws1RF6fAp2sDP5m6tMwec", + "3JeBScBZpYp4szgK1R8LCZvA2tzkXr9VRD", + "38Tqph89kZ7pACYfB3QEWMmcqwT6iLYzsF", + "38E56tLzMHxpmwfdgB6BaPgNkHFh5FzaTi", + "3Kv5DCmHU64wN68hiD6hGyTgfEv3E7czDd", + "377313tZcAthF8jq2Z7zsfYPAHTvA3mg9P" ] }, tron: { @@ -211,4 +116,5 @@ const config = { } module.exports = cexExports(config) +module.exports.methodology = 'This wallets where collect from here https://www.okcoin.com/proof-of-reserves/download Audit ID 500509486 , 06/08/2023, 19:00:00. We are only tracking BTC wallets with more than 0.1 BTC. We are only tracking ETH wallets with more than 100$.' From 05f9f550c2023e5ce6dd2fb31da3a3514b6c1ea7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:39:25 +0200 Subject: [PATCH 0762/1354] remove usage of terra helper --- projects/allbridge/index.js | 14 ++---- projects/anchor/index.js | 37 +--------------- projects/angel-protocol/index.js | 14 +----- projects/aperture/index.js | 68 +---------------------------- projects/edgeprotocol.js | 34 ++++----------- projects/eris-protocol/index.js | 5 +-- projects/helper/chain/cosmos.js | 18 +++----- projects/helper/chain/terra.js | 44 +++++++------------ projects/helper/env.js | 2 - projects/loterra/index.js | 30 +------------ projects/pylon/index.js | 65 +--------------------------- projects/risk-harbor/index.js | 73 ++++++-------------------------- projects/soluna/index.js | 8 +--- projects/synapse/index.js | 7 +-- projects/terra-bridge/index.js | 57 ++++++------------------- projects/valkyrie/index.js | 30 ------------- 16 files changed, 73 insertions(+), 433 deletions(-) diff --git a/projects/allbridge/index.js b/projects/allbridge/index.js index 79f21a569b..50f5395bef 100644 --- a/projects/allbridge/index.js +++ b/projects/allbridge/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const solana = require('../helper/solana') -const terra = require('../helper/chain/terra') +const cosmos = require('../helper/chain/cosmos') const { staking } = require('../helper/staking'); const near = require('../helper/chain/near'); const { default: BigNumber } = require('bignumber.js'); @@ -231,19 +231,13 @@ async function solanaStaking() { } async function terraTvl() { - const balances = {} - for (const token of terraData.tokens) { - const balance = token.address.length > 5 - ? await terra.getBalance(token.address, terraData.contractAddress) - : await terra.getDenomBalance(token.address, terraData.contractAddress); - sdk.util.sumSingleBalance(balances, token.name, toNumber(token.decimals, balance)); - } - return balances + return cosmos.sumTokens({ chain: "terra", owner: terraData.contractAddress }) } + async function terraStaking() { - const balance = await terra.getBalance(terraData.staking.abrAddress, terraData.staking.contractAddress); + const balance = await cosmos.getBalance({ token: terraData.staking.abrAddress, owner: terraData.staking.contractAddress, chain: "terra"}); return { allbridge: toNumber(terraData.staking.decimals, balance) } } diff --git a/projects/anchor/index.js b/projects/anchor/index.js index 594425eb7a..2ac5d58349 100644 --- a/projects/anchor/index.js +++ b/projects/anchor/index.js @@ -1,45 +1,12 @@ -const { fetchURL } = require("../helper/utils"); -const sdk = require("@defillama/sdk"); -const { getBalance, sumSingleBalance, getDenomBalance, } = require('../helper/chain/terra') -const { default: BigNumber } = require("bignumber.js"); - -async function borrowed() { - const data = await fetchURL("https://api.anchorprotocol.com/api/v1/borrow") - return { - "terrausd": Number(data.data.total_borrowed) / 1e6 - } -} - -async function avalancheTVL(timestamp, ethBlock, chainBlocks) { - const chain = "avax" - const wormholeAnchorUST = "0xaB9A04808167C170A9EC4f8a87a0cD781ebcd55e" - const block = chainBlocks[chain] - const { output: aUSTBalance } = await sdk.api.erc20.totalSupply({ target: wormholeAnchorUST, block, chain }) - return { - "anchorust": BigNumber(aUSTBalance).dividedBy(10 ** 6) - } -} - module.exports = { timetravel: false, methodology: `We use the Anchor subgraph to get the amount of bLUNA and bETH used as collateral on anchor and the UST that is on anchor but has not been lent, we then use Coingecko to price the tokens in USD.`, terra: { - tvl: async () => { - const balances = {} - const [eth, bLuna, uusd] = await Promise.all([ - getBalance('terra1dzhzukyezv0etz22ud940z7adyv7xgcjkahuun', 'terra10cxuzggyvvv44magvrh3thpdnk9cmlgk93gmx2'), - getBalance('terra1kc87mu460fwkqte29rquh4hc20m54fxwtsx7gp', 'terra1ptjp2vfjrwh0j0faj9r6katm640kgjxnwwq9kn'), - // getDenomBalance('uusd', 'terra1sepfj7s0aeg5967uxnfk4thzlerrsktkpelm5s'), - ]) - sumSingleBalance(balances, 'terra1dzhzukyezv0etz22ud940z7adyv7xgcjkahuun', eth,) - sumSingleBalance(balances, 'terra1kc87mu460fwkqte29rquh4hc20m54fxwtsx7gp', bLuna,) - // sumSingleBalance(balances, 'uusd', uusd,) - return balances - }, + tvl: () => ({}), // borrowed }, avax: { - tvl: avalancheTVL + tvl: () => ({}), }, hallmarks: [ [1651881600, "UST depeg"], diff --git a/projects/angel-protocol/index.js b/projects/angel-protocol/index.js index b4ab60736d..379e9a2c50 100644 --- a/projects/angel-protocol/index.js +++ b/projects/angel-protocol/index.js @@ -1,20 +1,8 @@ - -const { fetchURL } = require('../helper/utils') -const BigNumber = require('bignumber.js'); - - -async function tvl() { - const res = await fetchURL(`https://fcd.terra.dev/wasm/contracts/terra172ue5d0zm7jlsj2d9af4vdff6wua7mnv6dq5vp/store?query_msg=%7B%22token_info%22:%7B%22sid%22:0%7D%7D`) - return { - 'anchorust': BigNumber(res.data.result.total_supply) / 1e6, - } -} - module.exports = { timetravel: false, methodology: 'TVL takes total apANC in the contract and returns AnchorUST value', terra: { - tvl, + tvl: () => ({}), }, hallmarks:[ [1651881600, "UST depeg"], diff --git a/projects/aperture/index.js b/projects/aperture/index.js index 52e46a9b58..d7f269fc48 100644 --- a/projects/aperture/index.js +++ b/projects/aperture/index.js @@ -1,69 +1,3 @@ -const { queryContractStore } = require("../helper/chain/terra"); -const { log, sleep } = require("../helper/utils"); -// const fs = require('fs') - - -const TERRA_MANAGER = "terra1ajkmy2c0g84seh66apv9x6xt6kd3ag80jmcvtz"; -const APERTURE_CONTRACT = "terra1jvehz6d9gk3gl4tldrzd8qzj8zfkurfvtcg99x"; -let openPositions = require("./openPositions.json"); -// let data = require("./data.json"); - -const currentQueriedCount = 11190; - -async function terra_tvl() { - let sumTvl = 0; - const { next_position_id } = await queryContractStore({ - contract: TERRA_MANAGER, - queryParam: { get_next_position_id: {} }, - }); - for (let i = currentQueriedCount; i < +next_position_id; i++) - openPositions.push(i); - - log(next_position_id, currentQueriedCount, openPositions.length); - const positions = openPositions.map((_value) => ({ - chain_id: 3, - position_id: `${_value}`, - })); - - const chunkSize = 50; - for (let i = 0; i < positions.length; i += chunkSize) { - log("fetching %s of %s", i, positions.length); - await Promise.all( - positions.slice(i, i + chunkSize).map(async (position) => { - const { - items: [ - { - info: { position_close_info, detailed_info }, - }, - ], - } = await queryContractStore({ - contract: APERTURE_CONTRACT, - queryParam: getQuery(position), - }); - - // if (position_close_info) console.log('closed:', position) - // data[position.position_id] = { position_close_info, detailed_info } - - if (!position_close_info) - // position is closed no need to add it to tvl - sumTvl += +detailed_info.uusd_value; - }) - ); - // fs.writeFileSync(__dirname+'/data.json', JSON.stringify(data, null, 2)) - // if (i < positions.length) sleep(7000) - } - - log("Final UST sum: %s", sumTvl); - - return { - terrausd: sumTvl / 1e6, - }; - - function getQuery(postion) { - return { batch_get_position_info: { positions: [postion] } }; - } -} - const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { default: BigNumber } = require("bignumber.js"); @@ -110,7 +44,7 @@ module.exports = { tvl: avax_tvl, }, terra: { - tvl: terra_tvl, + tvl: () => ({}), }, hallmarks: [[1651881600, "UST depeg"]], }; diff --git a/projects/edgeprotocol.js b/projects/edgeprotocol.js index ccc53185bf..8900b3ba43 100644 --- a/projects/edgeprotocol.js +++ b/projects/edgeprotocol.js @@ -1,37 +1,21 @@ -const { queryContract, } = require('./helper/chain/terra') - -function getCoinGeckoId(apiId) { - return { - 'terra14z56l0fp2lsf86zy3hty2z47ezkhnthtr9yq76': 'anchor-protocol', - 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6': 'mirror-protocol', - 'terra17y9qkl8dfkeg4py7n0g5407emqnemc3yqk5rup': 'stader-lunax', - 'terra1hzh9vpxhsk8253se0vv5jj6etdvxu3nv8z07zu': 'anchorust', - 'terra1kc87mu460fwkqte29rquh4hc20m54fxwtsx7gp': 'bonded-luna', - 'uluna': 'terra-luna', - 'uusd': 'terrausd' - }[apiId] -} +const { queryContract, } = require('./helper/chain/cosmos') async function getMarkets() { - const res = await queryContract({ contract: 'terra1pcxwtrxppj9xj7pq3k95wm2zztfr9kwfkcgq0w', data:{ market_lists: {} } }) + const res = await queryContract({ contract: 'terra1pcxwtrxppj9xj7pq3k95wm2zztfr9kwfkcgq0w', data: { market_lists: {} }, chain: 'terra' }) return res } -async function tvl() { - const balances = {}; +async function tvl(_, _1, _2, { api }) { const markets = await getMarkets() markets.forEach(m => { - balances[getCoinGeckoId(m.underlying)] = (m.total_credit - m.total_insurance) / 10 ** 6; + api.add(m.underlying, Math.floor(m.total_credit - m.total_insurance)) }); - return balances; } -async function borrowed() { - const balances = {}; +async function borrowed(_, _1, _2, { api }) { const markets = await getMarkets() markets.forEach(m => { - balances[getCoinGeckoId(m.underlying)] = m.total_loan / 10 ** 6; + api.add(m.underlying, Math.floor(m.total_loan)) }); - return balances; } module.exports = { @@ -41,7 +25,7 @@ module.exports = { tvl, borrowed }, - hallmarks:[ - [1651881600, "UST depeg"], - ] + hallmarks: [ + [1651881600, "UST depeg"], + ] }; diff --git a/projects/eris-protocol/index.js b/projects/eris-protocol/index.js index 6f54de004f..ecbfb7de25 100644 --- a/projects/eris-protocol/index.js +++ b/projects/eris-protocol/index.js @@ -1,4 +1,3 @@ -const { queryContract } = require("../helper/chain/terra"); const { queryContract: queryContractCosmos, getBalance, @@ -135,8 +134,8 @@ async function tvlAmpGovernance(chain, state) { } async function farm2Tvl(farm) { - const res = await queryContract({ - isTerra2: true, + const res = await queryContractCosmos({ + chain: 'terra2', contract: farm, data: { state: {} }, }); diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index f54cd35da4..090c499194 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -15,8 +15,8 @@ const endPoints = { cosmos: "https://cosmoshub-lcd.stakely.io", kujira: "https://rest.cosmos.directory/kujira", comdex: "https://rest.comdex.one", - terra: "https://terraclassic-lcd-server-01.stakely.io", - terra2: "https://phoenix-lcd.terra.dev", + terra: "https://api-terra-ia.cosmosia.notional.ventures", + terra2: "https://lcd-terra.wildsage.io", umee: "https://umee-api.polkachu.com", orai: "https://lcd.orai.io", juno: "https://lcd-juno.cosmostation.io", @@ -47,6 +47,7 @@ async function query(url, block, chain) { if (block !== undefined) { endpoint += `&height=${block - (block % 100)}`; } + console.log(endpoint); return (await axios.get(endpoint)).data.result; } @@ -142,17 +143,9 @@ async function lpMinter({ token, block, chain } = {}) { async function queryContract({ contract, chain, data }) { if (typeof data !== "string") data = JSON.stringify(data); data = Buffer.from(data).toString("base64"); - if (chain === "terra") { - let path = `${getEndpoint( - chain - )}/terra/wasm/v1beta1/contracts/${contract}/store?query_msg=${data}`; - return (await axios.get(path)).data.query_result; - } return ( await axios.get( - `${getEndpoint( - chain - )}/cosmwasm/wasm/v1/contract/${contract}/smart/${data}` + `${getEndpoint(chain)}/cosmwasm/wasm/v1/contract/${contract}/smart/${data}` ) ).data.data; } @@ -197,7 +190,8 @@ async function queryContractStore({ return query(url, block, chain); } -async function sumTokens({ balances = {}, owners = [], chain }) { +async function sumTokens({ balances = {}, owners = [], chain, owner }) { + if (owner) owners = [owner] log(chain, "fetching balances for ", owners.length); let parallelLimit = 25; diff --git a/projects/helper/chain/terra.js b/projects/helper/chain/terra.js index 8079075d1f..16ddb9c12d 100644 --- a/projects/helper/chain/terra.js +++ b/projects/helper/chain/terra.js @@ -1,51 +1,35 @@ const axios = require('axios') const { default: BigNumber } = require("bignumber.js") const sdk = require('@defillama/sdk') -const env = require('../env') +const cosmos = require('./cosmos') function getEndpoint(isTerra2 = false) { if (!isTerra2) - return env.TERRA_RPC || 'https://terraclassic-lcd-server-01.stakely.io' - return env.TERRA2_RPC || 'https://phoenix-lcd.terra.dev' + return cosmos.endPoints.terra + return cosmos.endPoints.terra2 } -async function query(url, block, isTerra2 = false) { - block = undefined - let endpoint = `${getEndpoint(isTerra2)}/wasm/${url}` - if (block !== undefined) { - endpoint += `&height=${block - (block % 100)}` - } - return (await axios.get(endpoint)).data.result +function getChain(isTerra2) { + if (!isTerra2) + return 'terra' + return 'terra2' } -const fetchAssets = async (path) => { - return (await axios.get(`https://assets.terra.money${path}`)) +async function query(url, block, isTerra2 = false) { + return cosmos.query(url, block, getChain(isTerra2)) } async function queryV1Beta1(url, paginationKey, block, { isTerra2 = false } = {}) { - let endpoint = `${getEndpoint(isTerra2)}/cosmos/${url}` - if (block !== undefined) { - endpoint += `?height=${block - (block % 100)}` - } - if (paginationKey) { - const paginationQueryParam = `pagination.key=${paginationKey}` - if (block === undefined) { - endpoint += "?" - } else { - endpoint += "&" - } - endpoint += paginationQueryParam - } - return (await axios.get(endpoint)).data + return cosmos.queryV1Beta1({ chain: getChain(isTerra2), paginationKey, block, url }) } async function getBalance(token, owner, block, { isTerra2 = false } = {}) { - const data = await query(`contracts/${token}/store?query_msg={"balance":{"address":"${owner}"}}`, block, isTerra2) - return Number(data.balance) + return cosmos.getBalance({ token, owner, block, chain: getChain(isTerra2) }) } async function getDenomBalance(denom, owner, block, { isTerra2 = false } = {}) { + return cosmos.getDenomBalance({ denom, owner, block, chain: getChain(isTerra2) }) let endpoint = `${getEndpoint(isTerra2)}/bank/balances/${owner}` if (block !== undefined) { endpoint += `?height=${block - (block % 100)}` @@ -61,15 +45,18 @@ async function getDenomBalance(denom, owner, block, { isTerra2 = false } = {}) { // LP stuff async function totalSupply(token, block, { isTerra2 = false } = {}) { + return cosmos.totalSupply({token, block, chain: getChain(isTerra2)}) const data = await query(`contracts/${token}/store?query_msg={"token_info":{}}`, block, isTerra2) return data.total_supply } async function lpMinter(token, block, { isTerra2 = false } = {}) { + return cosmos.lpMinter({token, block, chain: getChain(isTerra2)}) const data = await query(`contracts/${token}/store?query_msg={"minter":{}}`, block, isTerra2) return data.minter } async function queryContract({ contract, isTerra2 = false, data }) { + return cosmos.queryContract({data, contract, chain: getChain(isTerra2)}) if (typeof data !== 'string') data = JSON.stringify(data) data = Buffer.from(data).toString('base64') @@ -122,6 +109,7 @@ const TOKEN_LIST = Object.keys(tokenMapping).reduce((agg, key) => { }, {}) async function queryContractStore({ contract, queryParam, block, isTerra2= false, }) { + if (typeof queryParam !== 'string') queryParam = JSON.stringify(queryParam) const url = `contracts/${contract}/store?query_msg=${queryParam}` return query(url, block, isTerra2) diff --git a/projects/helper/env.js b/projects/helper/env.js index 9edd93c192..483f825597 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -7,8 +7,6 @@ module.exports = { SOLANA_RPC: env.SOLANA_RPC, APTOS_RPC: env.APTOS_RPC, SUI_RPC: env.SUI_RPC, - TERRA_RPC: env.TERRA_RPC, - TERRA2_RPC: env.TERRA2_RPC, LOFTY_API: env.LOFTY_API, COVALENT_KEY: env.COVALENT_KEY, OLYMPUS_GRAPH_API_KEY: env.OLYMPUS_GRAPH_API_KEY, diff --git a/projects/loterra/index.js b/projects/loterra/index.js index d8cf75df67..948783eb17 100644 --- a/projects/loterra/index.js +++ b/projects/loterra/index.js @@ -1,36 +1,8 @@ -const { sumSingleBalance, TOKEN_LIST, getBalance, } = require('../helper/chain/terra') - -// Source: https://docs.loterra.io/resources/contract-addresses -const contracts = { - multiSig: 'terra1s4twvkqy0eel5saah64wxezpckm7v9535jjshy', - dogether: 'terra19h4xk8xxxew0ne6fuw0mvuf7ltmjmxjxssj5ts' -} - -async function tvl(timestamp, ethBlock, { terra: block }) { - const balances = {} - - // Add aUST tokens in the multi-sig - const aUSTBalance = await getBalance(TOKEN_LIST.anchorust, contracts.dogether, block) - sumSingleBalance(balances, TOKEN_LIST.anchorust, aUSTBalance) - - return balances -} - -async function treasury(timestamp, ethBlock, { terra: block }) { - const balances = {} - - // Add aUST tokens in the multi-sig - const aUSTBalance = await getBalance(TOKEN_LIST.anchorust, contracts.multiSig, block) - sumSingleBalance(balances, TOKEN_LIST.anchorust, aUSTBalance) - - return balances -} module.exports = { methodology: 'TVL counts the UST that is available as a prize on the protocol.', terra: { - tvl, - treasury, + tvl: () => ({}), }, timetravel: false, hallmarks:[ diff --git a/projects/pylon/index.js b/projects/pylon/index.js index 487a9684ba..2d76fbdb89 100644 --- a/projects/pylon/index.js +++ b/projects/pylon/index.js @@ -1,71 +1,8 @@ -const { queryContractStore, getBalance, sumSingleBalance, getDenomBalance, TOKEN_LIST, } = require('../helper/chain/terra') - -// taken from https://api.pylon.money/api/gateway/v1/projects/ -const pools = [ - "terra1z5j60wct88yz62ylqa4t8p8239cwx9kjlghkg2", - "terra149fxy4crxnhy4z2lezefwe7evjthlsttyse20m", - "terra1he8j44cv2fcntujjnsqn3ummauua555agz4js0", - "terra1xu84jh7x2ugt3gkpv8d450hdwcyejtcwwkkzgv", - "terra1zxtcxxjqp7c46g8jx0t25s5ysa5qawmwd2w7nr", - "terra1jk0xh49ft2ls4u9dlfqweed8080u6ysumvmtcz", - "terra15y9r79wlu8uqvlu3k7vgv0kgdy29m8j9tt9xgg", - "terra19zn5u7ej083em99was4y02j3yhracnxwxcvmt4", - "terra15y70slq4l4s5da2etsyqasyjht0dnquj03qm05", - "terra1g9kzlt58ycppx9elymnrgxmwssfawym668r2y4", - "terra1he8ymhmqmtuu5699akwk94urap6z09xnnews32", - "terra1vftcl08p73v3nkuwvv5ntznku44s7p2tq00mgn", - "terra132u62nsympysvtg3nng5xg6tjf6cr8sxrq7ena", - "terra1dyattlzq58ty7pat337a9dz6j46thldu5gn8ls", - "terra1xkw8vusucy9c2w9hxuw6lktxk2w8g72utdyq96", - "terra1jzsjs8qx9ehsukzea9smuqtfuklmngmeh5csl3" -] - -// Pools in https://gateway.pylon.money/ -async function tvl() { - const balances = {} - for (const pool of pools) { - const [aUSTBalance, ustcBalance] = await Promise.all([ - getBalance(TOKEN_LIST.anchorust, pool), - getDenomBalance('uusd', pool), - ]) - sumSingleBalance(balances, TOKEN_LIST.anchorust, aUSTBalance) - sumSingleBalance(balances, TOKEN_LIST.terrausd, ustcBalance) - } - - Object.entries(balances).forEach(([t, v]) => balances[t] = Number(v).toFixed(0)) - return balances -} - -async function pool2() { - const { assets } = await queryContractStore({ contract: 'terra134m8n2epp0n40qr08qsvvrzycn2zq4zcpmue48', queryParam: { "pool": {} } }) - let pylonAmount - let uusdAmount - - assets.forEach(i => { - if (i.info.token) pylonAmount = i.amount / 1e6 - else uusdAmount = i.amount / 1e6 - }) - - return { - "pylon-protocol": pylonAmount, - "terrausd": uusdAmount, - } -} - -async function staking() { - const { balance } = await queryContractStore({ contract: 'terra1kcthelkax4j9x8d3ny6sdag0qmxxynl3qtcrpy', queryParam: { "balance": { "address": "terra1xu8utj38xuw6mjwck4n97enmavlv852zkcvhgp" } } }) - return { - "pylon-protocol": balance / 1e6 - } -} - module.exports = { timetravel: false, methodology: 'TVL counts the UST that has been deposted to the Protocol. Data is pulled from the Pylon API:"https://api.pylon.money/api/launchpad/v1/projects/mine".', terra: { - pool2, - staking, - tvl + tvl: () => ({}), }, hallmarks:[ [1651881600, "UST depeg"], diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js index 9cb5e9b0e8..62e3e970cf 100644 --- a/projects/risk-harbor/index.js +++ b/projects/risk-harbor/index.js @@ -1,10 +1,9 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const { - queryV1Beta1, queryContract, - getDenomBalance, -} = require("../helper/chain/terra"); + sumTokens: sumTokensCosmos, +} = require("../helper/chain/cosmos"); const { sumTokens, } = require("../helper/unwrapLPs"); const vaultManagerAbi = "address[]:getVaults"; const vaultAbi = 'function self() view returns (tuple(address underwritingToken, uint32 start, uint32 expiration, uint8 underwritingTokenDecimals) config, tuple(tuple(tuple(uint128 numerator, uint128 denominator)[] expectedXVector, tuple(uint128 numerator, uint128 denominator)[] varCovarMatrix, tuple(uint128 numerator, uint128 denominator) lambda) config) amm, tuple(tuple(address standard, address rollover) underwritingPositionERC20, address nextVault, uint56 poolCount, uint32 latestInteraction, bool paused, uint256 premiums, uint256 premiumsAccruedPerShare, uint256 premiumDripBasis, uint256[] allocationVector) state)' @@ -132,7 +131,7 @@ const networks = { ADDRESSES.optimism.USDC, "0xdf9d37e1a19474e5928fb410a3f8513a25ba680c" ] - + ], }, polygon: { @@ -204,12 +203,10 @@ async function getManagedVaults(vaultManager, block, chain) { return res; } -async function terra2(timestamp, ethBlock, chainBlocks) { - const balances = { "terra-luna-2": 0 }; - +async function terra2(timestamp, ethBlock, chainBlocks, { api }) { const { addresses } = await queryContract({ contract: networks.terra2.factory, - isTerra2: true, + chain: "terra2", data: { get_vaults: {}, }, @@ -219,66 +216,20 @@ async function terra2(timestamp, ethBlock, chainBlocks) { // is Luna2 in the form of wrapped Luna2 since RH Ozone v2 does // not support native token types // For each vault, query its wrapped LUNA2 balance - let vault_balances = Promise.all(addresses.map(async (address) => { + for (const address of addresses) { const { balance } = await queryContract({ contract: networks.terra2.wrapped_luna, - isTerra2: true, - data: { - balance: { address: address} - } + chain: 'terra2', + data: { balance: { address: address } } }) - return balance; - })); - - vault_balances = await vault_balances; - - - vault_balances.forEach((balance) => { - balances["terra-luna-2"] += balance / 1e6; - }); - - // Query the Master underwriting vault - balances["terra-luna-2"] += - (await getDenomBalance( - "uluna", - networks.terra2.masterPool, - chainBlocks.terra2, - { - isTerra2: true, - } - )) / 1e6; + api.add('terra-luna-2', balance / 1e6) + } - return balances; + return sumTokensCosmos({ balances: api.getBalances(), owner: networks.terra2.masterPool, chain: "terra2", }) } async function terra(timestamp, ethBlock, chainBlocks) { - const balances = { terrausd: 0 }; - - for (const vaultAddr of networks.terra.vaults) { - let paginationKey; - - do { - const data = await queryV1Beta1( - `bank/v1beta1/balances/${vaultAddr}`, - paginationKey, - chainBlocks.terra - ); - - paginationKey = data.pagination.next_key; - - data.balances.forEach(({ denom, amount }) => { - /** - * 3/10/2022 - As of now the only supported underwriting token for Risk Harbor Ozone is UST, so - * balances should always be an array of length 1. Added support for dynamic balances length, denom checking, and pagination for - * future proofing and safety. - */ - if (denom === "uusd") { - balances["terrausd"] += parseInt(amount) / 1e6; - } - }); - } while (paginationKey); - } - return balances; + return sumTokensCosmos({ owner: networks.terra.vaults, chain: "terra" }); } function evm(chainName) { diff --git a/projects/soluna/index.js b/projects/soluna/index.js index fa1acf2bd8..3d913ed08d 100644 --- a/projects/soluna/index.js +++ b/projects/soluna/index.js @@ -1,11 +1,7 @@ -const { sumSingleBalance, TOKEN_LIST, getBalance, } = require('../helper/chain/terra') +const { sumTokens, } = require('../helper/chain/cosmos') async function tvl(timestamp, ethBlock, { terra: block }) { - const balances = {} - const aUSTBalance = await getBalance(TOKEN_LIST.anchorust, 'terra1aug2pyftq4e85kq5590ud30yswnewa42n9fmr8', block) - sumSingleBalance(balances, TOKEN_LIST.anchorust, aUSTBalance) - - return balances + return sumTokens({ owner: 'terra1qwzdua7928ugklpytdzhua92gnkxp9z4vhelq8', chain: 'terra'}) } module.exports = { diff --git a/projects/synapse/index.js b/projects/synapse/index.js index ef55e2cbea..d5a5ed90fc 100644 --- a/projects/synapse/index.js +++ b/projects/synapse/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens, } = require("../helper/unwrapLPs") -const { sumSingleBalance, TOKEN_LIST, getDenomBalance, } = require('../helper/chain/terra') +const { sumTokens: sumTokensCosmos, } = require('../helper/chain/cosmos') const sdk = require("@defillama/sdk") const { getChainTransform, getFixBalances } = require("../helper/portedTokens") const config = require("./config") @@ -46,10 +46,7 @@ module.exports.ethereum.pool2 = async (ts, block) => { module.exports.terra = {} module.exports.terra.tvl = async (timestamp, ethBlock, { terra: block }) => { - const balances = {} - const balance = await getDenomBalance('uusd', 'terra1qwzdua7928ugklpytdzhua92gnkxp9z4vhelq8', block) - sumSingleBalance(balances, TOKEN_LIST.terrausd, balance) - return balances + return sumTokensCosmos({ owner: 'terra1qwzdua7928ugklpytdzhua92gnkxp9z4vhelq8', chain: 'terra'}) } module.exports.hallmarks = [ [1651881600, "UST depeg"], diff --git a/projects/terra-bridge/index.js b/projects/terra-bridge/index.js index 42d539faa0..df12bcd855 100644 --- a/projects/terra-bridge/index.js +++ b/projects/terra-bridge/index.js @@ -1,46 +1,17 @@ -const sdk = require('@defillama/sdk') -const { fetchAssets } = require('../helper/chain/terra') -const { getChainTransform } = require('../helper/portedTokens') - -const data = { - ethereum: { - path: '/shuttle/eth.json' - }, - bsc: { - path: '/shuttle/bsc.json', - }, - harmony: { - path: '/shuttle/hmy.json', - }, -} - -function getTVLFunction(chain) { - return async function tvl(timestamp, ethBlock, {[chain]: block}) { - const balances = {} - const chainData = data[chain]; - const chainTokens = await fetchAssets(chainData.path); - - const transform = await getChainTransform(chain) - const calls = Object.values(chainTokens.data.mainnet).map(t => ({ target: t })) - const { output: results } = await sdk.api.abi.multiCall({ abi: 'erc20:totalSupply', calls, block, chain }) - results.forEach(({ input, output }) => sdk.util.sumSingleBalance(balances, transform(input.target), output)) - - return balances - } -} +const { sumTokensExport } = require('../helper/sumTokens') module.exports = { - methodology: "Sums tokens that are bridged (minted) to other chains via Terra Bridge (shuttle).", - ethereum: { - tvl: getTVLFunction('ethereum'), - }, - bsc: { - tvl: getTVLFunction('bsc'), - }, - harmony: { - tvl: getTVLFunction('harmony'), - }, - hallmarks:[ - [1651881600, "UST depeg"], - ], + methodology: "Sums tokens that are bridged (minted) to other chains via Terra Bridge (shuttle).", + terra: { + tvl: sumTokensExport({ + owners: [ + 'terra13yxhrk08qvdf5zdc9ss5mwsg5sf7zva9xrgwgc', + 'terra1g6llg3zed35nd3mh9zx6n64tfw3z67w2c48tn2', + 'terra1rtn03a9l3qsc0a9verxwj00afs93mlm0yr7chk', + ] + }) + }, + hallmarks: [ + [1651881600, "UST depeg"], + ], }; diff --git a/projects/valkyrie/index.js b/projects/valkyrie/index.js index 5b0ebb0ebc..b9afd1299c 100644 --- a/projects/valkyrie/index.js +++ b/projects/valkyrie/index.js @@ -1,37 +1,7 @@ -const { getBalance, unwrapLp } = require("../helper/chain/terra"); - -const holderToken = "terra1w6xf64nlmy3fevmmypx6w2fa34ue74hlye3chk"; -const token = "terra1dy9kmlm4anr92e42mrkjwzyvfqwz66un00rwr5"; - -const holderlp = "terra1ude6ggsvwrhefw2dqjh4j6r7fdmu9nk6nf2z32"; -const pair = "terra17fysmcl52xjrs8ldswhz7n6mt37r9cmpcguack"; // VKR-UST lp - -async function staking(timestamp, _, { terra: block }) { - const tokenBalance = await getBalance(token, holderToken, block); - - return { - "valkyrie-protocol": (tokenBalance) / 1e6, - }; -} - -async function pool2(timestamp,_, { terra: block }) { - const ustBalances = {}; - const balance = await getBalance(pair, holderlp, block); - await unwrapLp(ustBalances, pair, balance, block); - - return { - terrausd: (ustBalances.uusd * 2) / 1e6, - }; -} - module.exports = { terra: { tvl: () => ({}), - staking: staking, - pool2: pool2, }, - misrepresentedTokens: true, - timetravel: true, }; module.exports.hallmarks = [ [1651881600, "UST depeg"], From 5b0011f78ae71d13b3feece3f6bfd98de0d213c0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:39:42 +0200 Subject: [PATCH 0763/1354] remove terra helper --- projects/helper/chain/terra.js | 155 --------------------------------- 1 file changed, 155 deletions(-) delete mode 100644 projects/helper/chain/terra.js diff --git a/projects/helper/chain/terra.js b/projects/helper/chain/terra.js deleted file mode 100644 index 16ddb9c12d..0000000000 --- a/projects/helper/chain/terra.js +++ /dev/null @@ -1,155 +0,0 @@ -const axios = require('axios') -const { default: BigNumber } = require("bignumber.js") -const sdk = require('@defillama/sdk') -const cosmos = require('./cosmos') - -function getEndpoint(isTerra2 = false) { - if (!isTerra2) - return cosmos.endPoints.terra - return cosmos.endPoints.terra2 -} - -function getChain(isTerra2) { - if (!isTerra2) - return 'terra' - return 'terra2' -} - -async function query(url, block, isTerra2 = false) { - return cosmos.query(url, block, getChain(isTerra2)) -} - -async function queryV1Beta1(url, paginationKey, block, { isTerra2 = false } = {}) { - return cosmos.queryV1Beta1({ chain: getChain(isTerra2), paginationKey, block, url }) -} - - -async function getBalance(token, owner, block, { isTerra2 = false } = {}) { - return cosmos.getBalance({ token, owner, block, chain: getChain(isTerra2) }) -} - -async function getDenomBalance(denom, owner, block, { isTerra2 = false } = {}) { - return cosmos.getDenomBalance({ denom, owner, block, chain: getChain(isTerra2) }) - let endpoint = `${getEndpoint(isTerra2)}/bank/balances/${owner}` - if (block !== undefined) { - endpoint += `?height=${block - (block % 100)}` - } - let {data} = (await axios.get(endpoint)); - if (isTerra2) data = data.balances - else data = data.result - - const balance = data.find(balance => balance.denom === denom); - return balance ? Number(balance.amount) : 0 -} - - -// LP stuff -async function totalSupply(token, block, { isTerra2 = false } = {}) { - return cosmos.totalSupply({token, block, chain: getChain(isTerra2)}) - const data = await query(`contracts/${token}/store?query_msg={"token_info":{}}`, block, isTerra2) - return data.total_supply -} - -async function lpMinter(token, block, { isTerra2 = false } = {}) { - return cosmos.lpMinter({token, block, chain: getChain(isTerra2)}) - const data = await query(`contracts/${token}/store?query_msg={"minter":{}}`, block, isTerra2) - return data.minter -} -async function queryContract({ contract, isTerra2 = false, data }) { - return cosmos.queryContract({data, contract, chain: getChain(isTerra2)}) - if (typeof data !== 'string') data = JSON.stringify(data) - data = Buffer.from(data).toString('base64') - - if(!isTerra2) { - let path = `${getEndpoint(isTerra2)}/terra/wasm/v1beta1/contracts/${contract}/store?query_msg=${data}`; - let result = await axios.get(path) - return (result).data.query_result - } - - return (await axios.get(`${getEndpoint(isTerra2)}/cosmwasm/wasm/v1/contract/${contract}/smart/${data}`)).data.data -} - -function getAssetInfo(asset) { - return [asset.info.native_token?.denom ?? asset.info.token?.contract_addr, Number(asset.amount)] -} - -async function unwrapLp(balances, lpToken, lpBalance, block, { isTerra2 = false } = {}) { - const pair = await lpMinter(lpToken) - const { assets, total_share } = await query(`contracts/${pair}/store?query_msg={"pool":{}}`, block); - const [token0, amount0] = getAssetInfo(assets[0]) - const [token1, amount1] = getAssetInfo(assets[1]) - balances[token0] = (balances[token0] ?? 0) + (amount0 * lpBalance / total_share) - balances[token1] = (balances[token1] ?? 0) + (amount1 * lpBalance / total_share) -} - -const tokenMapping = { - 'terra1xfsdgcemqwxp4hhnyk4rle6wr22sseq7j07dnn': { label: 'KIJU', decimals: 6, }, - 'terra188w26t95tf4dz77raftme8p75rggatxjxfeknw': { label: 'sKIJU', decimals: 6, }, - 'terra15k5r9r8dl8r7xlr29pry8a9w7sghehcnv5mgp6': { coingeckoId: 'lunaverse', decimals: 6, }, - 'terra1cl7whtrqmz5ldr553q69qahck8xvk80fm33qjx': { label: 'ALTO', decimals: 6, }, - 'terra1dy9kmlm4anr92e42mrkjwzyvfqwz66un00rwr5': { coingeckoId: 'valkyrie-protocol', decimals: 6, }, - 'terra14z56l0fp2lsf86zy3hty2z47ezkhnthtr9yq76': { coingeckoId: 'anchor-protocol', decimals: 6, }, - 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6': { coingeckoId: 'mirror-protocol', decimals: 6, }, - 'terra17y9qkl8dfkeg4py7n0g5407emqnemc3yqk5rup': { coingeckoId: 'stader-lunax', decimals: 6, }, - 'terra1hzh9vpxhsk8253se0vv5jj6etdvxu3nv8z07zu': { coingeckoId: 'anchorust', decimals: 6, }, - 'terra1kc87mu460fwkqte29rquh4hc20m54fxwtsx7gp': { coingeckoId: 'bonded-luna', decimals: 6, }, - 'uluna': { coingeckoId: 'terra-luna', decimals: 6, }, - 'uusd': { coingeckoId: 'terrausd', decimals: 6, }, - 'terra1dzhzukyezv0etz22ud940z7adyv7xgcjkahuun': { coingeckoId: 'anchor-beth-token', decimals: 6, }, - 'terra1z3e2e4jpk4n0xzzwlkgcfvc95pc5ldq0xcny58': { coingeckoId: 'avalanche-2', decimals: 6, }, - 'terra1nef5jf6c7js9x6gkntlehgywvjlpytm7pcgkn4': { label: 'LOOP', decimals: 6, }, - 'terra1vwz7t30q76s7xx6qgtxdqnu6vpr3ak3vw62ygk': { coingeckoId: 'luart', decimals: 6, }, - 'terra1xj49zyqrwpv5k928jwfpfy2ha668nwdgkwlrg3': { coingeckoId: 'astroport', decimals: 6, }, -} - -const TOKEN_LIST = Object.keys(tokenMapping).reduce((agg, key) => { - const { coingeckoId, label } = tokenMapping[key] - agg[coingeckoId || label] = key - return agg -}, {}) - -async function queryContractStore({ contract, queryParam, block, isTerra2= false, }) { - - if (typeof queryParam !== 'string') queryParam = JSON.stringify(queryParam) - const url = `contracts/${contract}/store?query_msg=${queryParam}` - return query(url, block, isTerra2) -} - -function sumSingleBalance(balances, token, balance, price) { - const { coingeckoId, label, decimals = 0, } = tokenMapping[token] || {} - - if (coingeckoId || (label && price)) { - token = coingeckoId || 'terrausd' - - if (decimals) - balance = BigNumber(balance).shiftedBy(-1 * decimals) - - if (!coingeckoId) - balance = balance.multipliedBy(BigNumber(price)) // convert the value to UST - - if (!balances[token]) - balances[token] = BigNumber(0) - else if (typeof balances[token] === 'string') - balances[token] = BigNumber(balances[token]).shiftedBy(-1 * decimals) - - balances[token] = balances[token].plus(balance) - return - } - - sdk.util.sumSingleBalance(balances, token, balance) - return balances -} - -module.exports = { - totalSupply, - getBalance, - getDenomBalance, - unwrapLp, - query, - queryV1Beta1, - fetchAssets, - queryContractStore, - sumSingleBalance, - queryContract, - TOKEN_LIST, -} From 912fde4f4e3549e7c44d8a8de50d2bdae3f5602b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:42:19 +0200 Subject: [PATCH 0764/1354] bugfix --- projects/risk-harbor/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js index 62e3e970cf..22fa805bd9 100644 --- a/projects/risk-harbor/index.js +++ b/projects/risk-harbor/index.js @@ -229,7 +229,7 @@ async function terra2(timestamp, ethBlock, chainBlocks, { api }) { } async function terra(timestamp, ethBlock, chainBlocks) { - return sumTokensCosmos({ owner: networks.terra.vaults, chain: "terra" }); + return sumTokensCosmos({ owners: networks.terra.vaults, chain: "terra" }); } function evm(chainName) { From 75fff24c35297d029f618508f8458aab94bbf609 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:44:03 +0200 Subject: [PATCH 0765/1354] use cosmos directory for terra rpc --- projects/helper/chain/cosmos.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 090c499194..6aa2e19c0a 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -15,8 +15,8 @@ const endPoints = { cosmos: "https://cosmoshub-lcd.stakely.io", kujira: "https://rest.cosmos.directory/kujira", comdex: "https://rest.comdex.one", - terra: "https://api-terra-ia.cosmosia.notional.ventures", - terra2: "https://lcd-terra.wildsage.io", + terra: "https://rest.cosmos.directory/terra", + terra2: "https://rest.cosmos.directory/terra2", umee: "https://umee-api.polkachu.com", orai: "https://lcd.orai.io", juno: "https://lcd-juno.cosmostation.io", From 0df33f232b616fe27c7a92356bc47226bbcf8b4e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 14:52:33 +0200 Subject: [PATCH 0766/1354] remove cAPE doublecounting --- projects/aperture/openPositions.json | 1 - projects/aperture/updateScript.js | 16 ---------------- projects/paraspace/helper/index.js | 2 +- 3 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 projects/aperture/openPositions.json delete mode 100644 projects/aperture/updateScript.js diff --git a/projects/aperture/openPositions.json b/projects/aperture/openPositions.json deleted file mode 100644 index fcf1602de1..0000000000 --- a/projects/aperture/openPositions.json +++ /dev/null @@ -1 +0,0 @@ -[34,65,79,106,180,182,189,228,235,239,404,429,595,639,658,768,774,793,841,843,845,866,936,1026,1027,1039,1046,1047,1231,1238,1292,1399,1404,1579,1588,1667,1761,1777,1786,1788,1802,1846,1847,1858,1902,1998,2022,2099,2100,2102,2137,2158,2160,2241,2335,2443,2476,2524,2535,2547,2628,2653,2659,2665,2677,2702,2704,2712,2714,2831,2834,2835,2884,2919,2973,2988,3005,3016,3037,3048,3113,3199,3204,3208,3221,3259,3267,3270,3277,3290,3293,3306,3310,3327,3351,3386,3702,3716,3744,3782,3805,3806,3864,3971,3985,4020,4021,4025,4030,4074,4075,4086,4126,4128,4129,4141,4151,4155,4169,4228,4322,4354,4415,4462,4464,4474,4581,4644,4666,4698,4737,4740,4741,4754,4780,4783,4786,4798,4829,4836,4840,4849,4850,4853,4888,4905,4916,4943,5028,5071,5080,5101,5128,5157,5159,5188,5194,5207,5217,5223,5225,5226,5263,5357,5389,5459,5535,5613,5638,5678,5680,5711,5712,5714,5718,5720,5721,5733,5756,5760,5802,6000,6090,6108,6131,6141,6155,6165,6280,6329,6332,6337,6352,6378,6401,6435,6440,6519,6528,6600,6610,6624,6632,6663,6665,6691,6705,6712,6748,6759,6811,6819,6820,6848,6849,6851,6853,6865,6884,6913,6914,6922,6924,6934,6953,6955,6956,6968,6991,7022,7050,7062,7108,7124,7134,7137,7184,7189,7192,7213,7228,7255,7265,7267,7268,7271,7279,7285,7293,7294,7295,7336,7337,7390,7394,7400,7451,7454,7478,7493,7496,7499,7509,7510,7511,7514,7544,7546,7548,7553,7571,7573,7575,7620,7653,7673,7682,7711,7724,7759,7763,7792,7794,7807,7808,7809,7811,7812,7836,7888,7894,7900,7924,7960,7976,7979,8001,8004,8007,8053,8083,8087,8092,8094,8102,8103,8107,8116,8117,8118,8133,8136,8155,8159,8163,8166,8168,8188,8194,8209,8213,8237,8258,8259,8260,8263,8264,8281,8294,8300,8319,8323,8332,8355,8356,8397,8453,8460,8473,8478,8479,8480,8489,8490,8522,8523,8535,8545,8547,8561,8574,8577,8578,8587,8606,8609,8653,8668,8691,8693,8696,8697,8701,8712,8713,8714,8719,8752,8761,8766,8769,8793,8798,8809,8838,8843,8850,8853,8855,8856,8894,8899,8909,8934,8949,8951,8994,8995,9002,9005,9013,9033,9034,9035,9046,9055,9061,9063,9072,9121,9174,9179,9196,9208,9213,9241,9363,9370,9400,9433,9455,9462,9479,9484,9504,9543,9553,9624,9625,9674,9685,9694,9721,9722,9723,9743,9864,9881,9883,9898,9921,9936,9937,9958,9987,9988,10012,10013,10031,10033,10058,10059,10060,10067,10078,10089,10101,10102,10103,10106,10122,10162,10193,10204,10211,10263,10272,10299,10313,10338,10366,10370,10372,10373,10374,10380,10392,10395,10401,10415,10441,10471,10481,10483,10549,10553,10555,10556,10557,10559,10563,10566,10583,10624,10655,10696,10697,10711,10724,10731,10750,10778,10822,10862,10910,10949,10952,10954,10959,11003,11017,11019,11021,11022,11042,11048,11063,11066,11090,11148,11151,11152,11155,11165,11177,11182] \ No newline at end of file diff --git a/projects/aperture/updateScript.js b/projects/aperture/updateScript.js deleted file mode 100644 index 5954152702..0000000000 --- a/projects/aperture/updateScript.js +++ /dev/null @@ -1,16 +0,0 @@ - -const fs = require('fs') -let openPositions = require("./openPositions.json"); -let data = require("./data.json"); - -console.log(openPositions.length) -openPositions = openPositions.filter(i => { - const key = i+'' - const val = data[key] - if (!val) return true - if (val.position_close_info) return false - const usdVal = val.detailed_info.uusd_value / 1e6 - return usdVal > 1e3 * 3 -}) -console.log(openPositions.length) -console.log(JSON.stringify(openPositions)) \ No newline at end of file diff --git a/projects/paraspace/helper/index.js b/projects/paraspace/helper/index.js index 8f336773a8..d5d86f7799 100644 --- a/projects/paraspace/helper/index.js +++ b/projects/paraspace/helper/index.js @@ -24,7 +24,7 @@ async function tvl(_, _1, _cb, { api, }) { if (api.chain === "ethereum") { toa.push(...[[Bayc, P2PPairStaking], [Mayc, P2PPairStaking], [Bakc, P2PPairStaking]]) } - return sumTokens2({ chain: api.chain, balances, tokensAndOwners: toa, blacklistedTokens: ['0x0000000000000000000000000000000000000001'] }) + return sumTokens2({ chain: api.chain, balances, tokensAndOwners: toa, blacklistedTokens: ['0x0000000000000000000000000000000000000001', address.ethereum.cAPE] }) } async function borrowed(_, _1, _cb, { api, }) { From af933f0d6f1828cfd94d91ee348b242bab67d862 Mon Sep 17 00:00:00 2001 From: define Date: Thu, 15 Jun 2023 13:52:41 +0100 Subject: [PATCH 0767/1354] add bitmake adapter (cex) --- projects/bitmake/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/bitmake/index.js diff --git a/projects/bitmake/index.js b/projects/bitmake/index.js new file mode 100644 index 0000000000..2a4781423b --- /dev/null +++ b/projects/bitmake/index.js @@ -0,0 +1,13 @@ +const { cexExports } = require('../helper/cex') + +const config = { + bitcoin: { + // wallet provide by a bitmake team + owners: [ + "3F12ncAyx4VkfpvnS7ZxdpggFx4p9RKfVe", + ], + }, +} + +module.exports = cexExports(config) +module.exports.methodology = 'We are only tracking one BTC wallet. We dont have information regarding other wallets' \ No newline at end of file From a138c7b89b64f2d134a0d885bb68e92e69189477 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 19:30:29 +0530 Subject: [PATCH 0768/1354] Basilisk (#6561) * Add files via upload * bugfix --------- Co-authored-by: basilisk-protocol <130878946+basilisk-protocol@users.noreply.github.com> --- projects/basilisk/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/basilisk/index.js diff --git a/projects/basilisk/index.js b/projects/basilisk/index.js new file mode 100644 index 0000000000..2dd0f26c6e --- /dev/null +++ b/projects/basilisk/index.js @@ -0,0 +1,9 @@ +const { compoundExports2 } = require('../helper/compound'); + +module.exports = { + era: compoundExports2({ + comptroller: '0x4085f99720e699106bc483dAb6CAED171EdA8D15', + cether: '0x1e8F1099a3fe6D2c1A960528394F4fEB8f8A288D', + fetchBalances: true, + }) +}; \ No newline at end of file From 31b0dd90f6c28b03fa4e5f37f5801e9b45a629d1 Mon Sep 17 00:00:00 2001 From: AlgoRai Finance <114914798+AlgoRai@users.noreply.github.com> Date: Thu, 15 Jun 2023 22:03:41 +0800 Subject: [PATCH 0769/1354] Add PEPE Vault (#6553) * Update tvl for ethereum on algorai-finance. * Add PEPE vault --------- Co-authored-by: Vitali Co-authored-by: Giorgi --- projects/algorai-finance/constants.js | 22 ++++++---------------- projects/algorai-finance/index.js | 3 +-- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/projects/algorai-finance/constants.js b/projects/algorai-finance/constants.js index f1d92d18fc..975079ea9a 100644 --- a/projects/algorai-finance/constants.js +++ b/projects/algorai-finance/constants.js @@ -6,63 +6,53 @@ const vaults = [ // v1.0 { vaultID: 878144513, - depositAssetID: 0, assetDecimals: 6, coingecko: 'algorand', - stable: false }, { vaultID: 878140320, - depositAssetID: 31566704, assetDecimals: 6, coingecko: 'usd-coin', - stable: true }, // v1.1 { vaultID: 919531421, - depositAssetID: 0, assetDecimals: 6, coingecko: 'algorand', - stable: false }, { vaultID: 919539218, - depositAssetID: 31566704, assetDecimals: 6, coingecko: 'usd-coin', - stable: true, }, { vaultID: 1004309470, - depositAssetID: 386192725, assetDecimals: 8, coingecko: 'bitcoin', - stable: false, }, { vaultID: 1004325987, - depositAssetID: 31566704, assetDecimals: 6, coingecko: 'usd-coin', - stable: true, }, { vaultID: 1004326861, - depositAssetID: 386195940, assetDecimals: 8, coingecko: 'ethereum', - stable: false, }, { vaultID: 1004374058, - depositAssetID: 31566704, assetDecimals: 6, coingecko: 'usd-coin', - stable: true, + }, + { + vaultID: 1097368119, + assetDecimals: 4, + coingecko: 'pepe', }, ]; + module.exports = { vaults, }; diff --git a/projects/algorai-finance/index.js b/projects/algorai-finance/index.js index 7165a306cc..7e9ee64588 100644 --- a/projects/algorai-finance/index.js +++ b/projects/algorai-finance/index.js @@ -22,10 +22,9 @@ async function tvl() { return balances } - module.exports = { timetravel: false, algorand: { tvl, }, -}; +}; \ No newline at end of file From 5b70723d6c6f9345a97326c0014e1e7f9aff5a79 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 16:05:31 +0200 Subject: [PATCH 0770/1354] fix meld-gold tvl #6554 --- projects/meld-gold/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/meld-gold/index.js b/projects/meld-gold/index.js index c21a02c9d0..ef3deda7cf 100644 --- a/projects/meld-gold/index.js +++ b/projects/meld-gold/index.js @@ -6,7 +6,7 @@ async function tvl() { const api = new sdk.ChainApi({}) let totalMeldMarketCap = 0 - // Gold is priced in oz, silver is priced in grams, but Meld Tokens are both priced in grams + // Gold is priced in oz, silver is priced in oz, but Meld Tokens are both priced in grams const ozToGrams = 28.349523 // Meld tokens @@ -18,7 +18,7 @@ async function tvl() { }, { assetId: tokens.silver$, - grams: 1, + grams: ozToGrams, priceFeed: '0x379589227b15F1a12195D3f2d90bBc9F31f95235', }, ] From 2c52ab7f29afd0e90e4c0d92b1fd1536e801ed5c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 16:40:07 +0200 Subject: [PATCH 0771/1354] code refactor --- projects/carmine-options/abi.js | 43 ++++++++++++------------ projects/carmine-options/api.js | 54 ++++++++----------------------- projects/helper/chain/starknet.js | 3 +- 3 files changed, 36 insertions(+), 64 deletions(-) diff --git a/projects/carmine-options/abi.js b/projects/carmine-options/abi.js index d00bfb9aae..20cb0e9142 100644 --- a/projects/carmine-options/abi.js +++ b/projects/carmine-options/abi.js @@ -1,37 +1,36 @@ const abi = [ { - inputs: [ + "name": "get_all_lptoken_addresses", + "type": "function", + "inputs": [], + "outputs": [ { - name: "lptoken_address", - type: "felt", + "name": "array_len", + "type": "felt" }, - ], - name: "get_unlocked_capital", - outputs: [ { - name: "unlocked_capital", - type: "Uint256", - }, + "name": "array", + "type": "felt*" + } ], - stateMutability: "view", - type: "function", + "stateMutability": "view" }, { - inputs: [ + "name": "get_underlying_token_address", + "type": "function", + "inputs": [ { - name: "lptoken_address", - type: "felt", - }, + "name": "lptoken_address", + "type": "felt" + } ], - name: "get_value_of_pool_position", - outputs: [ + "outputs": [ { - name: "res", - type: "felt", - }, + "name": "underlying_token_address_", + "type": "felt" + } ], - stateMutability: "view", - type: "function", + "stateMutability": "view" }, ]; diff --git a/projects/carmine-options/api.js b/projects/carmine-options/api.js index b4ac67cd72..71a21d4a5e 100644 --- a/projects/carmine-options/api.js +++ b/projects/carmine-options/api.js @@ -1,54 +1,26 @@ // https://www.starknetjs.com/docs/API/contract -const BN = require("bn.js"); -const { multiCall, parseAddress } = require("../helper/chain/starknet"); +const { call, multiCall, parseAddress, number, sumTokens, } = require("../helper/chain/starknet"); const abi = require("./abi"); const amm = "0x076dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa"; -const twoPow61 = new BN(2).pow(new BN(61)); -const tenPowN = (n) => new BN(10).pow(new BN(n)); - -const pools = [ - // EthUsdcCall pool - { - address: - "0x7aba50fdb4e024c1ba63e2c60565d0fd32566ff4b18aa5818fc80c30e749024", - token: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", - decimals: 18, - }, - // EthUsdcPut pool - { - address: - "0x18a6abca394bd5f822cfa5f88783c01b13e593d1603e7b41b00d31d2ea4827a", - token: "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", - decimals: 6, - }, -]; async function tvl(_, _1, _2, { api }) { - const calls = pools.map((pool) => ({ - params: [parseAddress(pool.address)], - })); - - const [unlocked_capitals, pool_positions] = await Promise.all([ - multiCall({ abi: abi.get_unlocked_capital, target: amm, calls }), - multiCall({ - abi: abi.get_value_of_pool_position, - target: amm, - calls, - }), - ]); - pools.forEach((pool, i) => { - // pool TVL is unlocked capital in the pool + position of the pool - // the position is in Math64x61, therefore: - // TVL = unlocked + pool_position * 10**decimals / 2**61 - const poolTvl = unlocked_capitals[i].add( - pool_positions[i].mul(tenPowN(pool.decimals)).div(twoPow61) - ); - api.add(pool.token, poolTvl); + let lpTokens = await call({ + abi: abi.get_all_lptoken_addresses, + target: amm, + }) + lpTokens = number.bigNumberishArrayToHexadecimalStringArray(lpTokens.array.toString().split(',')) + let underlyings = await multiCall({ + abi: abi.get_underlying_token_address, + target: amm, + calls: lpTokens.map((lpToken) => ({ + params: [parseAddress(lpToken)], + })), }); + return sumTokens({ owner: amm, tokens: underlyings.map(parseAddress), api, }); } module.exports = { diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index cc258826e2..80d16363e0 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -1,6 +1,6 @@ // https://www.starknetjs.com/docs/API/contract const { getUniqueAddresses} = require('../tokenMapping') -const { Provider, Contract, validateAndParseAddress } = require('starknet') +const { Provider, Contract, validateAndParseAddress, number, } = require('starknet') const { PromisePool } = require('@supercharge/promise-pool') let provider @@ -96,4 +96,5 @@ module.exports = { multiCall, parseAddress: validateAndParseAddress, sumTokens, + number, } \ No newline at end of file From 2f70edb71f20cd2f35759fb91a515129f75e335d Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Thu, 15 Jun 2023 21:55:44 +0700 Subject: [PATCH 0772/1354] query all token instead of just 10 (#6558) --- projects/mars/index.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/projects/mars/index.js b/projects/mars/index.js index d669b9dad3..d6dc259c92 100644 --- a/projects/mars/index.js +++ b/projects/mars/index.js @@ -7,9 +7,21 @@ const chain = 'osmosis' const contract = 'osmo1c3ljch9dfw5kf52nfwpxd2zmj2ese7agnx0p9tenkrryasrle5sqf3ftpg' async function borrowed() { - const res = await queryContract({ contract, chain: 'osmosis', data: { markets: { limit: 10 } } }) + var lastDenom = "" + var lastResponse = [] + var res + + do { + res = await queryContract({ contract, chain: 'osmosis', data: { markets: {start_after: lastDenom} } }) + const resLength = res.length + lastResponse.push(...res) + if (resLength != 0) { + lastDenom = res[resLength - 1].denom + } + } while (res.length != 0) + const borrowed = {}; - res.forEach(i => { + lastResponse.forEach(i => { sdk.util.sumSingleBalance(borrowed, i.denom, i.debt_total_scaled * i.borrow_index / 1e6) }) From 5c5e8d667476e580936b4914cc8d488dbed8a813 Mon Sep 17 00:00:00 2001 From: Varun Krishna S Date: Thu, 15 Jun 2023 20:29:54 +0530 Subject: [PATCH 0773/1354] feat: updates the new factory for arbitrum (#6562) --- projects/timeswap-v2/index.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index 744919cb76..342ce06476 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -2,7 +2,7 @@ const { getLogs, getAddress } = require("../helper/cache/getLogs"); const { sumTokens2 } = require("../helper/unwrapLPs"); async function tvl(_, _b, _cb, { api }) { - const { factory, oldFactory, fromBlock } = config[api.chain]; + const { factory, oldFactory, fromBlock, newFactory } = config[api.chain]; const logs = await getLogs({ api, @@ -20,6 +20,23 @@ async function tvl(_, _b, _cb, { api }) { getAddress(i.data), ]; }); + if (newFactory) { + const newLogs = await getLogs({ + api, + target: newFactory, + topics: [ + "0x68ff1cfcdcf76864161555fc0de1878d8f83ec6949bf351df74d8a4a1a2679ab", + ], + fromBlock, + }); + const newOwnerTokens = newLogs.map((i) => { + return [ + [getAddress(i.topics[2]), getAddress(i.topics[3])], + getAddress(i.data), + ]; + }); + ownerTokens = [...ownerTokens, ...newOwnerTokens]; + } if (oldFactory) { let oldOwnerTokens; const oldLogs = await getLogs({ @@ -57,6 +74,7 @@ const config = { }, arbitrum: { factory: "0xcf0aca5c5b7e1bF63514D362243b6c50d5761FE8", + newFactory: "0x406d3Dfcbe20b642c2262b29b960822975371502", fromBlock: 70785970, }, }; From fcf778145cec68da4f99f5e8d2e1d631ff80f76a Mon Sep 17 00:00:00 2001 From: Real Shaman <85087525+realdealshaman@users.noreply.github.com> Date: Thu, 15 Jun 2023 19:41:39 +0100 Subject: [PATCH 0774/1354] Update index.js remove hallmark --- projects/sudoswap/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js index 87edf70fb4..c06bc71200 100644 --- a/projects/sudoswap/index.js +++ b/projects/sudoswap/index.js @@ -31,9 +31,6 @@ query get_pairs($lastId: String, $block: Int) { module.exports = { methodology: 'Sum up all the ETH in pools and count whitelisted NFT values as well (price fetched from chainlink)', - hallmarks: [ - [Math.floor(new Date('2022-12-06') / 1e3), 'TVL includes whitelisted nft value as well'], - ], ethereum: { tvl: async (timestamp, block, chainBlocks, { api }) => { const data = await graphFetchById({ From e991747a88a936712c5817dc6a49d0eac796b50e Mon Sep 17 00:00:00 2001 From: dbvora03 <54694188+dbvora03@users.noreply.github.com> Date: Thu, 15 Jun 2023 15:26:11 -0500 Subject: [PATCH 0775/1354] add ether-fi tvl calculation (#6541) * add ether-fi tvl calculation * fix eslint issues * fix eslint issues * filter out exited validators --- projects/ether-fi/index.js | 127 +++++++++++++++++++++++++++++++++++-- 1 file changed, 123 insertions(+), 4 deletions(-) diff --git a/projects/ether-fi/index.js b/projects/ether-fi/index.js index 16ca1d8485..5a272582e6 100644 --- a/projects/ether-fi/index.js +++ b/projects/ether-fi/index.js @@ -1,12 +1,131 @@ const ADDRESSES = require('../helper/coreAssets.json') +const { GraphQLClient, gql } = require('graphql-request') +const sdk = require('@defillama/sdk'); +const axios = require("axios"); + +const config = { + GRAPH_URL: "https://api.studio.thegraph.com/query/41778/etherfi-mainnet/0.0.3", + BEACONCHAIN_URL: "https://beaconcha.in/api/v1/validator", + LP_ADDRESS: '', + PAGINATION_LIMIT: 100, +}; + +const newTVL = async (block, api) => { + + const validators = await queryFromDepositEvent() + + let pubkeyPartitions = [] + let nodeAddresses = [] + // Maps will ensure we will be running in linear time. + // If we reach something like 10000 validators, we dont want to push iterate something 10000^2 times + let validatorMapping = new Map() + let nodeBalanceMapping = new Map() + + let validatorsPerBatch = 100; + + for (const validator of validators) { + + var index = Object.keys(nodeBalanceMapping).length; + + const validatorSubarrayIndex = Math.floor(index / validatorsPerBatch) + if (!pubkeyPartitions[validatorSubarrayIndex]) { + pubkeyPartitions[validatorSubarrayIndex] = []; + } + pubkeyPartitions[validatorSubarrayIndex].push(validator.validatorPubKey) + + // This will let us access validator data in constant time later on + validatorMapping[validator.validatorPubKey] = validator + nodeBalanceMapping[validator.etherfiNode] = validator.validatorPubKey + + nodeAddresses.push(validator.etherfiNode) + } + + // Get Validator Balances + const validatorBalances = await pubkeyPartitions.reduce(async (accumulatorPromise, pubkeySet) => { + const accumulator = await accumulatorPromise; + const response = await axios.post(config.BEACONCHAIN_URL, { + indicesOrPubkey: pubkeySet.join(",") + }); + return accumulator.concat(response.data.data); + }, Promise.resolve([])); + + for (const balance of validatorBalances) { + validatorMapping[balance.pubkey] = { ...validatorMapping[balance.pubkey], validatorBalance: balance.balance * (10**9) }; + } + + // Get etherfiNode contract balances + const {output} = await sdk.api.eth.getBalances({ targets: nodeAddresses, block }) + + for (const balance of output) { + validatorMapping[nodeBalanceMapping[balance.target]] = {...validatorMapping[nodeBalanceMapping[balance.target]], contractBalance: parseInt(balance.balance)} + } + + // Now that we have out mapping, we can calculate it all together + let lpTVL = 0; + let soloStakerTVL = 0; + Object.values(validatorMapping).forEach(async (validator) => { + const beaconBalanceEth = validator.validatorBalance + + if (beaconBalanceEth) { + const balance = beaconBalanceEth + validator.contractBalance + if (validator.TNFTHolder == config.LP_ADDRESS) { + lpTVL += balance + } else { + soloStakerTVL += balance + } + } + }) + + const eapTVL = await api.call({ abi: 'uint256:getContractTVL', target: '0x7623e9DC0DA6FF821ddb9EbABA794054E078f8c4'}) + + return { + soloTVL: soloStakerTVL, + lpTVL, + eapTVL: parseInt(eapTVL) + } +} + +const queryFromDepositEvent = async () => { + + const graphQLClient = new GraphQLClient(config.GRAPH_URL); + const validatorQuery = gql` + query GetValidators($limit: Int!, $offset: Int!) { + validators(limit: $limit, offset: $offset, , where: {and: [{phase_not: CANCELLED}, {phase_not: FULLY_WITHDRAWN}, {phase_not: EXITED}]}) { + etherfiNode + TNFTHolder + validatorPubKey + } + } + `; + + try { + const limit = config.PAGINATION_LIMIT; + let validators = []; + + let offset = 0; + for (;;) { + const res = await graphQLClient.request(validatorQuery, { limit, offset }); + const { validators: batch } = res; + + validators.push(...batch); + offset += limit; + if (batch.length < limit) break; + } + + return validators; + } catch (error) { + console.error('error: queryFromDepositEvent:', error); + } +} + module.exports = { misrepresentedTokens: true, ethereum: { - tvl: async (_, _1, _2, { api }) => { - const tvl = await api.call({ abi: 'uint256:getContractTVL', target: '0x7623e9DC0DA6FF821ddb9EbABA794054E078f8c4'}) + tvl: async (_, block, _2, { api }) => { + const {soloTVL, lpTVL, eapTVL} = await newTVL(block, api) return { - ['ethereum:' + ADDRESSES.null]: tvl + ['ethereum:' + ADDRESSES.null]: soloTVL + lpTVL + eapTVL } } } -} \ No newline at end of file +} From 8e431a6a0854630e034ca2a78874bda2a31ac5de Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 15 Jun 2023 21:51:09 +0100 Subject: [PATCH 0776/1354] fix aavegotchi treasury --- projects/treasury/aavegotchi.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/projects/treasury/aavegotchi.js b/projects/treasury/aavegotchi.js index 092c902e1b..295ca69cec 100644 --- a/projects/treasury/aavegotchi.js +++ b/projects/treasury/aavegotchi.js @@ -12,7 +12,20 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.ethereum.DAI//DAI ], - owners: [aavegotchiTreasury2, treasury2], + owners: [aavegotchiTreasury2, treasury2, '0x53c3CA81EA03001a350166D2Cc0fcd9d4c1b7B62'], ownTokens: [GHST], }, + polygon: { + tokens: [ + nullAddress, + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDC + ], + owners: ['0xb208f8BB431f580CC4b216826AFfB128cd1431aB', '0x27DF5C6dcd360f372e23d5e63645eC0072D0C098', '0x939b67F6F6BE63E09B0258621c5A24eecB92631c', + '0x62DE034b1A69eF853c9d0D8a33D26DF5cF26682E', '0x8c8E076Cd7D2A17Ba2a5e5AF7036c2b2B7F790f6', '0x48eA1d45142fC645fDcf78C133Ac082eF159Fe14', '0x6fb7e0AAFBa16396Ad6c1046027717bcA25F821f', +'0x921D8FDF089775D5AC61b2d6e8f34F1edd554D8f', +'0xa8D00712abE7af3446cdC651c159737cCFB43255', '0xed7cb3973C7bFE4bf78dA8E5f52EB04c0dF53d3B', '0x62DE034b1A69eF853c9d0D8a33D26DF5cF26682E', '0x8c8E076Cd7D2A17Ba2a5e5AF7036c2b2B7F790f6', +'0xAbA69f6E893B18bE066a237f723F43315BBF9D9A'], + ownTokens: ['0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7'], + }, }) \ No newline at end of file From cb77c953c7cac5a3d1769bea109209d975cd0c64 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Jun 2023 23:19:35 +0200 Subject: [PATCH 0777/1354] froggy: suspected rugpull --- projects/froggy-protocol/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/froggy-protocol/index.js b/projects/froggy-protocol/index.js index c7ebea44a9..c902b2be3c 100644 --- a/projects/froggy-protocol/index.js +++ b/projects/froggy-protocol/index.js @@ -14,4 +14,13 @@ module.exports = yieldHelper({ getReservesABI: 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)', }, useDefaultCoreAssets: true, -}) \ No newline at end of file +}) + +module.exports = { + era: { + tvl: () => ({}), + }, + hallmarks: [ + [Math.floor(new Date('2023-06-15')/1e3), 'Rug Pull ?'], + ], +} \ No newline at end of file From e49e015f3889799ac9339988aeb13ca5711dbc2c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 16 Jun 2023 00:46:04 +0200 Subject: [PATCH 0778/1354] turn orca onchain --- projects/helper/solana.js | 9 +- projects/orca/index.js | 237 +++++++++++++++++++++++++++++++++++--- 2 files changed, 225 insertions(+), 21 deletions(-) diff --git a/projects/helper/solana.js b/projects/helper/solana.js index d6741df95e..d8c053dbd3 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -11,8 +11,12 @@ const { decodeAccount } = require('./utils/solana/layout') const sdk = require('@defillama/sdk') -const blacklistedTokens = [ +const blacklistedTokens_default = [ 'CowKesoLUaHSbAMaUxJUj7eodHHsaLsS65cy8NFyRDGP', + '674PmuiDtgKx3uKuJ1B16f9m5L84eFvNwj3xDMvHcbo7', // $WOOD + 'SNSNkV9zfG5ZKWQs6x4hxvBRV6s8SqMfSGCtECDvdMd', // SNS + 'A7rqejP8LKN8syXMr4tvcKjs2iJ4WtZjXNs1e6qP3m9g', // ZION + '2HeykdKjzHKGm2LKHw8pDYwjKPiFEoXAz74dirhUgQvq', // SAO ] let connection, provider @@ -286,7 +290,7 @@ function exportDexTVL(DEX_PROGRAM_ID, getTokenAccounts) { } const coreTokens = await getGeckoSolTokens() - return transformDexBalances({ chain: 'solana', data, blacklistedTokens, coreTokens, }) + return transformDexBalances({ chain: 'solana', data, blacklistedTokens: blacklistedTokens_default, coreTokens, }) } async function _getTokenAccounts() { @@ -322,6 +326,7 @@ async function sumTokens2({ if (owner) tokensAndOwners = tokens.map(t => [t, owner]) if (owners.length) tokensAndOwners = tokens.map(t => owners.map(o => [t, o])).flat() } + blacklistedTokens.push(...blacklistedTokens_default) tokensAndOwners = tokensAndOwners.filter(([token]) => !blacklistedTokens.includes(token)) diff --git a/projects/orca/index.js b/projects/orca/index.js index ca91060300..a3c21e323d 100644 --- a/projects/orca/index.js +++ b/projects/orca/index.js @@ -1,24 +1,223 @@ -const { get } = require('../helper/http') +const { getProvider, sumTokens2, exportDexTVL, } = require('../helper/solana') +const { Program, } = require("@project-serum/anchor"); +const sdk = require('@defillama/sdk') -const endpoint = "https://api.orca.so/pools"; -const wpEndpoint = "https://api.mainnet.orca.so/v1/whirlpool/list"; - -async function fetch() { - const [pools, {whirlpools}] = await Promise.all([get(endpoint), get(wpEndpoint)]); - const poolsTvl = pools.reduce((sum, pool) => - sum + pool.liquidity - , 0); - const wpTvl = whirlpools.reduce((sum, pool) => - sum + (pool.tvl ?? 0) - , 0); - return poolsTvl + wpTvl; +async function tvl() { + const provider = getProvider() + const programId = 'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc' + const program = new Program(whirpoolIDL, programId, provider) + const whirlpools = await program.account.whirlpool.all() + const tokenAccounts = whirlpools.map(({ account}) => [account.tokenVaultA, account.tokenVaultB]).flat() + return sumTokens2({ tokenAccounts, }) } +/* async function orcaPoolTvlViaConfig() { + const tokenAccounts = [] + const v1ProgramId = 'DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1' + const { pools } = await getConfig('orca/pools', 'https://api.orca.so/configs') + Object.values(pools).forEach(i => { + tokenAccounts.push(i.tokenAccountA) + tokenAccounts.push(i.tokenAccountB) + }) + return sumTokens2({ tokenAccounts, blacklistedTokens, }) +} */ + +const orcaV1Tvl = exportDexTVL('DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1') +const orcaV2Tvl = exportDexTVL('9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP') + module.exports = { - timetravel: false, - fetch, - hallmarks:[ - [1628565707, "Token+LM launch"], - [1667865600, "FTX collapse"] - ] + timetravel: false, + solana: { + tvl: sdk.util.sumChainTvls([orcaV1Tvl, orcaV2Tvl, tvl]) + }, + hallmarks: [ + [1628565707, "Token+LM launch"], + [1667865600, "FTX collapse"] + ] }; + +const whirpoolIDL = { + version: '0.2.0', + name: 'whirlpool', + instructions: [], + accounts: [ + { + name: 'whirlpoolsConfig', + type: { + kind: 'struct', + fields: [ + { + name: 'feeAuthority', + type: 'publicKey' + }, + { + name: 'collectProtocolFeesAuthority', + type: 'publicKey' + }, + { + name: 'rewardEmissionsSuperAuthority', + type: 'publicKey' + }, + { + name: 'defaultProtocolFeeRate', + type: 'u16' + } + ] + } + }, + { + name: 'whirlpool', + type: { + kind: 'struct', + fields: [ + { + name: 'whirlpoolsConfig', + type: 'publicKey' + }, + { + name: 'whirlpoolBump', + type: { + array: [ + 'u8', + 1 + ] + } + }, + { + name: 'tickSpacing', + type: 'u16' + }, + { + name: 'tickSpacingSeed', + type: { + array: [ + 'u8', + 2 + ] + } + }, + { + name: 'feeRate', + type: 'u16' + }, + { + name: 'protocolFeeRate', + type: 'u16' + }, + { + name: 'liquidity', + type: 'u128' + }, + { + name: 'sqrtPrice', + type: 'u128' + }, + { + name: 'tickCurrentIndex', + type: 'i32' + }, + { + name: 'protocolFeeOwedA', + type: 'u64' + }, + { + name: 'protocolFeeOwedB', + type: 'u64' + }, + { + name: 'tokenMintA', + type: 'publicKey' + }, + { + name: 'tokenVaultA', + type: 'publicKey' + }, + { + name: 'feeGrowthGlobalA', + type: 'u128' + }, + { + name: 'tokenMintB', + type: 'publicKey' + }, + { + name: 'tokenVaultB', + type: 'publicKey' + }, + { + name: 'feeGrowthGlobalB', + type: 'u128' + }, + { + name: 'rewardLastUpdatedTimestamp', + type: 'u64' + }, + { + name: 'rewardInfos', + type: { + array: [ + { + defined: 'WhirlpoolRewardInfo' + }, + 3 + ] + } + } + ] + } + } + ], + types: [ + { + name: 'WhirlpoolRewardInfo', + docs: [ + 'Stores the state relevant for tracking liquidity mining rewards at the `Whirlpool` level.', + 'These values are used in conjunction with `PositionRewardInfo`, `Tick.reward_growths_outside`,', + 'and `Whirlpool.reward_last_updated_timestamp` to determine how many rewards are earned by open', + 'positions.' + ], + type: { + kind: 'struct', + fields: [ + { + name: 'mint', + docs: [ + 'Reward token mint.' + ], + type: 'publicKey' + }, + { + name: 'vault', + docs: [ + 'Reward vault token account.' + ], + type: 'publicKey' + }, + { + name: 'authority', + docs: [ + 'Authority account that has permission to initialize the reward and set emissions.' + ], + type: 'publicKey' + }, + { + name: 'emissionsPerSecondX64', + docs: [ + 'Q64.64 number that indicates how many tokens per second are earned per unit of liquidity.' + ], + type: 'u128' + }, + { + name: 'growthGlobalX64', + docs: [ + 'Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward', + 'emissions were turned on.' + ], + type: 'u128' + } + ] + } + } + ], + errors: [] +} From 7995169c73c47b706adece6e0329d9f73b97aa0b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 16 Jun 2023 06:54:37 +0100 Subject: [PATCH 0779/1354] separate astroport and astroport classic --- projects/astroport-classic/index.js | 13 +++++++++++++ projects/astroport/index.js | 9 +-------- 2 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 projects/astroport-classic/index.js diff --git a/projects/astroport-classic/index.js b/projects/astroport-classic/index.js new file mode 100644 index 0000000000..b15e40f8b5 --- /dev/null +++ b/projects/astroport-classic/index.js @@ -0,0 +1,13 @@ +const { getFactoryTvl } = require('../terraswap/factoryTvl') + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + methodology: "Liquidity on the DEX", + terra: { + tvl: getFactoryTvl("terra1fnywlw4edny3vw44x04xd67uzkdqluymgreu7g",) + }, + hallmarks: [ + [1651881600, "UST depeg"], + ] +} // node test.js projects/astroport/index.js diff --git a/projects/astroport/index.js b/projects/astroport/index.js index 8274121dfa..981dfb0ace 100644 --- a/projects/astroport/index.js +++ b/projects/astroport/index.js @@ -4,9 +4,6 @@ module.exports = { timetravel: false, misrepresentedTokens: true, methodology: "Liquidity on the DEX", - terra: { - tvl: getFactoryTvl("terra1fnywlw4edny3vw44x04xd67uzkdqluymgreu7g",) - }, injective: { tvl: getFactoryTvl("inj19aenkaj6qhymmt746av8ck4r8euthq3zmxr2r6",) }, @@ -16,8 +13,4 @@ module.exports = { neutron: { tvl: getFactoryTvl("neutron1hptk0k5kng7hjy35vmh009qd5m6l33609nypgf2yc6nqnewduqasxplt4e") }, - hallmarks: [ - [1651881600, "UST depeg"], - ] - -} // node test.js projects/astroport/index.js +} // node test.js projects/astroport/index.js \ No newline at end of file From 934dde489d3edb9d7aa860322c177b20ccccf5ca Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 16 Jun 2023 09:36:52 +0200 Subject: [PATCH 0780/1354] fix meld-gold asset pricing #6566 --- projects/meld-gold/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/meld-gold/index.js b/projects/meld-gold/index.js index ef3deda7cf..46aeb04aeb 100644 --- a/projects/meld-gold/index.js +++ b/projects/meld-gold/index.js @@ -29,7 +29,7 @@ async function tvl() { const { answer: price } = await api.call({ abi, target: priceFeed }) const assetInfo = await getAssetInfo(assetId) const circulatingSupply = assetInfo.circulatingSupply - const marketCap = (circulatingSupply / grams / 10 ** 6) * (price / 10 ** 9) + const marketCap = (circulatingSupply / grams / 10 ** 6) * (price / 10 ** 8) totalMeldMarketCap += marketCap } From 8e5d17d65060a58701f501629103c67a5c053b94 Mon Sep 17 00:00:00 2001 From: tajikistanismylove <133168832+tajikistanismylove@users.noreply.github.com> Date: Fri, 16 Jun 2023 08:42:37 +0100 Subject: [PATCH 0781/1354] Update Baton TVL (#6564) * add baton * code refactor * update baton farm * match formatting --------- Co-authored-by: tajikistanismylove Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/baton/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/baton/index.js b/projects/baton/index.js index 99931c7b8d..fb3a9a0170 100644 --- a/projects/baton/index.js +++ b/projects/baton/index.js @@ -16,16 +16,17 @@ async function tvl(timestamp, blockHeight, _2, { api }) { }); // filter any farms where the reward token is not fractional nfts or the underlying pair is not paired with eth - let filteredLogs = logs.filter(i => i.pairAddress === i.rewardsToken) + let filteredLogs = logs.filter(i => i.farmType === 2) const baseTokens = await api.multiCall({ abi: 'address:baseToken', calls: filteredLogs.map(i => i.pairAddress) }) const filteredFarms = filteredLogs.filter((i, idx) => baseTokens[idx] = nullAddress) const farms = filteredFarms.map(i => i.farmAddress) const pairs = filteredFarms.map(i => i.pairAddress) + const rewardTokens = filteredFarms.map(i => i.rewardsToken) const totalSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: farms }) - const prices = await api.multiCall({ abi: 'uint256:price', calls: pairs }) + const prices = await api.multiCall({ abi: 'uint256:price', calls: rewardTokens }) const baseTokenAmounts = (await api.multiCall({ abi: "function removeQuote(uint256) view returns (uint256,uint256)", calls: pairs.map((v, i) => ({ target: v, params: [totalSupplies[i]] })) })).map(i => i[0]) - const rewardBalances = (await api.multiCall({ abi: "erc20:balanceOf", calls: pairs.map((v, i) => ({ target: v, params: [farms[i]] })) })) + const rewardBalances = (await api.multiCall({ abi: "erc20:balanceOf", calls: rewardTokens.map((v, i) => ({ target: v, params: [farms[i]] })) })) baseTokenAmounts.forEach(i => api.add(nullAddress, i * 2)); rewardBalances.forEach((v, i) => api.add(nullAddress, (prices[i] * v) / 1e18)); } From 0ccb5d24c32a7acd36bc12a7baefacc57b46323d Mon Sep 17 00:00:00 2001 From: "Kapinus.io" Date: Fri, 16 Jun 2023 10:45:55 +0300 Subject: [PATCH 0782/1354] Kapinus (#6565) * Kapinus * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/kapinus/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/kapinus/index.js diff --git a/projects/kapinus/index.js b/projects/kapinus/index.js new file mode 100644 index 0000000000..601109737a --- /dev/null +++ b/projects/kapinus/index.js @@ -0,0 +1,13 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + bsc: { + tvl: getUniTVL({ + factory: '0x70e881fa43a7124e36639b54162395451cef1922', + abi: 'uint256:allPairs', + useDefaultCoreAssets: true, + fetchBalances: true, + }) + }, +}; From 5b2955d3c53a2b08b87f5bb53d83104eee9935a3 Mon Sep 17 00:00:00 2001 From: luisqa <39200315+luisqagt@users.noreply.github.com> Date: Fri, 16 Jun 2023 01:52:43 -0600 Subject: [PATCH 0783/1354] add cmdx to stride (#6567) --- projects/stride/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/stride/index.js b/projects/stride/index.js index b6302721a0..ad75c2740e 100644 --- a/projects/stride/index.js +++ b/projects/stride/index.js @@ -10,6 +10,7 @@ const coinGeckoIds = { aevmos: "evmos", inj: "injective-protocol", uumee: "umee", + ucmdx: "comdex", }; function getCoinDenom(denom) { From 46fb86661fa73bc2e62dcfca21df5ac2d4d2607f Mon Sep 17 00:00:00 2001 From: Single Finance Lab <92788245+singlefinance@users.noreply.github.com> Date: Fri, 16 Jun 2023 17:15:48 +0800 Subject: [PATCH 0784/1354] feat: Camelot dex support (#6557) * feat: Camelot dex support * fix: remove zero addr calls --------- Co-authored-by: Caspar Reynolds --- projects/single/abi.js | 29 +++++++++++++++ projects/single/helpers.js | 74 +++++++++++++++++++++++++++++++++++++- projects/single/index.js | 5 ++- 3 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 projects/single/abi.js diff --git a/projects/single/abi.js b/projects/single/abi.js new file mode 100644 index 0000000000..af989a76c5 --- /dev/null +++ b/projects/single/abi.js @@ -0,0 +1,29 @@ +const camelotMasterAbi = { + "poolLength": 'function poolsLength() view returns (uint256)', + "getPoolAddressByIndex": "function getPoolAddressByIndex(uint256 index) view returns (address)", + "getPoolInfo": "function getPoolInfo(address) view returns (address poolAddress, uint256 allocPoint, uint256 lastRewardTime, uint256 reserve, uint256 poolEmissionRate)", +} + +const camelotNFTPoolAbi = { + "balanceOf": "function balanceOf(address owner) view returns (uint256 balance)", + "tokenOfOwnerByIndex": "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)", + "getPoolInfo": "function getPoolInfo() view returns (address lpToken, address grailToken, address xGrailToken, uint256 lastRewardTime, uint256 accRewardsPerShare, uint256 lpSupply, uint256 lpSupplyWithMultiplier, uint256 allocPoint)", + "getStakingPosition" : "function getStakingPosition(uint256 tokenId) view returns (uint256 amount, uint256 amountWithMultiplier, uint256 startLockTime, uint256 lockDuration, uint256 lockMultiplier, uint256 rewardDebt, uint256 boostPoints, uint256 totalMultiplier)" +} + +const camelotNitroPoolAbi = { + "nftPool": "function nftPool() view returns (address)", + "userInfo": "function userInfo(address) view returns (uint256 totalDepositAmount, uint256 rewardDebtToken1, uint256 rewardDebtToken2, uint256 pendingRewardsToken1, uint256 pendingRewardsToken2)" +} + +const wCamelotSpNFTAbi = { + "stakedNitroPool": "function stakedNitroPool(uint256) view returns (address stakedNitroPool)", +} + + +module.exports = { + camelotMasterAbi, + camelotNFTPoolAbi, + camelotNitroPoolAbi, + wCamelotSpNFTAbi, +} \ No newline at end of file diff --git a/projects/single/helpers.js b/projects/single/helpers.js index fca342f9e5..1a4e8c6f2c 100644 --- a/projects/single/helpers.js +++ b/projects/single/helpers.js @@ -1,8 +1,10 @@ const sdk = require('@defillama/sdk'); +const bn = require('bignumber.js'); const abi = require('../helper/abis/masterchef.json'); const { unwrapLPsAuto } = require('../helper/unwrapLPs'); const userInfoAbi = 'function userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)' const { getChainTransform } = require('../helper/portedTokens'); +const { camelotMasterAbi, camelotNFTPoolAbi, camelotNitroPoolAbi, wCamelotSpNFTAbi } = require("./abi") /** this is adapted from `projects/helpers/masterchef/getUserMasterChefBalances` * to deal with VVS's CraftsmanV2 Contract, which does not have @@ -36,6 +38,76 @@ async function getUserCraftsmanV2Balances({ balances = {}, masterChefAddress, us return balances; } +async function getUserCamelotMasterBalances({ balances = {}, masterChefAddress, userAddres: wCamelotSpNFT, block, chain = 'ethereum', transformAddress, excludePool2 = false, onlyPool2 = false, pool2Tokens = [] }) { + if (!transformAddress) + transformAddress = await getChainTransform(chain); + + const tempBalances = {}; + const poolLength = (await sdk.api.abi.call({ abi: camelotMasterAbi.poolLength, target: masterChefAddress, block, chain, })).output; + + const dummyArray = Array.from(Array(Number(poolLength)).keys()); + const poolAddressCalls = dummyArray.map(i => ({ target: masterChefAddress, params: i, })); + const poolAddresses = (await sdk.api.abi.multiCall({ block, calls: poolAddressCalls, abi: camelotMasterAbi.getPoolAddressByIndex, chain, })).output + .map(a => a.output) + + const poolInfoCalls = dummyArray.map(i => ({ target: poolAddresses[i] })); + const lpTokens = (await sdk.api.abi.multiCall({ block, calls: poolInfoCalls, abi: camelotNFTPoolAbi.getPoolInfo, chain, })).output + .map(a => a.output.lpToken) + + const userSpNFTBalanceCalls = dummyArray.map(i => ({ target: poolAddresses[i], params: wCamelotSpNFT, })); + const userSpNFTBalance = (await sdk.api.abi.multiCall({ block, calls: userSpNFTBalanceCalls, abi: camelotNFTPoolAbi.balanceOf, chain, })).output + .map(a => a.output) + + const userLpBalance = await Promise.all(userSpNFTBalance.map(async (spNFTBalance, idx) => { + if (isNaN(+spNFTBalance) || +spNFTBalance <= 0) return; + const dummySpNFTArray = Array.from(Array(Number(spNFTBalance)).keys()); + const spNFTIdCalls = dummySpNFTArray.map(i => ({ target: poolAddresses[idx], params: [wCamelotSpNFT, i] })); + const userSpNFTId = (await sdk.api.abi.multiCall({ block, calls: spNFTIdCalls, abi: camelotNFTPoolAbi.tokenOfOwnerByIndex, chain, })).output + .map(a => a.output) + const stakingPositionsCalls = dummySpNFTArray.map(i => ({ target: poolAddresses[idx], params: userSpNFTId[i] })); + const userLpBalance = (await sdk.api.abi.multiCall({ block, calls: stakingPositionsCalls, abi: camelotNFTPoolAbi.getStakingPosition, chain, })).output + .map(a => a.output.amount) + return { + lpToken: lpTokens[idx], + balance: userLpBalance.reduce((partialSum, a) => partialSum.plus(a), bn(0)).toFixed() + }; + })) + userLpBalance.forEach((data, idx) => { + if (!data) return; + tempBalances[transformAddress(data.lpToken)] = data.balance + }) + + const nitroPoolAddressesCalls = dummyArray.map(i => ({ target: wCamelotSpNFT, params: i })); + const nitroPoolAddresses = (await sdk.api.abi.multiCall({ block, calls: nitroPoolAddressesCalls, abi: wCamelotSpNFTAbi.stakedNitroPool, chain, })).output + .map(a => a.output) + const nitroPoolUserLpBalanceCalls = nitroPoolAddresses + .filter((v) => v !== '0x0000000000000000000000000000000000000000') + .map((v, i) => ({ target: v, params: wCamelotSpNFT })); + const nitroPoolUserLpBalance = (await sdk.api.abi.multiCall({ block, calls: nitroPoolUserLpBalanceCalls, abi: camelotNitroPoolAbi.userInfo, chain, })).output + .map((v, i) => { + if (!v.output?.totalDepositAmount || v.output.totalDepositAmount === "0") return + const lpTokenIdx = nitroPoolAddresses.findIndex(addr => addr === nitroPoolUserLpBalanceCalls[i].target) + if (lpTokenIdx === -1) return; + return { + lpToken: lpTokens[lpTokenIdx], + balance: v.output.totalDepositAmount + } + }) + nitroPoolUserLpBalance.forEach((data, idx) => { + if (!data) return; + if (tempBalances[transformAddress(data.lpToken)]) { + tempBalances[transformAddress(data.lpToken)] = bn(tempBalances[transformAddress(data.lpToken)]).plus(data.balance).toFixed() + } else { + tempBalances[transformAddress(data.lpToken)] = data.balance + } + }) + + await unwrapLPsAuto({ balances: tempBalances, chain, block, transformAddress, excludePool2, onlyPool2, pool2Tokens }); + Object.keys(tempBalances).forEach(key => sdk.util.sumSingleBalance(balances, key, tempBalances[key])); + return balances; +} + module.exports = { - getUserCraftsmanV2Balances + getUserCraftsmanV2Balances, + getUserCamelotMasterBalances, } \ No newline at end of file diff --git a/projects/single/index.js b/projects/single/index.js index ab4004ba0f..dd73cbed6d 100644 --- a/projects/single/index.js +++ b/projects/single/index.js @@ -1,7 +1,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs") const { getFixBalances } = require("../helper/portedTokens") const { getUserMasterChefBalances } = require("../helper/masterchef") -const { getUserCraftsmanV2Balances } = require("./helpers") +const { getUserCraftsmanV2Balances, getUserCamelotMasterBalances } = require("./helpers") const vvsPoolInfoABI = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accVVSPerShare)' const spookyMasterChefV2PoolInfoABI = 'function lpToken(uint256) view returns (address)' const { getConfig } = require('../helper/cache') @@ -33,6 +33,9 @@ const getWMasterChefBalances = ({ masterChef: masterChefAddress, wMasterChef, na if (name === "spookyMultiYield" || name === "sushi") { return getUserMasterChefBalances({ ...commonParams, poolInfoABI: spookyMasterChefV2PoolInfoABI, getLPAddress: a => a, ...args }) } + if (name === "camelot") { + return getUserCamelotMasterBalances({ ...commonParams, ...args }) + } return getUserMasterChefBalances({ ...commonParams, poolInfoABI: vvsPoolInfoABI, ...args }) } const data = { From c9e584e02a33ac71ae05a106c58d78ab8e383818 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 16 Jun 2023 11:35:13 +0200 Subject: [PATCH 0785/1354] fix sperax demeter --- projects/sperax-demeter/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/projects/sperax-demeter/index.js b/projects/sperax-demeter/index.js index e3eaa44c0e..ba6ffd03ee 100644 --- a/projects/sperax-demeter/index.js +++ b/projects/sperax-demeter/index.js @@ -15,9 +15,23 @@ async function tvl(_, _b, _cb, { api, }) { rewardTokens[i].forEach(t => toa.push([t, o])) }); await sumTokens2({ api, owners: farms, resolveUniV3: true, }) + const camelotFarms = (await api.multiCall({ abi: 'address:nftPool', calls: farms, permitFailure: true, })).map((v, i) => v ? [v, farms[i]] : null).filter(v => v) + await Promise.all(camelotFarms.map(i => getFarmTvl(api, i))) return sumTokens2({ api, tokensAndOwners: toa, }) } +async function getFarmTvl(api, [nftPool, farm]) { + const poolInfo = await api.call({ abi: "function getPoolInfo() view returns (address lpToken, address grailToken, address xGrailToken, uint256 lastRewardTime, uint256 accRewardsPerShare, uint256 lpSupply, uint256 lpSupplyWithMultiplier, uint256 allocPoint)", target: nftPool, }) + const tokenCount = await api.call({ abi: 'erc20:balanceOf', target: nftPool, params: farm, }) + const calls = [] + for (let i= 0;i< +tokenCount;i++) calls.push({ params: [farm, i]}) + const tokenIds = await api.multiCall({ abi: 'function tokenOfOwnerByIndex(address,uint256) view returns (uint256)', calls, target: nftPool}) + const positions = await api.multiCall({ abi: "function getStakingPosition(uint256 tokenId) view returns (uint256 amount, uint256 amountWithMultiplier, uint256 startLockTime, uint256 lockDuration, uint256 lockMultiplier, uint256 rewardDebt, uint256 boostPoints, uint256 totalMultiplier)", calls: tokenIds, target: nftPool,}) + positions.forEach((position, i) => { + api.add(poolInfo.lpToken, position.amount) + }) +} + module.exports = { doublecounted: true, arbitrum: { tvl } From 35eef149514ae8b556a48362144760278357e7b4 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 17 Jun 2023 03:14:34 +0100 Subject: [PATCH 0786/1354] deleted unused adapters --- projects/1inch.js | 27 ----------- projects/antimatter/abi.json | 6 --- projects/antimatter/index.js | 61 ------------------------ projects/arbidragon/index.js | 17 ------- projects/blend/index.js | 6 --- projects/bullish/index.js | 20 -------- projects/bzx.js | 14 ------ projects/caffeinefund/index.js | 16 ------- projects/carthage/index.js | 38 --------------- projects/chainxyz/index.js | 13 ------ projects/defichain-loans.js | 40 ---------------- projects/defichain-staking.js | 11 ----- projects/djed/index.js | 8 ---- projects/dmmexchange/abi.json | 7 --- projects/dmmexchange/index.js | 69 ---------------------------- projects/harvest.js | 29 ------------ projects/liquidity-book/index.js | 22 --------- projects/otterclam.js | 12 ----- projects/pawnfi/helper/abi.json | 4 -- projects/pawnfi/helper/config.js | 28 ----------- projects/pawnfi/index.js | 12 ----- projects/redbees/index.js | 8 ---- projects/sorbetto/abi.json | 6 --- projects/sorbetto/index.js | 31 ------------- projects/sovryn.js | 18 -------- projects/sunSwap/index.js | 19 -------- projects/votium/index.js | 34 -------------- projects/waterfall-arbitrum/index.js | 9 ---- projects/wheat.js | 15 ------ projects/xcadnetwork/index.js | 51 -------------------- projects/xdao.js | 69 ---------------------------- projects/zerotwohm/index.js | 22 --------- 32 files changed, 742 deletions(-) delete mode 100644 projects/1inch.js delete mode 100644 projects/antimatter/abi.json delete mode 100644 projects/antimatter/index.js delete mode 100644 projects/arbidragon/index.js delete mode 100644 projects/blend/index.js delete mode 100644 projects/bullish/index.js delete mode 100644 projects/bzx.js delete mode 100644 projects/caffeinefund/index.js delete mode 100644 projects/carthage/index.js delete mode 100644 projects/chainxyz/index.js delete mode 100644 projects/defichain-loans.js delete mode 100644 projects/defichain-staking.js delete mode 100644 projects/djed/index.js delete mode 100644 projects/dmmexchange/abi.json delete mode 100644 projects/dmmexchange/index.js delete mode 100644 projects/harvest.js delete mode 100644 projects/liquidity-book/index.js delete mode 100644 projects/otterclam.js delete mode 100644 projects/pawnfi/helper/abi.json delete mode 100644 projects/pawnfi/helper/config.js delete mode 100644 projects/pawnfi/index.js delete mode 100644 projects/redbees/index.js delete mode 100644 projects/sorbetto/abi.json delete mode 100644 projects/sorbetto/index.js delete mode 100644 projects/sovryn.js delete mode 100644 projects/sunSwap/index.js delete mode 100644 projects/votium/index.js delete mode 100644 projects/waterfall-arbitrum/index.js delete mode 100644 projects/wheat.js delete mode 100644 projects/xcadnetwork/index.js delete mode 100644 projects/xdao.js delete mode 100644 projects/zerotwohm/index.js diff --git a/projects/1inch.js b/projects/1inch.js deleted file mode 100644 index a50296c51d..0000000000 --- a/projects/1inch.js +++ /dev/null @@ -1,27 +0,0 @@ -const { sumTokens2, } = require('./helper/unwrapLPs') -const { getLogs } = require('./helper/cache/getLogs') - -const config = require("./1inch/config"); - -module.exports = {} - -Object.keys(config).forEach(chain => { - const { blacklistedTokens = [], factories } = config[chain] - module.exports[chain] = { - tvl: async (_, _b, _2, { api }) => { - const ownerTokens = [] - for (const { MooniswapFactory, fromBlock} of factories) { - const logs = await getLogs({ - api, - target: MooniswapFactory, - topic: 'Deployed(address,address,address)', - eventAbi: 'event Deployed(address indexed mooniswap, address indexed token1, address indexed token2)', - onlyArgs: true, - fromBlock, - }) - logs.forEach(i => ownerTokens.push([[i.token1, i.token2], i.mooniswap])) - } - return sumTokens2({ api, ownerTokens, blacklistedTokens, }) - } - } -}) \ No newline at end of file diff --git a/projects/antimatter/abi.json b/projects/antimatter/abi.json deleted file mode 100644 index 42451edeb5..0000000000 --- a/projects/antimatter/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "allCalls": "function allCalls(uint256) view returns (address)", - "allPuts": "function allPuts(uint256) view returns (address)", - "underlying": "address:underlying", - "length": "uint256:length" -} \ No newline at end of file diff --git a/projects/antimatter/index.js b/projects/antimatter/index.js deleted file mode 100644 index c1ec7e1ca0..0000000000 --- a/projects/antimatter/index.js +++ /dev/null @@ -1,61 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require('./abi.json') - -const factory = "0x60d0769c4940cA58648C0AA34ecdf390a10F272e" -const usdt = ADDRESSES.ethereum.USDT -async function tvl(timestamp, ethBlock) { - const balances = {}; - const contractsLength = await sdk.api.abi.call({ - target:factory, - abi: abi.length, - block:ethBlock - }) - const calls = []; - for(let i=0; iresult.output) - const underlying = await sdk.api.abi.multiCall({ - calls: contracts.map(contract=>({ - target: contract - })), - block: ethBlock, - abi: abi.underlying - }); - const underlyingBalances = await sdk.api.abi.multiCall({ - calls: underlying.output.map(call=>[{ - target: call.output, - params: [call.input.target] - },{ - target: usdt, - params: [call.input.target] - }]).flat(), - block: ethBlock, - abi: "erc20:balanceOf" - }); - sdk.util.sumMultiBalanceOf(balances, underlyingBalances, true) - - return balances -} - -module.exports = { - ethereum: { - tvl - }, -} \ No newline at end of file diff --git a/projects/arbidragon/index.js b/projects/arbidragon/index.js deleted file mode 100644 index a6ffc5a2e0..0000000000 --- a/projects/arbidragon/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') -const ARBID = "0xf3f45fA22c374c82Ca8573FFCb8D529B9e1A27A1"; - -const dexTVL = getUniTVL({ factory: '0xC9E7aC651Bc55EcF554f53bB4B6e17b9A1A22A84', useDefaultCoreAssets: true }) - - -module.exports = { - misrepresentedTokens: true, - methodology: `Uses factory(0xC9E7aC651Bc55EcF554f53bB4B6e17b9A1A22A84) address and whitelisted tokens address to find and price Liquidity Pool pairs. We also have our native token $ARBID staking.`, - arbitrum: { - tvl: dexTVL, - staking: sumTokensExport({ - owners: ['0x121ce0D6974e7aF53D9158178AE3A404B45cF7ad', '0xA73e49336e8c256017A00428b250Cd095b25555E'], - tokens: [ARBID], - }) - } -}; diff --git a/projects/blend/index.js b/projects/blend/index.js deleted file mode 100644 index 061b46c0dd..0000000000 --- a/projects/blend/index.js +++ /dev/null @@ -1,6 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const contract = '0x29469395eaf6f95920e59f858042f0e28d98a20b' - -module.exports = { - ethereum: { tvl: sumTokensExport({ owner: contract, resolveNFTs: true, }) } -} \ No newline at end of file diff --git a/projects/bullish/index.js b/projects/bullish/index.js deleted file mode 100644 index 6ebbd5c85e..0000000000 --- a/projects/bullish/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const { get_account_tvl } = require("../helper/chain/eos"); - -const accounts = [ - "bullishfunds", // deposit account - "j4obibe5lfv1", // cold account - "vbdoctdtpwb1", // withdraw account -]; - -// Bullish -// https://bullish.com -async function eos() { - return await get_account_tvl(accounts, [["eosio.token", "EOS", "eos"]]); -} - -module.exports = { - methodology: `Bullish TVL is achieved by querying token balances from Bullish funds account.`, - eos: { - tvl: eos - }, -} diff --git a/projects/bzx.js b/projects/bzx.js deleted file mode 100644 index e7c3100f16..0000000000 --- a/projects/bzx.js +++ /dev/null @@ -1,14 +0,0 @@ -const utils = require('./helper/utils'); - -/* * * * * * * * -* ==> Correct adapter needs to be created. -* -*****************/ -async function fetch() { - let staked = await utils.fetchURL('https://api.bzx.network/v1/vault-balance-usd?networks=bsc,eth,polygon') - return Number(staked.data.data.bsc.all) + Number(staked.data.data.eth.all) + Number(staked.data.data.polygon.all); -} - -module.exports = { - fetch -} diff --git a/projects/caffeinefund/index.js b/projects/caffeinefund/index.js deleted file mode 100644 index ae7edea73b..0000000000 --- a/projects/caffeinefund/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { tombTvl } = require('../helper/tomb'); - -const cfn = "0x3873788Acb34a7d67e90F053da8598aEF76298c6"; -const cshare = "0x41160139986dFfE2011a07fbB5F4B316200A5419"; - -const boardroom = "0xf916Dc7bfEAd1cA29cB1aCE71D82dFF68Cc12291"; -const rewardPool = "0x803b87cC88B701E4F871939826944e1d0413747c"; - -const pool2lps = [ - "0x504183690063734eAAd4f53b77729266b28E3b60", - "0x190a83FdaC8560d0e6ED2ab00dDE62D648A46747" -] - -module.exports = { - ...tombTvl(cfn, cshare, rewardPool, boardroom, pool2lps, "avax", undefined, false, pool2lps[1]) -} \ No newline at end of file diff --git a/projects/carthage/index.js b/projects/carthage/index.js deleted file mode 100644 index 0109691d86..0000000000 --- a/projects/carthage/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { request, gql } = require("graphql-request"); -const { toUSDTBalances } = require('../helper/balances'); -const graphUrl = 'https://thegraph.cndlchain.com/subgraphs/name/ianlapham/uniswap-v3-test' - -const graphQuery = gql` -query get_tvl($block: Int, $number_gte: Int = 10) { - factory( - id: "0x5Bb7BAE25728e9e51c25466D2A15FaE97834FD95" - block: {number_gte: $number_gte} - ) { - totalValueLockedETHUntracked - totalValueLockedETH - totalValueLockedUSD - totalValueLockedUSDUntracked - } -} -`; - -async function tvl(timestamp, ethBlock, chainBlocks) { - const response = await request( - graphUrl, - graphQuery, - { - block:chainBlocks.cndl, - } - ); - - return toUSDTBalances(Number(response.factory.totalValueLockedUSD)); -} - -module.exports = { - misrepresentedTokens: true, - methodology: 'The Carthage subgraph and the Carthage factory contract address are used to obtain the balance held in every LP pair.', - candle:{ - tvl, - }, - start: 1612715300, // 7th-Feb-2021 -} diff --git a/projects/chainxyz/index.js b/projects/chainxyz/index.js deleted file mode 100644 index 2815d98316..0000000000 --- a/projects/chainxyz/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { stakings } = require('../helper/staking') - -const stakingContracts = [ - '0x23445c63FeEf8D85956dc0f19aDe87606D0e19A9', -] -const xcnToken = '0xA2cd3D43c775978A96BdBf12d733D5A1ED94fb18' - -module.exports = { - ethereum: { - staking: stakings(stakingContracts, xcnToken), - tvl: async () => ({}), - }, -} diff --git a/projects/defichain-loans.js b/projects/defichain-loans.js deleted file mode 100644 index adf7589a50..0000000000 --- a/projects/defichain-loans.js +++ /dev/null @@ -1,40 +0,0 @@ -const { get } = require('./helper/http') -const { log } = require('./helper/utils') -const { transformBalances } = require('./helper/portedTokens') -const sdk = require('@defillama/sdk') - -async function tvl() { - const balances = {} - let next - const baseURI = 'https://ocean.defichain.com/v0/mainnet/loans/vaults?size=100' - let page = 0 - do { - let endpoint = baseURI - if (next) endpoint += '&next=' + next - - log('fetchin: ', ++page) - const res = await get(endpoint) - next = res.page?.next - - res.data.forEach(({ collateralAmounts = [], loanAmounts = [], }) => { - collateralAmounts.forEach(({ amount, symbol }) => { - sdk.util.sumSingleBalance(balances, symbol, +amount) - }) - loanAmounts.forEach(({ amount, symbol }) => { - if (symbol === 'DUSD') - sdk.util.sumSingleBalance(balances, symbol, +amount * -1) - }) - }) - } while (next) - - balances.DUSD *= 0.7 // value is reduced by 30% to compensate for DEX stability fees - return transformBalances('defichain', balances) -} - -module.exports = { - methodology: "Collateral backing loans in the platform, DUSD is excluded", - timetravel: false, - defichain: { - tvl - } -} diff --git a/projects/defichain-staking.js b/projects/defichain-staking.js deleted file mode 100644 index f0f926f5d5..0000000000 --- a/projects/defichain-staking.js +++ /dev/null @@ -1,11 +0,0 @@ -const utils = require('./helper/utils'); - -async function fetch() { - const { data } = await utils.fetchURL('https://ocean.defichain.com/v0/mainnet/stats') - return data.data.tvl.masternodes; -} - -module.exports = { - methodology: "Liquidity on the Staking", - fetch -} diff --git a/projects/djed/index.js b/projects/djed/index.js deleted file mode 100644 index 91543ce42d..0000000000 --- a/projects/djed/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const { sumTokensExport } = require("../helper/chain/cardano"); - -module.exports = { - timetravel: false, - cardano: { - tvl: sumTokensExport({ owner: 'addr1z9s3v9vyyctzr4xagvrayw87yvzre6qcq7qw2uvqfznf92qm5kjdmrpmng059yellupyvwgay2v0lz6663swmds7hp0q2jjlf4', tokens: ['lovelace']}), - }, -}; diff --git a/projects/dmmexchange/abi.json b/projects/dmmexchange/abi.json deleted file mode 100644 index 90fece27dd..0000000000 --- a/projects/dmmexchange/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "allPools": "function allPools(uint256) view returns (address)", - "allPoolsLength": "uint256:allPoolsLength", - "token0": "address:token0", - "token1": "address:token1", - "getReserves": "function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)" -} \ No newline at end of file diff --git a/projects/dmmexchange/index.js b/projects/dmmexchange/index.js deleted file mode 100644 index 18776a21c8..0000000000 --- a/projects/dmmexchange/index.js +++ /dev/null @@ -1,69 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); - -const factory = "0x833e4083B7ae46CeA85695c4f7ed25CDAd8886dE"; - -const ethTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - - const poolLength = Number( - ( - await sdk.api.abi.call({ - target: factory, - abi: abi.allPoolsLength, - block: ethBlock, - }) - ).output - ); - - const allPoolNums = Array.from(Array(poolLength).keys()); - - const poolAddresses = ( - await sdk.api.abi.multiCall({ - abi: abi.allPools, - calls: allPoolNums.map((num) => ({ - target: factory, - params: [num], - })), - block: ethBlock, - }) - ).output.map((el) => el.output); - - for (let i = 0; i < poolAddresses.length; i++) { - const token0 = ( - await sdk.api.abi.call({ - target: poolAddresses[i], - abi: abi.token0, - block: ethBlock, - }) - ).output; - - const token1 = ( - await sdk.api.abi.call({ - target: poolAddresses[i], - abi: abi.token1, - block: ethBlock, - }) - ).output; - - const getReserves = ( - await sdk.api.abi.call({ - target: poolAddresses[i], - abi: abi.getReserves, - block: ethBlock, - }) - ).output; - - sdk.util.sumSingleBalance(balances, token0, getReserves[0]); - - sdk.util.sumSingleBalance(balances, token1, getReserves[1]); - } - - return balances; -}; - -module.exports = { - ethereum: { - tvl: ethTvl, - }, -}; diff --git a/projects/harvest.js b/projects/harvest.js deleted file mode 100644 index 2d929c51c1..0000000000 --- a/projects/harvest.js +++ /dev/null @@ -1,29 +0,0 @@ -const { get } = require('./helper/http') - -// historical tvl on https://ethparser-api.herokuapp.com/api/transactions/history/alltvl?network=eth -const endpoint = "https://api.harvest.finance/vaults?key=41e90ced-d559-4433-b390-af424fdc76d6" -const chains = { - ethereum: 'eth', - // bsc: 'bsc', - arbitrum: 'arbitrum', - polygon: 'matic' -} - -let _response - -module.exports = {} -Object.keys(chains).forEach(chain => { - module.exports[chain] = { - tvl: async () => { - chain = chains[chain] - if (!_response) _response = get(endpoint) - const response = await _response - var tvl = 0; - Object.values(response[chain]).map(async item => { - const poolTvl = parseFloat(item.totalValueLocked ?? 0) - tvl += poolTvl - }) - return { tether: tvl } - } - } -}) diff --git a/projects/liquidity-book/index.js b/projects/liquidity-book/index.js deleted file mode 100644 index 23394b2d7d..0000000000 --- a/projects/liquidity-book/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const { staking } = require('../helper/staking'); -const joeBar = ADDRESSES.avax.xJOE; -const joeToken = ADDRESSES.avax.JOE; -const { getChainTvl } = require('../helper/getUniSubgraphTvl'); -const graphUrls = { - avax: 'https://api.thegraph.com/subgraphs/name/traderjoe-xyz/joe-v2', -}; - -module.exports = { - timetravel: true, - misrepresentedTokens: true, - methodology: 'We count liquidity on the pairs and we get that information from the "traderjoe-xyz/joe-v2" subgraph.', - avax:{ - tvl: getChainTvl( - graphUrls, - "lbfactories", - "totalValueLockedUSD" - )('avax'), - } -}; diff --git a/projects/otterclam.js b/projects/otterclam.js deleted file mode 100644 index c612209c94..0000000000 --- a/projects/otterclam.js +++ /dev/null @@ -1,12 +0,0 @@ -const { ohmTvl } = require('./helper/ohm') - -module.exports = ohmTvl( - '0x8ce47D56EAa1299d3e06FF3E04637449fFb01C9C', - [ - ['0xa3fa99a148fa48d14ed51d610c367c61876997f1', false], - ['0x1581802317f32a2665005109444233ca6e3e2d68', true], - ], - 'polygon', - '0xC8B0243F350AA5F8B979b228fAe522DAFC61221a', - '0xC250e9987A032ACAC293d838726C511E6E1C029d' -) diff --git a/projects/pawnfi/helper/abi.json b/projects/pawnfi/helper/abi.json deleted file mode 100644 index 00f8f43a4a..0000000000 --- a/projects/pawnfi/helper/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "cTokenMetadataAll": "function cTokenMetadataAll(address[] cTokens) view returns (tuple(address cToken,uint exchangeRateCurrent,uint supplyRatePerBlock,uint borrowRatePerBlock,uint reserveFactorMantissa,uint totalBorrows,uint totalReserves,uint totalSupply,uint totalCash,bool isListed,uint collateralFactorMantissa,address underlyingAssetAddress,uint cTokenDecimals,uint underlyingDecimals,uint compSupplySpeed,uint compBorrowSpeed,uint borrowCap)[])", - "stakedTotal": "function stakedTotal(address _address) external view returns (uint256)" -} \ No newline at end of file diff --git a/projects/pawnfi/helper/config.js b/projects/pawnfi/helper/config.js deleted file mode 100644 index a39620cf05..0000000000 --- a/projects/pawnfi/helper/config.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - Lending: "0x136491CFEae8655501c847F2987B9Bc923A94065", - LendCToken:[ - "0xE8Ca2212c1F4a108d8728cb065622c6387a9860e", - "0x37B614714e96227D81fFffBdbDc4489e46eAce8C", - "0x223D9e0A8db805B0d2Bb06ef5D41b79fb29B5BC7", - "0xF58C9ba6e836919da211858191E6CbC5da7D44FC", - "0xE9373Ca88004bbF192B05A6460aFD05A88D9e1bC", - "0x9C1c49B595D5c25F0Ccc465099E6D9d0a1E5aB37", - "0xB77441172E72d93dde9742DE23c0562d3090966F", - "0x3B2da9304bd1308Dc0d1b2F9c3C14F4CF016a955", - "0x0b7d8EdA67cE2555abe41d2dF2102D62becf38BD", - "0x5CD407de334525C710FA485a8E19D8E98adE39E8", - "0x6A55080D5bA7cFf935Fb6aC54f4af4486EE24B1C" - ], - ApeStakingPoolAddress:{ - BoundApe: '0x73625745eD66F0d4C68C91613086ECe1Fc5a0119', - BoundBAYC: '0x5f0a4a59c8b39cddbcf0c683a6374655b4f5d76e', - BoundMAYC: '0x7d0b6fb139408af77f1c5bfdc8bd9166f5901304', - BoundBAKC: '0x23012599f9ABBA61Cb1A62D3785af7E434F692C6', - APE: '0x4d224452801ACEd8B2F0aebE155379bb5D594381', - ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9" - } - -} - - - diff --git a/projects/pawnfi/index.js b/projects/pawnfi/index.js deleted file mode 100644 index e2371c975b..0000000000 --- a/projects/pawnfi/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { get } = require('../helper/http.js') - -async function fetch(arg) { - const data = await get('https://api-app.pawnfi.com/api/stat/queryplatstatinfo.do') - return data.info.f_total_tvl; -} - -module.exports = { - timetravel: false, - methodology: "The Pawnfi API endpoint fetches on-chain data from Pawnfi NFT contracts, token balance for each lending liquidity pools, and any value generated within Pawnfi platform.", - fetch: fetch, -}; diff --git a/projects/redbees/index.js b/projects/redbees/index.js deleted file mode 100644 index a62de818f3..0000000000 --- a/projects/redbees/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const {masterChefExports} = require("../helper/masterchef"); - -const token = "0xb6dd76ce852ff1b23cd8fe21aabb001a5a710a00"; -const masterchef = "0x2A807C49e506457D76ce3eBbD716fB2980AF6c79"; - -module.exports = { - ...masterChefExports(masterchef, "avax", token, false) -} \ No newline at end of file diff --git a/projects/sorbetto/abi.json b/projects/sorbetto/abi.json deleted file mode 100644 index 6283c08f89..0000000000 --- a/projects/sorbetto/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "token0": "address:token0", - "token0PerShareStored": "uint256:token0PerShareStored", - "token1": "address:token1", - "token1PerShareStored": "uint256:token1PerShareStored" -} \ No newline at end of file diff --git a/projects/sorbetto/index.js b/projects/sorbetto/index.js deleted file mode 100644 index 2466c79418..0000000000 --- a/projects/sorbetto/index.js +++ /dev/null @@ -1,31 +0,0 @@ -const sdk = require('@defillama/sdk') -const { getConfig } = require('../helper/cache') - -const abi = require('./abi.json'); -const BigNumber = require('bignumber.js') - -const addressAPI = "https://analytics.back.popsicle.finance/api/v1/FragolaApy" - -async function tvl(timestamp, ethBlock) { - const addresses = (await getConfig('sorbetto', addressAPI)).map(t => t.fragolaAddress) - const balances = {} - const [token0, token1, token0PerShareStored, token1PerShareStored, totalSupply] = await Promise.all( - ["token0", "token1", "token0PerShareStored", "token1PerShareStored"] - .map(method => abi[method]).concat(['erc20:totalSupply']).map(abi => sdk.api.abi.multiCall({ - abi, - calls: addresses.map(a => ({ target: a })), - block: ethBlock - })) - ) - for (let i = 0; i < addresses.length; i++) { - sdk.util.sumSingleBalance(balances, token0.output[i].output, BigNumber(token0PerShareStored.output[i].output).times(totalSupply.output[i].output).div(1e18).toFixed(0)) - sdk.util.sumSingleBalance(balances, token1.output[i].output, BigNumber(token1PerShareStored.output[i].output).times(totalSupply.output[i].output).div(1e18).toFixed(0)) - } - return balances -} - -module.exports = { - ethereum: { - tvl - }, -} \ No newline at end of file diff --git a/projects/sovryn.js b/projects/sovryn.js deleted file mode 100644 index f84c4ccdf0..0000000000 --- a/projects/sovryn.js +++ /dev/null @@ -1,18 +0,0 @@ -const { get } = require('./helper/http') - -async function fetch() { - const data = await get('https://backend.sovryn.app/tvl') - const tvl = data.tvlLending.totalUsd + data.tvlAmm.totalUsd + data.tvlProtocol.totalUsd + data.tvlSubprotocols.totalUsd - return tvl; -} - -module.exports = { - methodology: "Sum up TVL of all Sovryn contracts and subprotocols (Lending Protocol, AMMs, Protocol Contract that holds margin trading collateral, Zero Lending Protocol and Mynt Bitcoin-backed stablecoin protocol). This data comes from the Sovryn backend API, which is open source and can be found here: https://github.com/DistributedCollective/Sovryn-graph-wrapper", - rsk: { - fetch - }, - fetch, - hallmarks: [ - [1680685098, "Mynt and Zero added to TVL"] - ] -} \ No newline at end of file diff --git a/projects/sunSwap/index.js b/projects/sunSwap/index.js deleted file mode 100644 index 6b471796cb..0000000000 --- a/projects/sunSwap/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { get } = require('../helper/http') - -async function tvl(ts){ - const { data } = await get('https://abc.endjgfsv.link/swap/scan/liquidityall') - const lastItem = data[data.length -1] - if (lastItem.time < (ts - 24 * 3600)) throw new Error('Outdated Data!') - - return { - tether: lastItem.liquidity - } -} - -module.exports = { - misrepresentedTokens: true, - timetravel: false, - tron: { - tvl - }, -} \ No newline at end of file diff --git a/projects/votium/index.js b/projects/votium/index.js deleted file mode 100644 index 3b0d766a2f..0000000000 --- a/projects/votium/index.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getConfig } = require('../helper/cache') - -const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); - -const multiMerkleStashContracts = "0x378Ba9B73309bE80BF4C2c027aAD799766a7ED5A"; -const votiumBribeContract = "0x19BBC3463Dd8d07f55438014b021Fb457EBD4595"; - -const API_URL = - "https://raw.githubusercontent.com/oo-00/Votium/main/utils/voteCalculator/tokens.json"; - -async function ethTvl() { - const balances = {}; - - const tokenAddresses = (await getConfig('Votium', API_URL)).map( - (addr) => addr.value - ); - - for (const token of tokenAddresses) { - await sumTokensAndLPsSharedOwners( - balances, - [[token, false]], - [multiMerkleStashContracts, votiumBribeContract], - ); - } - - return balances; -} - -module.exports = { - ethereum: { - tvl: ethTvl, - }, - methodology: "Counts tvl of Tokens used for Delegating on Convex Snapshot through MultiMerkleStash Contract", -}; diff --git a/projects/waterfall-arbitrum/index.js b/projects/waterfall-arbitrum/index.js deleted file mode 100644 index 704d07835b..0000000000 --- a/projects/waterfall-arbitrum/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { masterchefExports } = require('../helper/unknownTokens') - - -const chef = "0xe9960f14B5f0713D1d530C1fF079A7adAb7c076D" -const waterfall = "0xedBF59b40336244c6ea94A11a6B0cF6864c87E83" -const waterfallWethLP = "0x29519bcfd1d702363e9Ad63dBd2331C3C7f4A9f7" -const waterfallUsdcLP = "0x18B60b6b6a14D7C33D5086fA84871d519136C064"; - -module.exports = masterchefExports({ chain: 'arbitrum', nativeToken: waterfall, masterchef: chef, useDefaultCoreAssets: true, lps: [waterfallWethLP, waterfallUsdcLP, ]}) \ No newline at end of file diff --git a/projects/wheat.js b/projects/wheat.js deleted file mode 100644 index da3caf11b5..0000000000 --- a/projects/wheat.js +++ /dev/null @@ -1,15 +0,0 @@ -const utils = require('./helper/utils'); - -/* * * * * * * * -* ==> Correct adapter needs to be created. -* -*****************/ -async function fetch() { - var tvl = await utils.fetchURL('https://api.growthdefi.com/tvl/wheat-tvl') - return tvl.data.TVL; -} - -module.exports = { - fetch, - methodology: `TVL for Wheat Protocol is achieved by making calls to their API: https://api.growthdefi.com/tvl/wheat-tvl` -} diff --git a/projects/xcadnetwork/index.js b/projects/xcadnetwork/index.js deleted file mode 100644 index c10c924fff..0000000000 --- a/projects/xcadnetwork/index.js +++ /dev/null @@ -1,51 +0,0 @@ -const { - getZilliqaBalance, - getBalances, -} = require('../helper/chain/zilliqa') - -// taken from https://swap.xcadnetwork.com/_next/data/E6YkkwWJMYjzQhGDTm38j/pool-overview.json -const TOKENS = [ - "0x153feaddc48871108e286de3304b9597c817b456", // XCAD - "0x818ca2e217e060ad17b7bd0124a483a1f66930a9", // zUSDT - "0x201C44B426D85fB2c382563483140825Fd81b9b5", // zOPUL - "0x31bFa2054B7199F936733f9054DBCE259a3c335a", // Lunr - "0x9945a0da3dc74e364da4ea96946c99336013eeb5", // Heroes Of Lowhelm - "0xbf79e16872fad92c16810ddd2a7b9b6858c7b756", // CARBON Token - "0x3a683fdc022b26d755c70e9ed7cfcc446658018b", // PackagePortal Token - "0x91228A48AEA4E4071B9C6444Eb08B021399CfF7c", // Unifees Token - "0xa3eAFd5021F6B9c36fD02Ed58aa1d015F2238791", // ZILStream - "0xa845C1034CD077bD8D32be0447239c7E4be6cb21", // Governance ZIL - "0xb393C898b3d261C362a4987CaE5a833232AA666E", // Score - "0x173Ca6770Aa56EB00511Dac8e6E13B3D7f16a5a5", // XSGD - "0xaCb721d989c095c64A24d16DfD23b08D738e2552", // REDChillies - "0x75fA7D8BA6BEd4a68774c758A5e43Cfb6633D9d6", // zWBTC - "0x2cA315F4329654614d1E8321f9C252921192c5f2", // zETH - "0x4268C34dA6Ad41a4cDeAa25cdEF6531Ed0c9a1A2", // BLOX - "0x2fc7167c3Baff89E2805Aef72636ccD98eE6Bbb2", // DeMons - "0x32339fa037f7ae1DfFF25e13c6451a80289D61F4", // Brokoli - "0xC6Bb661eDA683BdC792b3e456A206a92cc3cB92e", // DUCKDUCK - "0x9bd504b1445fdb8f4a643453ec1459bb9a2f988a", // XIDR - "0x54aE64e2092749fb8d25470ffc1d4D6A19c6f2Ab", // Okipad - "0x083196549637fAf95C91EcCD157E60430e69E1A7" // Sparda Wallet -] - -const DEX_CONTRACT_ADDRESS = '0x1fb1a4fd7ba94b1617641d6022ba48cafa77eef0' - -async function tvl() { - const balances = {} - const allContracts = [DEX_CONTRACT_ADDRESS, - // ...SUB_CONTRACT - ] - balances['zilliqa'] = await getZilliqaBalance(DEX_CONTRACT_ADDRESS) - await getBalances(TOKENS, allContracts, balances) - return balances -} - -module.exports = { - zilliqa: { - tvl, - }, - timetravel: false, - misrepresentedTokens: true, - methodology: 'Summed up all the tokens deposited in their dex contract and those controlled by their dex' -} \ No newline at end of file diff --git a/projects/xdao.js b/projects/xdao.js deleted file mode 100644 index 8f62674752..0000000000 --- a/projects/xdao.js +++ /dev/null @@ -1,69 +0,0 @@ -const sdk = require("@defillama/sdk"); -const { get } = require('./helper/http') -const { PromisePool } = require('@supercharge/promise-pool') -const { sumTokens2, } = require('./helper/unwrapLPs') -const { getParamCalls, log } = require('./helper/utils') -const { covalentGetTokens } = require('./helper/http') - - -const factoryAddress = "0x72cc6E4DE47f673062c41C67505188144a0a3D84"; - -const config = { - ethereum: { - chainId: 1, blacklistedTokens: [ - '0x71eeba415a523f5c952cc2f06361d5443545ad28', // XDAO - ] - }, - bsc: { chainId: 56, }, - polygon: { chainId: 137, blacklistedTokens: [ - '0x0b91b07beb67333225a5ba0259d55aee10e3a578', // MNEP - '0x29e3e6ad4eeadf767919099ee23c907946435a70', // TNDR - ] }, - avax: { chainId: 43114, }, - fantom: { chainId: 250, }, - heco: { chainId: 128, }, - astar: { chainId: 592, }, -} - -module.exports = {}; - -Object.keys(config).forEach(chain => { - const { blacklistedTokens } = config[chain] - module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const { output: numberOfDaos } = await sdk.api.abi.call({ - target: factoryAddress, - abi: abis.numberOfDaos, - chain, block, - }) - - const calls = getParamCalls(numberOfDaos) - - let { output: daos } = await sdk.api.abi.multiCall({ - target: factoryAddress, - abi: abis.daoAt, calls, chain, block, - }) - if (daos.some(i => !i.success)) throw new Error('Error fetching dao address: ') - - daos = daos.map(i => i.output) - log(chain, numberOfDaos) - const tokensAndOwners = [] - await PromisePool - .withConcurrency(31) - .for(daos) - .process(addDao) - - log(chain, 'fetching balances count', tokensAndOwners.length) - return sumTokens2({ tokensAndOwners, chain, block, blacklistedTokens, }); - - async function addDao(dao) { - (await covalentGetTokens(dao, chain)).forEach(i => tokensAndOwners.push([i, dao])) - } - } - } -}) - -const abis = { - daoAt: "function daoAt(uint256 _i) view returns (address)", - numberOfDaos: "uint256:numberOfDaos", -} diff --git a/projects/zerotwohm/index.js b/projects/zerotwohm/index.js deleted file mode 100644 index 35fb92e455..0000000000 --- a/projects/zerotwohm/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { ohmTvl } = require("../helper/ohm"); - -const stakingContract = "0x06B4dFAbAf0fb0Cf813526572cc86B2695c9D050"; -const Z2O = "0xdb96f8efd6865644993505318cc08FF9C42fb9aC"; - -const treasury = "0x00eFcbd55b59b5D08F3a7501C0Ddad34a57A3611"; -const treasuryTokens = [ - [ADDRESSES.arbitrum.WETH, false], // WETH - ["0x17fc002b466eec40dae837fc4be5c67993ddbd6f", false], // FRAX - [ADDRESSES.arbitrum.WBTC, false], // WBTC - [ADDRESSES.arbitrum.MIM, false], // MIM - ["0x79f12596b78f9e982bdab6e2d83d4bc155672372", false], // chMIM - ["0x739ca6d71365a08f584c8fc4e1029045fa8abc4b", false], // wsOHM - ["0x40c938444c725EA6eb6992ca71F94b6945b43335", true], // Z2O-MIM SLP -]; - -module.exports = { - misrepresentedTokens: true, - ...ohmTvl(treasury, treasuryTokens, "arbitrum", stakingContract, Z2O), - methodology: "Counts as TVL all the assets deposited on the reasury", -}; From 892d7a13ec0ee7baf968f02f122efd2375f03a02 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 17 Jun 2023 03:51:59 +0100 Subject: [PATCH 0787/1354] delete unused adapter --- projects/zeus/index.js | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 projects/zeus/index.js diff --git a/projects/zeus/index.js b/projects/zeus/index.js deleted file mode 100644 index d708dae54c..0000000000 --- a/projects/zeus/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const abi = require("../helper/abis/masterchef.json") -const { transformFantomAddress } = require("../helper/portedTokens"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') - - -const chef = "0x70C460D876895e72D28ee3125Cac556dC98aD2E1" -const zeus = "0xa5b92ef6d735a2B8A90ADB13EA96d8C9b18613D0" -const zeusFtmLP = "0x921230059Fc5181F95619f1EACaf13Bd30cd0ddD"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = await transformFantomAddress(); - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [zeus, zeusFtmLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, zeus, "fantom"), - pool2: pool2Exports(chef, [zeusFtmLP], "fantom"), - }, - -} \ No newline at end of file From 156f2f3443204aa63ff007d6e2b4f7abb9fd2483 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 17 Jun 2023 05:33:56 +0100 Subject: [PATCH 0788/1354] add new harvest file --- projects/harvest/api.js | 2 +- projects/harvest/harvest.js | 29 +++++++++++++++++++++++++++++ projects/united-farmers/index.js | 13 ------------- 3 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 projects/harvest/harvest.js delete mode 100644 projects/united-farmers/index.js diff --git a/projects/harvest/api.js b/projects/harvest/api.js index f37db4d815..9c683ea83b 100644 --- a/projects/harvest/api.js +++ b/projects/harvest/api.js @@ -1,5 +1,5 @@ const { getExports } = require('../helper/heroku-api') -const indexExports = require('../harvest') +const indexExports = require('../harvest/harvest') const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) module.exports = { diff --git a/projects/harvest/harvest.js b/projects/harvest/harvest.js new file mode 100644 index 0000000000..57adeb1043 --- /dev/null +++ b/projects/harvest/harvest.js @@ -0,0 +1,29 @@ +const { get } = require('./helper/http') + +// historical tvl on https://ethparser-api.herokuapp.com/api/transactions/history/alltvl?network=eth +const endpoint = "https://api.harvest.finance/vaults?key=41e90ced-d559-4433-b390-af424fdc76d6" +const chains = { + ethereum: 'eth', + // bsc: 'bsc', + arbitrum: 'arbitrum', + polygon: 'matic' +} + +let _response + +module.exports = {} +Object.keys(chains).forEach(chain => { + module.exports[chain] = { + tvl: async () => { + chain = chains[chain] + if (!_response) _response = get(endpoint) + const response = await _response + var tvl = 0; + Object.values(response[chain]).map(async item => { + const poolTvl = parseFloat(item.totalValueLocked ?? 0) + tvl += poolTvl + }) + return { tether: tvl } + } + } +}) \ No newline at end of file diff --git a/projects/united-farmers/index.js b/projects/united-farmers/index.js deleted file mode 100644 index e48643f5f2..0000000000 --- a/projects/united-farmers/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const {uniTvlExport} = require("../helper/calculateUniTvl"); -const {stakingUnknownPricedLP} = require("../helper/staking"); - -const ufx = "0x44b3efa6c6ca47badb3197b0ab675e4396e40023"; -const factory = "0x2fcd5b3b7a5088509babc9910ed2f1b6fe5775b6"; -const masterchef = "0x9327B522F6710b858Eb55352f4E52B62B8C2fB26"; - -module.exports = { - bsc: { - tvl:uniTvlExport(factory, 'bsc'), - staking: stakingUnknownPricedLP(masterchef, ufx, "bsc", "0xD8d18A4045AdaDEc926E0A3c289E22850993cA7B", addr=>`bsc:${addr}`) - } -} \ No newline at end of file From e6b796f97039a863b3273c9b6ef10889e4da64fb Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 17 Jun 2023 05:49:41 +0100 Subject: [PATCH 0789/1354] revert changes to harvest --- projects/{harvest => }/harvest.js | 0 projects/harvest/api.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename projects/{harvest => }/harvest.js (100%) diff --git a/projects/harvest/harvest.js b/projects/harvest.js similarity index 100% rename from projects/harvest/harvest.js rename to projects/harvest.js diff --git a/projects/harvest/api.js b/projects/harvest/api.js index 9c683ea83b..f37db4d815 100644 --- a/projects/harvest/api.js +++ b/projects/harvest/api.js @@ -1,5 +1,5 @@ const { getExports } = require('../helper/heroku-api') -const indexExports = require('../harvest/harvest') +const indexExports = require('../harvest') const chainKeys = Object.keys(indexExports).filter(chain => typeof indexExports[chain] === 'object' && indexExports[chain].tvl) module.exports = { From 23aacafe18cd05c28c81c6cd854e620a33a7d240 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 17 Jun 2023 05:53:21 +0100 Subject: [PATCH 0790/1354] add back 1inch --- projects/1inch.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/1inch.js diff --git a/projects/1inch.js b/projects/1inch.js new file mode 100644 index 0000000000..a50296c51d --- /dev/null +++ b/projects/1inch.js @@ -0,0 +1,27 @@ +const { sumTokens2, } = require('./helper/unwrapLPs') +const { getLogs } = require('./helper/cache/getLogs') + +const config = require("./1inch/config"); + +module.exports = {} + +Object.keys(config).forEach(chain => { + const { blacklistedTokens = [], factories } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _2, { api }) => { + const ownerTokens = [] + for (const { MooniswapFactory, fromBlock} of factories) { + const logs = await getLogs({ + api, + target: MooniswapFactory, + topic: 'Deployed(address,address,address)', + eventAbi: 'event Deployed(address indexed mooniswap, address indexed token1, address indexed token2)', + onlyArgs: true, + fromBlock, + }) + logs.forEach(i => ownerTokens.push([[i.token1, i.token2], i.mooniswap])) + } + return sumTokens2({ api, ownerTokens, blacklistedTokens, }) + } + } +}) \ No newline at end of file From 7729b6ee23ae98a18990492ee4eff04348ecfd52 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 17 Jun 2023 06:02:20 +0100 Subject: [PATCH 0791/1354] update code for waterfallbsc --- projects/waterfallbsc/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/waterfallbsc/index.js b/projects/waterfallbsc/index.js index a7e13374dd..b1b1d213fa 100644 --- a/projects/waterfallbsc/index.js +++ b/projects/waterfallbsc/index.js @@ -1,10 +1,14 @@ const {masterChefExports} = require("../helper/masterchef"); -const arbitrumExports = require("../waterfall-arbitrum"); +//const arbitrumExports = require("../waterfall-arbitrum"); const token = "0xFdf36F38F5aD1346B7f5E4098797cf8CAE8176D0"; const masterchef = "0x49a21E7Ae826CD5F0c0Cb1dC942d1deD66d21191"; +const chef = "0xe9960f14B5f0713D1d530C1fF079A7adAb7c076D" +const waterfall = "0xedBF59b40336244c6ea94A11a6B0cF6864c87E83" +const waterfallWethLP = "0x29519bcfd1d702363e9Ad63dBd2331C3C7f4A9f7" +const waterfallUsdcLP = "0x18B60b6b6a14D7C33D5086fA84871d519136C064"; module.exports = { ...masterChefExports(masterchef, "bsc", token, false), - ...arbitrumExports, + ...masterChefExports( chef, "arbitrum", waterfall, false), } // node test.js projects/waterfallbsc/index.js \ No newline at end of file From 565c0c8696e2b48e1274597046473de402487d85 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 17 Jun 2023 06:09:02 +0100 Subject: [PATCH 0792/1354] readd pawnfi --- projects/pawnfi/helper/abi.json | 4 ++++ projects/pawnfi/helper/config.js | 25 +++++++++++++++++++++++++ projects/pawnfi/index.js | 12 ++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 projects/pawnfi/helper/abi.json create mode 100644 projects/pawnfi/helper/config.js create mode 100644 projects/pawnfi/index.js diff --git a/projects/pawnfi/helper/abi.json b/projects/pawnfi/helper/abi.json new file mode 100644 index 0000000000..00f8f43a4a --- /dev/null +++ b/projects/pawnfi/helper/abi.json @@ -0,0 +1,4 @@ +{ + "cTokenMetadataAll": "function cTokenMetadataAll(address[] cTokens) view returns (tuple(address cToken,uint exchangeRateCurrent,uint supplyRatePerBlock,uint borrowRatePerBlock,uint reserveFactorMantissa,uint totalBorrows,uint totalReserves,uint totalSupply,uint totalCash,bool isListed,uint collateralFactorMantissa,address underlyingAssetAddress,uint cTokenDecimals,uint underlyingDecimals,uint compSupplySpeed,uint compBorrowSpeed,uint borrowCap)[])", + "stakedTotal": "function stakedTotal(address _address) external view returns (uint256)" +} \ No newline at end of file diff --git a/projects/pawnfi/helper/config.js b/projects/pawnfi/helper/config.js new file mode 100644 index 0000000000..88a353026f --- /dev/null +++ b/projects/pawnfi/helper/config.js @@ -0,0 +1,25 @@ +module.exports = { + Lending: "0x136491CFEae8655501c847F2987B9Bc923A94065", + LendCToken:[ + "0xE8Ca2212c1F4a108d8728cb065622c6387a9860e", + "0x37B614714e96227D81fFffBdbDc4489e46eAce8C", + "0x223D9e0A8db805B0d2Bb06ef5D41b79fb29B5BC7", + "0xF58C9ba6e836919da211858191E6CbC5da7D44FC", + "0xE9373Ca88004bbF192B05A6460aFD05A88D9e1bC", + "0x9C1c49B595D5c25F0Ccc465099E6D9d0a1E5aB37", + "0xB77441172E72d93dde9742DE23c0562d3090966F", + "0x3B2da9304bd1308Dc0d1b2F9c3C14F4CF016a955", + "0x0b7d8EdA67cE2555abe41d2dF2102D62becf38BD", + "0x5CD407de334525C710FA485a8E19D8E98adE39E8", + "0x6A55080D5bA7cFf935Fb6aC54f4af4486EE24B1C" + ], + ApeStakingPoolAddress:{ + BoundApe: '0x73625745eD66F0d4C68C91613086ECe1Fc5a0119', + BoundBAYC: '0x5f0a4a59c8b39cddbcf0c683a6374655b4f5d76e', + BoundMAYC: '0x7d0b6fb139408af77f1c5bfdc8bd9166f5901304', + BoundBAKC: '0x23012599f9ABBA61Cb1A62D3785af7E434F692C6', + APE: '0x4d224452801ACEd8B2F0aebE155379bb5D594381', + ApeCoinStaking: "0x5954aB967Bc958940b7EB73ee84797Dc8a2AFbb9" + } + +} \ No newline at end of file diff --git a/projects/pawnfi/index.js b/projects/pawnfi/index.js new file mode 100644 index 0000000000..df9e6df9f5 --- /dev/null +++ b/projects/pawnfi/index.js @@ -0,0 +1,12 @@ +const { get } = require('../helper/http.js') + +async function fetch(arg) { + const data = await get('https://api-app.pawnfi.com/api/stat/queryplatstatinfo.do') + return data.info.f_total_tvl; +} + +module.exports = { + timetravel: false, + methodology: "The Pawnfi API endpoint fetches on-chain data from Pawnfi NFT contracts, token balance for each lending liquidity pools, and any value generated within Pawnfi platform.", + fetch: fetch, +}; \ No newline at end of file From d239fb2311d092b91c2602bd39347c0b63bc2e73 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 17 Jun 2023 13:04:22 +0530 Subject: [PATCH 0793/1354] Orbiter (#6572) * ADD | ADD orbiter-one project adapter * minor refactor --------- Co-authored-by: SergeyPish --- projects/orbiter-one/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/orbiter-one/index.js diff --git a/projects/orbiter-one/index.js b/projects/orbiter-one/index.js new file mode 100644 index 0000000000..e142370c62 --- /dev/null +++ b/projects/orbiter-one/index.js @@ -0,0 +1,11 @@ +const { compoundExports2 } = require('../helper/compound') + +const moonbeamConfig = { + comptroller: "0x27DC3DAdBfb40ADc677A2D5ef192d40aD7c4c97D", + cether: "0xCc444ca6bba3764Fc55BeEFe4FFA27435cF6c259", + fetchBalances: true, +} + +module.exports = { + moonbeam: compoundExports2(moonbeamConfig) +} \ No newline at end of file From 6f12101f4d4da6e91d63f91935e231259e2adde3 Mon Sep 17 00:00:00 2001 From: Long Nguyen Date: Sat, 17 Jun 2023 14:39:44 +0700 Subject: [PATCH 0794/1354] Update Minswap adapter use new dex-addresses API (#6570) --- projects/minswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/minswap/index.js b/projects/minswap/index.js index 18c537ae71..2d53b7b01a 100644 --- a/projects/minswap/index.js +++ b/projects/minswap/index.js @@ -2,7 +2,7 @@ const { getAdaInAddress } = require("../helper/chain/cardano"); const { getConfig } = require('../helper/cache') async function tvl() { - const res = await getConfig("minswap", "https://api-mainnet-prod.minswap.org/defillama/dex-addresses") + const res = await getConfig("minswap", "https://api-mainnet-prod.minswap.org/dex-addresses") const poolAddresses = res.pools const orderAddresses = res.orders let liquidityPoolLocked = 0 From 301fbb7bb1d7d1ee936905a6c420a7b9f629de0f Mon Sep 17 00:00:00 2001 From: kormanyuri Date: Sat, 17 Jun 2023 10:43:26 +0300 Subject: [PATCH 0795/1354] Additon of the Monolend project (#6571) * Additon of the Monolend project * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/monolend/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/monolend/index.js diff --git a/projects/monolend/index.js b/projects/monolend/index.js new file mode 100644 index 0000000000..c38eb994ab --- /dev/null +++ b/projects/monolend/index.js @@ -0,0 +1,6 @@ +const { aaveExports } = require("../helper/aave"); + +module.exports = { + methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There are multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.", + polygon: aaveExports('polygon', '0x49Ce0308F3F55955D224453aECe7610b6983c123'), +}; From df82f2bd56c47850d96527a9705c20517459af8e Mon Sep 17 00:00:00 2001 From: define Date: Sat, 17 Jun 2023 09:55:13 +0100 Subject: [PATCH 0796/1354] pearlfi --- projects/pearlfi/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/pearlfi/index.js diff --git a/projects/pearlfi/index.js b/projects/pearlfi/index.js new file mode 100644 index 0000000000..200be55a86 --- /dev/null +++ b/projects/pearlfi/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require('../helper/unknownTokens') + + +module.exports = { + misrepresentedTokens: true, + methodology: `Uses factory(0xd541Bc203Cc2B85810d9b8E6a534eed1615528E2) address to count liquidity in pools as TVL.`, + polygon: { + tvl: getUniTVL({ factory: '0xd541Bc203Cc2B85810d9b8E6a534eed1615528E2', useDefaultCoreAssets: true, hasStablePools: true }), + } +}; \ No newline at end of file From c12cd351d95b5745e96be30f3fe3b830c60a4f15 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 17 Jun 2023 11:01:01 +0200 Subject: [PATCH 0797/1354] temp fix lido --- projects/lido/index.js | 1 + projects/pawnfi-lending/index.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/projects/lido/index.js b/projects/lido/index.js index e633555645..e86a8b01b7 100644 --- a/projects/lido/index.js +++ b/projects/lido/index.js @@ -7,6 +7,7 @@ const { getConnection } = require('../helper/solana'); const ethContract = ADDRESSES.ethereum.STETH; async function terra(timestamp, ethBlock, chainBlocks) { + return {} const { total_bond_amount } = ( await axios.get(`https://lcd.terra.dev/wasm/contracts/terra1mtwph2juhj0rvjz7dy92gvl6xvukaxu8rfv8ts/store?query_msg=%7B%22state%22%3A%20%7B%7D%7D`) ).data.result; diff --git a/projects/pawnfi-lending/index.js b/projects/pawnfi-lending/index.js index eab3631fc0..59e4d6e3b1 100644 --- a/projects/pawnfi-lending/index.js +++ b/projects/pawnfi-lending/index.js @@ -36,4 +36,7 @@ async function tvl(timestamp, block, _, { api }) { module.exports = mergeExports([{ ethereum: { tvl, borrowed }, + hallmarks: [ + [Math.floor(new Date('2023-06-16')/1e3), 'Protocol was exploited'], + ], }, nftTvl]) From 049eedeb0ab42ceb62c6a56cc8a17e7a8bb769cb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 18 Jun 2023 12:33:56 +0200 Subject: [PATCH 0798/1354] update crocswap to use graph --- projects/ambient-finance/index.js | 17 +++++++++++++---- projects/lido/index.js | 12 ++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/projects/ambient-finance/index.js b/projects/ambient-finance/index.js index 3cc0199eb2..d1bfef5330 100644 --- a/projects/ambient-finance/index.js +++ b/projects/ambient-finance/index.js @@ -1,13 +1,22 @@ const { sumTokens2 } = require('../helper/unwrapLPs'); const { covalentGetTokens } = require("../helper/http"); +const { cachedGraphQuery } = require("../helper/cache"); const vault = "0xAaAaAAAaA24eEeb8d57D431224f73832bC34f688" +const tvlV1 = async (_, _1, _2, { api }) => { + const tokens = await covalentGetTokens(vault, api.chain) + return sumTokens2({ api, owner: vault, tokens, }) +} + +async function tvl(_, _b, _cb, { api, }) { + + const { pools } = await cachedGraphQuery(`ambient-finance/${api.chain}`, `https://api.thegraph.com/subgraphs/name/crocswap/croc-mainnet`, "{ pools { base quote }}") + const tokens = pools.map(i => [i.base, i.quote]).flat() + return sumTokens2({ api, owner: vault, tokens, }) +} module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => { - const tokens = await covalentGetTokens(vault, api.chain) - return sumTokens2({ api, owner: vault, tokens, }) - }, + tvl, } } \ No newline at end of file diff --git a/projects/lido/index.js b/projects/lido/index.js index e86a8b01b7..e0a21458a9 100644 --- a/projects/lido/index.js +++ b/projects/lido/index.js @@ -8,12 +8,12 @@ const ethContract = ADDRESSES.ethereum.STETH; async function terra(timestamp, ethBlock, chainBlocks) { return {} - const { total_bond_amount } = ( - await axios.get(`https://lcd.terra.dev/wasm/contracts/terra1mtwph2juhj0rvjz7dy92gvl6xvukaxu8rfv8ts/store?query_msg=%7B%22state%22%3A%20%7B%7D%7D`) - ).data.result; - return { - 'terra-luna': total_bond_amount / 1000000 - } + // const { total_bond_amount } = ( + // await axios.get(`https://lcd.terra.dev/wasm/contracts/terra1mtwph2juhj0rvjz7dy92gvl6xvukaxu8rfv8ts/store?query_msg=%7B%22state%22%3A%20%7B%7D%7D`) + // ).data.result; + // return { + // 'terra-luna': total_bond_amount / 1000000 + // } } async function eth(timestamp, ethBlock, chainBlocks) { From b52b1a5bce8099199694257c8c5dd5f8187bf54a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 18 Jun 2023 12:36:54 +0200 Subject: [PATCH 0799/1354] kommunitas: add arb stacking --- projects/kommunitas/index.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/projects/kommunitas/index.js b/projects/kommunitas/index.js index 716a5e2ab8..83a58fa243 100644 --- a/projects/kommunitas/index.js +++ b/projects/kommunitas/index.js @@ -1,14 +1,20 @@ const { stakings } = require("../helper/staking"); -const KOM_TOKEN_CONTRACT = '0xC004e2318722EA2b15499D6375905d75Ee5390B8'; -const KOM_STAKING_CONTRACT = [ +const KOM_TOKEN_CONTRACT_POLYGON = '0xC004e2318722EA2b15499D6375905d75Ee5390B8'; +const KOM_STAKING_CONTRACT_POLYGON = [ "0x453d0a593d0af91e77e590a7935894f7ab1b87ec", "0x8d37b12DB32E07d6ddF10979c7e3cDECCac3dC13", "0x8d34Bb43429c124E55ef52b5B1539bfd121B0C8D" ]; +const KOM_TOKEN_CONTRACT_ARBITRUM = '0xA58663FAEF461761e44066ea26c1FCddF2927B80'; +const KOM_STAKING_CONTRACT_ARBITRUM = ["0x5b63bdb6051CcB9c387252D8bd2364D7A86eFC70"]; module.exports = { polygon: { tvl: () => ({}), - staking: stakings(KOM_STAKING_CONTRACT, KOM_TOKEN_CONTRACT,) - } -}; \ No newline at end of file + staking: stakings(KOM_STAKING_CONTRACT_POLYGON, KOM_TOKEN_CONTRACT_POLYGON) + }, + arbitrum: { + tvl: () => ({}), + staking: stakings(KOM_STAKING_CONTRACT_ARBITRUM, KOM_TOKEN_CONTRACT_ARBITRUM) + }, +}; From a5f13e943ed3c6b929265f9880612b5af01f4310 Mon Sep 17 00:00:00 2001 From: Jay Welsh Date: Sun, 18 Jun 2023 12:39:31 +0200 Subject: [PATCH 0800/1354] feat(silo): exclude deprecated silos (#6575) --- projects/silo/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/silo/index.js b/projects/silo/index.js index cf538e56c6..6aec66f1a3 100644 --- a/projects/silo/index.js +++ b/projects/silo/index.js @@ -16,6 +16,8 @@ const config = { }, } +const fallbackBlacklist = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa"]; + async function tvl(_, block, _1, { api }) { const siloArray = await getSilos(api) const assets = await api.multiCall({ @@ -59,7 +61,7 @@ async function getSilos(api) { }) ) - return logs.map((log) => `0x${log.topics[1].substring(26)}`) + return logs.map((log) => `0x${log.topics[1].substring(26)}`).filter((address) => fallbackBlacklist.indexOf(address.toLowerCase()) === -1); } } From 876eb6f9eac8794c95468c31069f5b7083ecfdbd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 18 Jun 2023 13:57:42 +0200 Subject: [PATCH 0801/1354] bugfix --- projects/pawnfi-lending/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/pawnfi-lending/index.js b/projects/pawnfi-lending/index.js index 59e4d6e3b1..d9aad52fef 100644 --- a/projects/pawnfi-lending/index.js +++ b/projects/pawnfi-lending/index.js @@ -36,7 +36,8 @@ async function tvl(timestamp, block, _, { api }) { module.exports = mergeExports([{ ethereum: { tvl, borrowed }, - hallmarks: [ - [Math.floor(new Date('2023-06-16')/1e3), 'Protocol was exploited'], - ], }, nftTvl]) + +module.exports.hallmarks = [ + [Math.floor(new Date('2023-06-16') / 1e3), 'Protocol was exploited'], +] From 267932e34c4649ebb7deb670ec4b8edfa5476f87 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 18 Jun 2023 14:53:48 +0100 Subject: [PATCH 0802/1354] mark morpho doublecounted --- projects/morpho-aave/index.js | 3 ++- projects/morpho-aaveV3/index.js | 3 ++- projects/morpho/index.js | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/morpho-aave/index.js b/projects/morpho-aave/index.js index 58d61f12e4..20a4f6e9ea 100644 --- a/projects/morpho-aave/index.js +++ b/projects/morpho-aave/index.js @@ -59,10 +59,11 @@ const ethereum = (borrowed) => { module.exports = { timetravel: true, + doublecounted: true, methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, ethereum: { tvl: ethereum(false), borrowed: ethereum(true) } }; -// node test.js projects/morpho-aave/index.js \ No newline at end of file +// node test.js projects/morpho-aave/index.js diff --git a/projects/morpho-aaveV3/index.js b/projects/morpho-aaveV3/index.js index 2fda90b77b..5e4efce49d 100644 --- a/projects/morpho-aaveV3/index.js +++ b/projects/morpho-aaveV3/index.js @@ -51,9 +51,10 @@ const ethereum = (borrowed) => { module.exports = { methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, + doublecounted: true, ethereum: { tvl: ethereum(false), borrowed: ethereum(true) } }; -// node test.js projects/morpho-aave/index.js \ No newline at end of file +// node test.js projects/morpho-aave/index.js diff --git a/projects/morpho/index.js b/projects/morpho/index.js index f7677f76e5..04edca0d14 100644 --- a/projects/morpho/index.js +++ b/projects/morpho/index.js @@ -62,10 +62,11 @@ const ethereum = (borrowed) => { module.exports = { timetravel: true, + doublecounted: true, methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, ethereum: { tvl: ethereum(false), borrowed: ethereum(true), } }; -// node test.js projects/morpho-compound/index.js \ No newline at end of file +// node test.js projects/morpho-compound/index.js From e86e45f3d846223b995b9a4db03ed34d94d8d349 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 18 Jun 2023 15:55:22 +0100 Subject: [PATCH 0803/1354] change cardano api keys --- projects/helper/chain/cardano/blockfrost.js | 2 +- projects/helper/chain/cardano/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/helper/chain/cardano/blockfrost.js b/projects/helper/chain/cardano/blockfrost.js index d2d5cb8845..eb6d0d8b43 100644 --- a/projects/helper/chain/cardano/blockfrost.js +++ b/projects/helper/chain/cardano/blockfrost.js @@ -3,7 +3,7 @@ const axios = require('axios') const axiosObj = axios.create({ baseURL: 'https://cardano-mainnet.blockfrost.io/api/v0', headers: { - 'project_id': 'mainnet9mqP0lhGpRfqcUnVjOFaTSK67Z9UdZMM', + 'project_id': 'mai'+'nnetcxT8VaeCgVMzMTSe'+'zZijWlVkyh6XytpS', 'Content-Type': 'application/json' }, timeout: 300000, diff --git a/projects/helper/chain/cardano/index.js b/projects/helper/chain/cardano/index.js index c23e067105..5dee9cb3c3 100644 --- a/projects/helper/chain/cardano/index.js +++ b/projects/helper/chain/cardano/index.js @@ -3,7 +3,7 @@ const axios = require('axios') const axiosObj = axios.create({ baseURL: 'https://cardano-mainnet.blockfrost.io/api/v0', headers: { - 'project_id': 'mainnet9mqP0lhGpRfqcUnVjOFaTSK67Z9UdZMM', + 'project_id': 'mai'+'nnetcxT8Vae'+'CgVMzMTSezZijWlVkyh6XytpS', 'Content-Type': 'application/json' }, timeout: 300000, From 607a706fa239000660611b5a2d60817515f523c3 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sun, 18 Jun 2023 21:02:16 +0100 Subject: [PATCH 0804/1354] add hallmark to defidollar --- projects/defidollar/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/defidollar/index.js b/projects/defidollar/index.js index 4f819b2196..bc9c933bc2 100644 --- a/projects/defidollar/index.js +++ b/projects/defidollar/index.js @@ -33,6 +33,9 @@ async function tvl(_timestamp, block) { } module.exports = { + hallmarks: [ + [1641600000, "Possible exploit, contracts paused"] + ], ethereum:{ tvl }, From 57ce0254035169341a5b9f303dd016996032bcd6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Jun 2023 11:22:21 +0200 Subject: [PATCH 0805/1354] fix defichain loans --- projects/defichain-loans/index.js | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 projects/defichain-loans/index.js diff --git a/projects/defichain-loans/index.js b/projects/defichain-loans/index.js new file mode 100644 index 0000000000..97d0fa086d --- /dev/null +++ b/projects/defichain-loans/index.js @@ -0,0 +1,40 @@ +const { get } = require('../helper/http') +const { log } = require('../helper/utils') +const { transformBalances } = require('../helper/portedTokens') +const sdk = require('@defillama/sdk') + +async function tvl() { + const balances = {} + let next + const baseURI = 'https://ocean.defichain.com/v0/mainnet/loans/vaults?size=100' + let page = 0 + do { + let endpoint = baseURI + if (next) endpoint += '&next=' + next + + log('fetchin: ', ++page, next) + const res = await get(endpoint) + next = res.page?.next + + res.data.forEach(({ collateralAmounts = [], loanAmounts = [], }) => { + collateralAmounts.forEach(({ amount, symbol }) => { + sdk.util.sumSingleBalance(balances, symbol, +amount) + }) + loanAmounts.forEach(({ amount, symbol }) => { + if (symbol === 'DUSD') + sdk.util.sumSingleBalance(balances, symbol, +amount * -1) + }) + }) + } while (next) + + balances.DUSD *= 0.7 // value is reduced by 30% to compensate for DEX stability fees + return transformBalances('defichain', balances) +} + +module.exports = { + methodology: "Collateral backing loans in the platform, DUSD is excluded", + timetravel: false, + defichain: { + tvl + } +} From f94cc2b52ab88ac651bd13ca575fde52d226d4d1 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 19 Jun 2023 11:31:15 +0100 Subject: [PATCH 0806/1354] add new wallet binance cex --- projects/binance/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/binance/config.js b/projects/binance/config.js index 03cca46da7..3d5bd62929 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -349,6 +349,7 @@ const assetList = [ ["LTC", "LTC", "MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k"], ["USDC", "TRX", "TDjPeMNaRxoNMwENrdtNYmZt1YAfVVjp59"], ["USDC", "TRX", "TL6VgVKo6natQb6hW5Hy2jcyX5EHgmwXLE"], + ["BTC", "BTC", "1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7"] // new wallet https://twitter.com/binance/status/1670723088802283520 ] function getAddresses(chain) { From 42d6704f133cf9e498cce4d0d5536601150b0013 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 19 Jun 2023 11:45:00 +0100 Subject: [PATCH 0807/1354] add new wallet BTC binance --- projects/binance/config.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index 3d5bd62929..e96f99f2be 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -18,7 +18,7 @@ const assetList = [ ["BTC", "BTC", "3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ"], ["BTC", "BTC", "34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP"], ["BTC", "BTC", "bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h"], - ["BTC", "BTC", "38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE"], + // ["BTC", "BTC", "38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE"], old wallet that moved 3.1b to new one ["BTC", "BTC", "3EbJfpmFgufYtzW9UFvf1GAfm2ted1Rwnr"], ["BTC", "BTC", "38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn"], ["BTC", "BTC", "3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA"], @@ -349,7 +349,8 @@ const assetList = [ ["LTC", "LTC", "MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k"], ["USDC", "TRX", "TDjPeMNaRxoNMwENrdtNYmZt1YAfVVjp59"], ["USDC", "TRX", "TL6VgVKo6natQb6hW5Hy2jcyX5EHgmwXLE"], - ["BTC", "BTC", "1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7"] // new wallet https://twitter.com/binance/status/1670723088802283520 + ["BTC", "BTC", "1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7"], // new wallet https://twitter.com/binance/status/1670723088802283520 + ["BTC", "BTC", "39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v"] // new wallet that got 3.1b ] function getAddresses(chain) { From 6e70ab75ca16bff1d89ed63c297c2e568a8a2117 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 19 Jun 2023 12:29:16 +0100 Subject: [PATCH 0808/1354] add arbitrum chain to level --- projects/level/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/projects/level/index.js b/projects/level/index.js index 3a30465d4e..08b4f8bca1 100644 --- a/projects/level/index.js +++ b/projects/level/index.js @@ -16,6 +16,20 @@ const Contracts = { LVL_BNB_LP: "0x70f16782010fa7ddf032a6aacdeed05ac6b0bc85" } +const ContractsArb = { + Pool: "0x32B7bF19cb8b95C27E644183837813d4b595dcc6", + Chef: "0x0180dee5Df18eBF76642e50FaaEF426f7b2874f7", + Tokens: { + ETH: ADDRESSES.arbitrum.WETH, + USDT: ADDRESSES.arbitrum.USDT, + USDC: ADDRESSES.arbitrum.USDC, + BTC: ADDRESSES.arbitrum.WBTC, + ARB: "0x912CE59144191C1204E64559FE8253a0e49E6548" + } +} +async function arbtvl(_,b, _cb, { api, }) { + return sumTokens2({ api, owner: ContractsArb.Pool, tokens: Object.values(ContractsArb.Tokens)}) +} async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, owner: Contracts.Pool, tokens: Object.values(Contracts.Tokens) }) } @@ -25,6 +39,7 @@ module.exports = { tvl, pool2: pool2(Contracts.Chef, Contracts.LVL_BNB_LP) }, + arbitrum: { tvl: arbtvl }, hallmarks: [ [Math.floor(new Date('2023-05-01')/1e3), 'Referral contract exploited'], ], From 4fb85eccf90bf8b1b98da908415b4f9963d8a3dd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Jun 2023 13:37:53 +0200 Subject: [PATCH 0809/1354] fix broken adapters --- projects/helper/chain/ton.js | 10 +++++++++ projects/ink-protocol/index.js | 2 +- projects/nexus-protocol/index.js | 29 +------------------------ projects/quicksilver/index.js | 1 + projects/specfinance.js | 6 ++--- projects/steak/terra.js | 10 +-------- projects/tegro/index.js | 19 +++++----------- projects/uno-farm/uno-helplers/index.js | 3 ++- 8 files changed, 25 insertions(+), 55 deletions(-) create mode 100644 projects/helper/chain/ton.js diff --git a/projects/helper/chain/ton.js b/projects/helper/chain/ton.js new file mode 100644 index 0000000000..6a7d6e0d2d --- /dev/null +++ b/projects/helper/chain/ton.js @@ -0,0 +1,10 @@ +const { get } = require('../http') + +async function getTonBalance(addr) { + const res = await get(`https://tonapi.io/v1/account/getInfo?account=${addr}`) + return res.balance +} + +module.exports = { + getTonBalance, +} \ No newline at end of file diff --git a/projects/ink-protocol/index.js b/projects/ink-protocol/index.js index 9575c7e4cd..f81a89d070 100644 --- a/projects/ink-protocol/index.js +++ b/projects/ink-protocol/index.js @@ -15,7 +15,7 @@ async function tvl() { module.exports = { methodology: 'TVL counts the UST that users deposited into Ink Protocol', terra: { - tvl + tvl: () => ({}), }, hallmarks:[ [1651881600, "UST depeg"], diff --git a/projects/nexus-protocol/index.js b/projects/nexus-protocol/index.js index 8b8aa2bbc9..e49f4f3a7c 100644 --- a/projects/nexus-protocol/index.js +++ b/projects/nexus-protocol/index.js @@ -1,35 +1,8 @@ -const { fetchURL } = require('../helper/utils') - -const vaults = [ - ["https://lcd.terra.dev/wasm/contracts/terra10cxuzggyvvv44magvrh3thpdnk9cmlgk93gmx2/store?query_msg=%7B%22borrower%22:%7B%22address%22:%22terra1tfrecwlvzcv9h697q3g0d08vd53ssu5w4war4n%22%7D%7D", "ethereum"], - ["https://lcd.terra.dev/wasm/contracts/terra1ptjp2vfjrwh0j0faj9r6katm640kgjxnwwq9kn/store?query_msg=%7B%22borrower%22:%7B%22address%22:%22terra1cda4adzngjzcn8quvfu2229s8tedl5t306352x%22%7D%7D", "terra-luna"] -] - -async function tvl() { - const balances = {} - await Promise.all(vaults.map(async vault => { - const deposited = await fetchURL(vault[0]) - balances[vault[1]] = Number(deposited.data.result.balance) / 1e6 - })) - return balances -} - -async function staking() { - const staked = await fetchURL( - `https://lcd.terra.dev/wasm/contracts/terra12897djskt9rge8dtmm86w654g7kzckkd698608/store?query_msg=%7B%22balance%22:%7B%22address%22:%22terra1xrk6v2tfjrhjz2dsfecj40ps7ayanjx970gy0j%22%7D%7D` - ) - // console.log(Number(staked.data.result.balance) / 1e6) - return { - "nexus-governance-token": Number(staked.data.result.balance) / 1e6 - } -} module.exports = { timetravel: false, terra: { - // Token not on coingecko yet - //staking, - tvl + tvl: () => ({}), }, hallmarks:[ [1651881600, "UST depeg"], diff --git a/projects/quicksilver/index.js b/projects/quicksilver/index.js index 05e9ada73a..8a1aa8b3e2 100644 --- a/projects/quicksilver/index.js +++ b/projects/quicksilver/index.js @@ -5,6 +5,7 @@ const coinGeckoIds = { uatom: "cosmos", uosmo: "osmosis", uregen: "regen", + ujuno: "juno-network", ustars: "stargaze" }; diff --git a/projects/specfinance.js b/projects/specfinance.js index d0fd173c2c..0e8ec7817c 100644 --- a/projects/specfinance.js +++ b/projects/specfinance.js @@ -1,9 +1,9 @@ const axios = require('axios') async function tvl(){ - const tvl = await axios.get('https://api.spec.finance/api/stat') + const tvl = await axios.get('https://spec-api-eeh8efcmd2b0fffh.z01.azurefd.net/api/data?type=lpVault') return { - 'terrausd': tvl.data.tvl, + 'terrausd': tvl.data.stat.tvl / 1e6, } } @@ -18,7 +18,7 @@ module.exports = { misrepresentedTokens: true, timetravel: false, terra:{ - tvl + tvl: () => ({}), }, terra2:{ tvl: terra2 diff --git a/projects/steak/terra.js b/projects/steak/terra.js index 05a53da536..d7b4fdcea0 100644 --- a/projects/steak/terra.js +++ b/projects/steak/terra.js @@ -6,15 +6,7 @@ const GRPC_API_URL = "https://lcd.terra.dev"; const STEAK_HUB = "terra15qr8ev2c0a0jswjtfrhfaj5ucgkhjd7la2shlg"; async function tvl() { - const queryMsg = { state: {} }; - - const response = await axios.get( - `${GRPC_API_URL}/terra/wasm/v1beta1/contracts/${STEAK_HUB}/store?query_msg=${encodeBase64(queryMsg)}` - ); - - return { - "terra-luna": parseInt(response.data.query_result.total_uluna) / 1e6, - }; + return {} } module.exports = { tvl }; diff --git a/projects/tegro/index.js b/projects/tegro/index.js index 21cea4235c..7652b284f2 100644 --- a/projects/tegro/index.js +++ b/projects/tegro/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const { get } = require('../helper/http') -const { transformDexBalances } = require('../helper/portedTokens') +const { getTonBalance } = require('../helper/chain/ton') const sdk = require('@defillama/sdk') const nullAddress = ADDRESSES.null @@ -8,19 +8,12 @@ module.exports = { misrepresentedTokens: true, timetravel: false, ton: { - tvl: async () => { + tvl: async (_, _1, _2, { api}) => { const pools = await get('https://api.tegro.finance/v1/pairs') - sdk.log(pools.length) - - return transformDexBalances({ - chain: 'ton', - data: pools.map(i => ({ - token0: i.base.address ?? nullAddress, - token1: i.quote.address ?? nullAddress, - token0Bal: i.reserve.base, - token1Bal: i.reserve.quote, - })) - }) + let tonPools = pools.filter(i => !i.base.address ).map(i => i.address) + sdk.log(pools.length, tonPools.length) + const tonBalances = await Promise.all(tonPools.map(getTonBalance)) + tonBalances.forEach(i => api.add(nullAddress, i * 2)) } } } diff --git a/projects/uno-farm/uno-helplers/index.js b/projects/uno-farm/uno-helplers/index.js index c8637bc891..083c370e87 100644 --- a/projects/uno-farm/uno-helplers/index.js +++ b/projects/uno-farm/uno-helplers/index.js @@ -142,6 +142,7 @@ async function getFullInfoQuickswapUnoFarm({ calls: stakeTokenCalls, abi: UnoFarmQuickswapABI.lpPair, chain, + permitFailure: true, }) ).output.map((a) => a.output); @@ -149,7 +150,7 @@ async function getFullInfoQuickswapUnoFarm({ return dataFarms.map((v, i) => ({ ...v, stakeToken: stakeTokens[i], - })); + })).filter(v=>v.stakeToken !== null); } module.exports = { From 657609981ed6583550716372a2ec3e0203dfdfdf Mon Sep 17 00:00:00 2001 From: define Date: Mon, 19 Jun 2023 13:07:56 +0100 Subject: [PATCH 0810/1354] add usdc to level --- projects/level/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/level/index.js b/projects/level/index.js index 08b4f8bca1..ce27610d12 100644 --- a/projects/level/index.js +++ b/projects/level/index.js @@ -22,7 +22,7 @@ const ContractsArb = { Tokens: { ETH: ADDRESSES.arbitrum.WETH, USDT: ADDRESSES.arbitrum.USDT, - USDC: ADDRESSES.arbitrum.USDC, + USDC: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", BTC: ADDRESSES.arbitrum.WBTC, ARB: "0x912CE59144191C1204E64559FE8253a0e49E6548" } From 2c15dcba530f77d69cf6b8e1126b2902a73b52ac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Jun 2023 14:46:33 +0200 Subject: [PATCH 0811/1354] track zkbob cdp --- projects/zkbob-cdp/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/zkbob-cdp/index.js diff --git a/projects/zkbob-cdp/index.js b/projects/zkbob-cdp/index.js new file mode 100644 index 0000000000..c8fb337571 --- /dev/null +++ b/projects/zkbob-cdp/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + polygon: { + tvl: sumTokensExport({ + blacklistedTokens: ['0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B'], + owner: '0xFDBC53080AFb08d7a3A2420e902c8AeC05E4aE73', + resolveUniV3: true + }) + } +} \ No newline at end of file From d62c4bc34ae096f2cf3052f28bae7d443885daee Mon Sep 17 00:00:00 2001 From: DCota <32775237+DaigaroCota@users.noreply.github.com> Date: Mon, 19 Jun 2023 18:20:54 +0200 Subject: [PATCH 0812/1354] Feat/fujidao add version 2 (#6583) * feat(fujidao): add version 2 adapter * refactor(fujidao-v2): split functions in a utils file * fix(fujidao-v2): polygon file name * refactor(fujidao-v2): add debt and move supply function to arb file * refactor(fujidao-v2): add debt and move supply function to opt file * refactor(fujidao-v2): simplify index file * refactor(fujidao-v2): add debt and move supply function to gno file * fix(fujidao-v2): debugging log in utils * refactor(fujidao-v2): using factories suggestion of ulysses-discord --- projects/fujidao-v2/index.js | 65 ++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 projects/fujidao-v2/index.js diff --git a/projects/fujidao-v2/index.js b/projects/fujidao-v2/index.js new file mode 100644 index 0000000000..bd6070edc0 --- /dev/null +++ b/projects/fujidao-v2/index.js @@ -0,0 +1,65 @@ +const { getLogs } = require('../helper/cache/getLogs') + +const config = { + xdai: { borrowFactory: '0xBeaa4b2cE11cc2F8a059341DaD422814B66d1aD0', borrowStartBlock: 28448319, }, + arbitrum: { borrowFactory: '0x2855666fbc5f526269b1f5dc73dfc8e11acb67f1', borrowStartBlock: 101069692, }, + optimism: { borrowFactory: '0xC377e6e13426739f14E411dD88Af8056e2DcabA4', borrowStartBlock: 105577184, }, + polygon: { borrowFactory: '0x157A03942e4F88c0357e4Afc1da46E9Cc12DB1D5', borrowStartBlock: 43896122, }, +} + +module.exports = { + doublecounted: true, +}; + +Object.keys(config).forEach(chain => { + const { borrowFactory, borrowStartBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: borrowFactory, + topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], + eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', + onlyArgs: true, + fromBlock: borrowStartBlock, + extraKey: 'borrow-vault' + }) + const vaults = logs.map(log => log.vault) + const assets = logs.map(log => log.asset) + const debtAssets = logs.map(log => log.debtAsset) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) + const debtBals = await api.multiCall({ abi: 'uint256:totalDebt', calls: vaults, permitFailure: true, }) + bals.forEach((bal, i) => { + if (!debtBals[i]) { + if (+bal === 0) return; + throw new Error(`No debt balance for ${vaults[i]}`) + } + api.add(assets[i], bal) + api.add(debtAssets[i], debtBals[i] * -1) + }) + }, + borrowed: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: borrowFactory, + topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], + eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', + onlyArgs: true, + fromBlock: borrowStartBlock, + extraKey: 'borrow-vault' + }) + const vaults = logs.map(log => log.vault) + const assets = logs.map(log => log.asset) + const debtAssets = logs.map(log => log.debtAsset) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) + const debtBals = (await api.multiCall({ abi: 'uint256:totalDebt', calls: vaults, permitFailure: true, })) + bals.forEach((bal, i) => { + if (!debtBals[i]) { + if (+bal === 0) return; + throw new Error(`No debt balance for ${vaults[i]}`) + } + api.add(debtAssets[i], debtBals[i]) + }) + } + } +}) \ No newline at end of file From 45acc9b6542801bd199a62ad555d4c27c01aacf8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Jun 2023 21:58:16 +0200 Subject: [PATCH 0813/1354] fraxlend: track borrowed --- projects/fraxlend/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/fraxlend/index.js b/projects/fraxlend/index.js index 7c7b6ce734..27f8acbf27 100644 --- a/projects/fraxlend/index.js +++ b/projects/fraxlend/index.js @@ -8,10 +8,15 @@ async function tvl(timestamp, block, chainBlocks, { api }) { const tokens = await api.multiCall({ abi: abi.collateralContract, calls: pairs }) return sumTokens2({ api, tokensAndOwners: tokens.map((v, i) => [v, pairs[i]]) }) } +async function borrowed(timestamp, block, chainBlocks, { api }) { + const pairs = await api.call({ target: REGISTRY_ADDR, abi: abi['getAllPairAddresses'], }) + const bals = await api.multiCall({ abi: 'function totalBorrow() view returns (uint128 amount, uint128 shares)', calls: pairs }) + bals.forEach(bal => api.add('0x853d955acef822db058eb8505911ed77f175b99e', bal.amount)) +} module.exports = { methodology: 'Gets the pairs from the REGISTRY_ADDRESS and adds the collateral amounts from each pair', ethereum: { - tvl + tvl, borrowed, }, } \ No newline at end of file From fa8eb5bef430efe048a2cc3adbe1bb0d98c32d5f Mon Sep 17 00:00:00 2001 From: PairExIO <136404752+PairExIO@users.noreply.github.com> Date: Tue, 20 Jun 2023 04:06:37 +0800 Subject: [PATCH 0814/1354] feat:add pairex adapter (#6579) * feat:add pairex adapter * minor refactor --------- Co-authored-by: June Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pairex/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/pairex/index.js diff --git a/projects/pairex/index.js b/projects/pairex/index.js new file mode 100644 index 0000000000..03e88224b0 --- /dev/null +++ b/projects/pairex/index.js @@ -0,0 +1,26 @@ +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensExport } = require('../helper/unwrapLPs') + +const contracts = [ + '0x154fDc2e0c4A2e4b39AFc329f0df88499d96F665', + '0x9CC1b358E39651F118AA02126648f4a770B7432D', + '0x2Ca07638acDa0B2bEa7B6a06F135476BDdd7101B', + '0xA7dE0DD19004b430cC8C920fCA9F5FDE5A66379b', + '0x35DD17F0d9098fc5B24D6328122B4C9ea5dD7DB5', + '0x0a30067Ad5ff753F6887bBaF03b467C87CF62eF3' +] + +const tokens = [ + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.LINK +] + +module.exports = { + start: 1678852800, // 15/03/2023 @ 04:00am (UTC) + arbitrum: { + tvl: sumTokensExport({ tokens, owners: contracts }), + }, + hallmarks: [ + [1678852800, "Arbitrum Pairex Launch"] + ] +} From ee3512b452ecb45137b89d1d9f480bfc3dc5f8a1 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Tue, 20 Jun 2023 04:17:17 +0800 Subject: [PATCH 0815/1354] new list for solv v3 (#6588) * solv-protocal update v2 add v3 * try catch error * new list for solv v3 --- .../abi.json | 0 projects/solv-protocol-v3/index.js | 100 ++++++++++++++++++ projects/solv-protocol/index.js | 81 +------------- 3 files changed, 101 insertions(+), 80 deletions(-) rename projects/{solv-protocol => solv-protocol-v3}/abi.json (100%) create mode 100644 projects/solv-protocol-v3/index.js diff --git a/projects/solv-protocol/abi.json b/projects/solv-protocol-v3/abi.json similarity index 100% rename from projects/solv-protocol/abi.json rename to projects/solv-protocol-v3/abi.json diff --git a/projects/solv-protocol-v3/index.js b/projects/solv-protocol-v3/index.js new file mode 100644 index 0000000000..81ec0c4950 --- /dev/null +++ b/projects/solv-protocol-v3/index.js @@ -0,0 +1,100 @@ +const { default: BigNumber } = require("bignumber.js"); +const abi = require("./abi.json"); +const { cachedGraphQuery } = require("../helper/cache"); + +// The Graph +const graphUrlList = { + ethereum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-prod/version/latest', + bsc: 'https://api.thegraph.com/subgraphs/name/slov-payable/solv-v3-earn-factory', + arbitrum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-arbitrum/version/latest', +} + +const filterSlot = [ + "24463698369598535545979799361840946803505909684060624549876546521811809090281", + "35721610559268442584760110830641808857798079704888818123868248602816498531758", + "71384167217207433357665203528199852676074195415546219658272700694805764131696", + "94855382073997775269187449187472275689000980913702165029893305070390069014119" +]; + +async function tvl() { + const { api } = arguments[3]; + const network = api.chain; + const slots = await getSlot(api.timestamp, network); + if (slots.length <= 0) { + return; + } + const concretes = await concrete(slots, api); + + const totalValues = await api.multiCall({ + abi: abi.slotTotalValue, + calls: slots.map((index) => ({ + target: concretes[index.contractAddress], + params: [index.slot] + })), + }) + + const baseInfos = await api.multiCall({ + abi: abi.slotBaseInfo, + calls: slots.map((index) => ({ + target: concretes[index.contractAddress], + params: [index.slot] + })), + }) + + const decimalList = await api.multiCall({ + abi: abi.decimals, + calls: baseInfos.map(i => i[1]), + }) + + for (let i = 0; i < totalValues.length; i++) { + const decimals = decimalList[i]; + const balance = BigNumber(totalValues[i]).div(BigNumber(10).pow(18 - decimals)).toNumber(); + api.add(baseInfos[i][1], balance) + } +} + +async function concrete(slots, api) { + var slotsList = []; + var only = {}; + for (var i = 0; i < slots.length; i++) { + if (!only[slots[i].contractAddress]) { + slotsList.push(slots[i]); + only[slots[i].contractAddress] = true; + } + } + + const concreteLists = await api.multiCall({ + calls: slotsList.map((index) => index.contractAddress), + abi: abi.concrete, + }) + + let concretes = {}; + for (var k = 0; k < concreteLists.length; k++) { + concretes[slotsList[k].contractAddress] = concreteLists[k]; + } + + return concretes; +} + + +async function getSlot(timestamp, chain) { + const slotDataQuery = `query BondSlotInfos { + bondSlotInfos(first: 1000, where:{maturity_gt:${timestamp}}) { + contractAddress + slot + } + }`; + const slots = (await cachedGraphQuery(`solv-protocol/graph-data/${chain}`, graphUrlList[chain], slotDataQuery)).bondSlotInfos; + let slotList = []; + for (let i = 0; i < slots.length; i++) { + const bondSlotInfo = slots[i]; + if (filterSlot.indexOf(bondSlotInfo.slot) == -1) { + slotList.push(bondSlotInfo) + } + } + return slotList; +} + +['ethereum', 'bsc', 'arbitrum'].forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file diff --git a/projects/solv-protocol/index.js b/projects/solv-protocol/index.js index 50b69cfc99..a03f135fec 100644 --- a/projects/solv-protocol/index.js +++ b/projects/solv-protocol/index.js @@ -1,59 +1,15 @@ -const { default: BigNumber } = require("bignumber.js"); -const abi = require("./abi.json"); -const { getConfig, cachedGraphQuery } = require("../helper/cache"); +const { getConfig } = require("../helper/cache"); const { sumTokens2 } = require("../helper/unwrapLPs"); // token list const tokenListsApiEndpoint = "https://token-list.solv.finance/vouchers-prod.json" -// The Graph -const graphUrlList = { - ethereum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-prod/v0.0.1', - bsc: 'https://api.thegraph.com/subgraphs/name/slov-payable/solv-v3-earn-factory', - arbitrum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-arbitrum/v0.0.1', -} async function tvl() { const { api } = arguments[3] const chainId = api.getChainId() const tokens = await tokenList(chainId); await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) - // await graphEarn(api) -} - -async function graphEarn(api) { - const network = api.chain - if (!graphUrlList[network]) return; - const slots = await getSlot(api.timestamp, network); - - const concretes = await concrete(slots, api); - - const totalValues = await api.multiCall({ - abi: abi.slotTotalValue, - calls: slots.map((index) => ({ - target: concretes[index.contractAddress], - params: [index.slot] - })), - }) - - const baseInfos = await api.multiCall({ - abi: abi.slotBaseInfo, - calls: slots.map((index) => ({ - target: concretes[index.contractAddress], - params: [index.slot] - })), - }) - - const decimalList = await api.multiCall({ - abi: abi.decimals, - calls: baseInfos.map(i => i[1]), - }) - - for (let i = 0; i < totalValues.length; i++) { - const decimals = decimalList[i]; - const balance = BigNumber(totalValues[i]).div(BigNumber(10).pow(18 - decimals)).toNumber(); - api.add(baseInfos[i][1], balance) - } } async function tokenList(chainId) { @@ -75,41 +31,6 @@ async function tokenList(chainId) { return tokens; } -async function concrete(slots, api) { - var slotsList = []; - var only = {}; - for (var i = 0; i < slots.length; i++) { - if (!only[slots[i].contractAddress]) { - slotsList.push(slots[i]); - only[slots[i].contractAddress] = true; - } - } - - const concreteLists = await api.multiCall({ - calls: slotsList.map((index) => index.contractAddress), - abi: abi.concrete, - }) - - let concretes = {}; - for (var k = 0; k < concreteLists.length; k++) { - concretes[slotsList[k].contractAddress] = concreteLists[k]; - } - - return concretes; -} - - -async function getSlot(timestamp, chain) { - const slotDataQuery = `query BondSlotInfos { - bondSlotInfos(first: 1000, where:{maturity_gt:${timestamp}}) { - contractAddress - slot - } - }`; - const slots = (await cachedGraphQuery(`solv-protocol/graph-data/${chain}`, graphUrlList[chain], slotDataQuery)).bondSlotInfos; - return slots; -} - ['ethereum', 'bsc', 'polygon', 'arbitrum'].forEach(chain => { module.exports[chain] = { tvl } }) \ No newline at end of file From a77d343483a68dbcb661c470162643b1831b24d5 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Mon, 19 Jun 2023 22:20:29 +0200 Subject: [PATCH 0816/1354] Add nftperp adapter (#6574) --- projects/nftperp/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/nftperp/index.js diff --git a/projects/nftperp/index.js b/projects/nftperp/index.js new file mode 100644 index 0000000000..f6c8bf3410 --- /dev/null +++ b/projects/nftperp/index.js @@ -0,0 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensExport } = require('../helper/sumTokens'); + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ + tokensAndOwners: [ + // DEX + [ADDRESSES.arbitrum.WETH, '0x6fc05B7DFe545cd488E9D47d56CFaCA88F69A2e1'], + // Insurance fund + [ADDRESSES.arbitrum.WETH, '0x035E4480437002A30b61Df6788DFb6199c2C5210'], + ] + }) + }, +}; From 30bbadb25129c0b6804dae0f28ea8c30798c7da5 Mon Sep 17 00:00:00 2001 From: Bunsan Muchi <93080921+BunsanMuchi@users.noreply.github.com> Date: Mon, 19 Jun 2023 22:35:30 +0200 Subject: [PATCH 0817/1354] Added adapter for Vestige Vaults (#6589) * Added adapter for Vestige Vaults * Fixed comma problem --- projects/vestige/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/vestige/index.js diff --git a/projects/vestige/index.js b/projects/vestige/index.js new file mode 100644 index 0000000000..83431a1989 --- /dev/null +++ b/projects/vestige/index.js @@ -0,0 +1,34 @@ +const axios = require("axios"); + +async function fetch() { + //Get all the vaults in the protocol + const assetsUrl = "https://free-api.vestige.fi/assets/locked"; + const assetsResponse = await axios.get(assetsUrl); + const assets = assetsResponse.data; + + let tvl = 0; + + await Promise.all( + assets.map(async (asset) => { + const assetId = asset.asset_id; + const supplyInTvlLocked = asset.supply_in_tvl_locked; + const priceUrl = `https://free-api.vestige.fi/asset/${assetId}/price`; + const priceResponse = await axios.get(priceUrl); + const price = priceResponse.data.USD; + tvl += supplyInTvlLocked * price * 2; + }) + ); + tvl = tvl.toFixed(6) + return tvl; + +} + +module.exports = { + timetravel:false, + misrepresentedTokens:true, + methodology:`Counts tokens in LPs only, transforms the price to USD and * them by 2 to account for the other side.`, + algorand: { + fetch + }, + fetch +}; From 2162b5a1f42952db7055a295e8b17ab9b501158f Mon Sep 17 00:00:00 2001 From: strobie <107649472+0xStrobe@users.noreply.github.com> Date: Mon, 19 Jun 2023 22:39:59 +0200 Subject: [PATCH 0818/1354] add tigris (#6590) --- projects/tigris/index.js | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 projects/tigris/index.js diff --git a/projects/tigris/index.js b/projects/tigris/index.js new file mode 100644 index 0000000000..e11bf12e1d --- /dev/null +++ b/projects/tigris/index.js @@ -0,0 +1,60 @@ +const { staking } = require("../helper/staking"); +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const TigrisAddresses = { + arbitrum: { + TIG: "0x3A33473d7990a605a88ac72A78aD4EFC40a54ADB", + xTIG: "0x19694Cf64572e6adf643Ae7B13d5b2921215B4E5", + // tigUSD and USDT are 1:1 exchangeable via stable vault + tigUSD: "0x7E491F53bF807f836E2dd6C4A4FBd193e1913EFd", + USDT: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + TigStaking: "0x6E8BFBb31A46D0F5502426050Ea28b19F8E761f4", + TokenSale: "0x45F52502aF87e7e4E446BA15BDf223A19b47DA98", + StableVault: "0xe82fcefbDD034500B5862B4827CAE5c117f6b921", + Treasury: "0xf416c2b41fb6c592c9ba7cb6b2f985ed593a51d7", + Lock: "0x76e0c3bda3dD22A2cFDCdbCafdaC997927F80483", + TeamVesting: "0x97F1b43ED98587B2ab5A649aa63Ecc28403282bC", + }, + polygon: { + TIG: "0x7157Fe7533f2fc77498755Cc253d79046c746560", + TigStaking: "0xC6c32eD781450228dFadfa49A430d7868B110F44", + // tigUSD and DAI are 1:1 exchangeable via stable vault + tigUSD: "0x76973Ba2AFF24F87fFE41FDBfD15308dEBB8f7E8", + DAI: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + StableVault: "0x3677415Dc23e49B7780ef46976F418F4a9d5031B", + Treasury: "0x4f7046f36B5D5282A94cB448eAdB3cdf9Ff2b051", + Lock: "0x638e39D4a927EfE3040F0f6D4d27e4CccD8c996A", + Bond: "0xC5d9B681086b2617626B0Ed05A7D632660Fc99f4", + }, +}; + +async function arbitrumTvl(_, _b, _cb, { api }) { + const tokensAndOwners = [ + [TigrisAddresses.arbitrum.USDT, TigrisAddresses.arbitrum.StableVault], + ]; + return sumTokens2({ api, tokensAndOwners }); +} + +async function polygonTvl(_, _b, _cb, { api }) { + const tokensAndOwners = [ + [TigrisAddresses.polygon.DAI, TigrisAddresses.polygon.StableVault], + ]; + return sumTokens2({ api, tokensAndOwners }); +} + +module.exports = { + arbitrum: { + staking: staking( + TigrisAddresses.arbitrum.TigStaking, + TigrisAddresses.arbitrum.TIG + ), + tvl: arbitrumTvl, + }, + polygon: { + staking: staking( + TigrisAddresses.polygon.TigStaking, + TigrisAddresses.polygon.TIG + ), + tvl: polygonTvl, + }, +}; From 28183827238d5a3d0f04c2df248410eb64c5d61c Mon Sep 17 00:00:00 2001 From: Josh Weintraub Date: Mon, 19 Jun 2023 16:40:39 -0400 Subject: [PATCH 0819/1354] Resonate Finance Adapter (#6592) * resonate finance defillama adapter * add hallmarks for important events * undo accidental changes to another protocol adapter --- projects/resonatefinance/index.js | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 projects/resonatefinance/index.js diff --git a/projects/resonatefinance/index.js b/projects/resonatefinance/index.js new file mode 100644 index 0000000000..59c95a45ad --- /dev/null +++ b/projects/resonatefinance/index.js @@ -0,0 +1,41 @@ +const sdk = require('@defillama/sdk'); +const axios = require('axios'); + + +//Full Calculations for computing TVL for Resonate Finance is done internally by Resonate and exposed via API +//API Endpoint: https://api.resonate.finance/{chainId}/tvl +//https://github.com/Revest-Finance/railway-monorepo/blob/main/src/api.ts", +async function tvl(_, _1, _2, { api }) { + let usdValue = 0; + do { + const {data, success} = await axios.get(`https://api.resonate.finance/${api.chainId}/tvl`); + usdValue = data; + } while (usdValue == 0) + + return { + tether: usdValue, + }; +} + +module.exports = { + methodology: "We sum all the tokens deposited as principal and any unclaimed interest accrued on it.", + hallmarks: [ + [1682438400, "Launch of Regen Portal"], + [1687276800, "Launch of Frax Portal"] + ], + ethereum: { + tvl + }, + polygon: { + tvl + }, + optimism: { + tvl + }, + arbitrum: { + tvl + }, + fantom: { + tvl + }, + }; From 08cacd42ce6617a196bc047c87dc0850dfed76e3 Mon Sep 17 00:00:00 2001 From: RoastedBill Date: Tue, 20 Jun 2023 14:48:07 +0800 Subject: [PATCH 0820/1354] Update: 1.add staking info to ktx (#6596) Co-authored-by: RS --- projects/ktx/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/ktx/index.js b/projects/ktx/index.js index ae3eebfa68..e145a2d40e 100644 --- a/projects/ktx/index.js +++ b/projects/ktx/index.js @@ -1,6 +1,13 @@ -const { gmxExports } = require('../helper/gmx') +const { staking } = require("../helper/staking"); +const { gmxExports } = require("../helper/gmx"); + +const bscVault = "0xd98b46C6c4D3DBc6a9Cc965F385BDDDf7a660856"; +const bscStaking = "0x5d1459517ab9FfD60f8aDECdD497ac94DD62d3FD"; +const bscKTC = "0x545356d4d69d8cD1213Ee7e339867574738751CA"; + module.exports = { bsc: { - tvl: gmxExports({ vault: '0xd98b46C6c4D3DBc6a9Cc965F385BDDDf7a660856', }) - } + staking: staking(bscStaking, bscKTC, "bsc"), + tvl: gmxExports({ vault: bscVault }), + }, }; From 0e37f06a9998d5d25e4d7f524a5692c0b680914d Mon Sep 17 00:00:00 2001 From: tonykcao <98124995+tonykcao@users.noreply.github.com> Date: Tue, 20 Jun 2023 13:59:11 +0700 Subject: [PATCH 0821/1354] Fixed staking address for GMD (#6597) * fixed staking address * Revert "fixed staking address" This reverts commit f68be4dd369cfb8d4f8683dbfd32cf888a1f0f1f. * fixed staking address (again) * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gmd/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/gmd/index.js b/projects/gmd/index.js index 879da81cca..25b9711bb4 100644 --- a/projects/gmd/index.js +++ b/projects/gmd/index.js @@ -4,7 +4,8 @@ const chain = 'arbitrum'; const abi = 'uint256:totalUSDvaults' const vault = "0xA7Ce4434A29549864a46fcE8662fD671c06BA49a"; const vault2 = "0x8080B5cE6dfb49a6B86370d6982B3e2A86FBBb08"; -const stakingAdd = "0x8A19F6BC381caf24C7122296AA51047105924074"; +const stakingAdd = "0x48c81451d1fddeca84b47ff86f91708fa5c32e93"; +const EsGMDAddress = "0x49E050dF648E9477c7545fE1779B940f879B787A"; const GMDaddress = "0x4945970EfeEc98D393b4b979b9bE265A3aE28A8B"; const Tvl = async (ts, _, { arbitrum: block }) => { @@ -21,7 +22,7 @@ module.exports = { misrepresentedTokens: true, methodology: "staked gmd + vault balance", arbitrum: { - staking: staking(stakingAdd, GMDaddress, "arbitrum"), + staking: staking(stakingAdd, [EsGMDAddress, GMDaddress]), tvl: Tvl, }, }; From a02d01c33889b12ee0b7192533ffeb51b69cb621 Mon Sep 17 00:00:00 2001 From: smoo7h Date: Tue, 20 Jun 2023 02:59:57 -0400 Subject: [PATCH 0822/1354] Daytona.Finance (#6598) * create index.js create index.js * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/daytona-finance/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/daytona-finance/index.js diff --git a/projects/daytona-finance/index.js b/projects/daytona-finance/index.js new file mode 100644 index 0000000000..99afa2778d --- /dev/null +++ b/projects/daytona-finance/index.js @@ -0,0 +1,10 @@ +const { masterchefExports } = require("../helper/unknownTokens"); + +module.exports = masterchefExports({ + chain: "pulse", + masterchef: "0xAc6fBc06C8c0477ba8fc117adb52881c1Cc580dA", + nativeTokens: ["0x9F8182aD65c53Fd78bd07648a1b3DDcB675c6772"], + useDefaultCoreAssets: true, + poolInfoABI: "function poolInfo(uint256) view returns (address)", + getToken: (i) => i, +}); From 5d2999a93b362cf33ae58ae1e6838ffd6c127389 Mon Sep 17 00:00:00 2001 From: supersorbet <96810757+supersorbet@users.noreply.github.com> Date: Tue, 20 Jun 2023 03:03:56 -0400 Subject: [PATCH 0823/1354] add pepedex factory tvl (#6595) * add pepedex factory tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- package-lock.json | 2 +- projects/pepedex/index.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 projects/pepedex/index.js diff --git a/package-lock.json b/package-lock.json index 71cde297b4..4837c72947 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6791,7 +6791,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "5.0.1" + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { diff --git a/projects/pepedex/index.js b/projects/pepedex/index.js new file mode 100644 index 0000000000..ef089cbf8f --- /dev/null +++ b/projects/pepedex/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + ethereum: { + tvl: getUniTVL({ + fetchBalances: true, + useDefaultCoreAssets: true, + factory: '0x460b2005b3318982feADA99f7ebF13e1D6f6eFfE', + }) + } +}; From ed7b138cb90ff8998b978c4bab9222884ae406fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Federico=20Rodr=C3=ADguez?= Date: Tue, 20 Jun 2023 04:25:15 -0300 Subject: [PATCH 0824/1354] [Mars Protocol] - Take Fields of Mars into account for TVL (#6591) * Add vaults to tvl * Use fields naming. Add better methodology description * Fix punctuation * Use 10 as page Limit --- projects/mars/index.js | 141 ++++++++++++++++++++++++++++++++--------- 1 file changed, 111 insertions(+), 30 deletions(-) diff --git a/projects/mars/index.js b/projects/mars/index.js index d6dc259c92..66fcfca766 100644 --- a/projects/mars/index.js +++ b/projects/mars/index.js @@ -1,45 +1,126 @@ -const sdk = require('@defillama/sdk') - -const { queryContract } = require('../helper/chain/cosmos') -const { transformBalances } = require('../helper/portedTokens') -const { sumTokensExport } = require('../helper/sumTokens') -const chain = 'osmosis' -const contract = 'osmo1c3ljch9dfw5kf52nfwpxd2zmj2ese7agnx0p9tenkrryasrle5sqf3ftpg' - -async function borrowed() { - var lastDenom = "" - var lastResponse = [] - var res - - do { - res = await queryContract({ contract, chain: 'osmosis', data: { markets: {start_after: lastDenom} } }) - const resLength = res.length - lastResponse.push(...res) - if (resLength != 0) { - lastDenom = res[resLength - 1].denom +const sdk = require('@defillama/sdk'); +const axios = require('axios'); + +const { endPoints, queryContract, sumTokens } = require('../helper/chain/cosmos'); +const { getChainTransform } = require('../helper/portedTokens'); + +const redBankAddress = 'osmo1c3ljch9dfw5kf52nfwpxd2zmj2ese7agnx0p9tenkrryasrle5sqf3ftpg'; +const creditManagerAddress = 'osmo1f2m24wktq0sw3c0lexlg7fv4kngwyttvzws3a3r3al9ld2s2pvds87jqvf'; + +async function osmosisTVL() { + let balances = {}; + await sumTokens({balances, owners: [redBankAddress], chain: 'osmosis'}); + await osmosisSumVaultsTVL(balances); + return balances; +} + +async function osmosisSumVaultsTVL(balances) { + let coins = []; + let vaultPagesRemaining = true; + let startAfter = null; + const pageLimit = 10; + const osmosisDenomTransform = await getChainTransform('osmosis'); + + while (vaultPagesRemaining) { + const fieldsVaultsInfo = await queryContract({ + contract: creditManagerAddress, + chain: 'osmosis', + data: { 'vaults_info': { limit: pageLimit, 'start_after': startAfter } } + }); + + if(fieldsVaultsInfo.length === pageLimit) { + startAfter = fieldsVaultsInfo[fieldsVaultsInfo.length - 1].vault; + vaultPagesRemaining = true + } else { + vaultPagesRemaining = false; } - } while (res.length != 0) - - const borrowed = {}; - lastResponse.forEach(i => { - sdk.util.sumSingleBalance(borrowed, i.denom, i.debt_total_scaled * i.borrow_index / 1e6) + + await osmosisAddCoinsForVaultsInfoPage(coins, fieldsVaultsInfo); + } + + coins.forEach(coin => { + sdk.util.sumSingleBalance(balances, osmosisDenomTransform(coin.denom), coin.amount); }) +} + +async function osmosisAddCoinsForVaultsInfoPage(coins, fieldsVaultsInfoPage) { + let vaultsMetadata = fieldsVaultsInfoPage.map(rvi => ({ fieldsVaultInfo: rvi })); + + // query the vault info for the vault contract itself to get the vault's + // base token + await Promise.all(vaultsMetadata.map(async vm => { + let vaultInfo = await queryContract({ + contract: vm.fieldsVaultInfo.vault.address, + chain: 'osmosis', + data: { 'info': {} } + }); + vm.vaultInfo = vaultInfo; + })); + + // get total vault shares owned by fields for each vault + await Promise.all(vaultsMetadata.map(async vm => { + let vaultShares = await queryContract({ + contract: creditManagerAddress, + chain: 'osmosis', + data: { 'total_vault_coin_balance': { vault: vm.fieldsVaultInfo.vault } } + }); + vm.vaultShares = vaultShares; + })); + + // convert vault shares to vault base asset + await Promise.all(vaultsMetadata.map( async vm => { + let query = { + contract: vm.fieldsVaultInfo.vault.address, + chain: 'osmosis', + data: { 'convert_to_assets': { amount: vm.vaultShares } } + }; + let amount = await queryContract(query); + vm.baseTokenAmount = amount; + })); + + // Add coins to then be added to balances + // * For gamm lp tokens compute the share of underlying assets and add those + // * For other assets, add as is + await Promise.all(vaultsMetadata.map( async vm => { + const baseToken = vm.vaultInfo['base_token']; + if (baseToken.startsWith('gamm/pool/')) { + let poolId = baseToken.split('/')[2]; + const url = `osmosis/gamm/v1beta1/pools/${poolId}`; + const query = await cosmosLCDQuery(url, 'osmosis'); + const pool = query.pool; + pool['pool_assets'].forEach(asset => { + const denom = asset.token.denom; + const amount = asset.token.amount * vm.baseTokenAmount / pool['total_shares'].amount; + coins.push({denom, amount}); + }); + } else { + coins.push({denom: baseToken, amount: vm.baseTokenAmount}); + } + })); +} + +function getEndpoint(chain) { + if (!endPoints[chain]) throw new Error('Chain not found: ' + chain); + return endPoints[chain]; +} - return transformBalances(chain, borrowed) +async function cosmosLCDQuery(url, chain) { + let endpoint = `${getEndpoint(chain)}/${url}`; + let request = await axios.get(endpoint); + return request.data; } module.exports = { timetravel: false, - methodology: "sum up token balances in Mars smart contract in osmosis", + methodology: 'Sum up token balances in Red Bank smart contract and vault underlying assets in Fields smart contract', osmosis: { - tvl: sumTokensExport({ owner: contract }), - borrowed, + tvl: osmosisTVL, }, terra: { tvl: () => 0, }, hallmarks:[ - [1651881600, "UST depeg"], - [1675774800, "Relaunch on Osmosis"], + [1651881600, 'UST depeg'], + [1675774800, 'Relaunch on Osmosis'], ] }; From 8e5cdea2097043c064d23b519b678fdc84c1fb93 Mon Sep 17 00:00:00 2001 From: Kyli Date: Tue, 20 Jun 2023 15:25:59 +0800 Subject: [PATCH 0825/1354] feat: new tvl cal (#6582) * feat: new tvl cal * fix * fix * fix * fix * fix --------- Co-authored-by: Kyli Bing --- projects/hashmix/index.js | 49 +++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/projects/hashmix/index.js b/projects/hashmix/index.js index 7bf6d28453..baadd361e7 100644 --- a/projects/hashmix/index.js +++ b/projects/hashmix/index.js @@ -1,13 +1,52 @@ const POOL = "0x587A7eaE9b461ad724391Aa7195210e0547eD11d"; const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { get } = require("../helper/http"); +const BigNumber = require("bignumber.js"); +// const { sdk } = require("@defillama/sdk"); + +// async function tvl(_, _1, _2, { api }) { +// const totalBorrows = await api.call({ target: POOL, abi: "uint256:totalBorrows", }); +// const totalReserves = await api.call({ target: POOL, abi: "uint256:totalReserves", }); +// api.add(nullAddress, totalBorrows) +// api.add(nullAddress, totalReserves * -1) + +// return sumTokens2({ api, owner: POOL, tokens: [nullAddress]}); +// } async function tvl(_, _1, _2, { api }) { - const totalBorrows = await api.call({ target: POOL, abi: "uint256:totalBorrows", }); - const totalReserves = await api.call({ target: POOL, abi: "uint256:totalReserves", }); - api.add(nullAddress, totalBorrows) - api.add(nullAddress, totalReserves * -1) - return sumTokens2({ api, owner: POOL, tokens: [nullAddress]}); + let tvl = await get("https://fvm.hashmix.org/fevmapi/tvl"); + // let b = new BigNumber.BigNumber("337036288533616233281756"); + + api.add(nullAddress, tvl.data) + + return sumTokens2({ api, owner: POOL, tokens: [nullAddress] }); + + // const balances = {}; + // const bal = await sdk.api2.eth.getBalance({ target: POOL, chain: api.chain, decimals: api.decimals }); + // const totalBorrows = await sdk.api2.abi.call({ + // target: POOL, + // abi: "uint256:totalBorrows", + // chain: api.chain, + // }); + // const totalReserves = await sdk.api2.abi.call({ + // target: POOL, + // abi: "uint256:totalReserves", + // chain: api.chain, + // }); + + + // let b = new BigNumber.BigNumber(bal.output); + // b = b.plus(new BigNumber.BigNumber(totalBorrows)).minus(new BigNumber.BigNumber(totalReserves)); + + // sdk.util.sumSingleBalance( + // balances, + // nullAddress, + // b.toFixed(0), + // api.chain + // ); + + // return balances; } module.exports = { From e92bfaafea1592b2c98cd4fdf2c475b4e95c858c Mon Sep 17 00:00:00 2001 From: define Date: Tue, 20 Jun 2023 15:20:29 +0100 Subject: [PATCH 0826/1354] add correct graph uniswap v2 --- projects/uniswap-v2/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/uniswap-v2/index.js b/projects/uniswap-v2/index.js index 45ebbd5f84..567703e8d2 100644 --- a/projects/uniswap-v2/index.js +++ b/projects/uniswap-v2/index.js @@ -1,7 +1,7 @@ const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const v2graph = getChainTvl({ - ethereum: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswapv2' + ethereum: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v2-dev' }) module.exports = { From 8bd6e57a537921fcbd4ae06be176723e6d217346 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:51:22 +0200 Subject: [PATCH 0827/1354] update gnd --- projects/gnd-protocol/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/gnd-protocol/index.js b/projects/gnd-protocol/index.js index 95ed43b8cb..7646744ba9 100644 --- a/projects/gnd-protocol/index.js +++ b/projects/gnd-protocol/index.js @@ -11,6 +11,6 @@ async function tvl(_, _b, _cb, { api, }) { module.exports = { arbitrum: { tvl, - staking: staking('0x535ec56479892d9C02fe2Bb86CeBF7ed62E81131', '0x40ea7f6d6964413d4a26a0a268542dae9f55768e') + staking: staking('0x535ec56479892d9C02fe2Bb86CeBF7ed62E81131', ['0x40ea7f6d6964413d4a26a0a268542dae9f55768e', '0x40ea7f6d6964413d4a26a0a268542dae9f55768e']) } } \ No newline at end of file From f3b24bd456d6064d2de726519d0836f09a5cafc6 Mon Sep 17 00:00:00 2001 From: tonykcao <98124995+tonykcao@users.noreply.github.com> Date: Tue, 20 Jun 2023 23:04:03 +0700 Subject: [PATCH 0828/1354] added avax in GMD tvl (#6599) --- projects/gmd/index.js | 60 +++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/projects/gmd/index.js b/projects/gmd/index.js index 25b9711bb4..7148a96e56 100644 --- a/projects/gmd/index.js +++ b/projects/gmd/index.js @@ -1,29 +1,55 @@ const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); -const chain = 'arbitrum'; -const abi = 'uint256:totalUSDvaults' -const vault = "0xA7Ce4434A29549864a46fcE8662fD671c06BA49a"; -const vault2 = "0x8080B5cE6dfb49a6B86370d6982B3e2A86FBBb08"; -const stakingAdd = "0x48c81451d1fddeca84b47ff86f91708fa5c32e93"; -const EsGMDAddress = "0x49E050dF648E9477c7545fE1779B940f879B787A"; -const GMDaddress = "0x4945970EfeEc98D393b4b979b9bE265A3aE28A8B"; - -const Tvl = async (ts, _, { arbitrum: block }) => { + +const abi = 'uint256:totalUSDvaults'; + +const arbitrum_vault = "0xA7Ce4434A29549864a46fcE8662fD671c06BA49a"; +const arbitrum_vault2 = "0x8080B5cE6dfb49a6B86370d6982B3e2A86FBBb08"; +const arbitrum_staking = "0x48c81451d1fddeca84b47ff86f91708fa5c32e93"; +const arbitrum_GMD = "0x4945970EfeEc98D393b4b979b9bE265A3aE28A8B"; +const arbitrum_esGMD = "0x49E050dF648E9477c7545fE1779B940f879B787A"; + +const avax_vault = "0x5517c5F22177BcF7b320A2A5daF2334344eFb38C" +const avax_staking = "0x4f2c414b76fd9cd45c000af7a449ade4125740ce"; +const avax_GMD = "0x1FE70939c2cEc8F31E8F7729442658586B469972"; +const avax_esGMD = "0xeE788a8b015376eC0185e1e40140af03029C8763"; + +const calculateTvl = async (vaults, chain, block) => { const balances = {}; const bals = await sdk.api2.abi.multiCall({ - abi, calls: [vault, vault2], chain, block, - }) + abi, + calls: vaults, + chain, + block, + }); - bals.forEach(i =>sdk.util.sumSingleBalance(balances, 'tether', i/1e18, 'coingecko')) - return balances -} + bals.forEach((i) => + sdk.util.sumSingleBalance(balances, 'tether', i / 1e18, 'coingecko') + ); + + return balances; +}; module.exports = { misrepresentedTokens: true, - methodology: "staked gmd + vault balance", + methodology: 'staked gmd + vault balance', arbitrum: { - staking: staking(stakingAdd, [EsGMDAddress, GMDaddress]), - tvl: Tvl, + staking: staking(arbitrum_staking, [arbitrum_esGMD, arbitrum_GMD]), + tvl: async (ts, _, { arbitrum: block }) => + calculateTvl( + [arbitrum_vault, arbitrum_vault2], + 'arbitrum', + block + ), + }, + avax: { + staking: staking(avax_staking, [avax_esGMD, avax_GMD]), + tvl: async (ts, _, { avax: block }) => + calculateTvl( + [avax_vault], + 'avax', + block + ), }, }; From 1722cea72593225322a1246f05ac9e9839e67e4d Mon Sep 17 00:00:00 2001 From: ts <100044502+schroyar@users.noreply.github.com> Date: Tue, 20 Jun 2023 13:04:31 -0300 Subject: [PATCH 0829/1354] JonesDAO - Remove double counted USDC and add UVRT in Router (#6603) * Remove double counted USDC * remove unused import * remove console log --- projects/jones-dao/addresses.json | 3 ++- projects/jones-dao/index.js | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/projects/jones-dao/addresses.json b/projects/jones-dao/addresses.json index 3defe0d5d0..7f71b93152 100644 --- a/projects/jones-dao/addresses.json +++ b/projects/jones-dao/addresses.json @@ -51,5 +51,6 @@ }, "strategy": "0x15df56a82c194FeFEC9337C37A41964B69b584d5", "glpCompound": "0x7241bC8035b65865156DDb5EdEf3eB32874a3AF6", - "glp": "0x1aDDD80E6039594eE970E5872D247bf0414C8903" + "glp": "0x1aDDD80E6039594eE970E5872D247bf0414C8903", + "jonesGlpVaultRouter": "0x2F43c6475f1ecBD051cE486A9f3Ccc4b03F3d713" } \ No newline at end of file diff --git a/projects/jones-dao/index.js b/projects/jones-dao/index.js index 11f110f5ee..447995f782 100644 --- a/projects/jones-dao/index.js +++ b/projects/jones-dao/index.js @@ -4,7 +4,7 @@ const { stakings } = require("../helper/staking"); const addresses = require("./addresses.json"); const { sumTokens2 } = require("../helper/unwrapLPs"); const lockerABI = require("./locked.json"); -const sdk = require('@defillama/sdk') +const sdk = require('@defillama/sdk'); const jTokenToToken = { "0x662d0f9ff837a51cf89a1fe7e0882a906dac08a3": "arbitrum:" + ADDRESSES.arbitrum.WETH, // jETH @@ -29,18 +29,18 @@ async function tvl(timestamp, block, chainBlocks, { api }) { api.multiCall({ abi: 'uint256:totalAssets', calls: addresses.vaults }), ]) - const usdcBalance = await sdk.api.erc20.balanceOf({ - target: USDC, - owner: addresses.trackers.uvert.token, - chain: 'arbitrum', - block: chainBlocks['arbitrum'] + const uvrtBalance = await sdk.api.erc20.balanceOf({ + target: addresses.trackers.uvert.token, + owner: addresses.jonesGlpVaultRouter, + chain: 'arbitrum', + block: chainBlocks['arbitrum'] }).then(result => result.output) const toa = [] api.addTokens(tokens,bals) api.addTokens(vAssets,vBals) - api.addToken(USDC, usdcBalance) + api.addToken(addresses.trackers.uvert.token, uvrtBalance) Object.values(addresses.trackers).map(tracker => toa.push([tracker.token, tracker.holder])) toa.push([addresses.glp, addresses.strategy,]) From 5378e6e2967d37b2eb9a5001f438d8ee2ffb4f3c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 20 Jun 2023 23:02:19 +0200 Subject: [PATCH 0830/1354] update camelot --- projects/camelot-v2/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/camelot-v2/index.js b/projects/camelot-v2/index.js index 447ba8602c..736a4682aa 100644 --- a/projects/camelot-v2/index.js +++ b/projects/camelot-v2/index.js @@ -1,5 +1,13 @@ + const { uniV3Export } = require('../helper/uniswapV3') +const { mergeExports } = require('../helper/utils'); -module.exports = uniV3Export({ +const export1 = uniV3Export({ arbitrum: { factory: '0xd490f2f6990c0291597fd1247651b4e0dcf684dd', fromBlock: 75633510, isAlgebra: true, }, -}) \ No newline at end of file +}) + +const export2 = uniV3Export({ + arbitrum: { factory: '0x1a3c9B1d2F0529D97f2afC5136Cc23e58f1FD35B', fromBlock: 75633510, isAlgebra: true, }, +}) + +module.exports = mergeExports([export1, export2]); \ No newline at end of file From fb0aa8fd20c34dbc8c1b6e6cde7eea970182300f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 20 Jun 2023 22:49:27 +0100 Subject: [PATCH 0831/1354] add new adapter for stabl v2 --- projects/stabl-v2/abi.json | 5 +++++ projects/stabl-v2/index.js | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 projects/stabl-v2/abi.json create mode 100644 projects/stabl-v2/index.js diff --git a/projects/stabl-v2/abi.json b/projects/stabl-v2/abi.json new file mode 100644 index 0000000000..0d3c531577 --- /dev/null +++ b/projects/stabl-v2/abi.json @@ -0,0 +1,5 @@ +{ + "getAllAssets": "address[]:getAllAssets", + "checkBalance": "function checkBalance(address _asset) view returns (uint256 balance)", + "isSupportedAsset": "function supportsAsset(address _asset) view returns (bool)" + } \ No newline at end of file diff --git a/projects/stabl-v2/index.js b/projects/stabl-v2/index.js new file mode 100644 index 0000000000..302b9ac55b --- /dev/null +++ b/projects/stabl-v2/index.js @@ -0,0 +1,40 @@ +const sdk = require("@defillama/sdk"); +const abi = require("./abi.json"); + +const vault = "0x2D62f6D8288994c7900e9C359F8a72e84D17bfba"; + +const polygonTvl = async (timestamp, ethBlock, chainBlocks) => { + const balances = {}; + + // Account DAI, USDT and USDC backing up the minted OUSD + const stablecoins = ( + await sdk.api.abi.call({ + abi: abi.getAllAssets, + target: vault, + block: chainBlocks['polygon'], + chain: 'polygon' + }) + ).output; + + for (let i = 0; i < stablecoins.length; i++) { + const balance_stablecoin = ( + await sdk.api.abi.call({ + abi: abi.checkBalance, + target: vault, + params: stablecoins[i], + block: chainBlocks['polygon'], + chain: 'polygon' + }) + ).output; + + sdk.util.sumSingleBalance(balances, stablecoins[i], balance_stablecoin,'polygon'); + } + + return balances; +}; + +module.exports = { + polygon: { + tvl: polygonTvl, + }, +}; From 65cd355be80cb9ec3f82068d8b68db079760b5d7 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 20 Jun 2023 23:03:32 +0100 Subject: [PATCH 0832/1354] remove description --- projects/stabl-v2/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/stabl-v2/index.js b/projects/stabl-v2/index.js index 302b9ac55b..e013ecb186 100644 --- a/projects/stabl-v2/index.js +++ b/projects/stabl-v2/index.js @@ -6,7 +6,6 @@ const vault = "0x2D62f6D8288994c7900e9C359F8a72e84D17bfba"; const polygonTvl = async (timestamp, ethBlock, chainBlocks) => { const balances = {}; - // Account DAI, USDT and USDC backing up the minted OUSD const stablecoins = ( await sdk.api.abi.call({ abi: abi.getAllAssets, From 820411279467972afe164027ec09190517b7d965 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 20 Jun 2023 23:45:25 +0100 Subject: [PATCH 0833/1354] astaria whitehack --- projects/astaria/index.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/astaria/index.js b/projects/astaria/index.js index 617c276829..9d9fd4c051 100644 --- a/projects/astaria/index.js +++ b/projects/astaria/index.js @@ -5,6 +5,7 @@ const config = { ethereum: { factory: '0x197Bb6Cd6cC9E9ABBFdaBff23DE7435c51d1B7BE', fromBlock: 16935232 , ACT: '0x455ad0f677628ed40e7397fb41818f474e0e5afe' }, } +/* Object.keys(config).forEach(chain => { const { factory, fromBlock, ACT } = config[chain] module.exports[chain] = { @@ -52,4 +53,15 @@ Object.keys(config).forEach(chain => { tokens.forEach((token, i) => api.add(token, deposited[i] - liquidity[i])) }, } -}) \ No newline at end of file +}) +*/ + +module.exports={ + ethereum:{ + tvl: ()=>({}), + borrowed: ()=>({}), + }, + hallmarks:[ + [1687301106, "White hack"] + ] +} From f18c66df78d5dcd3ed1ee09b2dd0d90a3d500bf5 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Jun 2023 02:13:18 +0100 Subject: [PATCH 0834/1354] add gplx adapter --- projects/gplx/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/gplx/index.js diff --git a/projects/gplx/index.js b/projects/gplx/index.js new file mode 100644 index 0000000000..ea81658a64 --- /dev/null +++ b/projects/gplx/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + pulse:{ + tvl: gmxExports({ vault: '0xC2311efFE60b0dC2491148Ff1bd46F08D64ADC98', }) + } +}; \ No newline at end of file From 54e7abc1122a4712db6efbfa68ac824ec538ed54 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Jun 2023 04:35:28 +0100 Subject: [PATCH 0835/1354] add arbitrum and optimism --- projects/treasury/redacted.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/projects/treasury/redacted.js b/projects/treasury/redacted.js index 1f77e0d5f1..709976e9b1 100644 --- a/projects/treasury/redacted.js +++ b/projects/treasury/redacted.js @@ -3,6 +3,10 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x086c98855df3c78c6b481b6e1d47bef42e9ac36b" const treasury2 = "0xa52fd396891e7a74b641a2cb1a6999fcf56b077e" +const treasury3 = "0x42e39157ec770197013e619c0eea8e1139f332db" +const treasury4 = "0xa722ebccd25adb06e5d0190b240d1f4039839822" +const treasury5OP = "0x2e33a660742e813ad948fb9f7d682fe461e5fbf3" +const treasury6ARB = "0x64769c53ff91b83fe9830776a4b85a1f4e1edaad" const BTRF = "0xc55126051B22eBb829D00368f4B12Bde432de5Da" module.exports = treasuryExports({ @@ -16,9 +20,33 @@ module.exports = treasuryExports({ "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", ADDRESSES.ethereum.DAI, "0xaCe78D9BaB82b6B4783120Dba82aa10B040A14D9", - "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC" + "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC", + "0xd533a949740bb3306d119cc777fa900ba034cd52", ], ownTokens: [BTRF], - owners: [treasury, treasury2], + owners: [treasury, treasury2,treasury3,treasury4], + }, + optimism: { + tokens: [ + nullAddress, + ADDRESSES.optimism.OP, // USDT + "0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151", // DHT + ADDRESSES.optimism.USDC, // USDC + "0x3f56e0c36d275367b8c502090edf38289b3dea0d", // QI + "0x97513e975a7fa9072c72c92d8000b0db90b163c5", //BEETS + "0x39fde572a18448f8139b7788099f0a0740f51205", //OATH + "0x00a35fd824c717879bf370e70ac6868b95870dfb", //IB + "0x3c8b650257cfb5f272f799f5e2b4e65093a11a05", //VELO + ], + owners: [treasury5OP], + }, + arbitrum: { + tokens: [ + nullAddress, + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.USDC, // USDC + "0x10393c20975cf177a3513071bc110f7962cd67da", // JONES + ], + owners: [treasury6ARB], }, }); \ No newline at end of file From de09bca0c62a361cd55a6d725b5c3298c59b963c Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Jun 2023 06:59:07 +0100 Subject: [PATCH 0836/1354] add hallmark --- projects/atlas-fi/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/atlas-fi/index.js b/projects/atlas-fi/index.js index faad277373..a3309fcd00 100644 --- a/projects/atlas-fi/index.js +++ b/projects/atlas-fi/index.js @@ -23,6 +23,9 @@ async function tvl(_, _b, _cb, { api, }) { module.exports = { methodology: 'Sums the total value locked of all strategies in Atlas', + hallmarks: [ + [1681776000, "Rug Pull"] + ], arbitrum: { tvl, pool2: sumTokensExport({ useDefaultCoreAssets: true, owner: FARM_PROXY, tokens: ['0x4edaa03fc13f8f13c3290c3728f587760b12e381'], lps: ['0x4edaa03fc13f8f13c3290c3728f587760b12e381'] }), From 6630fa319880a70aa9fb82442e6c3b60940a7c58 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Jun 2023 07:04:41 +0100 Subject: [PATCH 0837/1354] add hallmark --- projects/jbc/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/jbc/index.js b/projects/jbc/index.js index 6f371dbf4f..0f32be4f1e 100644 --- a/projects/jbc/index.js +++ b/projects/jbc/index.js @@ -11,6 +11,9 @@ const tokensAndOwners = [ const lpToken = '0x85c6da933a7451bf2a6d836304b30967f3e76e11' module.exports = { + hallmarks: [ + [1681516800, "Rug Pull"] + ], arbitrum: { tvl: sumTokensExport({ tokensAndOwners }), pool2: pool2({ stakingContract: '0x0F6f73c7ecCE4FB9861E25dabde79CBA112550b3', lpToken, useDefaultCoreAssets: true, }), From acfe7902c4a6ea4e94021b5c87a5cca90e657647 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Jun 2023 07:11:22 +0100 Subject: [PATCH 0838/1354] add hallmark --- projects/twtstake/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/twtstake/index.js b/projects/twtstake/index.js index 6852e6b63b..f0bfae4ff6 100644 --- a/projects/twtstake/index.js +++ b/projects/twtstake/index.js @@ -3,6 +3,9 @@ const TWT_STAKE_CONTRACT = '0x5e7c3c55eb5c0ee10817d70e414f4b1ee22d5ce3'; const TWT_TOKEN_CONTRACT = '0x4b0f1812e5df2a09796481ff14017e6005508003'; module.exports = { + hallmarks: [ + [1681948800, "TWTStake Flagged on Twitter"] + ], timetravel: true, misrepresentedTokens: false, methodology: 'Counts the number of TWT tokens in the TWT Stake contract.', From 1e445a0293aa7860a74b548aa61ed5b18e859010 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Jun 2023 10:08:38 +0200 Subject: [PATCH 0839/1354] add github details to PR form --- pull_request_template.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pull_request_template.md b/pull_request_template.md index 2348308298..efc392486a 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -59,3 +59,5 @@ ##### methodology (what is being counted as tvl, how is tvl being calculated): + +##### Github org/user (Optional, if your code is open source, we can track activity): \ No newline at end of file From ddd7a5265e711f06938ad5cf30efd9bcdbbed462 Mon Sep 17 00:00:00 2001 From: Brdd Mnk Date: Wed, 21 Jun 2023 11:19:45 +0300 Subject: [PATCH 0840/1354] add new Sushi strategy and combine MIM + Sushi in arbitrum and add new Aura strategy in ethereum (#6604) * new strategy * add new Sushi strategy and combine MIM + Sushi in arbitrum and add new Aura strategy in ethereum --- projects/parallax/abis/prllxERC20.json | 4 + projects/parallax/contracts.json | 26 ++++ projects/parallax/getPrice.js | 89 ++++++++++++++ projects/parallax/index.js | 162 +++++++++++++++++++++---- 4 files changed, 260 insertions(+), 21 deletions(-) create mode 100644 projects/parallax/abis/prllxERC20.json create mode 100644 projects/parallax/contracts.json create mode 100644 projects/parallax/getPrice.js diff --git a/projects/parallax/abis/prllxERC20.json b/projects/parallax/abis/prllxERC20.json new file mode 100644 index 0000000000..ba0a575e0d --- /dev/null +++ b/projects/parallax/abis/prllxERC20.json @@ -0,0 +1,4 @@ +{ + "strategyToId": "function strategyToId(address) view returns (uint256)", + "strategies": "function strategies(uint256) view returns (tuple fees, uint256 totalDeposited, uint256 totalStaked, uint256 lastCompoundTimestamp, uint256 cap, uint256 rewardPerBlock, uint256 rewardPerShare, uint256 lastUpdatedBlockNumber, address strategy, uint32 timelock, bool isActive, address rewardToken, uint256 usersCount)" +} \ No newline at end of file diff --git a/projects/parallax/contracts.json b/projects/parallax/contracts.json new file mode 100644 index 0000000000..fe1e98e7e7 --- /dev/null +++ b/projects/parallax/contracts.json @@ -0,0 +1,26 @@ +{ + "eth": { + "parallaxAddress": "0xd8935F1369E1dAc77CD37e664BC13ffdd741B962", + "strategyAddress": "0x9E6121e89dD50B5D02362A9fdb7EC1fAd3D15725", + "lpAddress": "0x5aee1e99fe86960377de9f88689616916d5dcabe", + "feedAddress": "0x5f4ec3df9cbd43714fe2740f5e3616155c5b8419", + "usdc": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + }, + "arbitrum": { + "mim": { + "parallaxCoreAddress": "0x07F78cC2668F9Bb152c4026E801df68Ed3AB9858", + "strategyAddress": "0xbf81Ba9D10F96ce0bb1206DE5F2d5B363f9796A9", + "parallaxCoreAddressOld": "0x74A819d4925dC9f473F398863666Ac787B48e1d0", + "strategyAddressOld": "0x7b8eFCd93ee71A0480Ad4dB06849B75573168AF4", + "lpAddresss": "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7", + "usdc": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" + }, + "sushi": { + "parallaxAddr": "0xDCBEA8b2142Fe5E97BE9545FCFB30af812685Fb6", + "strategyAddrSushi": "0xb53BbF686b600857B209B863c1Bce2C83acef123", + "strategyAddrGMX": "0xF7caD5Ec40b5980Bd741346eAeE019c6E2b5D373", + "parallaxBackendAddr": "0x1724623a721a094f8Ba9d271c9BE8be83e64f74f", + "usdc": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8" + } + } +} \ No newline at end of file diff --git a/projects/parallax/getPrice.js b/projects/parallax/getPrice.js new file mode 100644 index 0000000000..1c859d4ebb --- /dev/null +++ b/projects/parallax/getPrice.js @@ -0,0 +1,89 @@ +const get_virtual_price = "function get_virtual_price() view returns (uint256)"; +const getRate = "function getRate() view returns (uint256)"; +const latestRoundData = + "function latestRoundData() view returns (uint80 roundId,int256 answer,uint256 startedAt,uint256 updatedAt,uint80 answeredInRound)"; +const getPrice = "function getPrice() view returns (uint256 sushi,uint256 gmx)"; +const { default: BigNumber } = require("bignumber.js"); + +const getPriceMIM = async (tokenAddress, api) => { + const priceLpWei = await api.call({ + target: tokenAddress, + abi: get_virtual_price, + }) + + const decimals = await api.call({ + target: tokenAddress, + abi: "erc20:decimals", + }) + + const tokenPrice = new BigNumber(priceLpWei).div(`1e${decimals}`); + + return { + price: tokenPrice, + decimals, + }; +}; + +const getPriceAura = async ( + tokenAddress, + feedAddress, + api +) => { + const decimals = + await api.call({ + target: tokenAddress, + abi: "erc20:decimals", + }) + + const rate = + await api.call({ + target: tokenAddress, + abi: getRate, + }) + + const getLatestRoundData = + await api.call({ + target: feedAddress, + abi: latestRoundData, + }) + + const ethPriceInUSD = parseInt(getLatestRoundData.answer) / 10 ** 8; + const priceETH = new BigNumber(rate).div(`1e${decimals}`); + + const tokenPrice = new BigNumber(priceETH * ethPriceInUSD).div( + `1e${decimals}` + ); + + return { + price: tokenPrice, + decimals, + }; +}; + +const getPriceSushi = async (backendAddress, api) => { + const sushiDecimals = 14, + gmxDecimals = 8; + + const sushiGmxPrice = await api.call({ + target: backendAddress, + abi: getPrice, + }) + + const sushiPrice = new BigNumber(sushiGmxPrice.sushi).div( + `1e${sushiDecimals}` + ); + const gmxPrice = new BigNumber(sushiGmxPrice.gmx).div(`1e${gmxDecimals}`); + + return { + sushiPrice: sushiPrice, + gmxPrice: gmxPrice, + sushiDecimals, + gmxDecimals, + }; +}; + +module.exports = { + getPriceMIM, + getPriceAura, + getPriceSushi, +}; diff --git a/projects/parallax/index.js b/projects/parallax/index.js index 94b445f130..c5dbe95a58 100644 --- a/projects/parallax/index.js +++ b/projects/parallax/index.js @@ -1,30 +1,150 @@ -async function tvl(time, _ethBlock, _1, { api }) { - await Promise.all([addMIMStrategy(api)]); +const sdk = require("@defillama/sdk"); +const { default: BigNumber } = require("bignumber.js"); + +const { getPriceMIM, getPriceAura, getPriceSushi } = require("./getPrice"); + +const prllxERC20 = require("./abis/prllxERC20.json"); +const contracts = require("./contracts.json"); + +async function ethTvl(time, _ethBlock, { ethereum: block }, { api }) { + const strategyId = await api.call({ + target: contracts.eth.parallaxAddress, + params: contracts.eth.strategyAddress, + abi: prllxERC20["strategyToId"], + }) + + const strategy = await api.call({ + target: contracts.eth.parallaxAddress, + params: strategyId, + abi: prllxERC20["strategies"], + }) + + const balances = {}; + const { price, decimals } = await getPriceAura(contracts.eth.lpAddress, contracts.eth.feedAddress, api,); + + // const totalStaked = new BigNumber(strategy.totalStaked).div(`1e${decimals}`); + const totalStakedTVL = price + .times(strategy.totalStaked) + .times(1e6) + .toFixed(0); + + sdk.util.sumSingleBalance( + balances, + `ethereum:${contracts.eth.usdc}`, + totalStakedTVL + ); + + return balances; } -async function addMIMStrategy(api) { - const token = "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7"; - const sorbettiere = "0x839de324a1ab773f76a53900d70ac1b913d2b387"; - // const strategy = "0x7b8eFCd93ee71A0480Ad4dB06849B75573168AF4"; - const strategies = [ - "0x7b8eFCd93ee71A0480Ad4dB06849B75573168AF4", - "0xbf81Ba9D10F96ce0bb1206DE5F2d5B363f9796A9", - ]; - for (let iterator = 0; iterator < strategies.length; iterator++) { - const strategy = strategies[iterator]; - const [bal] = await api.call({ - abi: "function userInfo(uint256, address) view returns (uint256,uint256,uint256)", - target: sorbettiere, - params: [0, strategy], - }); - - api.add(token, bal); - } +async function arbitrumTvl(time, _ethBlock, { arbitrum: block }, { api }) { + const balances = {}; + + const strategyId = await api.call({ + target: contracts.arbitrum.mim.parallaxCoreAddress, + params: contracts.arbitrum.mim.strategyAddress, + abi: prllxERC20["strategyToId"], + }) + + const strategy = await api.call({ + target: contracts.arbitrum.mim.parallaxCoreAddress, + params: strategyId, + abi: prllxERC20["strategies"], + }) + + const { price, decimals } = await getPriceMIM(contracts.arbitrum.mim.lpAddresss, api); + + const totalStaked = new BigNumber(strategy.totalStaked).div(`1e${decimals}`); + const totalStakedTVLMIM = price.times(totalStaked).times(1e6).toFixed(0); + + const strategyIdOld = await api.call({ + target: contracts.arbitrum.mim.parallaxCoreAddressOld, + params: contracts.arbitrum.mim.strategyAddressOld, + abi: prllxERC20["strategyToId"], + }) + + const strategyOld = + await api.call({ + target: contracts.arbitrum.mim.parallaxCoreAddressOld, + params: strategyIdOld, + abi: prllxERC20["strategies"], + }) + + const totalStakedOld = new BigNumber(strategyOld.totalStaked).div( + `1e${decimals}` + ); + const totalStakedTVLMIMOld = price + .times(totalStakedOld) + .times(1e6) + .toFixed(0); + + const totalStakedTVLMIMAll = + Number(totalStakedTVLMIM) + Number(totalStakedTVLMIMOld); + + sdk.util.sumSingleBalance( + balances, + `arbitrum:${contracts.arbitrum.mim.usdc}`, + totalStakedTVLMIMAll + ); + + const strategySushiId = + await api.call({ + target: contracts.arbitrum.sushi.parallaxAddr, + params: contracts.arbitrum.sushi.strategyAddrSushi, + abi: prllxERC20["strategyToId"], + }) + + const strategyGmxId = await api.call({ + target: contracts.arbitrum.sushi.parallaxAddr, + params: contracts.arbitrum.sushi.strategyAddrGMX, + abi: prllxERC20["strategyToId"], + }) + + const strategySushi = await api.call({ + target: contracts.arbitrum.sushi.parallaxAddr, + params: strategySushiId, + abi: prllxERC20["strategies"], + }) + + const strategyGmx = await api.call({ + target: contracts.arbitrum.sushi.parallaxAddr, + params: strategyGmxId, + abi: prllxERC20["strategies"], + }) + + const { sushiPrice, gmxPrice, sushiDecimals, gmxDecimals } = await getPriceSushi(contracts.arbitrum.sushi.parallaxBackendAddr, api,); + + const totalStakedSushi = new BigNumber(strategySushi.totalStaked).div(`1e18`); + const totalStakedGmx = new BigNumber(strategyGmx.totalStaked).div(`1e18`); + + const totalStakedTVLSushi = sushiPrice + .times(totalStakedSushi) + .times(1e6) + .toFixed(0); + + const totalStakedTVLGmx = gmxPrice + .times(totalStakedGmx) + .times(1e6) + .toFixed(0); + + const totalStakedTVL = + Number(totalStakedTVLSushi) + Number(totalStakedTVLGmx); + + sdk.util.sumSingleBalance( + balances, + `arbitrum:${contracts.arbitrum.sushi.usdc}`, + totalStakedTVL + ); + + return balances; } module.exports = { methodology: "TVL comes from the Staking Vaults", arbitrum: { - tvl, + tvl: arbitrumTvl, + }, + ethereum: { + tvl: ethTvl, }, }; From 181a9e4020f1963ab02df4abc2907468c780833d Mon Sep 17 00:00:00 2001 From: Full Stack Developer Date: Wed, 21 Jun 2023 16:20:55 +0800 Subject: [PATCH 0841/1354] update vault addresses (#6605) --- projects/equito-finance/index.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/projects/equito-finance/index.js b/projects/equito-finance/index.js index 5f2410f455..5ae93486b5 100644 --- a/projects/equito-finance/index.js +++ b/projects/equito-finance/index.js @@ -2,9 +2,15 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokensExport } = require("../helper/sumTokens"); // Addresses -const ALGO_VAULT = "XYE5SU66M6JV24REYQJMXUMIWK54X5I6TWYP25RIA3NH7YEEY6UPPWM3RY"; -const ETH_VAULT = "0x274af57Cc969cA96980BA043332D4fb79F496708"; -const BSC_VAULT = "0x9Aa09a1D7ACD6Bb7b4bB5ae4c6F91279E78502a8"; +const ALGO_VAULT1 = + "XYE5SU66M6JV24REYQJMXUMIWK54X5I6TWYP25RIA3NH7YEEY6UPPWM3RY"; +const ETH_VAULT1 = "0x274af57Cc969cA96980BA043332D4fb79F496708"; +const BSC_VAULT1 = "0x9Aa09a1D7ACD6Bb7b4bB5ae4c6F91279E78502a8"; + +const ALGO_VAULT2 = + "56CF35MFZHMCWTVJZLNBTP62UJKFRRKW47GTSOVATZONVEZ6ASSWRWOOHM"; +const ETH_VAULT2 = "0x4d753245f273e119Be944Ae180A17DfE35258e1e"; +const BSC_VAULT2 = "0x7aFeCFABBA462121262D81d764e289aB77966aec"; module.exports = { hallmarks: [ @@ -13,7 +19,17 @@ module.exports = { ], methodology: "TVL counts native tokens locked in EquitoFinance bridge vaults.", - algorand: { tvl: sumTokensExport({ owner: ALGO_VAULT,}) }, - ethereum: { tvl: sumTokensExport({ owner: ETH_VAULT, tokens: [ADDRESSES.null]}) }, - bsc: { tvl: sumTokensExport({ owner: BSC_VAULT, tokens: [ADDRESSES.null]}) }, + algorand: { tvl: sumTokensExport({ owners: [ALGO_VAULT1, ALGO_VAULT2] }) }, + ethereum: { + tvl: sumTokensExport({ + owners: [ETH_VAULT1, ETH_VAULT2], + tokens: [ADDRESSES.null], + }), + }, + bsc: { + tvl: sumTokensExport({ + owners: [BSC_VAULT1, BSC_VAULT2], + tokens: [ADDRESSES.null], + }), + }, }; From 9d04fd4d6a56378a1aac19a12b1b38bd931d42fd Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Wed, 21 Jun 2023 01:22:17 -0700 Subject: [PATCH 0842/1354] Update index.js (#6606) Add Stellaswap, Sushiswap, Ramses --- projects/visor/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/visor/index.js b/projects/visor/index.js index bd831603b7..bc6d11f0e2 100644 --- a/projects/visor/index.js +++ b/projects/visor/index.js @@ -25,6 +25,7 @@ const HYPE_REGISTRY = { "0x0Ac4C7b794f3D7e7bF1093A4f179bA792CF15055", // Uniswap "0xAeC731F69Fa39aD84c7749E913e3bC227427Adfd", // Quickswap "0xcAC19d43C9558753d7535978A370055614Ce832E", // Retro + "0x97686103B3E7238Ca6c2C439146B30adBd84a593", // Sushiswap ], polygon_zkevm: [ "0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", // Quickswap @@ -35,6 +36,9 @@ const HYPE_REGISTRY = { arbitrum: [ "0x66CD859053c458688044d816117D5Bdf42A56813", // Uniswap "0x37595FCaF29E4fBAc0f7C1863E3dF2Fe6e2247e9", // Zyberswap + "0x0f867F14b39a5892A39841a03bA573426DE4b1d0", // Sushiswap + "0x34Ffbd9Db6B9bD8b095A0d156de69a2AD2944666", // Ramses + "0xa216C2b6554A0293f69A1555dd22f4b7e60Fe907", // Camelot ], bsc: [ "0x0b4645179C1b668464Df01362fC6219a7ab3234c", // Uniswap @@ -42,6 +46,7 @@ const HYPE_REGISTRY = { ], moonbeam: [ "0xB7dfC304D9cd88D98A262cE5B6a39Bb9d6611063", // Beamswap + "0x6002D7714e8038f2058e8162b0b86c0b19c31908", // Stellaswap ], celo: [ "0x0F548d7AD1A0CB30D1872b8C18894484d76e1569", // Uniswap From b90ae94ccb0fb90aa745741a73960e6bbc0b45b8 Mon Sep 17 00:00:00 2001 From: Cian <96416801+NatureLab@users.noreply.github.com> Date: Wed, 21 Jun 2023 17:00:23 +0800 Subject: [PATCH 0843/1354] Add optimism data for cian. (#6609) * Add arbitrum data for cian. * Add optimism for cian. --- projects/cian/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/cian/index.js b/projects/cian/index.js index 62506014f0..474631f237 100644 --- a/projects/cian/index.js +++ b/projects/cian/index.js @@ -25,6 +25,13 @@ async function fetchArbitrum() { return toUSDTBalances(value); } +async function fetchOptimism() { + const value = await get("https://data.cian.app/optimism/api/v1/tvl"); + + return toUSDTBalances(value); +} + + module.exports = { misrepresentedTokens: true, doublecounted: true, @@ -41,4 +48,7 @@ module.exports = { arbitrum: { tvl: fetchArbitrum, }, + optimism: { + tvl: fetchOptimism, + }, }; From eb2e3486bdc5c8cfdf0c4ba318e2316c1bcbcf0c Mon Sep 17 00:00:00 2001 From: Brdd Mnk Date: Wed, 21 Jun 2023 13:31:07 +0300 Subject: [PATCH 0844/1354] removed old strategy contracts (#6610) * new strategy * add new Sushi strategy and combine MIM + Sushi in arbitrum and add new Aura strategy in ethereum * code refactor * remove old contracts --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/parallax/index.js | 87 ++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/projects/parallax/index.js b/projects/parallax/index.js index c5dbe95a58..100250b8a7 100644 --- a/projects/parallax/index.js +++ b/projects/parallax/index.js @@ -11,16 +11,20 @@ async function ethTvl(time, _ethBlock, { ethereum: block }, { api }) { target: contracts.eth.parallaxAddress, params: contracts.eth.strategyAddress, abi: prllxERC20["strategyToId"], - }) + }); const strategy = await api.call({ target: contracts.eth.parallaxAddress, params: strategyId, abi: prllxERC20["strategies"], - }) + }); const balances = {}; - const { price, decimals } = await getPriceAura(contracts.eth.lpAddress, contracts.eth.feedAddress, api,); + const { price, decimals } = await getPriceAura( + contracts.eth.lpAddress, + contracts.eth.feedAddress, + api + ); // const totalStaked = new BigNumber(strategy.totalStaked).div(`1e${decimals}`); const totalStakedTVL = price @@ -44,75 +48,78 @@ async function arbitrumTvl(time, _ethBlock, { arbitrum: block }, { api }) { target: contracts.arbitrum.mim.parallaxCoreAddress, params: contracts.arbitrum.mim.strategyAddress, abi: prllxERC20["strategyToId"], - }) + }); const strategy = await api.call({ target: contracts.arbitrum.mim.parallaxCoreAddress, params: strategyId, abi: prllxERC20["strategies"], - }) + }); - const { price, decimals } = await getPriceMIM(contracts.arbitrum.mim.lpAddresss, api); + const { price, decimals } = await getPriceMIM( + contracts.arbitrum.mim.lpAddresss, + api + ); const totalStaked = new BigNumber(strategy.totalStaked).div(`1e${decimals}`); const totalStakedTVLMIM = price.times(totalStaked).times(1e6).toFixed(0); - const strategyIdOld = await api.call({ - target: contracts.arbitrum.mim.parallaxCoreAddressOld, - params: contracts.arbitrum.mim.strategyAddressOld, - abi: prllxERC20["strategyToId"], - }) - - const strategyOld = - await api.call({ - target: contracts.arbitrum.mim.parallaxCoreAddressOld, - params: strategyIdOld, - abi: prllxERC20["strategies"], - }) - - const totalStakedOld = new BigNumber(strategyOld.totalStaked).div( - `1e${decimals}` - ); - const totalStakedTVLMIMOld = price - .times(totalStakedOld) - .times(1e6) - .toFixed(0); - - const totalStakedTVLMIMAll = - Number(totalStakedTVLMIM) + Number(totalStakedTVLMIMOld); + // const strategyIdOld = await api.call({ + // target: contracts.arbitrum.mim.parallaxCoreAddressOld, + // params: contracts.arbitrum.mim.strategyAddressOld, + // abi: prllxERC20["strategyToId"], + // }) + // + // const strategyOld = + // await api.call({ + // target: contracts.arbitrum.mim.parallaxCoreAddressOld, + // params: strategyIdOld, + // abi: prllxERC20["strategies"], + // }) + // + // const totalStakedOld = new BigNumber(strategyOld.totalStaked).div( + // `1e${decimals}` + // ); + // const totalStakedTVLMIMOld = price + // .times(totalStakedOld) + // .times(1e6) + // .toFixed(0); + + // const totalStakedTVLMIMAll = + // Number(totalStakedTVLMIM) + Number(totalStakedTVLMIMOld); sdk.util.sumSingleBalance( balances, `arbitrum:${contracts.arbitrum.mim.usdc}`, - totalStakedTVLMIMAll + totalStakedTVLMIM ); - const strategySushiId = - await api.call({ - target: contracts.arbitrum.sushi.parallaxAddr, - params: contracts.arbitrum.sushi.strategyAddrSushi, - abi: prllxERC20["strategyToId"], - }) + const strategySushiId = await api.call({ + target: contracts.arbitrum.sushi.parallaxAddr, + params: contracts.arbitrum.sushi.strategyAddrSushi, + abi: prllxERC20["strategyToId"], + }); const strategyGmxId = await api.call({ target: contracts.arbitrum.sushi.parallaxAddr, params: contracts.arbitrum.sushi.strategyAddrGMX, abi: prllxERC20["strategyToId"], - }) + }); const strategySushi = await api.call({ target: contracts.arbitrum.sushi.parallaxAddr, params: strategySushiId, abi: prllxERC20["strategies"], - }) + }); const strategyGmx = await api.call({ target: contracts.arbitrum.sushi.parallaxAddr, params: strategyGmxId, abi: prllxERC20["strategies"], - }) + }); - const { sushiPrice, gmxPrice, sushiDecimals, gmxDecimals } = await getPriceSushi(contracts.arbitrum.sushi.parallaxBackendAddr, api,); + const { sushiPrice, gmxPrice, sushiDecimals, gmxDecimals } = + await getPriceSushi(contracts.arbitrum.sushi.parallaxBackendAddr, api); const totalStakedSushi = new BigNumber(strategySushi.totalStaked).div(`1e18`); const totalStakedGmx = new BigNumber(strategyGmx.totalStaked).div(`1e18`); From 55ea0814f9ca690e5ec1866f334a2288447da2f7 Mon Sep 17 00:00:00 2001 From: young Date: Wed, 21 Jun 2023 18:32:13 +0800 Subject: [PATCH 0845/1354] =?UTF-8?q?MineFi=EF=BC=9AThe=20TVL=20adapter=20?= =?UTF-8?q?was=20added=20for=20the=20first=20time=20(#6607)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 项目初始化 * 变更tvl合约地址 * 修复测试不通过的问题 --------- Co-authored-by: Young --- projects/MineFi/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/MineFi/index.js diff --git a/projects/MineFi/index.js b/projects/MineFi/index.js new file mode 100644 index 0000000000..d853f5d55e --- /dev/null +++ b/projects/MineFi/index.js @@ -0,0 +1,24 @@ +const sdk = require('@defillama/sdk'); +const ADDRESSES = require('../helper/coreAssets.json') +const MINEFI_CONTRACT = "0xeCa50369cb0cDBaE173C9c81c1B48212adc4b501"; + +async function tvl(_, _1, _2, { api }) { + + const collateralBalance = await api.call({ + abi: 'function getTvl() external view returns (uint256)', + target: MINEFI_CONTRACT, + }); + + api.add(ADDRESSES.null,collateralBalance) +} + + + +module.exports = { + timetravel: false, + misrepresentedTokens: false, + methodology: 'counts the number of pledge filecoins in the minefi contract', + filecoin: { + tvl + } +}; \ No newline at end of file From 9a9f1b6c2644d811de242cbc432ad561ca115594 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Jun 2023 17:14:35 +0100 Subject: [PATCH 0846/1354] add hallmark --- projects/gplx/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/gplx/index.js b/projects/gplx/index.js index ea81658a64..1d18f4a403 100644 --- a/projects/gplx/index.js +++ b/projects/gplx/index.js @@ -1,6 +1,9 @@ const { gmxExports } = require('../helper/gmx') module.exports = { + hallmarks: [ + [1687320000, "Token supply compromise"] + ], pulse:{ tvl: gmxExports({ vault: '0xC2311efFE60b0dC2491148Ff1bd46F08D64ADC98', }) } From c71cfa30545d76a4d1b21b6bfc66d9bfaabe9092 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Jun 2023 20:17:43 +0100 Subject: [PATCH 0847/1354] add hallmarks --- projects/KyborgExchange/index.js | 3 +++ projects/Zolidly/index.js | 3 +++ projects/avatr/index.js | 3 +++ projects/zks-miner/index.js | 3 +++ 4 files changed, 12 insertions(+) diff --git a/projects/KyborgExchange/index.js b/projects/KyborgExchange/index.js index b1559929ba..bf26c8fa31 100644 --- a/projects/KyborgExchange/index.js +++ b/projects/KyborgExchange/index.js @@ -6,6 +6,9 @@ const config = { } module.exports = { + hallmarks: [ + [1684108800, "Rug Pull"] + ], methodology: `Counts the tokens balances of the KyborgHub contract`, }; diff --git a/projects/Zolidly/index.js b/projects/Zolidly/index.js index 5dc7396048..ebb6c6a558 100644 --- a/projects/Zolidly/index.js +++ b/projects/Zolidly/index.js @@ -2,6 +2,9 @@ const { getUniTVL } = require('../helper/unknownTokens'); module.exports = { misrepresentedTokens: true, + hallmarks: [ + [1684713600, "Rug Pull"] + ], era: { tvl: getUniTVL({ factory: '0x6E1315819908Eaa036405f405c033cC2BfFBFc75', diff --git a/projects/avatr/index.js b/projects/avatr/index.js index 5b0fd50509..e73fd8cec0 100644 --- a/projects/avatr/index.js +++ b/projects/avatr/index.js @@ -23,6 +23,9 @@ async function tvl(timestamp, block, chainBlocks, { api }) { } module.exports = { + hallmarks: [ + [1682726400, "Rug Pull"] + ], ethereum: { tvl, }, diff --git a/projects/zks-miner/index.js b/projects/zks-miner/index.js index c69d66fc5c..9591eaf13e 100644 --- a/projects/zks-miner/index.js +++ b/projects/zks-miner/index.js @@ -6,6 +6,9 @@ const DIAMOND_MINER = "0x755747467d97619a670e228eBEc8eFE285c37F01"; const GOLD_MINER = "0x340e443C85ecd7eB1E918744D4A35A1e6101bbd4"; module.exports = { + hallmarks: [ + [1682726400, "Rug Pull"] + ], methodology: 'TLV silver, diamond and gold is total amount miner deposit to contract silver, diamond and gold', era: { tvl: sumTokensExport({ owners: [SILVER_MINER, DIAMOND_MINER, GOLD_MINER,], tokens: [nullAddress] }) From d7f00696d57f77de81f04868913721cbdffa49df Mon Sep 17 00:00:00 2001 From: PinjamLabs <125521147+PinjamLabs@users.noreply.github.com> Date: Thu, 22 Jun 2023 05:20:14 +0800 Subject: [PATCH 0848/1354] added pinjam project (#6600) * added pinjam project * pinjam: code refactor --------- Co-authored-by: joseph Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pinjam/index.js | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 projects/pinjam/index.js diff --git a/projects/pinjam/index.js b/projects/pinjam/index.js new file mode 100644 index 0000000000..c9f719f286 --- /dev/null +++ b/projects/pinjam/index.js @@ -0,0 +1,57 @@ +const { getLogs, getAddress } = require('../helper/cache/getLogs') +const { staking } = require("../helper/staking"); + +const stakingContract = "0x6413707acd0eF29E54e4f7eE931bb00575868eA4"; +const PINKAV = "0xE5274E38E91b615D8822e8512a29A16FF1B9C4Af"; +const config = { + kava: { lendingPool: "0x11C3D91259b1c2Bd804344355C6A255001F7Ba1e", fromBlock: 5281411, }, +}; + +async function getTokens(api) { + const { lendingPool, fromBlock } = config[api.chain] + const logs = await getLogs({ + api, + target: lendingPool, + topics: ['0x9f8f649e3f624ae845ed20c597f2841f852ba62903a53736c2b36d67869ca919'], + fromBlock, + }) + return logs.map(log => getAddress(log.topics[1])) +} + +async function tvl(_, _b, _cb, { api, }) { + const { lendingPool } = config[api.chain] + const tokens = await getTokens(api) + const bals = await api.multiCall({ abi: abi.getTotalLiquidity, calls: tokens, target: lendingPool }) + const borrows = await api.multiCall({ abi: abi.getTotalDebt, calls: tokens, target: lendingPool }) + api.addTokens(tokens, bals) + api.addTokens(tokens, borrows.map(i => i * -1)) +} + +async function borrowed(_, _b, _cb, { api, }) { + const { lendingPool } = config[api.chain] + const tokens = await getTokens(api) + const bals = await api.multiCall({ abi: abi.getTotalDebt, calls: tokens, target: lendingPool }) + api.addTokens(tokens, bals) +} + +module.exports = { + methodology: + "Counts the total tokens supplied to the lending pool and the total tokens borrowed from the lending pool.", + kava: { + staking: staking(stakingContract, PINKAV), + }, +}; + + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + ...(module.exports[chain] || {}), + tvl, borrowed, + } +}) + +const abi = { + "getSupportedAsset": "function getSupportedAsset(uint256 _index) view returns (address)", + "getTotalDebt": "function getTotalDebt(address _underlyingAsset) view returns (uint256)", + "getTotalLiquidity": "function getTotalLiquidity(address _underlyingAsset) view returns (uint256)", +} From 43a23043724c8a55390eca9fbca7fda37574729e Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 22 Jun 2023 00:15:26 +0100 Subject: [PATCH 0849/1354] update staking address --- projects/mayfair/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/mayfair/index.js b/projects/mayfair/index.js index 2ba744db36..57eb0a2088 100644 --- a/projects/mayfair/index.js +++ b/projects/mayfair/index.js @@ -1,7 +1,7 @@ const { staking } = require('../helper/staking'); -const token = "0xF9DF075716B2D9B95616341DC6bC64c85e56645c"; -const masterchef = "0xe401c80962c521E751454Fc1C9ff34014e0b8FFB"; +const token = "0xf9df075716b2d9b95616341dc6bc64c85e56645c"; +const masterchef = "0x5F54638dade598B9c478EcaB330C3E62861d00C1"; module.exports = { arbitrum: { From e1903683a389bb1f680a8477893a16fcb43e6fda Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 22 Jun 2023 03:28:18 +0100 Subject: [PATCH 0850/1354] add hallmarks --- projects/cemetery/index.js | 3 +++ projects/fdoge/index.js | 3 +++ projects/nightmare/index.js | 3 +++ projects/one-ring/index.js | 3 +++ projects/treehousefinance/index.js | 3 +++ projects/valleyswap/index.js | 7 ++++--- 6 files changed, 19 insertions(+), 3 deletions(-) diff --git a/projects/cemetery/index.js b/projects/cemetery/index.js index 3e5da33525..cf94ed9664 100644 --- a/projects/cemetery/index.js +++ b/projects/cemetery/index.js @@ -19,6 +19,9 @@ async function tvl(timestamp, block, chainBlocks) { module.exports = { methodology: "TVL includes all farms in MasterChef contract", + hallmarks: [ + [1646524800,"Rug Pull"] + ], fantom: { tvl, staking: staking(hauntchef, haunt, "fantom"), diff --git a/projects/fdoge/index.js b/projects/fdoge/index.js index 7003938ba6..88bb0528be 100644 --- a/projects/fdoge/index.js +++ b/projects/fdoge/index.js @@ -11,6 +11,9 @@ const pool2LPs = [ module.exports = { deadFrom: 1648765747, + hallmarks: [ + [1645488000, "Rug Pull"] + ], misrepresentedTokens: true, ...tombTvl(token, shares, rewardPool, masonry, pool2LPs, "fantom", undefined, false, pool2LPs[1]) } diff --git a/projects/nightmare/index.js b/projects/nightmare/index.js index 3d477c96ed..be948559b7 100644 --- a/projects/nightmare/index.js +++ b/projects/nightmare/index.js @@ -19,6 +19,9 @@ async function tvl(timestamp, block, chainBlocks) { module.exports = { methodology: "TVL includes all farms in MasterChef contract", + hallmarks: [ + [1646179200, "Rug Pull"] + ], fantom: { tvl, staking: staking(fearchef, fear, "fantom"), diff --git a/projects/one-ring/index.js b/projects/one-ring/index.js index f8e671959c..7742ba6a29 100644 --- a/projects/one-ring/index.js +++ b/projects/one-ring/index.js @@ -59,6 +59,9 @@ async function tvlPolygon(timestamp, block, chainBlocks) { } module.exports = { + hallmarks: [ + [1647907200, "Rug Pull"] + ], fantom: { tvl: tvlFantom, }, diff --git a/projects/treehousefinance/index.js b/projects/treehousefinance/index.js index 538fb4b77c..86ec1db83e 100644 --- a/projects/treehousefinance/index.js +++ b/projects/treehousefinance/index.js @@ -6,4 +6,7 @@ const leaf = "0x1777850a0c498D38424CeA45fd324C68f06D0830" module.exports = { ...masterChefExports(chef, "avax", leaf, false), methodology: "TVL includes all farms in MasterChef contract", + hallmarks: [ + [1647043200, "Rug Pull"] + ] } \ No newline at end of file diff --git a/projects/valleyswap/index.js b/projects/valleyswap/index.js index c9c7bc0458..93f82ef8a9 100644 --- a/projects/valleyswap/index.js +++ b/projects/valleyswap/index.js @@ -3,9 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { start: 411656, oasis: { - hallmarks: [ - [1681743600,"Remove Fake USDT"] - ], tvl: getUniTVL({ factory: '0xa25464822b505968eEc9A45C43765228c701d35f', useDefaultCoreAssets: true, @@ -13,4 +10,8 @@ module.exports = { }), }, misrepresentedTokens: true, + hallmarks: [ + [1681743600,"Remove Fake USDT"], + [1654214400, "EvoDefi bridge depeg"] + ], }; From b893280b88b74b2800b41e0113674270a04752cb Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 22 Jun 2023 03:45:41 +0100 Subject: [PATCH 0851/1354] add new hallmarks --- projects/2doge/index.js | 3 +++ projects/phantom-finance/index.js | 3 +++ 2 files changed, 6 insertions(+) diff --git a/projects/2doge/index.js b/projects/2doge/index.js index 483866161f..10470022eb 100644 --- a/projects/2doge/index.js +++ b/projects/2doge/index.js @@ -65,4 +65,7 @@ module.exports = { staking: stakingPricedLP(masonryAddress, tshareTokenAddress, "fantom", "0xB254973e067AF44eB4D506e7117A33C4F3F77783", "fantom"), treasury }, + hallmarks: [ + [1646179200, "Rug Pull"] + ] }; diff --git a/projects/phantom-finance/index.js b/projects/phantom-finance/index.js index fde52454c5..48212740d3 100644 --- a/projects/phantom-finance/index.js +++ b/projects/phantom-finance/index.js @@ -18,6 +18,9 @@ async function tvl(timestamp, block, chainBlocks) { } module.exports = { + hallmarks: [ + [1646179200, "Rug Pull"] + ], deadFrom: 1648765747, methodology: "TVL includes all farms in MasterChef contract", fantom: { From d66dc2991743e925ee01bd65d43c20b9f5dbc33b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Jun 2023 09:20:13 +0200 Subject: [PATCH 0852/1354] oz to tory oz --- projects/meld-gold/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/meld-gold/index.js b/projects/meld-gold/index.js index 46aeb04aeb..0d1058f7c9 100644 --- a/projects/meld-gold/index.js +++ b/projects/meld-gold/index.js @@ -6,8 +6,8 @@ async function tvl() { const api = new sdk.ChainApi({}) let totalMeldMarketCap = 0 - // Gold is priced in oz, silver is priced in oz, but Meld Tokens are both priced in grams - const ozToGrams = 28.349523 + // Gold is priced in tory oz, silver is priced in oz, but Meld Tokens are both priced in grams + const ozToGrams = 31.10347687 // Meld tokens const assetInfo = [ From 00b44055258fbfedc83214bfab93e7a8b5f053c5 Mon Sep 17 00:00:00 2001 From: sypcsnb <61001576+sypcsnb@users.noreply.github.com> Date: Thu, 22 Jun 2023 14:22:20 +0700 Subject: [PATCH 0853/1354] added MegaMoon project (#6612) Co-authored-by: syp.skuberg --- projects/megamoon/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/megamoon/index.js diff --git a/projects/megamoon/index.js b/projects/megamoon/index.js new file mode 100644 index 0000000000..98ba7c62d9 --- /dev/null +++ b/projects/megamoon/index.js @@ -0,0 +1,23 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); + +const owners = [ + "0xA73dA7954834260d7909c697Eb6022e46A5924DE", + "0xC5d1D50d9517db581DE2Ceb6e5d33B7750b0a04A", + "0x4c00e75A710E92ea915a865379b07caDf3e6C45e", +]; + +const config = { + polygon: { + tokens: [ADDRESSES.polygon.USDT, nullAddress], + }, +}; + +module.exports = {}; + +Object.keys(config).forEach((chain) => { + const { tokens } = config[chain]; + module.exports[chain] = { + tvl: sumTokensExport({ owners, tokens }), + }; +}); From 74d82109532d197a7865fa161bef227d8da76b8c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Jun 2023 10:50:44 +0200 Subject: [PATCH 0854/1354] enosys bridge: track ethereum --- projects/enosys-bridge/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/enosys-bridge/index.js b/projects/enosys-bridge/index.js index 055ce33044..2013c01144 100644 --- a/projects/enosys-bridge/index.js +++ b/projects/enosys-bridge/index.js @@ -2,5 +2,6 @@ const { sumTokensExport } = require('../helper/unwrapLPs') const ADDRESSES = require('../helper/coreAssets.json') module.exports = { - xdc: { tvl: sumTokensExport({ owner: '0xd5308a4bb2d7121a26d0bd11257245f0efda2bc4', tokens: [ADDRESSES.xdc.WXDC]})} + xdc: { tvl: sumTokensExport({ owner: '0xd5308a4bb2d7121a26d0bd11257245f0efda2bc4', tokens: [ADDRESSES.xdc.WXDC] }) }, + ethereum: { tvl: sumTokensExport({ owner: '0xb3902647015c17fc3c2f5ca5f5cb68bbf2d9b1e2', tokens: [ADDRESSES.ethereum.USDT] }) }, } \ No newline at end of file From b227220043f930c73b412a756dc14d3a1528b610 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Jun 2023 16:11:52 +0200 Subject: [PATCH 0855/1354] aura: track arbitrum tvl --- projects/aura-finance/index.js | 43 +++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index 290d243f44..df8f5cd2dc 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -1,7 +1,7 @@ +const { getLogs } = require('../helper/cache/getLogs') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { staking } = require("../helper/staking"); -const BigNumber = require('bignumber.js') const { unwrapBalancerToken } = require('../helper/unwrapLPs') const AURA_BOOSTER = "0x7818A1DA7BD1E64c199029E86Ba244a9798eEE10" @@ -25,24 +25,24 @@ async function tvl(_, block, _1, { api }) { let failedCallIndices = poolIds.map((v, i) => [i, v]).filter(i => !i[1]).map(i => i[0]) let newPoolIds = await api.multiCall({ calls: failedCallIndices.map(i => poolInputs[i]), abi: 'function POOL_ID() view returns (bytes32)', permitFailure: true, }) - newPoolIds.forEach((v, i) => { if (v) poolIds[failedCallIndices[i]] = v }) + newPoolIds.forEach((v, i) => { if (v) poolIds[failedCallIndices[i]] = v }) failedCallIndices = poolIds.map((v, i) => [i, v]).filter(i => !i[1]).map(i => i[0]) const newLpTokens = await api.multiCall({ calls: failedCallIndices.map(i => poolInputs[i]), abi: 'address:lp_token', permitFailure: true, }) - newPoolIds = await api.multiCall({ calls: newLpTokens.map(i => ({ target: i})), abi: abi.getPoolId, permitFailure: true, }) - newPoolIds.forEach((v, i) => { if (v) poolIds[failedCallIndices[i]] = v }) + newPoolIds = await api.multiCall({ calls: newLpTokens.map(i => ({ target: i })), abi: abi.getPoolId, permitFailure: true, }) + newPoolIds.forEach((v, i) => { if (v) poolIds[failedCallIndices[i]] = v }) const poolTokensInfo = await api.multiCall({ calls: poolIds.map(poolId => ({ target: BALANCER_VAULT, params: poolId })), abi: abi.getPoolTokens, }) const balancesinStaking = await api.multiCall({ calls: pools.map(pool => ({ target: pool.token, params: pool.crvRewards })), abi: 'erc20:balanceOf', }) - const totalSupplies = await api.multiCall({ calls: pools.map(pool => pool.lptoken), abi: 'erc20:totalSupply', }) + const totalSupplies = await api.multiCall({ calls: pools.map(pool => pool.lptoken), abi: 'erc20:totalSupply', }) const { output: veBalTotalSupply } = await sdk.api.erc20.totalSupply({ target: addresses.veBal, block }) const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veBal, owner: addresses.auraDelegate, block }) const ratio = veBalance / veBalTotalSupply - const ratios = balancesinStaking.map((v, i) => +totalSupplies[i] > 0 ? v / totalSupplies[i]: 0) + const ratios = balancesinStaking.map((v, i) => +totalSupplies[i] > 0 ? v / totalSupplies[i] : 0) const bal = await unwrapBalancerToken({ api, balancerToken: addresses.bal80eth20, owner: addresses.veBal, }) Object.entries(bal).forEach(([token, value]) => { - api.add(token, +value * ratio, { skipChain: true,}) + api.add(token, +value * ratio, { skipChain: true, }) }) for (let [i, info] of poolTokensInfo.entries()) { // // unwrapBalancerToken would be better here, but since crvRewards address holds aura-wrapped tokens, it won't work @@ -53,18 +53,39 @@ async function tvl(_, block, _1, { api }) { // api.add(token, balance * ratio) // }) // } else { - info.tokens.forEach((token, j) => { - api.add(token, info.balances[j] * ratios[i]) - }) + info.tokens.forEach((token, j) => { + api.add(token, info.balances[j] * ratios[i]) + }) // } } } module.exports = { - timetravel: true, methodology: "TVL of Aura Finance consists of the total deposited assets, protocol-controlled value via veBAL and vote-locked AURA (staking)", ethereum: { tvl, staking: staking(addresses.auraLocker, addresses.aura) + }, + arbitrum: { + tvl: async (_, _1, _2, { api }) => { + const logs = await getLogs({ + api, + target: '0x6817149cb753bf529565b4d023d7507ed2ff4bc0', + topics: ['0xaa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c0'], + eventAbi: 'event GaugeCreated (address indexed gauge)', + onlyArgs: true, + fromBlock: 72942741, + }) + + const voterProxy = '0xc181edc719480bd089b94647c2dc504e2700a2b0' + // const auraBalVault = '0x4EA9317D90b61fc28C418C247ad0CA8939Bbb0e9' + // const asset = await api.call({ abi: 'address:asset', target: auraBalVault }) + // const bal = await api.call({ abi: 'uint256:totalAssets', target: auraBalVault }) + // api.add(asset, bal) + const gauges = logs.map(log => log.gauge) + const tokens = await api.multiCall({ abi: 'address:lp_token', calls: gauges }) + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(i => ({ target: i, params: voterProxy })) }) + api.addTokens(tokens, bals) + } } } From 457e1e07f3df7adbab32fcbefd6555e9c70c3750 Mon Sep 17 00:00:00 2001 From: yepp4you Date: Thu, 22 Jun 2023 18:12:50 +0400 Subject: [PATCH 0856/1354] add neopin-liquid-staking adapter --- projects/neopin-liquid-staking/index.js | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/neopin-liquid-staking/index.js diff --git a/projects/neopin-liquid-staking/index.js b/projects/neopin-liquid-staking/index.js new file mode 100644 index 0000000000..76b4a8b585 --- /dev/null +++ b/projects/neopin-liquid-staking/index.js @@ -0,0 +1,32 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const sdk = require('@defillama/sdk'); + +const wethAddress = ADDRESSES.ethereum.WETH; +const wKlayAddress = ADDRESSES.klaytn.WKLAY; + +const npEthContract = '0x841d3B6660663Ed4B0D9b9EDAEe6642e05A4E182'; +const npKlayContract = '0xb0BB95ac3195A266Ab924596Ba32c2a10e245a95'; + +async function getEthTvl(timestamp, ethBlock, chainBlocks) { + const chain = 'ethereum'; + const pooledETH = await sdk.api.abi.call({ chain, block: ethBlock, target: npEthContract, abi: "uint256:getTotalPooledEth" }); + + return { + [`${chain}:0x0000000000000000000000000000000000000000`]: pooledETH.output + }; +} + +async function getKlayTvl(timestamp, ethBlock, chainBlocks) { + const chain = 'klaytn'; + const pooledKlay = await sdk.api.abi.call({ chain, target: npKlayContract, abi: "uint256:getTotalPooledKlay" }); + + return { + [`${chain}:0x0000000000000000000000000000000000000000`]: pooledKlay.output + }; +} + +module.exports = { + methodology: 'Staked are counted as TVL based on the chain that they are staked on and where the liquidity tokens are issued, npETH and npKLAY are counted as Ethereum TVL and Klaytn TVL since ETH and KLAY are staked in each mainnet and the liquidity tokens are also issued on each mainnet network.', + ethereum: { tvl: getEthTvl }, + klaytn: { tvl: getKlayTvl }, +} From ccaf3e596a5d17e07fe06ad060edbc55122175b1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Jun 2023 19:45:13 +0200 Subject: [PATCH 0857/1354] dolomite: handle custom tokens --- package-lock.json | 14 ++-- projects/dolomite/index.js | 16 ++-- utils/contracts/TestUniQuery.sol | 31 ++++++++ utils/contracts/UniV2TVL.sol | 100 ++++++++++++++++++++++++ utils/package-lock.json | 126 +++++++++++++++++++++++++++++-- utils/package.json | 3 +- utils/scripts/testBatchCall.js | 24 ++++++ utils/scripts/testCompiler.js | 28 +++++++ 8 files changed, 323 insertions(+), 19 deletions(-) create mode 100644 utils/contracts/TestUniQuery.sol create mode 100644 utils/contracts/UniV2TVL.sol create mode 100644 utils/scripts/testBatchCall.js create mode 100644 utils/scripts/testCompiler.js diff --git a/package-lock.json b/package-lock.json index 4837c72947..6a48860ffb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.26", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.26.tgz", - "integrity": "sha512-qZ0aZHocHhpWC/Mis/rvc/CCOs1Z+MCbLIVSVfJi/6d4acOzgV5m+oLtxVK1Rz0bsMrPZHdT+kUFkum8EKPodw==", + "version": "4.0.28", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.28.tgz", + "integrity": "sha512-0mqCkiy1pOhZgLCQ/RSdHyuPvchoIoOWj0JIRzFnUAV9uEP6Pck/EqYNB4PpoonZqWAqBDM2cGN1/qj/WQUUtw==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.26", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.26.tgz", - "integrity": "sha512-qZ0aZHocHhpWC/Mis/rvc/CCOs1Z+MCbLIVSVfJi/6d4acOzgV5m+oLtxVK1Rz0bsMrPZHdT+kUFkum8EKPodw==", + "version": "4.0.28", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.28.tgz", + "integrity": "sha512-0mqCkiy1pOhZgLCQ/RSdHyuPvchoIoOWj0JIRzFnUAV9uEP6Pck/EqYNB4PpoonZqWAqBDM2cGN1/qj/WQUUtw==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -6791,7 +6791,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "5.0.1" } }, "strip-json-comments": { diff --git a/projects/dolomite/index.js b/projects/dolomite/index.js index f02d934a66..abc3874404 100644 --- a/projects/dolomite/index.js +++ b/projects/dolomite/index.js @@ -3,17 +3,23 @@ const { getMarketTokenAddress, getMarketTotalPar, } = require("./dolomite-margin.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') const dolomiteMargin = "0x6bd780e7fdf01d77e4d475c821f1e7ae05409072"; async function getTokensAndBalances(api, supplyOrBorrow) { const tokens = await api.fetchList({ lengthAbi: getNumMarkets, itemAbi: getMarketTokenAddress, target: dolomiteMargin }) - if (supplyOrBorrow === 'supply') - return sumTokens2({ owner: dolomiteMargin, api, tokens }) + const underlyingTokens = await api.multiCall({ abi: 'address:UNDERLYING_TOKEN', calls: tokens, permitFailure: true, }) + let bals + if (supplyOrBorrow === 'supply') { + bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokens.map(i => ({ target: i, params: dolomiteMargin })), }) - const res = await api.fetchList({ lengthAbi: getNumMarkets, itemAbi: getMarketTotalPar, target: dolomiteMargin }) - res.forEach((v, i) => api.addToken(tokens[i], v.borrow)) + } else { + const res = await api.fetchList({ lengthAbi: getNumMarkets, itemAbi: getMarketTotalPar, target: dolomiteMargin }) + bals = res.map(i => i.borrow) + } + tokens.forEach((v, i) => { + api.add(underlyingTokens[i] ?? v, bals[i]) + }) } async function tvl(timestamp, ethereumBlock, blocksToKeys, { api }) { diff --git a/utils/contracts/TestUniQuery.sol b/utils/contracts/TestUniQuery.sol new file mode 100644 index 0000000000..44587597d5 --- /dev/null +++ b/utils/contracts/TestUniQuery.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +interface IUniswapV2Factory { + function allPairsLength() external view returns (uint); + + function allPairs(uint) external view returns (address); +} + +contract TestUniQuery { + constructor(address factory) { + IUniswapV2Factory uniswapFactory = IUniswapV2Factory(factory); + uint pairCount = uniswapFactory.allPairsLength(); + + // encode the return data + bytes memory _data = abi.encode(pairCount); + // force constructor to return data via assembly + assembly { + // abi.encode adds an additional offset (32 bytes) that we need to skip + let _dataStart := add(_data, 32) + // msize() gets the size of active memory in bytes. + // if we subtract msize() from _dataStart, the output will be + // the amount of bytes from _dataStart to the end of memory + // which due to how the data has been laid out in memory, will coincide with + // where our desired data ends. + let _dataEnd := sub(msize(), _dataStart) + // starting from _dataStart, get all the data in memory. + return(_dataStart, _dataEnd) + } + } +} diff --git a/utils/contracts/UniV2TVL.sol b/utils/contracts/UniV2TVL.sol new file mode 100644 index 0000000000..87521b1a96 --- /dev/null +++ b/utils/contracts/UniV2TVL.sol @@ -0,0 +1,100 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +interface IUniswapV2Pair { + function token0() external view returns (address); + + function token1() external view returns (address); + + function getReserves() + external + view + returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); +} + +interface IUniswapV2Factory { + function allPairsLength() external view returns (uint); + + function allPairs(uint) external view returns (address); +} + +contract UniV2TVL { + struct KeyValuePair { + address key; + uint value; + } + + mapping(address => uint) public tvlMap; + mapping(address => bool) public isBaseToken; + address[] public tokens; + + constructor( + address factory, + address[] memory baseTokens, + bool includeQuoteTokens, + uint startIndex, + uint endIndex + ) { + IUniswapV2Factory uniswapFactory = IUniswapV2Factory(factory); + uint pairCount = uniswapFactory.allPairsLength(); + if (endIndex == 0) endIndex = pairCount; + + // Create a set of base tokens for efficient membership check + for (uint i = startIndex; i < baseTokens.length; i++) { + isBaseToken[baseTokens[i]] = true; + } + + for (uint i = 0; i < pairCount; i++) { + address pairAddress = uniswapFactory.allPairs(i); + IUniswapV2Pair pair = IUniswapV2Pair(pairAddress); + address token0 = pair.token0(); + address token1 = pair.token1(); + uint reserve0; + uint reserve1; + (reserve0, reserve1, ) = pair.getReserves(); + bool isToken0BaseToken = isBaseToken[token0]; + bool isToken1BaseToken = isBaseToken[token1]; + + if ( reserve0 == 0 || reserve1 == 0) continue; + + if (isToken0BaseToken && isToken1BaseToken) { + if (tvlMap[token0] == 0) tokens.push(token0); + if (tvlMap[token1] == 0) tokens.push(token1); + tvlMap[token0] += reserve0; + tvlMap[token1] += reserve1; + } else if (isToken0BaseToken) { + if (tvlMap[token0] == 0) tokens.push(token0); + tvlMap[token0] += reserve0 * 2; + } else if (isToken1BaseToken) { + if (tvlMap[token1] == 0) tokens.push(token1); + tvlMap[token1] += reserve1 * 2; + } else if (includeQuoteTokens) { + if (tvlMap[token0] == 0) tokens.push(token0); + if (tvlMap[token1] == 0) tokens.push(token1); + tvlMap[token0] += reserve0; + tvlMap[token1] += reserve1; + } + } + + KeyValuePair[] memory returnData = new KeyValuePair[](tokens.length); + for (uint i = 0; i < tokens.length; i++) { + returnData[i] = KeyValuePair(tokens[i], tvlMap[tokens[i]]); + } + + // encode the return data + bytes memory _data = abi.encode(returnData); + // force constructor to return data via assembly + assembly { + // abi.encode adds an additional offset (32 bytes) that we need to skip + let _dataStart := add(_data, 32) + // msize() gets the size of active memory in bytes. + // if we subtract msize() from _dataStart, the output will be + // the amount of bytes from _dataStart to the end of memory + // which due to how the data has been laid out in memory, will coincide with + // where our desired data ends. + let _dataEnd := sub(msize(), _dataStart) + // starting from _dataStart, get all the data in memory. + return(_dataStart, _dataEnd) + } + } +} diff --git a/utils/package-lock.json b/utils/package-lock.json index 7747b92ee8..6c66469586 100644 --- a/utils/package-lock.json +++ b/utils/package-lock.json @@ -9,7 +9,8 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "glob": "^8.0.3" + "glob": "^8.0.3", + "solc": "^0.8.20" }, "devDependencies": { "inquirer": "^8.2.4", @@ -205,6 +206,19 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -258,6 +272,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -701,6 +734,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -723,6 +761,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -799,7 +845,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -875,12 +920,40 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/solc": { + "version": "0.8.20", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.20.tgz", + "integrity": "sha512-fPRnGspIEqmhu63RFO3pc79sLA7ZmzO0Uy0L5l6hEt2wAsq0o7UV6pXkAp3Mfv9IBhg7Px/oTu3a+y4gs3BWrQ==", + "dependencies": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solc.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -938,7 +1011,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -1125,6 +1197,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -1166,6 +1248,11 @@ "escape-string-regexp": "^1.0.5" } }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1505,6 +1592,11 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1521,6 +1613,11 @@ "is-unicode-supported": "^0.1.0" } }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -1578,8 +1675,7 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "readable-stream": { "version": "3.6.0", @@ -1629,12 +1725,31 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "solc": { + "version": "0.8.20", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.20.tgz", + "integrity": "sha512-fPRnGspIEqmhu63RFO3pc79sLA7ZmzO0Uy0L5l6hEt2wAsq0o7UV6pXkAp3Mfv9IBhg7Px/oTu3a+y4gs3BWrQ==", + "requires": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1683,7 +1798,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "~1.0.2" } diff --git a/utils/package.json b/utils/package.json index cb2ce215f1..49d6ccc564 100644 --- a/utils/package.json +++ b/utils/package.json @@ -13,6 +13,7 @@ "inquirer-fuzzy-path": "^2.3.0" }, "dependencies": { - "glob": "^8.0.3" + "glob": "^8.0.3", + "solc": "^0.8.20" } } diff --git a/utils/scripts/testBatchCall.js b/utils/scripts/testBatchCall.js new file mode 100644 index 0000000000..6ae43ae3b2 --- /dev/null +++ b/utils/scripts/testBatchCall.js @@ -0,0 +1,24 @@ +const ethers = require('ethers') +const { getProvider } = require('@defillama/sdk/build/general') +const fs = require('fs') +const coreAssets = require('../../projects/helper/coreAssets.json') + +const bytecode = fs.readFileSync(__dirname + `/../artifacts/UniV2TVL.bytecode`, 'utf8') +// const inputData = ethers.utils.defaultAbiCoder.encode(['address'], ['0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f']); +const inputData = ethers.utils.defaultAbiCoder.encode(['address', 'address[]', 'bool', 'uint256', 'uint256'], ['0x460b2005b3318982feADA99f7ebF13e1D6f6eFfE', Object.values(coreAssets.ethereum), false, 0, 0]); + +// concatenate the bytecode of BatchPoolManagerData with the input data. +// the slice is done to remove the 0x prefix from the input data added by the encoding +const contractCreationCode = bytecode.concat(inputData.slice(2)); + +const provider = getProvider('ethereum') + +async function main() { + const returnedData = await provider.call({ data: '0x' + contractCreationCode }) + console.log(returnedData) + // decode the returned data to get the array of tuples using the same data types as the Data struct in the PoolManager contract + const [decoded] = ethers.utils.defaultAbiCoder.decode(['tuple(address,uint256)[]'], returnedData); + console.log(decoded) +} + +main() \ No newline at end of file diff --git a/utils/scripts/testCompiler.js b/utils/scripts/testCompiler.js new file mode 100644 index 0000000000..eb3dc8df0e --- /dev/null +++ b/utils/scripts/testCompiler.js @@ -0,0 +1,28 @@ +const solc = require('solc'); +const fs = require('fs'); + +const contractName = 'UniV2TVL'; +const contractFile = `${contractName}.sol`; +// Solidity contract code +const solidityCode = fs.readFileSync(__dirname+`/../contracts/${contractFile}`, 'utf8'); + +function compileContract(contractCode) { + const input = { + language: 'Solidity', + sources: { + [contractFile]: { + content: contractCode, + }, + }, + settings: { + outputSelection: { '*': { '*': ['*'], }, }, + }, + }; + + const output = JSON.parse(solc.compile(JSON.stringify(input))); + const bytecode = output.contracts[contractFile][contractName].evm.bytecode.object; + fs.writeFileSync(__dirname+`/../artifacts/${contractName}.bytecode`, bytecode) +} + +// Compile the contract and get the bytecode +compileContract(solidityCode) \ No newline at end of file From cb1bf481afd5d1649471bbe7bd7221faa39e8f7f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Jun 2023 21:58:48 +0200 Subject: [PATCH 0858/1354] add stellaxyz.io --- projects/stellaxyz-io/index.js | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 projects/stellaxyz-io/index.js diff --git a/projects/stellaxyz-io/index.js b/projects/stellaxyz-io/index.js new file mode 100644 index 0000000000..915e42eb5e --- /dev/null +++ b/projects/stellaxyz-io/index.js @@ -0,0 +1,40 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs, getAddress } = require('../helper/cache/getLogs'); + +const config = { + arbitrum: { + lendingContracts: [ + '0x3251f402cc06b33e742f08e1adbe0d2e4c1ea2fa', + '0x36569fbc5a9d4c59d71e81d46db24256a09d1ad6', + '0x5ecb93b3ef882bf42fee65541942d50a7dab4b33', + '0x8e57143d14bae132210cfeec58d0c48875f7d415', + '0xab416e57ec74e87295b8a1507745a954b0bb9f02', + ], + factory: '0x573a89fBc6b4a5B11a55DC9814A1018a3A9cD0CA', + fromBlock: 101291920, + } +} + +module.exports = { +}; + +Object.keys(config).forEach(chain => { + const { lendingContracts, factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x0803371633b57311f58d10924711080d2dae75ab17c5c0c262af3887cfca00bb'], + fromBlock, + }) + + const strategies = logs.map(i => getAddress(i.data.slice(64, 64 * 2 + 2))) + const positionManagers = await api.multiCall({ abi: 'address:positionManager', calls: strategies}) + + const tokens = await api.multiCall({ abi: 'address:depositToken', calls: lendingContracts }) + await sumTokens2({ api, tokensAndOwners2: [tokens, lendingContracts] }) + return sumTokens2({ api, owners: positionManagers, resolveUniV3: true, }) + } + } +}) \ No newline at end of file From c618aa8b75fb269496ebf5608bbc4cfe237222dd Mon Sep 17 00:00:00 2001 From: Full Stack Developer Date: Fri, 23 Jun 2023 03:59:46 +0800 Subject: [PATCH 0859/1354] add new tokens to Ethereum chain (#6613) --- projects/equito-finance/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/equito-finance/index.js b/projects/equito-finance/index.js index 5ae93486b5..25c3c7de99 100644 --- a/projects/equito-finance/index.js +++ b/projects/equito-finance/index.js @@ -12,6 +12,9 @@ const ALGO_VAULT2 = const ETH_VAULT2 = "0x4d753245f273e119Be944Ae180A17DfE35258e1e"; const BSC_VAULT2 = "0x7aFeCFABBA462121262D81d764e289aB77966aec"; +// Tokens +const ETH_PSYOP = "0xaa07810aE08575921c476Ff088bc949da43e4964"; + module.exports = { hallmarks: [ [1671724719, "Start of bridge"], @@ -23,7 +26,7 @@ module.exports = { ethereum: { tvl: sumTokensExport({ owners: [ETH_VAULT1, ETH_VAULT2], - tokens: [ADDRESSES.null], + tokens: [ADDRESSES.null, ADDRESSES.ethereum.INU, ETH_PSYOP], }), }, bsc: { From cd5660ba7ea611a3b99ae497d109947e8702a0a3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Jun 2023 22:27:17 +0200 Subject: [PATCH 0860/1354] univ2 sol code bugfix --- utils/contracts/UniV2TVL.sol | 6 +++--- utils/scripts/testBatchCall.js | 30 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/utils/contracts/UniV2TVL.sol b/utils/contracts/UniV2TVL.sol index 87521b1a96..dc46c81a85 100644 --- a/utils/contracts/UniV2TVL.sol +++ b/utils/contracts/UniV2TVL.sol @@ -37,14 +37,14 @@ contract UniV2TVL { ) { IUniswapV2Factory uniswapFactory = IUniswapV2Factory(factory); uint pairCount = uniswapFactory.allPairsLength(); - if (endIndex == 0) endIndex = pairCount; + if (endIndex == 0 || endIndex > pairCount) endIndex = pairCount; // Create a set of base tokens for efficient membership check - for (uint i = startIndex; i < baseTokens.length; i++) { + for (uint i = 0; i < baseTokens.length; i++) { isBaseToken[baseTokens[i]] = true; } - for (uint i = 0; i < pairCount; i++) { + for (uint i = startIndex; i < endIndex; i++) { address pairAddress = uniswapFactory.allPairs(i); IUniswapV2Pair pair = IUniswapV2Pair(pairAddress); address token0 = pair.token0(); diff --git a/utils/scripts/testBatchCall.js b/utils/scripts/testBatchCall.js index 6ae43ae3b2..b84f071319 100644 --- a/utils/scripts/testBatchCall.js +++ b/utils/scripts/testBatchCall.js @@ -1,24 +1,24 @@ -const ethers = require('ethers') -const { getProvider } = require('@defillama/sdk/build/general') const fs = require('fs') const coreAssets = require('../../projects/helper/coreAssets.json') +const sdk = require('@defillama/sdk') const bytecode = fs.readFileSync(__dirname + `/../artifacts/UniV2TVL.bytecode`, 'utf8') -// const inputData = ethers.utils.defaultAbiCoder.encode(['address'], ['0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f']); -const inputData = ethers.utils.defaultAbiCoder.encode(['address', 'address[]', 'bool', 'uint256', 'uint256'], ['0x460b2005b3318982feADA99f7ebF13e1D6f6eFfE', Object.values(coreAssets.ethereum), false, 0, 0]); - -// concatenate the bytecode of BatchPoolManagerData with the input data. -// the slice is done to remove the 0x prefix from the input data added by the encoding -const contractCreationCode = bytecode.concat(inputData.slice(2)); - -const provider = getProvider('ethereum') async function main() { - const returnedData = await provider.call({ data: '0x' + contractCreationCode }) - console.log(returnedData) - // decode the returned data to get the array of tuples using the same data types as the Data struct in the PoolManager contract - const [decoded] = ethers.utils.defaultAbiCoder.decode(['tuple(address,uint256)[]'], returnedData); - console.log(decoded) + await getUniTvl('0x460b2005b3318982feADA99f7ebF13e1D6f6eFfE', 'ethereum') + await getUniTvl('0x21cadeb92c8bbfbef98c3098846f0999209c3a97', 'avax') + await getUniTvl('0xAaA04462e35f3e40D798331657cA015169e005d7', 'dogechain') +} + +async function getUniTvl(factory, chain = 'ethereum') { + const api = new sdk.ChainApi({ chain}) + const res = await api.bytecodeCall({ + bytecode, + inputs: [factory, Object.values(coreAssets[chain]), false, 0, 50], + inputTypes: ['address', 'address[]', 'bool', 'uint256', 'uint256'], + outputTypes: ['tuple(address,uint256)[]'] + }) + console.log(chain, factory, res) } main() \ No newline at end of file From fd78237f36d1b4673f06ec5440879505a5b8e582 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Jun 2023 22:58:41 +0200 Subject: [PATCH 0861/1354] refactor ooki --- projects/ooki/index.js | 246 ++++++++--------------------------------- 1 file changed, 44 insertions(+), 202 deletions(-) diff --git a/projects/ooki/index.js b/projects/ooki/index.js index b84a3d3aec..58f5bd90a5 100644 --- a/projects/ooki/index.js +++ b/projects/ooki/index.js @@ -1,216 +1,58 @@ - -/*================================================== -Modules -==================================================*/ -const BigNumber = require('bignumber.js'); -const sdk = require("@defillama/sdk"); +const { sumTokens2 } = require('../helper/unwrapLPs') const { stakings } = require("../helper/staking"); const abi = require('./abi'); const registry = require('./registry'); -let iTokens = []; - -let iTokensNew = []; - -const tokens = { - ethereum: { - 'bzrx': '0x56d811088235F11C8920698a204A5010a788f4b3', - 'ooki': '0x0De05F6447ab4D22c8827449EE4bA2D5C288379B', - }, - polygon: { - 'bzrx': '0x54cFe73f2c7d0c4b62Ab869B473F5512Dc0944D2', - 'ooki': '0xCd150B1F528F326f5194c012f32Eb30135C7C2c9', - }, - bsc: { - 'ooki': '0xa5a6817ac4c164F27df3254B71fE83904B1C3c3e', - }, - arbitrum: { - 'ooki': '0x400F3ff129Bc9C9d239a567EaF5158f1850c65a4', - }, - optimism: { - } -} - const contracts = { - ethereum: { - 'protocol': '0xD8Ee69652E4e4838f2531732a46d1f7F584F0b7f', - 'registry': '0xf0E474592B455579Fe580D610b846BdBb529C6F7', - }, - polygon: { - 'protocol': '0x059D60a9CEfBc70b9Ea9FFBb9a041581B1dFA6a8', - 'registry': '0x4B234781Af34E9fD756C27a47675cbba19DC8765', - }, - bsc: { - 'protocol': '0xD154eE4982b83a87b0649E5a7DDA1514812aFE1f', - 'registry': '0x1BE70f29D30bB1D325E5D76Ee73109de3e50A57d', - }, - arbitrum: { - 'protocol': '0x37407F3178ffE07a6cF5C847F8f680FEcf319FAB', - 'registry': '0x86003099131d83944d826F8016E09CC678789A30', - }, - optimism: { - 'protocol': '0xAcedbFd5Bc1fb0dDC948579d4195616c05E74Fd1', - 'registry': '0x22a2208EeEDeb1E2156370Fd1c1c081355c68f2B', - } -} - -/*================================================== -Main -==================================================*/ -async function eth(timestamp, block, chainBlocks) { -return getBalances(timestamp, block, chainBlocks, 'ethereum') -} - -async function bsc(timestamp, block, chainBlocks) { -return getBalances(timestamp, block, chainBlocks, 'bsc') -} - -async function polygon(timestamp, block, chainBlocks) { -return getBalances(timestamp, block, chainBlocks, 'polygon') -} - -async function optimism(timestamp, block, chainBlocks) { -return getBalances(timestamp, block, chainBlocks, 'optimism') -} - -async function arbitrum(timestamp, block, chainBlocks) { -return getBalances(timestamp, block, chainBlocks, 'arbitrum') -} - -async function getBalances(timestamp, block, chainBlocks, network) { - let balances = {}; - const balanceOfCalls = []; - const getTokensResult = await sdk.api.abi.call({ - chainBlocks, - target: contracts[network].registry, - params: [0, 200], - chain: network, - abi: registry.getTokens - }); - - getTokensResult.output.forEach((token) =>{ - iTokensNew.push({ - iTokenAddress: token[0], - underlyingAddress: token[1] - }); - - const target = token[1]; - balanceOfCalls.push({ target: target, params: contracts[network].protocol }); - }); - - iTokens = iTokens.concat(iTokensNew); - const iTokenCalls = iTokens.map((iToken) => ({ - target: iToken.iTokenAddress - })); - - const supplyResult = await sdk.api.abi.multiCall({ - chainBlocks, - calls: iTokenCalls, - chain: network, - permitFailure: true, - abi: abi.totalAssetSupply - }); - - const borrowResult = await sdk.api.abi.multiCall({ - chainBlocks, - calls: iTokenCalls, - chain: network, - permitFailure: true, - abi: abi.totalAssetBorrow - }); - - iTokens.forEach((iToken) => { - const supply = supplyResult.output.find((result) => (result.input.target === iToken.iTokenAddress)); - const borrow = borrowResult.output.find((result) => (result.input.target === iToken.iTokenAddress)); - - const totalSupply = (supply && supply.success)?supply.output:0; - const totalBorrow = (borrow && borrow.success)?borrow.output:0; - - if (totalSupply > totalBorrow) { - const token = iToken.underlyingAddress; - balances[token] = BigNumber(totalSupply).minus(totalBorrow).toFixed(); - } - }); - - - //Balances - const balanceOfs = await sdk.api.abi.multiCall({ - chainBlocks, - calls: balanceOfCalls, - chain: network, - abi: abi["balanceOf"], - }); - - for(let i = 0; i{ - balances[remap(key, network)] = balances[key]; - delete balances[key] - }) - - - return balances; + ethereum: { + 'protocol': '0xD8Ee69652E4e4838f2531732a46d1f7F584F0b7f', + 'registry': '0xf0E474592B455579Fe580D610b846BdBb529C6F7', + }, + polygon: { + 'protocol': '0x059D60a9CEfBc70b9Ea9FFBb9a041581B1dFA6a8', + 'registry': '0x4B234781Af34E9fD756C27a47675cbba19DC8765', + }, + bsc: { + 'protocol': '0xD154eE4982b83a87b0649E5a7DDA1514812aFE1f', + 'registry': '0x1BE70f29D30bB1D325E5D76Ee73109de3e50A57d', + }, + arbitrum: { + 'protocol': '0x37407F3178ffE07a6cF5C847F8f680FEcf319FAB', + 'registry': '0x86003099131d83944d826F8016E09CC678789A30', + }, + optimism: { + 'protocol': '0xAcedbFd5Bc1fb0dDC948579d4195616c05E74Fd1', + 'registry': '0x22a2208EeEDeb1E2156370Fd1c1c081355c68f2B', + } +} + +async function getBalances(api, isBorrowed) { + const network = api.chain ?? 'ethereum' + const info = await api.call({ + target: contracts[network].registry, + params: [0, 200], + abi: registry.getTokens + }) + if (!isBorrowed) + return sumTokens2({ api, tokensAndOwners: info.map(i => [i.asset, i.token]) }) + + const borrowedBals = await api.multiCall({ abi: abi.totalAssetBorrow, calls: info.map(i => i.token) }) + api.addTokens(info.map(i => i.asset), borrowedBals) } -function remap(token, network){ - if(token === tokens[network].bzrx){ - token = 'ethereum:'+tokens['ethereum'].bzrx; - } - else{ - token = network+':'+token; - } - return token -} - -/*================================================== -Staking and Treasury -==================================================*/ - let ooki = '0x0De05F6447ab4D22c8827449EE4bA2D5C288379B' let bzrx = '0x56d811088235F11C8920698a204A5010a788f4b3' -const treasuryContract = '0xfedC4dD5247B93feb41e899A09C44cFaBec29Cbc' let stakingContracts = [ - '0xe95Ebce2B02Ee07dEF5Ed6B53289801F7Fc137A4', - '0x16f179f5c344cc29672a58ea327a26f64b941a63' + '0xe95Ebce2B02Ee07dEF5Ed6B53289801F7Fc137A4', + '0x16f179f5c344cc29672a58ea327a26f64b941a63' ] -let TreasureTokens = [ - '0x56d811088235F11C8920698a204A5010a788f4b3', //bzrx - '0x0De05F6447ab4D22c8827449EE4bA2D5C288379B', //ooki - //'vbzrx': '0xB72B31907C1C95F3650b64b2469e08EdACeE5e8F', vesting tokens not counted - '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490', //pool3 -] - -let ookistaking = stakings(stakingContracts, ooki, 'ethereum') -let bzrxstaking = stakings(stakingContracts, bzrx, 'ethereum') - -module.exports = { - ethereum:{ - tvl: eth, - staking: sdk.util.sumChainTvls([ookistaking,bzrxstaking]), - }, - polygon:{ - tvl: polygon - }, - bsc:{ - tvl: bsc - }, - arbitrum:{ - tvl: arbitrum - }, - optimism:{ - tvl: optimism - }, -}; - +Object.keys(contracts).forEach(chain => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => getBalances(api, false), + borrowed: async (_, _b, _cb, { api, }) => getBalances(api, true), + } +}) +module.exports.ethereum.staking = stakings(stakingContracts, [ooki, bzrx]) From 09e5f89d31b01ac04ac592d94bb381509b250b48 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 23 Jun 2023 07:33:21 +0100 Subject: [PATCH 0862/1354] update fantom tvl --- projects/market.xyz/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/market.xyz/index.js b/projects/market.xyz/index.js index ff1b5f7fea..c950963216 100644 --- a/projects/market.xyz/index.js +++ b/projects/market.xyz/index.js @@ -81,7 +81,7 @@ module.exports = { borrowed: polygonBorrowed, }, fantom: { - tvl: fantomTvl, - borrowed: fantomBorrowed, + tvl: () => ({}), + borrowed: () => ({}), }, }; From 9ec41dd8b91b92d47329ede7e66325ee50faed11 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 23 Jun 2023 10:55:35 +0200 Subject: [PATCH 0863/1354] add klayswap v3 --- projects/klayswap-v3/index.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 projects/klayswap-v3/index.js diff --git a/projects/klayswap-v3/index.js b/projects/klayswap-v3/index.js new file mode 100644 index 0000000000..91d0d5c309 --- /dev/null +++ b/projects/klayswap-v3/index.js @@ -0,0 +1,35 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') + +async function v3Tvl(_, _b, _cb, { api, }) { + const factory = '0xA15Be7e90df29A4aeaD0C7Fc86f7a9fBe6502Ac9'; + const wklay = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432'; + const klay = '0x0000000000000000000000000000000000000000'; + + const fromBlock = 124342981; + const eventAbi = 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, uint256 exid)'; + const topics = [ + '0x20a108faf9dc51ca2b459a109d08568e65a9cb87569b6b3a334c275d504ff94f', + ]; + + const logs = await getLogs({ + api, + target: factory, + topics, + fromBlock, + eventAbi, + onlyArgs: true, + }) + + return sumTokens2({ + api, ownerTokens: logs.map(i => { + return [[(i.token0.toLowerCase() == wklay) ? klay : i.token0, i.token1], i.pool] + }), + }) +} + +module.exports = { + klaytn: { + tvl: v3Tvl, + }, +} \ No newline at end of file From eebbd5c53ac3259990223d5d7d3a333e999fcf32 Mon Sep 17 00:00:00 2001 From: Avedith Date: Fri, 23 Jun 2023 19:09:43 +1000 Subject: [PATCH 0864/1354] Update RubyDex Vault (#6617) * Update RubyDex Vault * Remove unneeded code --- projects/rubydex/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/projects/rubydex/index.js b/projects/rubydex/index.js index ce5198f8e4..88d8783662 100644 --- a/projects/rubydex/index.js +++ b/projects/rubydex/index.js @@ -1,11 +1,10 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); -const ARBITRUM_USDT = ADDRESSES.arbitrum.USDT; -const VAULT_CONTRACT = '0xa55D96B2EC5c5899fC69886CACfCba65b91bf8B6'; +const VAULT_CONTRACT = '0x4a7c10780afdba628332e31c9e7d1675cfad594c'; module.exports = { methodology: 'counts the number of USDT tokens in the RubyDex Vault contract.', arbitrum: { - tvl: sumTokensExport({ owner: VAULT_CONTRACT, tokens: [ARBITRUM_USDT] }), + tvl: sumTokensExport({ owner: VAULT_CONTRACT, tokens: [ADDRESSES.arbitrum.USDT] }), } -}; \ No newline at end of file +}; From 62a4c3752618e864f7e2ea8741945acecd001f58 Mon Sep 17 00:00:00 2001 From: ajalalniya Date: Fri, 23 Jun 2023 14:54:32 +0200 Subject: [PATCH 0865/1354] Add zksync pools --- projects/crowdswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/crowdswap/index.js b/projects/crowdswap/index.js index bb55e3cf05..9fc900a73c 100644 --- a/projects/crowdswap/index.js +++ b/projects/crowdswap/index.js @@ -27,6 +27,7 @@ const config = { arbitrum: { factory: '0x9ff74eea1e7f0f8ee437b70d68f7cdc1a1030642', fromBlock: 91681087, }, polygon: { factory: '0xab7dac1daf712693539d770a967a9bc7ba47470c', fromBlock: 37984740, }, bsc: { factory: '0x08f65111cb9b517b10e5c1e63cb2224467e7988a', fromBlock: 25927093, }, + zksync: { factory: '0x049D3809043d137591687170Fc323DBcDFe83283', fromBlock: 2714942, }, } Object.keys(config).forEach(chain => { From 92c71b52ce746e794df7c85bc4fca4b1f5bc3cf8 Mon Sep 17 00:00:00 2001 From: ajalalniya Date: Fri, 23 Jun 2023 15:13:44 +0200 Subject: [PATCH 0866/1354] change zksync to era --- projects/crowdswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/crowdswap/index.js b/projects/crowdswap/index.js index 9fc900a73c..101bca241e 100644 --- a/projects/crowdswap/index.js +++ b/projects/crowdswap/index.js @@ -27,7 +27,7 @@ const config = { arbitrum: { factory: '0x9ff74eea1e7f0f8ee437b70d68f7cdc1a1030642', fromBlock: 91681087, }, polygon: { factory: '0xab7dac1daf712693539d770a967a9bc7ba47470c', fromBlock: 37984740, }, bsc: { factory: '0x08f65111cb9b517b10e5c1e63cb2224467e7988a', fromBlock: 25927093, }, - zksync: { factory: '0x049D3809043d137591687170Fc323DBcDFe83283', fromBlock: 2714942, }, + era: { factory: '0x049D3809043d137591687170Fc323DBcDFe83283', fromBlock: 2714942, }, } Object.keys(config).forEach(chain => { From 25cea2b972417b6dec05b9ecef1c60dd157c4528 Mon Sep 17 00:00:00 2001 From: TiTi Protocol <82432369+titimoney@users.noreply.github.com> Date: Sat, 24 Jun 2023 01:18:32 +0800 Subject: [PATCH 0867/1354] Add files via upload (#6619) --- projects/titi-finance/index.js | 56 ++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 projects/titi-finance/index.js diff --git a/projects/titi-finance/index.js b/projects/titi-finance/index.js new file mode 100644 index 0000000000..3418ee2270 --- /dev/null +++ b/projects/titi-finance/index.js @@ -0,0 +1,56 @@ +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensAndLPsSharedOwners, sumTokens2 } = require('../helper/unwrapLPs') +const { stakings } = require("../helper/staking"); + +// -------------------------- + +const ethTiTiToken = "0x3bdffA70f4b4E6985eED50453c7C0D4A15dcEc52"; // TiTi Token +const ethTiTiStaking = "0x5390Dbf4958F21BB317C72744c110977F4c03311"; // TiTi Staking + +const eraTiTiToken = "0x4EBfb78C4780C304dff7de518db630b67e3F044b"; // TiTi Token Era +const eraTiTiStaking = "0x1B05972C2e46288201E0432262bd8e925d4fCF94"; // TiTi Staking Era + + +async function ethTvl() { + const balances = {}; + + const ownerAddresses = [ + "0x49a0c2076DE4801bcadFEf78d0FA63cEC0AD1cB4", // MAMMSwapPair + ]; + + const tokenAddresses = [ + [ADDRESSES.ethereum.USDC, false], // USDC + ]; + + await sumTokensAndLPsSharedOwners(balances, tokenAddresses, ownerAddresses); + + return balances; +} + +// zksync era +async function eraTvl(_, _b, _cb, { api }) { + let balances = {}; + + const ownerAddresses = [ + "0xc856175575F6406b59AD6822c3114494990750DC", // MAMMSwapPair + ]; + + const tokenAddresses = [ + ADDRESSES.era.USDC // USDC + ]; + + balances = await sumTokens2({ api, tokens: tokenAddresses, owners: ownerAddresses }); + return balances; +} + +module.exports = { + methodology: `Calculate the reserve-type assets locked in the contract, including the user's stake funds in MarketMakerFund and the reserve of TiUSD issued by the protocol, TiTi-AMMs used to provide liquidity TiUSD is not included`, + ethereum: { + tvl: ethTvl, + // staking: stakings([ethTiTiStaking], [ethTiTiToken], 'ethereum') + }, + era: { + tvl: eraTvl, + // staking: stakings([eraTiTiStaking], eraTiTiToken, "era") + }, +} \ No newline at end of file From 3d78bff42c65d6f5deb302baec426870464b0c8c Mon Sep 17 00:00:00 2001 From: KannagiFinance <131143958+KannagiFinance@users.noreply.github.com> Date: Sat, 24 Jun 2023 01:50:57 +0800 Subject: [PATCH 0868/1354] Modify the TVL calculation method for the USDT vault (#6624) --- projects/kannagi-finance/index.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/projects/kannagi-finance/index.js b/projects/kannagi-finance/index.js index a0cda90c0e..c664bf0ca3 100644 --- a/projects/kannagi-finance/index.js +++ b/projects/kannagi-finance/index.js @@ -1,9 +1,14 @@ const abi = require("./abi.json"); const {yieldHelper} = require('../helper/yieldHelper'); +const { ethers } = require("ethers"); const KANA_ADDRESS = "0x26aC1D9945f65392B8E4E6b895969b5c01A7B414"; const YIELD_ADDRESS= "0x6E415ba5a37761256D13E84B45f4822c179DEF47"; +const USDT_ADDRESS = "era:0x493257fd37edb34451f62edf8d2a0c418852ba4c"; +const CoinGecko_USDT_ID = "tether"; -module.exports = yieldHelper({ + +function yieldHelperWrapper(){ + const helperReturn = yieldHelper({ project: 'kannagi-finance', chain: 'era', masterchef: YIELD_ADDRESS, @@ -14,3 +19,21 @@ module.exports = yieldHelper({ getReservesABI: abi.reserves, } }) + +const tvlFun = helperReturn.era.tvl; + +const tvlFunWrapper =async function(_, _b, _cb, { api }){ + const tvlBalances = await tvlFun(_, _b, _cb, { api }) + if(tvlBalances[USDT_ADDRESS]!=='0'&&tvlBalances[USDT_ADDRESS]!==undefined){ + let balance = ethers.utils.formatUnits(ethers.BigNumber.from(tvlBalances[USDT_ADDRESS]),6); + tvlBalances[CoinGecko_USDT_ID] = balance; + delete tvlBalances[USDT_ADDRESS]; + } + return tvlBalances; +} +helperReturn.era.tvl = tvlFunWrapper + +return helperReturn; +} + +module.exports = yieldHelperWrapper() From 7b66c2977b368a7ff43d249657e1b47d08398d1c Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 23 Jun 2023 18:55:29 +0100 Subject: [PATCH 0869/1354] small update --- projects/kannagi-finance/index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/kannagi-finance/index.js b/projects/kannagi-finance/index.js index c664bf0ca3..6c8c5f085e 100644 --- a/projects/kannagi-finance/index.js +++ b/projects/kannagi-finance/index.js @@ -1,10 +1,8 @@ const abi = require("./abi.json"); const {yieldHelper} = require('../helper/yieldHelper'); -const { ethers } = require("ethers"); const KANA_ADDRESS = "0x26aC1D9945f65392B8E4E6b895969b5c01A7B414"; const YIELD_ADDRESS= "0x6E415ba5a37761256D13E84B45f4822c179DEF47"; const USDT_ADDRESS = "era:0x493257fd37edb34451f62edf8d2a0c418852ba4c"; -const CoinGecko_USDT_ID = "tether"; function yieldHelperWrapper(){ @@ -25,8 +23,8 @@ const tvlFun = helperReturn.era.tvl; const tvlFunWrapper =async function(_, _b, _cb, { api }){ const tvlBalances = await tvlFun(_, _b, _cb, { api }) if(tvlBalances[USDT_ADDRESS]!=='0'&&tvlBalances[USDT_ADDRESS]!==undefined){ - let balance = ethers.utils.formatUnits(ethers.BigNumber.from(tvlBalances[USDT_ADDRESS]),6); - tvlBalances[CoinGecko_USDT_ID] = balance; + let balance = (tvlBalances[USDT_ADDRESS])/1e6; + tvlBalances["tether"] = balance; delete tvlBalances[USDT_ADDRESS]; } return tvlBalances; From a23c2e7c600b3095ed2b8dc91a24cea574238fed Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 23 Jun 2023 21:36:31 +0100 Subject: [PATCH 0870/1354] add more tokens --- projects/treasury/perion.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/treasury/perion.js b/projects/treasury/perion.js index bf25dc5a5f..fcdda6ac48 100644 --- a/projects/treasury/perion.js +++ b/projects/treasury/perion.js @@ -10,10 +10,12 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.DAI, '0x60bE1e1fE41c1370ADaF5d8e66f07Cf1C2Df2268', // PERC '0x549020a9Cb845220D66d3E9c6D9F9eF61C981102', // SIDIUS '0x34Be5b8C30eE4fDe069DC878989686aBE9884470', //SENATE ADDRESSES.ethereum.USDT, //USDT + '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', //stETH ], owners: treasuryContractsETH, ownTokens: [PERC], From 86a2eba718013e6403ceb8b214e808e1805159ec Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 24 Jun 2023 03:55:38 +0100 Subject: [PATCH 0871/1354] add hallmarks --- projects/pulsedao/index.js | 3 +++ projects/spadefinance/index.js | 4 +++- projects/zombi/index.js | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/pulsedao/index.js b/projects/pulsedao/index.js index 9b0fdbc954..f05a113ee0 100644 --- a/projects/pulsedao/index.js +++ b/projects/pulsedao/index.js @@ -10,6 +10,9 @@ const lps = [ ] module.exports = { + hallmarks: [ + [1647216000, "Rug Pull"] + ], deadFrom: 1648765747, misrepresentedTokens: true, ...tombTvl(pld, pshare, rewardPool, boardroom, lps, "fantom", undefined, false, lps[1]) diff --git a/projects/spadefinance/index.js b/projects/spadefinance/index.js index 61fb058fdf..e49d8db310 100644 --- a/projects/spadefinance/index.js +++ b/projects/spadefinance/index.js @@ -24,6 +24,8 @@ module.exports = { staking: stakingPricedLP(spadechef, spade, "fantom", spadeFtmLP, "fantom"), pool2: pool2Exports(spadechef, [spadeFtmLP, spadeUsdcLP], "fantom"), }, - + hallmarks: [ + [1647734400, "Rug Pull"] + ] } diff --git a/projects/zombi/index.js b/projects/zombi/index.js index a85b2e2297..c8f7f81b8f 100644 --- a/projects/zombi/index.js +++ b/projects/zombi/index.js @@ -19,5 +19,8 @@ const listedTokenGeneris = [ ] module.exports = { + hallmarks: [ + [1646870400, "Rug Pull"] + ], ...zombiTvl(token, share, rewardPool, rewardPoolGeneris, masonry, pool2LPs, listedTokenGeneris, "fantom", undefined, false, "0xe577DF94b4Ea94399B7438e27EA1Ba81717464A0") } From 6946af1a85b88f331ebfdaca749ded524ca59e3b Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 24 Jun 2023 19:45:47 +0100 Subject: [PATCH 0872/1354] curve historical --- projects/curve/historical/abis.js | 19 +++ projects/curve/historical/index.js | 253 +++++++++++++++++++++++++++++ 2 files changed, 272 insertions(+) create mode 100644 projects/curve/historical/abis.js create mode 100644 projects/curve/historical/index.js diff --git a/projects/curve/historical/abis.js b/projects/curve/historical/abis.js new file mode 100644 index 0000000000..e77735f7b8 --- /dev/null +++ b/projects/curve/historical/abis.js @@ -0,0 +1,19 @@ + +let abis = {}; + +abis.compoundv1 = [{"name":"TokenExchange","inputs":[{"type":"address","name":"buyer","indexed":true},{"type":"int128","name":"sold_id","indexed":false},{"type":"uint256","name":"tokens_sold","indexed":false},{"type":"int128","name":"bought_id","indexed":false},{"type":"uint256","name":"tokens_bought","indexed":false}],"anonymous":false,"type":"event"},{"name":"TokenExchangeUnderlying","inputs":[{"type":"address","name":"buyer","indexed":true},{"type":"int128","name":"sold_id","indexed":false},{"type":"uint256","name":"tokens_sold","indexed":false},{"type":"int128","name":"bought_id","indexed":false},{"type":"uint256","name":"tokens_bought","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityImbalance","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitNewAdmin","inputs":[{"type":"uint256","name":"deadline","indexed":true,"unit":"sec"},{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"NewAdmin","inputs":[{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"CommitNewParameters","inputs":[{"type":"uint256","name":"deadline","indexed":true,"unit":"sec"},{"type":"uint256","name":"A","indexed":false},{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewParameters","inputs":[{"type":"uint256","name":"A","indexed":false},{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address[2]","name":"_coins"},{"type":"address[2]","name":"_underlying_coins"},{"type":"address","name":"_pool_token"},{"type":"uint256","name":"_A"},{"type":"uint256","name":"_fee"}],"constant":false,"payable":false,"type":"constructor"},{"name":"get_virtual_price","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1084167},{"name":"calc_token_amount","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"uint256[2]","name":"amounts"},{"type":"bool","name":"deposit"}],"constant":true,"payable":false,"type":"function","gas":4239939},{"name":"add_liquidity","outputs":[],"inputs":[{"type":"uint256[2]","name":"amounts"},{"type":"uint256","name":"min_mint_amount"}],"constant":false,"payable":false,"type":"function","gas":6479997},{"name":"get_dy","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"constant":true,"payable":false,"type":"function","gas":2543681},{"name":"get_dx","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dy"}],"constant":true,"payable":false,"type":"function","gas":2543687},{"name":"get_dy_underlying","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"constant":true,"payable":false,"type":"function","gas":2543506},{"name":"get_dx_underlying","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dy"}],"constant":true,"payable":false,"type":"function","gas":2543512},{"name":"exchange","outputs":[],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"}],"constant":false,"payable":false,"type":"function","gas":5184573},{"name":"exchange_underlying","outputs":[],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"}],"constant":false,"payable":false,"type":"function","gas":5200817},{"name":"remove_liquidity","outputs":[],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[2]","name":"min_amounts"}],"constant":false,"payable":false,"type":"function","gas":153898},{"name":"remove_liquidity_imbalance","outputs":[],"inputs":[{"type":"uint256[2]","name":"amounts"},{"type":"uint256","name":"max_burn_amount"}],"constant":false,"payable":false,"type":"function","gas":6479708},{"name":"commit_new_parameters","outputs":[],"inputs":[{"type":"uint256","name":"amplification"},{"type":"uint256","name":"new_fee"},{"type":"uint256","name":"new_admin_fee"}],"constant":false,"payable":false,"type":"function","gas":146105},{"name":"apply_new_parameters","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":133512},{"name":"revert_new_parameters","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":21835},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"_owner"}],"constant":false,"payable":false,"type":"function","gas":74512},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":60568},{"name":"revert_transfer_ownership","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":21925},{"name":"withdraw_admin_fees","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":12831},{"name":"kill_me","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":37878},{"name":"unkill_me","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":22015},{"name":"coins","outputs":[{"type":"address","name":"out"}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":2190},{"name":"underlying_coins","outputs":[{"type":"address","name":"out"}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":2220},{"name":"balances","outputs":[{"type":"uint256","name":"out"}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":2250},{"name":"A","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2081},{"name":"fee","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2111},{"name":"admin_fee","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2141},{"name":"owner","outputs":[{"type":"address","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2171},{"name":"admin_actions_deadline","outputs":[{"type":"uint256","unit":"sec","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2201},{"name":"transfer_ownership_deadline","outputs":[{"type":"uint256","unit":"sec","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2231},{"name":"future_A","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2261},{"name":"future_fee","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2291},{"name":"future_admin_fee","outputs":[{"type":"uint256","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2321},{"name":"future_owner","outputs":[{"type":"address","name":"out"}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2351}]; + +abis.abiNew = [{"name":"TokenExchange","inputs":[{"type":"address","name":"buyer","indexed":true},{"type":"int128","name":"sold_id","indexed":false},{"type":"uint256","name":"tokens_sold","indexed":false},{"type":"int128","name":"bought_id","indexed":false},{"type":"uint256","name":"tokens_bought","indexed":false}],"anonymous":false,"type":"event"},{"name":"TokenExchangeUnderlying","inputs":[{"type":"address","name":"buyer","indexed":true},{"type":"int128","name":"sold_id","indexed":false},{"type":"uint256","name":"tokens_sold","indexed":false},{"type":"int128","name":"bought_id","indexed":false},{"type":"uint256","name":"tokens_bought","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityOne","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"token_amount","indexed":false},{"type":"uint256","name":"coin_amount","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityImbalance","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitNewAdmin","inputs":[{"type":"uint256","name":"deadline","indexed":true},{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"NewAdmin","inputs":[{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"CommitNewFee","inputs":[{"type":"uint256","name":"deadline","indexed":true},{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewFee","inputs":[{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"name":"RampA","inputs":[{"type":"uint256","name":"old_A","indexed":false},{"type":"uint256","name":"new_A","indexed":false},{"type":"uint256","name":"initial_time","indexed":false},{"type":"uint256","name":"future_time","indexed":false}],"anonymous":false,"type":"event"},{"name":"StopRampA","inputs":[{"type":"uint256","name":"A","indexed":false},{"type":"uint256","name":"t","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"_owner"},{"type":"address[2]","name":"_coins"},{"type":"address","name":"_pool_token"},{"type":"address","name":"_base_pool"},{"type":"uint256","name":"_A"},{"type":"uint256","name":"_fee"},{"type":"uint256","name":"_admin_fee"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"A","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":5199},{"name":"A_precise","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":5161},{"name":"get_virtual_price","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":992460},{"name":"calc_token_amount","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"amounts"},{"type":"bool","name":"is_deposit"}],"stateMutability":"view","type":"function","gas":3938567},{"name":"add_liquidity","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"amounts"},{"type":"uint256","name":"min_mint_amount"}],"stateMutability":"nonpayable","type":"function","gas":6136485},{"name":"get_dy","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"stateMutability":"view","type":"function","gas":2390018},{"name":"get_dy_underlying","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"stateMutability":"view","type":"function","gas":2393224},{"name":"exchange","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"}],"stateMutability":"nonpayable","type":"function","gas":2617039},{"name":"exchange_underlying","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"}],"stateMutability":"nonpayable","type":"function","gas":2631854},{"name":"remove_liquidity","outputs":[{"type":"uint256[2]","name":""}],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[2]","name":"min_amounts"}],"stateMutability":"nonpayable","type":"function","gas":163158},{"name":"remove_liquidity_imbalance","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"amounts"},{"type":"uint256","name":"max_burn_amount"}],"stateMutability":"nonpayable","type":"function","gas":6136334},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"}],"stateMutability":"view","type":"function","gas":4389},{"name":"remove_liquidity_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"_min_amount"}],"stateMutability":"nonpayable","type":"function","gas":3826262},{"name":"ramp_A","outputs":[],"inputs":[{"type":"uint256","name":"_future_A"},{"type":"uint256","name":"_future_time"}],"stateMutability":"nonpayable","type":"function","gas":151894},{"name":"stop_ramp_A","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":148655},{"name":"commit_new_fee","outputs":[],"inputs":[{"type":"uint256","name":"new_fee"},{"type":"uint256","name":"new_admin_fee"}],"stateMutability":"nonpayable","type":"function","gas":110491},{"name":"apply_new_fee","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":97272},{"name":"revert_new_parameters","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":21925},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"_owner"}],"stateMutability":"nonpayable","type":"function","gas":74663},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":60740},{"name":"revert_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":22015},{"name":"admin_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"i"}],"stateMutability":"view","type":"function","gas":3511},{"name":"withdraw_admin_fees","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":9232},{"name":"donate_admin_fees","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":74995},{"name":"kill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38028},{"name":"unkill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":22165},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2250},{"name":"balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2280},{"name":"fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2201},{"name":"admin_fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2231},{"name":"owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2261},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2291},{"name":"base_pool","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2321},{"name":"base_virtual_price","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2351},{"name":"base_cache_updated","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2381},{"name":"base_coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2520},{"name":"initial_A","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2441},{"name":"future_A","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2471},{"name":"initial_A_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2501},{"name":"future_A_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2531},{"name":"admin_actions_deadline","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2561},{"name":"transfer_ownership_deadline","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2591},{"name":"future_fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2621},{"name":"future_admin_fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2651},{"name":"future_owner","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2681}] + +abis.abisBTC = [{"name":"TokenExchange","inputs":[{"type":"address","name":"buyer","indexed":true},{"type":"int128","name":"sold_id","indexed":false},{"type":"uint256","name":"tokens_sold","indexed":false},{"type":"int128","name":"bought_id","indexed":false},{"type":"uint256","name":"tokens_bought","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[3]","name":"token_amounts","indexed":false},{"type":"uint256[3]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[3]","name":"token_amounts","indexed":false},{"type":"uint256[3]","name":"fees","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityOne","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"token_amount","indexed":false},{"type":"uint256","name":"coin_amount","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityImbalance","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[3]","name":"token_amounts","indexed":false},{"type":"uint256[3]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitNewAdmin","inputs":[{"type":"uint256","name":"deadline","indexed":true,"unit":"sec"},{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"NewAdmin","inputs":[{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"CommitNewFee","inputs":[{"type":"uint256","name":"deadline","indexed":true,"unit":"sec"},{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewFee","inputs":[{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"name":"RampA","inputs":[{"type":"uint256","name":"old_A","indexed":false},{"type":"uint256","name":"new_A","indexed":false},{"type":"uint256","name":"initial_time","indexed":false,"unit":"sec"},{"type":"uint256","name":"future_time","indexed":false,"unit":"sec"}],"anonymous":false,"type":"event"},{"name":"StopRampA","inputs":[{"type":"uint256","name":"A","indexed":false},{"type":"uint256","name":"t","indexed":false,"unit":"sec"}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address[3]","name":"_coins"},{"type":"address","name":"_pool_token"},{"type":"uint256","name":"_A"},{"type":"uint256","name":"_fee"}],"constant":false,"payable":false,"type":"constructor"},{"name":"A","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":5227},{"name":"get_virtual_price","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1150488},{"name":"calc_token_amount","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[3]","name":"amounts"},{"type":"bool","name":"deposit"}],"constant":true,"payable":false,"type":"function","gas":4526955},{"name":"add_liquidity","outputs":[],"inputs":[{"type":"uint256[3]","name":"amounts"},{"type":"uint256","name":"min_mint_amount"}],"constant":false,"payable":false,"type":"function","gas":6972762},{"name":"get_dy","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"constant":true,"payable":false,"type":"function","gas":2687932},{"name":"get_dy_underlying","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"constant":true,"payable":false,"type":"function","gas":2687745},{"name":"exchange","outputs":[],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"}],"constant":false,"payable":false,"type":"function","gas":5499133},{"name":"remove_liquidity","outputs":[],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[3]","name":"min_amounts"}],"constant":false,"payable":false,"type":"function","gas":196975},{"name":"remove_liquidity_imbalance","outputs":[],"inputs":[{"type":"uint256[3]","name":"amounts"},{"type":"uint256","name":"max_burn_amount"}],"constant":false,"payable":false,"type":"function","gas":6972281},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"}],"constant":true,"payable":false,"type":"function","gas":15405},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_amount"}],"constant":false,"payable":false,"type":"function","gas":4044074},{"name":"ramp_A","outputs":[],"inputs":[{"type":"uint256","name":"_future_A"},{"type":"uint256","unit":"sec","name":"_future_time"}],"constant":false,"payable":false,"type":"function","gas":151937},{"name":"stop_ramp_A","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":148697},{"name":"commit_new_fee","outputs":[],"inputs":[{"type":"uint256","name":"new_fee"},{"type":"uint256","name":"new_admin_fee"}],"constant":false,"payable":false,"type":"function","gas":110521},{"name":"apply_new_fee","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":97220},{"name":"revert_new_parameters","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":21955},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"_owner"}],"constant":false,"payable":false,"type":"function","gas":74632},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":60688},{"name":"revert_transfer_ownership","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":22045},{"name":"withdraw_admin_fees","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":17565},{"name":"kill_me","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":37998},{"name":"unkill_me","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":22135},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":2310},{"name":"balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":2340},{"name":"fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2171},{"name":"admin_fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2201},{"name":"owner","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2231},{"name":"initial_A","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2261},{"name":"future_A","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2291},{"name":"initial_A_time","outputs":[{"type":"uint256","unit":"sec","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2321},{"name":"future_A_time","outputs":[{"type":"uint256","unit":"sec","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2351},{"name":"admin_actions_deadline","outputs":[{"type":"uint256","unit":"sec","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2381},{"name":"transfer_ownership_deadline","outputs":[{"type":"uint256","unit":"sec","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2411},{"name":"future_fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2441},{"name":"future_admin_fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2471},{"name":"future_owner","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":2501}]; + +abis.cTokens = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"repayAmount","type":"uint256"}],"name":"repayBorrow","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactorMantissa","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"borrower","type":"address"},{"name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newComptroller","type":"address"}],"name":"_setComptroller","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"comptroller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"reduceAmount","type":"uint256"}],"name":"_reduceReserves","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"initialExchangeRateMantissa","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"accrualBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"totalBorrowsCurrent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"supplyRatePerBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"liquidator","type":"address"},{"name":"borrower","type":"address"},{"name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRateCurrent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"borrowAmount","type":"uint256"}],"name":"borrow","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"_acceptAdmin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newInterestRateModel","type":"address"}],"name":"_setInterestRateModel","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"interestRateModel","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"borrower","type":"address"},{"name":"repayAmount","type":"uint256"},{"name":"cTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowRatePerBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newReserveFactorMantissa","type":"uint256"}],"name":"_setReserveFactor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isCToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"underlying_","type":"address"},{"name":"comptroller_","type":"address"},{"name":"interestRateModel_","type":"address"},{"name":"initialExchangeRateMantissa_","type":"uint256"},{"name":"name_","type":"string"},{"name":"symbol_","type":"string"},{"name":"decimals_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"interestAccumulated","type":"uint256"},{"indexed":false,"name":"borrowIndex","type":"uint256"},{"indexed":false,"name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minter","type":"address"},{"indexed":false,"name":"mintAmount","type":"uint256"},{"indexed":false,"name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"redeemer","type":"address"},{"indexed":false,"name":"redeemAmount","type":"uint256"},{"indexed":false,"name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"borrowAmount","type":"uint256"},{"indexed":false,"name":"accountBorrows","type":"uint256"},{"indexed":false,"name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"payer","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"repayAmount","type":"uint256"},{"indexed":false,"name":"accountBorrows","type":"uint256"},{"indexed":false,"name":"totalBorrows","type":"uint256"}],"name":"RepayBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"liquidator","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"repayAmount","type":"uint256"},{"indexed":false,"name":"cTokenCollateral","type":"address"},{"indexed":false,"name":"seizeTokens","type":"uint256"}],"name":"LiquidateBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldPendingAdmin","type":"address"},{"indexed":false,"name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldAdmin","type":"address"},{"indexed":false,"name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldComptroller","type":"address"},{"indexed":false,"name":"newComptroller","type":"address"}],"name":"NewComptroller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldInterestRateModel","type":"address"},{"indexed":false,"name":"newInterestRateModel","type":"address"}],"name":"NewMarketInterestRateModel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldReserveFactorMantissa","type":"uint256"},{"indexed":false,"name":"newReserveFactorMantissa","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin","type":"address"},{"indexed":false,"name":"reduceAmount","type":"uint256"},{"indexed":false,"name":"newTotalReserves","type":"uint256"}],"name":"ReservesReduced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"error","type":"uint256"},{"indexed":false,"name":"info","type":"uint256"},{"indexed":false,"name":"detail","type":"uint256"}],"name":"Failure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Approval","type":"event"}]; + + +abis.yTokens = [{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"aave","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"aaveToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"approveToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"apr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceAave","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceCompound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceCompoundInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceDydx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceFulcrum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceFulcrumInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"calcPoolValueInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"compound","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dydx","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fulcrum","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAave","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAaveCore","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"provider","outputs":[{"internalType":"enum yTUSD.Lender","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"rebalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"recommend","outputs":[{"internalType":"enum yTUSD.Lender","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_APR","type":"address"}],"name":"set_new_APR","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_COMPOUND","type":"address"}],"name":"set_new_COMPOUND","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_new_DTOKEN","type":"uint256"}],"name":"set_new_DTOKEN","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyAave","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyCompound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyDydx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyFulcrum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}] + + + +module.exports = { + abis +} \ No newline at end of file diff --git a/projects/curve/historical/index.js b/projects/curve/historical/index.js new file mode 100644 index 0000000000..02c468fd61 --- /dev/null +++ b/projects/curve/historical/index.js @@ -0,0 +1,253 @@ +const { Web3 } = require('web3'); +const BigNumber = require("bignumber.js"); +const axios = require("axios"); +const web3 = new Web3(`https://eth.llamarpc.com`); +const abis = require('./abis.js') +const { toUSDTBalances } = require('../../helper/balances') + + +let swaps = [ + { + 'name': 'tbtc', + 'address': '0xc25099792e9349c7dd09759744ea681c7de2cb66', + 'coins': [0], + 'type': 'btc', + 'abi': abis.abis.abiNew + }, + { + 'name': 'hbtc', + 'address': '0x4CA9b3063Ec5866A4B82E437059D2C43d1be596F', + 'coins': [0], + 'type': 'btc', + 'abi': abis.abis.abiNew + }, + { + 'name': 'sbtc', + 'address': '0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714', + 'coins': [0,1,2], + 'type': 'btc', + 'abi': abis.abis.abisBTC + }, + { + 'name': 'ren', + 'address': '0x93054188d876f558f4a66B2EF1d97d16eDf0895B', + 'coins': [0,1], + 'type': 'btc', + 'abi': abis.abis.abisBTC + }, + { + 'name': 'rsv', + 'address': '0xC18cC39da8b11dA8c3541C598eE022258F9744da', + 'coins': [0], + 'type': 1, + 'abi': abis.abis.abiNew + }, + { + 'name': 'musd', + 'address': '0x8474DdbE98F5aA3179B3B3F5942D724aFcdec9f6', + 'coins': [0], + 'type': 1, + 'abi': abis.abis.abiNew + }, + { + 'name': 'linkusd', + 'address': '0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171', + 'coins': [0], + 'type': 1, + 'abi': abis.abis.abiNew + }, + { + 'name': 'usdn', + 'address': '0x0f9cb53Ebe405d49A0bbdBD291A65Ff571bC83e1', + 'coins': [0], + 'type': 1, + 'abi': abis.abis.abiNew + }, + { + 'name': 'usdk', + 'address': '0x3E01dD8a5E1fb3481F0F589056b428Fc308AF0Fb', + 'coins': [0], + 'type': 1, + 'abi': abis.abis.abiNew + }, + { + 'name': 'gusd', + 'address': '0x4f062658EaAF2C1ccf8C8e36D6824CDf41167956', + 'coins': [0], + 'type': 1, + 'abi': abis.abis.abiNew + }, + { + 'name': 'compoundv1', + 'address': '0xA2B47E3D5c44877cca798226B7B8118F9BFb7A56', + 'coins': [0,1], + 'type': 'compound', + 'abi': abis.abis.compoundv1 + }, + { + 'name': 'usdtPool', + 'address': '0x52EA46506B9CC5Ef470C5bf89f17Dc28bB35D85C', + 'coins': [0,1,2], + 'type': 'compound', + 'abi': abis.abis.compoundv1 + }, + { + 'name': 'YPool', + 'address': '0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51', + 'coins': [0,1,2,3], + 'type': 'yToken', + 'abi': abis.abis.compoundv1 + }, + { + 'name': 'PAX', + 'address': '0x06364f10B501e868329afBc005b3492902d6C763', + 'coins': [0,1,2,3], + 'type': 'yToken', + 'abi': abis.abis.compoundv1 + }, + { + 'name': 'BUSD', + 'address': '0x79a8C46DeA5aDa233ABaFFD40F3A0A2B1e5A4F27', + 'coins': [0,1,2,3], + 'type': 'yToken', + 'abi': abis.abis.compoundv1 + }, + { + 'name': 'sUSD', + 'address': '0xA5407eAE9Ba41422680e2e00537571bcC53efBfD', + 'coins': [0,1,2,3], + 'type': 1, + 'abi': abis.abis.abisBTC + }, + { + 'name': '3Pool', + 'address': '0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7', + 'coins': [0,1,2], + 'type': 1, + 'abi': abis.abis.abiNew + }, + { + 'name': 'DUSD', + 'address': '0x8038C01A0390a8c547446a0b2c18fc9aEFEcc10c', + 'coins': [0], + 'type': 1, + 'abi': abis.abis.abiNew + }, + + + +] + +let coinDecimals = [ + { + '0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa': '18', + '0x0316EB71485b0Ab14103307bf65a021042c6d380': '18', + '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D': '8', + '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599': '8', + '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6': '18', + '0x196f4727526eA7FB1e17b2071B3d8eAA38486988': '18', + '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5': '18', + '0x0E2EC54fC0B509F445631Bf4b91AB8168230C752': '18', //linkusd + '0x674C6Ad92Fd080e4004b2312b45f796a192D27a0': '18', //USDN + '0x1c48f86ae57291F7686349F12601910BD8D470bb': '18', //USDK + '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd': '2', //GUSD + '0x39AA39c021dfbaE8faC545936693aC917d5E7563': '8', //cUSD + '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643': '8', //cDAI + '0xdAC17F958D2ee523a2206206994597C13D831ec7': '6', //USDT + '0x73a052500105205d34Daf004eAb301916DA8190f': '18', //yTUSD + '0xd6aD7a6750A7593E092a9B218d66C0A814a3436e': '6', ///yUSDC + '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01': '18', ///yDAI + '0x83f798e925BcD4017Eb265844FDDAbb448f1707D': '6', ///yUSDT + '0x8E870D67F660D95d5be530380D0eC0bd388289E1': '18', //PAX + '0x9777d7E2b60bB01759D0E2f8be2095df444cb07E': '6', ///ycUSDC + '0x99d1Fa417f94dcD62BfE781a1213c092a47041Bc': '18', ///ycDAI + '0x1bE5d71F2dA660BFdee8012dDc58D024448A0A59': '6', ///ycUSDT + '0x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE': '18', //Y2busd + '0x26EA744E5B887E5205727f55dFBE8685e3b21951': '6', ///y2USDC + '0xC2cB1040220768554cf699b0d863A3cd4324ce32': '18', ///y2DAI + '0xE6354ed5bC4b393a5Aad09f21c46E101e692d447': '6', ///y2USDT + '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51': '18', //sUSD + '0x6B175474E89094C44Da98b954EedeAC495271d0F': '18', //DAI + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48': '6', //USDC + '0x5BC25f649fc4e26069dDF4cF4010F9f706c23831': '18', //dusd + '0x0000000000085d4780B73119b644AE5ecd22b376': '18' + } +] + +async function tvl(timestamp, block) { + var price_feed = await axios.get(`https://coins.llama.fi/prices/historical/${timestamp}/${["bitcoin","cdai","compound-usd-coin"].map(c=>"coingecko:"+c).join(',')}`) + var tvl = 0; + var btcTVL = 0; + await Promise.all( + swaps.map(async item => { + var details = {}; + await Promise.all( + item.coins.map(async i => { + try{ + poolAmount = await calc(item, i, price_feed, block); + if (item.type == 'btc') { + btcTVL += parseFloat(poolAmount); + } else { + tvl += parseFloat(poolAmount ) + } + } catch(e){ + console.log(item.name, i, "failed") + } + }) + ) + }) + ) + + var tvl = (price_feed.data.coins['coingecko:bitcoin'].price * btcTVL) + tvl + return toUSDTBalances(tvl); +} + +async function getVirtualPrice(abi, contract, block) { + var dacontract = new web3.eth.Contract(abi, contract) + dacontract.defaultBlock = block; + var virtualPrice = await dacontract.methods.getPricePerFullShare().call(); + return virtualPrice; +} + + + + + +async function calc(item, i, price_feed, block) { + var dacontract = new web3.eth.Contract(item.abi, item.address) + dacontract.defaultBlock = block + var balances = await dacontract.methods.balances(i).call(); + var coins = await dacontract.methods.coins(i).call(); + + + var poolAmount = await new BigNumber(balances).div(10 ** coinDecimals[0][coins]).toFixed(2); + + + if (item.type == 'compound') { + var multiplier = 1; + if (coins === '0x39AA39c021dfbaE8faC545936693aC917d5E7563') { + multiplier = price_feed.data.coins['coingecko:compound-usd-coin'].price; + } + if (coins === '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643') { + multiplier = price_feed.data.coins['coingecko:cdai'].price; + } + poolAmount = poolAmount * multiplier; + } + + if (item.type == 'yToken') { + var multiplier = 1; + if (coins !== '0x8E870D67F660D95d5be530380D0eC0bd388289E1') { // PAX exception + var multiplier = await getVirtualPrice(abis.abis.yTokens, coins, block) + multiplier = await new BigNumber(multiplier).div(10 ** 18).toFixed(4); + } + poolAmount = poolAmount * multiplier; + } + + return poolAmount; +} + + + +module.exports = { + ethereum:{tvl} +} \ No newline at end of file From ec51ee6e674f385480cf1c386e889e716fe74160 Mon Sep 17 00:00:00 2001 From: LuxsFi <132330168+LuxsFi@users.noreply.github.com> Date: Sat, 24 Jun 2023 20:56:12 +0200 Subject: [PATCH 0873/1354] add facades (#6626) Co-authored-by: Thomas F --- projects/luxs.fi/index.js | 76 ++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/projects/luxs.fi/index.js b/projects/luxs.fi/index.js index 1022b931e7..4647fc18d6 100755 --- a/projects/luxs.fi/index.js +++ b/projects/luxs.fi/index.js @@ -1,42 +1,52 @@ const sdk = require("@defillama/sdk"); -const vaults = { - 'polygon': ["0xE770038935b8D4B0d98118A682D05ce84E489724", "0x5125b6AB66dBAE17ded9841195b572f8c97592Ee", "0x705Aa351FB6c43547FC7E033732d07a9bfa20B1d"], - 'arbitrum': ["0x997C0a71A6C6Cf8aE329F5730Cc01bfd1a176C9e", "0xC9bec60E78E011aA14555c4A13469bE8a0344633", "0xfE48c97F9AB4E65c567f53156f0988F36d97F9a5", "0x7455DF92B0Cd996906Da495724B4B27e8A4FFb21"], - 'bsc': ["0xE324D24fA26BB73f9C104850D44af99ccB18a612", "0x09104993F206cb53e7ac5dBC70DD974f68F1c407", "0xEDd43c446eA21a80eE388010d6db8EfbE366d604", "0x819f6fBD91D99420794Adefdb1604Bfc3182AC39", "0x0F6484f73eEc82024F8F6866f1fdb17B6D9Ce808"], - 'optimism': ["0x0348Bb2730daC30966Ff15849ca6Ae24a93A59C1", "0x5125b6AB66dBAE17ded9841195b572f8c97592Ee", "0x705Aa351FB6c43547FC7E033732d07a9bfa20B1d", "0xE770038935b8D4B0d98118A682D05ce84E489724", "0xEcc4e5e4BbA01E566dBEdBC4B4B817Abe7811Fa5", "0x4744c5EDc84dF3fEad0F5Dcb03de00370d738711", "0x7455DF92B0Cd996906Da495724B4B27e8A4FFb21", "0x15DDd2Fb8c6e9CcAd1D3753120E59fc3BFf9e324", "0xc5697053614EAb2C35e4f20E410C566D862b2213", "0xF291f7207D224Df1CF9702Ca15a33C77883cfCF8", "0x62301063130F11B8DB8141a667Bc33fFEAfC1408", "0x6573d525A70f564c2d65d80Cd9B216926504B77A"] -} +const facades = { + polygon: "0x0708542D895C2559001Fa9e4Bc49C3343735e6e2", + arbitrum: "0xE75254f298a5145438595Aa9d6D4327fCD14418D", + bsc: "0xD187937762c6fd4d7a58C71fD810CbfE22E64a84", + optimism: "0x285cAee14514f30bB178FB56c985e43A47d68E75", +}; + +async function tvl(_, _b, _cb, { api }) { + const vaults = await api.call({ + abi: " function getVaults() external view returns (address[] memory) ", + target: facades[api.chain], + }); -async function tvl(_, _b, _cb, { api, }) { - const balances = {} - const tokens = await api.multiCall({ - abi: 'address:token', - calls: vaults[api.chain], - }) + const balances = {}; + const tokens = await api.multiCall({ + abi: "address:token", + calls: vaults, + }); - const totalBalance = await api.multiCall({ - abi: 'function totalBalance() public view returns (uint256)', - calls: vaults[api.chain], - }) + const totalBalance = await api.multiCall({ + abi: "function getVaultValueLocked(address _vault) external view returns (uint256)", + calls: vaults.map((address) => ({ + target: facades[api.chain], + params: [address], + })), + chain: api.chain, + }); - tokens.forEach((t, i) => sdk.util.sumSingleBalance(balances, t, totalBalance[i], api.chain)) - return balances + tokens.forEach((t, i) => + sdk.util.sumSingleBalance(balances, t, totalBalance[i], api.chain) + ); + return balances; } module.exports = { - misrepresentedTokens: true, - arbitrum: { - tvl: tvl, - }, - optimism: { - tvl: tvl, - }, - polygon: { - tvl: tvl, - }, - bsc: { - tvl: tvl, - }, - methodology: - "TVL is counted from the LuxsFi vaults contracts" + misrepresentedTokens: true, + arbitrum: { + tvl: tvl, + }, + optimism: { + tvl: tvl, + }, + polygon: { + tvl: tvl, + }, + bsc: { + tvl: tvl, + }, + methodology: "TVL is counted from the LuxsFi vaults contracts", }; \ No newline at end of file From 85c4ff12f2d635b989afce54f503cf780e1dde1e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 24 Jun 2023 20:57:25 +0100 Subject: [PATCH 0874/1354] fix syntax --- projects/curve/historical/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/curve/historical/index.js b/projects/curve/historical/index.js index 02c468fd61..e638eb578f 100644 --- a/projects/curve/historical/index.js +++ b/projects/curve/historical/index.js @@ -184,7 +184,7 @@ async function tvl(timestamp, block) { await Promise.all( item.coins.map(async i => { try{ - poolAmount = await calc(item, i, price_feed, block); + const poolAmount = await calc(item, i, price_feed, block); if (item.type == 'btc') { btcTVL += parseFloat(poolAmount); } else { @@ -250,4 +250,4 @@ async function calc(item, i, price_feed, block) { module.exports = { ethereum:{tvl} -} \ No newline at end of file +} From c3c8f539bff9a5afaf83a3ca44b9b94d9eaf1c7a Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Mon, 26 Jun 2023 02:51:22 +0900 Subject: [PATCH 0875/1354] Swapscanner GCKLAY TVL (#6633) --- projects/swapscanner-staking/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/swapscanner-staking/index.js diff --git a/projects/swapscanner-staking/index.js b/projects/swapscanner-staking/index.js new file mode 100644 index 0000000000..e0d48b9560 --- /dev/null +++ b/projects/swapscanner-staking/index.js @@ -0,0 +1,24 @@ +const sdk = require("@defillama/sdk"); +const { nullAddress } = require('../helper/unwrapLPs'); +const chain = 'klaytn' + +const SCNR = { + GCKLAY: '0x999999999939ba65abb254339eec0b2a0dac80e9' +} + +module.exports = { + klaytn: { + tvl: async (_, _b, {klaytn:block}) => { + const gcklayBal = await sdk.api2.abi.call({ + target: SCNR.GCKLAY, + abi: 'erc20:totalSupply', + chain, block, + }) + + const balances = {} + sdk.util.sumSingleBalance(balances, nullAddress, gcklayBal, chain) + return balances; + } + }, + timetravel: false, +} From 37a8b215be7c17ef11953b7cdf575f3967c38e94 Mon Sep 17 00:00:00 2001 From: pulsemaxdefi <135190746+pulsemaxdefi@users.noreply.github.com> Date: Sun, 25 Jun 2023 23:38:32 +0530 Subject: [PATCH 0876/1354] pulsemax finance (#6632) * pulsemax finance * Update index.js use tomb helper --------- Co-authored-by: darkcrystl <111988230+tombhio@users.noreply.github.com> Co-authored-by: Real Shaman <85087525+realdealshaman@users.noreply.github.com> --- projects/pulsemaxfinance/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/pulsemaxfinance/index.js diff --git a/projects/pulsemaxfinance/index.js b/projects/pulsemaxfinance/index.js new file mode 100644 index 0000000000..40b9adf532 --- /dev/null +++ b/projects/pulsemaxfinance/index.js @@ -0,0 +1,17 @@ +const { tombTvl } = require("../helper/tomb"); + +const max = "0x368acF537B1A8EfFE4ceEF11054CBcEAF0302086"; +const pshare = "0xbc57572Ba711C8077222142C3374acE7B0c92231"; +const rewardpool = "0xEb8A0191Fa31F7aCEDeDe618246f7f7f907139bA"; +const boardroom = "0x4c5c8fD88Ba0709949e3C5Be3502500112Cd026c"; + +const pool2LPs = [ + "0x32D1D76bA3df143C7258d933dAfB048f137c42BA", // PSHARE-DAI + "0x0edC492E29Ce7bEd4c71f83513E435f5d81cDEF9", // MAX-DAI + "0x99B45b6f0Dd06866C955207c96431cDA2DA1d34b" // MAX-PSHARE +] + +module.exports = { + misrepresentedTokens: true, + ...tombTvl(max, pshare, rewardpool, boardroom, pool2LPs, "pulse", undefined, false, pool2LPs[0]) +} From 04dd6af974ed3e18d03545ad728f8023d1d5ccff Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 25 Jun 2023 20:30:02 +0100 Subject: [PATCH 0877/1354] fix eralend --- projects/helper/compound.js | 6 +++--- projects/nexon/index.js | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/projects/helper/compound.js b/projects/helper/compound.js index 1f2aa7eee4..fa243b8d28 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -270,13 +270,13 @@ function getCompoundUsdTvl(comptroller, chain, cether, borrowed, abis = { } } -function compoundExports(comptroller, chain, cether, cetheEquivalent, transformAdressRaw, checkForLPTokens, { blacklistedTokens = [], fetchBalances, abis = {} } = {}) { +function compoundExports(comptroller, chain, cether, cetheEquivalent, transformAdressRaw, checkForLPTokens, { blacklistedTokens = [], fetchBalances, abis = {}, resolveLPs=true } = {}) { if (cether !== undefined && cetheEquivalent === undefined) { throw new Error("You need to define the underlying for native cAsset") } return { - tvl: getCompoundV2Tvl(comptroller, chain, transformAdressRaw, cether, cetheEquivalent, false, checkForLPTokens, { blacklistedTokens, fetchBalances, abis }), - borrowed: getCompoundV2Tvl(comptroller, chain, transformAdressRaw, cether, cetheEquivalent, true, checkForLPTokens, { blacklistedTokens, fetchBalances, abis }) + tvl: getCompoundV2Tvl(comptroller, chain, transformAdressRaw, cether, cetheEquivalent, false, checkForLPTokens, { blacklistedTokens, fetchBalances, abis, resolveLPs }), + borrowed: getCompoundV2Tvl(comptroller, chain, transformAdressRaw, cether, cetheEquivalent, true, checkForLPTokens, { blacklistedTokens, fetchBalances, abis, resolveLPs }) } } diff --git a/projects/nexon/index.js b/projects/nexon/index.js index 35b710caa7..f592935d29 100644 --- a/projects/nexon/index.js +++ b/projects/nexon/index.js @@ -2,5 +2,7 @@ const { compoundExports } = require('../helper/compound'); const { nullAddress } = require('../helper/tokenMapping'); module.exports = { - era: compoundExports('0x0171cA5b372eb510245F5FA214F5582911934b3D', 'era', '0x1BbD33384869b30A323e15868Ce46013C82B86FB', nullAddress), + era: compoundExports('0x0171cA5b372eb510245F5FA214F5582911934b3D', 'era', '0x1BbD33384869b30A323e15868Ce46013C82B86FB', nullAddress, undefined, undefined, { + resolveLPs: false + }), }; \ No newline at end of file From 2b0f365c2e69981b9af8171365f7567ab45f95f6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 07:56:24 +0200 Subject: [PATCH 0878/1354] veldrome v2 --- projects/velodrome/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/velodrome/index.js b/projects/velodrome/index.js index 93fe01c2e2..ff8fe7e895 100644 --- a/projects/velodrome/index.js +++ b/projects/velodrome/index.js @@ -1,3 +1,4 @@ +const sdk = require('@defillama/sdk') const {uniTvlExport} = require('../helper/calculateUniTvl.js') module.exports = { @@ -6,7 +7,10 @@ module.exports = { timetravel: true, incentivized: true, optimism: { - tvl: uniTvlExport("0x25CbdDb98b35ab1FF77413456B31EC81A6B6B746", "optimism"), + tvl: sdk.util.sumChainTvls([uniTvlExport("0x25CbdDb98b35ab1FF77413456B31EC81A6B6B746"), uniTvlExport("0xF1046053aa5682b4F9a81b5481394DA16BE5FF5a", undefined, undefined, { + allPairsLength: 'uint256:allPoolsLength', + allPairs: 'function allPools(uint256) view returns (address)', + }, { fetchBalances: true,})]), }, hallmarks:[ [1657760400, "First OP grant awarded"], From 0558467291534c555b6d9699c44153a2b0407440 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Mon, 26 Jun 2023 08:13:07 +0200 Subject: [PATCH 0879/1354] Reuse shared addresses for a bunch of assets (#6625) --- projects/balancer-v1/index.js | 11 +++-- projects/balancer/onchain.js | 5 ++- projects/basis-cash.js | 2 +- projects/bent/constants.js | 2 +- projects/clever/index.js | 5 ++- projects/component/index.js | 2 +- projects/compound-onchain/index.js | 2 +- projects/concentrator/index.js | 4 +- projects/config/hodltree/addresses.js | 6 +-- projects/config/keys.js | 20 ++++----- projects/config/smoothy/abis.js | 2 +- projects/convex/index.js | 2 +- projects/ddex/index.js | 4 +- projects/dydx/index.js | 2 +- projects/fraxfinance/index.js | 2 +- projects/gnosis/index.js | 2 +- projects/helper/coreAssets.json | 4 ++ projects/helper/curvePools.js | 2 +- projects/keep3r/registry.js | 4 +- projects/lyra/index.js | 2 +- projects/maker/abis/makerdao.js | 2 +- projects/maker/index.js | 2 +- projects/ondofinance-v1/index.js | 2 +- projects/pendle/v2.js | 3 +- projects/polynomial-earn/index.js | 11 +++-- projects/polynomial-trade/index.js | 4 +- projects/rari/index.js | 5 +-- projects/ray/index.js | 2 +- projects/redacted/index.js | 2 +- projects/sablier/index.js | 15 +++---- projects/set-protocol/v1.js | 12 +++--- projects/set-protocol/v2.js | 3 -- projects/thales/index.js | 3 +- projects/treasury/aave.js | 58 +++++++++++++-------------- projects/treasury/bancor.js | 4 +- projects/treasury/convex.js | 13 +++--- projects/treasury/gnosis-dao.js | 12 +++--- projects/treasury/idle-dao.js | 24 +++++------ projects/treasury/inverse.js | 20 ++++----- projects/treasury/jpegd.js | 2 +- projects/treasury/mimo-protocol.js | 12 +++--- projects/treasury/paladin-finance.js | 10 ++--- projects/treasury/railgun.js | 54 ++++++++++++------------- projects/treasury/stargate.js | 22 +++++----- projects/treasury/synthetix.js | 16 ++++---- projects/treasury/thellamas.js | 4 +- projects/treasury/yearn.js | 20 +++++---- projects/wonderland/index.js | 19 +++++---- projects/xdai/index.js | 4 +- projects/xtoken/constants.js | 2 +- projects/xtoken/index.js | 6 +-- 51 files changed, 227 insertions(+), 226 deletions(-) diff --git a/projects/balancer-v1/index.js b/projects/balancer-v1/index.js index 308f6d7384..212b039d04 100644 --- a/projects/balancer-v1/index.js +++ b/projects/balancer-v1/index.js @@ -1,9 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { v1Tvl } = require('../helper/balancer') -const blacklistedTokens = ["0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", // old synthetix -//self destructed -"0x00f109f744B5C918b13d4e6a834887Eb7d651535", "0x645F7dd67479663EE7a42feFEC2E55A857cb1833", "0x4922a015c4407F87432B179bb209e125432E4a2A", -"0xdA16D6F08F20249376d01a09FEBbAd395a246b2C", "0x9be4f6a2558f88A82b46947e3703528919CE6414", +const blacklistedTokens = [ + "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", + ADDRESSES.ethereum.sUSD_OLD, + //self destructed + "0x00f109f744B5C918b13d4e6a834887Eb7d651535", "0x645F7dd67479663EE7a42feFEC2E55A857cb1833", "0x4922a015c4407F87432B179bb209e125432E4a2A", + "0xdA16D6F08F20249376d01a09FEBbAd395a246b2C", "0x9be4f6a2558f88A82b46947e3703528919CE6414", ] module.exports = { diff --git a/projects/balancer/onchain.js b/projects/balancer/onchain.js index 0a94f00369..dd04ca028d 100644 --- a/projects/balancer/onchain.js +++ b/projects/balancer/onchain.js @@ -1,7 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { onChainTvl } = require('../helper/balancer') const { eulerTokens } = require('../helper/tokenMapping') -const blacklistedTokens = ["0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", // old synthetix +const blacklistedTokens = [ + "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", + ADDRESSES.ethereum.sUSD_OLD, //self destructed "0x00f109f744B5C918b13d4e6a834887Eb7d651535", "0x645F7dd67479663EE7a42feFEC2E55A857cb1833", "0x4922a015c4407F87432B179bb209e125432E4a2A", "0xdA16D6F08F20249376d01a09FEBbAd395a246b2C", "0x9be4f6a2558f88A82b46947e3703528919CE6414", "0xa7fd7d83e2d63f093b71c5f3b84c27cff66a7802", diff --git a/projects/basis-cash.js b/projects/basis-cash.js index 4a3addb6eb..04796ac67a 100644 --- a/projects/basis-cash.js +++ b/projects/basis-cash.js @@ -4,7 +4,7 @@ const { sumTokens } = require('./helper/unwrapLPs') async function tvl(ts, block) { const toa = [ [ADDRESSES.ethereum.DAI, '0xEBd12620E29Dc6c452dB7B96E1F190F3Ee02BDE8'], - ['0x57ab1ec28d129707052df4df418d58a2d46d5f51', '0xdc42a21e38c3b8028b01a6b00d8dbc648f93305c'], + [ADDRESSES.ethereum.sUSD, '0xdc42a21e38c3b8028b01a6b00d8dbc648f93305c'], [ADDRESSES.ethereum.USDT, '0x2833bdc5B31269D356BDf92d0fD8f3674E877E44'], [ADDRESSES.ethereum.USDC, '0x51882184b7F9BEEd6Db9c617846140DA1d429fD4'], ['0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8', '0xC462d8ee54953E7d7bF276612b75387Ea114c3bf'], diff --git a/projects/bent/constants.js b/projects/bent/constants.js index adfb12447f..45fa73b16b 100644 --- a/projects/bent/constants.js +++ b/projects/bent/constants.js @@ -3,7 +3,7 @@ const addressZero = ADDRESSES.null; const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; const wethAddress = ADDRESSES.ethereum.WETH; const bentCVXAddress = "0x9E0441E084F5dB0606565737158aa6Ab6B970fE0"; -const CVXAddress = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; +const CVXAddress = ADDRESSES.ethereum.CVX; const pool2Address = "0xd564b2feec19df8f4d6cb52c0a4386d05a993583"; const sushiLpAddress = "0x5fa4370164a2fabeef159b893299d59ff5dc1e6d"; const bentAddress = "0x01597e397605bf280674bf292623460b4204c375"; diff --git a/projects/clever/index.js b/projects/clever/index.js index c75efacc5d..06279aee25 100644 --- a/projects/clever/index.js +++ b/projects/clever/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const commonAbi = require("./abis/index.json") const config = require("./config") + const lockCvxAddress = '0x96C68D861aDa016Ed98c30C810879F9df7c64154'; -const cvxAddress = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; async function pool2(_, _1, _2, { api, balances = {}}) { const gaugeTotalSupplies = await api.multiCall({ @@ -37,7 +38,7 @@ async function tvl(timestamp, block, _, { api }) { }), getClevers(balances, api), ]) - sdk.util.sumSingleBalance(balances, cvxAddress, totalLockedGlobal) + sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.CVX, totalLockedGlobal) return balances } diff --git a/projects/component/index.js b/projects/component/index.js index d5da73cff3..c4da60879c 100644 --- a/projects/component/index.js +++ b/projects/component/index.js @@ -30,7 +30,7 @@ const ethPools = [ underlying: [ "0x1456688345527bE1f37E9e627DA0837D6f08C925", ADDRESSES.ethereum.DAI, - "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51" + ADDRESSES.ethereum.sUSD ] } ]; diff --git a/projects/compound-onchain/index.js b/projects/compound-onchain/index.js index b708cb9750..0b340809c7 100644 --- a/projects/compound-onchain/index.js +++ b/projects/compound-onchain/index.js @@ -57,7 +57,7 @@ const markets = [ cToken: '0xB3319f5D18Bc0D84dD1b4825Dcde5d5f7266d407', }, { - underlying: '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359', + underlying: ADDRESSES.ethereum.SAI, symbol: 'SAI', decimals: 18, cToken: '0xF5DCe57282A584D2746FaF1593d3121Fcac444dC', diff --git a/projects/concentrator/index.js b/projects/concentrator/index.js index b386efb7b6..0397ffeee7 100644 --- a/projects/concentrator/index.js +++ b/projects/concentrator/index.js @@ -8,14 +8,14 @@ const AladdinCRVABI = require('./abis/AladdinCRV.json') const AladdinAFXSABI = require('./abis/AladdinAFXS.json') const AladdinCVXABI = require('./abis/AladdinCVX.json') const AladdinSdCRVABI = require('./abis/AladdinSdCRV.json') -const { farmConfig, vaultConfig: configPools, afrxETHConfig } = require('./config.js'); +const { farmConfig } = require('./config.js'); const concentratorVault = '0xc8fF37F7d057dF1BB9Ad681b53Fa4726f268E0e8'; const concentratorAcrv = '0x2b95A1Dcc3D405535f9ed33c219ab38E8d7e0884'; const concentratorAFXS = '0xDAF03D70Fe637b91bA6E521A32E1Fb39256d3EC9'; const concentratorAFrxETH = "0xb15Ad6113264094Fd9BF2238729410A07EBE5ABa"; -const cvxcrvAddress = '0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7'; +const cvxcrvAddress = ADDRESSES.ethereum.cvxCRV; const concentratorAbcCVXAddress = '0xDEC800C2b17c9673570FDF54450dc1bd79c8E359'; const concentratorAsdCRVAddress = "0x43E54C2E7b3e294De3A155785F52AB49d87B9922" diff --git a/projects/config/hodltree/addresses.js b/projects/config/hodltree/addresses.js index c011537046..a07fe69df6 100644 --- a/projects/config/hodltree/addresses.js +++ b/projects/config/hodltree/addresses.js @@ -56,7 +56,7 @@ const eth = [ address: '0x2e5a08c26cb22109e585784c4f99363bb3e199ab', miscInfo: { tokensIn: [ - '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51', + ADDRESSES.ethereum.sUSD, '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd', ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.DAI, @@ -77,13 +77,13 @@ const eth = [ contractType: em.rp, address: '0xce596bf99d21e46fa91143c03d7a356682b67859', miscInfo: { - token: '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51' + token: ADDRESSES.ethereum.sUSD } }, { contractType: em.vps, address: '0xb7ead8c418f3d03bc22dd538c22600abe7209e72', miscInfo: { - token: '0x57ab1ec28d129707052df4df418d58a2d46d5f51' + token: ADDRESSES.ethereum.sUSD } }, diff --git a/projects/config/keys.js b/projects/config/keys.js index c77990458b..9d5be2d3bd 100644 --- a/projects/config/keys.js +++ b/projects/config/keys.js @@ -7,26 +7,26 @@ let keys = [ADDRESSES.ethereum.AAVE]: 'aave', [ADDRESSES.ethereum.USDC]: 'stable', [ADDRESSES.ethereum.TUSD]: 'stable', - [ADDRESSES.ethereum.YFI]: 'yearn-finance', //yfi + [ADDRESSES.ethereum.YFI]: 'yearn-finance', '0x408e41876cccdc0f92210600ef50372656052a38': 'republic-protocol', //ren '0x80fB784B7eD66730e8b1DBd9820aFD29931aab03': 'ethlend', //lend - [ADDRESSES.ethereum.BUSD]: 'stable', //busd - [ADDRESSES.ethereum.USDT]: 'stable', //USDT - [ADDRESSES.ethereum.DAI]: 'stable', //DAI - [ADDRESSES.ethereum.MKR]: 'maker', //makerdao - [ADDRESSES.ethereum.SNX]: 'havven', //SNX + [ADDRESSES.ethereum.BUSD]: 'stable', + [ADDRESSES.ethereum.USDT]: 'stable', + [ADDRESSES.ethereum.DAI]: 'stable', + [ADDRESSES.ethereum.MKR]: 'maker', + [ADDRESSES.ethereum.SNX]: 'havven', '0x0f5d2fb29fb7d3cfee444a200298f468908cc942': 'decentraland', //MANA - [ADDRESSES.ethereum.UNI]: 'uniswap', //uni + [ADDRESSES.ethereum.UNI]: 'uniswap', '0xdd974d5c2e2928dea5f71b9825b8b646686bd200': 'kyber-network', //knc '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c': 'enjincoin', //ENJ - [ADDRESSES.ethereum.BAT]: 'basic-attention-token', //BAT - '0x57ab1ec28d129707052df4df418d58a2d46d5f51': 'stable', //susd + [ADDRESSES.ethereum.BAT]: 'basic-attention-token', + [ADDRESSES.ethereum.sUSD]: 'stable', '0xe41d2489571d322189246dafa5ebde1f4699f498': '0x', //0x [ADDRESSES.ethereum.CRV]: 'curve-dao-token', '0xc00e94cb662c3520282e6f5717214004a7f26888': 'compound-governance-token', '0x04fa0d235c4abf4bcf4787af4cf447de572ef828': 'uma', '0xd26114cd6ee289accf82350c8d8487fedb8a0c07': 'omisego', - '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359': 'sai', + [ADDRESSES.ethereum.SAI]: 'sai', [ADDRESSES.ethereum.WETH]: 'ethereum', '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643': 'cdai', '0xbc396689893d065f41bc2c6ecbee5e0085233447': 'perpetual-protocol', diff --git a/projects/config/smoothy/abis.js b/projects/config/smoothy/abis.js index 747c8dc3e7..408e5a45c2 100644 --- a/projects/config/smoothy/abis.js +++ b/projects/config/smoothy/abis.js @@ -34,7 +34,7 @@ abis.tokens = [ }, { symbol: "sUSD", - address: "0x57ab1ec28d129707052df4df418d58a2d46d5f51", + address: ADDRESSES.ethereum.sUSD, id: 4, decimals: 18, }, diff --git a/projects/convex/index.js b/projects/convex/index.js index 579515f003..b45440ae19 100644 --- a/projects/convex/index.js +++ b/projects/convex/index.js @@ -5,7 +5,7 @@ const { sumTokensExport } = require('../helper/unwrapLPs') const boosterAddress = "0xF403C135812408BFbE8713b5A23a04b3D48AAE31"; const staker = '0x989aeb4d175e16225e39e87d0d97a3360524ad80' -const cvxAddress = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; +const cvxAddress = ADDRESSES.ethereum.CVX; const cvxRewardsAddress = "0xCF50b810E57Ac33B91dCF525C6ddd9881B139332"; const crvAddress = ADDRESSES.ethereum.CRV; diff --git a/projects/ddex/index.js b/projects/ddex/index.js index e10a15c6e0..7af4ef5151 100644 --- a/projects/ddex/index.js +++ b/projects/ddex/index.js @@ -1,8 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') const { createIncrementArray, getUniqueAddresses } = require('../helper/utils') + const ddexMarginContractAddress = '0x241e82c79452f51fbfc89fac6d912e021db1a3b7' -const SAI = '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359' +const SAI = ADDRESSES.ethereum.SAI async function tvl(timestamp, block) { const tokens = [] diff --git a/projects/dydx/index.js b/projects/dydx/index.js index 5365f32b3b..0189c829c5 100644 --- a/projects/dydx/index.js +++ b/projects/dydx/index.js @@ -10,7 +10,7 @@ const ADDRESSES = require('../helper/coreAssets.json') ]; const tokens = [ - '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359', + ADDRESSES.ethereum.SAI, ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.DAI diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js index 66c05dcf66..66c70cc6a5 100644 --- a/projects/fraxfinance/index.js +++ b/projects/fraxfinance/index.js @@ -154,7 +154,7 @@ async function addInvestorAMO(api, balances) { TrueUSD: ADDRESSES.ethereum.TUSD, 'Gelato Network Token': '0x15b7c0c907e4c6b9adaaaabc300c08991d6cea05', 'Staked Aave': '0x4da27a545c0c5b758a6ba100e3a049001de870f5', - 'Convex Token': '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b', + 'Convex Token': ADDRESSES.ethereum.CVX, 'Curve DAO Token': ADDRESSES.ethereum.CRV, 'Bend Token': '0x0d02755a5700414b26ff040e1de35d337df56218', 'Binance USD': ADDRESSES.ethereum.BUSD, diff --git a/projects/gnosis/index.js b/projects/gnosis/index.js index 32171ae7cb..78cea23f17 100644 --- a/projects/gnosis/index.js +++ b/projects/gnosis/index.js @@ -18,7 +18,7 @@ function addTvl(owner) { ADDRESSES.ethereum.USDC, '0x6810e776880c02933d47db1b9fc05908e5386b96', ADDRESSES.ethereum.YFI, - '0x57ab1ec28d129707052df4df418d58a2d46d5f51', + ADDRESSES.ethereum.sUSD, ADDRESSES.ethereum.UNI, '0xa1d65E8fB6e87b60FECCBc582F7f97804B725521', '0xc00e94cb662c3520282e6f5717214004a7f26888', diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 03901715f6..48ab7d08b3 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -17,7 +17,9 @@ "SNX": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", "YFI": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", "DAI": "0x6b175474e89094c44da98b954eedeac495271d0f", + "SAI": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", "cvxFXS": "0xfeef77d3f69374f66429c91d732a244f074bdf74", + "cvxCRV": "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", "vlCVX": "0x72a19342e8f1838460ebfccef09f6585e32db86e", "CVX": "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", "BNB": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", @@ -33,6 +35,8 @@ "FTM": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", "GNO": "0x6810e776880C02933D47DB1b9fc05908e5386b96", "LUSD": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "sUSD_OLD": "0x57ab1e02fee23774580c119740129eac7081e9d3", + "sUSD": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" }, "fantom": { diff --git a/projects/helper/curvePools.js b/projects/helper/curvePools.js index 0c2c5de3cf..a16a392b6e 100644 --- a/projects/helper/curvePools.js +++ b/projects/helper/curvePools.js @@ -128,7 +128,7 @@ module.exports = { ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.DAI, - '0x57ab1ec28d129707052df4df418d58a2d46d5f51' + ADDRESSES.ethereum.sUSD, ] }, // renBTC Eth diff --git a/projects/keep3r/registry.js b/projects/keep3r/registry.js index 2fb84e5626..edbe91be21 100644 --- a/projects/keep3r/registry.js +++ b/projects/keep3r/registry.js @@ -21,11 +21,11 @@ exports.registry = { SJPY: "0xF6b1C627e95BFc3c1b4c9B825a032Ff0fBf3e07d", SCHF: "0x0F83287FF768D1c1e17a42F44d644D7F22e8ee1d", MIM: "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", - CVX: "0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b", + CVX: ADDRESSES.ethereum.CVX, DAI: ADDRESSES.ethereum.DAI, SUSHI: ADDRESSES.ethereum.SUSHI, CRV: ADDRESSES.ethereum.CRV, - CVXCRV: "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", + CVXCRV: ADDRESSES.ethereum.cvxCRV, SPELL: "0x090185f2135308BaD17527004364eBcC2D37e5F6", WETH: ADDRESSES.ethereum.WETH, LDO: ADDRESSES.ethereum.LIDO, diff --git a/projects/lyra/index.js b/projects/lyra/index.js index 0d219e532c..954e559f99 100644 --- a/projects/lyra/index.js +++ b/projects/lyra/index.js @@ -62,7 +62,7 @@ const arb_tokens = [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, const L2toL1Synths = { [ADDRESSES.optimism.sETH]: '0x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - [ADDRESSES.optimism.sUSD]: '0x57ab1ec28d129707052df4df418d58a2d46d5f51', + [ADDRESSES.optimism.sUSD]: ADDRESSES.ethereum.sUSD, '0x298b9b95708152ff6968aafd889c6586e9169f1d': '0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6', '0xc5db22719a06418028a40a9b5e9a7c02959d0d08': '0xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6' } diff --git a/projects/maker/abis/makerdao.js b/projects/maker/abis/makerdao.js index 0ec1d21e32..18ab2c20ff 100755 --- a/projects/maker/abis/makerdao.js +++ b/projects/maker/abis/makerdao.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../../helper/coreAssets.json') module.exports = { TUB_ADDRESS: "0x448a5065aebb8e423f0896e6c5d525c040f59af3", - DAI_ADDRESS: "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", + DAI_ADDRESS: ADDRESSES.ethereum.SAI, WETH_ADDRESS: ADDRESSES.ethereum.WETH }; \ No newline at end of file diff --git a/projects/maker/index.js b/projects/maker/index.js index c0c9465d36..2dc14f6257 100644 --- a/projects/maker/index.js +++ b/projects/maker/index.js @@ -86,7 +86,7 @@ async function tvl(timestamp, block, _, { api }) { } } - toa = toa.filter(i => i[0].toLowerCase() !== '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359') + toa = toa.filter(i => i[0].toLowerCase() !== ADDRESSES.ethereum.SAI.toLowerCase()) const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: toa.map(t => t[0]) }) const gUNIToa = toa.filter((_, i) => symbols[i] === 'G-UNI') toa = toa.filter((_, i) => symbols[i] !== 'G-UNI') diff --git a/projects/ondofinance-v1/index.js b/projects/ondofinance-v1/index.js index 330a12b39a..1867f5b2b2 100644 --- a/projects/ondofinance-v1/index.js +++ b/projects/ondofinance-v1/index.js @@ -53,7 +53,7 @@ const data = { "0x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C", "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e", "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", - "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", + ADDRESSES.ethereum.CVX, "0xff20817765cb7f73d4bde2e66e067e58d11095c2", "0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2", "0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7", diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index a6f3a7ae14..e88a1c997e 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const contracts = require("./contracts"); const { staking } = require('../helper/staking') const { getLogs } = require('../helper/cache/getLogs') -const steth = "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"; +const steth = ADDRESSES.ethereum.STETH; const config = { ethereum: { factory: '0x27b1dacd74688af24a64bd3c9c1b143118740784', fromBlock: 16032059 }, arbitrum: { factory: '0xf5a7de2d276dbda3eef1b62a9e718eff4d29ddc8', fromBlock: 62979673 }, diff --git a/projects/polynomial-earn/index.js b/projects/polynomial-earn/index.js index 8f005cf93d..45e2e9b983 100644 --- a/projects/polynomial-earn/index.js +++ b/projects/polynomial-earn/index.js @@ -15,13 +15,12 @@ const polynomial_contracts = [ '0x23CB080dd0ECCdacbEB0BEb2a769215280B5087D' ] -const MAINNET_SUSD = '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51' const MAINNET_SETH = '0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb' //Optimism Synths to Mainnet Synths const L2toL1Synths = { [ADDRESSES.optimism.sETH]: MAINNET_SETH, - [ADDRESSES.optimism.sUSD]: MAINNET_SUSD, + [ADDRESSES.optimism.sUSD]: ADDRESSES.ethereum.sUSD, '0x298b9b95708152ff6968aafd889c6586e9169f1d': '0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6', '0xc5db22719a06418028a40a9b5e9a7c02959d0d08': '0xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6' } @@ -30,15 +29,15 @@ const contractL1Synths = { // sEth Call Selling '0x53268e841E30278EF0B9597813893fA8e4559510': MAINNET_SETH, // sETH Put Selling - '0xa11451ACD2Fbdf4Ae798F44c4227cAB9517739d7': MAINNET_SUSD, + '0xa11451ACD2Fbdf4Ae798F44c4227cAB9517739d7': ADDRESSES.ethereum.sUSD, // ETH PUT SELLING - '0xb28Df1b71a5b3a638eCeDf484E0545465a45d2Ec': MAINNET_SUSD, + '0xb28Df1b71a5b3a638eCeDf484E0545465a45d2Ec': ADDRESSES.ethereum.sUSD, // ETH CALL SELLING '0x2D46292cbB3C601c6e2c74C32df3A4FCe99b59C7': MAINNET_SETH, // GAMMA - '0x965e460bF5cb38BadA79fB2293c6304C799D0b1c': MAINNET_SUSD, + '0x965e460bF5cb38BadA79fB2293c6304C799D0b1c': ADDRESSES.ethereum.sUSD, //ETH CALL SELLING QUOTE - '0xB7b4270cFD938F4F1C111ac819e7365E8Ce0300a': MAINNET_SUSD + '0xB7b4270cFD938F4F1C111ac819e7365E8Ce0300a': ADDRESSES.ethereum.sUSD } diff --git a/projects/polynomial-trade/index.js b/projects/polynomial-trade/index.js index 2255cdf1fc..0589a8400e 100644 --- a/projects/polynomial-trade/index.js +++ b/projects/polynomial-trade/index.js @@ -1,5 +1,5 @@ +const ADDRESSES = require('../helper/coreAssets.json') const axios = require('axios') -// const chain = 'optimism' // api const BASE_URL = "https://perps-api-experimental.polynomial.fi/snx-perps/tvl"; @@ -10,7 +10,7 @@ const api = axios.create({ async function tvl (timestamp, ethBlock) { const perpApi = await api.get(); return { - 'ethereum:0x57Ab1ec28D129707052df4dF418D58a2D46d5f51': perpApi.data.tvl * 1e18 + [`ethereum:${ADDRESSES.ethereum.sUSD}`]: perpApi.data.tvl * 1e18 }; } diff --git a/projects/rari/index.js b/projects/rari/index.js index b808992d91..5d8d5cfc69 100644 --- a/projects/rari/index.js +++ b/projects/rari/index.js @@ -30,9 +30,6 @@ const earnStablePoolAddressesIncludingLegacy = [ const fusePoolLensAddress = '0x8dA38681826f4ABBe089643D2B3fE4C6e4730493' const fusePoolDirectoryAddress = '0x835482FE0532f169024d5E9410199369aAD5C77E' const rariGovernanceTokenUniswapDistributorAddress = '0x1FA69a416bCF8572577d3949b742fBB0a9CD98c7' -const sushiETHRGTPairAddress = '0x18a797c7c70c1bf22fdee1c09062aba709cacf04' -const WETHTokenAddress = ADDRESSES.ethereum.WETH -const RGTTokenAddress = '0xD291E7a03283640FDc51b121aC401383A46cC623' const RGTETHSushiLPTokenAddress = '0x18a797c7c70c1bf22fdee1c09062aba709cacf04' const ETHAddress = ADDRESSES.null const bigNumZero = BigNumber('0') @@ -43,7 +40,7 @@ const tokenMapWithKeysAsSymbol = { 'USDT': ADDRESSES.ethereum.USDT, 'TUSD': ADDRESSES.ethereum.TUSD, 'BUSD': ADDRESSES.ethereum.BUSD, - 'SUSD': '0x57ab1ec28d129707052df4df418d58a2d46d5f51', + 'SUSD': ADDRESSES.ethereum.sUSD, 'MUSD': '0xe2f2a5c287993345a840db3b0845fbc70f5935a5' } diff --git a/projects/ray/index.js b/projects/ray/index.js index 2c9f4b208a..0dffad302e 100644 --- a/projects/ray/index.js +++ b/projects/ray/index.js @@ -4,7 +4,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const ETH_ADDRESS = ADDRESSES.null; const WETH_ADDRESS = ADDRESSES.ethereum.WETH; -const SAI_ADDRESS = '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359'; +const SAI_ADDRESS = ADDRESSES.ethereum.SAI; const DAI_ADDRESS = ADDRESSES.ethereum.DAI; const USDC_ADDRESS = ADDRESSES.ethereum.USDC; diff --git a/projects/redacted/index.js b/projects/redacted/index.js index be23561034..0d5c4440f5 100644 --- a/projects/redacted/index.js +++ b/projects/redacted/index.js @@ -7,7 +7,7 @@ const treasuries = ["0xa52fd396891e7a74b641a2cb1a6999fcf56b077e", "0x086c98855df const cvxCRVStaking = '0x3Fe65692bfCD0e6CF84cB1E7d24108E434A7587e' const CVX = ADDRESSES.ethereum.CVX -const cvxCRV = '0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7' +const cvxCRV = ADDRESSES.ethereum.cvxCRV const FXS = '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0' const veFXS = '0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0' const CRV = ADDRESSES.ethereum.CRV diff --git a/projects/sablier/index.js b/projects/sablier/index.js index 7080a22203..c9bf052a0d 100644 --- a/projects/sablier/index.js +++ b/projects/sablier/index.js @@ -1,13 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') const { covalentGetTokens } = require('../helper/http') const { isWhitelistedToken } = require('../helper/streamingHelper') const { getUniqueAddresses } = require('../helper/utils') const blacklistedTokens = [ - '0x57ab1e02fee23774580c119740129eac7081e9d3', // sUSD legacy - '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', - '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', - '0x57ab1e02fee23774580c119740129eac7081e9d3', + ADDRESSES.ethereum.sUSD_OLD, + // TODO: We shouldn't need to lowercase here + ADDRESSES.ethereum.SAI.toLowerCase(), + ADDRESSES.ethereum.MKR, ] async function getTokens(api, owners, isVesting) { @@ -39,9 +40,9 @@ module.exports = { tvl: sumTokensExport({ owner: '0xDe9dCc27aa1552d591Fc9B9c21881feE43BD8118', tokens: [ - '0x0b7007c13325c48911f73a2dad5fa5dcbf808adc', - '0xc99a6a985ed2cac1ef41640596c5a5f9f4e19ef5', - '0x97a9107c1793bc407d6f527b77e7fff4d812bece', + ADDRESSES.ronin.USDC, + ADDRESSES.ronin.WETH, + ADDRESSES.ronin.AXS, ] }) } diff --git a/projects/set-protocol/v1.js b/projects/set-protocol/v1.js index 4f154b7d34..8db98ead55 100644 --- a/projects/set-protocol/v1.js +++ b/projects/set-protocol/v1.js @@ -10,12 +10,12 @@ Settings const cTokenDecimalScale = BigNumber("10").pow(18); const tokens = [ - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.WBTC, // WBTC - ADDRESSES.ethereum.LINK, // LINK - '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359', // SAI - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.LINK, + ADDRESSES.ethereum.SAI, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, '0x39AA39c021dfbaE8faC545936693aC917d5E7563', // cUSDC '0x5d3a536e4d6dbd6114cc1ead35777bab948e3643', // cDAI ] diff --git a/projects/set-protocol/v2.js b/projects/set-protocol/v2.js index dd7b39231a..148e05fa7d 100644 --- a/projects/set-protocol/v2.js +++ b/projects/set-protocol/v2.js @@ -4,7 +4,6 @@ const BigNumber = require('bignumber.js'); const SUPPLY_SCALE = BigNumber("10").pow(18) const START_BLOCK = 10830496; -const EXTERNAL_POSITION = '1'; const getSets = "address[]:getSets" const getPositions = 'function getPositions() view returns (tuple(address component, address module, int256 unit, uint8 positionState, bytes data)[])'; @@ -48,7 +47,6 @@ module.exports = async function tvl(timestamp, block) { }), })).output; - let uniswapPositions = {}; positionsForSets.forEach(function(positionForSet, i) { const setSupply = BigNumber(supplies[i].output); if(positionForSet.output === null){ @@ -58,7 +56,6 @@ module.exports = async function tvl(timestamp, block) { const componentAddress = position[0]; const positionUnits = BigNumber(position[2]); - const isExternalPosition = position[3] == EXTERNAL_POSITION; balances[componentAddress] = BigNumber(balances[componentAddress] || 0).plus((positionUnits).times(setSupply).div(SUPPLY_SCALE)).toFixed(0); }); }); diff --git a/projects/thales/index.js b/projects/thales/index.js index fd6f5a4a85..01b3cb6a2e 100644 --- a/projects/thales/index.js +++ b/projects/thales/index.js @@ -5,7 +5,6 @@ const { dodoPool2 } = require('../helper/pool2') const ADDRESSES = require('../helper/coreAssets.json') const ethMarketsManager = "0x5ed98Ebb66A929758C7Fe5Ac60c979aDF0F4040a" -const ETH_SUSD = "0x57ab1ec28d129707052df4df418d58a2d46d5f51" const opMarketsManager = "0xBE086E0A2c588Ad64C8530048cE4356190D6a6F3" const OP_SUSD = ADDRESSES.optimism.sUSD @@ -58,7 +57,7 @@ module.exports = { methodology: "sUSD/USDC locked on markets", ethereum: { tvl: async (_, _1, _2, { api }) => { - return sumTokens2({ api, owners: await getMarkets(api, ethMarketsManager), tokens: [ETH_SUSD] }) + return sumTokens2({ api, owners: await getMarkets(api, ethMarketsManager), tokens: [ADDRESSES.ethereum.sUSD] }) }, pool2: dodoPool2("0x136829c258e31b3ab1975fe7d03d3870c3311651", "0x031816fd297228e4fd537c1789d51509247d0b43"), }, diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js index 44a4a50ef7..1bb6fe0ab2 100644 --- a/projects/treasury/aave.js +++ b/projects/treasury/aave.js @@ -38,54 +38,54 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDC, '0xBcca60bB61934080951369a648Fb03DF4F96263C', // aUSDC '0xd24946147829DEaA935bE2aD85A3291dbf109c80', // ammUSDC '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', // aEthUSDC - ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.DAI, '0x028171bca77440897b824ca71d1c56cac55b68a3', // aDAI '0x79bE75FFC64DD58e66787E4Eae470c8a1FD08ba4', // ammDAI '0x018008bfb33d285247A21d44E50697654f754e63', // aEthDAI - ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.USDT, '0x3ed3b47dd13ec9a98b44e6204a523e766b225811', // aUSDT '0x17a79792Fe6fE5C95dFE95Fe3fCEE3CAf4fE4Cb7', // ammUSDT '0xFFC97d72E13E01096502Cb8Eb52dEe56f74DAD7B', // aAAVE '0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9', // aEthAAVE - ADDRESSES.ethereum.WBTC, // WBTC + ADDRESSES.ethereum.WBTC, '0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656', // aWBTC '0x13B2f6928D7204328b0E8E4BCd0379aA06EA21FA', // ammWBTC '0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8', // aEthWBTC - ADDRESSES.ethereum.WSTETH, // wstETH + ADDRESSES.ethereum.WSTETH, '0x0B925eD163218f6662a35e0f0371Ac234f9E9371', // aEthwstETH '0xba100000625a3754423978a60c9317c58a424e3D', // BAL - ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.WETH, '0x030bA81f1c18d280636F32af80b9AAd02Cf0854e', // aWETH '0xf9Fb4AD91812b704Ba883B11d2B576E890a6730A', // ammWETH '0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', // aEthWETH - ADDRESSES.ethereum.CRV, // CRV + ADDRESSES.ethereum.CRV, '0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1', // aCRV - ADDRESSES.ethereum.SNX, // SNX + ADDRESSES.ethereum.SNX, '0x35f6B052C598d933D69A4EEC4D04c73A191fE6c2', // aSNX - ADDRESSES.ethereum.LINK, // LINK + ADDRESSES.ethereum.LINK, '0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0', // aLINK '0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a', // aEthLINK '0xba100000625a3754423978a60c9317c58a424e3d', // BAL '0x272F97b7a56a387aE942350bBC7Df5700f8a4576', // aBAL - ADDRESSES.ethereum.UNI, // UNI + ADDRESSES.ethereum.UNI, '0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1', // aUNI - ADDRESSES.ethereum.MKR, // MKR + ADDRESSES.ethereum.MKR, '0xc713e5E149D5D0715DcD1c156a020976e7E56B88', // aMKR - ADDRESSES.ethereum.BUSD, // BUSD + ADDRESSES.ethereum.BUSD, '0xA361718326c15715591c299427c62086F69923D9', // aBUSD '0x853d955acef822db058eb8505911ed77f175b99e', // FRAX '0xd4937682df3C8aEF4FE912A96A74121C0829E664', // aFRAX - '0x57ab1ec28d129707052df4df418d58a2d46d5f51', // sUSD + ADDRESSES.ethereum.sUSD, '0x6C5024Cd4F8A59110119C56f8933403A539555EB', // aSUSD '0x5f98805a4e8be255a32880fdec7f6728c6568ba0', // LUSD '0xce1871f791548600cb59efbefFC9c38719142079', // aLUSD '0x056fd409e1d7a124bd7017459dfea2f387b6d5cd', // GUSD '0xD37EE7e4f452C6638c96536e68090De8cBcdb583', // aGUSD - ADDRESSES.ethereum.TUSD, // TUSD + ADDRESSES.ethereum.TUSD, '0x101cc05f4A51C0319f570d5E146a8C625198e636', // aTUSD '0x8e870d67f660d95d5be530380d0ec0bd388289e1', // USDP '0x2e8F4bdbE3d47d7d7DE490437AeA9915D930F1A3', // aUSDP @@ -95,7 +95,7 @@ module.exports = treasuryExports({ '0x6F634c6135D2EBD550000ac92F494F9CB8183dAe', // aDPI '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', // ENS '0x9a14e23A58edf4EFDcB360f68cd1b95ce2081a2F', // aENS - ADDRESSES.ethereum.STETH, // stETH + ADDRESSES.ethereum.STETH, '0x1982b2F5814301d4e9a8b0201555376e62F82428', // aSTETH '0xd46ba6d942050d489dbd938a2c909a5d5039a161', // AMPL '0x1E6bb68Acec8fefBD87D192bE09bb274170a0548', // aAMPL @@ -103,9 +103,9 @@ module.exports = treasuryExports({ '0x683923dB55Fead99A79Fa01A27EeC3cB19679cC3', // aFEI '0xa693b19d2931d498c5b318df961919bb4aee87a5', // UST '0xc2e2152647F4C26028482Efaf64b2Aa28779EFC4', // aUST - ADDRESSES.ethereum.BAT, // BAT + ADDRESSES.ethereum.BAT, '0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1', // aBAT - '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b', // CVX + ADDRESSES.ethereum.CVX, '0x952749E07d7157bb9644A894dFAF3Bad5eF6D918', // aCVX '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', // ENJ '0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef', // aENJ @@ -121,7 +121,7 @@ module.exports = treasuryExports({ '0x514cd6756CCBe28772d4Cb81bC3156BA9d1744aa', // aRENFIL '0xe41d2489571d322189246dafa5ebde1f4699f498', // ZRX '0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e', // aZRX - ADDRESSES.ethereum.YFI, // YFI + ADDRESSES.ethereum.YFI, '0x5165d24277cD063F5ac44Efd447B27025e888f37', // aYFI '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272', // xSUSHI '0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a', // aXSUSHI @@ -132,21 +132,21 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - ADDRESSES.polygon.DAI, // DAI + ADDRESSES.polygon.DAI, '0x27F8D03b3a2196956ED754baDc28D73be8830A6e', // amDAI '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aPOLDAI - ADDRESSES.polygon.USDC, // USDC + ADDRESSES.polygon.USDC, '0x1a13F4Ca1d028320A707D99520AbFefca3998b7F', // amUSDC '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aPolUSDC - ADDRESSES.polygon.USDT, // USDT + ADDRESSES.polygon.USDT, '0x60D55F02A771d515e077c9C2403a1ef324885CeC', // amUSDT '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aPolUSDT '0x1d2a0E5EC8E5bBDCA5CB219e649B565d8e5c3360', // amAAVE '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aPolAAVE - ADDRESSES.polygon.WBTC, // WBTC + ADDRESSES.polygon.WBTC, '0x5c2ed810328349100A66B82b78a1791B101C9D61', // amWBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aPolWBTC - ADDRESSES.polygon.WETH_1, // WETH + ADDRESSES.polygon.WETH_1, '0x28424507fefb6f7f8E9D3860F56504E4e5f5f390', // amWETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aPolWETH '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC @@ -188,24 +188,24 @@ module.exports = treasuryExports({ }, avax: { tokens: [ - ADDRESSES.avax.DAI, // DAI + ADDRESSES.avax.DAI, '0x47AFa96Cdc9fAb46904A55a6ad4bf6660B53c38a', // avDAI '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', // aAvaDAI - ADDRESSES.avax.USDC_e, // USDC + ADDRESSES.avax.USDC_e, '0x46A51127C3ce23fb7AB1DE06226147F446e4a857', // avUSDC '0x625E7708f30cA75bfd92586e17077590C60eb4cD', // aAvaUSDC - ADDRESSES.avax.USDT_e, // USDT + ADDRESSES.avax.USDT_e, '0x532E6537FEA298397212F09A61e03311686f548e', // avUSDT '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // aAvaUSDT '0xD45B7c061016102f9FA220502908f2c0f1add1D7', // avAAVE '0xf329e36C7bF6E5E86ce2150875a84Ce77f477375', // aAvaAAVE - ADDRESSES.avax.WAVAX, // WAVAX + ADDRESSES.avax.WAVAX, '0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B', // avWAVAX '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aAvaWAVAX '0x50b7545627a5162f82a992c33b87adc75187b218', // WBTC '0x686bEF2417b6Dc32C50a3cBfbCC3bb60E1e9a15D', // aWBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aAvaWBTC - ADDRESSES.avax.WETH_e, // WETH + ADDRESSES.avax.WETH_e, '0x53f7c5869a859F0AeC3D334ee8B4Cf01E3492f21', // aWETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aAvaWETH '0x5947bb275c521040051d82396192181b413227a3', // LINK @@ -216,7 +216,7 @@ module.exports = treasuryExports({ '0x8Eb270e296023E9D92081fdF967dDd7878724424', // aAvaMAI '0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be', // sAVAX '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aAvaSAVAX - ADDRESSES.avax.BTC_b, // BTC.b + ADDRESSES.avax.BTC_b, '0x8ffDf2DE812095b1D19CB146E4c004587C0A0692', // aAvaBTC.b ], owners: treasuryContractsAvax, diff --git a/projects/treasury/bancor.js b/projects/treasury/bancor.js index 599e0fb0c9..053db29b9a 100644 --- a/projects/treasury/bancor.js +++ b/projects/treasury/bancor.js @@ -41,9 +41,9 @@ module.exports = treasuryExports({ '0xb9EF770B6A5e12E45983C5D80545258aA38F3B78', //zcn '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07', //omg '0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F', //trac - '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', //wsteth + ADDRESSES.ethereum.WSTETH, '0x4C2e59D098DF7b6cBaE0848d66DE2f8A4889b9C3', //fodl - '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2', //mkr + ADDRESSES.ethereum.MKR, ], owners: [treasury], ownTokens: [BNT, vBNT], diff --git a/projects/treasury/convex.js b/projects/treasury/convex.js index 4ac63b2127..f7aafb92a0 100644 --- a/projects/treasury/convex.js +++ b/projects/treasury/convex.js @@ -1,28 +1,27 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); + const convexTreasuryVault = "0x1389388d01708118b497f59521f6943Be2541bb7"; -const cvx = "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B"; -const cvxCrv = "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7"; const treasuryARB = "0x6111abf720051309012fcdbc2910054e41dcff8c" module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.CRV, // CRV - ADDRESSES.ethereum.SNX, // SNX + ADDRESSES.ethereum.CRV, + ADDRESSES.ethereum.SNX, "0x31429d1856aD1377A8A0079410B297e1a9e214c2", // ANGLE - ADDRESSES.ethereum.LIDO, // LDO + ADDRESSES.ethereum.LIDO, "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", // ALCX "0x92E187a03B6CD19CB6AF293ba17F2745Fd2357D5", // DUCK - ADDRESSES.ethereum.FTM, // FTM + ADDRESSES.ethereum.FTM, "0x3472A5A71965499acd81997a54BBA8D852C6E53d", // BADGER "0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2", // MTA "0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26", // OGN "0xCdF7028ceAB81fA0C6971208e83fa7872994beE5", // T ], owners: [convexTreasuryVault], - ownTokens: [cvx, cvxCrv], + ownTokens: [ADDRESSES.ethereum.CVX, ADDRESSES.ethereum.cvxCRV], }, arbitrum: { tokens: [ diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index e5d95c26a3..6c711c2384 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -40,26 +40,26 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC, //USDC + ADDRESSES.ethereum.USDC, '0x6b175474e89094c44da98b954eedeac495271d0f',//DAI '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',//cDAI '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT - ADDRESSES.ethereum.CRV,//CRV + ADDRESSES.ethereum.CRV, '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - '0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B',//CVX + ADDRESSES.ethereum.CVX, '0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB',//COW - ADDRESSES.ethereum.STETH,//stETH + ADDRESSES.ethereum.STETH, '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb',//ankETH '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ENS '0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d',//PNK - ADDRESSES.ethereum.WSTETH,//wstETH + ADDRESSES.ethereum.WSTETH, '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF',//AURA '0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf',//GEN '0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6',//RDN '0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb',//INST '0x6243d8CEA23066d098a15582d81a598b4e8391F4',//FLX - ADDRESSES.ethereum.LIDO,//LDO + ADDRESSES.ethereum.LIDO, '0x1982b2F5814301d4e9a8b0201555376e62F82428', "0xd33526068d116ce69f19a9ee46f0bd304f21a51f", "0x543ff227f64aa17ea132bf9886cab5db55dcaddf", diff --git a/projects/treasury/idle-dao.js b/projects/treasury/idle-dao.js index 30734a70ce..def0abe2d9 100644 --- a/projects/treasury/idle-dao.js +++ b/projects/treasury/idle-dao.js @@ -22,19 +22,19 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC, //USDC + ADDRESSES.ethereum.USDC, "0x4da27a545c0c5B758a6BA100e3a049001de870f5", //stkAAVE - ADDRESSES.ethereum.BNB, //BNB + ADDRESSES.ethereum.BNB, "0xc00e94Cb662C3520282E6f5717214004A7f26888",//comp - "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51",//sUSD + ADDRESSES.ethereum.sUSD, "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919",//RAI - ADDRESSES.ethereum.SUSHI,//sushi - ADDRESSES.ethereum.MATIC,//matic - ADDRESSES.ethereum.LIDO,//ldo + ADDRESSES.ethereum.SUSHI, + ADDRESSES.ethereum.MATIC, + ADDRESSES.ethereum.LIDO, "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF",//alcx - ADDRESSES.ethereum.DAI,//dai - ADDRESSES.ethereum.STETH,//steth - ADDRESSES.ethereum.LINK,//link + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.LINK, ], owners: [treasury, treasury1, treasury2, treasury3, treasury4, treasury5], ownTokens: [IDLE], @@ -43,10 +43,10 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0xf28164A485B0B2C90639E47b0f377b4a438a16B1",//dquick - ADDRESSES.polygon.DAI,//dai + ADDRESSES.polygon.DAI, "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic - ADDRESSES.polygon.WETH_1,//weth - ADDRESSES.polygon.USDC,//usdc + ADDRESSES.polygon.WETH_1, + ADDRESSES.polygon.USDC, "0x580A84C73811E1839F75d86d75d88cCa0c241fF4",//QI ], owners: [treasuryPolygon, treasuryPolygon1], diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index 832b3db34d..5f378f36c5 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -13,18 +13,18 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, "0x865377367054516e17014CcdED1e7d814EDC9ce4", // DOLA - ADDRESSES.ethereum.WBTC, // WBTC - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.YFI, // YFI + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.YFI, "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", // AURA "0xba100000625a3754423978a60c9317c58a424e3D", // BAL "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT - ADDRESSES.ethereum.cvxFXS, // cvxFXS - ADDRESSES.ethereum.CRV, // CRV - "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", // CVX + ADDRESSES.ethereum.cvxFXS, + ADDRESSES.ethereum.CRV, + ADDRESSES.ethereum.CVX, "0x4C2e59D098DF7b6cBaE0848d66DE2f8A4889b9C3", // FODL "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0x22915f309EC0182c85cD8331C23bD187fd761360", // DOLA USDC Stable Pool Aura Deposit Vault @@ -50,7 +50,7 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - ADDRESSES.optimism.USDC, // USDC + ADDRESSES.optimism.USDC, "0x8aE125E8653821E851F12A49F7765db9a9ce7384", // DOLA ], owners: [opmultisig], @@ -59,7 +59,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - ADDRESSES.bsc.WBNB, // WBNB + ADDRESSES.bsc.WBNB, "0x2F29Bc0FFAF9bff337b31CBe6CB5Fb3bf12e5840", // DOLA // "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D", // veTHE ], diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index e8b4b458d7..a705859070 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -23,7 +23,7 @@ const treasuryTvl = treasuryExports({ ADDRESSES.ethereum.CVX, "0x853d955aCEf822Db058eb8505911ED77F175b99e", // FRAX ADDRESSES.ethereum.LINK, - "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", // cvxCRV + ADDRESSES.ethereum.cvxCRV, "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", "0x34eD182D0812D119c92907852D2B429f095A9b07", diff --git a/projects/treasury/mimo-protocol.js b/projects/treasury/mimo-protocol.js index ffa933b1eb..4d4d4fcdf1 100644 --- a/projects/treasury/mimo-protocol.js +++ b/projects/treasury/mimo-protocol.js @@ -19,11 +19,11 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDT,//USDT - ADDRESSES.ethereum.CRV,//CRV - ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.CRV, + ADDRESSES.ethereum.USDC, '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - '0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7',//cvxCRV + ADDRESSES.ethereum.cvxCRV, '0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D',//LQTY '0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68',//INV '0xcAfE001067cDEF266AfB7Eb5A286dCFD277f3dE5',//PSP @@ -39,7 +39,7 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - ADDRESSES.polygon.USDC//USDC + ADDRESSES.polygon.USDC ], owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], ownTokens: [MIMOpolygon,], @@ -47,7 +47,7 @@ module.exports = treasuryExports({ fantom: { tokens: [ nullAddress, - ADDRESSES.fantom.USDC//USDC + ADDRESSES.fantom.USDC ], owners: [treasury, treasury1, treasurypolygon, treasurypolygon1, treasuryfantom, treasuryfantom1], ownTokens: [MIMOfantom,], diff --git a/projects/treasury/paladin-finance.js b/projects/treasury/paladin-finance.js index 1f22c3cbc2..7663eb1611 100644 --- a/projects/treasury/paladin-finance.js +++ b/projects/treasury/paladin-finance.js @@ -12,18 +12,18 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDT,//USDT - ADDRESSES.ethereum.CRV,//CRV - ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.CRV, + ADDRESSES.ethereum.USDC, '0xba100000625a3754423978a60c9317c58a424e3D',//BAL - '0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7',//cvxCRV + ADDRESSES.ethereum.cvxCRV, '0x6DEA81C8171D0bA574754EF6F8b412F2Ed88c54D',//LQTY '0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68',//INV '0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF',//ALCX '0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F',//SDT '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490',//3CRV '0x4104b135DBC9609Fc1A9490E61369036497660c8',//APY - ADDRESSES.ethereum.LIDO,//LDO + ADDRESSES.ethereum.LIDO, ], owners: [treasury, treasury1, ], diff --git a/projects/treasury/railgun.js b/projects/treasury/railgun.js index 179d7a782f..e4273e2089 100644 --- a/projects/treasury/railgun.js +++ b/projects/treasury/railgun.js @@ -17,30 +17,30 @@ module.exports = treasuryExports({ tokens: [ // Ethereum Assets nullAddress, - ADDRESSES.ethereum.WETH,//weth + ADDRESSES.ethereum.WETH, "0x295B42684F90c77DA7ea46336001010F2791Ec8c",//xi - ADDRESSES.ethereum.USDC,//usdc - ADDRESSES.ethereum.USDT,//usdt - ADDRESSES.ethereum.DAI,//dai + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.DAI, "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0",//fxs - ADDRESSES.ethereum.WSTETH,//wsteth - "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B",//cvx + ADDRESSES.ethereum.WSTETH, + ADDRESSES.ethereum.CVX, "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D",//renbtc - "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7",//cvxcrv + ADDRESSES.ethereum.cvxCRV, "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0",//wbtc "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3",//mim "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0",//lusd "0x090185f2135308BaD17527004364eBcC2D37e5F6",//spell - ADDRESSES.ethereum.BUSD,//busd + ADDRESSES.ethereum.BUSD, "0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0",//albt - ADDRESSES.ethereum.SNX,//snx + ADDRESSES.ethereum.SNX, "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a",//bst - ADDRESSES.ethereum.INU,//shib - ADDRESSES.ethereum.LINK,//link + ADDRESSES.ethereum.INU, + ADDRESSES.ethereum.LINK, "0x21381e026Ad6d8266244f2A583b35F9E4413FA2a",//form - ADDRESSES.ethereum.TOKE,//toke + ADDRESSES.ethereum.TOKE, "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E",//ilv - ADDRESSES.ethereum.MKR,//mkr + ADDRESSES.ethereum.MKR, "0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed",//tsuka "0x853d955acef822db058eb8505911ed77f175b99e",//frax "0x2223bF1D7c19EF7C06DAB88938EC7B85952cCd89",//kxa @@ -49,8 +49,8 @@ module.exports = treasuryExports({ "0xf65B5C5104c4faFD4b709d9D60a185eAE063276c",//tru "0x3597bfd533a99c9aa083587b074434e61eb0a258",//dent "0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25",//slp - ADDRESSES.ethereum.UNI,//uni - ADDRESSES.ethereum.MATIC,//matic + ADDRESSES.ethereum.UNI, + ADDRESSES.ethereum.MATIC, "0x9aE380F0272E2162340a5bB646c354271c0F5cFC",//cnc "0x07bac35846e5ed502aa91adf6a9e7aa210f2dcbe",//erowan "0xfb7b4564402e5500db5bb6d63ae671302777c75a",//dext @@ -66,13 +66,13 @@ module.exports = treasuryExports({ tokens: [ // bsc Assets nullAddress, - ADDRESSES.bsc.WBNB,//wbnb - ADDRESSES.bsc.BUSD,//busd + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.BUSD, "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3",//dai - ADDRESSES.bsc.USDT,//bsc-usd + ADDRESSES.bsc.USDT, "0x39cC67690D0F2d4aCD68d3d9B612a80D780b84c0",//agro "0xbF7c81FFF98BbE61B40Ed186e4AfD6DDd01337fe",//egld - ADDRESSES.bsc.USDC,//usdc + ADDRESSES.bsc.USDC, "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",//cake "0xAdBAF88B39D37Dc68775eD1541F1bf83A5A45feB",//coti "0xBfACD29427fF376FF3BC22dfFB29866277cA5Fb4",//pstn @@ -86,12 +86,12 @@ module.exports = treasuryExports({ tokens: [ // polygon Assets nullAddress, - ADDRESSES.polygon.WETH_1,//weth - ADDRESSES.polygon.USDC,//usdc - ADDRESSES.polygon.USDT,//usdt - ADDRESSES.polygon.DAI,//dai + ADDRESSES.polygon.WETH_1, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.DAI, "0x1a3acf6D19267E2d3e7f898f42803e90C9219062",//fxs - ADDRESSES.polygon.WBTC,//wbtc + ADDRESSES.polygon.WBTC, "0xE5417Af564e4bFDA1c483642db72007871397896",//gns "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",//avax "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39",//link @@ -99,13 +99,13 @@ module.exports = treasuryExports({ "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic "0x752d59604d72b6DC44196f4A39A3f07779417407",//methmoon "0x8f006D1e1D9dC6C98996F50a4c810F17a47fBF19",//nsfw - ADDRESSES.fantom.renBTC,//renbtc + ADDRESSES.fantom.renBTC, "0x9c891326Fd8b1a713974f73bb604677E1E63396D",//islami "0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89",//frax "0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B",//bob "0x580A84C73811E1839F75d86d75d88cCa0c241fF4",//qi "0x980111ae1B84E50222C8843e3A7a038F36Fecd2b",//stack - ADDRESSES.polygon.QUICK,//quick + ADDRESSES.polygon.QUICK, "0x6C0AB120dBd11BA701AFF6748568311668F63FE0",//apw "0xE0339c80fFDE91F3e20494Df88d4206D86024cdF",//elon ], @@ -116,7 +116,7 @@ module.exports = treasuryExports({ tokens: [ // arbitrum assets nullAddress, - ADDRESSES.arbitrum.WETH,//weth + ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC diff --git a/projects/treasury/stargate.js b/projects/treasury/stargate.js index db6cc7ba31..e73deed126 100644 --- a/projects/treasury/stargate.js +++ b/projects/treasury/stargate.js @@ -14,15 +14,15 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDC, "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", // 3CRV DAI/USDC/USDT "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT - "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", // cvxCRV + ADDRESSES.ethereum.cvxCRV, "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE "0xFCc5c47bE19d06BF83eB04298b026F81069ff65b", // yCRV "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", // auraBAl "0xA13a9247ea42D743238089903570127DdA72fE44", // bb-a-USD - ADDRESSES.ethereum.cvxFXS, // cvxFXS + ADDRESSES.ethereum.cvxFXS, "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC", // crvFRAX "0xfA0F307783AC21C39E939ACFF795e27b650F6e68", // S*FRAX "0x0Faf1d2d3CED330824de3B8200fc8dc6E397850d", // S*DAI @@ -50,7 +50,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - ADDRESSES.bsc.USDT, // BSC_USD + ADDRESSES.bsc.USDT, "0x98a5737749490856b401DB5Dc27F522fC314A4e1", // S*BUSD "0x4e145a589e4c03cBe3d28520e4BF3089834289Df", // S*USDD "0x7BfD7f2498C4796f10b6C611D9db393D3052510C", // S*MAI @@ -66,7 +66,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, "0x1c272232Df0bb6225dA87f4dEcD9d37c32f63Eea", // S*FRAX - ADDRESSES.avax.USDC, // USDC + ADDRESSES.avax.USDC, "0x8736f92646B2542B3e5F3c63590cA7Fe313e283B", // S*MAI "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", // S*USDt "0xEAe5c2F6B25933deB62f754f239111413A0A25ef", // S*USDt @@ -81,7 +81,7 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - ADDRESSES.polygon.USDC, // USDC + ADDRESSES.polygon.USDC, "0x1c272232Df0bb6225dA87f4dEcD9d37c32f63Eea", // S*DAI "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", // S*USDT "0x8736f92646B2542B3e5F3c63590cA7Fe313e283B", // S*miMATIC @@ -98,7 +98,7 @@ module.exports = treasuryExports({ owners: [arbitrum], tokens: [ nullAddress, - ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDC, "0xaa4BF442F024820B2C28Cd0FD72b82c63e66F56C", // S*FRAX "0xF39B7Be294cB36dE8c510e267B82bb588705d977", // S*MAI "0x915A55e36A01285A14f05dE6e81ED9cE89772f8e", // S*SGETH @@ -114,8 +114,8 @@ module.exports = treasuryExports({ owners: [optimism], tokens: [ nullAddress, - ADDRESSES.optimism.OP, // OP - ADDRESSES.optimism.USDC, // USDC + ADDRESSES.optimism.OP, + ADDRESSES.optimism.USDC, "0x165137624F1f692e69659f944BF69DE02874ee27", // S*DAI "0x368605D9C6243A80903b9e326f1Cddde088B8924", // S*FRAX "0x3533F5e279bDBf550272a199a223dA798D9eff78", // S*LUSD @@ -135,7 +135,7 @@ module.exports = treasuryExports({ owners: [fantom], tokens: [ nullAddress, - ADDRESSES.fantom.USDC, // USDC + ADDRESSES.fantom.USDC, "0x12edeA9cd262006cC3C4E77c90d2CD2DD4b1eb97", // S*USDC ], ownTokens: [ @@ -146,7 +146,7 @@ module.exports = treasuryExports({ metis: { owners: [metis], tokens: [ - ADDRESSES.metis.Metis, // METIS + ADDRESSES.metis.Metis, ], ownTokens: [], }, diff --git a/projects/treasury/synthetix.js b/projects/treasury/synthetix.js index 9fc4e17fc2..59ca84616c 100644 --- a/projects/treasury/synthetix.js +++ b/projects/treasury/synthetix.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json'); const { nullAddress,treasuryExports } = require("../helper/treasury"); const synthetixTreasury = "0x99f4176ee457afedffcb1839c7ab7a030a5e4a92"; @@ -11,13 +11,13 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI - '0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B',//CVX - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51',//sUSD - ADDRESSES.ethereum.LIDO,//LIDO + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.CVX, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.sUSD, + ADDRESSES.ethereum.LIDO, '0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3',//RAD '0x3C0FFFF15EA30C35d7A85B85c0782D6c94e1d238' ], diff --git a/projects/treasury/thellamas.js b/projects/treasury/thellamas.js index 0599357757..02ef046b4e 100644 --- a/projects/treasury/thellamas.js +++ b/projects/treasury/thellamas.js @@ -9,7 +9,7 @@ module.exports = mergeExports([treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.CVX, ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.CRV, @@ -24,7 +24,7 @@ module.exports = mergeExports([treasuryExports({ }), { ethereum: { tvl: async (_, _1, _2, { api }) => { - const lockedCVXBal = await api.call({ abi: 'erc20:balanceOf', target: '0x72a19342e8F1838460eBFCCEf09F6585e32db86E', params: Treasury }) + const lockedCVXBal = await api.call({ abi: 'erc20:balanceOf', target: ADDRESSES.ethereum.vlCVX, params: Treasury }) api.add(ADDRESSES.ethereum.CVX, lockedCVXBal) await genericUnwrapCvxRewardPool({ api, owner: Treasury, pool: '0x39D78f11b246ea4A1f68573c3A5B64E83Cff2cAe'}) return api.getBalances() diff --git a/projects/treasury/yearn.js b/projects/treasury/yearn.js index 006ffcefcb..7889fee6fb 100644 --- a/projects/treasury/yearn.js +++ b/projects/treasury/yearn.js @@ -3,27 +3,25 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); const yearnTreasury = "0x93a62da5a14c80f265dabc077fcee437b1a0efde"; const yearnTreasury1 = "0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52"; -const yearnTreasuryarb = "0xb6bc033d34733329971b938fef32fad7e98e56ad" -const YEARN = ADDRESSES.ethereum.YFI; - +const yearnTreasuryarb = "0xb6bc033d34733329971b938fef32fad7e98e56ad"; module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490',//3crv - ADDRESSES.ethereum.WETH,//WETH - ADDRESSES.ethereum.USDT,//USDT - ADDRESSES.ethereum.CRV,//CRV + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.CRV, '0xba100000625a3754423978a60c9317c58a424e3D',//BAL '0x31429d1856aD1377A8A0079410B297e1a9e214c2',//ANGLE - '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51',//sUSD - ADDRESSES.ethereum.WBTC,//WBTC + ADDRESSES.ethereum.sUSD, + ADDRESSES.ethereum.WBTC, ], owners: [yearnTreasury,yearnTreasury1], - ownTokens: [YEARN], + ownTokens: [ADDRESSES.ethereum.YFI], fetchTokens: true, }, arbitrum: { diff --git a/projects/wonderland/index.js b/projects/wonderland/index.js index 8f955b6450..34c6a5dffd 100644 --- a/projects/wonderland/index.js +++ b/projects/wonderland/index.js @@ -1,7 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require("../helper/staking"); const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); -const sdk = require("@defillama/sdk"); const TimeStaking = "0x4456B87Af11e87E329AB7d7C7A246ed1aC2168B9"; const RevenueSharingFarm = "0xC172c84587bEa6d593269bFE08632bf2Da2Bc0f6"; @@ -20,8 +19,8 @@ async function avaxTvl(timestamp, ethBlock, chainBlocks) { await sumTokensAndLPsSharedOwners( balances, [ - [ADDRESSES.avax.USDt, false], // USDT - [ADDRESSES.avax.USDC_e, false], // USDC.e + [ADDRESSES.avax.USDt, false], + [ADDRESSES.avax.USDC_e, false], ["0x39fC9e94Caeacb435842FADeDeCB783589F50f5f", false], // KNC ["0x63682bDC5f875e9bF69E201550658492C9763F89", false], // BSGG ["0x0da67235dd5787d67955420c84ca1cecd4e5bb3b", false], //wMEMO @@ -44,15 +43,15 @@ async function ethTvl(timestamp, ethBlock, chainBlocks) { await sumTokensAndLPsSharedOwners( balances, [ - ["0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", false], // LUSD + [ADDRESSES.ethereum.LUSD, false], ["0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", false], // FRAX - ["0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", false], // CVX - ["0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", false], // cvxCRV + [ADDRESSES.ethereum.CVX, false], + [ADDRESSES.ethereum.cvxCRV, false], ["0x55C08ca52497e2f1534B59E2917BF524D4765257", false], // UwU ["0x69570f3E84f51Ea70b7B68055c8d667e77735a25", false], // BSGG ["0x04906695D6D12CF5459975d7C3C03356E4Ccd460", false], // sOHM ["0x29127fE04ffa4c32AcAC0fFe17280ABD74eAC313", false], // sifu - [ADDRESSES.ethereum.TUSD, false], // TUSD + [ADDRESSES.ethereum.TUSD, false], ["0x66761Fa41377003622aEE3c7675Fc7b5c1C2FaC5", false], // CPOOL ["0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", false], // ALCX ["0xdB25f211AB05b1c97D595516F45794528a807ad8", false], // EURS @@ -62,9 +61,9 @@ async function ethTvl(timestamp, ethBlock, chainBlocks) { ["0x0C10bF8FcB7Bf5412187A595ab97a3609160b5c6", false], // USDD ["0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", false], // STG ["0x6243d8CEA23066d098a15582d81a598b4e8391F4", false], // FLX - [ADDRESSES.ethereum.SNX, false], // SNX - [ADDRESSES.ethereum.USDT, false], // USDT - [ADDRESSES.ethereum.DAI, false], // DAI + [ADDRESSES.ethereum.SNX, false], + [ADDRESSES.ethereum.USDT, false], + [ADDRESSES.ethereum.DAI, false], ], [Treasury_Eth], ethBlock, diff --git a/projects/xdai/index.js b/projects/xdai/index.js index 8f5032cc3c..a3cb007350 100644 --- a/projects/xdai/index.js +++ b/projects/xdai/index.js @@ -3,8 +3,8 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const { covalentGetTokens } = require('../helper/http'); const tokenAddresses = [ - '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', // SAI - ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.SAI, + ADDRESSES.ethereum.DAI, //'0x06af07097c9eeb7fd685c692751d5C66db49c215' // CHAI "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI ]; diff --git a/projects/xtoken/constants.js b/projects/xtoken/constants.js index b2d0ed44ec..fbfb91c145 100644 --- a/projects/xtoken/constants.js +++ b/projects/xtoken/constants.js @@ -19,7 +19,7 @@ const xu3lpfAddr = "0x4296d40183356A770Fd8cA3Ba0592f0163BE9CA3"; const xu3lpgAddr = "0x28ce95124FB0d5Febe6Ab258072848f5fe1010eC"; const xu3lphAddr = "0x9ed880b7F75a220C0450E4884521ba8d500eb4bb"; const ethrsi6040Addr = "0x93E01899c10532d76C0E864537a1D26433dBbDdB"; -const sUsdAddr = "0x57ab1e02fee23774580c119740129eac7081e9d3"; +const sUsdAddr = ADDRESSES.ethereum.sUSD_OLD; const xbntaAddr = "0x6949f1118FB09aD2567fF675f96DbB3B6985ACd0"; const alphaAddr = "0xa1faa113cbe53436df28ff0aee54275c13b40975"; const bntAddr = "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"; diff --git a/projects/xtoken/index.js b/projects/xtoken/index.js index a0cb8604ab..c73eaf05fa 100644 --- a/projects/xtoken/index.js +++ b/projects/xtoken/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json'); const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const terminal = require("./terminal"); @@ -13,7 +14,6 @@ const { xinchbAddr, xkncaAddr, xkncbAddr, - xsnxaAddr, xsnxaAdminAddr, xsnxaTradeAccountingAddr, xu3lpaAddr, @@ -32,8 +32,6 @@ const { inchAddr, usdcAddr, aaveAddr, - usdtAddress, - xtkAddress } = require("./constants"); const BigNumber = require('bignumber.js'); const xu3lps = [ @@ -177,7 +175,7 @@ async function tvl(timestamp, block) { })).output; sdk.util.sumSingleBalance( balances, - "0x57ab1ec28d129707052df4df418d58a2d46d5f51", + ADDRESSES.ethereum.sUSD, xsnxaSusdRaw ); From f0ecaf31f003979400860d762c97421c8459aad0 Mon Sep 17 00:00:00 2001 From: dbvora03 <54694188+dbvora03@users.noreply.github.com> Date: Mon, 26 Jun 2023 01:29:52 -0500 Subject: [PATCH 0880/1354] Use etherfi oracle (#6623) * add ether-fi tvl calculation * fix eslint issues * fix eslint issues * filter out exited validators * replace code with oracle contract * use optimism oracle --- projects/ether-fi/index.js | 129 ++----------------------------------- 1 file changed, 6 insertions(+), 123 deletions(-) diff --git a/projects/ether-fi/index.js b/projects/ether-fi/index.js index 5a272582e6..8c9ec59018 100644 --- a/projects/ether-fi/index.js +++ b/projects/ether-fi/index.js @@ -1,130 +1,13 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { GraphQLClient, gql } = require('graphql-request') -const sdk = require('@defillama/sdk'); -const axios = require("axios"); - -const config = { - GRAPH_URL: "https://api.studio.thegraph.com/query/41778/etherfi-mainnet/0.0.3", - BEACONCHAIN_URL: "https://beaconcha.in/api/v1/validator", - LP_ADDRESS: '', - PAGINATION_LIMIT: 100, -}; - -const newTVL = async (block, api) => { - - const validators = await queryFromDepositEvent() - - let pubkeyPartitions = [] - let nodeAddresses = [] - // Maps will ensure we will be running in linear time. - // If we reach something like 10000 validators, we dont want to push iterate something 10000^2 times - let validatorMapping = new Map() - let nodeBalanceMapping = new Map() - - let validatorsPerBatch = 100; - - for (const validator of validators) { - - var index = Object.keys(nodeBalanceMapping).length; - - const validatorSubarrayIndex = Math.floor(index / validatorsPerBatch) - if (!pubkeyPartitions[validatorSubarrayIndex]) { - pubkeyPartitions[validatorSubarrayIndex] = []; - } - pubkeyPartitions[validatorSubarrayIndex].push(validator.validatorPubKey) - - // This will let us access validator data in constant time later on - validatorMapping[validator.validatorPubKey] = validator - nodeBalanceMapping[validator.etherfiNode] = validator.validatorPubKey - - nodeAddresses.push(validator.etherfiNode) - } - - // Get Validator Balances - const validatorBalances = await pubkeyPartitions.reduce(async (accumulatorPromise, pubkeySet) => { - const accumulator = await accumulatorPromise; - const response = await axios.post(config.BEACONCHAIN_URL, { - indicesOrPubkey: pubkeySet.join(",") - }); - return accumulator.concat(response.data.data); - }, Promise.resolve([])); - - for (const balance of validatorBalances) { - validatorMapping[balance.pubkey] = { ...validatorMapping[balance.pubkey], validatorBalance: balance.balance * (10**9) }; - } - - // Get etherfiNode contract balances - const {output} = await sdk.api.eth.getBalances({ targets: nodeAddresses, block }) - - for (const balance of output) { - validatorMapping[nodeBalanceMapping[balance.target]] = {...validatorMapping[nodeBalanceMapping[balance.target]], contractBalance: parseInt(balance.balance)} - } - - // Now that we have out mapping, we can calculate it all together - let lpTVL = 0; - let soloStakerTVL = 0; - Object.values(validatorMapping).forEach(async (validator) => { - const beaconBalanceEth = validator.validatorBalance - - if (beaconBalanceEth) { - const balance = beaconBalanceEth + validator.contractBalance - if (validator.TNFTHolder == config.LP_ADDRESS) { - lpTVL += balance - } else { - soloStakerTVL += balance - } - } - }) - - const eapTVL = await api.call({ abi: 'uint256:getContractTVL', target: '0x7623e9DC0DA6FF821ddb9EbABA794054E078f8c4'}) - - return { - soloTVL: soloStakerTVL, - lpTVL, - eapTVL: parseInt(eapTVL) - } -} - -const queryFromDepositEvent = async () => { - - const graphQLClient = new GraphQLClient(config.GRAPH_URL); - const validatorQuery = gql` - query GetValidators($limit: Int!, $offset: Int!) { - validators(limit: $limit, offset: $offset, , where: {and: [{phase_not: CANCELLED}, {phase_not: FULLY_WITHDRAWN}, {phase_not: EXITED}]}) { - etherfiNode - TNFTHolder - validatorPubKey - } - } - `; - - try { - const limit = config.PAGINATION_LIMIT; - let validators = []; - - let offset = 0; - for (;;) { - const res = await graphQLClient.request(validatorQuery, { limit, offset }); - const { validators: batch } = res; - - validators.push(...batch); - offset += limit; - if (batch.length < limit) break; - } - - return validators; - } catch (error) { - console.error('error: queryFromDepositEvent:', error); - } -} +const { nullAddress } = require("../helper/unwrapLPs"); +const sdk = require('@defillama/sdk') module.exports = { - misrepresentedTokens: true, ethereum: { - tvl: async (_, block, _2, { api }) => { - const {soloTVL, lpTVL, eapTVL} = await newTVL(block, api) + tvl: async (timestamp) => { + const api = new sdk.ChainApi({ timestamp, chain: 'optimism' }) + await api.getBlock() return { - ['ethereum:' + ADDRESSES.null]: soloTVL + lpTVL + eapTVL + [nullAddress]: await api.call({ target: '0x6329004E903B7F420245E7aF3f355186f2432466', abi: 'uint256:getTvl'}) } } } From a74207304ce3c1b47f6791fdeb354e9c44eb60bf Mon Sep 17 00:00:00 2001 From: 0xAegir <99401181+0xAegir@users.noreply.github.com> Date: Mon, 26 Jun 2023 07:31:53 +0100 Subject: [PATCH 0881/1354] Add StakedICP protocol (#6627) --- projects/stakedicp/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/stakedicp/index.js diff --git a/projects/stakedicp/index.js b/projects/stakedicp/index.js new file mode 100644 index 0000000000..1dd10aa8d1 --- /dev/null +++ b/projects/stakedicp/index.js @@ -0,0 +1,23 @@ +const BigNumber = require("bignumber.js"); +const axios = require('axios'); + +const url = 'https://h6uvl-xiaaa-aaaap-qaawa-cai.ic0.app/tvl'; + +async function tvl(_timestamp, _block) { + const tvl = (await axios.get(url)).data.tvl; + if (tvl === undefined) { + // API didn't return a tvl number to work with + throw new Error("Unknown"); + } + return { + "coingecko:internet-computer": BigNumber(tvl).div(1e8).toFixed(0), + }; +} + +module.exports = { + timetravel: false, + methodology: "TVL counts ICP deposited as collateral to mint stICP", + icp: { + tvl, + }, +}; From 6facb5b2bb003365b4f68037bf5e273e25cee175 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 08:34:11 +0200 Subject: [PATCH 0882/1354] update azuro --- projects/azuro/index.js | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/projects/azuro/index.js b/projects/azuro/index.js index f822f13bab..3a7033c73f 100644 --- a/projects/azuro/index.js +++ b/projects/azuro/index.js @@ -1,25 +1,12 @@ +const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { - polygon: { - owners: [ - '0x2a838ab9b037db117576db8d0dcc3b686748ef7c', - '0x7043E4e1c4045424858ECBCED80989FeAfC11B36', - ], - tokens: [ - ADDRESSES.polygon.USDC, - ADDRESSES.polygon.USDT, - ], - }, + polygon: { factory: '0xde3e9a39af548b5daa8365d30a5f6e7a7fa0203d', fromBlock: 38563568, }, + arbitrum: { factory: '0x752735c1a93fe359e7bac65f9981e7796e1039ef', fromBlock: 94336607, }, xdai: { - owners: [ - '0xac004b512c33D029cf23ABf04513f1f380B3FD0a', // v1 - '0x204e7371Ade792c5C006fb52711c50a7efC843ed', // v2 - ], - tokens: [ - ADDRESSES.xdai.WXDAI, // WXDAI - ], + factory: '0x8ea1a7241537f10fa73363fdc6380f3fc8619c03', fromBlock: 26026402, tokensAndOwners: [[ADDRESSES.xdai.WXDAI, '0xac004b512c33D029cf23ABf04513f1f380B3FD0a']], // v1 }, } @@ -32,3 +19,23 @@ module.exports = { polygon: { tvl }, methodology: `TVL is the total amount of WXDAI and USDC held on Liquidity pools’ smart-contracts.` } + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, tokensAndOwners = [] } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0xbf48d8b8335478e764061b936181c0a7b273540bd6284da4d4791758e81fd51c'], + eventAbi: 'event NewPool(address indexed lp, address indexed core, string indexed coreType, address access)', + onlyArgs: true, + fromBlock, + }) + const lps = logs.map(i => i[0]) + const tokens = await api.multiCall({ abi: 'address:token', calls: lps }) + lps.forEach((lp, i) => tokensAndOwners.push([tokens[i], lp])) + return sumTokens2({ api, tokensAndOwners, permitFailure: true }) + } + } +}) \ No newline at end of file From 02ef9ce23b4debe38013b7e80b61eabd64ae3f72 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 09:04:17 +0200 Subject: [PATCH 0883/1354] track hmx --- projects/hmx/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/hmx/index.js diff --git a/projects/hmx/index.js b/projects/hmx/index.js new file mode 100644 index 0000000000..4e806763a1 --- /dev/null +++ b/projects/hmx/index.js @@ -0,0 +1,17 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ + owner: '0x56CC5A9c0788e674f17F7555dC8D3e2F1C0313C0', + tokens: [ + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.fsGLP, + ] + }) + } +} \ No newline at end of file From f67c90bd15f98e4d6dc3b226b0e05454490bf391 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 09:28:18 +0200 Subject: [PATCH 0884/1354] fix mobox --- projects/mobox.js | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/projects/mobox.js b/projects/mobox.js index 8304980de5..7a32d426d4 100644 --- a/projects/mobox.js +++ b/projects/mobox.js @@ -1,47 +1,18 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("./helper/unwrapLPs"); -const abi = require("./pendle/abi.json"); -const { stakings } = require("./helper/staking.js"); - -async function pool2(timestamp, block, chainBlocks) { - const balances = {}; - - const masterChefDeposits = await sdk.api.abi.call({ - target: "0x73feaa1ee314f8c655e354234017be2193c9e24e", - abi: abi.userInfo, - params: [405, "0x9442dad1df11c858a900f55291dc1cf645ff66df"], - block: chainBlocks.bsc, - chain: "bsc", - }); - - await unwrapUniswapLPs( - balances, - [ - { - balance: masterChefDeposits.output.amount, - token: "0x8FA59693458289914dB0097F5F366d771B7a7C3F", - }, - ], - chainBlocks.bsc, - "bsc", - (a) => `bsc:${a}` - ); - - return balances; -} +const { stakings, staking } = require("./helper/staking.js"); +const { pool2 } = require("./helper/pool2.js"); module.exports = { bsc: { tvl: () => ({}), - pool2, + pool2: pool2(['0xdad49e63f97c967955975490a432de3796c699e6','0xa5f8c5dbd5f286960b9d90548680ae5ebff07652'], '0x8FA59693458289914dB0097F5F366d771B7a7C3F'), staking: stakings( [ "0xdad49e63f97c967955975490a432de3796c699e6", "0xf8c1bA88F1E4aeD152F945F1Df2a8fdc36127B5f", "0x3bD6a582698ECCf6822dB08141818A1a8512c68D", + "0x5E7Eb57B163b78e93608E773e0F4a88A55d7C28F", ], "0x3203c9e46ca618c8c1ce5dc67e7e9d75f5da2377", - "bsc" ), }, }; From ac772d180c96803dc20c79139410cf2d2e512cc7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:23:20 +0200 Subject: [PATCH 0885/1354] use token labels --- projects/0vix/index.js | 2 +- projects/allchainbridge/index.js | 2 +- projects/ante/index.js | 2 +- projects/archly-finance/index.js | 2 +- projects/atlantisloans/index.js | 2 +- projects/blackbird-finance/index.js | 2 +- projects/bonqdao/index.js | 2 +- projects/bprotocol/index.js | 4 +- projects/celerbridge/index.js | 4 +- projects/config/hodltree/addresses.js | 2 +- projects/crosschainbridge/index.js | 2 +- projects/curve/historical/index.js | 13 +++-- projects/cyclone/index.js | 2 +- projects/debets/index.js | 2 +- projects/defihalal/index.js | 3 +- projects/dehive/assetsInfo.js | 4 +- projects/diamond-unibot-v2/index.js | 2 +- projects/ethalend/index.js | 3 +- projects/everrise/index.js | 2 +- projects/evolutionland/index.js | 2 +- projects/fiatdao/index.js | 2 +- projects/gnosis/index.js | 2 +- projects/helper/curvePools.js | 2 +- projects/hundredfinance/index.js | 2 +- projects/insurace/index.js | 2 +- projects/izumi-iziswap/index.js | 2 +- projects/kinefinance/index.js | 2 +- projects/klayswap-v3/index.js | 3 +- projects/liquidrium/vaults.js | 4 +- projects/lusd-chickenbonds/index.js | 3 +- projects/macaron/config.js | 2 +- projects/mcs/index.js | 3 +- projects/meanfinance/addresses.js | 2 +- projects/metronome-synth/index.js | 2 +- projects/mimo/index.js | 2 +- projects/monox/index.js | 2 +- projects/multichainMiner.js | 2 +- projects/nord-finance/config.js | 2 +- projects/opyn-gamma/gamma_polygon.js | 2 +- projects/perp88/index.js | 2 +- projects/pine-protocol/index.js | 2 +- projects/pollyfinance/index.js | 3 +- projects/polyroll.js | 2 +- projects/prime-protocol/index.js | 41 ++++++------- projects/relayChain/index.js | 2 +- projects/safedollar/index.js | 2 +- projects/sandclock/index.js | 2 +- projects/sapphiremine.js | 3 +- projects/single/helpers.js | 3 +- projects/solace-finance/config.js | 2 +- projects/stakewise/index.js | 2 +- projects/sun/index.js | 2 +- projects/swivel/index.js | 2 +- projects/synapse/config.js | 2 +- projects/teddy/index.js | 2 +- projects/thetanuts/index.js | 2 +- projects/tigris/index.js | 5 +- projects/tokemak/index.js | 2 +- projects/treasury/aave.js | 6 +- projects/treasury/alchemix.js | 2 +- projects/treasury/badger-dao.js | 2 +- projects/treasury/dxdao.js | 2 +- projects/treasury/equilibre.js | 17 +++--- projects/treasury/gnosis-dao.js | 4 +- projects/treasury/idle-dao.js | 2 +- projects/treasury/index-coop.js | 2 +- projects/treasury/india-covid-relief-fund.js | 2 +- projects/treasury/iq.js | 2 +- projects/treasury/jade-protocol.js | 2 +- projects/treasury/liquity-treasury.js | 2 +- projects/treasury/perion.js | 2 +- projects/treasury/piedao.js | 2 +- projects/treasury/pleasrdao.js | 4 +- projects/treasury/railgun.js | 4 +- projects/treasury/redacted.js | 2 +- projects/treasury/shapeshift.js | 2 +- projects/treasury/silo-finance.js | 2 +- projects/treasury/sphere-finance.js | 6 +- projects/treasury/synapse.js | 61 ++++++++++---------- projects/treasury/tranchess.js | 2 +- projects/treasury/wonderland.js | 2 +- projects/vesync/index.js | 3 +- projects/wasabix/index.js | 2 +- projects/wonderland/index.js | 2 +- projects/woofi.js | 2 +- projects/xdollar-finance/index.js | 2 +- projects/xy-finance/index.js | 6 +- projects/zklend/index.js | 11 ++-- projects/zomma/index.js | 3 +- 89 files changed, 183 insertions(+), 167 deletions(-) diff --git a/projects/0vix/index.js b/projects/0vix/index.js index 11aad6127c..a7e7b202d3 100644 --- a/projects/0vix/index.js +++ b/projects/0vix/index.js @@ -3,7 +3,7 @@ const {compoundExports} = require('../helper/compound') const master0vix = "0x8849f1a0cB6b5D6076aB150546EddEe193754F1C"; const oMATIC = "0xE554E874c9c60E45F1Debd479389C76230ae25A8"; -const matic = "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"; +const matic = ADDRESSES.polygon.WMATIC_2; const chain = "polygon"; module.exports = { diff --git a/projects/allchainbridge/index.js b/projects/allchainbridge/index.js index e44a7836b4..dfa855d151 100644 --- a/projects/allchainbridge/index.js +++ b/projects/allchainbridge/index.js @@ -70,7 +70,7 @@ const tokensConf = { MATIC: nullAddress, USDC: ADDRESSES.polygon.USDC, USDT: ADDRESSES.polygon.USDT, - WMATIC: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + WMATIC: ADDRESSES.polygon.WMATIC_2, }, fantom: { FTM: nullAddress, diff --git a/projects/ante/index.js b/projects/ante/index.js index b043dd292b..27f4b2a483 100644 --- a/projects/ante/index.js +++ b/projects/ante/index.js @@ -36,7 +36,7 @@ const CONFIG = { }, ], startBlock: 32245577, - gasToken: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + gasToken: ADDRESSES.polygon.WMATIC_2, }, bsc: { factories: [ diff --git a/projects/archly-finance/index.js b/projects/archly-finance/index.js index f3b1aab567..916d76bc29 100644 --- a/projects/archly-finance/index.js +++ b/projects/archly-finance/index.js @@ -82,7 +82,7 @@ module.exports = { owner: ARCHLY_VE_TOKEN_OTHER, tokens: [ARCHLY_ARC_TOKEN_OTHER], lps: ['0x2651D7B53BaF1925D28A3b5A3ef371274e630C4C'], - coreAssets: ['0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270'], + coreAssets: [ADDRESSES.polygon.WMATIC_2], restrictTokenRatio: 100, }) } diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js index 381da2ace7..e1d5b18169 100644 --- a/projects/atlantisloans/index.js +++ b/projects/atlantisloans/index.js @@ -31,7 +31,7 @@ module.exports = { polygon: compoundExports(polygonComptroller, "polygon", "0xa65722af4957cef481edb4cb255f804dd36e8adc", - "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" + ADDRESSES.polygon.WMATIC_2 ), avax: compoundExports(avaxComptroller, "avax", diff --git a/projects/blackbird-finance/index.js b/projects/blackbird-finance/index.js index 1cbb1b3903..439f241e90 100644 --- a/projects/blackbird-finance/index.js +++ b/projects/blackbird-finance/index.js @@ -11,7 +11,7 @@ const translate = { [ADDRESSES.shiden.ETH]: "avax:" + ADDRESSES.avax.WAVAX, [ADDRESSES.moonriver.USDT]: "fantom:" + ADDRESSES.fantom.WFTM, "0x9b8077c6590b560f1a9d60512648277d29b35a3b": "polygon:0x8a953cfe442c5e8855cc6c61b1293fa648bae472", - [ADDRESSES.kcc.DAI]: "polygon:0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + [ADDRESSES.kcc.DAI]: "polygon:" + ADDRESSES.polygon.WMATIC_2, } async function tvl(timestamp, block, chainBlocks) { diff --git a/projects/bonqdao/index.js b/projects/bonqdao/index.js index d23900e6b1..a3633567f4 100644 --- a/projects/bonqdao/index.js +++ b/projects/bonqdao/index.js @@ -8,7 +8,7 @@ const BNQ = '0x91eFbe97e08D0ffC7d31381c032D05FAd8E25aAA' // BONQ Utility Token const BNQ_STAKING_CONTRACT = '0xb1b72B3579b03dFdCfF3195486277605e55Cf703' const BNQ_BEUR_UNIV3_POOL = '0xA96373C7a591fd21b86E0c9b8E156CC81E6cBb5e' const TOKEN_COLLATERAL = [ - '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', // WMATIC + ADDRESSES.polygon.WMATIC_2, // WMATIC ADDRESSES.polygon.USDC, // USDC '0x35b2ece5b1ed6a7a99b83508f8ceeab8661e0632', // WALBT (Wrapped AllianceBlock Token) ADDRESSES.polygon.WETH_1, // WETH diff --git a/projects/bprotocol/index.js b/projects/bprotocol/index.js index 5ada8b2186..ee990af010 100644 --- a/projects/bprotocol/index.js +++ b/projects/bprotocol/index.js @@ -173,7 +173,7 @@ const ADDRESSES = require('../helper/coreAssets.json') } async function liquityTvl(timestamp, block) { - if (block < lFirstBlock) return { '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0': '0' }; + if (block < lFirstBlock) return { [ADDRESSES.ethereum.LUSD]: '0' }; let totalBalance = new BigNumber(0); @@ -202,7 +202,7 @@ const ADDRESSES = require('../helper/coreAssets.json') } // all balance is lusd - return {'0x5f98805A4E8be255a32880FDeC7F6728C6568bA0' : totalBalance.toString(10)} + return {[ADDRESSES.ethereum.LUSD]: totalBalance.toString(10)} } async function tvlEth(timestamp, block) { diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js index a8dab3fa42..d5a39397b1 100644 --- a/projects/celerbridge/index.js +++ b/projects/celerbridge/index.js @@ -451,7 +451,7 @@ const liquidityBridgeTokens = [ }, { // MATIC - polygon: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + polygon: ADDRESSES.polygon.WMATIC_2, }, { // AAVE @@ -487,7 +487,7 @@ const liquidityBridgeTokens = [ }, { // LUSD - ethereum: "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + ethereum: ADDRESSES.ethereum.LUSD, }, { // JONES diff --git a/projects/config/hodltree/addresses.js b/projects/config/hodltree/addresses.js index a07fe69df6..f366254dfa 100644 --- a/projects/config/hodltree/addresses.js +++ b/projects/config/hodltree/addresses.js @@ -119,7 +119,7 @@ const polygon = [ contractType: lendBorrow.lender, address: '0x2F35d311fd2F0b0dA65FA268B86831279FB4fd98', miscInfo: { - tokenIn: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270' + tokenIn: ADDRESSES.polygon.WMATIC_2 } }, { contractType: lendBorrow.borrower, diff --git a/projects/crosschainbridge/index.js b/projects/crosschainbridge/index.js index 07738b6603..e6049c9215 100644 --- a/projects/crosschainbridge/index.js +++ b/projects/crosschainbridge/index.js @@ -96,7 +96,7 @@ const tokens = { USDT: ADDRESSES.polygon.USDT, // Network Tokens WETH: ADDRESSES.polygon.WETH_1, - WMATIC: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + WMATIC: ADDRESSES.polygon.WMATIC_2, // Further tokens DAF: "0x2f0e07e881363bb1cdff32971b2f8c87ef8ff432", GFX: "0x65ad6a2288b2dd23e466226397c8f5d1794e58fc", diff --git a/projects/curve/historical/index.js b/projects/curve/historical/index.js index e638eb578f..97d37a198c 100644 --- a/projects/curve/historical/index.js +++ b/projects/curve/historical/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') const { Web3 } = require('web3'); const BigNumber = require("bignumber.js"); const axios = require("axios"); @@ -143,7 +144,7 @@ let coinDecimals = [ '0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa': '18', '0x0316EB71485b0Ab14103307bf65a021042c6d380': '18', '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D': '8', - '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599': '8', + [ADDRESSES.ethereum.WBTC]: '8', '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6': '18', '0x196f4727526eA7FB1e17b2071B3d8eAA38486988': '18', '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5': '18', @@ -153,7 +154,7 @@ let coinDecimals = [ '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd': '2', //GUSD '0x39AA39c021dfbaE8faC545936693aC917d5E7563': '8', //cUSD '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643': '8', //cDAI - '0xdAC17F958D2ee523a2206206994597C13D831ec7': '6', //USDT + [ADDRESSES.ethereum.USDT]: '6', //USDT '0x73a052500105205d34Daf004eAb301916DA8190f': '18', //yTUSD '0xd6aD7a6750A7593E092a9B218d66C0A814a3436e': '6', ///yUSDC '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01': '18', ///yDAI @@ -166,11 +167,11 @@ let coinDecimals = [ '0x26EA744E5B887E5205727f55dFBE8685e3b21951': '6', ///y2USDC '0xC2cB1040220768554cf699b0d863A3cd4324ce32': '18', ///y2DAI '0xE6354ed5bC4b393a5Aad09f21c46E101e692d447': '6', ///y2USDT - '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51': '18', //sUSD - '0x6B175474E89094C44Da98b954EedeAC495271d0F': '18', //DAI - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48': '6', //USDC + [ADDRESSES.ethereum.sUSD]: '18', //sUSD + [ADDRESSES.ethereum.DAI]: '18', //DAI + [ADDRESSES.ethereum.USDC]: '6', //USDC '0x5BC25f649fc4e26069dDF4cF4010F9f706c23831': '18', //dusd - '0x0000000000085d4780B73119b644AE5ecd22b376': '18' + [ADDRESSES.ethereum.TUSD]: '18' } ] diff --git a/projects/cyclone/index.js b/projects/cyclone/index.js index 8a8299c5d7..b2a8f087d4 100644 --- a/projects/cyclone/index.js +++ b/projects/cyclone/index.js @@ -41,7 +41,7 @@ module.exports = { staking: staking(contracts.bsc.staking.address, contracts.bsc.staking.token, "bsc", "cyclone-protocol", 18), }, polygon: { - tvl: tvl("polygon", "polygon:0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"), + tvl: tvl("polygon", "polygon:" + ADDRESSES.polygon.WMATIC_2), pool2: pool2(contracts.polygon.pool2.address, contracts.polygon.pool2.token,), }, }; diff --git a/projects/debets/index.js b/projects/debets/index.js index f9a9f79d03..197d25b8de 100644 --- a/projects/debets/index.js +++ b/projects/debets/index.js @@ -7,7 +7,7 @@ const getPoolInfo = const factory_address_polygon = "0xcE214f6a877747495106B5e55533f3e23D290DBd"; const polygon_tokens = Object.values({ - POLYGON_WMATIC: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + POLYGON_WMATIC: ADDRESSES.polygon.WMATIC_2, POLYGON_WETH: ADDRESSES.polygon.WETH_1, POLYGON_WBTC: ADDRESSES.polygon.WBTC, POLYGON_USDC: ADDRESSES.polygon.USDC, diff --git a/projects/defihalal/index.js b/projects/defihalal/index.js index b2a3ee5ca4..a7bd51a86c 100644 --- a/projects/defihalal/index.js +++ b/projects/defihalal/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {getLiquityTvl} = require('../helper/liquity') //USDH TOKEN ADDRESS ON POLYGON MAINNET @@ -6,6 +7,6 @@ const USDH_TOKEN_ADDRESS = "0x92B27abe3C96d3B1266f881b3B0886e68645F51F"; module.exports = { methodology: "Deposited Matic and USDH, USDH is not listed on CoinGecko and has been replaced with TUSD", polygon:{ - tvl: getLiquityTvl("0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", "0xd8a3e8c70091d6231a63e671a6ce8ea44e143d24", "polygon") + tvl: getLiquityTvl(ADDRESSES.polygon.WMATIC_2, "0xd8a3e8c70091d6231a63e671a6ce8ea44e143d24", "polygon") } }; diff --git a/projects/dehive/assetsInfo.js b/projects/dehive/assetsInfo.js index ac39fe5bd6..c68fa85945 100644 --- a/projects/dehive/assetsInfo.js +++ b/projects/dehive/assetsInfo.js @@ -127,7 +127,7 @@ module.exports = { lpAddress: '0xc4e595acDD7d12feC385E5dA5D43160e8A0bAC0E', // SUSHI-WMATIC-WETH dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', underlying: [ - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC + ADDRESSES.polygon.WMATIC_2, // WMATIC ADDRESSES.polygon.WETH_1, // WETH ], poolId: 6 @@ -166,7 +166,7 @@ module.exports = { lpAddress: '0xf69e93771F11AECd8E554aA165C3Fe7fd811530c', // SUSHI-WMATIC-GHST dhvToken: '0x5fCB9de282Af6122ce3518CDe28B7089c9F97b26', underlying: [ - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC + ADDRESSES.polygon.WMATIC_2, // WMATIC '0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7', // GHST ], poolId: 9 diff --git a/projects/diamond-unibot-v2/index.js b/projects/diamond-unibot-v2/index.js index 4fd9e2ac8c..8e97c7ad9c 100644 --- a/projects/diamond-unibot-v2/index.js +++ b/projects/diamond-unibot-v2/index.js @@ -36,7 +36,7 @@ const config = { "0x8610D60f5329B0560c8F0CEb80175F342fe943F3", ], // WETH [ - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + ADDRESSES.polygon.WMATIC_2, "0xEdD1efA76fe59e9106067D824b89B59157C5223C", ], // WMATIC ], diff --git a/projects/ethalend/index.js b/projects/ethalend/index.js index 4005d35e7d..d3b4da469b 100644 --- a/projects/ethalend/index.js +++ b/projects/ethalend/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const abi = require('./abi.json') const { unwrapUniswapLPs } = require('../helper/unwrapLPs') @@ -51,7 +52,7 @@ async function tvl(chain, block, chainId) { const globalData = (await request("https://api.thegraph.com/subgraphs/name/ethalend/etha-v1", globalDataQuery, { block: block - 100 })).globalDatas await Promise.all(globalData.filter(v => v.type === "lending").map(async v => { if (v.address === "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") { - v.address = "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" + v.address = ADDRESSES.polygon.WMATIC_2 } const decimals = await sdk.api.erc20.decimals(v.address, chain) sdk.util.sumSingleBalance(balances, chain + ':' + v.address, BigNumber(v.totalUnderlying).times(10 ** decimals.output).toFixed(0)) diff --git a/projects/everrise/index.js b/projects/everrise/index.js index 3e60d0b497..9a11a8d5e0 100644 --- a/projects/everrise/index.js +++ b/projects/everrise/index.js @@ -51,7 +51,7 @@ const chainConfig = { }, polygon: { chainId: '137', - WCoin: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + WCoin: ADDRESSES.polygon.WMATIC_2, lpFactory: '0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32', LPs: [ { diff --git a/projects/evolutionland/index.js b/projects/evolutionland/index.js index 9ba2a663e2..daab37b011 100644 --- a/projects/evolutionland/index.js +++ b/projects/evolutionland/index.js @@ -10,7 +10,7 @@ const ring = { const weth = { "ethereum": ADDRESSES.ethereum.WETH, "heco": ADDRESSES.heco.WHT, - "polygon": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "polygon": ADDRESSES.polygon.WMATIC_2, "crab": ADDRESSES.crab.WCRAB, } diff --git a/projects/fiatdao/index.js b/projects/fiatdao/index.js index ba64b4c112..8c9c9e7e6f 100644 --- a/projects/fiatdao/index.js +++ b/projects/fiatdao/index.js @@ -19,7 +19,7 @@ const WSOHM = "0xca76543cf381ebbb277be79574059e32108e3e65" const WSOHM_FDT_SLP = "0x2e30e758b3950dd9afed2e21f5ab82156fbdbbba" const FDT_GOHM = "0x75b02b9889536B617d57D08c1Ccb929c523945C1" -const LUSD = '0x5f98805a4e8be255a32880fdec7f6728c6568ba0' +const LUSD = ADDRESSES.ethereum.LUSD const LUSD3CRV = '0xEd279fDD11cA84bEef15AF5D39BB4d4bEE23F0cA' function resolveUnderlier(underlier) { diff --git a/projects/gnosis/index.js b/projects/gnosis/index.js index 78cea23f17..d4faac58b0 100644 --- a/projects/gnosis/index.js +++ b/projects/gnosis/index.js @@ -16,7 +16,7 @@ function addTvl(owner) { ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.USDC, - '0x6810e776880c02933d47db1b9fc05908e5386b96', + ADDRESSES.ethereum.GNO, ADDRESSES.ethereum.YFI, ADDRESSES.ethereum.sUSD, ADDRESSES.ethereum.UNI, diff --git a/projects/helper/curvePools.js b/projects/helper/curvePools.js index a16a392b6e..e4b847a0aa 100644 --- a/projects/helper/curvePools.js +++ b/projects/helper/curvePools.js @@ -143,7 +143,7 @@ module.exports = { '0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca': { swapContract: '0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca', underlyingTokens: [ - '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', + ADDRESSES.ethereum.LUSD, '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490' ] }, diff --git a/projects/hundredfinance/index.js b/projects/hundredfinance/index.js index 21a181c84a..54510aaca7 100644 --- a/projects/hundredfinance/index.js +++ b/projects/hundredfinance/index.js @@ -71,6 +71,6 @@ module.exports={ harmony:compoundExportsWithAsyncTransform(comptroller, "harmony", "0xbb93C7F378B9b531216f9aD7b5748be189A55807", ADDRESSES.harmony.WONE), moonriver:compoundExportsWithAsyncTransform("0x7d166777bd19a916c2edf5f1fc1ec138b37e7391", "moonriver", "0xd6fcBCcfC375c2C61d7eE2952B329DcEbA2D4e10", "0x98878b06940ae243284ca214f92bb71a2b032b8a"), xdai:compoundExportsWithAsyncTransform("0x6bb6ebCf3aC808E26545d59EA60F27A202cE8586", "xdai", "0x6eDCB931168C9F7C20144f201537c0243b19dCA4", ADDRESSES.xdai.WXDAI), - polygon:compoundExportsWithAsyncTransform("0xedba32185baf7fef9a26ca567bc4a6cbe426e499", "polygon", "0xEbd7f3349AbA8bB15b897e03D6c1a4Ba95B55e31", "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"), + polygon:compoundExportsWithAsyncTransform("0xedba32185baf7fef9a26ca567bc4a6cbe426e499", "polygon", "0xEbd7f3349AbA8bB15b897e03D6c1a4Ba95B55e31", ADDRESSES.polygon.WMATIC_2), optimism:compoundExportsWithAsyncTransform("0x5a5755E1916F547D04eF43176d4cbe0de4503d5d", "optimism", "0x1A61A72F5Cf5e857f15ee502210b81f8B3a66263", ADDRESSES.tombchain.FTM), } diff --git a/projects/insurace/index.js b/projects/insurace/index.js index a2c609b084..cbd0b055de 100644 --- a/projects/insurace/index.js +++ b/projects/insurace/index.js @@ -111,7 +111,7 @@ async function polygon(timestamp, ethBlock, chainBlocks) { _tvlList.forEach((element) => { let address = element.input.params[0].toLowerCase(); if(address === "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"){ - address = "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" + address = ADDRESSES.polygon.WMATIC_2 } let balance = element.output; sdk.util.sumSingleBalance(balances, 'polygon:'+address, balance) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 95517556f0..ccdf428ac8 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -60,7 +60,7 @@ const tvl = async (_, _1, _2, { api }) => { }) pools.forEach((output, i) => toa.push([poolMetaData[i].tokenX, output], [poolMetaData[i].tokenY, output],)) - // if (chain === 'era') bTokens.push('0x82af49447d8a07e3bd95bd0d56f35241523fbab1') + // if (chain === 'era') bTokens.push(ADDRESSES.arbitrum.WETH) return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, permitFailure: true}) } diff --git a/projects/kinefinance/index.js b/projects/kinefinance/index.js index 64bc109719..de73216bd9 100644 --- a/projects/kinefinance/index.js +++ b/projects/kinefinance/index.js @@ -161,7 +161,7 @@ async function bscBorrowed(timestamp, block, chainBlocks) { const polygonUnitroller = "0xdff18ac4146d67bf2ccbe98e7db1e4fa32b96881"; const kmatic = "0xf186a66c2bd0509beaafca2a16d6c39ba02425f9"; -const wmatic = "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270"; +const wmatic = ADDRESSES.polygon.WMATIC_2; const polygonXKine = "0x66a782c9a077f5adc988cc0b5fb1cdcc9d7adeda"; const polygonKine = "0xa9c1740fa56e4c0f6ce5a792fd27095c8b6ccd87"; const polygonkMcd = "0xcd6b46443becad4996a70ee3d8665c0b86a0c54c"; diff --git a/projects/klayswap-v3/index.js b/projects/klayswap-v3/index.js index 91d0d5c309..df1ef1630f 100644 --- a/projects/klayswap-v3/index.js +++ b/projects/klayswap-v3/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') async function v3Tvl(_, _b, _cb, { api, }) { const factory = '0xA15Be7e90df29A4aeaD0C7Fc86f7a9fBe6502Ac9'; const wklay = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432'; - const klay = '0x0000000000000000000000000000000000000000'; + const klay = ADDRESSES.null; const fromBlock = 124342981; const eventAbi = 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, uint256 exid)'; diff --git a/projects/liquidrium/vaults.js b/projects/liquidrium/vaults.js index 3d880e6d2e..b49294e83c 100644 --- a/projects/liquidrium/vaults.js +++ b/projects/liquidrium/vaults.js @@ -48,7 +48,7 @@ const vaults = [ { name: "matic-usdc", address: "0xB19e59b77E173363FB7Ce674f1279c76ee237c7A", - token1: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + token1: ADDRESSES.polygon.WMATIC_2, token2: ADDRESSES.polygon.USDC, token1decimal: 18, token2decimal: 6, @@ -59,7 +59,7 @@ const vaults = [ { name: "matic-weth", address: "0x249403E3163aAA88259e0e79A513E999EF8AbEc3", - token1: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + token1: ADDRESSES.polygon.WMATIC_2, token2: ADDRESSES.polygon.WETH_1, token1decimal: 18, token2decimal: 18, diff --git a/projects/lusd-chickenbonds/index.js b/projects/lusd-chickenbonds/index.js index 9f91ca80c3..abd8486671 100644 --- a/projects/lusd-chickenbonds/index.js +++ b/projects/lusd-chickenbonds/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require("bignumber.js"); const CHICKEN_BOND_MANAGER_CONTRACT = '0x57619FE9C539f890b19c61812226F9703ce37137'; -const LUSD_ADDRESS = '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'; +const LUSD_ADDRESS = ADDRESSES.ethereum.LUSD; async function tvl(_, block) { const bucketAmounts = (await sdk.api.abi.call({ diff --git a/projects/macaron/config.js b/projects/macaron/config.js index 2453fd78ef..15ca85d9a0 100644 --- a/projects/macaron/config.js +++ b/projects/macaron/config.js @@ -951,7 +951,7 @@ const choco_pools_polygon = [ "earningToken": { "symbol": "wMATIC", "address": { - "137": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + "137": ADDRESSES.polygon.WMATIC_2, "80001": "" }, "decimals": 18, diff --git a/projects/mcs/index.js b/projects/mcs/index.js index a4e94f19b4..1b41c49d73 100644 --- a/projects/mcs/index.js +++ b/projects/mcs/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') const MCS_TOKEN_ADDRESS = '0xDa5aC8F284537d6eaB198801127a9d49b0CbDff5'; -const USDC_TOKEN_ADDRESS = '0xfa9343c3897324496a05fc75abed6bac29f8a40f'; +const USDC_TOKEN_ADDRESS = ADDRESSES.telos.ETH; const STAKING_CONTRACT_ADDRESS = '0x258FC83E130Bc708541c33900bAEDE83242646db'; module.exports = { diff --git a/projects/meanfinance/addresses.js b/projects/meanfinance/addresses.js index 9e3a094f00..a0992c91f8 100644 --- a/projects/meanfinance/addresses.js +++ b/projects/meanfinance/addresses.js @@ -37,7 +37,7 @@ const TOKENS_IN_LEGACY_VERSIONS = { ], polygon: [ '0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a', // SUSHI - '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', // WMATIC + ADDRESSES.polygon.WMATIC_2, // WMATIC '0x172370d5cd63279efa6d502dab29171933a610af', // CRV ADDRESSES.polygon.WBTC, // WBTC ADDRESSES.polygon.USDC, // USDC diff --git a/projects/metronome-synth/index.js b/projects/metronome-synth/index.js index 52915b8153..9eab11276f 100644 --- a/projects/metronome-synth/index.js +++ b/projects/metronome-synth/index.js @@ -14,7 +14,7 @@ module.exports = { ADDRESSES.ethereum.WBTC, "0xa8b607Aa09B6A2E306F93e74c282Fb13f6A80452", "0xc14900dFB1Aa54e7674e1eCf9ce02b3b35157ba5", - "0xac3E018457B222d93114458476f3E3416Abbe38F", + ADDRESSES.ethereum.SFRETH, "0x4Dbe3f01aBe271D3E65432c74851625a8c30Aa7B", "0x650CD45DEdb19c33160Acc522aD1a82D9701036a", "0xDD9F61a85fFE73E41eF889817972f0B0AaE6D6Dd" diff --git a/projects/mimo/index.js b/projects/mimo/index.js index 6f772e0c68..20213b249a 100755 --- a/projects/mimo/index.js +++ b/projects/mimo/index.js @@ -12,7 +12,7 @@ const config = { polygon: { vaultCore: ['0x03175c19cb1d30fa6060331a9ec181e04cac6ab0'], collaterals: [ - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', //wMATIC + ADDRESSES.polygon.WMATIC_2, //wMATIC ADDRESSES.polygon.WETH_1, //wETH ADDRESSES.polygon.WBTC, //wBTC ADDRESSES.polygon.USDC, //USDC diff --git a/projects/monox/index.js b/projects/monox/index.js index 7a949855bc..c67ebfd3fb 100644 --- a/projects/monox/index.js +++ b/projects/monox/index.js @@ -23,7 +23,7 @@ async function polygon(timestamp, ethBlock, chainBlocks){ ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC, ADDRESSES.polygon.WETH_1, - "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + ADDRESSES.polygon.WMATIC_2, ], ["0x3826367A5563eCE9C164eFf9701146d96cC70AD9"], block, "polygon") return balances } diff --git a/projects/multichainMiner.js b/projects/multichainMiner.js index a7e927b00a..2b58694579 100644 --- a/projects/multichainMiner.js +++ b/projects/multichainMiner.js @@ -6,7 +6,7 @@ const { getChainTransform, const minedTokens = { 'cake': '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', 'busd': ADDRESSES.bsc.BUSD, - 'matic': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', + 'matic': ADDRESSES.polygon.WMATIC_2, 'ftm': ADDRESSES.fantom.WFTM, 'avax': ADDRESSES.avax.WAVAX, 'usdc': ADDRESSES.polygon.USDC, // polygon diff --git a/projects/nord-finance/config.js b/projects/nord-finance/config.js index 69cb32924c..970fe08f0f 100644 --- a/projects/nord-finance/config.js +++ b/projects/nord-finance/config.js @@ -30,7 +30,7 @@ module.exports = { ['0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ['0xb33eaad8d922b1083446dc23f610c2567fb5180f', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ['0xd6df932a45c0f255f85145f286ea0b292b21c90b', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], - ['0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], + [ADDRESSES.polygon.WMATIC_2, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], [ADDRESSES.polygon.USDC, '0x014fD6Db604b55eF900704ed5c25F9Ef61e8B225'], ], staking: [ diff --git a/projects/opyn-gamma/gamma_polygon.js b/projects/opyn-gamma/gamma_polygon.js index 5d90744054..8ba14c5fce 100644 --- a/projects/opyn-gamma/gamma_polygon.js +++ b/projects/opyn-gamma/gamma_polygon.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const marginPool = "0x30ae5debc9edf60a23cd19494492b1ef37afa56d"; const WETH = ADDRESSES.polygon.WETH_1; -const collateralAssets = ['0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', +const collateralAssets = [ADDRESSES.polygon.WMATIC_2, ADDRESSES.polygon.USDC, ADDRESSES.polygon.WBTC, WETH, ] diff --git a/projects/perp88/index.js b/projects/perp88/index.js index 3e4413ec72..65821a5fd2 100644 --- a/projects/perp88/index.js +++ b/projects/perp88/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const tokens = { - "WMATIC": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + "WMATIC": ADDRESSES.polygon.WMATIC_2, "WETH": ADDRESSES.polygon.WETH_1, "WBTC": ADDRESSES.polygon.WBTC, "DAI": ADDRESSES.polygon.DAI, diff --git a/projects/pine-protocol/index.js b/projects/pine-protocol/index.js index 82cffda2fa..31658435ae 100644 --- a/projects/pine-protocol/index.js +++ b/projects/pine-protocol/index.js @@ -32,7 +32,7 @@ async function borrowed(_, _b, _cb, { api, }) { const config = { ethereum: { factory: '0x19c56cb20e6e9598fc4d22318436f34981e481f9', fromBlock: 16423090, wrapped: ADDRESSES.ethereum.WETH, }, - polygon: { factory: '0x85b609f4724860fead57e16175e66cf1f51bf72d', fromBlock: 40378130, wrapped: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', }, + polygon: { factory: '0x85b609f4724860fead57e16175e66cf1f51bf72d', fromBlock: 40378130, wrapped: ADDRESSES.polygon.WMATIC_2, }, } module.exports = { diff --git a/projects/pollyfinance/index.js b/projects/pollyfinance/index.js index f8332ff107..a3fb8befb4 100644 --- a/projects/pollyfinance/index.js +++ b/projects/pollyfinance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {sumTokens2} = require("../helper/unwrapLPs"); const polly = "0x4C392822D4bE8494B798cEA17B43d48B2308109C"; @@ -44,7 +45,7 @@ const nDefiUnderLying = [ "0xda537104d6a5edd53c6fbba9a898708e465260b6", "0x95c300e7740D2A88a44124B424bFC1cB2F9c3b89", "0xc81278a52AD0e1485B7C3cDF79079220Ddd68b7D", - "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + ADDRESSES.polygon.WMATIC_2, "0x3066818837c5e6ed6601bd5a91b0762877a6b731", "0xb33eaad8d922b1083446dc23f610c2567fb5180f", "0x3AE490db48d74B1bC626400135d4616377D0109f" diff --git a/projects/polyroll.js b/projects/polyroll.js index ef1040de6b..3a81dcc7f8 100644 --- a/projects/polyroll.js +++ b/projects/polyroll.js @@ -3,7 +3,7 @@ const { sumTokensAndLPsSharedOwners } = require('./helper/unwrapLPs'); const { transformPolygonAddress } = require('./helper/portedTokens'); const tokens = [ - ['0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', false], //WMATIC + [ADDRESSES.polygon.WMATIC_2, false], //WMATIC [ADDRESSES.polygon.WETH_1, false], //WETH [ADDRESSES.polygon.USDT, false], //USDT ['0x831753dd7087cac61ab5644b308642cc1c33dc13', false] //QUICK diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js index e48b424f25..a5e835dbe3 100644 --- a/projects/prime-protocol/index.js +++ b/projects/prime-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokens2, } = require('../helper/unwrapLPs') @@ -13,7 +14,7 @@ const MASTER_VIEW_CONTRACT = { const MOONBEAM_MARKETS = { GLMR_v146: { pTokenMarketAddress: '0x53d5a47bb874eE688acb479676aD133d47CB9B25', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + pTokenUnderlyingAddress: ADDRESSES.null, }, whUSDC_v146: { pTokenMarketAddress: '0x5f8d500ec32dB09aa3115a852f30e9C756867d5A', @@ -21,7 +22,7 @@ const MOONBEAM_MARKETS = { }, xcUSDT_v146: { pTokenMarketAddress: '0x1D5CC7840a05BA39Db0AAd21e14dF1ff09b599ED', - pTokenUnderlyingAddress: '0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d', + pTokenUnderlyingAddress: ADDRESSES.moonbeam.xcUSDT, }, xcDOT_v146: { pTokenMarketAddress: '0x8f7F208F38A4362e6Fe6112b720630f93bb608aA', @@ -29,7 +30,7 @@ const MOONBEAM_MARKETS = { }, GLMR_v160: { pTokenMarketAddress: '0xdC427cDB81E1532747BEDeB8077a4AEcDbfB585e', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + pTokenUnderlyingAddress: ADDRESSES.null, }, whUSDC_v160: { pTokenMarketAddress: '0x227EEB717a3Ec78025bE51c87b3A7160192613D2', @@ -37,7 +38,7 @@ const MOONBEAM_MARKETS = { }, xcUSDT_v160: { pTokenMarketAddress: '0x8ef25FAC30DeD9A210151C1d27e58F71f2142e2f', - pTokenUnderlyingAddress: '0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d', + pTokenUnderlyingAddress: ADDRESSES.moonbeam.xcUSDT, }, xcDOT_v160: { pTokenMarketAddress: '0x525c6B3D27B6b1Fc28bca7dc04964247c1a942B1', @@ -48,73 +49,73 @@ const MOONBEAM_MARKETS = { const AVALANCHE_MARKETS = { ETH_v146: { pTokenMarketAddress: '0x94ebF80b33120a1AbE370E56192db39f4944b6ca', - pTokenUnderlyingAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + pTokenUnderlyingAddress: ADDRESSES.avax.WETH_e, }, USDC_v146: { pTokenMarketAddress: '0x6Cce9601CA44a9049A761C22b70D5849662c2C0a', - pTokenUnderlyingAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + pTokenUnderlyingAddress: ADDRESSES.avax.USDC, }, USDT_v146: { pTokenMarketAddress: '0xe06F55FB6c6C62b74AAD7eb77f00b06920FB176e', - pTokenUnderlyingAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', + pTokenUnderlyingAddress: ADDRESSES.avax.USDt, }, ETH_v160: { pTokenMarketAddress: '0x4Ebba16380fEb2083938c008aEDD4b5EBeA80f72', - pTokenUnderlyingAddress: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', + pTokenUnderlyingAddress: ADDRESSES.avax.WETH_e, }, USDC_v160: { pTokenMarketAddress: '0x73c5c93E78cB8CA4939307e0D95e032631fB9eEe', - pTokenUnderlyingAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + pTokenUnderlyingAddress: ADDRESSES.avax.USDC, }, USDT_v160: { pTokenMarketAddress: '0x1BF6752282039ee82C06DE64D094C9E35578A1a0', - pTokenUnderlyingAddress: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', + pTokenUnderlyingAddress: ADDRESSES.avax.USDt, }, }; const ARBITRUM_MARKETS = { ETH_v146: { pTokenMarketAddress: '0x2E9F73aA3F16748C9c1E8243D204d60F87dEC872', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + pTokenUnderlyingAddress: ADDRESSES.null, }, USDC_v146: { pTokenMarketAddress: '0x1b0509D8CC044805F54D132ccDa7b4A4ED88261A', - pTokenUnderlyingAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + pTokenUnderlyingAddress: ADDRESSES.arbitrum.USDC, }, ETH_v160: { pTokenMarketAddress: '0xc01683398fFCc86264ba17bC36977f51A1d25e06', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + pTokenUnderlyingAddress: ADDRESSES.null, }, USDC_v160: { pTokenMarketAddress: '0xddC6Df52F9749ED80966Fb6a9D4C87264cC1e6C1', - pTokenUnderlyingAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + pTokenUnderlyingAddress: ADDRESSES.arbitrum.USDC, }, }; const ETHEREUM_MARKETS = { ETH_v146: { pTokenMarketAddress: '0xD15a15C0b6d79D9E59F4fcC0D17912219f6b470C', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + pTokenUnderlyingAddress: ADDRESSES.null, }, USDC_v146: { pTokenMarketAddress: '0x8F0Ba37DAC51a8102b1203C9D9ac26724DC684Ac', - pTokenUnderlyingAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + pTokenUnderlyingAddress: ADDRESSES.ethereum.USDC, }, USDT_v146: { pTokenMarketAddress: '0x373bb8bE40Ee6f704576CDC815372ff71d6825c5', - pTokenUnderlyingAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + pTokenUnderlyingAddress: ADDRESSES.ethereum.USDT, }, ETH_v160: { pTokenMarketAddress: '0xd833F882ca07F69C4C5a069675B6B65C235325C3', - pTokenUnderlyingAddress: '0x0000000000000000000000000000000000000000', + pTokenUnderlyingAddress: ADDRESSES.null, }, USDC_v160: { pTokenMarketAddress: '0x67CeC45eB8d9f059D4c974a4BdEA357b68Ad80Ef', - pTokenUnderlyingAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + pTokenUnderlyingAddress: ADDRESSES.ethereum.USDC, }, USDT_v160: { pTokenMarketAddress: '0xDC313B592949E8F4bB91A22c6DC9f7BE11b74Ea7', - pTokenUnderlyingAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7', + pTokenUnderlyingAddress: ADDRESSES.ethereum.USDT, }, }; diff --git a/projects/relayChain/index.js b/projects/relayChain/index.js index 86e4644e8f..9ad5a62559 100644 --- a/projects/relayChain/index.js +++ b/projects/relayChain/index.js @@ -41,7 +41,7 @@ const husdHeco = "0x0298c2b32eaE4da002a15f36fdf7615BEa3DA047"; const miMatic = "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1"; -const wmatic = "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"; +const wmatic = ADDRESSES.polygon.WMATIC_2; const wethMatic = ADDRESSES.polygon.WETH_1; const wbtcMatic = ADDRESSES.polygon.WBTC; const usdcMatic = ADDRESSES.polygon.USDC; diff --git a/projects/safedollar/index.js b/projects/safedollar/index.js index 22069ad8de..35820df099 100644 --- a/projects/safedollar/index.js +++ b/projects/safedollar/index.js @@ -13,7 +13,7 @@ const Contracts = { address: ADDRESSES.polygon.USDC },{ collateralAddress: "0xbd75b2a992ea83abed729e60022c9fe8fe539e54", - address: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" + address: ADDRESSES.polygon.WMATIC_2 }], boardRoom: "0x46C6a9b8E3243FB0dfB069119D5Fc6a75EEc8604", diff --git a/projects/sandclock/index.js b/projects/sandclock/index.js index c319911dd7..d1e20d7210 100644 --- a/projects/sandclock/index.js +++ b/projects/sandclock/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokens2 } = require('../helper/unwrapLPs') -const LUSD = '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'; +const LUSD = ADDRESSES.ethereum.LUSD; const WETH = ADDRESSES.ethereum.WETH; const USDC = ADDRESSES.ethereum.USDC; const YEARN_VAULT = '0x4fe4bf4166744bcbc13c19d959722ed4540d3f6a'; diff --git a/projects/sapphiremine.js b/projects/sapphiremine.js index e6d343a957..b83739ccb7 100644 --- a/projects/sapphiremine.js +++ b/projects/sapphiremine.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('helper/coreAssets.json') const sdk = require("@defillama/sdk"); const target = '0x7146854856E3f373675105556c7D964B329606be'; -const WMATIC = '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270'; +const WMATIC = ADDRESSES.polygon.WMATIC_2; async function tvl(timestamp, block, chainBlocks) { return { [ `polygon:${WMATIC}` ]: diff --git a/projects/single/helpers.js b/projects/single/helpers.js index 1a4e8c6f2c..964e69e226 100644 --- a/projects/single/helpers.js +++ b/projects/single/helpers.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const bn = require('bignumber.js'); const abi = require('../helper/abis/masterchef.json'); @@ -81,7 +82,7 @@ async function getUserCamelotMasterBalances({ balances = {}, masterChefAddress, const nitroPoolAddresses = (await sdk.api.abi.multiCall({ block, calls: nitroPoolAddressesCalls, abi: wCamelotSpNFTAbi.stakedNitroPool, chain, })).output .map(a => a.output) const nitroPoolUserLpBalanceCalls = nitroPoolAddresses - .filter((v) => v !== '0x0000000000000000000000000000000000000000') + .filter((v) => v !== ADDRESSES.null) .map((v, i) => ({ target: v, params: wCamelotSpNFT })); const nitroPoolUserLpBalance = (await sdk.api.abi.multiCall({ block, calls: nitroPoolUserLpBalanceCalls, abi: camelotNitroPoolAbi.userInfo, chain, })).output .map((v, i) => { diff --git a/projects/solace-finance/config.js b/projects/solace-finance/config.js index e37a4cad95..8892996414 100644 --- a/projects/solace-finance/config.js +++ b/projects/solace-finance/config.js @@ -36,7 +36,7 @@ module.exports = { solace: '0x501acE9c35E60f03A2af4d484f49F9B1EFde9f40', tokens: [ { - PoolToken: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + PoolToken: ADDRESSES.polygon.WMATIC_2, TokenTicker: "WMATIC", }, { diff --git a/projects/stakewise/index.js b/projects/stakewise/index.js index bdf505188a..280a693dac 100644 --- a/projects/stakewise/index.js +++ b/projects/stakewise/index.js @@ -33,7 +33,7 @@ async function xdaiTvl(timestamp, ethBlock, { xdai: block }) { }) return { - "0x6810e776880c02933d47db1b9fc05908e5386b96": supply.output + [ADDRESSES.ethereum.GNO]: supply.output } } diff --git a/projects/sun/index.js b/projects/sun/index.js index 11c7987933..916ed60c3b 100644 --- a/projects/sun/index.js +++ b/projects/sun/index.js @@ -72,7 +72,7 @@ const ownerTokens = pools.map(({ pool, stablecoins }) => { }) const stakingContract = "TXbA1feyCqWAfAQgXvN1ChTg82HpBT8QPb" -const sun = "TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S" +const sun = ADDRESSES.tron.SUN const lpToken = 'TDQaYrhQynYV9aXTYj63nwLAafRffWSEj6' const oldLpStaking = "TGsymdggp98tLKZWGHcGX58TjTcaQr9s4x" diff --git a/projects/swivel/index.js b/projects/swivel/index.js index b925e62ef3..f5729272dc 100644 --- a/projects/swivel/index.js +++ b/projects/swivel/index.js @@ -21,7 +21,7 @@ module.exports = { ADDRESSES.ethereum.STETH, // Lido stETH ADDRESSES.ethereum.WSTETH, // Lido wstETH "0x5E8422345238F34275888049021821E8E08CAa1f", // frxETH - "0xac3E018457B222d93114458476f3E3416Abbe38F" // sfrxETH + ADDRESSES.ethereum.SFRETH // sfrxETH ] }) } diff --git a/projects/synapse/config.js b/projects/synapse/config.js index 5c1d1a4ffa..f568024c5a 100644 --- a/projects/synapse/config.js +++ b/projects/synapse/config.js @@ -140,7 +140,7 @@ module.exports = { address: '0x8f5bbb2bb8c2ee94639e55d5f41de9b4839c1280', tokens: [ '0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195', // gOHM - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // wMATIC + ADDRESSES.polygon.WMATIC_2, // wMATIC ] }, pools: [ diff --git a/projects/teddy/index.js b/projects/teddy/index.js index 5ee6503f97..3f93e997c0 100644 --- a/projects/teddy/index.js +++ b/projects/teddy/index.js @@ -13,7 +13,7 @@ const stakingPool2Contract = "0x9717Ff7406Be065EA177bA9ab1bE704060Af8370"; const WAVAX_TSD_PGL = "0x67E395B6ACd948931eeE8F52C7c1Fe537E7f1a7a"; const NATIVE_ADDRESS = ADDRESSES.avax.WAVAX; -//const LUSD_TOKEN_ADDRESS = "0x5f98805a4e8be255a32880fdec7f6728c6568ba0"; +//const LUSD_TOKEN_ADDRESS = ADDRESSES.ethereum.LUSD; const TROVE_MANAGER_ADDRESS = "0xd22b04395705144Fd12AfFD854248427A2776194"; diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js index 065d97c40d..e5104acef5 100644 --- a/projects/thetanuts/index.js +++ b/projects/thetanuts/index.js @@ -96,7 +96,7 @@ const wbnb = ADDRESSES.bsc.WBNB const woo = '0x4691937a7508860F876c9c0a2a617E7d9E945D4B' // Polygon Assets -const wmatic = '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270' +const wmatic = ADDRESSES.polygon.WMATIC_2 const pousdc = ADDRESSES.polygon.USDC const ust_matic_wormhole = '0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59' diff --git a/projects/tigris/index.js b/projects/tigris/index.js index e11bf12e1d..3a3764af3c 100644 --- a/projects/tigris/index.js +++ b/projects/tigris/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { sumTokens2 } = require("../helper/unwrapLPs"); @@ -7,7 +8,7 @@ const TigrisAddresses = { xTIG: "0x19694Cf64572e6adf643Ae7B13d5b2921215B4E5", // tigUSD and USDT are 1:1 exchangeable via stable vault tigUSD: "0x7E491F53bF807f836E2dd6C4A4FBd193e1913EFd", - USDT: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + USDT: ADDRESSES.arbitrum.USDT, TigStaking: "0x6E8BFBb31A46D0F5502426050Ea28b19F8E761f4", TokenSale: "0x45F52502aF87e7e4E446BA15BDf223A19b47DA98", StableVault: "0xe82fcefbDD034500B5862B4827CAE5c117f6b921", @@ -20,7 +21,7 @@ const TigrisAddresses = { TigStaking: "0xC6c32eD781450228dFadfa49A430d7868B110F44", // tigUSD and DAI are 1:1 exchangeable via stable vault tigUSD: "0x76973Ba2AFF24F87fFE41FDBfD15308dEBB8f7E8", - DAI: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + DAI: ADDRESSES.polygon.DAI, StableVault: "0x3677415Dc23e49B7780ef46976F418F4a9d5031B", Treasury: "0x4f7046f36B5D5282A94cB448eAdB3cdf9Ff2b051", Lock: "0x638e39D4a927EfE3040F0f6D4d27e4CccD8c996A", diff --git a/projects/tokemak/index.js b/projects/tokemak/index.js index b65892842e..27abde6218 100644 --- a/projects/tokemak/index.js +++ b/projects/tokemak/index.js @@ -45,7 +45,7 @@ const dai = ADDRESSES.ethereum.DAI; const feiPool = "0x03DccCd17CC36eE61f9004BCfD7a85F58B2D360D"; const fei = "0x956F47F50A910163D8BF957Cf5846D573E7f87CA"; const lusdPool = "0x9eEe9eE0CBD35014e12E1283d9388a40f69797A3"; -const lusd = "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0"; +const lusd = ADDRESSES.ethereum.LUSD; const wormUstPool = "0x482258099De8De2d0bda84215864800EA7e6B03D"; const wormtust = "0xa693b19d2931d498c5b318df961919bb4aee87a5"; const foxPool = "0x808D3E6b23516967ceAE4f17a5F9038383ED5311"; diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js index 1bb6fe0ab2..36884d3c3d 100644 --- a/projects/treasury/aave.js +++ b/projects/treasury/aave.js @@ -81,7 +81,7 @@ module.exports = treasuryExports({ '0xd4937682df3C8aEF4FE912A96A74121C0829E664', // aFRAX ADDRESSES.ethereum.sUSD, '0x6C5024Cd4F8A59110119C56f8933403A539555EB', // aSUSD - '0x5f98805a4e8be255a32880fdec7f6728c6568ba0', // LUSD + ADDRESSES.ethereum.LUSD, // LUSD '0xce1871f791548600cb59efbefFC9c38719142079', // aLUSD '0x056fd409e1d7a124bd7017459dfea2f387b6d5cd', // GUSD '0xD37EE7e4f452C6638c96536e68090De8cBcdb583', // aGUSD @@ -149,7 +149,7 @@ module.exports = treasuryExports({ ADDRESSES.polygon.WETH_1, '0x28424507fefb6f7f8E9D3860F56504E4e5f5f390', // amWETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aPolWETH - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC + ADDRESSES.polygon.WMATIC_2, // WMATIC '0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4', // amWMATIC '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aPolWMATIC '0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3', // BAL @@ -174,7 +174,7 @@ module.exports = treasuryExports({ '0x38d693cE1dF5AaDF7bC62595A37D667aD57922e5', // aPolEURS '0xa3fa99a148fa48d14ed51d610c367c61876997f1', // MAI '0xeBe517846d0F36eCEd99C735cbF6131e1fEB775D', // aPolMAI - '0xfa68fb4628dff1028cfec22b4162fccd0d45efb6', // MATICX + ADDRESSES.polygon.MATICX, // MATICX '0x80cA0d8C38d2e2BcbaB66aA1648Bd1C7160500FE', // aPolMATICX '0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4', // stMATIC '0xEA1132120ddcDDA2F119e99Fa7A27a0d036F7Ac9', // aPolSTMATIC diff --git a/projects/treasury/alchemix.js b/projects/treasury/alchemix.js index 0332ea3d9b..f8bfe2ca18 100644 --- a/projects/treasury/alchemix.js +++ b/projects/treasury/alchemix.js @@ -23,7 +23,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.WETH,//WETH ADDRESSES.ethereum.USDT,//USDT "0xf16aEe6a71aF1A9Bc8F56975A4c2705ca7A782Bc", //20WETH-80ALC - "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + ADDRESSES.ethereum.LUSD, ADDRESSES.ethereum.CRV, ADDRESSES.ethereum.YFI, "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", diff --git a/projects/treasury/badger-dao.js b/projects/treasury/badger-dao.js index 24be6a83ec..c1a00ee5dd 100644 --- a/projects/treasury/badger-dao.js +++ b/projects/treasury/badger-dao.js @@ -36,7 +36,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.DAI,//DAI ADDRESSES.ethereum.USDC,//USDC ADDRESSES.ethereum.USDT,//USDT - "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0",//LUSD + ADDRESSES.ethereum.LUSD,//LUSD "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656",//aWBTC ADDRESSES.ethereum.WETH,//WETH ADDRESSES.ethereum.RETH,//rETH diff --git a/projects/treasury/dxdao.js b/projects/treasury/dxdao.js index 29c4962a91..6466ec469c 100644 --- a/projects/treasury/dxdao.js +++ b/projects/treasury/dxdao.js @@ -12,7 +12,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.DAI,//dai '0xFe2e637202056d30016725477c5da089Ab0A043A',//seth2 ADDRESSES.ethereum.USDC,//usdc - '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//lusd + ADDRESSES.ethereum.LUSD,//lusd ADDRESSES.ethereum.STETH,//steth '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',//ens ADDRESSES.ethereum.RETH,//reth diff --git a/projects/treasury/equilibre.js b/projects/treasury/equilibre.js index 86e6c21662..0cf0ff2f1a 100644 --- a/projects/treasury/equilibre.js +++ b/projects/treasury/equilibre.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const VARA = '0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73' @@ -24,22 +25,22 @@ const equilibre = [ const tokens = [ nullAddress, //"0xE1da44C0dA55B075aE8E2e4b6986AdC76Ac77d73", // VARA - "0xfA9343C3897324496A05fC75abeD6bAC29f8A40f", // USDC - "0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b", // WKAVA - "0x765277EebeCA2e31912C9946eAe1021199B39C61", // DAI - "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", // ETH - "0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b", // WBTC + ADDRESSES.telos.ETH, // USDC + ADDRESSES.kava.WKAVA, // WKAVA + ADDRESSES.shiden.ETH, // DAI + ADDRESSES.moonriver.USDC, // ETH + ADDRESSES.telos.USDC, // WBTC "0xC19281F22A075E0F10351cd5D6Ea9f0AC63d4327", // BIFI "0x6c2c113c8cA73dB67224EF4D8C8dFCeC61e52a9C", // LQDR "0xb84Df10966a5D7e1ab46D9276F55d57bD336AFC7", // MAI - "0xDb0E1e86B01c4ad25241b1843E407Efc4D615248", // USX + ADDRESSES.kava.USX, // USX "0x739ca6D71365a08f584c8FC4e1029045Fa8ABC4B", // ACS "0xd86C8d4279CCaFbec840c782BcC50D201f277419", // MARE "0x165DBb08de0476271714952C3C1F068693bd60D7", // TAROT "0x74ccbe53f77b08632ce0cb91d3a545bf6b8e0979", // fBOMB "0x9d9682577CA889c882412056669bd936894663fd", // swKAVA "0xABd380327Fe66724FFDa91A87c772FB8D00bE488", // BNB - "0xEB466342C4d449BC9f53A865D5Cb90586f405215", // axlUSDC + ADDRESSES.kava.axlUSDC, // axlUSDC "0xE1E9dB9b4d51A8878f030094F7965edC5eEC7802", // xSHRAP "0x7ae97042a4a0eb4d1eb370c34bfec71042a056b7", // SLM "0x06beE9E7238a331B68D83Df3B5B9B16d5DBa83ff", // axlATOM @@ -56,7 +57,7 @@ const tokens = [ "0x38481Fdc1aF61E6E72E0Ff46F069315A59779C65", // BEAR "0x13db70Ad2f2b7064EbD5B0CAA13Af445a77360f7", // KONK "0xFa4384b298084A0ef13F378853DEDbB33A857B31", // cpVARA - "0xB44a9B6905aF7c801311e8F4E76932ee959c663C", // USDT + ADDRESSES.moonriver.USDT, // USDT "0xde5ed76e7c05ec5e4572cfc88d1acea165109e44", // DEUS "0xD22a58f79e9481D1a88e00c343885A588b34b68B", // DEXI "0xde1e704dae0b4051e80dabb26ab6ad6c12262da0", // DEI diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index 6c711c2384..ff00668646 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -7,7 +7,7 @@ const treasury = "0x4971DD016127F390a3EF6b956Ff944d0E2e1e462"; const treasury1 = "0x0DA0C3e52C977Ed3cBc641fF02DD271c3ED55aFe"; const treasury2 = "0x849D52316331967b6fF1198e5E32A0eB168D039d"; const treasury3 = "0xBc79855178842FDBA0c353494895DEEf509E26bB"; -const GNO = "0x6810e776880C02933D47DB1b9fc05908e5386b96"; +const GNO = ADDRESSES.ethereum.GNO; async function tvl(_, _b, _cb, { api, }) { const treasury = '0x849d52316331967b6ff1198e5e32a0eb168d039d' @@ -41,7 +41,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.ethereum.USDC, - '0x6b175474e89094c44da98b954eedeac495271d0f',//DAI + ADDRESSES.ethereum.DAI,//DAI '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',//cDAI '0x39AA39c021dfbaE8faC545936693aC917d5E7563',//cUSDC '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//GRT diff --git a/projects/treasury/idle-dao.js b/projects/treasury/idle-dao.js index def0abe2d9..8c059d3c66 100644 --- a/projects/treasury/idle-dao.js +++ b/projects/treasury/idle-dao.js @@ -44,7 +44,7 @@ module.exports = treasuryExports({ nullAddress, "0xf28164A485B0B2C90639E47b0f377b4a438a16B1",//dquick ADDRESSES.polygon.DAI, - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic + ADDRESSES.polygon.WMATIC_2,//wmatic ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.USDC, "0x580A84C73811E1839F75d86d75d88cCa0c241fF4",//QI diff --git a/projects/treasury/index-coop.js b/projects/treasury/index-coop.js index add2c0924a..509a961260 100644 --- a/projects/treasury/index-coop.js +++ b/projects/treasury/index-coop.js @@ -20,7 +20,7 @@ module.exports = treasuryExports({ '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd', '0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD', '0x39AA39c021dfbaE8faC545936693aC917d5E7563', - '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', + ADDRESSES.ethereum.LUSD, ADDRESSES.ethereum.USDT, '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ], diff --git a/projects/treasury/india-covid-relief-fund.js b/projects/treasury/india-covid-relief-fund.js index b58138f414..f75c213016 100644 --- a/projects/treasury/india-covid-relief-fund.js +++ b/projects/treasury/india-covid-relief-fund.js @@ -15,7 +15,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.USDT,//usdt ADDRESSES.ethereum.MATIC,//matic ADDRESSES.ethereum.MKR,//mkr - '0x6810e776880C02933D47DB1b9fc05908e5386b96',//gno + ADDRESSES.ethereum.GNO,//gno ADDRESSES.ethereum.DAI,//dai ], owners: [Treasury], diff --git a/projects/treasury/iq.js b/projects/treasury/iq.js index b619f76fdb..227813ec67 100644 --- a/projects/treasury/iq.js +++ b/projects/treasury/iq.js @@ -8,7 +8,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0xac3E018457B222d93114458476f3E3416Abbe38F", + ADDRESSES.ethereum.SFRETH, "0x853d955aCEf822Db058eb8505911ED77F175b99e", "0x9D45081706102E7aadDD0973268457527722E274", ADDRESSES.ethereum.WETH, diff --git a/projects/treasury/jade-protocol.js b/projects/treasury/jade-protocol.js index 2059b5be2f..02568fe90e 100644 --- a/projects/treasury/jade-protocol.js +++ b/projects/treasury/jade-protocol.js @@ -18,7 +18,7 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.ethereum.USDC,//USDC ADDRESSES.ethereum.WBTC, // wbtc - '0xac3E018457B222d93114458476f3E3416Abbe38F', // sfrxETH + ADDRESSES.ethereum.SFRETH, // sfrxETH '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0', // FXS ], owners: [treasury, treasury1], diff --git a/projects/treasury/liquity-treasury.js b/projects/treasury/liquity-treasury.js index 3aac71c87f..65531105d9 100644 --- a/projects/treasury/liquity-treasury.js +++ b/projects/treasury/liquity-treasury.js @@ -19,7 +19,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.ethereum.DAI,//DAI - '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//LUSD + ADDRESSES.ethereum.LUSD,//LUSD ADDRESSES.ethereum.USDC,//usdc '0xc944E90C64B2c07662A292be6244BDf05Cda44a7',//grt '0x41545f8b9472D758bB669ed8EaEEEcD7a9C4Ec29',//fort diff --git a/projects/treasury/perion.js b/projects/treasury/perion.js index fcdda6ac48..0096978069 100644 --- a/projects/treasury/perion.js +++ b/projects/treasury/perion.js @@ -15,7 +15,7 @@ module.exports = treasuryExports({ '0x549020a9Cb845220D66d3E9c6D9F9eF61C981102', // SIDIUS '0x34Be5b8C30eE4fDe069DC878989686aBE9884470', //SENATE ADDRESSES.ethereum.USDT, //USDT - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', //stETH + ADDRESSES.ethereum.STETH, //stETH ], owners: treasuryContractsETH, ownTokens: [PERC], diff --git a/projects/treasury/piedao.js b/projects/treasury/piedao.js index ceb910b8b9..89e21dd703 100644 --- a/projects/treasury/piedao.js +++ b/projects/treasury/piedao.js @@ -25,7 +25,7 @@ module.exports = treasuryExports({ '0xa693B19d2931d498c5B318dF961919BB4aee87a5',//UST '0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3',//JPEG '0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2',//MTA - '0x6810e776880C02933D47DB1b9fc05908e5386b96',//GNO + ADDRESSES.ethereum.GNO,//GNO '0x01BA67AAC7f75f647D94220Cc98FB30FCc5105Bf',//LYRA '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919',//RAI '0x3472A5A71965499acd81997a54BBA8D852C6E53d',//BADGER diff --git a/projects/treasury/pleasrdao.js b/projects/treasury/pleasrdao.js index 189f40e872..7278d0f805 100644 --- a/projects/treasury/pleasrdao.js +++ b/projects/treasury/pleasrdao.js @@ -14,11 +14,11 @@ module.exports = treasuryExports({ '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF '0xBf9e72eEb5adB8B558334c8672950B7a379D4266',//CUBT "0xBAac2B4491727D78D2b78815144570b9f2Fe8899", - "0xdAC17F958D2ee523a2206206994597C13D831ec7", + ADDRESSES.ethereum.USDT, "0xc96F20099d96b37D7Ede66fF9E4DE59b9B1065b1", "0x4CD0c43B0D53bc318cc5342b77EB6f124E47f526", "0x1A4b46696b2bB4794Eb3D4c26f1c55F9170fa4C5", - "0x6B175474E89094C44Da98b954EedeAC495271d0F" + ADDRESSES.ethereum.DAI ], owners: [pleasrDaoTreasury, treasury, lp], resolveLP: true, diff --git a/projects/treasury/railgun.js b/projects/treasury/railgun.js index e4273e2089..e3bb995e49 100644 --- a/projects/treasury/railgun.js +++ b/projects/treasury/railgun.js @@ -29,7 +29,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.cvxCRV, "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0",//wbtc "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3",//mim - "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0",//lusd + ADDRESSES.ethereum.LUSD,//lusd "0x090185f2135308BaD17527004364eBcC2D37e5F6",//spell ADDRESSES.ethereum.BUSD, "0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0",//albt @@ -96,7 +96,7 @@ module.exports = treasuryExports({ "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",//avax "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39",//link "0xfe712251173A2cd5F5bE2B46Bb528328EA3565E1",//mvi - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic + ADDRESSES.polygon.WMATIC_2,//wmatic "0x752d59604d72b6DC44196f4A39A3f07779417407",//methmoon "0x8f006D1e1D9dC6C98996F50a4c810F17a47fBF19",//nsfw ADDRESSES.fantom.renBTC, diff --git a/projects/treasury/redacted.js b/projects/treasury/redacted.js index 709976e9b1..1e37dbb158 100644 --- a/projects/treasury/redacted.js +++ b/projects/treasury/redacted.js @@ -21,7 +21,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.DAI, "0xaCe78D9BaB82b6B4783120Dba82aa10B040A14D9", "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC", - "0xd533a949740bb3306d119cc777fa900ba034cd52", + ADDRESSES.ethereum.CRV, ], ownTokens: [BTRF], owners: [treasury, treasury2,treasury3,treasury4], diff --git a/projects/treasury/shapeshift.js b/projects/treasury/shapeshift.js index b5f5c0b3f1..2ae2fc6b4e 100644 --- a/projects/treasury/shapeshift.js +++ b/projects/treasury/shapeshift.js @@ -14,7 +14,7 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.ethereum.USDC,//USDC ADDRESSES.ethereum.DAI,//DAI - '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//LUSD + ADDRESSES.ethereum.LUSD,//LUSD ADDRESSES.ethereum.WETH,//WETH ADDRESSES.ethereum.USDT,//USDT '0x6f80310CA7F2C654691D1383149Fa1A57d8AB1f8',//SILO diff --git a/projects/treasury/silo-finance.js b/projects/treasury/silo-finance.js index bb7e4a8b55..61f3cabaa3 100644 --- a/projects/treasury/silo-finance.js +++ b/projects/treasury/silo-finance.js @@ -14,7 +14,7 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.ethereum.USDC,//USDC ADDRESSES.ethereum.DAI,//DAI - '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0',//LUSD + ADDRESSES.ethereum.LUSD,//LUSD ADDRESSES.ethereum.WETH,//WETH ADDRESSES.ethereum.USDT,//USDT ADDRESSES.ethereum.TOKE,//TOKE diff --git a/projects/treasury/sphere-finance.js b/projects/treasury/sphere-finance.js index 2512f54878..90f11a4e5f 100644 --- a/projects/treasury/sphere-finance.js +++ b/projects/treasury/sphere-finance.js @@ -14,9 +14,9 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - "0x0000000000000000000000000000000000001010", + ADDRESSES.polygon.WMATIC_1, "0x236eeC6359fb44CCe8f97E99387aa7F8cd5cdE1f", - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.WMATIC, ADDRESSES.polygon.USDC @@ -29,7 +29,7 @@ module.exports = treasuryExports({ nullAddress, "0xe80772Eaf6e2E18B651F160Bc9158b2A5caFCA65", "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827", - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + ADDRESSES.bsc.BUSD, "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11" ], owners: [treasuryBSC], diff --git a/projects/treasury/synapse.js b/projects/treasury/synapse.js index 5efc3a9670..e0be92c399 100644 --- a/projects/treasury/synapse.js +++ b/projects/treasury/synapse.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const arbtreasury = "0x1d9bfc24d9e7eeda4119ceca11eaf4c24e622e62"; @@ -20,7 +21,7 @@ const MainnetTreasury = "0x67F60b0891EBD842Ebe55E4CCcA1098d7Aac1A55" const mainnetSYN = "0x0f2D719407FdBeFF09D87557AbB7232601FD9F29" const mainnetsynethLP = "0x4A86C01d67965f8cB3d0AAA2c655705E64097C31" const MetisTreasury = "0xEAEC50eBe1c2A981ED8be02C36b0863Fae322975" -const metisSYN = "0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00" +const metisSYN = ADDRESSES.metis.SYN //const MoonbeamTreasury = "0xbb227Fcf45F9Dc5deF87208C534EAB1006d8Cc8d" //const MoonriverTreasury = "0x4bA30618fDcb184eC01a9B3CAe258CFc5786E70E" const OptimismTreasury = "0x2431CBdc0792F5485c4cb0a9bEf06C4f21541D52" @@ -32,11 +33,11 @@ module.exports = treasuryExports({ tokens: [ nullAddress, //"0x080F6AEd32Fc474DD5717105Dba5ea57268F46eb",//syn - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",//dai - "0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688",//nusd - "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",//tether - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",//usdc + ADDRESSES.arbitrum.WETH,//weth + ADDRESSES.optimism.DAI,//dai + ADDRESSES.arbitrum.nUSD,//nusd + ADDRESSES.arbitrum.USDT,//tether + ADDRESSES.arbitrum.USDC,//usdc ], owners: [arbtreasury, arbtreasury2], ownTokens: [arbSYN] @@ -45,10 +46,10 @@ module.exports = treasuryExports({ tokens: [ nullAddress, //"0x1f1E7c893855525b303f99bDF5c3c05Be09ca251",//syn - "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",//wavax - "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70",//dai - "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664",//usdc - "0xc7198437980c041c805A1EDcbA50c1Ce5db95118",//tether + ADDRESSES.avax.WAVAX,//wavax + ADDRESSES.avax.DAI,//dai + ADDRESSES.avax.USDC_e,//usdc + ADDRESSES.avax.USDT_e,//tether ], owners: [avaxTreasury], @@ -57,13 +58,13 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",//usdc - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56",//busd - "0x049d68029688eAbF473097a2fC38ef61633A3C7A",//fusdt - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c",//btcb + ADDRESSES.bsc.USDC,//usdc + ADDRESSES.bsc.BUSD,//busd + ADDRESSES.fantom.fUSDT,//fusdt + ADDRESSES.bsc.BTCB,//btcb "0x54261774905f3e6E9718f2ABb10ed6555cae308a",//anybtc "0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096",//nrv - "0x55d398326f99059fF775485246999027B3197955",//bsc-usd + ADDRESSES.bsc.USDT,//bsc-usd "0x23396cF899Ca06c4472205fC903bDB4de249D6fC",//ustc ], owners: [bscTreasury] @@ -73,8 +74,8 @@ module.exports = treasuryExports({ nullAddress, //"0xE55e19Fb4F2D85af758950957714292DAC1e25B2",//syn "0x74b23882a30290451A17c44f4F05243b6b58C76d",//eth - "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75",//usdc - "0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83",//wftm + ADDRESSES.fantom.USDC,//usdc + ADDRESSES.fantom.WFTM,//wftm ], owners: [FantomTreasury], ownTokens: [fantomSYN] @@ -89,22 +90,22 @@ module.exports = treasuryExports({ tokens: [ nullAddress, //"0x0f2D719407FdBeFF09D87557AbB7232601FD9F29",//syn - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",//usdc + ADDRESSES.ethereum.USDC,//usdc "0x0ab87046fBb341D058F17CBC4c1133F25a20a52f",//gohm "0x853d955aCEf822Db058eb8505911ED77F175b99e",//frax - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",//weth - "0x6B175474E89094C44Da98b954EedeAC495271d0F",//dai - "0xdAC17F958D2ee523a2206206994597C13D831ec7",//tether + ADDRESSES.ethereum.WETH,//weth + ADDRESSES.ethereum.DAI,//dai + ADDRESSES.ethereum.USDT,//tether "0x98585dFc8d9e7D48F0b1aE47ce33332CF4237D96",//newo "0x71Ab77b7dbB4fa7e017BC15090b2163221420282",//high - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",//wbtc + ADDRESSES.ethereum.WBTC,//wbtc "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F",//sdt "0xBAac2B4491727D78D2b78815144570b9f2Fe8899",//dog "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B",//usdb "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8",//ageur "0x0642026E7f0B6cCaC5925b4E7Fa61384250e1701",//h2o "0xb753428af26E81097e7fD17f40c88aaA3E04902c",//sfi - "0x514910771AF9Ca656af840dff83E8264EcF986CA",//link + ADDRESSES.ethereum.LINK,//link ], owners: [MainnetTreasury], ownTokens: [mainnetSYN, mainnetsynethLP] @@ -112,9 +113,9 @@ module.exports = treasuryExports({ metis: { tokens: [ nullAddress, - //"0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00",//syn + //ADDRESSES.metis.SYN,//syn "0xFB21B70922B9f6e3C6274BcD6CB1aa8A0fe20B80",//gohm - "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21",//usdc + ADDRESSES.metis.m_USDC,//usdc ], owners: [MetisTreasury], ownTokens: [metisSYN] @@ -122,7 +123,7 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - "0x4200000000000000000000000000000000000042",//op + ADDRESSES.optimism.OP,//op "0x809DC529f07651bD43A172e8dB6f4a7a0d771036",//neth ], owners: [OptimismTreasury] @@ -130,10 +131,10 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",//usdc - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",//usdt - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",//wmatic - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063",//dai + ADDRESSES.polygon.USDC,//usdc + ADDRESSES.polygon.USDT,//usdt + ADDRESSES.polygon.WMATIC_2,//wmatic + ADDRESSES.polygon.DAI,//dai "0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195",//gohm //"0xf8F9efC0db77d8881500bb06FF5D6ABc3070E695",//syn ], diff --git a/projects/treasury/tranchess.js b/projects/treasury/tranchess.js index 27319621d4..cd1614fa5c 100644 --- a/projects/treasury/tranchess.js +++ b/projects/treasury/tranchess.js @@ -26,7 +26,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + ADDRESSES.bsc.ETH, ADDRESSES.bsc.USDC, ADDRESSES.bsc.BUSD, ADDRESSES.bsc.BTCB diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js index c12b0e3f5a..3ddeda97ea 100644 --- a/projects/treasury/wonderland.js +++ b/projects/treasury/wonderland.js @@ -111,7 +111,7 @@ async function uwuPositions(_, _b, _cb, { api, }) { { target: '0xaac1d67f1c17ec01593d76e831c51a4f458dc160', params: ethWallet }, ] }) - api.add('0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', LUSDBal) + api.add(ADDRESSES.ethereum.LUSD, LUSDBal) api.add('0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027', uwuLPLocked.total) api.add('0xb95bd0793bcc5524af358ffaae3e38c3903c7626', +uDAI - vdDAI) api.add('0x24959f75d7bda1884f1ec9861f644821ce233c7d', +uUSDT - vdUSDT) diff --git a/projects/vesync/index.js b/projects/vesync/index.js index 1ee7507cc4..27e269878a 100644 --- a/projects/vesync/index.js +++ b/projects/vesync/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens'); const GET_AMOUNT_OUT = "function getAmountOut(uint amountIn, address tokenIn, address tokenOut) external view returns (uint amount, bool stable)"; @@ -5,7 +6,7 @@ const GET_AMOUNT_OUT = "function getAmountOut(uint amountIn, address tokenIn, ad const VOTING_ESCROW = "0x1925AB9F9bcdB9E2D2861cc7C4c157645126D9d9"; const VS = "0x5756A28E2aAe01F600FC2C01358395F5C1f8ad3A"; const ROUTER = "0x6C31035D62541ceba2Ac587ea09891d1645D6D07"; -const USDC = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; +const USDC = ADDRESSES.era.USDC; module.exports = { misrepresentedTokens: true, diff --git a/projects/wasabix/index.js b/projects/wasabix/index.js index 6245ab66c2..0d8ec1e772 100644 --- a/projects/wasabix/index.js +++ b/projects/wasabix/index.js @@ -26,7 +26,7 @@ const tokens = { }, lusd: { token:'LUSD', - address:'0x5f98805a4e8be255a32880fdec7f6728c6568ba0', + address:ADDRESSES.ethereum.LUSD, decimals:18, correspondingMintableToken: 'waLUSD' }, diff --git a/projects/wonderland/index.js b/projects/wonderland/index.js index 34c6a5dffd..f988c0317c 100644 --- a/projects/wonderland/index.js +++ b/projects/wonderland/index.js @@ -55,7 +55,7 @@ async function ethTvl(timestamp, ethBlock, chainBlocks) { ["0x66761Fa41377003622aEE3c7675Fc7b5c1C2FaC5", false], // CPOOL ["0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", false], // ALCX ["0xdB25f211AB05b1c97D595516F45794528a807ad8", false], // EURS - ["0x6810e776880C02933D47DB1b9fc05908e5386b96", false], // GNO + [ADDRESSES.ethereum.GNO, false], // GNO ["0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68", false], // INV ["0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3", false], // JPEG ["0x0C10bF8FcB7Bf5412187A595ab97a3609160b5c6", false], // USDD diff --git a/projects/woofi.js b/projects/woofi.js index d6804ef6ea..70a871385a 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -25,7 +25,7 @@ const wooPPConfig = { ADDRESSES.avax.USDC, // USDC ], polygon: [ - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC + ADDRESSES.polygon.WMATIC_2, // WMATIC ADDRESSES.polygon.WETH_1, // WETH ADDRESSES.polygon.WBTC, // WBTC '0x1B815d120B3eF02039Ee11dC2d33DE7aA4a8C603', // WOO diff --git a/projects/xdollar-finance/index.js b/projects/xdollar-finance/index.js index e5aba723fb..ed756af0d4 100644 --- a/projects/xdollar-finance/index.js +++ b/projects/xdollar-finance/index.js @@ -129,7 +129,7 @@ module.exports = { staking: staking('0xc3fbc4056689cfab3f23809aa25004899ff4d75a','0x9eF758aC000a354479e538B8b2f01b917b8e89e7', 'arbitrum'), }, polygon: { - tvl: getLiquityTvl('0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',"0x68738A47d40C34d890168aB7B612A6f649f395e4", "polygon"), + tvl: getLiquityTvl(ADDRESSES.polygon.WMATIC_2,"0x68738A47d40C34d890168aB7B612A6f649f395e4", "polygon"), staking: staking('0x3509f19581afedeff07c53592bc0ca84e4855475','0x3dc7b06dd0b1f08ef9acbbd2564f8605b4868eea', 'polygon'), }, avax: { diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js index 2646ad4a38..82d35b1847 100644 --- a/projects/xy-finance/index.js +++ b/projects/xy-finance/index.js @@ -231,7 +231,7 @@ const yPoolDepositContract = { }, "USDC": { "contractAddress": "0x3243278E0F93cD6F88FC918E0714baF7169AFaB8", - "tokenAddress": "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D" + "tokenAddress": ADDRESSES.moonriver.USDC } }, "324": { @@ -241,7 +241,7 @@ const yPoolDepositContract = { }, "USDC": { "contractAddress": "0x75167284361c8D61Be7E4402f4953e2b112233cb", - "tokenAddress": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" + "tokenAddress": ADDRESSES.era.USDC } }, "1101": { @@ -251,7 +251,7 @@ const yPoolDepositContract = { }, "USDC": { "contractAddress": "0x1acCfC3a45313f8F862BE7fbe9aB25f20A93d598", - "tokenAddress": "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035" + "tokenAddress": ADDRESSES.polygon_zkevm.USDC } }, } diff --git a/projects/zklend/index.js b/projects/zklend/index.js index 12b7f8e354..2f62c986dc 100644 --- a/projects/zklend/index.js +++ b/projects/zklend/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { BigNumber } = require("bignumber.js"); const { multiCall, sumTokens } = require('../helper/chain/starknet') const { marketAbi } = require('./abi'); @@ -11,11 +12,11 @@ const valueToBigNumber = (amount) => { const market = '0x4c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05' const assets = [ - '0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac', - '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', - '0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8', - '0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3', - '0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8' + ADDRESSES.starknet.WBTC, + ADDRESSES.starknet.ETH, + ADDRESSES.starknet.USDC, + ADDRESSES.starknet.DAI, + ADDRESSES.starknet.USDT ] async function tvl(_, _1, _2, { api }) { diff --git a/projects/zomma/index.js b/projects/zomma/index.js index d558009b58..ee54fb7411 100644 --- a/projects/zomma/index.js +++ b/projects/zomma/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/sumTokens"); const ZOMMA_CONTRACT_old = "0x709051774c60c0527dbaf880f41425eae036efaf"; const ZOMMA_CONTRACT = "0x7bf1f1c2d8caa200b068747487cb9bf109e529f1"; -const USDC_CONTRACT = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"; +const USDC_CONTRACT = ADDRESSES.era.USDC; module.exports = { methodology: "TVL is calculated as the sum of USDC deposited by traders and the liquidity in the Pools.", From 7b1837336090cf3ae2a469151cce155217579b38 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:27:20 +0200 Subject: [PATCH 0886/1354] merge hmx and perp88 --- projects/curve/historical/index.js | 8 ++++---- projects/hmx/index.js | 17 ----------------- projects/perp88/index.js | 15 ++++++++++++--- 3 files changed, 16 insertions(+), 24 deletions(-) delete mode 100644 projects/hmx/index.js diff --git a/projects/curve/historical/index.js b/projects/curve/historical/index.js index 97d37a198c..9444150818 100644 --- a/projects/curve/historical/index.js +++ b/projects/curve/historical/index.js @@ -199,7 +199,7 @@ async function tvl(timestamp, block) { }) ) - var tvl = (price_feed.data.coins['coingecko:bitcoin'].price * btcTVL) + tvl + tvl = (price_feed.data.coins['coingecko:bitcoin'].price * btcTVL) + tvl return toUSDTBalances(tvl); } @@ -225,7 +225,7 @@ async function calc(item, i, price_feed, block) { if (item.type == 'compound') { - var multiplier = 1; + let multiplier = 1; if (coins === '0x39AA39c021dfbaE8faC545936693aC917d5E7563') { multiplier = price_feed.data.coins['coingecko:compound-usd-coin'].price; } @@ -236,9 +236,9 @@ async function calc(item, i, price_feed, block) { } if (item.type == 'yToken') { - var multiplier = 1; + let multiplier = 1; if (coins !== '0x8E870D67F660D95d5be530380D0eC0bd388289E1') { // PAX exception - var multiplier = await getVirtualPrice(abis.abis.yTokens, coins, block) + multiplier = await getVirtualPrice(abis.abis.yTokens, coins, block) multiplier = await new BigNumber(multiplier).div(10 ** 18).toFixed(4); } poolAmount = poolAmount * multiplier; diff --git a/projects/hmx/index.js b/projects/hmx/index.js deleted file mode 100644 index 4e806763a1..0000000000 --- a/projects/hmx/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') - -module.exports = { - arbitrum: { - tvl: sumTokensExport({ - owner: '0x56CC5A9c0788e674f17F7555dC8D3e2F1C0313C0', - tokens: [ - ADDRESSES.arbitrum.USDC, - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.USDT, - ADDRESSES.arbitrum.fsGLP, - ] - }) - } -} \ No newline at end of file diff --git a/projects/perp88/index.js b/projects/perp88/index.js index 65821a5fd2..9eacb8aabd 100644 --- a/projects/perp88/index.js +++ b/projects/perp88/index.js @@ -11,9 +11,6 @@ const tokens = { const POOL_DIAMOND_CONTRACT = '0xE7D96684A56e60ffBAAe0fC0683879da48daB383'; module.exports = { - timetravel: false, - misrepresentedTokens: false, - methodology: 'Count every tokens under PoolDiamond management.', start: 1668684025, polygon: { tvl: sumTokensExport({ @@ -21,5 +18,17 @@ module.exports = { tokens: Object.values(tokens), chain: 'polygon', }), + }, + arbitrum: { + tvl: sumTokensExport({ + owner: '0x56CC5A9c0788e674f17F7555dC8D3e2F1C0313C0', + tokens: [ + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.fsGLP, + ] + }) } } From 0cf4c2e6b6ea85f5f14a818786131f96ce536ddf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:44:35 +0200 Subject: [PATCH 0887/1354] Apollo DAO: add osmosis tvl (#6608) --- projects/apollodao/index.js | 98 +++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 4 deletions(-) diff --git a/projects/apollodao/index.js b/projects/apollodao/index.js index 49a7d2097a..c24702e1e7 100644 --- a/projects/apollodao/index.js +++ b/projects/apollodao/index.js @@ -1,13 +1,103 @@ // vaults are closed: https://articles.apollo.farm/apollo-dao-will-be-closing-vaults-on-terra-classic/ +const axios = require("axios"); +const { endPoints, queryContract } = require('../helper/chain/cosmos') +const { transformBalances } = require('../helper/portedTokens') + +const chain = 'osmosis' + +const contractAddresses = { + atom_statom: "osmo1a6tcf60pyz8qq2n532dzcs7s7sj8klcmra04tvaqympzcvxqg9esn7xz7l", + atom_osmo: "osmo1g3kmqpp8608szfp0pdag3r6z85npph7wmccat8lgl3mp407kv73qlj7qwp", + usdc_osmo: "osmo1jfmwayj8jqp9tfy4v4eks5c2jpnqdumn8x8xvfllng0wfes770qqp7jl4j", + st_osmo_osmo: "osmo1p4zqs5y2w5srzd2vesznzu5ql8wfq9tpz3e7mf2j3y07nxrtkdes5r5g0t", + wbtc_osmo: "osmo185gqewrlde8vrqw7j8lpad67v8jfrx9u7770k9q87tqqecctp5tq50wt2c", + strd_osmo: "osmo1e3qjfcg9adrauz6jg030ptfy35r6zzplsgaavnn6xrh6686udhfqq7muwy", + evmos_osmo: "osmo1rkv6vcmty4rpypuxp2a6a0y5ze4ztm3y6d6xwy5a7cye85f7reqsm85c5s", + juno_osmo: "osmo1ceku0zks6y43r9l35n7wnv5pf82s6l4k5jhlrhkurakeemey9n4snz3x6z", + weth_osmo: "osmo1r235f4tdkwrsnj3mdm9hf647l754y6g6xsmz0nas5r4vr5tda3qsgtftef", + ist_osmo: "osmo1qajgwrcce9srkq370pa9ew96dyk4hajyyk6rfpuexrktm8862xnst443kp", + ion_osmo: "osmo1869zena97sctemj78sgjmu737p2g94905hsf3hhkrfgummrfz4tsxj2k6r", + cro_osmo: "osmo1gmd2vc4crmv7urlfn3j5avhplfncjf5mg649dkgsu5a0zvd6cgrsn9dq4l", + axl_osmo: "osmo1m9e4cks405tvzlppkw64znr35vkvujvptrdqtgu5q6luk4ccw9qqeuenwd", + dai_osmo: "osmo1lhs6kyuxytu4suua0qf88z5057wzpxs77tyrlgztw2uctcy75hcqf2ajrt", + akt_osmo: "osmo122ryl7pez7yjprtvjckltu2uvjxrq3kqt4nvclax2la7maj6757qg054ga", +}; + +async function tvl() { + let amounts = {} + if (chain != "osmosis") return transformBalances(chain, amounts) + for (const contractName in contractAddresses) { + let contractAddress = contractAddresses[contractName]; + let vaultInfo = await queryContract({ + contract: contractAddress, + chain: 'osmosis', + data: { 'info': {} } + }); + const gammToken = vaultInfo.base_token; + const poolID = gammToken.split('gamm/pool/')[1]; + let totalAssets = await queryContract({ + contract: contractAddress, + chain: 'osmosis', + data: { 'total_assets': {} } + }); + + let poolEndpoint = `${endPoints[chain]}/osmosis/gamm/v1beta1/pools/${poolID}`; + const poolData = (await axios.get(poolEndpoint)).data.pool; + + let amount = calculateTokenAmounts(poolData, totalAssets) + for (const denom in amount) { + if (typeof amounts[denom] === "undefined") { + amounts[denom] = amount[denom]; + } else { + amounts[denom] += amount[denom]; + } + } + } + return transformBalances(chain, amounts) +} + +function calculateTokenAmounts(poolData, gammAmount) { + // Extract the total pool shares. + let totalShares = poolData.total_shares.amount; + + // Initialize an object to hold the amounts of each token. + let tokenAmounts = {}; + + // For each token in the pool... + if (typeof poolData.pool_assets !== "undefined") { + for (let asset of poolData.pool_assets) { + // Extract the token's denom and amount. + let denom = asset.token.denom; + let assetAmount = asset.token.amount; + + // Calculate the amount of this token that corresponds to the given amount of pool shares. + tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; + } + } else { + for (let asset of poolData.pool_liquidity) { + // Extract the token's denom and amount. + let denom = asset.denom; + let assetAmount = asset.amount; + + // Calculate the amount of this token that corresponds to the given amount of pool shares. + tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; + } + } + + return tokenAmounts; +} module.exports = { timetravel: false, methodology: "Total TVL on vaults", terra: { - tvl: () => ({}) + tvl: () => 0 + }, + osmosis: { + tvl, }, -}, - module.exports.hallmarks = [ + hallmarks: [ [1651881600, "UST depeg"], [Math.floor(new Date('2022-09-13') / 1e3), 'Stop supporting Terra Classic'], - ] + ], +} From dd352204e1be4f7720531d6577d8eb20da48a85a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:23:24 +0200 Subject: [PATCH 0888/1354] bugfix --- projects/sapphiremine.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/sapphiremine.js b/projects/sapphiremine.js index b83739ccb7..81d620c4b0 100644 --- a/projects/sapphiremine.js +++ b/projects/sapphiremine.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('helper/coreAssets.json') +const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); const target = '0x7146854856E3f373675105556c7D964B329606be'; const WMATIC = ADDRESSES.polygon.WMATIC_2; From a26a26a2ea9a3ce955ccad252220756b5a79e7ab Mon Sep 17 00:00:00 2001 From: define Date: Mon, 26 Jun 2023 10:53:28 +0100 Subject: [PATCH 0889/1354] add new contract to vela exchange --- projects/vela-exchange/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/vela-exchange/index.js b/projects/vela-exchange/index.js index 1b58d46f33..9b862c9527 100644 --- a/projects/vela-exchange/index.js +++ b/projects/vela-exchange/index.js @@ -4,7 +4,7 @@ const { staking } = require("../helper/staking") module.exports = { methodology: "Counts USDC deposited to trade and to mint VLP. Staking counts VELA deposited to earn eVELA", arbitrum: { - tvl: staking('0x5957582f020301a2f732ad17a69ab2d8b2741241', ADDRESSES.arbitrum.USDC), + tvl: staking('0xC4ABADE3a15064F9E3596943c699032748b13352', ADDRESSES.arbitrum.USDC), staking: staking('0xfC527781Ae973f8131dC26dDDb2Adb080c1C1F59', '0x088cd8f5eF3652623c22D48b1605DCfE860Cd704'), }, hallmarks: [ From 0c1914e5b26d2ba6b1fa3961cb37a372d21b916b Mon Sep 17 00:00:00 2001 From: Varun Krishna S Date: Mon, 26 Jun 2023 16:38:15 +0530 Subject: [PATCH 0890/1354] feat: add new timeswap option factory address for polygon (#6637) --- projects/timeswap-v2/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index 342ce06476..82d1ff0f47 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -66,6 +66,7 @@ const config = { polygon: { oldFactory: "0xcAB2E5Ba8b3A8d8Bf8B50F0eec12884D0255fB4A", factory: "0xcf0aca5c5b7e1bF63514D362243b6c50d5761FE8", + newFactory: "0x406d3Dfcbe20b642c2262b29b960822975371502", fromBlock: 39476334, }, ethereum: { From e5f9c7e49e655248c77fcf445ff83dceec452c6e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 17:15:04 +0530 Subject: [PATCH 0891/1354] Steer 2 (#6642) * feat: :zap: Include all deployed chains to Steer adapter Added: avax, bnb, metis, evmos, p_zkevm, celo, thundercore binance historical node failing * bugfix --------- Co-authored-by: Brandon --- projects/steer/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/steer/index.js b/projects/steer/index.js index eb77119f49..968135991b 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -3,6 +3,13 @@ const config = { polygon: { registry: '0x24825b3c44742600d3995d1d3760ccee999a7f0b', fromBlock: 41535540, }, arbitrum: { registry: '0x9f5b097AD23e2CF4F34e502A3E41D941678877Dc', fromBlock: 88698956, }, optimism: { registry: '0xC1Ecd10398A6D7036CceE1f50551ff169715081c', fromBlock: 96971465, }, + avax: { registry: '0x9f5b097AD23e2CF4F34e502A3E41D941678877Dc', fromBlock: 30434642, }, + bsc: { registry: '0x31e4ee367d4f2685BAfcAb9566e9C87E60D48983', fromBlock: 28461459, }, + evmos: { registry: '0xD90c8970708FfdFC403bdb56636621e3E9CCe921', fromBlock: 13671900, }, + metis: { registry: '0x116Dba5DcE9CcDA828218b7eB46406810632014C', fromBlock: 6067741, }, + polygon_zkevm: { registry: '0x9f5b097AD23e2CF4F34e502A3E41D941678877Dc', fromBlock: 1022413, }, + celo: { registry: '0x116Dba5DcE9CcDA828218b7eB46406810632014C', fromBlock: 19813127, }, + thundercore: { registry: '0xa1Dd21fbd9e1F0BF28d41F18bDC22326e50C02e9', fromBlock: 135181847, }, } module.exports = {}; @@ -30,6 +37,7 @@ Object.keys(config).forEach(chain => { api.add(token0, bal.total0) api.add(token1, bal.total1) }) + return api.getBalances() } } }) \ No newline at end of file From 0271e0ab28e3ceafac17f6d8635f15f7506ce3b8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:15:59 +0200 Subject: [PATCH 0892/1354] track voodoo.trade (#6634) --- README.md | 15 +++++++++------ projects/voodoo-trade/index.js | 13 +++++++++++++ pull_request_template.md | 4 ++-- 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 projects/voodoo-trade/index.js diff --git a/README.md b/README.md index 2d04c27e87..a4b9dc7340 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,15 @@ Follow [this guide](https://docs.llama.fi/submit-a-project) to create an adapter Also, don't hesitate to send a message on [our discord](https://discord.defillama.com/) if we're late to merge your PR. -> If you would like to add a `volume` adapter please submit the PR [here](https://github.com/DefiLlama/adapters). +> If you would like to add a `volume` adapter please submit the PR [here](https://github.com/DefiLlama/adapters) +> - If you would like to add a `liquidations` adapter, please refer to [this readme document](https://github.com/DefiLlama/DefiLlama-Adapters/tree/main/liquidations) for details. + +1. Once your adapter has been merged, it takes time to show on the UI. If more than 24 hours have passed, please let us know in Discord. +2. Please enable "Allow edits by maintainers" while putting up the PR. +3. Sorry, We no longer accept fetch adapter for new projects, we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you. +4. **For updating listing info** It is a different repo, you can find your listing in this file: https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts, you can edit it there and put up a PR +5. Do not edit/push `package-lock.json` file as part of your changes, we use lockfileVersion 2, and most use v1 and using that messes up our CI +6. No need to go to our discord and announce that you've created a PR, we monitor all PRs and will review it asap ## Getting listed @@ -27,11 +35,6 @@ If you want to change RPC providers because you need archive node access or beca ETHEREUM_RPC="..." BSC_RPC="..." POLYGON_RPC="..." -FANTOM_RPC="..." -ARBITRUM_RPC="..." -OPTIMISM_RPC="..." -XDAI_RPC="..." -HARMONY_RPC="..." ``` The name of each rpc is `{CHAIN-NAME}_RPC`, and the name we use for each chain can be found [here](https://github.com/DefiLlama/defillama-sdk/blob/master/src/providers.json) diff --git a/projects/voodoo-trade/index.js b/projects/voodoo-trade/index.js new file mode 100644 index 0000000000..241542fd87 --- /dev/null +++ b/projects/voodoo-trade/index.js @@ -0,0 +1,13 @@ +const { gmxExports } = require("../helper/gmx"); +const { pool2 } = require("../helper/pool2"); + +const vault = "0x40cbDDAED8b0d7Ee3cF347aAb09Bf4a8cFa15F01"; +const lpToken = "0xC42437A6da389D88799A9e706da3EA6628342295"; +const stakedLpTokenTracker = "0xBf47b011C36F29e7C65b6cf34c1d838EA1b67069"; + +module.exports = { + fantom: { + tvl: gmxExports({ vault }), + pool2: pool2(stakedLpTokenTracker, lpToken,), + }, +}; \ No newline at end of file diff --git a/pull_request_template.md b/pull_request_template.md index efc392486a..4f4ead273d 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -4,8 +4,8 @@ > - If you would like to add a `liquidations` adapter, please refer to [this readme document](https://github.com/DefiLlama/DefiLlama-Adapters/tree/main/liquidations) for details. 1. Once your adapter has been merged, it takes time to show on the UI. If more than 24 hours have passed, please let us know in Discord. -2. Sorry, We no longer accept fetch adapter for new projects, we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you. -3. The protocol is usually listed within 24 hours of merging the PR +2. Please enable "Allow edits by maintainers" while putting up the PR. +3. Sorry, We no longer accept fetch adapter for new projects, we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you. 4. Please fill the form below **only if the PR is for listing a new protocol** else it can be ignored/replaced with reason/details about the PR 5. **For updating listing info** It is a different repo, you can find your listing in this file: https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts, you can edit it there and put up a PR 6. Do not edit/push `package-lock.json` file as part of your changes, we use lockfileVersion 2, and most use v1 and using that messes up our CI From 270980f3f51e123f5f639d95c5d3b72b0f2b9764 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:44:02 +0200 Subject: [PATCH 0893/1354] add hats v2 --- projects/hats-v2/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/hats-v2/index.js diff --git a/projects/hats-v2/index.js b/projects/hats-v2/index.js new file mode 100644 index 0000000000..cb1bce3446 --- /dev/null +++ b/projects/hats-v2/index.js @@ -0,0 +1,25 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const config = { + ethereum: { masterchef: '0xc570c434ba30a2fa5c07e590833246e18aa6b0a3',}, + polygon: { masterchef: '0xa80d0a371f4d37afcc55188233bb4ad463af9e48',}, + bsc: { masterchef: '0xd978eb90eb1b11213e320f4e6e910eb98d8df1e4',}, + arbitrum: { masterchef: '0xa80d0a371f4d37afcc55188233bb4ad463af9e48',}, + optimism: { masterchef: '0xa80d0a371f4d37afcc55188233bb4ad463af9e48',}, +} + +Object.keys(config).forEach(chain => { + const { masterchef } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const vaults = await api.fetchList({ lengthAbi: 'uint256:getNumberOfVaults', itemAbi: 'function hatVaults(uint256) view returns (address)', target: masterchef}) + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) + const tokensAndOwners = [] + tokens.forEach((token, i) => { + tokensAndOwners.push([token, vaults[i]]) + tokensAndOwners.push([token, masterchef]) + }) + return sumTokens2({ api, tokensAndOwners,}) + } + } +}) \ No newline at end of file From d9f26cc261de7625332d639c290d50396fe32c27 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 19:00:54 +0200 Subject: [PATCH 0894/1354] track themis.exchange --- projects/themis-exchange/index.js | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/themis-exchange/index.js diff --git a/projects/themis-exchange/index.js b/projects/themis-exchange/index.js new file mode 100644 index 0000000000..af2385ae50 --- /dev/null +++ b/projects/themis-exchange/index.js @@ -0,0 +1,34 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + arbitrum: { addressProvider: '0x75F805e2fB248462e7817F0230B36E9Fae0280Fc', }, +} + +Object.keys(config).forEach(chain => { + const { addressProvider } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const tokens = await api.call({ abi: abi.getReservesList, target: addressProvider }) + const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) + return sumTokens2({ api, tokensAndOwners2: [tokens, tokenData.map(i => i.aTokenAddress)], }) + }, + borrowed: async (_, _b, _cb, { api, }) => { + const tokens = await api.call({ abi: abi.getReservesList, target: addressProvider }) + const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) + const vDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.variableDebtTokenAddress), }) + const sDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.stableDebtTokenAddress), }) + tokens.forEach((token, i) => { + const variableDebt = vDebtSupply[i] + const stableDebt = sDebtSupply[i] + api.add(token, variableDebt) + api.add(token, stableDebt) + }) + return api.getBalances() + }, + } +}) + +const abi = { + "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))", + "getReservesList": "address[]:getReservesList", +} \ No newline at end of file From d77b8a59336c4aa90e4ccfbed59bd0bd533287df Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 26 Jun 2023 18:08:02 +0100 Subject: [PATCH 0895/1354] add new rabbitx updatr --- projects/rabbitx/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/rabbitx/index.js b/projects/rabbitx/index.js index 88cf728584..9f61b3fff8 100644 --- a/projects/rabbitx/index.js +++ b/projects/rabbitx/index.js @@ -3,6 +3,6 @@ const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: sumTokensExport({ owner: '0xFc7f884DE22a59c0009C91733196b012Aecb8F41', tokens: [ADDRESSES.ethereum.USDT]}) + tvl: sumTokensExport({ owners: ['0xFc7f884DE22a59c0009C91733196b012Aecb8F41', '0x3b8F6D6970a24A58b52374C539297ae02A3c4Ae4'], tokens: [ADDRESSES.ethereum.USDT]}) } -} \ No newline at end of file +} From 0ed8ec4c0a93a92dc2a2dc0bc5ee72de91454163 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Mon, 26 Jun 2023 18:15:35 +0100 Subject: [PATCH 0896/1354] patch pendle --- projects/pendle/v2.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index e88a1c997e..e8eb41eb24 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -38,7 +38,7 @@ Object.keys(config).forEach(chain => { ]) data.forEach((v, i) => { let value = supply[i] * (10 ** (v.decimals - decimals[i])) - api.add(v.uAsset, value) + api.add(v.uAsset.toLowerCase(), value) }) let balances = api.getBalances(); const bridged = `arbitrum:${steth}`; From d2648e41dc499237e499625b790f62efbba4abe7 Mon Sep 17 00:00:00 2001 From: Michael Silberling <4006780+MSilb7@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:55:21 -0400 Subject: [PATCH 0897/1354] add velo v2 hallmark (#6643) --- projects/velodrome/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/velodrome/index.js b/projects/velodrome/index.js index ff8fe7e895..fa388d3afb 100644 --- a/projects/velodrome/index.js +++ b/projects/velodrome/index.js @@ -15,5 +15,6 @@ module.exports = { hallmarks:[ [1657760400, "First OP grant awarded"], [1659618000, "Loss $350k Operational Funds"], + [1687465883, "v2 Migration on OP Mainnet"], // https://twitter.com/VelodromeFi/status/1671979216039202816 ] } From ca42bccfd6898f34a685253f1704e653e667b2b0 Mon Sep 17 00:00:00 2001 From: Rubydex <118339704+Rubydex@users.noreply.github.com> Date: Tue, 27 Jun 2023 01:56:32 +0800 Subject: [PATCH 0898/1354] add bsc chain (#6644) Co-authored-by: robert --- projects/rubydex/index.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/rubydex/index.js b/projects/rubydex/index.js index 88d8783662..bc06531bbe 100644 --- a/projects/rubydex/index.js +++ b/projects/rubydex/index.js @@ -1,10 +1,14 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); -const VAULT_CONTRACT = '0x4a7c10780afdba628332e31c9e7d1675cfad594c'; +const VAULT_ARBITRUM = '0x4a7c10780afdba628332e31c9e7d1675cfad594c'; +const VAULT_BSC = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; module.exports = { - methodology: 'counts the number of USDT tokens in the RubyDex Vault contract.', + methodology: 'USDT tokens held by the RubyDex Vault contract.', arbitrum: { - tvl: sumTokensExport({ owner: VAULT_CONTRACT, tokens: [ADDRESSES.arbitrum.USDT] }), + tvl: sumTokensExport({ owner: VAULT_ARBITRUM, tokens: [ADDRESSES.arbitrum.USDT] }), + }, + bsc: { + tvl: sumTokensExport({ owner: VAULT_BSC, tokens: [ADDRESSES.bsc.USDT] }), } }; From 801b06bcb34b73ef4972889a1956d69a80fe7e3d Mon Sep 17 00:00:00 2001 From: litxDevelopment <137286174+litxDevelopment@users.noreply.github.com> Date: Mon, 26 Jun 2023 23:32:42 +0530 Subject: [PATCH 0899/1354] Add litx (#6645) * Add LitxSwap * Update index.js --- projects/litxswap/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/litxswap/index.js diff --git a/projects/litxswap/index.js b/projects/litxswap/index.js new file mode 100644 index 0000000000..d3316cc41b --- /dev/null +++ b/projects/litxswap/index.js @@ -0,0 +1,14 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + pulse: { + factory: "0x24398b6ea5434339934D999E431807B1C157b4Fd", + fromBlock: 17449439, + isAlgebra: true, + }, + bsc: { + factory: "0xaA37Bea711D585478E1c04b04707cCb0f10D762a", + fromBlock: 28719189, + isAlgebra: true, + }, +}); From 060de491ec131484200ff4e0bcdfd4b7ae94b28b Mon Sep 17 00:00:00 2001 From: stupid-boar <6961601+stupid-boar@users.noreply.github.com> Date: Mon, 26 Jun 2023 21:05:16 +0300 Subject: [PATCH 0900/1354] PepeTeam Bridge add MATIC (#6648) * fix swop.fi TVL * add USDT/USDC/BTCB for BSC TVL * add CRV token * add polygon MATIC --- projects/pepe-bridge/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index afb9292836..b4440ebb1a 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -24,6 +24,9 @@ const config = { ], '0x8DF12786EC0E34e60D4c52f9052ba4e536e9367a' ] + ], + polygon: [ + [[nullAddress], '0xEa3cc73165748AD1Ca76b4d1bA9ebC43fb399018'], ] } module.exports = {}; From 8658c3473d814a1f7f514343d0a48e3f465b6e39 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Jun 2023 23:38:56 +0530 Subject: [PATCH 0901/1354] Betswirl (#6650) * feat(betswirl): Add Staking contracts TVLs * minor fix --------- Co-authored-by: Romuald --- projects/betswirl/index.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/projects/betswirl/index.js b/projects/betswirl/index.js index a9014f0a78..ec75654a00 100644 --- a/projects/betswirl/index.js +++ b/projects/betswirl/index.js @@ -1,10 +1,19 @@ +const { staking } = require('../helper/staking') module.exports = { - methodology: - "BetSwirl has no users TVL yet. However, it includes the bankrolls amounts (each tokens amount in the bank allowing players to bet).", - // The first Bank was deployed on Polygon at tx 0x6b99f617946d2f8c23adcd440cd3309d2da750e52d135853f38a0da11cdc3233 - start: 1648344312, // new Date(Date.UTC(2022, 2, 27, 1, 25, 12)).getTime() / 1e3, + methodology: "TVL counts BETS tokens deposited on the Staking contracts.", + start: 1687715559, bsc: { tvl: () => ({}), + staking: staking('0xeb5F6571861EAA6de9F827519B48eFe979d4d913', '0x3e0a7C7dB7bB21bDA290A80c9811DE6d47781671'), + }, + polygon: { + staking: staking('0xa184468972c71209BC31a5eF39b7321d2A839225', '0x9246a5f10a79a5a939b0c2a75a3ad196aafdb43b'), + }, + avax: { + staking: staking('0x31EDcD915e695AdAF782c482b9816613b347AC8c', '0xc763f8570a48c4c00c80b76107cbe744dda67b79'), + }, + arbitrum: { + staking: staking('0xD4BFB259D8785228e5D2c19115D5DB342E2eE064', '0xe26ae3d881f3d5def58d795f611753804e7a6b26'), }, }; From dd04f2a9279d316d6495928a494ac39450e637df Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Jun 2023 01:41:59 +0530 Subject: [PATCH 0902/1354] track https://themis.capital/ (#6649) --- projects/helper/tokenMapping.js | 4 ++++ projects/themis-capital-dex/index.js | 12 ++++++++++++ projects/themis-capital-ohm/index.js | 14 ++++++++++++++ projects/treasury/themis-capital-ohm.js | 12 ++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 projects/themis-capital-dex/index.js create mode 100644 projects/themis-capital-ohm/index.js create mode 100644 projects/treasury/themis-capital-ohm.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 5bbfa5fef6..ce4d376c21 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -53,6 +53,10 @@ const fixBalancesTokens = { // }, rpg: { '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, + }, + filecoin: { + '0xce5805cf6c84f71d2897f632e0aa60d2430ccd2a': { coingeckoId: "filecoin", decimals: 18 }, + '0x422849B355039bC58F2780cc4854919fC9cfaF94': { coingeckoId: "tether", decimals: 6 }, } } diff --git a/projects/themis-capital-dex/index.js b/projects/themis-capital-dex/index.js new file mode 100644 index 0000000000..4aa8f78572 --- /dev/null +++ b/projects/themis-capital-dex/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + filecoin: { + tvl: getUniTVL({ + factory: '0xe250A89d23F466c14B26BDF60a0DC3b54974FBE9', + useDefaultCoreAssets: true, + fetchBalances: true, + }) + }, +}; \ No newline at end of file diff --git a/projects/themis-capital-ohm/index.js b/projects/themis-capital-ohm/index.js new file mode 100644 index 0000000000..22ed94313c --- /dev/null +++ b/projects/themis-capital-ohm/index.js @@ -0,0 +1,14 @@ +const { sumTokensExport } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + filecoin: { + tvl: () => ({}), + staking: sumTokensExport({ + owner: '0xA8a3136111ca0b010C9FD5C2D6d7c71e4982606A', + tokens: ['0x005E02A4A934142d8Dd476F192d0dD9c381b16b4'], + lps: ['0x45680718F6BdB7Ec3A7dF7D61587aC7C3fB49d50'], + useDefaultCoreAssets: true, + }) + }, +}; \ No newline at end of file diff --git a/projects/treasury/themis-capital-ohm.js b/projects/treasury/themis-capital-ohm.js new file mode 100644 index 0000000000..5efc3bdfaa --- /dev/null +++ b/projects/treasury/themis-capital-ohm.js @@ -0,0 +1,12 @@ +const { sumTokensExport } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + filecoin: { + tvl: sumTokensExport({ + owner: '0x0e511806C7AC38cF6d1EeAa9Ee51027e44Dcbf94', + tokens: ['0x422849B355039bC58F2780cc4854919fC9cfaF94', '0x45680718F6BdB7Ec3A7dF7D61587aC7C3fB49d50'], + useDefaultCoreAssets: true, + }) + }, +}; \ No newline at end of file From ae6e88671d0253f9fb4852ed1f6f37e437dcff71 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 27 Jun 2023 02:39:47 +0100 Subject: [PATCH 0903/1354] fix lint issues --- projects/curve/historical/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/curve/historical/index.js b/projects/curve/historical/index.js index 9444150818..f08307340c 100644 --- a/projects/curve/historical/index.js +++ b/projects/curve/historical/index.js @@ -175,7 +175,7 @@ let coinDecimals = [ } ] -async function tvl(timestamp, block) { +async function tvlFunc(timestamp, block) { var price_feed = await axios.get(`https://coins.llama.fi/prices/historical/${timestamp}/${["bitcoin","cdai","compound-usd-coin"].map(c=>"coingecko:"+c).join(',')}`) var tvl = 0; var btcTVL = 0; @@ -223,9 +223,9 @@ async function calc(item, i, price_feed, block) { var poolAmount = await new BigNumber(balances).div(10 ** coinDecimals[0][coins]).toFixed(2); - + let multiplier; if (item.type == 'compound') { - let multiplier = 1; + multiplier = 1; if (coins === '0x39AA39c021dfbaE8faC545936693aC917d5E7563') { multiplier = price_feed.data.coins['coingecko:compound-usd-coin'].price; } @@ -236,7 +236,7 @@ async function calc(item, i, price_feed, block) { } if (item.type == 'yToken') { - let multiplier = 1; + multiplier = 1; if (coins !== '0x8E870D67F660D95d5be530380D0eC0bd388289E1') { // PAX exception multiplier = await getVirtualPrice(abis.abis.yTokens, coins, block) multiplier = await new BigNumber(multiplier).div(10 ** 18).toFixed(4); @@ -250,5 +250,5 @@ async function calc(item, i, price_feed, block) { module.exports = { - ethereum:{tvl} + ethereum:{tvlFunc} } From 4f42aa64837b3461f539701efd216683009872a2 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 27 Jun 2023 03:37:31 +0100 Subject: [PATCH 0904/1354] add hallmark --- projects/astrowar-finance/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/astrowar-finance/index.js b/projects/astrowar-finance/index.js index d658c54c83..c8d4f032ea 100644 --- a/projects/astrowar-finance/index.js +++ b/projects/astrowar-finance/index.js @@ -14,6 +14,9 @@ async function tvl(timestamp, _block, { harmony: block }) { module.exports = { deadFrom: 1650564340, + hallmarks: [ + [1650412800, "Rug Pull"] + ], harmony: { tvl } From a698d8f96755aedb4547509d48c3437a3fe1872f Mon Sep 17 00:00:00 2001 From: theapesociety <98607857+theapesociety@users.noreply.github.com> Date: Tue, 27 Jun 2023 01:23:15 -0700 Subject: [PATCH 0905/1354] Add Levvy.fi (#6628) * Create index.js * Update index.js * Separate TVL and borrowed * bugfix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/levvy-fi/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/levvy-fi/index.js diff --git a/projects/levvy-fi/index.js b/projects/levvy-fi/index.js new file mode 100644 index 0000000000..29c72ff891 --- /dev/null +++ b/projects/levvy-fi/index.js @@ -0,0 +1,19 @@ +const { post } = require('../helper/http') + +module.exports = { + misrepresentedTokens: true, + cardano: { + tvl: async () => { + const data = await post('https://citizens.theapesociety.io/api/getLevvyData', {}) + return { + cardano: data.adaTVL, + } + }, + borrowed: async () => { + const data = await post('https://citizens.theapesociety.io/api/getLevvyData', {}) + return { + cardano: data.borrowed, + } + } + }, +} From d537527d38d97b2fef53a18a852a6d5f15aefd3a Mon Sep 17 00:00:00 2001 From: PacmanFinance <131015836+PacmanFinance@users.noreply.github.com> Date: Tue, 27 Jun 2023 16:25:30 +0800 Subject: [PATCH 0906/1354] add Pacman project (#6638) * test * add tvl * fix tvl * remove log * code refactor * refactor pacman --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pacman/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/pacman/index.js diff --git a/projects/pacman/index.js b/projects/pacman/index.js new file mode 100644 index 0000000000..929caf096f --- /dev/null +++ b/projects/pacman/index.js @@ -0,0 +1,32 @@ +const { graphQuery } = require('../helper/http') + +const subgraphUrl = "https://api.thegraph.com/subgraphs/name/pacmanfinance/pacman-arbitrum"; + +const vaultsQuery = ` + query { + vaults { + baseToken { + id + priceByUsd + decimals + } + id + availableAmount + totalDeposit + totalDebt + } + } +`; + +async function tvl(timestamp, ethBlock, chainBlocks, { api }) { + const { vaults } = await graphQuery(subgraphUrl, vaultsQuery) + vaults.forEach(({ baseToken: { id, decimals }, totalDebt, totalDeposit}) => { + api.add(id, (totalDeposit - totalDebt) * ( 10 ** decimals)) + }) +} + +module.exports = { + arbitrum: { + tvl, + } +}; \ No newline at end of file From 466ae72e07a304196a2ec98854b28cb85020fe11 Mon Sep 17 00:00:00 2001 From: Kirin <107048299+0xKirin@users.noreply.github.com> Date: Tue, 27 Jun 2023 15:42:06 +0700 Subject: [PATCH 0907/1354] Correct getting the total of tvl and staking into Templar DAO (#6651) * modify get tvl and staking * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/treasury.js | 2 +- projects/templar/api.js | 2 +- projects/templar/index.js | 39 ++++++++-------------- projects/treasury/templar-dao.js | 55 +++++++++++++++++++++++++++++--- 4 files changed, 66 insertions(+), 32 deletions(-) diff --git a/projects/helper/treasury.js b/projects/helper/treasury.js index 82f912f781..227afc1df5 100644 --- a/projects/helper/treasury.js +++ b/projects/helper/treasury.js @@ -27,7 +27,7 @@ function treasuryExports(config) { exportObj[chain] = { tvl: sumTokensExport(tvlConfig) } } - if (ownTokens) { + if (ownTokens.length > 0) { const { solOwners, ...otherOptions } = config[chain] const options = { ...otherOptions, owners: [...owners, ...ownTokenOwners], tokens: ownTokens, chain, uniV3WhitelistedTokens: ownTokens} exportObj[chain].ownTokens = sumTokensExport(options) diff --git a/projects/templar/api.js b/projects/templar/api.js index 86cb8cd480..aa6c1aeb5e 100644 --- a/projects/templar/api.js +++ b/projects/templar/api.js @@ -2,7 +2,7 @@ const index = require('./index') module.exports = { bsc: { - tvl: () => 0, + tvl: index.bsc.tvl, staking: index.bsc.staking, }, moonriver: { diff --git a/projects/templar/index.js b/projects/templar/index.js index f56fc4d7e2..31a8172a02 100644 --- a/projects/templar/index.js +++ b/projects/templar/index.js @@ -1,30 +1,24 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { stakings } = require("../helper/staking"); -const { sumTokensExport, nullAddress, } = require("../helper/unwrapLPs"); +const { sumTokensExport } = require("../helper/unwrapLPs"); -const bscOwner = "0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"; const bscStaking = "0xa1f61Ca61fe8655d2a204B518f6De964145a9324"; const bscStakingV2 = "0xffC7B93b53BC5F4732b414295E989684702D0eb5"; -const bscTreasuryContract = "0xd01e8D805BB310F06411e70Fd50eB58cAe2B4C27"; const bscTokens = { - BUSD: ADDRESSES.bsc.BUSD, - WBNB: ADDRESSES.bsc.WBNB, - MIM: "0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba", - TM: "0x194d1D62d8d798Fcc81A6435e6d13adF8bcC2966", - DAI: "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", TEM: "0x19e6BfC1A6e4B042Fb20531244D47E252445df01", - VBUSD: "0x95c78222B3D6e262426483D42CfA53685A67Ab9D", - VBTC: "0x882C173bC7Ff3b7786CA16dfeD3DFFfb9Ee7847B", }; -const ethTokens = { - USDC: ADDRESSES.ethereum.USDC, - USDT: ADDRESSES.ethereum.USDT, -}; -const ethOwner = "0x4Bd973e98585b003c31f4C8b9d6eAC5d3293B1e5" - module.exports = { + bsc: { + staking: sumTokensExport({ + owners: [bscStaking, bscStakingV2], + tokens: [bscTokens.TEM], + }), + tvl: () => 0, + }, + ethereum: { + tvl: () => 0, + staking: () => 0, + }, moonriver: { tvl: () => 0, staking: () => 0, @@ -33,11 +27,4 @@ module.exports = { tvl: () => 0, staking: () => 0, }, - bsc: { - tvl: sumTokensExport({ owners: [bscOwner, bscTreasuryContract,], tokens: [bscTokens.TM, bscTokens.DAI, bscTokens.BUSD, bscTokens.WBNB, bscTokens.VBUSD, bscTokens.VBTC], resolveUniV3: true, }), - staking: stakings([bscStaking, bscStakingV2], bscTokens.TEM, "bsc"), - }, - ethereum: { - tvl: sumTokensExport({ owner: ethOwner, tokens: [ethTokens.USDC, ethTokens.USDT, nullAddress, ADDRESSES.ethereum.WBTC], resolveUniV3: true, }), - }, -} +}; \ No newline at end of file diff --git a/projects/treasury/templar-dao.js b/projects/treasury/templar-dao.js index 208896bcfd..207bd8b25d 100644 --- a/projects/treasury/templar-dao.js +++ b/projects/treasury/templar-dao.js @@ -1,5 +1,52 @@ -module.exports = require("../templar/index"); +const ADDRESSES = require("../helper/coreAssets.json"); +const { treasuryExports } = require("../helper/treasury"); +const { nullAddress } = require("../helper/unwrapLPs"); -delete module.exports.bsc.staking -delete module.exports.moonriver.staking -delete module.exports.harmony.staking \ No newline at end of file +const bscOwner = "0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"; +const bscTreasuryContract = "0xd01e8D805BB310F06411e70Fd50eB58cAe2B4C27"; + +const bscTokens = { + BUSD: ADDRESSES.bsc.BUSD, + WBNB: ADDRESSES.bsc.WBNB, + MIM: "0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba", + TM: "0x194d1D62d8d798Fcc81A6435e6d13adF8bcC2966", + DAI: "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", + TEM: "0x19e6BfC1A6e4B042Fb20531244D47E252445df01", + VBUSD: "0x95c78222B3D6e262426483D42CfA53685A67Ab9D", + VBTC: "0x882C173bC7Ff3b7786CA16dfeD3DFFfb9Ee7847B", +}; + +const LP = "0xEA724deA000b5e5206d28f4BC2dAD5f2FA1fe788"; + +const ethTokens = { + USDC: ADDRESSES.ethereum.USDC, + USDT: ADDRESSES.ethereum.USDT, +}; +const ethOwner = "0x4Bd973e98585b003c31f4C8b9d6eAC5d3293B1e5"; + +module.exports = treasuryExports({ + bsc: { + tokens: [ + nullAddress, + bscTokens.TM, + bscTokens.DAI, + bscTokens.BUSD, + bscTokens.WBNB, + bscTokens.VBUSD, + bscTokens.VBTC, + ], + owners: [bscOwner, bscTreasuryContract], + ownTokens: ['0x19e6BfC1A6e4B042Fb20531244D47E252445df01'], + resolveUniV3: true, + }, + ethereum: { + owner: ethOwner, + tokens: [ + nullAddress, + ethTokens.USDC, + ethTokens.USDT, + ADDRESSES.ethereum.WBTC, + ], + resolveUniV3: true, + }, +}); \ No newline at end of file From 2299094fd063efd620f8092612a68cf8adf85ced Mon Sep 17 00:00:00 2001 From: Rhinestone Cowboy <42247026+AntwuanDixon@users.noreply.github.com> Date: Tue, 27 Jun 2023 18:11:24 +0800 Subject: [PATCH 0908/1354] Add Struct Finance (#6654) * add struct * replace USDC/BTC.b token address declarations with coreAssets import; remove default undefined val from API param * change directory name to struct-finance * change object name to addresses * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/struct-finance/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/struct-finance/index.js diff --git a/projects/struct-finance/index.js b/projects/struct-finance/index.js new file mode 100644 index 0000000000..891238abff --- /dev/null +++ b/projects/struct-finance/index.js @@ -0,0 +1,29 @@ +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const addresses = { + struct: { + gmxYieldSource: "0x6aE12b0adF9716181c07D19dfe76442AB1b3817b", + gmxFactory: "0x46f8765781ac36e5e8f9937658fa311af9d735d7", + }, + token: { + fsGlp: "0x9e295b5b976a184b14ad8cd72413ad846c299660", + }, +}; + +async function tvl(ts, _, __, { api }) { + const vaults = await api.fetchList({ lengthAbi: 'uint256:totalProducts', itemAbi: "function allProducts(uint256) external view returns (address)", target: addresses.struct.gmxFactory}) + vaults.push(addresses.struct.gmxYieldSource); + + return sumTokens2({ + api, + owners: vaults, + tokens: [ADDRESSES.avax.BTC_b, ADDRESSES.avax.USDC, addresses.token.fsGlp], + }); +} + +module.exports = { + avax: { + tvl, + }, +}; From 4da1d79a5ea656d58649051ad0bc4b957c5d116a Mon Sep 17 00:00:00 2001 From: jameveplus <136568897+jameveplus@users.noreply.github.com> Date: Tue, 27 Jun 2023 17:12:02 +0700 Subject: [PATCH 0909/1354] veplus create new dex (#6655) * veplus create dex * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/veplus/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/veplus/index.js diff --git a/projects/veplus/index.js b/projects/veplus/index.js new file mode 100644 index 0000000000..92d2c84362 --- /dev/null +++ b/projects/veplus/index.js @@ -0,0 +1,13 @@ +const { getUniTVL } = require('../helper/unknownTokens.js') + +module.exports = { + misrepresentedTokens: true, + bsc:{ + tvl: getUniTVL({ + useDefaultCoreAssets: true, + hasStablePools: true, + fetchBalances: true, + factory: '0x5Bcd9eE6C31dEf33334b255EE7A767B6EEDcBa4b', + }), + }, +} \ No newline at end of file From 395067cda38494bba3d05866a7ab057e1ff9e8d6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Jun 2023 12:46:46 +0200 Subject: [PATCH 0910/1354] fluidtokens: split borrowed from tvl --- projects/fluidtokens/index.js | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js index abb10b2309..a6ad125cc3 100644 --- a/projects/fluidtokens/index.js +++ b/projects/fluidtokens/index.js @@ -42,7 +42,23 @@ const tvl_onchain = async () => { }; }; -async function tvl( +async function tvl() { + const dataOffers = await get("https://api.fluidtokens.com/get-available-collection-offers"); + let SC_offers_tvl = 0; + + dataOffers.forEach((i) => { + SC_offers_tvl += parseInt(i.offerData.loanAmnt); + }); + + const repay_tvl = parseInt(await get("https://api.fluidtokens.com/get-total-available-repayments")); + + return { + cardano: (SC_offers_tvl+repay_tvl) / 1e6, + }; +} + + +async function borrowed( ts //timestamp in seconds ) { const data = await get("https://api.fluidtokens.com/get-active-loans"); @@ -84,20 +100,21 @@ async function tvl( SC_offers_tvl += parseInt(i.offerData.loanAmnt); }); - const repay_tvl = parseInt(await get("https://api.fluidtokens.com/get-total-available-repayments")); - return { - cardano: (SC1_tvl + SC2_tvl +SC_offers_tvl+repay_tvl) / 1e6, + cardano: (SC1_tvl + SC2_tvl) / 1e6, }; } + module.exports = { methodology: "Count active loaned out ADA as tvl", timetravel: false, cardano: { tvl, + borrowed, }, hallmarks: [ [Math.floor(new Date("2023-01-01") / 1e3), "Count only active loans"], + [Math.floor(new Date("2023-06-27") / 1e3), "ADA loaned out is counted under borrowed"], ], }; From 8af26295a3a731ca822b82895362724a5d4e3ea3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Jun 2023 12:53:50 +0200 Subject: [PATCH 0911/1354] litxswap: update factory address bsc --- projects/litxswap/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/litxswap/index.js b/projects/litxswap/index.js index d3316cc41b..fbe2ba3b8f 100644 --- a/projects/litxswap/index.js +++ b/projects/litxswap/index.js @@ -7,8 +7,8 @@ module.exports = uniV3Export({ isAlgebra: true, }, bsc: { - factory: "0xaA37Bea711D585478E1c04b04707cCb0f10D762a", - fromBlock: 28719189, + factory: "0xbbc7f5605c9cb341d9c41e46ae6ceb30511bdfcf", + fromBlock: 29291639, isAlgebra: true, }, }); From ac156d5e6d25bbb4d46e5bbb5891a6f8029b9602 Mon Sep 17 00:00:00 2001 From: Pham Anh Minh <93236465+phamminh0811@users.noreply.github.com> Date: Tue, 27 Jun 2023 23:40:04 +0700 Subject: [PATCH 0912/1354] Quasar adapter (#6652) * add tvl for quarsar * revert minh pr * add tvl for quarsar * add quarsar chain and change calculate lock on lpStrategyContracts * update pool contract * fix misspell quasar --- projects/helper/chain/cosmos.js | 1 + projects/helper/chains.json | 1 + projects/quasar/index.js | 105 ++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 projects/quasar/index.js diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 6aa2e19c0a..364f92ba85 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -27,6 +27,7 @@ const endPoints = { xpla: "https://dimension-lcd.xpla.dev", kava: "https://api2.kava.io", neutron: "https://rest-kralum.neutron-1.neutron.org", + quasar: "https://quasar-api.polkachu.com", }; const chainSubpaths = { diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 185a09e2ee..4ebafa22a2 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -153,6 +153,7 @@ "proton", "pulse", "quicksilver", + "quasar", "reef", "regen", "rei", diff --git a/projects/quasar/index.js b/projects/quasar/index.js new file mode 100644 index 0000000000..649b446cfd --- /dev/null +++ b/projects/quasar/index.js @@ -0,0 +1,105 @@ +const axios = require("axios"); +const { endPoints, queryContract } = require('../helper/chain/cosmos') +const { transformBalances } = require('../helper/portedTokens') + +const chain = 'quasar' + +const lpStrategyContracts = { + 1: [ + "quasar14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sy9numu", + "quasar1l468h9metf7m8duvay5t4fk2gp0xl94h94f3e02mfz4353de2ykqh6rcts", + "quasar1cp8cy5kvaury53frlsaml7ru0es2reln66nfj4v7j3kcfxl4datqsw0aw4", + "quasar1kj8q8g2pmhnagmfepp9jh9g2mda7gzd0m5zdq0s08ulvac8ck4dq9ykfps", + ], + 678: [ + "quasar1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrsmslfn4", + "quasar1ma0g752dl0yujasnfs9yrk6uew7d0a2zrgvg62cfnlfftu2y0egqx8e7fv", + ], + 704: [ + "quasar1yyca08xqdgvjz0psg56z67ejh9xms6l436u8y58m82npdqqhmmtqk5tv30", + ], + 803: [ + "quasar1jgn70d6pf7fqtjke0q63luc6tf7kcavdty67gvfpqhwwsx52xmjq7kd34f", + "quasar1t9adyk9g2q0efn3xndunzy4wvdrnegjkpvp382vm2uc7hnvash5qpzmxe4", + ], + 833: [ + "quasar1ery8l6jquynn9a4cz2pff6khg8c68f7urt33l5n9dng2cwzz4c4qxhm6a2", + ], + 904: [ + "quasar1ch4s3kkpsgvykx5vtz2hsca4gz70yks5v55nqcfaj7mgsxjsqypsxqtx2a", + ], + 944: [ + "quasar1xkakethwh43dds3ccmsjals9jt7qsfmedgm9dvm9tpqq8watpv9q0458u6", + "quasar1ch4s3kkpsgvykx5vtz2hsca4gz70yks5v55nqcfaj7mgsxjsqypsxqtx2a", + ], +} + + +async function tvl() { + let amounts = {} + + for (const poolID in lpStrategyContracts){ + let lpContracts = lpStrategyContracts[poolID]; + let poolEndpoint = `${endPoints['osmosis']}/osmosis/gamm/v1beta1/pools/${poolID}`; + const poolData = (await axios.get(poolEndpoint)).data.pool; + + for (const contractAddress of lpContracts) { + let lp_shares = await queryContract({ + contract: contractAddress, + chain: chain, + data: { 'lp_shares': {} } + }); + + let amount = calculateTokenAmounts(poolData, lp_shares['lp_shares']['locked_shares']) + for (const denom in amount) { + if (typeof amounts[denom] === "undefined") { + amounts[denom] = amount[denom]; + } else { + amounts[denom] += amount[denom]; + } + } + } + } + + return transformBalances(chain, amounts) +} + + +function calculateTokenAmounts(poolData, gammAmount) { + // Extract the total pool shares. + let totalShares = poolData.total_shares.amount; + + // Initialize an object to hold the amounts of each token. + let tokenAmounts = {}; + + // For each token in the pool... + if (typeof poolData.pool_assets !== "undefined") { + for (let asset of poolData.pool_assets) { + // Extract the token's denom and amount. + let denom = asset.token.denom; + let assetAmount = asset.token.amount; + + // Calculate the amount of this token that corresponds to the given amount of pool shares. + tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; + } + } else { + for (let asset of poolData.pool_liquidity) { + // Extract the token's denom and amount. + let denom = asset.denom; + let assetAmount = asset.amount; + + // Calculate the amount of this token that corresponds to the given amount of pool shares. + tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; + } + } + + return tokenAmounts; +} + +module.exports = { + timetravel: false, + methodology: "Total TVL on vaults", + quasar: { + tvl, + }, +} \ No newline at end of file From c957be93ca3717e3c652879ef4562324874e3594 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Jun 2023 18:50:39 +0200 Subject: [PATCH 0913/1354] quasar: minor fix --- projects/apollodao/index.js | 14 ++++---------- projects/helper/tokenMapping.js | 6 +----- projects/quasar/index.js | 16 ++++++---------- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/projects/apollodao/index.js b/projects/apollodao/index.js index c24702e1e7..6ef923eeab 100644 --- a/projects/apollodao/index.js +++ b/projects/apollodao/index.js @@ -1,7 +1,6 @@ // vaults are closed: https://articles.apollo.farm/apollo-dao-will-be-closing-vaults-on-terra-classic/ const axios = require("axios"); const { endPoints, queryContract } = require('../helper/chain/cosmos') -const { transformBalances } = require('../helper/portedTokens') const chain = 'osmosis' @@ -23,9 +22,8 @@ const contractAddresses = { akt_osmo: "osmo122ryl7pez7yjprtvjckltu2uvjxrq3kqt4nvclax2la7maj6757qg054ga", }; -async function tvl() { - let amounts = {} - if (chain != "osmosis") return transformBalances(chain, amounts) +async function tvl(_, _1, _2, { api }) { + if (api.chain != "osmosis") return {} for (const contractName in contractAddresses) { let contractAddress = contractAddresses[contractName]; let vaultInfo = await queryContract({ @@ -46,14 +44,9 @@ async function tvl() { let amount = calculateTokenAmounts(poolData, totalAssets) for (const denom in amount) { - if (typeof amounts[denom] === "undefined") { - amounts[denom] = amount[denom]; - } else { - amounts[denom] += amount[denom]; - } + api.add(denom, amount[denom]) } } - return transformBalances(chain, amounts) } function calculateTokenAmounts(poolData, gammAmount) { @@ -99,5 +92,6 @@ module.exports = { hallmarks: [ [1651881600, "UST depeg"], [Math.floor(new Date('2022-09-13') / 1e3), 'Stop supporting Terra Classic'], + [Math.floor(new Date('2023-02-16') / 1e3), 'Relaunch on Osmosis '], ], } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index ce4d376c21..12e31d12a0 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -16,7 +16,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList -const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron',] +const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', ] const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui'] const distressedAssts = new Set(Object.values({ @@ -53,10 +53,6 @@ const fixBalancesTokens = { // }, rpg: { '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, - }, - filecoin: { - '0xce5805cf6c84f71d2897f632e0aa60d2430ccd2a': { coingeckoId: "filecoin", decimals: 18 }, - '0x422849B355039bC58F2780cc4854919fC9cfaF94': { coingeckoId: "tether", decimals: 6 }, } } diff --git a/projects/quasar/index.js b/projects/quasar/index.js index 649b446cfd..bfd5c7a9ad 100644 --- a/projects/quasar/index.js +++ b/projects/quasar/index.js @@ -1,6 +1,6 @@ const axios = require("axios"); const { endPoints, queryContract } = require('../helper/chain/cosmos') -const { transformBalances } = require('../helper/portedTokens') +const sdk = require('@defillama/sdk') const chain = 'quasar' @@ -36,9 +36,9 @@ const lpStrategyContracts = { async function tvl() { - let amounts = {} + const api = new sdk.ChainApi({ chain: 'osmosis' }) - for (const poolID in lpStrategyContracts){ + for (const poolID in lpStrategyContracts) { let lpContracts = lpStrategyContracts[poolID]; let poolEndpoint = `${endPoints['osmosis']}/osmosis/gamm/v1beta1/pools/${poolID}`; const poolData = (await axios.get(poolEndpoint)).data.pool; @@ -49,19 +49,15 @@ async function tvl() { chain: chain, data: { 'lp_shares': {} } }); - + let amount = calculateTokenAmounts(poolData, lp_shares['lp_shares']['locked_shares']) for (const denom in amount) { - if (typeof amounts[denom] === "undefined") { - amounts[denom] = amount[denom]; - } else { - amounts[denom] += amount[denom]; - } + api.add(denom, amount[denom]) } } } - return transformBalances(chain, amounts) + return api.getBalances() } From cefc6d82b244b1691b9740bb2c2a99fbd5b2f3dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Tue, 27 Jun 2023 18:53:23 +0200 Subject: [PATCH 0914/1354] Add rETH collateral to Raft TVL (#6658) --- projects/raft/index.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/projects/raft/index.js b/projects/raft/index.js index f53a5f9336..3f05728ff5 100644 --- a/projects/raft/index.js +++ b/projects/raft/index.js @@ -1,10 +1,23 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require("../helper/unwrapLPs"); +const ADDRESSES = require("../helper/coreAssets.json"); -const RAFT_POSITION_MANAGER = '0x5f59b322eb3e16a0c78846195af1f588b77403fc'; +const RAFT_POSITION_MANAGER = "0x5f59b322eb3e16a0c78846195af1f588b77403fc"; +const WRAPPED_RETH = "0xb69e35fb4a157028b92f42655090b984609ae598"; -module.exports = { - ethereum: { - tvl: sumTokensExport({ owner: RAFT_POSITION_MANAGER, tokens: [ADDRESSES.ethereum.WSTETH]}), +function transformAddress(token) { + if (token === WRAPPED_RETH) { + return ADDRESSES.ethereum.RETH; } + + return token; } + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owner: RAFT_POSITION_MANAGER, + tokens: [ADDRESSES.ethereum.WSTETH, WRAPPED_RETH], + transformAddress: transformAddress, + }), + }, +}; From 0d5ea292d5911518a0686aecbf54a0260e063992 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Jun 2023 20:58:09 +0200 Subject: [PATCH 0915/1354] refactor hats --- projects/hats/index.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/projects/hats/index.js b/projects/hats/index.js index 8502acb7b4..78e438c607 100644 --- a/projects/hats/index.js +++ b/projects/hats/index.js @@ -1,5 +1,12 @@ -const { masterChefExports, } = require("../helper/masterchef") +const { sumTokens2 } = require('../helper/unwrapLPs') +const abi = require('../helper/abis/masterchef.json') -const owner = '0x571f39d351513146248AcafA9D0509319A327C4D' // vault address -const token = "0x36f8d0d0573ae92326827c4a82fe4ce4c244cab6" // intentional wrong token TODO: find hats token -module.exports = masterChefExports(owner, "ethereum", token) \ No newline at end of file +const vault = '0x571f39d351513146248AcafA9D0509319A327C4D' // vault address +module.exports = { + ethereum: { + tvl: async (_, _1, _2, { api }) => { + const info = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: vault}) + return sumTokens2({ api, owner: vault, tokens: info.map(i => i.lpToken)}) + } + } +} \ No newline at end of file From a576a0631f7f307f3df75265cfb2c5b76d92bf94 Mon Sep 17 00:00:00 2001 From: Akshay Gupta Date: Wed, 28 Jun 2023 02:04:38 -0400 Subject: [PATCH 0916/1354] savvy adapter (#6578) * savvy adapter * balances not appearing * tvl test passed * address feedback * fix aave yield token --- projects/savvy/contracts.json | 46 +++++++++++++++++++++++++++++++++++ projects/savvy/index.js | 16 ++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 projects/savvy/contracts.json create mode 100644 projects/savvy/index.js diff --git a/projects/savvy/contracts.json b/projects/savvy/contracts.json new file mode 100644 index 0000000000..41cce45ab1 --- /dev/null +++ b/projects/savvy/contracts.json @@ -0,0 +1,46 @@ +{ + "infoAggregator": "0x68D54ff41BA47355b95Bd477Bcf4d5ff4b2c2A59", + "tokenHolders": { + "SavvyPositionManagerBTC": "0x3204d81C73F8100766C1691A67078b16Ec7c142c", + "SavvyPositionManagerETH": "0x5c4eb1909fB21e39Fc45ee753420AeDeBA07F3EF", + "SavvyPositionManagerUSD": "0x36358A1597DB299033b16fda567010D53c0A4EdA", + "YieldStrategyManagerBTC": "0xdC82E20111767f4a2A76A65BD85E41F7859c7b9f", + "YieldStrategyManagerETH": "0x23627eb1C6692Adf25AD79285FDe2bc6bdf12C82", + "YieldStrategyManagerUSD": "0x09Dde6661fd023cf7c3751555347a5cB8687F806", + "SavvySwapWETH": "0xb5231e17596bEAf436A25B018bd63e5b42e14135", + "SavvySwapBTCb": "0x43be188901F529c11337f28bC1F753a878B2F691", + "SavvySwapWBTC": "0x9A3A3ba687Fcb8AFE6367Eff3A5F5A11F51626DA", + "SavvySwapUSDCe": "0xD9565AB01AA30D7Aa2b982b8b1c740480C1C8497", + "SavvySwapUSDT": "0x0E56d518E5d3F5e6cFCfD46095B6B4024541027b", + "SavvySwapDAI": "0x03fA5a7fA80E5EA464559d21B8843E15b7969c07", + "SavvySageBTC": "0x2fcCd0f67d0722f5EB7c1A404DFF0224544155E3", + "SavvySageETH": "0xCd5156Fdd53fD9A0f5bfc37B212DD9c989C10533", + "SavvySageUSD": "0x78A370c3d5fFF93Da53a2B088a117244c52AF857", + "savvyAArbWBTC": "0xDD7e69c478288A9596DECc2230A39c7b922413Dd", + "savvyAArbWETH": "0xCaB3886D48bAd0F749ba7e7c7A255b636c64F937", + "savvyAArbUSDC": "0xCdFF8576683E22621f512fc2E6d347A9D241DAd3", + "JonesAdapterUSDC": "0x9394b6B85bEab8cba1e4aA35FbBB5C31c258224A" + }, + "savvyTokens": { + "SVY": "0x43aB8f7d2A8Dd4102cCEA6b438F6d747b1B9F034", + "svBTC": "0xeEE18334c414A47FB886a7317E1885b2Bfb8c2A6", + "svETH": "0xf7728582002ef82908c8242CF552E969BA863Ffa", + "svUSD": "0xF202Ab403Cd7E90197ec0f010ee897E283037706" + }, + "baseTokens": { + "WETH": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "WBTC": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + "USDCe": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "USDT": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + "DAI": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "BTCb": "0x2297aEbD383787A160DD0d9F71508148769342E3" + }, + "yieldTokens": { + "aArbWBTC": "0x078f358208685046a11C85e8ad32895DED33A249", + "aArbWETH": "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", + "aArbUSDC": "0x625E7708f30cA75bfd92586e17077590C60eb4cD", + "jUSDC": "0xe66998533a1992ecE9eA99cDf47686F4fc8458E0" + } + +} + diff --git a/projects/savvy/index.js b/projects/savvy/index.js new file mode 100644 index 0000000000..72d6b843be --- /dev/null +++ b/projects/savvy/index.js @@ -0,0 +1,16 @@ +const contracts = require("./contracts.json"); +const { sumTokens2 } = require("../helper/unwrapLPs"); + +function tvl(chain) { + return async (timestamp, block, chainBlocks, { api }) => { + const tokens = Object.values(contracts.baseTokens).concat(Object.values(contracts.yieldTokens)); + await sumTokens2({ tokens, api, owners: Object.values(contracts.tokenHolders) }) + }; +} + +module.exports = { + methodology: 'The calculated TVL is the current sum of all base tokens and yield tokens in our contracts.', + arbitrum: { + tvl: tvl("arbitrum") + } +} \ No newline at end of file From b54edc5472b086af694cc1907ff2ef4709acbaaa Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Jun 2023 09:08:54 +0200 Subject: [PATCH 0917/1354] track phoenix dex on solana --- projects/ellipisis-phoenix/index.js | 26 +++++++++++++ projects/helper/utils/solana/layout.js | 2 + .../utils/solana/layouts/phoenix-dex.js | 37 +++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 projects/ellipisis-phoenix/index.js create mode 100644 projects/helper/utils/solana/layouts/phoenix-dex.js diff --git a/projects/ellipisis-phoenix/index.js b/projects/ellipisis-phoenix/index.js new file mode 100644 index 0000000000..de7fc653af --- /dev/null +++ b/projects/ellipisis-phoenix/index.js @@ -0,0 +1,26 @@ +const { sumTokens2, getConnection, decodeAccount, } = require('../helper/solana') +const { PublicKey } = require('@solana/web3.js') + +async function tvl() { + const program = new PublicKey('PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY') + const connection = getConnection(); + const accounts0 = await connection.getProgramAccounts(program, { + filters: [{ + dataSize: 445536 + }] + }) + const accounts1 = await connection.getProgramAccounts(program, { + filters: [{ + dataSize: 1723488 + }] + }) + const accounts = [...accounts0, ...accounts1] + const tokenAccounts = accounts.map(i => decodeAccount('phoenix', i.account)) + .map(i => [i.baseParams.vaultKey, i.quoteParams.vaultKey]).flat() + return sumTokens2({ tokenAccounts, }) +} + +module.exports = { + timetravel: false, + solana: { tvl }, +} diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index a9f3da336f..bf14f62c90 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -1,6 +1,7 @@ const { PublicKey } = require("@solana/web3.js"); const { parseLido, parseLidoValidatorList } = require('./layouts/lido') +const { parsePhoenix } = require('./layouts/phoenix-dex') const { RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, } = require('./layouts/raydium-layout') const { INVESTIN_FUND_DATA, } = require('./layouts/investin-layout') const { MARKET_STATE_LAYOUT_V3, } = require('./layouts/openbook-layout') @@ -49,6 +50,7 @@ const customDecoders = { raydiumCLMM: defaultParseLayout(RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM), raydiumLPStable: defaultParseLayout(RAYDIUM_STABLE_STATE_LAYOUT_V1), fluxbeam: defaultParseLayout(TokenSwapLayout), + phoenix: parsePhoenix, } function decodeAccount(layout, accountInfo) { diff --git a/projects/helper/utils/solana/layouts/phoenix-dex.js b/projects/helper/utils/solana/layouts/phoenix-dex.js new file mode 100644 index 0000000000..9df740147d --- /dev/null +++ b/projects/helper/utils/solana/layouts/phoenix-dex.js @@ -0,0 +1,37 @@ +const { + struct, s32, u8, u16, seq, blob, Layout, bits, u32, publicKey, uint64, u64, uint128, u128, +} = require('./layout-base') + +const TOKEN_PARAMS = [ + u32('decimals'), + u32('vaultBump'), + publicKey('mintKey'), + publicKey('vaultKey'), +] + +// https://github.com/Ellipsis-Labs/phoenix-sdk/blob/4663c670bb8951b4cbf5a062c54de5cd638b231c/typescript/phoenix-sdk/src/types/MarketHeader.ts#L35 +const MARKET_STATE_HEADER = struct([ + + u64('discriminant'), + u64('status'), + + struct([ + u64('bidsSize'), + u64('asksSize'), + u64('numSeats'), + ], 'marketSizeParams'), + struct(TOKEN_PARAMS, 'baseParams'), + u64('baseLotSize'), + struct(TOKEN_PARAMS, 'quoteParams'), + u64('quoteLotSize'), +]); + +const parsePhoenix = (account) => { + const { data } = account; + const buffer = Buffer.from(data.slice(0, MARKET_STATE_HEADER.span)); + return MARKET_STATE_HEADER.decode(buffer); +} + +module.exports = { + parsePhoenix, +} \ No newline at end of file From 05e7c44bd87834f7dc3112fbd07c40c6d6b620ea Mon Sep 17 00:00:00 2001 From: define Date: Wed, 28 Jun 2023 10:08:27 +0100 Subject: [PATCH 0918/1354] savvy treasury --- projects/treasury/savvy.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/treasury/savvy.js diff --git a/projects/treasury/savvy.js b/projects/treasury/savvy.js new file mode 100644 index 0000000000..be6fcceb93 --- /dev/null +++ b/projects/treasury/savvy.js @@ -0,0 +1,17 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x4f54cab19b61138e3c622a0bd671c687481ec030"; +const SVY = "0x43aB8f7d2A8Dd4102cCEA6b438F6d747b1B9F034" +module.exports = treasuryExports({ + arbitrum: { + tokens: [ + nullAddress, + '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', + '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' + ], + owners: [treasury,], + ownTokens: [SVY], + }, +}) \ No newline at end of file From 8da95db9e71c9d2cd79703b0fe8c0c8282ff5912 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Jun 2023 14:58:23 +0530 Subject: [PATCH 0919/1354] Kinza (#6670) * add kinza tvl and borrow data based on standard aave helper the address 0x37D7 is PoolAddressesProviderRegistry from aave-V3 * minor fix --------- Co-authored-by: personal <128370392+MuesliW@users.noreply.github.com> --- projects/kinza/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/kinza/index.js diff --git a/projects/kinza/index.js b/projects/kinza/index.js new file mode 100644 index 0000000000..0315e3b6ec --- /dev/null +++ b/projects/kinza/index.js @@ -0,0 +1,9 @@ +const { aaveExports } = require("../helper/aave"); + +module.exports = { + methodology: + "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending", + bsc: { + ...aaveExports('bsc', '0x37D7Eb561E189895E5c8601Cd03EEAB67C269189', undefined, ['0x09ddc4ae826601b0f9671b9edffdf75e7e6f5d61']), + }, +}; From 8cd037db6beb868abbfa21612fa14c9a35475669 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Jun 2023 11:29:37 +0200 Subject: [PATCH 0920/1354] kinza: minor fix --- projects/kinza/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/kinza/index.js b/projects/kinza/index.js index 0315e3b6ec..d40ac2057c 100644 --- a/projects/kinza/index.js +++ b/projects/kinza/index.js @@ -4,6 +4,8 @@ module.exports = { methodology: "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending", bsc: { - ...aaveExports('bsc', '0x37D7Eb561E189895E5c8601Cd03EEAB67C269189', undefined, ['0x09ddc4ae826601b0f9671b9edffdf75e7e6f5d61']), + ...aaveExports('bsc', '0x37D7Eb561E189895E5c8601Cd03EEAB67C269189', undefined, ['0x09ddc4ae826601b0f9671b9edffdf75e7e6f5d61'], { + v3: true, + }), }, }; From 71782af9e0eb33497931e983e963435a4103c690 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 28 Jun 2023 10:56:14 +0100 Subject: [PATCH 0921/1354] remove movr and harmony chain from templar --- projects/templar/api.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/templar/api.js b/projects/templar/api.js index aa6c1aeb5e..cd075bf1b6 100644 --- a/projects/templar/api.js +++ b/projects/templar/api.js @@ -5,6 +5,7 @@ module.exports = { tvl: index.bsc.tvl, staking: index.bsc.staking, }, + /* moonriver: { tvl: () => 0, staking: index.moonriver.staking, @@ -13,4 +14,5 @@ module.exports = { tvl: () => 0, staking: index.harmony.staking, }, + */ } \ No newline at end of file From 5477f67223aa56368c02b2810c282b910aec941e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Jun 2023 13:13:59 +0200 Subject: [PATCH 0922/1354] add hallmarks --- projects/midas-capital/index.js | 6 ++++++ projects/themis-exchange/index.js | 33 +++++++++++++++++++------------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/projects/midas-capital/index.js b/projects/midas-capital/index.js index e4d2cc09e9..eb015c39e4 100644 --- a/projects/midas-capital/index.js +++ b/projects/midas-capital/index.js @@ -2,6 +2,12 @@ const sdk = require("@defillama/sdk"); const { compoundExportsWithAsyncTransform } = require("../helper/compound"); +module.exports = { + hallmarks: [ + [Math.floor(new Date('2023-06-17')/1e3), 'Protocol was exploited for $600k'], + ] +} + const pools = { bsc: { pools: [ diff --git a/projects/themis-exchange/index.js b/projects/themis-exchange/index.js index af2385ae50..7200b0660b 100644 --- a/projects/themis-exchange/index.js +++ b/projects/themis-exchange/index.js @@ -4,6 +4,11 @@ const config = { arbitrum: { addressProvider: '0x75F805e2fB248462e7817F0230B36E9Fae0280Fc', }, } +module.exports = { + hallmarks: [ + [Math.floor(new Date('2023-06-27')/1e3), 'Protocol was exploited and lost $370k'], + ], +}; Object.keys(config).forEach(chain => { const { addressProvider } = config[chain] module.exports[chain] = { @@ -12,22 +17,24 @@ Object.keys(config).forEach(chain => { const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) return sumTokens2({ api, tokensAndOwners2: [tokens, tokenData.map(i => i.aTokenAddress)], }) }, - borrowed: async (_, _b, _cb, { api, }) => { - const tokens = await api.call({ abi: abi.getReservesList, target: addressProvider }) - const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) - const vDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.variableDebtTokenAddress), }) - const sDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.stableDebtTokenAddress), }) - tokens.forEach((token, i) => { - const variableDebt = vDebtSupply[i] - const stableDebt = sDebtSupply[i] - api.add(token, variableDebt) - api.add(token, stableDebt) - }) - return api.getBalances() - }, + // borrowed, } }) +async function borrowed(_, _b, _cb, { api, }) { + const tokens = await api.call({ abi: abi.getReservesList, target: addressProvider }) + const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) + const vDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.variableDebtTokenAddress), }) + const sDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.stableDebtTokenAddress), }) + tokens.forEach((token, i) => { + const variableDebt = vDebtSupply[i] + const stableDebt = sDebtSupply[i] + api.add(token, variableDebt) + api.add(token, stableDebt) + }) + return api.getBalances() +} + const abi = { "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))", "getReservesList": "address[]:getReservesList", From 48063d67ffed8bb05e4c4037f110b6d8ee63c973 Mon Sep 17 00:00:00 2001 From: 0xjosaphat <120175614+0xjosaphat@users.noreply.github.com> Date: Wed, 28 Jun 2023 13:15:37 +0200 Subject: [PATCH 0923/1354] added new chain polygon_zkevm (#6668) * added new chain polygon_zkevm * added marker for new chain launch on Polygon zkEVM --- projects/swapline/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/swapline/index.js b/projects/swapline/index.js index 166dae27e5..a380e75881 100644 --- a/projects/swapline/index.js +++ b/projects/swapline/index.js @@ -3,6 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const factories = { fantom: '0x640801a6983c109805E928dc7d9794080C21C88E', optimism: '0xd08C98F6409fCAe3E61f3157B4147B6595E60cf3', + polygon_zkevm: '0x5A5c0C4832828FF878CE3ab4fEc44d21200b1496', } async function tvl(_, _b, _cb, { api, }) { @@ -29,7 +30,8 @@ async function tvl(_, _b, _cb, { api, }) { module.exports = { hallmarks: [ - [1682298000,"Launch on Optimism"] + [1682298000,"Launch on Optimism"], + [1687827600,"Launch on Polygon zkEVM"] ], methodology: 'We count the token balances in in different liquidity book contracts', fantom:{ @@ -38,4 +40,7 @@ module.exports = { optimism:{ tvl, }, + polygon_zkevm:{ + tvl, + }, }; \ No newline at end of file From c9dffb403037a05cf636545692958a15e91121a4 Mon Sep 17 00:00:00 2001 From: happywomwom-wombat <129473631+happywomwom-wombat@users.noreply.github.com> Date: Wed, 28 Jun 2023 19:16:01 +0800 Subject: [PATCH 0924/1354] update fusd-pool (#6667) --- projects/wombat-exchange/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 35e049480b..ec1411a7fa 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -42,6 +42,7 @@ module.exports = { jUSDC: "0xc7a6bA5F28993BaDb566007bD2E0CB253c431974", ankrETH: "0xB9bdfE449Da096256Fe7954Ef61A18eE195Db77B", wstETH: "0xe14302040c0A1eb6fB5A4A79EfA46D60029358d9", + fUSD: "0x956454C7BE9318863297309183C79b793D370401", }, }, hallmarks: [ From 781b9e64edd3b32e9ea29ab3981956747a1a6407 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 28 Jun 2023 12:44:42 +0100 Subject: [PATCH 0925/1354] kinza treasury --- projects/treasury/kinza.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/treasury/kinza.js diff --git a/projects/treasury/kinza.js b/projects/treasury/kinza.js new file mode 100644 index 0000000000..ba55a6091e --- /dev/null +++ b/projects/treasury/kinza.js @@ -0,0 +1,13 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x65FDCD48c4807F67429Bdc731d6964f5553CdB36"; + +module.exports = treasuryExports({ + bsc: { + tokens: [ + nullAddress, + '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + ], + owners: [treasury,], + }, +}) \ No newline at end of file From 90236836be504794a0e96798f89b688e27f22416 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Jun 2023 14:59:37 +0200 Subject: [PATCH 0926/1354] lint fix --- projects/themis-exchange/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/themis-exchange/index.js b/projects/themis-exchange/index.js index 7200b0660b..f93a5b4685 100644 --- a/projects/themis-exchange/index.js +++ b/projects/themis-exchange/index.js @@ -22,6 +22,7 @@ Object.keys(config).forEach(chain => { }) async function borrowed(_, _b, _cb, { api, }) { + const { addressProvider } = config[api.chain] const tokens = await api.call({ abi: abi.getReservesList, target: addressProvider }) const tokenData = await api.multiCall({ abi: abi.getReserveData, target: addressProvider, calls: tokens, }) const vDebtSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokenData.map(i => i.variableDebtTokenAddress), }) From eecd26a3e279aee76cb32f62bd74d214b592b37e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Jun 2023 15:49:05 +0200 Subject: [PATCH 0927/1354] track concordium --- projects/concordex-io/index.js | 15 +++++++++++++++ projects/helper/chains.json | 1 + 2 files changed, 16 insertions(+) create mode 100644 projects/concordex-io/index.js diff --git a/projects/concordex-io/index.js b/projects/concordex-io/index.js new file mode 100644 index 0000000000..8f02673e89 --- /dev/null +++ b/projects/concordex-io/index.js @@ -0,0 +1,15 @@ +const { post } = require('../helper/http') + +async function tvl(_, _b, _cb, { api, }) { + const body = {"jsonrpc":"2.0","method":"liquidity_pools_list","params":{"filter":{"sort":"EFFECTIVE_TVL","page":1,"is_desc":true,"search":"","limit":999}},"id":0} + const { result: { pools }} = await post('https://cdex-liquidity-pool.concordex.io/v1/rpc', body) + return { + tether: pools.reduce((acc, i) => acc + +i.tvl, 0) + } +} + +module.exports = { + misrepresentedTokens: true, + timetravel: false, + concordium: { tvl }, +} \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 4ebafa22a2..204efe1b7d 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -30,6 +30,7 @@ "clover", "clv", "comdex", + "concordium", "conflux", "core", "cosmos", From 61aed6047e73efc4f70f62b3c8a928a178b9299d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Jun 2023 15:53:02 +0200 Subject: [PATCH 0928/1354] fix pancakeswap v3 --- projects/helper/uniswapV3.js | 2 +- projects/pancakeswap-v3/index.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/uniswapV3.js b/projects/helper/uniswapV3.js index c8176af9e9..1075b062b8 100644 --- a/projects/helper/uniswapV3.js +++ b/projects/helper/uniswapV3.js @@ -31,7 +31,7 @@ function uniV3Export(config) { onlyArgs: true, }) - return sumTokens2({ api, ownerTokens: logs.map(i => [[i.token0, i.token1], i.pool]), blacklistedTokens, }) + return sumTokens2({ api, ownerTokens: logs.map(i => [[i.token0, i.token1], i.pool]), blacklistedTokens, permitFailure: logs.length > 5000 }) } } }) diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index ad6cb2748f..e537c57980 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -7,6 +7,7 @@ module.exports = uniV3Export({ '0xf8c7f403829cc0f9a37f126a3da41358c232acdf', '0x95e7c70b58790a1cbd377bc403cd7e9be7e0afb1', '0x454f4597582df557c2757403f47d3f3bbb890d43', + '0x121a3fba8456ebce13964363ba35fea00c2aa3d2', ] }, ethereum: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 16950685, }, }) From 3ecfd1bd13e8aabe8e0a505dd4a65a6fad685b7f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 28 Jun 2023 15:12:36 +0100 Subject: [PATCH 0929/1354] pcs polygon_zkevm --- projects/pancake-swap/index.js | 3 +++ projects/pancakeswap-v3/index.js | 1 + 2 files changed, 4 insertions(+) diff --git a/projects/pancake-swap/index.js b/projects/pancake-swap/index.js index 1a82c396f6..1ce33bfabd 100644 --- a/projects/pancake-swap/index.js +++ b/projects/pancake-swap/index.js @@ -82,6 +82,9 @@ module.exports = { staking: stakings(["0x556B9306565093C855AEA9AE92A594704c2Cd59e"], "0x152649ea73beab28c5b49b26eb48f7ead6d4c898", "ethereum"), tvl: getUniTVL({ chain: 'ethereum', factory: '0x1097053Fd2ea711dad45caCcc45EfF7548fCB362', useDefaultCoreAssets: true, }) }, + polygon_zkevm: { + tvl: getUniTVL({ chain: 'polygon_zkevm', factory: '0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E', useDefaultCoreAssets: true, }) + }, aptos: dexExport({ account: '0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa', poolStr: 'swap::TokenPairReserve', diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index e537c57980..91906c7488 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -10,4 +10,5 @@ module.exports = uniV3Export({ '0x121a3fba8456ebce13964363ba35fea00c2aa3d2', ] }, ethereum: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 16950685, }, + polygon_zkevm: { factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865', fromBlock: 750148, }, }) From a3b274890d093fd2f5eef606cb3647d61eaa448b Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Wed, 28 Jun 2023 14:19:25 +0000 Subject: [PATCH 0930/1354] Add TVL Adapter: Equity (#6656) * Add TVL Adapter: Equity Spot * Equity Spot TVL - Using gintoki's method (gmxExports) * TVL Adapter: Equity Using "Equity" as project name for TVL since TVL is not categorizable as Spot or Derivatives. --- projects/equity/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/equity/index.js diff --git a/projects/equity/index.js b/projects/equity/index.js new file mode 100644 index 0000000000..cf3c77cb8b --- /dev/null +++ b/projects/equity/index.js @@ -0,0 +1,8 @@ +// Equity - Central Vaults +const { gmxExports } = require("../helper/gmx"); + +module.exports = { + fantom: { + tvl: gmxExports({ vault: '0x9e4105f9e2284532474f69e65680e440f4c91cb8' }), // Vault 01 + }, +}; From fff8ea6a9c3116a76d37e570a6ed407252fd5142 Mon Sep 17 00:00:00 2001 From: Josh Weintraub Date: Wed, 28 Jun 2023 11:20:45 -0400 Subject: [PATCH 0931/1354] Modify Adapter for Revest Finance (#6661) * tentatively working adapter using multicall * cleaned up and added comments and staking for tokenVaultV2 --- projects/revest/index.js | 212 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 206 insertions(+), 6 deletions(-) diff --git a/projects/revest/index.js b/projects/revest/index.js index 1b788513fc..0cd88d5113 100644 --- a/projects/revest/index.js +++ b/projects/revest/index.js @@ -1,21 +1,48 @@ const { sumTokens2, } = require("../helper/unwrapLPs") const { covalentGetTokens, } = require("../helper/http") const { getUniqueAddresses } = require('../helper/utils') +const sdk = require("@defillama/sdk"); + +const CutoffABI = "function FNFT_CUTOFF() external view returns (uint256)" +const numFNFTSABI = "function fnftsCreated() external view returns (uint256)" +const getFNFTSupplyABI = "function getSupply(uint256 fnftId) external view returns (uint256)" +const getFNFTConfigABI = "function getFNFT(uint256 fnftId) external view returns (tuple(address asset,,,,,,,) memory)" +const balanceOfABI = "function balanceOf(address account) view returns (uint256)" +const getWalletABI = "function getFNFTAddress(uint256 fnftId) external view returns (address)" + +const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' const config = { ethereum: { holder: '0xA81bd16Aa6F6B25e66965A2f842e9C806c0AA11F', revest: '0x120a3879da835a5af037bb2d1456bebd6b54d4ba', + tokenVaultV2: '0xD672f1E3411c23Edbb49e8EB6C6b1564b2BF8E17', + fnftHandler: '0xa07E6a51420EcfCB081917f40423D29529705e8a' }, polygon: { holder: '0x3cCc20d960e185E863885913596b54ea666b2fe7', + tokenVaultV2: '0xd2c6eB7527Ab1E188638B86F2c14bbAd5A431d78', + fnftHandler: '0x6c111d0b0c5f6577de586f7df262f15a6741ddb7' }, fantom: { holder: '0x3923E7EdBcb3D0cE78087ac58273E732ffFb82cf', + tokenVaultV2: '0x0ca61c96d1E0bE5F80f4773be367f4bF2025f224', + fnftHandler: '0xA6f5efC3499d41fF1Eca9d325cfe13C913a85F45' }, avax: { holder: '0x955a88c27709a1EEf4ACa0df0712c67B48240919', + fnftHandler: '0xd6E44901Ee92c85D7f019BdaF05cbD779f36Edaa' + }, + optimism: { + tokenVaultV2: '0x490867a64746AC33f721A778dD8C30BBb0074055', + fnftHandler: '0xA002Dc3E3C163732F4F5e6F941C87b61B5Afca74', + holder: '0x490867a64746AC33f721A778dD8C30BBb0074055' }, + arbitrum: { + tokenVaultV2: '0x209F3F7750d4CC52776e3e243717b3A8aDE413eB', + fnftHandler: '0xd90D465631a1718FDB3eA64C39F41290Addf70da', + holder: '0x209F3F7750d4CC52776e3e243717b3A8aDE413eB' + } } module.exports = { @@ -25,22 +52,195 @@ module.exports = { methodology: "We list all tokens in our vault and sum them together", }; - Object.keys(config).forEach(chain => { - const { holder, revest, } = config[chain] + const { holder, revest, tokenVaultV2, fnftHandler} = config[chain] module.exports[chain] = { tvl: async (_, _b, _1, { api }) => { + let balances = {} + const blacklist = [] if (revest) blacklist.push(revest.toLowerCase()) + blacklist.push(ZERO_ADDRESS.toLowerCase()) + + let owners = [] + + if (tokenVaultV2 != null) { + + let info = await api.batchCall([ + { + target: tokenVaultV2, + abi: CutoffABI, + chain: chain + }, + { + target: fnftHandler, + abi: numFNFTSABI, + chain: chain + } + ]) + + let cutoff = Number(info[0]) + let numFNFTS = Number(info[1]) + + //Build the Multicall to get the supply of each FNFT to check for ones that still exist + let fnftSupplyCalls = [] + for(let x = cutoff; x < numFNFTS; x++) { + fnftSupplyCalls.push({ + target: fnftHandler, + params: x, + }) + } + + //Get the supply of each to determine if an FNFT is still alive by supply > 0 + let fnftSupplys = await sdk.api.abi.multiCall({ + calls: fnftSupplyCalls, + abi: getFNFTSupplyABI, + requery: true, + permitFailure: false, + chain: chain + }) + + //If the FNFT still exists, track it's ID + let aliveFNFTCalls = [] + let aliveFNFTS = {} + fnftSupplys.output.forEach(supply => { + if (supply.output != 0) { + + //Track the supply of the FNFT + aliveFNFTS[supply.input.params[0]] = supply.output + + aliveFNFTCalls.push({ + target: tokenVaultV2, + params: supply.input.params[0], + }) + } + }) + + //Get the asset of the FNFT + let fnftConfigs = await sdk.api.abi.multiCall({ + calls: aliveFNFTCalls, + abi: getFNFTConfigABI, + requery: true, + permitFailure: false, + chain: chain + }) + + + //Link each FNFTId to its underlying token + let tokenAddressesPerFNFT = {} + let walletCalls = [] + fnftConfigs.output.forEach(config => { + if (!blacklist.includes(config.output[0].toLowerCase())) { + tokenAddressesPerFNFT[config.input.params[0]] = config.output[0] + + walletCalls.push({ + target: tokenVaultV2, + params: [config.input.params[0]], + }) + } + + }) + + //Get the wallet for each FNFT + let wallets = await sdk.api.abi.multiCall({ + abi: getWalletABI, + calls: walletCalls, + chain: chain, + requery: true, + permitFailure: false, + }) + + //Prepare Calldata to check the balance of each token in each wallet + let balanceOfMultiCalls = [] + wallets.output.forEach(wallet => { + balanceOfMultiCalls.push({ + target: tokenAddressesPerFNFT[wallet.input.params[0]], + params: wallet.output, + }) + }) + + let multiCallBalances = await sdk.api.abi.multiCall({ + abi: balanceOfABI, + calls: balanceOfMultiCalls, + chain: chain, + requery: true, + permitFailure: false, + }) + + //Record balances, increasing stored amount if necessary + multiCallBalances.output.forEach(balance => { + if (balances[balance.input.target] == undefined) { + balances[balance.input.target] = 0 + } + + balances[balance.input.target] = (Number(balances[balance.input.target]) + Number(balance.output)) + + }) + + } + + //Get values in tokenVaultV1 + owners.push(holder); let tokens = await covalentGetTokens(holder, api.chain) tokens = getUniqueAddresses(tokens).filter(t => !blacklist.includes(t)) // filter out staking and LP tokens - return sumTokens2({ api, owner: holder, tokens, }) + let tokenVaultV1Balances = await sumTokens2({ api, owners: owners, tokens, }) + + //For each key in V1 Balances append to regular balances and return + Object.keys(balances).forEach(key => { + if (tokenVaultV1Balances[key] == undefined) { + tokenVaultV1Balances[`${chain}:${key}`] = 0 + } + tokenVaultV1Balances[`${chain}:${key}`] += balances[key] + }) + return tokenVaultV1Balances; }, } if (revest) module.exports[chain].staking = async (_, _b, _1, { api }) => { - return sumTokens2({ api, owner: holder, tokens: [revest] }) - } -}) + //Get the number of FNFTS for the TokenVaultV2 + let info = await api.batchCall([ + { + target: config[chain].tokenVaultV2, + abi: CutoffABI, + chain: chain + }, + { + target: config[chain].fnftHandler, + abi: numFNFTSABI, + chain: chain + } + ]) + + let cutoff = Number(info[0]) + let numFNFTS = Number(info[1]) + //Build Multicall Data + let calls = [] + for(let x = cutoff; x < numFNFTS; x++) { + calls.push({ + target: config[chain].tokenVaultV2, + params: [x] + }) + } + + //Get the wallet address for each FNFT via multicall + let walletMultiCallList = await sdk.api.abi.multiCall({ + abi: getWalletABI, + calls: calls, + chain: chain, + requery: true, + permitFailure: false + }) + let wallets = [] + walletMultiCallList.output.forEach(wallet => { + // console.log(`output: ${JSON.stringify(wallet)}`) + wallets.push(wallet.output) + }) + + wallets.push(holder); + + //Return the balance of revest in every wallet. + return sumTokens2({ api, owners: wallets, tokens: [revest] }) + } +}) \ No newline at end of file From 15afb96f1a33bbf18e28dd591ee7767114fec355 Mon Sep 17 00:00:00 2001 From: riordanp Date: Wed, 28 Jun 2023 20:06:25 +0100 Subject: [PATCH 0932/1354] Update Mango adapter (#6674) --- projects/mango-markets/index.js | 81 ++++++++++++++++----------------- 1 file changed, 39 insertions(+), 42 deletions(-) diff --git a/projects/mango-markets/index.js b/projects/mango-markets/index.js index 85a45f55eb..4a4f9fbbc1 100644 --- a/projects/mango-markets/index.js +++ b/projects/mango-markets/index.js @@ -1,65 +1,62 @@ -const axios = require('axios') +const axios = require("axios"); +const BigNumber = require("bignumber.js"); -const endpoint = 'https://mango-transaction-log.herokuapp.com/v3/stats/spot_stats_hourly?mango-group=mainnet.1' +const mangoGroupId = "78b8f4cGCwmZ9ysPFMWLaLTkkaYnUjwMJYStWe5RTSSX"; +const statsEndpoint = + "https://api.mngo.cloud/data/v4/token-historical-stats?mango-group=" + + mangoGroupId; +const metadataEndpoint = "https://api.mngo.cloud/data/v4/group-metadata"; // Very inefficient function findClosestToDate(values, date) { - let min = values[0]; + let min = values[values.length - 1]; for (const val of values) { - const valDate = new Date(val.time).getTime() - const minDate = new Date(min.time).getTime() + const valDate = new Date(val.date_hour).getTime(); + const minDate = new Date(min.date_hour).getTime(); if (Math.abs(valDate - date) < Math.abs(minDate - date)) { - min = val + min = val; } } - if(Math.abs(new Date(min.time).getTime()-date) > 24*3600*1000){ + if (Math.abs(new Date(min.date_hour).getTime() - date) > 24 * 3600 * 1000) { return { - totalDeposits: 0, - totalBorrows: 0 - } + total_deposits: 0, + total_borrows: 0, + }; } - return min -} - -const coingeckoIds = { - 'ETH': 'ethereum', - 'BTC': 'bitcoin', - 'SOL': 'solana', - 'SRM': 'serum', - 'USDC': 'usd-coin', - 'USDT': 'tether', - 'MNGO': 'mango-markets', - 'RAY': 'raydium', - 'COPE': 'cope', - 'FTT': 'ftx-token', - 'MSOL': 'msol', - 'BNB': 'binancecoin', - 'AVAX': 'avalanche-wormhole', - 'LUNA': 'terra-luna', - 'GMT': 'stepn', + return min; } - async function tvl(timestamp) { const balances = {}; - const stats = await axios.get(endpoint) - const date = new Date(timestamp * 1000).getTime() - Object.entries(coingeckoIds).map(([mangoId, coingeckoId]) => { - const assetDeposits = stats.data.filter(s => s.name === mangoId) + const stats = await axios.get(statsEndpoint); + const metadata = await axios.get(metadataEndpoint); + + const groupMetadata = metadata.data.groups.find( + (g) => g.publicKey == mangoGroupId + ); + + const date = new Date(timestamp * 1000).getTime(); + groupMetadata.tokens.forEach((token) => { + const assetDeposits = stats.data.filter((s) => s.symbol === token.symbol); if (assetDeposits.length > 0) { - const closestVal = findClosestToDate(assetDeposits, date) - balances[coingeckoId] = closestVal.totalDeposits - closestVal.totalBorrows + const closestVal = findClosestToDate(assetDeposits, date); + const nativeBalance = new BigNumber( + (closestVal.total_deposits * Math.pow(10, token.decimals)).toFixed(0) + ); + balances["solana:" + token.mint] = nativeBalance; } - }) - return balances + }); + + return balances; } module.exports = { + // stats api only returns 30 days of data timetravel: false, solana: { - tvl: () => ({}), + tvl: tvl, }, - hallmarks:[ + hallmarks: [ [1665521360, "Oracle Price Manipulation"], - ], -} + ], +}; From 28a9fcb9fabad146f493581043ad0976ee989e0c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 00:37:31 +0530 Subject: [PATCH 0933/1354] Revert "Update Mango adapter (#6674)" (#6675) This reverts commit 15afb96f1a33bbf18e28dd591ee7767114fec355. --- projects/mango-markets/index.js | 81 +++++++++++++++++---------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/projects/mango-markets/index.js b/projects/mango-markets/index.js index 4a4f9fbbc1..85a45f55eb 100644 --- a/projects/mango-markets/index.js +++ b/projects/mango-markets/index.js @@ -1,62 +1,65 @@ -const axios = require("axios"); -const BigNumber = require("bignumber.js"); +const axios = require('axios') -const mangoGroupId = "78b8f4cGCwmZ9ysPFMWLaLTkkaYnUjwMJYStWe5RTSSX"; -const statsEndpoint = - "https://api.mngo.cloud/data/v4/token-historical-stats?mango-group=" + - mangoGroupId; -const metadataEndpoint = "https://api.mngo.cloud/data/v4/group-metadata"; +const endpoint = 'https://mango-transaction-log.herokuapp.com/v3/stats/spot_stats_hourly?mango-group=mainnet.1' // Very inefficient function findClosestToDate(values, date) { - let min = values[values.length - 1]; + let min = values[0]; for (const val of values) { - const valDate = new Date(val.date_hour).getTime(); - const minDate = new Date(min.date_hour).getTime(); + const valDate = new Date(val.time).getTime() + const minDate = new Date(min.time).getTime() if (Math.abs(valDate - date) < Math.abs(minDate - date)) { - min = val; + min = val } } - if (Math.abs(new Date(min.date_hour).getTime() - date) > 24 * 3600 * 1000) { + if(Math.abs(new Date(min.time).getTime()-date) > 24*3600*1000){ return { - total_deposits: 0, - total_borrows: 0, - }; + totalDeposits: 0, + totalBorrows: 0 + } } - return min; + return min } -async function tvl(timestamp) { - const balances = {}; - const stats = await axios.get(statsEndpoint); - const metadata = await axios.get(metadataEndpoint); +const coingeckoIds = { + 'ETH': 'ethereum', + 'BTC': 'bitcoin', + 'SOL': 'solana', + 'SRM': 'serum', + 'USDC': 'usd-coin', + 'USDT': 'tether', + 'MNGO': 'mango-markets', + 'RAY': 'raydium', + 'COPE': 'cope', + 'FTT': 'ftx-token', + 'MSOL': 'msol', + 'BNB': 'binancecoin', + 'AVAX': 'avalanche-wormhole', + 'LUNA': 'terra-luna', + 'GMT': 'stepn', +} - const groupMetadata = metadata.data.groups.find( - (g) => g.publicKey == mangoGroupId - ); - const date = new Date(timestamp * 1000).getTime(); - groupMetadata.tokens.forEach((token) => { - const assetDeposits = stats.data.filter((s) => s.symbol === token.symbol); +async function tvl(timestamp) { + const balances = {}; + const stats = await axios.get(endpoint) + const date = new Date(timestamp * 1000).getTime() + Object.entries(coingeckoIds).map(([mangoId, coingeckoId]) => { + const assetDeposits = stats.data.filter(s => s.name === mangoId) if (assetDeposits.length > 0) { - const closestVal = findClosestToDate(assetDeposits, date); - const nativeBalance = new BigNumber( - (closestVal.total_deposits * Math.pow(10, token.decimals)).toFixed(0) - ); - balances["solana:" + token.mint] = nativeBalance; + const closestVal = findClosestToDate(assetDeposits, date) + balances[coingeckoId] = closestVal.totalDeposits - closestVal.totalBorrows } - }); - - return balances; + }) + return balances } module.exports = { - // stats api only returns 30 days of data timetravel: false, solana: { - tvl: tvl, + tvl: () => ({}), }, - hallmarks: [ + hallmarks:[ [1665521360, "Oracle Price Manipulation"], - ], -}; + ], +} From 637e3bd49ba88d6c20f6aee05c42b4bbdf3fb625 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 08:28:48 +0200 Subject: [PATCH 0934/1354] refactor flamincome --- projects/flamincome.js | 52 ++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/projects/flamincome.js b/projects/flamincome.js index 654a958cfd..5197226472 100644 --- a/projects/flamincome.js +++ b/projects/flamincome.js @@ -1,32 +1,34 @@ +const { sumTokens2 } = require('./helper/unwrapLPs') + const abis = { balance: "uint256:balance", token: "address:token", } -const sdk = require("@defillama/sdk") - - -async function tvl(ts, block) { - - const contracts = [ - '0x54bE9254ADf8D5c8867a91E44f44c27f0c88e88A', - '0x1a389c381a8242B7acFf0eB989173Cd5d0EFc3e3', - '0x1E9DC5d843731D333544e63B2B2082D21EF78ed3', - ] - const calls = contracts.map(t => ({ target: t })) - const { output: token } = await sdk.api.abi.multiCall({ - block, - calls, - abi: abis.token - }) - const { output: balance } = await sdk.api.abi.multiCall({ - block, - calls, - abi: abis.balance - }) - - const balances = {} - token.forEach((t, i) => sdk.util.sumSingleBalance(balances, t.output, balance[i].output)) - return balances + +const vaults = { + "VaultBaselineUSDT": "0x54bE9254ADf8D5c8867a91E44f44c27f0c88e88A", + "VaultBaselinewBTC": "0x1a389c381a8242B7acFf0eB989173Cd5d0EFc3e3", + "VaultBaselinerenBTC": "0xB0B3442b632175B0b7d9521291c51060722C4e8C", + "VaultBaselinewETH": "0x1E9DC5d843731D333544e63B2B2082D21EF78ed3", + "VaultBaselineTUSD": "0xa322AEa77769666453377CC697fbE4C6390b9942", + "VaultBaselineyCRV": "0x5e7B4de4aC8e319fB2ec4bF9Fa98192346f8C99B", + "VaultBaselinesBTC": "0x681D3261CC6d2A18b59f8B53219b96F06BcEeB69", + "VaultBaselineUSDC": "0x3f7E3d82bdDc28d3Eb04F0d0A51e9Fc82db581f0", + "VaultBaselineyDAI": "0x79A2e8C1120d6B5fBfaBD3f7a39CF8473A635742", + "VaultBaselinecrvBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", + "VaultBaselineDAI": "0x163D457fA8247f1A9279B9fa8eF513de116e4327", + "VaultBaselineUNI-V2[WBTC]": "0x743BC5cc8F52a84fF6e06E47Bc2af5324f5463D6", + "VaultBaselineOKB": "0x272C8dF3E8068952606046c1389fc1e2320FCCfd", + "VaultBaselinecrvRenWBTC": "0x10d0A001EeDC62b2A483EB9DFA0bb021aC61d55b", + "VaultBaselinecrvRenWSBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", +} + +async function tvl(ts, block, _, { api }) { + const contracts =Object.values(vaults) + const tokens = await api.multiCall({ abi: abis.token, calls: contracts}) + const bals = await api.multiCall({ abi: abis.balance, calls: contracts}) + api.addTokens(tokens, bals) + return sumTokens2({ api, resolveLP: true, }) } module.exports = { From 48a4785ccde18d9421aa4a22618a49ccb95bb026 Mon Sep 17 00:00:00 2001 From: define Date: Thu, 29 Jun 2023 11:33:18 +0100 Subject: [PATCH 0935/1354] add bsc chain to marevick --- projects/maverick/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/maverick/index.js b/projects/maverick/index.js index e49d4d275a..c79bd0e4ed 100644 --- a/projects/maverick/index.js +++ b/projects/maverick/index.js @@ -62,4 +62,12 @@ module.exports = maverickTVL({ }, ], }, + bsc: { + factories: [ + { + address: "0x76311728FF86054Ad4Ac52D2E9Ca005BC702f589", + startBlock: 29241050, + }, + ], + }, }); From f43559f006bf32369f12bb00d12ab449fa99d6ea Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Thu, 29 Jun 2023 17:48:23 +0700 Subject: [PATCH 0936/1354] IBCX Adapter (#6657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add ibcx adapter * fixing * handle stToken which not be listed in coingecko * delete * no need handle stJUNO & stSTARS side * recalculate --------- Co-authored-by: Phạm Anh Minh <1phamminh0811@gmail.com> --- projects/ibcx/index.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 projects/ibcx/index.js diff --git a/projects/ibcx/index.js b/projects/ibcx/index.js new file mode 100644 index 0000000000..f56f733457 --- /dev/null +++ b/projects/ibcx/index.js @@ -0,0 +1,42 @@ +const axios = require('axios') + +const contractAddresses = [ + "osmo1yhd9tzp09d833u7ray4pc6wwp72aewtt2xwakszn3lzlf2klnlwscjwhxt", // uibcx + "osmo1fw7wc4x7leyf3keud4zdhdnyaanw0sajudg5sgnr93ydjhzmxk6sx84rxe", + "osmo1xqw2sl9zk8a6pch0csaw78n4swg5ws8t62wc5qta4gnjxfqg6v2qcs243k", // stIBCX + "osmo1fd33mtk06awg0v2hhd6djcjvvzcv90s8u03qujcjnlu87wm65xjs305mr4", + "osmo1w2dqd98hzu4ydku5hhv3f0gc468jdlayrqeqedrjxwrq62m7yekqrgvlyu", + "osmo14klwqgkmackvx2tqa0trtg69dmy0nrg4ntq4gjgw2za4734r5seqjqm4gm", +] + +async function tvl() { + const { api } = arguments[3] + for (const contractAddress of contractAddresses) { + const contractBalances = (await axios.get(`https://lcd.osmosis.zone/cosmos/bank/v1beta1/balances/${contractAddress}`)).data.balances + for (const coin of contractBalances) { + // stUMEE not be listed on coingecko so we convert stUMEE to the corresponding amount of UMEE base on pool stUMEE/UMEE + if (coin.denom == "ibc/02F196DA6FD0917DD5FEA249EE61880F4D941EE9059E7964C5C9B50AF103800F") { + const spotPrice = (await axios.get(`https://lcd.osmosis.zone/osmosis/gamm/v2/pools/1035/prices?base_asset_denom=ibc/67795E528DF67C5606FC20F824EA39A6EF55BA133F4DC79C90A8C47A0901E17C"e_asset_denom=${coin.denom}`)).data.spot_price + coin.denom = "ibc/67795E528DF67C5606FC20F824EA39A6EF55BA133F4DC79C90A8C47A0901E17C" // UMEE + coin.amount = coin.amount * spotPrice + } + // stEVMOS not be listed on coingecko so we convert stEVMOS to the corresponding amount of EVMOS base on pool stEVMOS/EVMOS + if (coin.denom == "ibc/C5579A9595790017C600DD726276D978B9BF314CF82406CE342720A9C7911A01") { + const spotPrice = (await axios.get(`https://lcd.osmosis.zone/osmosis/gamm/v2/pools/922/prices?base_asset_denom=ibc/6AE98883D4D5D5FF9E50D7130F1305DA2FFA0C652D1DD9C123657C6B4EB2DF8A"e_asset_denom=${coin.denom}`)).data.spot_price + coin.denom = "ibc/6AE98883D4D5D5FF9E50D7130F1305DA2FFA0C652D1DD9C123657C6B4EB2DF8A" // EVMOS + coin.amount = coin.amount * spotPrice + } + api.add(coin.denom, coin.amount) + } + + } +} + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + methodology: "Total TVL on vaults", + osmosis: { + tvl, + }, +} \ No newline at end of file From 0f2501efbcade10c261b93866c2dc14a77c78def Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:54:46 +0200 Subject: [PATCH 0937/1354] flamincome: minor fix --- projects/flamincome.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/projects/flamincome.js b/projects/flamincome.js index 5197226472..1adbb4a33f 100644 --- a/projects/flamincome.js +++ b/projects/flamincome.js @@ -8,19 +8,19 @@ const abis = { const vaults = { "VaultBaselineUSDT": "0x54bE9254ADf8D5c8867a91E44f44c27f0c88e88A", "VaultBaselinewBTC": "0x1a389c381a8242B7acFf0eB989173Cd5d0EFc3e3", - "VaultBaselinerenBTC": "0xB0B3442b632175B0b7d9521291c51060722C4e8C", "VaultBaselinewETH": "0x1E9DC5d843731D333544e63B2B2082D21EF78ed3", + "VaultBaselineDAI": "0x163D457fA8247f1A9279B9fa8eF513de116e4327", + "VaultBaselineUNI-V2[WBTC]": "0x743BC5cc8F52a84fF6e06E47Bc2af5324f5463D6", + /* "VaultBaselinerenBTC": "0xB0B3442b632175B0b7d9521291c51060722C4e8C", "VaultBaselineTUSD": "0xa322AEa77769666453377CC697fbE4C6390b9942", "VaultBaselineyCRV": "0x5e7B4de4aC8e319fB2ec4bF9Fa98192346f8C99B", "VaultBaselinesBTC": "0x681D3261CC6d2A18b59f8B53219b96F06BcEeB69", "VaultBaselineUSDC": "0x3f7E3d82bdDc28d3Eb04F0d0A51e9Fc82db581f0", "VaultBaselineyDAI": "0x79A2e8C1120d6B5fBfaBD3f7a39CF8473A635742", "VaultBaselinecrvBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", - "VaultBaselineDAI": "0x163D457fA8247f1A9279B9fa8eF513de116e4327", - "VaultBaselineUNI-V2[WBTC]": "0x743BC5cc8F52a84fF6e06E47Bc2af5324f5463D6", "VaultBaselineOKB": "0x272C8dF3E8068952606046c1389fc1e2320FCCfd", "VaultBaselinecrvRenWBTC": "0x10d0A001EeDC62b2A483EB9DFA0bb021aC61d55b", - "VaultBaselinecrvRenWSBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", + "VaultBaselinecrvRenWSBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", */ } async function tvl(ts, block, _, { api }) { @@ -28,7 +28,6 @@ async function tvl(ts, block, _, { api }) { const tokens = await api.multiCall({ abi: abis.token, calls: contracts}) const bals = await api.multiCall({ abi: abis.balance, calls: contracts}) api.addTokens(tokens, bals) - return sumTokens2({ api, resolveLP: true, }) } module.exports = { From d8dd507935026cd02ffec80074d641fd2e7a5ad0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 13:18:38 +0200 Subject: [PATCH 0938/1354] fix sushiswap --- projects/sushiswap/api.js | 207 ++++++-------------------------------- 1 file changed, 30 insertions(+), 177 deletions(-) diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index c6c21a5794..2cae99e634 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -2,8 +2,6 @@ const { request, gql } = require("graphql-request"); const { toUSDTBalances } = require('../helper/balances'); const { getBlock } = require('../helper/http') const { getUniTVL } = require("../helper/unknownTokens") -const sdk = require('@defillama/sdk'); -const { getChainTransform } = require("../helper/portedTokens"); const graphUrl = 'https://api.thegraph.com/subgraphs/name/zippoxer/sushiswap-subgraph-fork' const graphQuery = gql` @@ -62,187 +60,42 @@ function getChainTVL(chain) { } const factory = '0xc35DADB65012eC5796536bD9864eD8773aBc74C4' +const tvl = getUniTVL({ + factory, useDefaultCoreAssets: true, blacklist: [ + '0xed0b4b0f0e2c17646682fc98ace09feb99af3ade', // RVRS + '0x00598f74DA03489d4fFDb7Fde54db8E3D3AA9a61', // GSHIB + '0xE38928cd467AD7347465048b3637893124187d02', // GSHIB + '0xc0e39cbac6a5c5cdcdf2c1a1c29cbf5917754943', // GSHIB + ], +}) module.exports = { - telos: { - tvl: getUniTVL({ - factory, - chain: 'telos', - useDefaultCoreAssets: true, - }), - }, - palm: { - tvl: getUniTVL({ - factory, - chain: 'palm', - useDefaultCoreAssets: true, - }), - }, - moonriver: { - tvl: getUniTVL({ - factory, - chain: 'moonriver', - useDefaultCoreAssets: true, - }), - }, - celo: { - tvl: getUniTVL({ - factory, - chain: 'celo', - useDefaultCoreAssets: true, - }), - }, - okexchain: { - tvl: getUniTVL({ - factory, - chain: 'okexchain', - useDefaultCoreAssets: true, - }), - }, - arbitrum: { - tvl: getUniTVL({ - factory, - chain: 'arbitrum', - useDefaultCoreAssets: true, - }), - }, - xdai: { - tvl: getUniTVL({ - factory, - chain: 'xdai', - useDefaultCoreAssets: true, - }) - }, - harmony: { - tvl: getUniTVL({ - factory, - chain: 'harmony', - useDefaultCoreAssets: true, - blacklist: [ - '0xed0b4b0f0e2c17646682fc98ace09feb99af3ade', // RVRS - ], - }) - }, - ethereum: { - tvl: eth, - }, - polygon: { - tvl: getUniTVL({ - factory, - chain: 'polygon', - useDefaultCoreAssets: true, - }), - }, - fantom: { - tvl: getUniTVL({ - factory, - chain: 'fantom', - useDefaultCoreAssets: true, - }), - }, - bsc: { - tvl: getUniTVL({ - factory, - chain: 'bsc', - useDefaultCoreAssets: false, - blacklist: [ - '0x00598f74DA03489d4fFDb7Fde54db8E3D3AA9a61', // GSHIB - '0xE38928cd467AD7347465048b3637893124187d02', // GSHIB - '0xc0e39cbac6a5c5cdcdf2c1a1c29cbf5917754943', // GSHIB - ] - }), - }, - heco: { - tvl: getUniTVL({ - factory, - chain: 'heco', - useDefaultCoreAssets: true, - }), - }, - boba: { - tvl: getUniTVL({ - factory, - chain: 'boba', - useDefaultCoreAssets: true, - }), - }, - boba_avax: { - tvl: getUniTVL({ - factory, - chain: 'boba_avax', - useDefaultCoreAssets: true, - }), - }, - boba_bnb: { - tvl: getUniTVL({ - factory, - chain: 'boba_bnb', - useDefaultCoreAssets: true, - }), - }, - avax: { - tvl: getUniTVL({ - factory, - chain: 'avax', - useDefaultCoreAssets: true, - }), - }, + telos: { tvl, }, + palm: { tvl, }, + moonriver: { tvl, }, + celo: { tvl, }, + okexchain: { tvl, }, + arbitrum: { tvl, }, + xdai: { tvl, }, + harmony: { tvl, }, + ethereum: { tvl: eth, }, + polygon: { tvl, }, + fantom: { tvl, }, + bsc: { tvl, }, + heco: { tvl, }, + boba: { tvl, }, + boba_avax: { tvl, }, + boba_bnb: { tvl, }, + avax: { tvl, }, fuse: { - tvl: getUniTVL({ - factory: '0x43eA90e2b786728520e4f930d2A71a477BF2737C', - chain: 'fuse', - useDefaultCoreAssets: true, - }), - }, - arbitrum_nova: { - tvl: getUniTVL({ - chain: 'arbitrum_nova', - useDefaultCoreAssets: true, - factory, - }) + tvl: getUniTVL({ factory: '0x43eA90e2b786728520e4f930d2A71a477BF2737C', useDefaultCoreAssets: true, }), }, + arbitrum_nova: { tvl, }, //moved kava to trident adapter - //kava: { - // tvl: kavaTridentTvl, - //}, + //kava: { // tvl: kavaTridentTvl, //}, } -module.exports.polygon.tvl = getChainTVL('polygon') +// module.exports.polygon.tvl = getChainTVL('polygon') // module.exports.bsc.tvl = getChainTVL('bsc') -module.exports.fantom.tvl = getChainTVL('fantom') +// module.exports.fantom.tvl = getChainTVL('fantom') // module.exports.harmony.tvl = getChainTVL('harmony') - -async function kavaTridentTvl(ts, _b, cb) { - const chain = 'kava' - const graph = 'https://pvt.graph.kava.io/subgraphs/name/sushiswap/trident-kava' - const query = `query get_tvl($block: Int){ - pairs( - block: { number: $block } - size: 1000 - ){ - id - name - type - reserve0 - reserve1 - token0 { - id - } - token1 { - id - } - } - }` - const block = await getBlock(ts, chain, cb, false) - const { pairs } = await request(graph, query, { - block: block - 100, - }) - // const bentoBox = '0xc35DADB65012eC5796536bD9864eD8773aBc74C4' - const balances = {} - const transform = await getChainTransform(chain) - pairs.forEach(i => { - sdk.util.sumSingleBalance(balances, transform(i.token0.id), i.reserve0) - sdk.util.sumSingleBalance(balances, transform(i.token1.id), i.reserve1) - } ) - return balances -} From 1f1da1dca2d6339810a47164b7af2cba0b9d9157 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 13:23:44 +0200 Subject: [PATCH 0939/1354] revert ferro change: cronos get log issue? --- projects/ferro/index.js | 50 +++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/projects/ferro/index.js b/projects/ferro/index.js index 28eb24476d..79da977152 100644 --- a/projects/ferro/index.js +++ b/projects/ferro/index.js @@ -1,10 +1,46 @@ -const { saddleExports } = require('../helper/saddle') +const { sumTokens2 } = require('../helper/unwrapLPs') -const config = { - cronos: { - factory: '0xc4106bba1a8752e54940be71f7bd02c38e64f9e3', - fromBlock: 2539442, - } +const SWAP_3FER_ADDR = '0xe8d13664a42B338F009812Fa5A75199A865dA5cD'; +const SWAP_2FER_ADDR = '0xa34C0fE36541fB085677c36B4ff0CCF5fa2B32d6'; +const SWAP_LCRO_WCRO_ADDRESSES = '0x1578C5CF4f8f6064deb167d1eeAD15dF43185afa'; +const chain = 'cronos' + +const tokens = { + // DAI + "0xF2001B145b43032AAF5Ee2884e456CCd805F677D": [ + SWAP_3FER_ADDR, + ], + // USDC + "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59": [ + SWAP_3FER_ADDR, + SWAP_2FER_ADDR, + ], + // USDT + "0x66e428c3f67a68878562e79A0234c1F83c208770": [ + SWAP_3FER_ADDR, + SWAP_2FER_ADDR, + ], + // LCRO + "0x9fae23a2700feecd5b93e43fdbc03c76aa7c08a6": [ + SWAP_LCRO_WCRO_ADDRESSES, + ], + // WCRO + "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23": [ + SWAP_LCRO_WCRO_ADDRESSES, + ], +}; + +async function tvl(timestamp, ethBlock, {cronos: block}) { + const tokensAndOwners = Object.entries(tokens).map(([token, owners]) => owners.map(owner => [token, owner])).flat() + return sumTokens2({ chain, block, tokensAndOwners }) } -module.exports = saddleExports(config) \ No newline at end of file +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: 'sum of ferro stablecoin pool contracts balance', + start: 1651218360, + cronos: { + tvl, + } +} \ No newline at end of file From f1d21e49ad46c0f8766657944aaa90ada2ca605d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 18:00:45 +0530 Subject: [PATCH 0940/1354] mango-markets-v4 (#6676) * mango-markets-v4 * mango markets: track borrowed --- projects/hadesswap/index.js | 11 +- projects/mango-markets-v4/idl.json | 361 +++++++++++++++++++++++++++++ projects/mango-markets-v4/index.js | 24 ++ 3 files changed, 389 insertions(+), 7 deletions(-) create mode 100644 projects/mango-markets-v4/idl.json create mode 100644 projects/mango-markets-v4/index.js diff --git a/projects/hadesswap/index.js b/projects/hadesswap/index.js index 9d1c783763..527578196e 100644 --- a/projects/hadesswap/index.js +++ b/projects/hadesswap/index.js @@ -1,13 +1,10 @@ -const { getUniTVL } = require('../helper/unknownTokens') - module.exports = { timetravel: false, misrepresentedTokens: true, + hallmarks: [ + [Math.floor(new Date('2023-06-01')/1e3), 'Chain is abandoned'], + ], polis: { - tvl: getUniTVL({ - chain: 'polis', - factory: '0x4523ad2e05c455d0043910c84c83236a6c98b40b', - useDefaultCoreAssets: true, - }) + tvl: () => 0 }, } diff --git a/projects/mango-markets-v4/idl.json b/projects/mango-markets-v4/idl.json new file mode 100644 index 0000000000..c5414b0c9c --- /dev/null +++ b/projects/mango-markets-v4/idl.json @@ -0,0 +1,361 @@ +{ + "version": "0.16.0", + "name": "mango_v4", + "instructions": [], + "accounts": [ + { + "name": "Bank", + "type": { + "kind": "struct", + "fields": [ + { + "name": "group", + "type": "publicKey" + }, + { + "name": "name", + "type": { + "array": [ + "u8", + 16 + ] + } + }, + { + "name": "mint", + "type": "publicKey" + }, + { + "name": "vault", + "type": "publicKey" + }, + { + "name": "oracle", + "type": "publicKey" + }, + { + "name": "oracleConfig", + "type": { + "defined": "OracleConfig" + } + }, + { + "name": "stablePriceModel", + "type": { + "defined": "StablePriceModel" + } + }, + { + "name": "depositIndex", + "type": { + "defined": "I80F48" + } + }, + { + "name": "borrowIndex", + "type": { + "defined": "I80F48" + } + }, + { + "name": "indexedDeposits", + "type": { + "defined": "I80F48" + } + }, + { + "name": "indexedBorrows", + "type": { + "defined": "I80F48" + } + }, + { + "name": "indexLastUpdated", + "type": "u64" + }, + { + "name": "bankRateLastUpdated", + "type": "u64" + }, + { + "name": "avgUtilization", + "type": { + "defined": "I80F48" + } + }, + { + "name": "adjustmentFactor", + "type": { + "defined": "I80F48" + } + }, + { + "name": "util0", + "type": { + "defined": "I80F48" + } + }, + { + "name": "rate0", + "type": { + "defined": "I80F48" + } + }, + { + "name": "util1", + "type": { + "defined": "I80F48" + } + }, + { + "name": "rate1", + "type": { + "defined": "I80F48" + } + }, + { + "name": "maxRate", + "type": { + "defined": "I80F48" + } + }, + { + "name": "collectedFeesNative", + "type": { + "defined": "I80F48" + } + }, + { + "name": "loanOriginationFeeRate", + "type": { + "defined": "I80F48" + } + }, + { + "name": "loanFeeRate", + "type": { + "defined": "I80F48" + } + }, + { + "name": "maintAssetWeight", + "type": { + "defined": "I80F48" + } + }, + { + "name": "initAssetWeight", + "type": { + "defined": "I80F48" + } + }, + { + "name": "maintLiabWeight", + "type": { + "defined": "I80F48" + } + }, + { + "name": "initLiabWeight", + "type": { + "defined": "I80F48" + } + }, + { + "name": "liquidationFee", + "type": { + "defined": "I80F48" + } + }, + { + "name": "dust", + "type": { + "defined": "I80F48" + } + }, + { + "name": "flashLoanTokenAccountInitial", + "type": "u64" + }, + { + "name": "flashLoanApprovedAmount", + "type": "u64" + }, + { + "name": "tokenIndex", + "type": "u16" + }, + { + "name": "bump", + "type": "u8" + }, + { + "name": "mintDecimals", + "type": "u8" + }, + { + "name": "bankNum", + "type": "u32" + }, + { + "name": "minVaultToDepositsRatio", + "type": "f64" + }, + { + "name": "netBorrowLimitWindowSizeTs", + "type": "u64" + }, + { + "name": "lastNetBorrowsWindowStartTs", + "type": "u64" + }, + { + "name": "netBorrowLimitPerWindowQuote", + "type": "i64" + }, + { + "name": "netBorrowsInWindow", + "type": "i64" + }, + { + "name": "borrowWeightScaleStartQuote", + "type": "f64" + }, + { + "name": "depositWeightScaleStartQuote", + "type": "f64" + }, + { + "name": "reduceOnly", + "type": "u8" + }, + { + "name": "forceClose", + "type": "u8" + }, + { + "name": "reserved", + "type": { + "array": [ + "u8", + 2118 + ] + } + } + ] + } + } + ], + "types": [ + + { + "name": "OracleConfig", + "type": { + "kind": "struct", + "fields": [ + { + "name": "confFilter", + "type": { + "defined": "I80F48" + } + }, + { + "name": "maxStalenessSlots", + "type": "i64" + }, + { + "name": "reserved", + "type": { + "array": [ + "u8", + 72 + ] + } + } + ] + } + }, + { + "name": "I80F48", + "type": { + "kind": "struct", + "fields": [ + { + "name": "val", + "type": "i128" + } + ] + } + }, + + { + "name": "StablePriceModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "stablePrice", + "type": "f64" + }, + { + "name": "lastUpdateTimestamp", + "type": "u64" + }, + { + "name": "delayPrices", + "type": { + "array": [ + "f64", + 24 + ] + } + }, + { + "name": "delayAccumulatorPrice", + "type": "f64" + }, + { + "name": "delayAccumulatorTime", + "type": "u32" + }, + { + "name": "delayIntervalSeconds", + "type": "u32" + }, + { + "name": "delayGrowthLimit", + "type": "f32" + }, + { + "name": "stableGrowthLimit", + "type": "f32" + }, + { + "name": "lastDelayIntervalIndex", + "type": "u8" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 7 + ] + } + }, + { + "name": "reserved", + "type": { + "array": [ + "u8", + 48 + ] + } + } + ] + } + } + ], + "events": [], + "errors": [] +} \ No newline at end of file diff --git a/projects/mango-markets-v4/index.js b/projects/mango-markets-v4/index.js new file mode 100644 index 0000000000..6a4ecfd061 --- /dev/null +++ b/projects/mango-markets-v4/index.js @@ -0,0 +1,24 @@ +const { Program } = require("@project-serum/anchor"); +const { getProvider, sumTokens2, } = require("../helper/solana"); +const idl = require('./idl.json') + +async function tvl() { + const provider = getProvider() + const program = new Program(idl, '4MangoMjqJ2firMokCjjGgoK8d4MXcrgL7XJaL3w6fVg', provider) + const banks = await program.account.bank.all() + return sumTokens2({ tokenAccounts: banks.map(i => i.account.vault) }) +} +async function borrowed() { + const { api } = arguments[3] + const provider = getProvider() + const program = new Program(idl, '4MangoMjqJ2firMokCjjGgoK8d4MXcrgL7XJaL3w6fVg', provider) + const banks = await program.account.bank.all() + banks.forEach(({ account: i }) => { + api.add(i.mint.toString(), i.indexedBorrows.val.mul(i.borrowIndex.val).toString() / (2**(48 * 2))) + }) +} + +module.exports = { + timetravel: false, + solana: { tvl, borrowed }, +} From 31b0ec67297d3e7053d2d3cae4149901b5754c82 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 14:49:27 +0200 Subject: [PATCH 0941/1354] update rabbitx --- projects/rabbitx/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/rabbitx/index.js b/projects/rabbitx/index.js index 9f61b3fff8..6391347eec 100644 --- a/projects/rabbitx/index.js +++ b/projects/rabbitx/index.js @@ -3,6 +3,6 @@ const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: sumTokensExport({ owners: ['0xFc7f884DE22a59c0009C91733196b012Aecb8F41', '0x3b8F6D6970a24A58b52374C539297ae02A3c4Ae4'], tokens: [ADDRESSES.ethereum.USDT]}) + tvl: sumTokensExport({ owners: ['0xFc7f884DE22a59c0009C91733196b012Aecb8F41', '0x3b8F6D6970a24A58b52374C539297ae02A3c4Ae4', '0x7fAb440A0251dA67B316d2c0431E3Ccf4520Cd42',], tokens: [ADDRESSES.ethereum.USDT]}) } } From 85db5b3bc54e9072849dfe130bd84b794da1e3f4 Mon Sep 17 00:00:00 2001 From: define Date: Thu, 29 Jun 2023 14:27:55 +0100 Subject: [PATCH 0942/1354] add arbitrum token to vertex --- projects/vertex/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/vertex/index.js b/projects/vertex/index.js index 4dc863f946..5c2f9885e4 100644 --- a/projects/vertex/index.js +++ b/projects/vertex/index.js @@ -16,7 +16,7 @@ module.exports = { arbitrum: { tvl: sumTokensExport({ owners: [config.clearinghouse, config.endpoint], - tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC], + tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.USDC, "0x912ce59144191c1204e64559fe8253a0e49e6548"], }) } } \ No newline at end of file From a13ebf278eb7e07f393724bf92b96db76c103dab Mon Sep 17 00:00:00 2001 From: Key <129726584+KeyFinanceTeam@users.noreply.github.com> Date: Thu, 29 Jun 2023 22:28:29 +0900 Subject: [PATCH 0943/1354] Add key finance (#6620) * Add key finance * Change fromBlock to 2days * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/key/index.js | 89 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 projects/key/index.js diff --git a/projects/key/index.js b/projects/key/index.js new file mode 100644 index 0000000000..b8e2201d51 --- /dev/null +++ b/projects/key/index.js @@ -0,0 +1,89 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { BigNumber, constants } = require('ethers') +const { getBlock } = require('../helper/http') + +const GmxkeyToken = '0xc5369c88440AB1FC842bCc60d3d087Bd459f20e4' +const EsGmxkeyToken = '0x3a924611895F8484194C9a791fceFb6fC07ddb85' +const MpkeyToken = '0x40a03B30D0c4D9e5E71164e041EC28CEe6dD9b36' +const GMXkeyGmxMarket = '0xC2e764eBEa35F079b03522D8C9cf7394De4EE15e' +const EsGMXkeyGmxMarket = '0x48dFF3e21843C2A81a4C5CE55535Ac444B55bDbf' +const MPkeyGmxMarket = '0x09861D732Af36Ee33490A09f24A0a3Cb06e035c1' +const UniswapGmxEthPool = '0x80A9ae39310abf666A87C743d6ebBD0E8C42158E' + +function getMarketPrice(api, fromBlock) { + return async (market, defaultPrice) => { + const logs = await getLogs({ + api, + target: market, + topic: 'TakeOrder(address,uint256,address,address,address,uint256,uint256,uint256,bool,uint256)', + eventAbi: 'event TakeOrder(address indexed account, uint256 indexed orderId, address indexed maker, address token, address currency, uint256 price, uint256 amount, uint256 filled, bool bidAsk, uint256 timestamp)', + onlyArgs: true, + skipCache: true, + fromBlock, + }) + + const targetLogs = logs + .map(({ timestamp, price }) => ({ timestamp, price })) + .sort((a, b) => a.timestamp > b.timestamp ? -1 : 1) + .slice(0, 5) + + const sum = targetLogs.reduce((prev, curr) => { + return prev.add(curr.price) + }, constants.Zero) + + if (sum.eq(constants.Zero)) { + return defaultPrice + } + + return sum.div(targetLogs.length).toNumber() / 10**4 + } +} + +function getTvl(gmxPrice, tokenPrice, totalSupply){ + const tokenSupply = totalSupply / 10**18 + return gmxPrice * tokenPrice * tokenSupply +} + +async function getGmxPrice(slot0) { + const priceSqrt = BigNumber.from(slot0[0]) + const gmxPriceInEth = priceSqrt.pow(2).mul(1000).div(BigNumber.from(2).pow(192)).toNumber() / 1000 + + return 1 / gmxPriceInEth +} + +async function tvl(timestamp, _, chainBlocks, { api }) { + const fromBlock = await getBlock(timestamp - (48 * 60 * 60), 'arbitrum', chainBlocks) + + const slot0 = await api.call({ + abi: 'function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)', + target: UniswapGmxEthPool, + }) + + const [totalSupplyOfGmxkey, totalSupplyOfEsGmxkey, totalSupplyOfMpkey] = await api.multiCall({ + abi: 'erc20:totalSupply', + calls: [GmxkeyToken, EsGmxkeyToken, MpkeyToken], + }) + + const gmxPrice = await getGmxPrice(slot0) + + const marketPrice = getMarketPrice(api, fromBlock) + + const gmxkeyPrice = await marketPrice(GMXkeyGmxMarket, 0.95) + const gmxkeyTvl = getTvl(gmxPrice, gmxkeyPrice, totalSupplyOfGmxkey) + + const esGmxkeyPrice = await marketPrice(EsGMXkeyGmxMarket, 0.5) + const esGmxkeyTvl = getTvl(gmxPrice, esGmxkeyPrice, totalSupplyOfEsGmxkey) + + const mpkeyPrice = await marketPrice(MPkeyGmxMarket, 0.1) + const mpkeyTvl = getTvl(gmxPrice, mpkeyPrice, totalSupplyOfMpkey) + + return { + ethereum: gmxkeyTvl + esGmxkeyTvl + mpkeyTvl, + } +} + +module.exports = { + arbitrum: { + tvl, + } +} From b91bc0fe40e5014c9570d477e10f8d08dc5bda69 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 17:32:07 +0200 Subject: [PATCH 0944/1354] fix broken adapters --- projects/defiedge/index.js | 11 +++-- projects/demeter/index.js | 2 +- projects/glitter-finance/index.js | 49 ++--------------------- projects/helper/utils.js | 2 +- projects/prism/index.js | 21 +++------- projects/sashimiswap/index.js | 7 ++-- projects/sushiswap-kashi/kashi-lending.js | 27 +++++-------- projects/sushiswap-trident/trident.js | 36 ++++------------- projects/sushiswap/api.js | 38 +++++------------- projects/whitewhale/index.js | 28 +------------ 10 files changed, 49 insertions(+), 172 deletions(-) diff --git a/projects/defiedge/index.js b/projects/defiedge/index.js index c1d16d4143..af145be08f 100644 --- a/projects/defiedge/index.js +++ b/projects/defiedge/index.js @@ -1,20 +1,19 @@ -const { GraphQLClient, gql } = require("graphql-request"); +const { graphQuery } = require('../helper/http') var endpoint = "https://api.defiedge.io/graphql"; function tvl(network) { return async (_timestamp, _block, _chainBlocks) => { - var graphQLClient = new GraphQLClient(endpoint); - var query = gql` - query Stats($network: [Network!]) { - stats(network: $network) { + var query = ` + query Stats($network: [Network!] $dex: [Dex!] = [Uniswap, Apeswap, Pancakeswap, Arbidex]) { + stats(network: $network, dex: $dex) { totalValueManaged } } `; - var results = await graphQLClient.request(query, { network: [network] }); + var results = await graphQuery(endpoint, query, { network: [network] }); return { "usd-coin": results.stats.totalValueManaged }; }; diff --git a/projects/demeter/index.js b/projects/demeter/index.js index d9a2c4b99e..c7adf3de82 100644 --- a/projects/demeter/index.js +++ b/projects/demeter/index.js @@ -1,7 +1,7 @@ const { get } = require('../helper/http') async function fetch() { - let results = await get('https://farming-api.cerestoken.io/get-supply-data'); + let results = await get('https://api.deotoken.com/api/demeter/supply-data'); return results.tvl; } diff --git a/projects/glitter-finance/index.js b/projects/glitter-finance/index.js index f533f7f110..10fbbb5e50 100644 --- a/projects/glitter-finance/index.js +++ b/projects/glitter-finance/index.js @@ -1,51 +1,10 @@ - +const ADDRESSES = require('../helper/coreAssets.json') //Solana Helpers -const { - sumTokens2, -} = require("../helper/solana"); - -//Algorand Helpers -const axios = require('axios') -const axiosObj = axios.create({ - baseURL: 'https://algoindexer.algoexplorerapi.io', - timeout: 300000, -}) - +const { sumTokensExport, } = require("../helper/sumTokens") //addresses const SOLANA_VAULT = "7xCU4nvqu3Nz3BBQckKzibp3kBav4xbkuqQ3WM9CBHdJ"; const ALGO_VAULT = "R7VCOR74LCUIFH5WKCCMZOS7ADLSDBQJ42YURFPDT3VGYTVNBNG7AIYTCQ"; -//TVL Calculations: -async function solana_tvl() { - return sumTokens2({ solOwners: [SOLANA_VAULT]}) -} -async function algorand_tvl() { - - const tvlResult = {}; - - //Get algo balance from Algo Vault - const algo_account = await getAlgoBalance(ALGO_VAULT); - var amount_algo = 0; - - //Ensure that the response is valid & set amount - if (algo_account && algo_account.account && algo_account.account.amount) { - amount_algo = algo_account.account.amount / 1000000; //Amount returned in microAlgos - } - - if (!tvlResult["algorand"]) { - tvlResult["algorand"] = Number(amount_algo); - } else { - tvlResult["algorand"] += Number(amount_algo); - } - - return tvlResult; -} - -async function getAlgoBalance(address) { - const response = (await axiosObj.get(`/v2/accounts/${address}`)) - return response.data -} - module.exports = { hallmarks: [ [1661337600, "SPL Vault Migration (V2 Expansion)"], @@ -53,6 +12,6 @@ module.exports = { timetravel: false, methodology: "TVL counts tokens and native assets locked in Glitter-Finance bridge vaults. CoinGecko is used to find the price of tokens in USD.", - solana: { tvl: solana_tvl }, - algorand: { tvl: algorand_tvl}, + solana: { tvl: sumTokensExport({ solOwners: [SOLANA_VAULT], }) }, + algorand: { tvl: sumTokensExport({ owners: [ALGO_VAULT] }) }, }; \ No newline at end of file diff --git a/projects/helper/utils.js b/projects/helper/utils.js index 16b977e7d2..ccb3c9c384 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -52,7 +52,7 @@ function isLP(symbol, token, chain) { // console.log(symbol, chain, token) if (!symbol) return false if (token && blacklisted_LPS.includes(token.toLowerCase()) || symbol.includes('HOP-LP-')) return false - if (chain === 'bsc' && ['OLP', 'DLP', 'MLP', 'LP'].includes(symbol)) return false + if (chain === 'bsc' && ['OLP', 'DLP', 'MLP', 'LP', 'Stable-LP'].includes(symbol)) return false if (chain === 'bsc' && ['WLP', 'FstLP', 'BLP',].includes(symbol)) return true if (chain === 'pulse' && ['PLP',].includes(symbol)) return true if (chain === 'avax' && ['ELP', 'EPT', 'CRL', 'YSL', 'BGL', 'PLP'].includes(symbol)) return true diff --git a/projects/prism/index.js b/projects/prism/index.js index a1d0dc23c5..3e6fef1b27 100644 --- a/projects/prism/index.js +++ b/projects/prism/index.js @@ -1,30 +1,21 @@ -const { fetchURL } = require('../helper/utils') +const { queryContract } = require('../helper/chain/cosmos') async function tvl() { - const res = await fetchURL( - `https://lcd.terra.dev/wasm/contracts/terra1xw3h7jsmxvh6zse74e4099c6gl03fnmxpep76h/store?query_msg=%7B%22state%22%3A%20%7B%7D%7D` - ) + const res = await queryContract({ chain: 'terra2', contract: 'terra188mmw2vsp0yahen3vh2clup543qrttvdzkxl0h9myfuwjj56nausztpegt', data: { state: {}}}) return { - "terra-luna": res.data.result.total_bond_amount / 1e6, + "terra-luna-2": res.total_bond_amount / 1e6, } } -async function staking() { - const staked = await fetchURL( - `https://lcd.terra.dev/wasm/contracts/terra1042wzrwg2uk6jqxjm34ysqquyr9esdgm5qyswz/store?query_msg=%7B%22token_info%22%3A%20%7B%7D%7D` - ) - - return { - "prism-governance-token": Number(staked.data.result.total_supply) / 1e6 - } -} module.exports = { timetravel: false, terra: { + tvl: () => 0, + }, + terra2: { tvl, - staking, }, hallmarks:[ [1651881600, "UST depeg"], diff --git a/projects/sashimiswap/index.js b/projects/sashimiswap/index.js index 600ab661e4..6bc74bbcd7 100644 --- a/projects/sashimiswap/index.js +++ b/projects/sashimiswap/index.js @@ -50,16 +50,17 @@ module.exports = { timetravel: true, doublecounted: false, ethereum: { - tvl: sdk.util.sumChainTvls([ethTvl,ethMarketsTvl]), + // tvl: sdk.util.sumChainTvls([ethTvl,ethMarketsTvl]), + tvl: sdk.util.sumChainTvls([ethMarketsTvl]), staking: staking("0x6ed306DbA10E6c6B20BBa693892Fac21f3B91977", "0xC28E27870558cF22ADD83540d2126da2e4b464c2"), borrowed: borrowedEth, }, bsc: { - tvl: sdk.util.sumChainTvls([bscTvl, bscMarketsTvl]), + tvl: sdk.util.sumChainTvls([bscMarketsTvl]), borrowed: borrowedBsc, }, heco: { - tvl: sdk.util.sumChainTvls([hecoTvl,hecoMarketsTvl]), + tvl: sdk.util.sumChainTvls([hecoMarketsTvl]), borrowed: borrowedHeco, }, methodology: diff --git a/projects/sushiswap-kashi/kashi-lending.js b/projects/sushiswap-kashi/kashi-lending.js index bff62c3ff6..171a303f19 100644 --- a/projects/sushiswap-kashi/kashi-lending.js +++ b/projects/sushiswap-kashi/kashi-lending.js @@ -1,8 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); -const { getBlock } = require("../helper/http"); -const { getChainTransform } = require("../helper/portedTokens"); +const { blockQuery } = require("../helper/http"); const { BigNumber } = require("ethers"); const graphUrls = { @@ -23,7 +20,7 @@ const bentoboxes = { const toAmountAbi ='function toAmount(address token, uint256 share, bool roundUp) view returns (uint256 amount)' -const kashiQuery = gql` +const kashiQuery = ` query get_pairs($block: Int) { kashiPairs(block: { number: $block }, first: 1000) { id @@ -45,16 +42,12 @@ const kashiQuery = gql` `; function kashiLending(chain, borrowed) { - return async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; + return async (timestamp, ethBlock, chainBlocks, {api}) => { const graphUrl = graphUrls[chain]; - let block = await getBlock(timestamp, chain, chainBlocks) - block = block - 100; //subgraphs can be late by few seconds/minutes - const transform = await getChainTransform(chain); // Query graphql endpoint - const { kashiPairs } = await request(graphUrl, kashiQuery, { - block: block, + const { kashiPairs } = await blockQuery(graphUrl, kashiQuery, { + api }); const calls = [] @@ -88,15 +81,13 @@ function kashiLending(chain, borrowed) { } }) - const { output } = await sdk.api.abi.multiCall({ - calls, chain, block, abi: toAmountAbi, target: bentoboxes[chain], + const output = await api.multiCall({ + calls,abi: toAmountAbi, target: bentoboxes[chain], }) - output.forEach(({ input: { params: [token]}, output: balance, success, }) => { - if(success) sdk.util.sumSingleBalance(balances, transform(token), balance) + output.forEach((balance, idx) => { + api.add(calls[idx].params[0], balance) }) - - return balances; }; } diff --git a/projects/sushiswap-trident/trident.js b/projects/sushiswap-trident/trident.js index 05f934a8e7..268baae7e7 100644 --- a/projects/sushiswap-trident/trident.js +++ b/projects/sushiswap-trident/trident.js @@ -1,6 +1,4 @@ -const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); -const { getChainTransform } = require("../helper/portedTokens"); +const { blockQuery } = require('../helper/http') const graphUrls = { polygon: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-polygon", @@ -17,7 +15,7 @@ const graphUrls = { avax: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-avalanche", }; -const tridentQueryWithBlock = gql` +const tridentQueryWithBlock = ` query get_tokens($block: Int) { tokens( block: { number: $block } @@ -33,7 +31,7 @@ const tridentQueryWithBlock = gql` } `; -const tridentQuery = gql` +const tridentQuery = ` query get_tokens { tokens( first: 1000 @@ -49,43 +47,23 @@ const tridentQuery = gql` `; function trident(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; + return async (timestamp, ethBlock, chainBlocks, { api }) => { const graphUrl = graphUrls[chain]; - const block = chainBlocks[chain]; - const transform = await getChainTransform(chain); - // Query graphql endpoint let result; - if (block) { - result = await request(graphUrl, tridentQueryWithBlock, { - block: block - 50, //subgraphs can be late by few seconds/minutes - }); - } else { - result = await request(graphUrl, tridentQuery); - } + result = await blockQuery(graphUrl, tridentQueryWithBlock, { api }); if (chain == "polygon") { //add pools that haven't been migrated to the new router result.tokens.push( - ...(!block - ? await request(graphUrls["polygonOldRouter"], tridentQuery) - : await request( - graphUrls["polygonOldRouter"], - tridentQueryWithBlock, - { - block: block - 50, //subgraphs can be late by few seconds/minutes - } - ) - ).tokens + ...(await blockQuery(graphUrls["polygonOldRouter"], tridentQuery, { api })).tokens ); } result.tokens.forEach((token) => { - sdk.util.sumSingleBalance(balances, transform(token.id), token.liquidity); + api.add(token.id, token.liquidity); }); - return balances; }; } diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index 2cae99e634..85809d040e 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -1,10 +1,9 @@ -const { request, gql } = require("graphql-request"); const { toUSDTBalances } = require('../helper/balances'); -const { getBlock } = require('../helper/http') +const { blockQuery } = require('../helper/http') const { getUniTVL } = require("../helper/unknownTokens") const graphUrl = 'https://api.thegraph.com/subgraphs/name/zippoxer/sushiswap-subgraph-fork' -const graphQuery = gql` +const graphQuery = ` query get_tvl($block: Int) { uniswapFactory( id: "0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac", @@ -15,7 +14,7 @@ query get_tvl($block: Int) { } } `; -const graphQueryPolygon = gql` +const graphQueryPolygon = ` query get_tvl($block: Int) { factory( id: "0xc35dadb65012ec5796536bd9864ed8773abc74c4", @@ -26,33 +25,16 @@ query get_tvl($block: Int) { } `; -async function eth(timestamp, ethBlock, chainBlocks) { - let block = ethBlock - if (block === undefined) { - block = await getBlock(timestamp, 'ethereum', chainBlocks) - } - const { uniswapFactory } = await request( - graphUrl, - graphQuery, - { - block: block - 50, - } - ); +async function eth(timestamp, ethBlock, chainBlocks, { api }) { + const { uniswapFactory } = await blockQuery(graphUrl, graphQuery, { api, }); const usdTvl = Number(uniswapFactory.totalLiquidityUSD) return toUSDTBalances(usdTvl) } -function getChainTVL(chain) { - return async (timestamp, _b, chainBlocks) => { - const block = await getBlock(timestamp, chain, chainBlocks, false) - const { factory } = await request( - 'https://api.thegraph.com/subgraphs/name/sushiswap/exchange-' + chain, - graphQueryPolygon, - { - block: block - 100, - } - ); +function getChainTVL() { + return async (timestamp, _b, chainBlocks, { api }) => { + const { factory } = await blockQuery('https://api.thegraph.com/subgraphs/name/sushiswap/exchange-' + api.chain, graphQueryPolygon, { api, }); const usdTvl = Number(factory.liquidityUSD) return toUSDTBalances(usdTvl) @@ -95,7 +77,7 @@ module.exports = { //kava: { // tvl: kavaTridentTvl, //}, } -// module.exports.polygon.tvl = getChainTVL('polygon') +module.exports.polygon.tvl = getChainTVL('polygon') // module.exports.bsc.tvl = getChainTVL('bsc') -// module.exports.fantom.tvl = getChainTVL('fantom') +module.exports.fantom.tvl = getChainTVL('fantom') // module.exports.harmony.tvl = getChainTVL('harmony') diff --git a/projects/whitewhale/index.js b/projects/whitewhale/index.js index 54e13d7ce9..8fce410596 100644 --- a/projects/whitewhale/index.js +++ b/projects/whitewhale/index.js @@ -1,35 +1,11 @@ -const { fetchURL } = require('../helper/utils') - -const vaults = [ - "https://lcd.terra.dev/wasm/contracts/terra1ec3r2esp9cqekqqvn0wd6nwrjslnwxm7fh8egy/store?query_msg=%7B%22pool_state%22:%7B%7D%7D" -] +const { sumTokens } = require('../helper/chain/cosmos') async function tvl() { - let pool_state = {} - let tvl = {} - await Promise.all(vaults.map(async vault => { - pool_state = await fetchURL(vault) - tvl = Number(pool_state.data.result.total_value_in_ust) / 1e6 - })) - return { - terrausd: tvl - } -} - -async function staking() { - const staked = await fetchURL( - `https://lcd.terra.dev/wasm/contracts/terra12897djskt9rge8dtmm86w654g7kzckkd698608/store?query_msg=%7B%22balance%22:%7B%22address%22:%22terra1xrk6v2tfjrhjz2dsfecj40ps7ayanjx970gy0j%22%7D%7D` - ) - return { - "white-whale": Number(staked.data.result.balance) / 1e6 - } + return sumTokens({chain: 'terra', owner: 'terra1ec3r2esp9cqekqqvn0wd6nwrjslnwxm7fh8egy'}) } module.exports = { - timetravel: false, - misrepresentedTokens: true, terra: { - staking, tvl }, hallmarks:[ From 4eead276edb677dee38bc45482b2a716e9ce10bb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 21:39:08 +0200 Subject: [PATCH 0945/1354] add whitewhale dex --- projects/helper/chain/cosmos.js | 1 + projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 3 +++ projects/helper/tokenMapping.js | 2 +- projects/whitewhale-dex/index.js | 24 ++++++++++++++++++++++++ 5 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 projects/whitewhale-dex/index.js diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 364f92ba85..eeb1f554bf 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -21,6 +21,7 @@ const endPoints = { orai: "https://lcd.orai.io", juno: "https://lcd-juno.cosmostation.io", cronos: "https://lcd-crypto-org.cosmostation.io", + chihuahua: "https://rest.cosmos.directory/chihuahua", injective: "https://lcd-injective.whispernode.com:443", migaloo: "https://migaloo-api.polkachu.com", fxcore: "https://fx-rest.functionx.io", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 204efe1b7d..197caed3fd 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -27,6 +27,7 @@ "carbon", "cardano", "celo", + "chihuahua", "clover", "clv", "comdex", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 48ab7d08b3..44468cc768 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1309,6 +1309,9 @@ "xpla": { "XPLA": "axpla" }, + "chihuahua": { + "HUAHUA": "uhuahua" + }, "pulse": { "WPLS": "0xa1077a294dde1b09bb078844df40758a5d0f9a27", "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 12e31d12a0..4c712f3e80 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -16,7 +16,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList -const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', ] +const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', ] const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui'] const distressedAssts = new Set(Object.values({ diff --git a/projects/whitewhale-dex/index.js b/projects/whitewhale-dex/index.js new file mode 100644 index 0000000000..60ad7f5795 --- /dev/null +++ b/projects/whitewhale-dex/index.js @@ -0,0 +1,24 @@ +const { getFactoryTvl } = require('../terraswap/factoryTvl') + +const factory = { + terra2: "terra1f4cr4sr5eulp3f2us8unu6qv8a5rhjltqsg7ujjx6f2mrlqh923sljwhn3", + juno: "juno14m9rd2trjytvxvu4ldmqvru50ffxsafs8kequmfky7jh97uyqrxqs5xrnx", + injective: "inj1x22q8lfhz7qcvtzs0dakhgx2th64l79kfye5lk", + comdex: "comdex1gurgpv8savnfw66lckwzn4zk7fp394lpe667dhu7aw48u40lj6jswv4mft", + chihuahua: "chihuahua1s8ehad3r9wxyk08ls2nmz8mqh4vlfmaxd2nw0crxwh04t4l5je4s8ljv0j", +} + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + methodology: "Liquidity on the DEX", + hallmarks: [ + [1651881600, "UST depeg"], + ] +} + + +Object.keys(factory).forEach(chain => { + const contract = factory[chain] + module.exports[chain] = { tvl: getFactoryTvl(contract) } +}) \ No newline at end of file From cbe594d5a03e4738abe63ec8ea7032bd0d6058fd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 21:56:56 +0200 Subject: [PATCH 0946/1354] fix defiedge --- projects/defiedge/index.js | 48 +++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/projects/defiedge/index.js b/projects/defiedge/index.js index af145be08f..940ad91806 100644 --- a/projects/defiedge/index.js +++ b/projects/defiedge/index.js @@ -1,31 +1,41 @@ const { graphQuery } = require('../helper/http') -var endpoint = "https://api.defiedge.io/graphql"; - -function tvl(network) { - return async (_timestamp, _block, _chainBlocks) => { - - var query = ` - query Stats($network: [Network!] $dex: [Dex!] = [Uniswap, Apeswap, Pancakeswap, Arbidex]) { - stats(network: $network, dex: $dex) { - totalValueManaged - } +const endpoint = "https://api.defiedge.io/graphql"; +const query = ` + query Stats($network: [Network!] $dex: [Dex!] = [Uniswap, Apeswap, Pancakeswap, Arbidex, Sushiswap]) { + stats(network: $network, dex: $dex) { + totalValueManaged } - `; + } + `; - var results = await graphQuery(endpoint, query, { network: [network] }); +async function tvl() { + const { api } = arguments[3] + let tvl = 0 + const { dexes, network } = config[api.chain] + for (const dex of dexes) { + const results = await graphQuery(endpoint, query, { network: [network], dex: [dex] }) + console.log(results.stats.totalValueManaged, api.chain, dex) + tvl += results.stats.totalValueManaged + } - return { "usd-coin": results.stats.totalValueManaged }; - }; + return { "usd-coin": tvl}; } module.exports = { doublecounted: true, timetravel: false, misrepresentedTokens: true, - ethereum: { tvl: tvl("mainnet") }, - polygon: { tvl: tvl("polygon") }, - arbitrum: { tvl: tvl("arbitrum") }, - optimism: { tvl: tvl("optimism") }, - bsc: {tvl: tvl("bsc")} }; + +const config = { + ethereum: { dexes: ["Uniswap",], network: "mainnet",}, + bsc: { dexes: ["Uniswap", "Apeswap", "Pancakeswap",], network: "bsc",}, + arbitrum: { dexes: ["Uniswap", "Arbidex", "Sushiswap"], network: "arbitrum",}, + optimism: { dexes: ["Uniswap",], network: "optimism",}, + polygon: { dexes: ["Uniswap",], network: "polygon",}, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From b98e2d8af54073fb9c021e0dad9abb4c0b204bfa Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 01:44:39 +0530 Subject: [PATCH 0947/1354] Exactly (#6680) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ exactly: treasury integration * code refactor --------- Co-authored-by: itofarina --- projects/treasury/exactly.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/treasury/exactly.js diff --git a/projects/treasury/exactly.js b/projects/treasury/exactly.js new file mode 100644 index 0000000000..05e34a0f5c --- /dev/null +++ b/projects/treasury/exactly.js @@ -0,0 +1,26 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +/** @type {Record} */ +const config = { + ethereum: { + auditor: "0x310A2694521f75C7B2b64b5937C16CE65C3EFE01", + }, + optimism: { + auditor: "0xaEb62e6F27BC103702E7BC879AE98bceA56f027E", + }, +}; + +Object.entries(config).forEach(([chain, { auditor }]) => { + module.exports[chain] = { + tvl: async (_, __, ___, { api }) => { + const markets = await api.call({ abi: abis.allMarkets, target: auditor, }); + const treasuries = await api.multiCall({ abi: abis.treasury, calls: markets, }) + return sumTokens2({ api, tokens: markets, owners: treasuries, }) + }, + }; +}); + +const abis = { + allMarkets: "function allMarkets() view returns (address[])", + treasury: "function treasury() view returns (address)", +}; From 1a06ab5d68fcac3408f023bd5e5d328159e7e12b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Jun 2023 22:05:09 +0200 Subject: [PATCH 0948/1354] minor fix --- projects/defiedge/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/defiedge/index.js b/projects/defiedge/index.js index 940ad91806..dba0ab92cd 100644 --- a/projects/defiedge/index.js +++ b/projects/defiedge/index.js @@ -15,7 +15,6 @@ async function tvl() { const { dexes, network } = config[api.chain] for (const dex of dexes) { const results = await graphQuery(endpoint, query, { network: [network], dex: [dex] }) - console.log(results.stats.totalValueManaged, api.chain, dex) tvl += results.stats.totalValueManaged } From f39a6cc98554b73256a070d1dfce93a0d8b0febe Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 30 Jun 2023 05:39:53 +0100 Subject: [PATCH 0949/1354] add hallmarks --- projects/Solily/index.js | 3 +++ projects/crown-finance/index.js | 3 +++ projects/jupiterswap/index.js | 3 +++ projects/kasavadex/index.js | 3 +++ projects/kavacave/index.js | 3 +++ projects/kefirswap/index.js | 5 ++++- projects/rubyfinance/index.js | 3 +++ projects/surfswap/index.js | 3 +++ 8 files changed, 25 insertions(+), 1 deletion(-) diff --git a/projects/Solily/index.js b/projects/Solily/index.js index 809ae8c77b..d72e86d38b 100644 --- a/projects/Solily/index.js +++ b/projects/Solily/index.js @@ -1,6 +1,9 @@ module.exports = { + hallmarks: [ + [1655251200, "Rug Pull"] + ], timetravel: false, solana: { tvl: () => 0, diff --git a/projects/crown-finance/index.js b/projects/crown-finance/index.js index b4000e1f1b..def99f5ec1 100644 --- a/projects/crown-finance/index.js +++ b/projects/crown-finance/index.js @@ -1,6 +1,9 @@ module.exports = { + hallmarks: [ + [1655582945, "Rug Pull"] + ], deadFrom: 1655582945, // we suspect that the project has rugged cronos: { tvl: () => ({}), diff --git a/projects/jupiterswap/index.js b/projects/jupiterswap/index.js index 70c4c723db..ae008a5404 100644 --- a/projects/jupiterswap/index.js +++ b/projects/jupiterswap/index.js @@ -1,6 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { + hallmarks: [ + [1660521600, "incentives not given"] + ], misrepresentedTokens: true, methodology: "Factory addresses (0xc08BAEA14C14f25bcafe3e3E05550715505eF3dE for kava) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", kava: { diff --git a/projects/kasavadex/index.js b/projects/kasavadex/index.js index 889b273cf4..0300bb05d9 100644 --- a/projects/kasavadex/index.js +++ b/projects/kasavadex/index.js @@ -1,6 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { + hallmarks: [ + [1660521600, "incentives not given"] + ], misrepresentedTokens: true, methodology: "Factory addresses (0x8F1fD6Ed57B0806FF114135F5b50B5f76e9542F2 for kava) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", kava: { diff --git a/projects/kavacave/index.js b/projects/kavacave/index.js index 53906d3d03..87ee307917 100644 --- a/projects/kavacave/index.js +++ b/projects/kavacave/index.js @@ -76,6 +76,9 @@ async function kavaTvl(timestamp, block, chainBlocks) { } module.exports = { + hallmarks: [ + [1660521600, "incentives not given"] + ], methodology: "Staked LP is counted as TVL.", kava: { diff --git a/projects/kefirswap/index.js b/projects/kefirswap/index.js index a3ab559552..b2d98d9fae 100644 --- a/projects/kefirswap/index.js +++ b/projects/kefirswap/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') // const KEFIR = "0xf5E547C683f5d72D6A463542d3e2cC13C5470D71" @@ -6,6 +6,9 @@ const FACTORY = "0xeEAbe2F15266B19f3aCF743E69105016277756Fb" const WKAVA = ADDRESSES.kava.WKAVA module.exports = { + hallmarks: [ + [1656806400, "Rug Pull"] + ], methodology: "Count TVL as liquidity on the dex", misrepresentedTokens: true, kava: { diff --git a/projects/rubyfinance/index.js b/projects/rubyfinance/index.js index b1cea165c4..f26ba2153f 100644 --- a/projects/rubyfinance/index.js +++ b/projects/rubyfinance/index.js @@ -89,6 +89,9 @@ async function KavaPool2(timestamp, block, chainBlocks) { } module.exports = { + hallmarks: [ + [1660521600, "incentives not given"] + ], methodology: "Pool2 deposits consist of RUBY/USDC, RUBY/KAVA, RSHARE/KAVA and RUBY/RSHARE LP deposits while the staking TVL consists of the RSHARE tokens locked within the Boardroom contract.", kava: { diff --git a/projects/surfswap/index.js b/projects/surfswap/index.js index 945f956c45..2513959972 100644 --- a/projects/surfswap/index.js +++ b/projects/surfswap/index.js @@ -6,6 +6,9 @@ const dexTVL = getUniTVL({ }) module.exports = { + hallmarks: [ + [1660521600, "incentives not given"] + ], misrepresentedTokens: true, kava: { tvl:dexTVL, From f2f4db238bb79c09d9dc92946bb71dab50e0d58f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 30 Jun 2023 06:28:51 +0100 Subject: [PATCH 0950/1354] add hallmarks --- projects/vacusfinance/index.js | 3 +++ projects/velaro/index.js | 3 +++ 2 files changed, 6 insertions(+) diff --git a/projects/vacusfinance/index.js b/projects/vacusfinance/index.js index fda3f91a78..eec2b7b6b1 100644 --- a/projects/vacusfinance/index.js +++ b/projects/vacusfinance/index.js @@ -85,6 +85,9 @@ async function staking(_, _b, { [chain]: block }) { module.exports = { + hallmarks: [ + [1665187200, "Rug Pull"] + ], misrepresentedTokens: true, avax: { tvl, diff --git a/projects/velaro/index.js b/projects/velaro/index.js index f82eb66d54..85ccb5db54 100644 --- a/projects/velaro/index.js +++ b/projects/velaro/index.js @@ -2,6 +2,9 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const chain = 'velas' module.exports = { + hallmarks: [ + [1668556800, "USDV hack"] + ], velas: { tvl: async (_, _b, { [chain]: block }) => { return sumTokens2({ From 1150efd677b3064c10f5561c59940c487734d33a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 07:46:59 +0200 Subject: [PATCH 0951/1354] add support for pegasys v3 on rollux --- package-lock.json | 12 ++++++------ projects/helper/chains.json | 1 + projects/pegasys-v3/index.js | 5 +++++ 3 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 projects/pegasys-v3/index.js diff --git a/package-lock.json b/package-lock.json index 6a48860ffb..56af725e08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.28", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.28.tgz", - "integrity": "sha512-0mqCkiy1pOhZgLCQ/RSdHyuPvchoIoOWj0JIRzFnUAV9uEP6Pck/EqYNB4PpoonZqWAqBDM2cGN1/qj/WQUUtw==", + "version": "4.0.30", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.30.tgz", + "integrity": "sha512-2Z5uQhddHSlcAePFw7d6xBK7JjDXDjmJQiOM7E5/IckaDu7AAD1bm5HScBeTKvBItKAdgDvU48nZeMFj7okImA==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.28", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.28.tgz", - "integrity": "sha512-0mqCkiy1pOhZgLCQ/RSdHyuPvchoIoOWj0JIRzFnUAV9uEP6Pck/EqYNB4PpoonZqWAqBDM2cGN1/qj/WQUUtw==", + "version": "4.0.30", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.30.tgz", + "integrity": "sha512-2Z5uQhddHSlcAePFw7d6xBK7JjDXDjmJQiOM7E5/IckaDu7AAD1bm5HScBeTKvBItKAdgDvU48nZeMFj7okImA==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 197caed3fd..acddf73aea 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -161,6 +161,7 @@ "rei", "reichain", "ripple", + "rollux", "ronin", "rsk", "rvn", diff --git a/projects/pegasys-v3/index.js b/projects/pegasys-v3/index.js new file mode 100644 index 0000000000..e474864b7b --- /dev/null +++ b/projects/pegasys-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + rollux: { factory: '0xeAa20BEA58979386A7d37BAeb4C1522892c74640', fromBlock: 87430, }, +}) From d333c1e7b5a5310bf23f76c6df1130ed6e14eb87 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 09:14:15 +0200 Subject: [PATCH 0952/1354] lint fix --- projects/kavacave/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/kavacave/index.js b/projects/kavacave/index.js index 87ee307917..fd5cfc7840 100644 --- a/projects/kavacave/index.js +++ b/projects/kavacave/index.js @@ -6,7 +6,7 @@ const { getFixBalances } = require("../helper/portedTokens"); const masterChef = { - kava:"0xf17BBB9698b50156Ee437E01e22D7C2080184934" + kava: "0xf17BBB9698b50156Ee437E01e22D7C2080184934" }; const abi = { kava: kavaabi, @@ -14,8 +14,8 @@ const abi = { async function getTokensInMasterChef(time, ethBlock, chainBlocks, chain) { const block = chainBlocks[chain]; - - const transformAddress = (addr) => `${chain}:${addr}`; + + const transformAddress = (addr) => `${chain}:${addr}`; // const transformAddress=(addr)=>kavaFixMapping[addr]; const balances = {}; const poolLength = ( @@ -66,7 +66,7 @@ async function getTokensInMasterChef(time, ethBlock, chainBlocks, chain) { await unwrapUniswapLPs(balances, lpPositions, block, chain, transformAddress); // console.log(balances) - const fixbalances=await getFixBalances(chain); + const fixbalances = await getFixBalances(chain); fixbalances(balances); return balances; } @@ -78,7 +78,7 @@ async function kavaTvl(timestamp, block, chainBlocks) { module.exports = { hallmarks: [ [1660521600, "incentives not given"] - ], + ], methodology: "Staked LP is counted as TVL.", kava: { From b18023e03de532f6c16dd049b8042fd507044ece Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 10:27:30 +0200 Subject: [PATCH 0953/1354] wonderly rugged --- projects/wonderly/index.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/wonderly/index.js b/projects/wonderly/index.js index f08be7318f..7e4c030d20 100644 --- a/projects/wonderly/index.js +++ b/projects/wonderly/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const Abis = require("./abi.json"); const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); @@ -158,3 +158,15 @@ module.exports = { staking: calcArbitrumStakingTvl } }; + +module.exports = { + fantom: { + tvl: () => ({}), + }, + arbitrum: { + tvl: () => ({}), + }, + hallmarks: [ + [Math.floor(new Date('2023-02-15')/1e3), 'Project rugged'], + ], +} \ No newline at end of file From 269802f24f6fd2d69de7283228821f45b0c351f8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 10:34:52 +0200 Subject: [PATCH 0954/1354] track gogopool.com --- projects/gogopool/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/gogopool/index.js diff --git a/projects/gogopool/index.js b/projects/gogopool/index.js new file mode 100644 index 0000000000..ea7a4d75d3 --- /dev/null +++ b/projects/gogopool/index.js @@ -0,0 +1,12 @@ +async function tvl(_, _b, _cb, { api, }) { + const ggAVAX = '0xA25EaF2906FA1a3a13EdAc9B9657108Af7B703e3' + const token = await api.call({ abi: 'address:asset', target: ggAVAX }) + const bal= await api.call({ abi: 'uint256:totalAssets', target: ggAVAX }) + api.add(token, bal) +} + +module.exports = { + avax: { + tvl, + } +} \ No newline at end of file From d38d248ba9c85b90e780eb810738c4d971e9a369 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 10:59:11 +0200 Subject: [PATCH 0955/1354] add ozone chain & lobsterswap --- projects/adenafinance/index.js | 2 +- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ projects/lobsterswap/index.js | 19 +++++++++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 projects/lobsterswap/index.js diff --git a/projects/adenafinance/index.js b/projects/adenafinance/index.js index a8ce5a34a9..a7080d6579 100644 --- a/projects/adenafinance/index.js +++ b/projects/adenafinance/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, harmony: { - tvl: getUniTVL({ factory: '0x44485473431fAF6EFA11D346d1057182d2A0A290', chain: 'harmony', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x44485473431fAF6EFA11D346d1057182d2A0A290', useDefaultCoreAssets: true }), } } diff --git a/projects/helper/chains.json b/projects/helper/chains.json index acddf73aea..9c91550f15 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -141,6 +141,7 @@ "ore", "orai", "osmosis", + "ozone", "palette", "palm", "parallel", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4c712f3e80..0d9deac6eb 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -53,6 +53,9 @@ const fixBalancesTokens = { // }, rpg: { '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, + }, + ozone: { + '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, } } diff --git a/projects/lobsterswap/index.js b/projects/lobsterswap/index.js new file mode 100644 index 0000000000..59d75516bb --- /dev/null +++ b/projects/lobsterswap/index.js @@ -0,0 +1,19 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const ethers = require("ethers") +const { config } = require('@defillama/sdk/build/api'); + +config.setProvider("ozone", new ethers.providers.StaticJsonRpcProvider("https://node1.ozonechain.io", { name: "ozone", chainId: 4000, })) + +module.exports = { + misrepresentedTokens: true, + bsc: { + tvl: getUniTVL({ factory: '0xF936CDe5138282eDC6370F9f5ac70d9a1AFC6F78', useDefaultCoreAssets: true }), + }, + ozone: { + tvl: getUniTVL({ factory: '0xE6E64C926af9ABEc9D819f52c9572AB961CEF6C1', useDefaultCoreAssets: true }), + }, +} + +//https://github.com/lobster-swap +// https://app.lobsterswap.com/ +// https://twitter.com/lobster_swap From 92c15ac59da346532e43934694d0e4097ba993ce Mon Sep 17 00:00:00 2001 From: ZkSwapFinance <126151208+ZkSwapFinance@users.noreply.github.com> Date: Fri, 30 Jun 2023 16:15:13 +0700 Subject: [PATCH 0956/1354] zkSwap Dex on zkSync Era (#6686) * zkswap DEX on zkSync Era * folder name * old folder * new name folder * minor fix --------- Co-authored-by: not found Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkSwap-finance/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/zkSwap-finance/index.js diff --git a/projects/zkSwap-finance/index.js b/projects/zkSwap-finance/index.js new file mode 100644 index 0000000000..ab2df25797 --- /dev/null +++ b/projects/zkSwap-finance/index.js @@ -0,0 +1,13 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + era: { + tvl: getUniTVL({ + factory: '0x3a76e377ED58c8731F9DF3A36155942438744Ce3', + useDefaultCoreAssets: true, + fetchBalances: true, + }) + }, + methodology: "TVL is total liquidity of all liquidity pools." +}; From d75b8b013dd7f37d2f377c6e51788f0874012718 Mon Sep 17 00:00:00 2001 From: "adam.xyz" <66784124+adamxyzxyz@users.noreply.github.com> Date: Fri, 30 Jun 2023 06:48:26 -0400 Subject: [PATCH 0957/1354] arbitrum and eth tvl calcs (#6663) * redo eth tvl calc * add arbitrum tvl * update tvl calculation to be more exact, add borrowed * fractral refactor: use sdk v2 --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fractal-protocol/index.js | 236 ++++++++++++++++++----------- 1 file changed, 147 insertions(+), 89 deletions(-) diff --git a/projects/fractal-protocol/index.js b/projects/fractal-protocol/index.js index fca207358e..2aa46160e3 100644 --- a/projects/fractal-protocol/index.js +++ b/projects/fractal-protocol/index.js @@ -1,98 +1,156 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') -const { userInfo } = require('../pendle/abi.json') +const { userInfo } = require('../pendle/abi.json'); const { sumTokens2 } = require('../helper/unwrapLPs') -const FRACTAL_VAULT_CONTRACT = '0x3EAa4b3e8967c02cE1304C1EB35e8C5409838DFC'; -const YIELD_RESERVE = '0xbA83B569e99B6afc2f2BfE5124460Be6f36a4a56'; -module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: async (_, block) => { - const convexStakingWrapper_tUSD = '0x00Ec5E23B203B8aE16d55C7F601d1c67e45D826c' - const franUnifiedFarm_tUSD = '0xb324b2bd8a3dc55b04111e84d5cce0c3771f8889' - const convexStakingWrapper_alUSD = '0x0def0fac24dead04e2f4b49b5fb50b10478e2fa6' - const franUnifiedFarm_alUSD = '0x711d650cd10df656c2c28d375649689f137005fa' - const { output: tUSDBal } = await sdk.api.abi.call({ - target: franUnifiedFarm_tUSD, params: convexStakingWrapper_tUSD, - abi: abis.lockedLiquidityOf, block, - }) - const { output: alUSDBal } = await sdk.api.abi.call({ - target: franUnifiedFarm_alUSD, params: convexStakingWrapper_alUSD, - abi: abis.lockedLiquidityOf, block, - }) - const { output: convexTUSD } = await sdk.api.erc20.balanceOf({ - target: '0x4a744870fd705971c8c00ac510eac2206c93d5bb', owner: '0xFD1D1339Dbc24496D70DBF7912c07aE2EF71bC2d', block, - }) - const balances = { - '0xB30dA2376F63De30b42dC055C93fa474F31330A5': alUSDBal, - '0x33baeDa08b8afACc4d3d07cf31d49FC1F1f3E893': tUSDBal, - '0x10BE382cfAB53e0aBD093D6801B5e95C6Aedb715': convexTUSD, - } - return sumTokens2({ balances, owners: [FRACTAL_VAULT_CONTRACT, YIELD_RESERVE,], tokens: [ADDRESSES.ethereum.USDC], block, }) - }, - borrowed: async (_, block) => { - const loanContract = '0xf0e3020934450152308e4a84a3c4a5801fcb8d29' - const { output: token } = await sdk.api.abi.call({ block, target: loanContract, abi: abis.principalToken }) - const { output: debt } = await sdk.api.abi.call({ block, target: loanContract, abi: abis.getDebt }) - return { - [token]: debt.principalDebtAmount, - } - } - }, - avax: { - tvl: async (_, _b, { avax: block }) => { - const chain = 'avax' - const strategy = '0x9fea225c7953869e68b8228d2c90422d905e5117' - const nUSDLP = '0xCA87BF3ec55372D9540437d7a86a7750B42C02f4' - const nUSDSwap = '0xed2a7edd7413021d440b09d654f3b87712abab66' - const synapseMiniChef = '0x3a01521f8e7f012eb37eaaf1cb9490a5d9e18249' - const { output: { amount } } = await sdk.api.abi.call({ - target: synapseMiniChef, params: [1, strategy], - abi: userInfo, chain, block, - }) - const { output: price } = await sdk.api.abi.call({ - target: nUSDSwap, abi: abis.getVirtualPrice, chain, block, - }) - return { tether: amount * price / 1e36 } - } - }, - polygon: { - tvl: async (_, _b, { polygon: block }) => { - const chain = 'polygon' - const strategy = '0x894cB5e24DDdD9ececb27831647ae869541Af28F' - const nUSDLP = '0x7479e1bc2f2473f9e78c89b4210eb6d55d33b645' - const nUSDSwap = '0x85fcd7dd0a1e1a9fcd5fd886ed522de8221c3ee5' - const synapseMiniChef = '0x7875af1a6878bda1c129a4e2356a3fd040418be5' - const { output: { amount } } = await sdk.api.abi.call({ - target: synapseMiniChef, params: [1, strategy], - abi: userInfo, chain, block, - }) - const { output: price } = await sdk.api.abi.call({ - target: nUSDSwap, abi: abis.getVirtualPrice, chain, block, - }) - return { tether: amount * price / 1e36 } - } - }, - moonriver: { - tvl: async (_, _b, { moonriver: block }) => { - const chain = 'moonriver' - const muSDCToken = '0xd0670aee3698f66e2d4daf071eb9c690d978bfa8' - const { output: mUSDC } = await sdk.api.erc20.balanceOf({ target: muSDCToken, chain, block, owner: '0x3Bc4D91B0dEdC1e8E93B356a7572f51815fe843B' }) - const { output: exchangeRate } = await sdk.api.abi.call({ - target: muSDCToken, abi: abis.exchangeRateStored, chain, block, - }) - return { - tether: mUSDC/1e8 * exchangeRate/1e16 - } - } - }, -} +//Fractal Addresses ETH +const FRACTAL_VAULT_CONTRACT_ETH = '0x3EAa4b3e8967c02cE1304C1EB35e8C5409838DFC'; +const FRACTAL_YIELD_RESERVE_ETH = '0xbA83B569e99B6afc2f2BfE5124460Be6f36a4a56'; + +//Token Addresses ETH +const USDC_ETH = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; + +//Fractal Addreses ARB +const FRACTAL_VAULT_CONTRACT_ARB = '0x80e1a981285181686a3951B05dEd454734892a09' +const FRACTAL_YIELD_RESERVE_ARB = '0x7d7068fB0398906C693DBFc425584FD5b58c4B60' +const FRACTAL_CHRONOS_POOL = '0x468B6e0f89fa727A47d9512021050797B4875D6d' +const FRACTAL_CAMELOT_POOL = '0xf011B036934b58A619D2822d90ecd726126Efdf2' +const FRACTAL_CAMELOT_NITRO_POOL = '0x5d209809d3284309cC34B9D092f88fFc690de6c2' + +//Token Addresses Arb +const USDC_ARB = '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8' +const USDF_ARB = '0xae48b7C8e096896E32D53F10d0Bf89f82ec7b987' + +//Fractal Addresses All Chains +const FRACTAL_FIREBLOCKS_OWNER = '0x931250786dFd106B1E63C7Fd8f0d854876a45200' + +//Other Addresses +const CHRONOS_GAUGE = '0xDb1759d287d13b409fA80505b623e48cB9cc44Fc' + +//Loans ETH +const ETH_LOANS = [ + '0x60f5A25DfdaBc3BfB3702bCB0142213CEaF1e89a' +] + +//Loans AVAX +const AVAX_LOANS = [ + '0x9297c3B0Eb3DB1Cc72E99cF641CE418a2c3791D9', + '0x1952ae434FA8B5E9c9a1374951e5fd9ae7BD75C7', + '0x9C7629E3bAD32631F3977eF7710415158208E057', + '0x3f2ebE04329B96CBfF6E9911c64fC0c1Fc609d9C', + '0x337dBC3d0C948F8Ef516F6678C3D63d11300Dc10', + '0x595b16Aab6E43664Bf5F2DF0E34fEF1A8e7a2692' +] const abis = { + getTokenPrice: "uint256:getTokenPrice", exchangeRateStored: "uint256:exchangeRateStored", getVirtualPrice: "uint256:getVirtualPrice", principalToken: "address:principalToken", lockedLiquidityOf: "function lockedLiquidityOf(address account) view returns (uint256)", getDebt: "function getDebt() view returns (uint256 interestDebtAmount, uint256 grossDebtAmount, uint256 principalDebtAmount, uint256 interestOwed, uint256 applicableLateFee, uint256 netDebtAmount, uint256 daysSinceFunding, uint256 currentBillingCycle, uint256 minPaymentAmount, uint256 maxPaymentAmount)", -} \ No newline at end of file + userInfo: "function userInfo(address account) view returns (uint256 totalDepositAmount, uint256 rewardDebtToken1, uint256 rewardDebtToken2, uint256 pendingRewardsToken1, uint256 pendingRewardsToken2)" +} + +// Define the function +async function getLoanDebt(loans, api) { + const loanDebts = await api.multiCall({ abi: abis.getDebt, calls: loans }) + loanDebts.map((loanDebt) => api.add(USDC_ETH, loanDebt.principalDebtAmount, { skipChain: true })) +} + +const getEthTvl = async (_, ethBlock, __, { api }) => { + return sumTokens2({ owners: [FRACTAL_YIELD_RESERVE_ETH, FRACTAL_VAULT_CONTRACT_ETH], tokens: [USDC_ETH,], api }) +}; + +const getEthLoans = async (_, ethBlock, __, { api }) => { + return getLoanDebt(ETH_LOANS, api) +} + +const getArbTvl = async (_, _b, { arbitrum: block }, { api }) => { + // const usdfPrice = await api.call({ target: FRACTAL_VAULT_CONTRACT_ARB, abi: abis.getTokenPrice, }) + + const [ + chronosLpBalance, usdcBalanceChronosPool, usdfBalanceChronosPool, usdcBalanceCamelotPool, usdfBalanceCamelotPool, + ] = await api.multiCall({ + abi: 'erc20:balanceOf', calls: [ + { target: CHRONOS_GAUGE, params: FRACTAL_FIREBLOCKS_OWNER }, + { target: USDC_ARB, params: FRACTAL_CHRONOS_POOL }, + { target: USDF_ARB, params: FRACTAL_CHRONOS_POOL }, + { target: USDC_ARB, params: FRACTAL_CAMELOT_POOL }, + { target: USDF_ARB, params: FRACTAL_CAMELOT_POOL }, + ] + }) + + const camelotUserInfo = await api.call({ + target: FRACTAL_CAMELOT_NITRO_POOL, + abi: abis.userInfo, + params: FRACTAL_FIREBLOCKS_OWNER, + }) + + const [ + chronosLpTokenSupply, camelotLpTokenSupply, + ] = await api.multiCall({ + abi: 'erc20:totalSupply', calls: [ + FRACTAL_CHRONOS_POOL, FRACTAL_CAMELOT_POOL, + ] + }) + + api.add(USDC_ARB, usdcBalanceChronosPool * chronosLpBalance / chronosLpTokenSupply) + api.add(USDC_ARB, usdcBalanceCamelotPool * camelotUserInfo.totalDepositAmount / camelotLpTokenSupply) + // api.add(USDF_ARB, usdfBalanceChronosPool * chronosLpBalance / chronosLpTokenSupply) + // api.add(USDF_ARB, usdfBalanceCamelotPool * camelotUserInfo.totalDepositAmount / camelotLpTokenSupply) + + return sumTokens2({ api, tokens: [USDC_ARB], owners: [FRACTAL_YIELD_RESERVE_ARB, FRACTAL_VAULT_CONTRACT_ARB] }) +}; + +const getAvaxTvl = async (_, _b, { avax: block }, { api }) => { + const strategy = '0x9fea225c7953869e68b8228d2c90422d905e5117' + const nUSDLP = '0xCA87BF3ec55372D9540437d7a86a7750B42C02f4' + const nUSDSwap = '0xed2a7edd7413021d440b09d654f3b87712abab66' + const synapseMiniChef = '0x3a01521f8e7f012eb37eaaf1cb9490a5d9e18249' + const { amount } = await api.call({ + target: synapseMiniChef, params: [1, strategy], + abi: userInfo, + }) + const price = await api.call({ + target: nUSDSwap, abi: abis.getVirtualPrice, + }) + const synapseBalance = amount * price / 1e36 + + return { tether: synapseBalance } +} + +const getAvaxLoans = async (_, _b, { avax: block }, { api }) => { + return getLoanDebt(AVAX_LOANS, api) +} + +const getPolygonTvl = async (_, _b, { polygon: block }, { api }) => { + const strategy = '0x894cB5e24DDdD9ececb27831647ae869541Af28F' + const nUSDLP = '0x7479e1bc2f2473f9e78c89b4210eb6d55d33b645' + const nUSDSwap = '0x85fcd7dd0a1e1a9fcd5fd886ed522de8221c3ee5' + const synapseMiniChef = '0x7875af1a6878bda1c129a4e2356a3fd040418be5' + const { amount } = await api.call({ + target: synapseMiniChef, params: [1, strategy], + abi: userInfo, + }) + const price = await api.call({ + target: nUSDSwap, abi: abis.getVirtualPrice, + }) + return { tether: amount * price / 1e36 } +} + + +module.exports = { + ethereum: { + tvl: getEthTvl, + borrowed: getEthLoans + }, + arbitrum: { + tvl: getArbTvl + }, + avax: { + tvl: getAvaxTvl, + borrowed: getAvaxLoans + }, + polygon: { + tvl: getPolygonTvl + } +}; From 2cbe2f0c40848c3cf3d683dfb62d8a5077939ba4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 14:13:58 +0200 Subject: [PATCH 0958/1354] satori: add era --- projects/satori/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/satori/index.js b/projects/satori/index.js index e9ce1ffdae..e7879e2330 100644 --- a/projects/satori/index.js +++ b/projects/satori/index.js @@ -11,4 +11,13 @@ module.exports = { polygon_zkevm: { tvl: sumTokensExport({ owners: WALLET_ADDR, tokens: [USDT_TOKEN_CONTRACT]}), }, + era: { + tvl: sumTokensExport({ + owners: [ + "0x0842b33529516abe86CA8EA771aC4c84FDd0eeE0", + "0x48756b37Fd643bB40F669804730024F02900C476", + ], + tokens: ["0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"], + }), + }, }; From e89aa272b357a999d6adaeecf773fd144fc3bc2a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 30 Jun 2023 21:51:49 +0200 Subject: [PATCH 0959/1354] track exit10.fi --- projects/drachma/index.js | 4 ++-- projects/exit10-fi/index.js | 19 +++++++++++++++++ projects/helper/tokenMapping.js | 2 +- projects/velaro/index.js | 36 +++++++++++++++------------------ 4 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 projects/exit10-fi/index.js diff --git a/projects/drachma/index.js b/projects/drachma/index.js index a1b85c2742..a4fa920a2a 100644 --- a/projects/drachma/index.js +++ b/projects/drachma/index.js @@ -13,11 +13,11 @@ const { tvl: drachmaTvl, borrowed: drachmaBorrowed } = compoundExports( //tvl for drachma app function tvl(chain) { - return async (timestamp, block, chainBlocks) => { + return async (timestamp, block, chainBlocks, { api }) => { const toa = [] toa.push(...contracts[chain].map(c => ([c.token, c.address]))) toa.push(...contracts[chain].map(c => ([contracts.usdc[chain], c.address]))) - return sumTokens2({ chain, tokensAndOwners: toa, block: chainBlocks[chain], resolveLP: true, }) + return sumTokens2({ chain, tokensAndOwners: toa, api, resolveLP: true, }) }; } diff --git a/projects/exit10-fi/index.js b/projects/exit10-fi/index.js new file mode 100644 index 0000000000..c423d159d3 --- /dev/null +++ b/projects/exit10-fi/index.js @@ -0,0 +1,19 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +const config = { + ethereum: { + uniV3Holders: ['0xBFD697f71159Ed85eb1A7fE3520Ad8e5d61017fB'], + }, + arbitrum: { + uniV3Holders: ['0x6aC7197B8C41F8C72a82c49fb219be8ec421dbb0'], + }, +} + +module.exports = {}; + +Object.keys(config).forEach(chain => { + const { uniV3Holders } = config[chain] + module.exports[chain] = { + tvl: sumTokensExport({ owners: uniV3Holders, resolveUniV3: true, }) + } +}) \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 0d9deac6eb..b8ac7ef995 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -55,7 +55,7 @@ const fixBalancesTokens = { '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, }, ozone: { - '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, + // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain } } diff --git a/projects/velaro/index.js b/projects/velaro/index.js index 85ccb5db54..9c9bc2b6a7 100644 --- a/projects/velaro/index.js +++ b/projects/velaro/index.js @@ -1,27 +1,23 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const chain = 'velas' +const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { hallmarks: [ [1668556800, "USDV hack"] ], velas: { - tvl: async (_, _b, { [chain]: block }) => { - return sumTokens2({ - tokensAndOwners: [ - [ADDRESSES.velas.WVLX, '0xbd183a60274289A7c20250a890500D2a37dEf319'], // VLX - ['0xaBf26902Fd7B624e0db40D31171eA9ddDf078351', '0x2Fee5293050FFfC3bd583d59f077e2b4900F57c8'], // WAG - [ADDRESSES.moonriver.ETH, '0x899F26dc6Bc085fb9cB82AAdF25Db8820F272ED4'], // WBTC - ['0x7b714BC5dD176EaA198fe6C07E415a87A40dc858', '0x7171d1E1097d726E5f4BBc8236A8E108E21024e3'], // WAG_VLXVDGT - ['0x72eB7CA07399Ec402c5b7aa6A65752B6A1Dc0C27', '0x1e217990818518Dc37B0fFA2ffE3AA110b02F18c'], // ASTRO - [ADDRESSES.velas._BNB, '0xc0D16c7Cd5Fc18526Dc78Ea530e56129EB979C96'], // BNB - [ADDRESSES.velas.FTM, '0x92C2cA50f74A8Fe36b4DCffB2cc6A274fA61CB34'], // FTM - [ADDRESSES.velas._MATIC, '0xd10f8CD5d56aaa58f59B25C928f372F66899e9B3'], // MATIC - [ADDRESSES.velas.BUSD, '0x4368d9F91C40EA8Ac9F11A4f9289889f56D32Df8'], // BUSD - ], - resolveLP: true, - chain, block - }) - } - }, + tvl: sumTokensExport({ + tokensAndOwners: [ + [ADDRESSES.velas.WVLX, '0xbd183a60274289A7c20250a890500D2a37dEf319'], // VLX + ['0xaBf26902Fd7B624e0db40D31171eA9ddDf078351', '0x2Fee5293050FFfC3bd583d59f077e2b4900F57c8'], // WAG + [ADDRESSES.moonriver.ETH, '0x899F26dc6Bc085fb9cB82AAdF25Db8820F272ED4'], // WBTC + ['0x7b714BC5dD176EaA198fe6C07E415a87A40dc858', '0x7171d1E1097d726E5f4BBc8236A8E108E21024e3'], // WAG_VLXVDGT + ['0x72eB7CA07399Ec402c5b7aa6A65752B6A1Dc0C27', '0x1e217990818518Dc37B0fFA2ffE3AA110b02F18c'], // ASTRO + [ADDRESSES.velas._BNB, '0xc0D16c7Cd5Fc18526Dc78Ea530e56129EB979C96'], // BNB + [ADDRESSES.velas.FTM, '0x92C2cA50f74A8Fe36b4DCffB2cc6A274fA61CB34'], // FTM + [ADDRESSES.velas._MATIC, '0xd10f8CD5d56aaa58f59B25C928f372F66899e9B3'], // MATIC + [ADDRESSES.velas.BUSD, '0x4368d9F91C40EA8Ac9F11A4f9289889f56D32Df8'], // BUSD + ], + resolveLP: true, + }) + } } From 93b3ec395e4f495a09d1a5b587178dcaa63d57e4 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 1 Jul 2023 02:10:27 +0100 Subject: [PATCH 0960/1354] add hallmarks --- projects/apexswap/index.js | 3 +++ projects/echswap/index.js | 3 +++ projects/inuswap/index.js | 3 +++ projects/klaylend/index.js | 5 ++++- projects/kumu-finance/index.js | 3 +++ projects/minerswap/index.js | 3 +++ projects/ohmw/index.js | 3 +++ projects/stabledoin/index.js | 3 +++ projects/zootopia-finance/index.js | 3 +++ 9 files changed, 28 insertions(+), 1 deletion(-) diff --git a/projects/apexswap/index.js b/projects/apexswap/index.js index f7b34fe421..cbadf3ab1e 100644 --- a/projects/apexswap/index.js +++ b/projects/apexswap/index.js @@ -2,6 +2,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, + hallmarks: [ + [1665532800, "Rug Pull"] + ], avax: { tvl: getUniTVL({ factory: '0x21cadeb92c8bbfbef98c3098846f0999209c3a97', diff --git a/projects/echswap/index.js b/projects/echswap/index.js index 83a8b90892..d694c736ce 100644 --- a/projects/echswap/index.js +++ b/projects/echswap/index.js @@ -2,6 +2,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, + hallmarks: [ + [1671062400, "Rug Pull"] + ], echelon: { tvl: getUniTVL({ chain: 'echelon', useDefaultCoreAssets: true, factory: '0xaFd37A86044528010d0E70cDc58d0A9B5Eb03206' }) } diff --git a/projects/inuswap/index.js b/projects/inuswap/index.js index 0a20aeec9a..0d55175478 100644 --- a/projects/inuswap/index.js +++ b/projects/inuswap/index.js @@ -5,6 +5,9 @@ const { const chain = 'dogechain' module.exports = { + hallmarks: [ + [1663200000, "Rug Pull"] + ], dogechain: { tvl: getUniTVL({ chain, diff --git a/projects/klaylend/index.js b/projects/klaylend/index.js index 983265dded..e0eb6d0f59 100644 --- a/projects/klaylend/index.js +++ b/projects/klaylend/index.js @@ -9,4 +9,7 @@ module.exports = masterchefExports({ masterchef: contract, nativeToken: kld, useDefaultCoreAssets: true, -}) \ No newline at end of file +}) +module.exports.hallmarks = [ + [1662336000, "Rug Pull"] +] \ No newline at end of file diff --git a/projects/kumu-finance/index.js b/projects/kumu-finance/index.js index 8de174d576..f2c9a5ed31 100644 --- a/projects/kumu-finance/index.js +++ b/projects/kumu-finance/index.js @@ -41,6 +41,9 @@ async function staking(_, _b, { [chain]: block }) { } module.exports = { + hallmarks: [ + [1662336000, "Rug Pull"] + ], klaytn: { tvl, staking } diff --git a/projects/minerswap/index.js b/projects/minerswap/index.js index e294da30ad..607a2c39ce 100644 --- a/projects/minerswap/index.js +++ b/projects/minerswap/index.js @@ -1,3 +1,6 @@ const { uniTvlExport } = require('../helper/unknownTokens') +module.exports.hallmarks=[ + [1668124800, "Rug Pull"] +], module.exports = uniTvlExport('ethpow', '0x91836d77af0a5fda36c5a1f3c11dbc7766de4d03', undefined, undefined, { useDefaultCoreAssets: true, hasStablePools: true, }) diff --git a/projects/ohmw/index.js b/projects/ohmw/index.js index 468da5f5d4..92a987cc95 100644 --- a/projects/ohmw/index.js +++ b/projects/ohmw/index.js @@ -3,6 +3,9 @@ const { ohmTvl } = require('../helper/ohm') const { getFixBalancesSync } = require('../helper/portedTokens') module.exports= { + hallmarks: [ + [1670457600, "Rug Pull"] + ], ...ohmTvl("0xE0Fe9Af0208ba444F81eDF348F23bd1A91Dc395E", [ ["0x11bbB41B3E8baf7f75773DB7428d5AcEe25FEC75", false], // USDC [ADDRESSES.ethereum.WETH, false], // WETH diff --git a/projects/stabledoin/index.js b/projects/stabledoin/index.js index b0ca812c78..3b72f821e3 100644 --- a/projects/stabledoin/index.js +++ b/projects/stabledoin/index.js @@ -5,6 +5,9 @@ const factory = "0x7bbAB21475d99C09a92fc4B93Fa2DDa987DbA17c" module.exports = { misrepresentedTokens: true, + hallmarks: [ + [1666656000, "Rug Pull"] + ], dogechain: { tvl: sdk.util.sumChainTvls([ getUniTVL({ chain: 'dogechain', factory, useDefaultCoreAssets: true, }), diff --git a/projects/zootopia-finance/index.js b/projects/zootopia-finance/index.js index 599b5d3511..19ae5d2884 100644 --- a/projects/zootopia-finance/index.js +++ b/projects/zootopia-finance/index.js @@ -15,6 +15,9 @@ async function tvl(timestamp, ethereumBlock, { bsc: block }) { } module.exports = { + hallmarks: [ + [1667174400, "Rug Pull"] + ], bsc: { tvl, }, From d6e262ec60a385e569dcc12eb9d2b8aecfff56a1 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 1 Jul 2023 04:46:07 +0100 Subject: [PATCH 0961/1354] add hallmarks --- projects/CthulhuFinance/index.js | 3 +++ projects/ZukeSwap/index.js | 3 +++ projects/deridex/index.js | 3 +++ projects/dinosaur-finance/index.js | 3 +++ projects/manifesto/index.js | 3 +++ projects/mosquitos-finance/index.js | 3 +++ projects/palmaswap/index.js | 5 ++++- projects/sohei/index.js | 3 +++ projects/sugarswap/index.js | 5 ++++- projects/syrupfinance/index.js | 3 +++ projects/y2b-finance/index.js | 3 +++ 11 files changed, 35 insertions(+), 2 deletions(-) diff --git a/projects/CthulhuFinance/index.js b/projects/CthulhuFinance/index.js index 4ca6bb5802..7d293df098 100644 --- a/projects/CthulhuFinance/index.js +++ b/projects/CthulhuFinance/index.js @@ -12,6 +12,9 @@ function vaultTvl(vaults) { } module.exports = { + hallmarks: [ + [1679788800, "Rug Pull"] + ], optimism: { tvl: vaultTvl([ "0xF6a6C4573099E6F6b9D8E1186a2C089B4d0fDf91", diff --git a/projects/ZukeSwap/index.js b/projects/ZukeSwap/index.js index af95e1bd6f..6d16f07a58 100644 --- a/projects/ZukeSwap/index.js +++ b/projects/ZukeSwap/index.js @@ -1,6 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { + hallmarks: [ + [1680307200, "Rug Pull"] + ], misrepresentedTokens: true, loop: { tvl: getUniTVL({ diff --git a/projects/deridex/index.js b/projects/deridex/index.js index 1cd419b751..20af05f2bd 100644 --- a/projects/deridex/index.js +++ b/projects/deridex/index.js @@ -24,6 +24,9 @@ async function tvl() { } module.exports = { + hallmarks: [ + [1675900800, "Project shuts down"] + ], timetravel: false, doublecounted: true, misrepresentedTokens: true, diff --git a/projects/dinosaur-finance/index.js b/projects/dinosaur-finance/index.js index 198a1b20b7..ee0068e012 100644 --- a/projects/dinosaur-finance/index.js +++ b/projects/dinosaur-finance/index.js @@ -21,6 +21,9 @@ async function tvl(_, _b, _c, { api }) { } module.exports = { + hallmarks: [ + [1675814400, "Rug Pull"] + ], arbitrum: { tvl, } diff --git a/projects/manifesto/index.js b/projects/manifesto/index.js index 7e0052c149..41468a3c68 100644 --- a/projects/manifesto/index.js +++ b/projects/manifesto/index.js @@ -5,6 +5,9 @@ const lps = [ ] module.exports = { + hallmarks: [ + [1676332800, "Rug Pull"] + ], misrepresentedTokens: true, canto: { tvl: sumTokensExport({ diff --git a/projects/mosquitos-finance/index.js b/projects/mosquitos-finance/index.js index 698f72ac45..a5c8a930b5 100644 --- a/projects/mosquitos-finance/index.js +++ b/projects/mosquitos-finance/index.js @@ -137,6 +137,9 @@ async function staking() { } module.exports = { + hallmarks: [ + [1678320000, "Rug Pull"] + ], timetravel: false, aptos: { tvl, diff --git a/projects/palmaswap/index.js b/projects/palmaswap/index.js index fbcaf19e97..6cacfa927a 100644 --- a/projects/palmaswap/index.js +++ b/projects/palmaswap/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') const uniTvl = getUniTVL({ factory: '0xb8b9a4d9beE1fB41b03edfa47640b1dadF49EDd2', useDefaultCoreAssets: true, }) @@ -8,6 +8,9 @@ const weth = ADDRESSES.core.WCORE module.exports = { misrepresentedTokens: true, + hallmarks: [ + [1679356800, "Rug Pull"] + ], core: { tvl: sdk.util.sumChainTvls([uniTvl, staking({ owners: [masterchef], diff --git a/projects/sohei/index.js b/projects/sohei/index.js index 3bb9e33f21..4882d9f116 100644 --- a/projects/sohei/index.js +++ b/projects/sohei/index.js @@ -5,5 +5,8 @@ const ceth = "0x685d1f1a83ff64e75fe882e7818e4ad9173342ca"; const chain = "arbitrum"; module.exports = { + hallmarks: [ + [1680480000, "Team out of funds announced"] + ], arbitrum: compoundExports('0x9f750cf10034f3d7a18221aec0bddab7fc6f32ba', chain, ceth, nullAddress, undefined, undefined, { blacklistedTokens: ['0x6e002cb9bf8c17409eeb6c593ef6548faddd2985']}), }; \ No newline at end of file diff --git a/projects/sugarswap/index.js b/projects/sugarswap/index.js index 5d565e21ce..23df7132dc 100644 --- a/projects/sugarswap/index.js +++ b/projects/sugarswap/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL, staking } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') const uniTvl = getUniTVL({ factory: '0x1486397B3C0e6fEB8c483faD2F03E8c404cAEDe7', useDefaultCoreAssets: true }) @@ -7,6 +7,9 @@ const sugar = '0xd3ccBF3867FF0204730173eB4cad3C4B5fd07c69' const weth = ADDRESSES.arbitrum.WETH module.exports = { + hallmarks: [ + [1673827200, "Rug Pull"] + ], misrepresentedTokens: true, arbitrum: { tvl: sdk.util.sumChainTvls([uniTvl, staking({ diff --git a/projects/syrupfinance/index.js b/projects/syrupfinance/index.js index b76635caeb..d053dd4752 100644 --- a/projects/syrupfinance/index.js +++ b/projects/syrupfinance/index.js @@ -8,6 +8,9 @@ const srxToken = "0xdef49c195099e30e41b2df7dad55e0bbbe60a0c5"; module.exports = { + hallmarks: [ + [1675209600, "Rug Pull"] + ], bsc: { staking: staking(bscStaking, srxToken, "bsc", undefined, undefined), tvl: gmxExports({ vault: bscVault }) diff --git a/projects/y2b-finance/index.js b/projects/y2b-finance/index.js index 3bc97660a3..e90457e14a 100644 --- a/projects/y2b-finance/index.js +++ b/projects/y2b-finance/index.js @@ -22,6 +22,9 @@ async function tvl(timestamp, _b, chainBlocks, { api }) { module.exports = { + hallmarks: [ + [1673913600, "Rug Pull"] + ], ethereum: { tvl, // staking: sumTokensExport({ owners: [], tokens: ['0xF9C12B27cE5058ab98ce11BD53900f84E18C0650']}) From 13f1bfbcc148ef60b5191f7ebdea1abdb7c0a05e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 1 Jul 2023 10:48:24 +0200 Subject: [PATCH 0962/1354] track https://ghastprotocol.com/ --- projects/ghast/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/ghast/index.js diff --git a/projects/ghast/index.js b/projects/ghast/index.js new file mode 100644 index 0000000000..35abcaeb6d --- /dev/null +++ b/projects/ghast/index.js @@ -0,0 +1,29 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + arbitrum: { + lendingPools: { + BTC: '0x711b36a726486bd910a819eb7930e60a1afcac7b', + USDC: '0xb8bc618e49201B68C1D594aA458aeBFF22B03c35', + WETH: '0x5d99d1d2e9f3a5f3d8f5dd5ce533b3635590c384', + } + } +} + +Object.keys(config).forEach(chain => { + const { lendingPools } = config[chain] + const pools = Object.values(lendingPools) + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const tokens = await api.multiCall({ abi: 'address:TOKEN', calls: pools}) + const gmdTokens = await api.multiCall({ abi: 'address:gmdTOKEN', calls: pools}) + const ownerTokens = pools.map((v, i) => [[tokens[i],gmdTokens[i],], v]) + return sumTokens2({ api, ownerTokens, }) + }, + /* borrowed: async (_, _b, _cb, { api, }) => { + const tokens = await api.multiCall({ abi: 'address:gmdTOKEN', calls: pools}) + const bals = await api.multiCall({ abi: 'uint256:totalBorrows', calls: pools}) + api.addTokens(tokens, bals) + }, */ + } +}) \ No newline at end of file From 3b2ebe4498634c2146b0bd0cddda8adbefaa0240 Mon Sep 17 00:00:00 2001 From: Michael Otis <34221002+michaelotis@users.noreply.github.com> Date: Sat, 1 Jul 2023 04:11:37 -0500 Subject: [PATCH 0963/1354] Update Vela Exchange TVL/Staking metrics (#6689) * Update Vela TVL/Staking * Remove async-retry * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/vela-exchange/index.js | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/projects/vela-exchange/index.js b/projects/vela-exchange/index.js index 9b862c9527..47facb0950 100644 --- a/projects/vela-exchange/index.js +++ b/projects/vela-exchange/index.js @@ -1,13 +1,36 @@ const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking") +const { graphQuery } = require('../helper/http') + +const VELA = '0x088cd8f5eF3652623c22D48b1605DCfE860Cd704' + +const endpoint = "https://api.thegraph.com/subgraphs/name/velaexchange/vela-exchange-official" +async function staking_() { + const { api } = arguments[3] + + const query = ` + query { + poolInfos(where: { + id: "all" + }) { + pid1 + pid2 + pid3 + } + } + `; + const graphRes = (await graphQuery(endpoint, query)).poolInfos.find(x => true); + api.add(VELA, graphRes?.pid2) + api.add(VELA, graphRes?.pid3) +} module.exports = { - methodology: "Counts USDC deposited to trade and to mint VLP. Staking counts VELA deposited to earn eVELA", + methodology: "Counts USDC deposited to trade and to mint VLP. Staking counts VELA and esVELA deposited to earn esVELA", arbitrum: { tvl: staking('0xC4ABADE3a15064F9E3596943c699032748b13352', ADDRESSES.arbitrum.USDC), - staking: staking('0xfC527781Ae973f8131dC26dDDb2Adb080c1C1F59', '0x088cd8f5eF3652623c22D48b1605DCfE860Cd704'), + staking: staking_ }, hallmarks: [ - [Math.floor(new Date('2023-04-13')/1e3), 'Refunded tokens to VLP holders & traders'], + [Math.floor(new Date('2023-04-13') / 1e3), 'Refunded tokens to VLP holders & traders'], ], -} \ No newline at end of file +} From 6192f112f6a284925e6bc994c8c3b76d8a381653 Mon Sep 17 00:00:00 2001 From: Tigris of Gaul <81036209+tigris-of-gaul@users.noreply.github.com> Date: Sat, 1 Jul 2023 09:13:06 +0000 Subject: [PATCH 0964/1354] Add Tarot factory (#6688) --- projects/tarot/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/tarot/index.js b/projects/tarot/index.js index ba4fb48e0c..7bdb44c97e 100644 --- a/projects/tarot/index.js +++ b/projects/tarot/index.js @@ -15,6 +15,7 @@ const config = { '0x1D90fDAc4DD30c3ba38d53f52A884F6e75d0989e', // Tarot Opaline '0xD7cABeF2c1fD77a31c5ba97C724B82d3e25fC83C', // Tarot Velours '0x49DF1fe24cAf1a7dcBB2E2b1793b93b04eDb62bF', // Tarot Jupiter + '0xBA47316035E6C95b31cb55BfB93458Ad41E4Da04', // Tarot Velouté ] }, arbitrum: { From 5b4dcbae9d7774964f35c1e77cfdd2b21ce78a0c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 1 Jul 2023 12:26:19 +0200 Subject: [PATCH 0965/1354] use token labels --- projects/ferro/index.js | 5 +++-- projects/fractal-protocol/index.js | 5 +++-- projects/jetprotocol.js | 34 +++++++----------------------- projects/revest/index.js | 3 ++- projects/satori/index.js | 3 ++- projects/treasury/kinza.js | 3 ++- projects/treasury/savvy.js | 7 +++--- 7 files changed, 24 insertions(+), 36 deletions(-) diff --git a/projects/ferro/index.js b/projects/ferro/index.js index 79da977152..e34a9adb03 100644 --- a/projects/ferro/index.js +++ b/projects/ferro/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const SWAP_3FER_ADDR = '0xe8d13664a42B338F009812Fa5A75199A865dA5cD'; @@ -11,12 +12,12 @@ const tokens = { SWAP_3FER_ADDR, ], // USDC - "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59": [ + [ADDRESSES.cronos.USDC]: [ SWAP_3FER_ADDR, SWAP_2FER_ADDR, ], // USDT - "0x66e428c3f67a68878562e79A0234c1F83c208770": [ + [ADDRESSES.cronos.USDT]: [ SWAP_3FER_ADDR, SWAP_2FER_ADDR, ], diff --git a/projects/fractal-protocol/index.js b/projects/fractal-protocol/index.js index 2aa46160e3..e3fb14c1ae 100644 --- a/projects/fractal-protocol/index.js +++ b/projects/fractal-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { userInfo } = require('../pendle/abi.json'); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -6,7 +7,7 @@ const FRACTAL_VAULT_CONTRACT_ETH = '0x3EAa4b3e8967c02cE1304C1EB35e8C5409838DFC'; const FRACTAL_YIELD_RESERVE_ETH = '0xbA83B569e99B6afc2f2BfE5124460Be6f36a4a56'; //Token Addresses ETH -const USDC_ETH = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; +const USDC_ETH = ADDRESSES.ethereum.USDC; //Fractal Addreses ARB const FRACTAL_VAULT_CONTRACT_ARB = '0x80e1a981285181686a3951B05dEd454734892a09' @@ -16,7 +17,7 @@ const FRACTAL_CAMELOT_POOL = '0xf011B036934b58A619D2822d90ecd726126Efdf2' const FRACTAL_CAMELOT_NITRO_POOL = '0x5d209809d3284309cC34B9D092f88fFc690de6c2' //Token Addresses Arb -const USDC_ARB = '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8' +const USDC_ARB = ADDRESSES.arbitrum.USDC const USDF_ARB = '0xae48b7C8e096896E32D53F10d0Bf89f82ec7b987' //Fractal Addresses All Chains diff --git a/projects/jetprotocol.js b/projects/jetprotocol.js index ba3af33060..5e778970e1 100644 --- a/projects/jetprotocol.js +++ b/projects/jetprotocol.js @@ -1,5 +1,5 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { getTokenBalance } = require("./helper/solana"); +const ADDRESSES = require('helper/coreAssets.json') +const { getTokenBalance, sumTokens2 } = require("./helper/solana"); async function borrowed() { const [usdcAmount, ethAmount, solAmount, btcAmount] = await Promise.all([ @@ -29,30 +29,12 @@ async function borrowed() { } async function tvl() { - const [usdcAmount, ethAmount, solAmount, btcAmount] = await Promise.all([ - getTokenBalance( - ADDRESSES.solana.USDC, - "7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8" - ), - getTokenBalance( - "2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk", - "7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8" - ), - getTokenBalance( - ADDRESSES.solana.SOL, - "7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8" - ), - getTokenBalance( - "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E", - "7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8" - ), - ]); - return { - bitcoin: btcAmount, - "usd-coin": usdcAmount, - ethereum: ethAmount, - solana: solAmount, - }; + return sumTokens2({ owner: '7gpj9cpzBBW9Ci1yMwWz7iGbQYpm5fZmadNQyrYsqch8', tokens: [ + ADDRESSES.solana.USDC, + '2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk', + ADDRESSES.solana.SOL, + '9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E', + ]}); } module.exports = { diff --git a/projects/revest/index.js b/projects/revest/index.js index 0cd88d5113..78e3638a45 100644 --- a/projects/revest/index.js +++ b/projects/revest/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, } = require("../helper/unwrapLPs") const { covalentGetTokens, } = require("../helper/http") const { getUniqueAddresses } = require('../helper/utils') @@ -10,7 +11,7 @@ const getFNFTConfigABI = "function getFNFT(uint256 fnftId) external view returns const balanceOfABI = "function balanceOf(address account) view returns (uint256)" const getWalletABI = "function getFNFTAddress(uint256 fnftId) external view returns (address)" -const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' +const ZERO_ADDRESS = ADDRESSES.null const config = { ethereum: { diff --git a/projects/satori/index.js b/projects/satori/index.js index e7879e2330..ac5666b224 100644 --- a/projects/satori/index.js +++ b/projects/satori/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const USDT_TOKEN_CONTRACT = "0x1E4a5963aBFD975d8c9021ce480b42188849D41d"; @@ -17,7 +18,7 @@ module.exports = { "0x0842b33529516abe86CA8EA771aC4c84FDd0eeE0", "0x48756b37Fd643bB40F669804730024F02900C476", ], - tokens: ["0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4"], + tokens: [ADDRESSES.era.USDC], }), }, }; diff --git a/projects/treasury/kinza.js b/projects/treasury/kinza.js index ba55a6091e..bf35c967c7 100644 --- a/projects/treasury/kinza.js +++ b/projects/treasury/kinza.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x65FDCD48c4807F67429Bdc731d6964f5553CdB36"; @@ -6,7 +7,7 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + ADDRESSES.bsc.WBNB, ], owners: [treasury,], }, diff --git a/projects/treasury/savvy.js b/projects/treasury/savvy.js index be6fcceb93..4aa3e9e0ad 100644 --- a/projects/treasury/savvy.js +++ b/projects/treasury/savvy.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x4f54cab19b61138e3c622a0bd671c687481ec030"; @@ -6,9 +7,9 @@ module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, - '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', - '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.WETH, '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' ], owners: [treasury,], From eac3d4484f45b6844978a56a25f33990f9c85c3a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 1 Jul 2023 13:10:46 +0200 Subject: [PATCH 0966/1354] add jet-v2 --- projects/jet-protocol-v2-fixed-term/idl.json | 209 +++++++++++++++++++ projects/jet-protocol-v2-fixed-term/index.js | 19 ++ projects/jetprotocol-v2-margin/index.js | 20 ++ projects/jetprotocol.js | 2 + 4 files changed, 250 insertions(+) create mode 100644 projects/jet-protocol-v2-fixed-term/idl.json create mode 100644 projects/jet-protocol-v2-fixed-term/index.js create mode 100644 projects/jetprotocol-v2-margin/index.js diff --git a/projects/jet-protocol-v2-fixed-term/idl.json b/projects/jet-protocol-v2-fixed-term/idl.json new file mode 100644 index 0000000000..2ef08b5344 --- /dev/null +++ b/projects/jet-protocol-v2-fixed-term/idl.json @@ -0,0 +1,209 @@ +{ + "version": "0.1.0", + "name": "jet_fixed_term", + "constants": [ + { + "name": "MARKET", + "type": "bytes", + "value": "[109, 97, 114, 107, 101, 116]" + }, + { + "name": "TICKET_ACCOUNT", + "type": "bytes", + "value": "[116, 105, 99, 107, 101, 116, 95, 97, 99, 99, 111, 117, 110, 116]" + }, + { + "name": "TICKET_MINT", + "type": "bytes", + "value": "[116, 105, 99, 107, 101, 116, 95, 109, 105, 110, 116]" + }, + { + "name": "CRANK_AUTHORIZATION", + "type": "bytes", + "value": "[99, 114, 97, 110, 107, 95, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110]" + }, + { + "name": "CLAIM_NOTES", + "type": "bytes", + "value": "[99, 108, 97, 105, 109, 95, 110, 111, 116, 101, 115]" + }, + { + "name": "TICKET_COLLATERAL_NOTES", + "type": "bytes", + "value": "[116, 105, 99, 107, 101, 116, 95, 99, 111, 108, 108, 97, 116, 101, 114, 97, 108, 95, 110, 111, 116, 101, 115]" + }, + { + "name": "UNDERLYING_COLLATERAL_NOTES", + "type": "bytes", + "value": "[117, 110, 100, 101, 114, 108, 121, 105, 110, 103, 95, 99, 111, 108, 108, 97, 116, 101, 114, 97, 108, 95, 110, 111, 116, 101, 115]" + }, + { + "name": "EVENT_ADAPTER", + "type": "bytes", + "value": "[101, 118, 101, 110, 116, 95, 97, 100, 97, 112, 116, 101, 114]" + }, + { + "name": "TERM_LOAN", + "type": "bytes", + "value": "[116, 101, 114, 109, 95, 108, 111, 97, 110]" + }, + { + "name": "TERM_DEPOSIT", + "type": "bytes", + "value": "[116, 101, 114, 109, 95, 100, 101, 112, 111, 115, 105, 116]" + }, + { + "name": "USER", + "type": "bytes", + "value": "[117, 115, 101, 114]" + }, + { + "name": "ORDERBOOK_MARKET_STATE", + "type": "bytes", + "value": "[111, 114, 100, 101, 114, 98, 111, 111, 107, 95, 109, 97, 114, 107, 101, 116, 95, 115, 116, 97, 116, 101]" + }, + { + "name": "MARGIN_USER", + "type": "bytes", + "value": "[109, 97, 114, 103, 105, 110, 95, 117, 115, 101, 114]" + }, + { + "name": "UNDERLYING_TOKEN_VAULT", + "type": "bytes", + "value": "[117, 110, 100, 101, 114, 108, 121, 105, 110, 103, 95, 116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116]" + }, + { + "name": "FEE_VAULT", + "type": "bytes", + "value": "[102, 101, 101, 95, 118, 97, 117, 108, 116]" + } + ], + "instructions": [], + "accounts": [ + { + "name": "Market", + "type": { + "kind": "struct", + "fields": [ + { + "name": "versionTag", + "type": "u64" + }, + { + "name": "airspace", + "type": "publicKey" + }, + { + "name": "orderbookMarketState", + "type": "publicKey" + }, + { + "name": "eventQueue", + "type": "publicKey" + }, + { + "name": "asks", + "type": "publicKey" + }, + { + "name": "bids", + "type": "publicKey" + }, + { + "name": "underlyingTokenMint", + "type": "publicKey" + }, + { + "name": "underlyingTokenVault", + "type": "publicKey" + }, + { + "name": "ticketMint", + "type": "publicKey" + }, + { + "name": "claimsMint", + "type": "publicKey" + }, + { + "name": "ticketCollateralMint", + "type": "publicKey" + }, + { + "name": "underlyingCollateralMint", + "type": "publicKey" + }, + { + "name": "underlyingOracle", + "type": "publicKey" + }, + { + "name": "ticketOracle", + "type": "publicKey" + }, + { + "name": "feeVault", + "type": "publicKey" + }, + { + "name": "feeDestination", + "type": "publicKey" + }, + { + "name": "seed", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "bump", + "type": { + "array": [ + "u8", + 1 + ] + } + }, + { + "name": "orderbookPaused", + "type": "bool" + }, + { + "name": "ticketsPaused", + "type": "bool" + }, + { + "name": "reserved", + "type": { + "array": [ + "u8", + 29 + ] + } + }, + { + "name": "borrowTenor", + "type": "u64" + }, + { + "name": "lendTenor", + "type": "u64" + }, + { + "name": "originationFee", + "type": "u64" + }, + { + "name": "nonce", + "type": "u64" + } + ] + } + } + ], + "types": [], + "errors": [] +} \ No newline at end of file diff --git a/projects/jet-protocol-v2-fixed-term/index.js b/projects/jet-protocol-v2-fixed-term/index.js new file mode 100644 index 0000000000..8ebc7367d5 --- /dev/null +++ b/projects/jet-protocol-v2-fixed-term/index.js @@ -0,0 +1,19 @@ +const { Program } = require("@project-serum/anchor"); +const { getProvider, sumTokens2, } = require("../helper/solana"); +const programId = 'JPTermEg2DwrV39xb1Fs7z1VUxcvdPT7mE7cyGsQ4xt'; +const idl = require('./idl.json') + +async function tvl() { + const provider = getProvider() + const program = new Program(idl, programId, provider) + const accounts = await program.account.market.all() + return sumTokens2({ tokenAccounts: accounts.map(i => i.account.underlyingTokenVault.toString()) }) +} + +module.exports = { + methodology: 'Add all the SOL in the pools, NFT value is not included in tvl', + timetravel: false, + solana: { + tvl, + }, +}; diff --git a/projects/jetprotocol-v2-margin/index.js b/projects/jetprotocol-v2-margin/index.js new file mode 100644 index 0000000000..fd21e9d9b8 --- /dev/null +++ b/projects/jetprotocol-v2-margin/index.js @@ -0,0 +1,20 @@ +const { Program } = require("@project-serum/anchor"); +const { getProvider, sumTokens2, } = require("../helper/solana"); +const programId = 'JPPooLEqRo3NCSx82EdE2VZY5vUaSsgskpZPBHNGVLZ'; + +async function tvl() { + const provider = getProvider() + const program = new Program(idl, programId, provider) + const accounts = await program.account.marginPool.all() + return sumTokens2({ tokenAccounts: accounts.map(i => i.account.vault.toString()), }) +} + +module.exports = { + methodology: 'Add all the SOL in the pools, NFT value is not included in tvl', + timetravel: false, + solana: { + tvl, + }, +}; + +const idl = {"version":"1.0.0","name":"jet_margin_pool","instructions":[],"accounts":[{"name":"MarginPool","type":{"kind":"struct","fields":[{"name":"version","type":"u8"},{"name":"poolBump","type":{"array":["u8",1]}},{"name":"vault","type":"publicKey"},{"name":"feeDestination","type":"publicKey"},{"name":"depositNoteMint","type":"publicKey"},{"name":"loanNoteMint","type":"publicKey"},{"name":"tokenMint","type":"publicKey"},{"name":"tokenPriceOracle","type":"publicKey"},{"name":"address","type":"publicKey"},{"name":"config","type":{"defined":"MarginPoolConfig"}},{"name":"borrowedTokens","type":{"array":["u8",24]}},{"name":"uncollectedFees","type":{"array":["u8",24]}},{"name":"depositTokens","type":"u64"},{"name":"depositNotes","type":"u64"},{"name":"loanNotes","type":"u64"},{"name":"accruedUntil","type":"i64"}]}}],"types":[{"name":"MarginPoolConfig","type":{"kind":"struct","fields":[{"name":"flags","type":"u64"},{"name":"utilizationRate1","type":"u16"},{"name":"utilizationRate2","type":"u16"},{"name":"borrowRate0","type":"u16"},{"name":"borrowRate1","type":"u16"},{"name":"borrowRate2","type":"u16"},{"name":"borrowRate3","type":"u16"},{"name":"managementFeeRate","type":"u16"},{"name":"reserved","type":"u64"}]}}],"events":[],"errors":[]} \ No newline at end of file diff --git a/projects/jetprotocol.js b/projects/jetprotocol.js index 5e778970e1..a9cac698f4 100644 --- a/projects/jetprotocol.js +++ b/projects/jetprotocol.js @@ -37,6 +37,8 @@ async function tvl() { ]}); } +// JPv1rCqrhagNNmJVM5J1he7msQ5ybtvE1nNuHpDHMNU +// https://docs.jetprotocol.io/jet-protocol/protocol/smart-contracts module.exports = { timetravel: false, solana: { From 068ec65b143e763d22fe99fa19b64aaac3a1cc94 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 1 Jul 2023 13:42:15 +0200 Subject: [PATCH 0967/1354] fix deltaprime --- projects/deltaprime/mappings/assetToAddressMapping.json | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/deltaprime/mappings/assetToAddressMapping.json b/projects/deltaprime/mappings/assetToAddressMapping.json index b56e79bd9b..85dd436c43 100644 --- a/projects/deltaprime/mappings/assetToAddressMapping.json +++ b/projects/deltaprime/mappings/assetToAddressMapping.json @@ -38,5 +38,6 @@ "crvUSDBTCETH": "0x1daB6560494B04473A0BE3E7D83CF3Fdf3a51828", "SHLB_AVAX-USDC_B": "0x668530302c6ecc4ebe693ec877b79300ac72527c", "SHLB_BTC.b-AVAX_B": "0x536d7e7423e8fb799549caf574cfa12aae95ffcd", + "GMX": "0x62edc0692bd897d2295872a9ffcac5425011c661", "SHLB_USDT.e-USDt_C": "0x9f44e67ba256c18411bb041375e572e3dd11fa72" } \ No newline at end of file From 004ccfad16dff67ef1bf09f80b4ff9aed15aab82 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 1 Jul 2023 15:10:56 +0200 Subject: [PATCH 0968/1354] fix broken adapters --- projects/kei-finance/index.js | 5 +++-- projects/phezzan/index.js | 10 +++++++--- projects/tangent/index.js | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/projects/kei-finance/index.js b/projects/kei-finance/index.js index 48b623d95b..6c29579d47 100644 --- a/projects/kei-finance/index.js +++ b/projects/kei-finance/index.js @@ -25,13 +25,14 @@ const graphQuery = ` module.exports = { ethereum: { tvl: () => 0, - staking: async () => { + staking: () => 0, + /* staking: async () => { const { staking } = await request( config.ethereum.subgraph, graphQuery ) return { [TOKEN_ADDRESS]: BigNumber(staking.totalPrincipal).plus(BigNumber(staking.totalRewards)) }; - }, + }, */ } }; diff --git a/projects/phezzan/index.js b/projects/phezzan/index.js index 667ba03854..ae2fbc0a55 100644 --- a/projects/phezzan/index.js +++ b/projects/phezzan/index.js @@ -32,10 +32,14 @@ module.exports = { timetravel: false, misrepresentedTokens: true, kava: { - tvl: sumTokensExport({ owners: [Contracts.kava.perpV1Result, Contracts.kava.fundingResult, ], tokens: [Contracts.kava.wkava, Contracts.kava.usdc, nullAddress] }), + tvl: async () => ({}), + // tvl: sumTokensExport({ owners: [Contracts.kava.perpV1Result, Contracts.kava.fundingResult, ], tokens: [Contracts.kava.wkava, Contracts.kava.usdc, nullAddress] }), }, zksync: { - offers, + // offers, tvl: async () => ({}) - } + }, + hallmarks: [ + [Math.floor(new Date('2023-04-23')/1e3), 'Protocol shutdown'], + ], }; diff --git a/projects/tangent/index.js b/projects/tangent/index.js index 8a79817c1f..aa83668e73 100644 --- a/projects/tangent/index.js +++ b/projects/tangent/index.js @@ -1,6 +1,7 @@ const { default: axios } = require('axios'); async function fetch(){ + return 0 return (await axios.get('https://api.tangent.bar/api/v1/MainStatistics')).data.allTVL From 0c05dc851ac373e1a904deb2be18f82082c019f7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 1 Jul 2023 18:36:39 +0200 Subject: [PATCH 0969/1354] bugfix --- projects/jetprotocol.js | 2 +- projects/tangent/index.js | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/projects/jetprotocol.js b/projects/jetprotocol.js index a9cac698f4..cc04fc43e1 100644 --- a/projects/jetprotocol.js +++ b/projects/jetprotocol.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('helper/coreAssets.json') +const ADDRESSES = require('./helper/coreAssets.json') const { getTokenBalance, sumTokens2 } = require("./helper/solana"); async function borrowed() { diff --git a/projects/tangent/index.js b/projects/tangent/index.js index aa83668e73..caba175906 100644 --- a/projects/tangent/index.js +++ b/projects/tangent/index.js @@ -1,14 +1,10 @@ const { default: axios } = require('axios'); -async function fetch(){ - - return 0 +async function fetch() { return (await axios.get('https://api.tangent.bar/api/v1/MainStatistics')).data.allTVL - - } module.exports = { methodology: "Data is retrieved from the api at https://api.tangent.bar/", timetravel: false, - fetch + fetch: () => 0 } From 08d3a0abb5ed48144afefc89377792399b868ddf Mon Sep 17 00:00:00 2001 From: happywomwom-wombat <129473631+happywomwom-wombat@users.noreply.github.com> Date: Sun, 2 Jul 2023 01:01:31 +0800 Subject: [PATCH 0970/1354] add pendle pool (#6683) --- projects/wombat-exchange/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index ec1411a7fa..697b6cdeb9 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -42,6 +42,7 @@ module.exports = { jUSDC: "0xc7a6bA5F28993BaDb566007bD2E0CB253c431974", ankrETH: "0xB9bdfE449Da096256Fe7954Ef61A18eE195Db77B", wstETH: "0xe14302040c0A1eb6fB5A4A79EfA46D60029358d9", + pendle: "0xe7159f15e7b1d6045506B228A1ed2136dcc56F48", fUSD: "0x956454C7BE9318863297309183C79b793D370401", }, }, From 30d531f8fc400bdcbc05d635a2968590bc09966b Mon Sep 17 00:00:00 2001 From: g1nt0ki Date: Sat, 1 Jul 2023 20:36:33 +0200 Subject: [PATCH 0971/1354] silo: blacklist XAI --- projects/silo/index.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/projects/silo/index.js b/projects/silo/index.js index 6aec66f1a3..52e684fdff 100644 --- a/projects/silo/index.js +++ b/projects/silo/index.js @@ -16,7 +16,8 @@ const config = { }, } -const fallbackBlacklist = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa"]; +const XAI = '0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac' +const fallbackBlacklist = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa", ]; async function tvl(_, block, _1, { api }) { const siloArray = await getSilos(api) @@ -26,21 +27,22 @@ async function tvl(_, block, _1, { api }) { }) const toa = assets.map((v, i) => ([v, siloArray[i]])) - return sumTokens2({ api, ownerTokens: toa, }) + return sumTokens2({ api, ownerTokens: toa, blacklistedTokens: [XAI], }) } async function borrowed(_, block, _1, { api }) { - const balances = {} const siloArray = await getSilos(api) const assetStates = await api.multiCall({ abi: getAssetStateAbi, calls: siloArray.map(i => ({ target: i })), }); assetStates.forEach(({ assets, assetsStorage }) => { - assetsStorage.forEach((i, j) => sdk.util.sumSingleBalance(balances, assets[j], i.totalBorrowAmount, api.chain)) + assetsStorage + .forEach((i, j) => { + if (assets[j].toLowerCase() === XAI) return; + return api.add(assets[j], i.totalBorrowAmount) + }) }) - - return balances } let silos = {} From ca9c4be2d510c068a2d6c7c1c47a7b63d7e479cc Mon Sep 17 00:00:00 2001 From: g1nt0ki Date: Sat, 1 Jul 2023 20:55:42 +0200 Subject: [PATCH 0972/1354] silo: fix bug while refill due to cache --- projects/silo/index.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/projects/silo/index.js b/projects/silo/index.js index 52e684fdff..d7089c1a70 100644 --- a/projects/silo/index.js +++ b/projects/silo/index.js @@ -17,7 +17,7 @@ const config = { } const XAI = '0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac' -const fallbackBlacklist = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa", ]; +const fallbackBlacklist = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa",]; async function tvl(_, block, _1, { api }) { const siloArray = await getSilos(api) @@ -45,26 +45,19 @@ async function borrowed(_, block, _1, { api }) { }) } -let silos = {} - async function getSilos(api) { const chain = api.chain const { SILO_FACTORY, START_BLOCK, } = config[chain] - if (!silos[chain]) silos[chain] = _getSilos() - return silos[chain] - - async function _getSilos() { - const logs = ( - await getLogs({ - api, - target: SILO_FACTORY, - fromBlock: START_BLOCK, - topic: 'NewSiloCreated(address,address,uint128)', - }) - ) + const logs = ( + await getLogs({ + api, + target: SILO_FACTORY, + fromBlock: START_BLOCK, + topic: 'NewSiloCreated(address,address,uint128)', + }) + ) - return logs.map((log) => `0x${log.topics[1].substring(26)}`).filter((address) => fallbackBlacklist.indexOf(address.toLowerCase()) === -1); - } + return logs.map((log) => `0x${log.topics[1].substring(26)}`).filter((address) => fallbackBlacklist.indexOf(address.toLowerCase()) === -1); } From 3c7a6f3b670a4313326fe5aff30be1a24f0d8e37 Mon Sep 17 00:00:00 2001 From: EG <37511853+Lefgk@users.noreply.github.com> Date: Sun, 2 Jul 2023 09:07:24 +0100 Subject: [PATCH 0973/1354] soarpls (#6691) * soarpls * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/soarpulse/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/soarpulse/index.js diff --git a/projects/soarpulse/index.js b/projects/soarpulse/index.js new file mode 100644 index 0000000000..074ad87848 --- /dev/null +++ b/projects/soarpulse/index.js @@ -0,0 +1,9 @@ +const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); + +const contract = "0xb29201EBB420b28Bb43052Ad58C23F43d6899F51"; + +module.exports = { + pulse: { + tvl: sumTokensExport({ owner: contract, tokens: [nullAddress]}), + }, +}; \ No newline at end of file From 3e5af782a814d5116986212732f14138c878bd24 Mon Sep 17 00:00:00 2001 From: 0xdapper <94534135+0xdapper@users.noreply.github.com> Date: Sun, 2 Jul 2023 22:40:30 +0530 Subject: [PATCH 0974/1354] umami: add glp v2 vaults (#6692) --- projects/umamifinance/index.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/projects/umamifinance/index.js b/projects/umamifinance/index.js index 4931358fc5..c5c87f57c8 100644 --- a/projects/umamifinance/index.js +++ b/projects/umamifinance/index.js @@ -14,13 +14,21 @@ const glpUSDC = "0x2e2153fd13459eba1f277ab9acd624f045d676ce"; const glpInitBlock = 18703806; const USDC = ADDRESSES.arbitrum.USDC; +const v2Vaults = [ + "0x727eD4eF04bB2a96Ec77e44C1a91dbB01B605e42", + "0xbb84D79159D6bBE1DE148Dc82640CaA677e06126", + "0x6a89FaF99587a12E6bB0351F2fA9006c6Cd12257", + "0xe0A21a475f8DA0ee7FA5af8C1809D8AC5257607d", + "0x37c0705A65948EA5e0Ae1aDd13552BCaD7711A23", +]; + module.exports = { doublecounted: true, timetravel: true, start: 1657027865, // UMAMI deployment block ts arbitrum: { staking: stakings([mUMAMI, OHM_STAKING_sUMAMI], UMAMI, "arbitrum"), - tvl: async (_, _b, { arbitrum: block }) => { + tvl: async (_, _b, { arbitrum: block }, { api }) => { const balances = {}; if (!block || block > glpInitBlock + 10) { @@ -37,6 +45,16 @@ module.exports = { ); } + const assets = await api.multiCall({ abi: 'address:asset', calls: v2Vaults }); + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: v2Vaults }); + for (let i = 0; i < assets.length; i++) { + sdk.util.sumSingleBalance( + balances, + `arbitrum:${assets[i]}`, + bals[i] + ); + } + return balances; }, }, From 1aa7f31797700dd8947bf8c6defd5b1c5ca82ac0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 2 Jul 2023 19:57:58 +0200 Subject: [PATCH 0975/1354] fix sashimiswap --- projects/sashimiswap/index.js | 194 +++++++++++++++++++++++----------- 1 file changed, 135 insertions(+), 59 deletions(-) diff --git a/projects/sashimiswap/index.js b/projects/sashimiswap/index.js index 6bc74bbcd7..1285ce9668 100644 --- a/projects/sashimiswap/index.js +++ b/projects/sashimiswap/index.js @@ -1,68 +1,144 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const {uniTvlExport} = require("../helper/calculateUniTvl"); -const { compoundExports } = require("../helper/compound"); +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') const { staking } = require("../helper/staking"); -const factoryETH = "0xF028F723ED1D0fE01cC59973C49298AA95c57472"; -const comprollerETH = "0xB5d53eC97Bed54fe4c2b77f275025c3fc132D770"; -const sIETH = "0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82"; -const WETHEquivalent = ADDRESSES.ethereum.WETH; - -const factoryBSC = "0x1DaeD74ed1dD7C9Dabbe51361ac90A69d851234D"; -const comprollerBSC = "0x88fEf82FDf75E32e4BC0e662d67CfcEF4838F026"; -const sIBNB = "0x6Df484F552115fa7F54bE4A6D7aE2999cadB2324"; -const WBNBEquivalent = ADDRESSES.bsc.WBNB; - -const factoryHECO = "0xC28E27870558cF22ADD83540d2126da2e4b464c2"; -const comprollerHECO = "0x6Cb9d7ecf84b0d3E7704ed91046e16f9D45C00FA"; -const sIHT = "0xf13d3E10DEE31b80887422c89285112Dd00ce0B5"; -const WHTEquivalent = ADDRESSES.heco.WHT; - -const {tvl: ethMarketsTvl, borrowed: borrowedEth} = compoundExports( - comprollerETH, - "ethereum", - sIETH, - WETHEquivalent -) - -const {tvl: bscMarketsTvl, borrowed: borrowedBsc} = compoundExports( - comprollerBSC, - "bsc", - sIBNB, - WBNBEquivalent -) - -const {tvl: hecoMarketsTvl, borrowed: borrowedHeco} = compoundExports( - comprollerHECO, - "heco", - sIHT, - WHTEquivalent -) - -const ethTvl = uniTvlExport(factoryETH, "ethereum"); - -const bscTvl = uniTvlExport(factoryBSC, "bsc"); - -const hecoTvl = uniTvlExport(factoryHECO, "heco"); - module.exports = { - timetravel: true, - doublecounted: false, + methodology: + "We count liquidity on the Farms (LP tokens) threw Factory Contract; and on the lending markets same as compound", +}; + +const config = { ethereum: { - // tvl: sdk.util.sumChainTvls([ethTvl,ethMarketsTvl]), - tvl: sdk.util.sumChainTvls([ethMarketsTvl]), - staking: staking("0x6ed306DbA10E6c6B20BBa693892Fac21f3B91977", "0xC28E27870558cF22ADD83540d2126da2e4b464c2"), - borrowed: borrowedEth, + dexFactory: '0xF028F723ED1D0fE01cC59973C49298AA95c57472', + dexFromBlock: 10943133, + comptroller: '0xB5d53eC97Bed54fe4c2b77f275025c3fc132D770', + // cToken: '0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82', + stakingContracts: ['0x6ed306DbA10E6c6B20BBa693892Fac21f3B91977'], + stakingToken: '0xC28E27870558cF22ADD83540d2126da2e4b464c2', }, bsc: { - tvl: sdk.util.sumChainTvls([bscMarketsTvl]), - borrowed: borrowedBsc, + dexFactory: '0x1DaeD74ed1dD7C9Dabbe51361ac90A69d851234D', + dexFromBlock: 5208518, + comptroller: '0x88fEf82FDf75E32e4BC0e662d67CfcEF4838F026', + // cToken: '0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82', }, heco: { - tvl: sdk.util.sumChainTvls([hecoMarketsTvl]), - borrowed: borrowedHeco, + dexFactory: '0xC28E27870558cF22ADD83540d2126da2e4b464c2', + dexFromBlock: 783990, + comptroller: '0x6Cb9d7ecf84b0d3E7704ed91046e16f9D45C00FA', + // cToken: '0xC597F86424EEb6599Ea40f999DBB739e3Aca5d82', }, - methodology: - "We count liquidity on the Farms (LP tokens) threw Factory Contract; and on the lending markets same as compound", -}; +} + +Object.keys(config).forEach(chain => { + const { stakingContracts, stakingToken, dexFactory, comptroller, dexFromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const ownerTokens = [] + if (comptroller) { + const markets = await api.call({ abi: 'address[]:getAllMarkets', target: comptroller, }) + let uTokens = await api.multiCall({ abi: 'address:underlying', calls: markets, permitFailure: true }) + uTokens = uTokens.map(i => i ?? nullAddress) + ownerTokens.push(...markets.map((m, i) => [[uTokens[i]], m])) + } + if (dexFactory) { + const logs = await getLogs({ + api, + target: dexFactory, + topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], + eventAbi: 'event PairCreated (address indexed token0, address indexed token1, address pair, uint256)', + onlyArgs: true, + fromBlock: dexFromBlock, + }) + const routers = await api.multiCall({ abi: 'address:router', calls: logs.map(i => i.pair) }) + routers.forEach((r, i) => ownerTokens.push([[logs[i].token0, logs[i].token1], r])) + } + return sumTokens2({ api, ownerTokens, blacklistedTokens, }) + }, + borrowed: async (_, _b, _cb, { api, }) => { + if (comptroller) { + const markets = await api.call({ abi: 'address[]:getAllMarkets', target: comptroller, }) + let uTokens = await api.multiCall({ abi: 'address:underlying', calls: markets, permitFailure: true }) + uTokens = uTokens.map(i => i ?? nullAddress) + let borrows = await api.multiCall({ abi: 'uint256:totalBorrows', calls: markets }) + api.addTokens(uTokens, borrows) + } + api.getBalances() + }, + } + + if (stakingContracts) { + module.exports[chain].staking = staking(stakingContracts, stakingToken) + } +}) + +const blacklistedTokens = [ + // ethereum + '0x24efe6b87bf1bfe9ea2ccb5a9d0a959c7172b364', + '0x786448439d9401e0a8427acf7ca66a5114eb2368', + '0x32503febaa15d0bcfda2a9d8fe492d14a750e52c', + '0x7756661eea92e4423ae4680f552aa0be0da040f1', + '0x03012a6f9bb5bff61997aee59477a893debd203b', + '0x0c7858badb509262e736748e6041b8d7b0b94dbf', + '0xb904d3f16bf305e99fd785dda1bb13df354c381b', + '0x674dcbde5c622abb3122d6934fcce446b95060dc', + '0x90b4fc25a6bd9a666aa4507148f07198a4abc849', + '0x0aa387225497ccca54fe9de989d3274c1377efe7', + '0x823b35caa9d0c66a5f9ffb6d042fa130f34cb760', + '0x9e844c8a08b6e56c7c89c7428d63599b64f62ea9', + '0x7a77073c1191f2d2fd31a71c758d44f3de0af831', + '0xbacbd121f37557e5ea1d0c4bb67756867866c3fe', + '0xf1b43f4e14650ac8c4bb009d9b56eb77c1ae87cd', + '0x5b8c75d6f91663c515bb12e3cf7c29ade0e1a302', + '0x7578fd876752a5e4999a16fb80cfe30c1056de11', + '0x1ad47ee8074ee1adabd76e97b23b94713de9d175', + '0x9a3eed88730378393e903387087964184b462c71', + '0xdd530cbe1409df4e7e2dfd18931292c81d8c5e17', + '0x6e4e0a7f4dc3068970ecb81fd28cd19d4119125b', + '0x0c662c1e8635aead580714ffa19ab5f008ab7aeb', + '0x30404353bdceebe86e0b6391fe66db1082bc6cb7', + '0xa503ddef9c88b5b566705298f8c8faace130b80b', + '0x002141edcfb5814ad2772e3aecb73a3312f0b60c', + '0xa6ce576e27ee546cb64e280bb2aa18ad438c28cc', + '0xa35ff70c648acd83cf0742b919bce4d1b424dca4', + '0x079308fcea7973da3ae2b45904948a5b51f3cba3', + '0x4ff5b5108f4db6f925cd76a68bb80565fd8053e6', + '0x0df2d534cc6849558a9d237c98be560b5ff502f8', + + // bsc + '0xc28e27870558cf22add83540d2126da2e4b464c2', + '0x4b64a2d17231882e62d7d5d84daa92e6a39e93b4', + '0xd9f2894257a57333e84682f463c01e539af15f3a', + '0x627c99cfc6421224a99b88cec08ba9894253779c', + '0xabc2984de273dd6fc4cfe602d5a9736ab94402be', + '0xd7bfb8faa3c395d475ac97f337f528565b2ea2c6', + '0x216ca859fbc236a32d6464ce17b18591dd72c3d3', + '0x5fbce2d40ea2c5233c2ba399e27a2a21b0d6964c', + '0xa9cb2cb1f0080b2d479e4be62a27969d80b6577c', + '0x2f11f3a4656732c2f9e77c8642ed8a7d42aa2a02', + '0x6047ac230eef705d294ece482f1652235dac6405', + '0xd771dcc836d69f45e8ed604be03a26bdf4be2623', + '0x01876dccb99cd6172f343a874021427afe550472', + '0x176c673a31904dbfff4255f2501567b4ddc73f65', + '0x7213c252e7857b529582dddc770ddb275759d1ec', + + // heco + '0xc2037c1c13dd589e0c14c699dd2498227d2172cc', + '0x03271182cf2b47929978d0e4ca4af0846f66e2de', + '0x891daabf6de7a648c9665928e1097b808c1721e2', + '0xe9c95876f144bbdf5dc33d1a35c26cab0611903f', + '0x389eec1b8795853770874b76b912ec18de796e1b', + '0xeaac96f59e40d38bd970b37879a79a1d28737d8a', + '0x6c606fb47d99d1e66f9b599f8c5602cd4eb44d5a', + '0xae399aea42867fec2cd4a04963a7f0e247a39431', + '0x818bbc9b9d37685f9f4db032d46b52a70d890632', + '0x6ccbc3a5ae94e8a75f9571438a78f3e3aa956655', + '0xc2d36a8c0b1235ddecac2ed519139e9177e67736', + '0x611e93a7718a215bfda3c63f7175d764793272df', + '0x377dca38ff279a73a9075f25d36d00b98515a9a1', + '0x937a48287fdc4b503d608cb988ac35eee75f076f', + '0x3f3aaaa941ad756fc49a4b3241a87a7c04e39a4e', + '0x06068d90e0cbf9b7ccfd21efddb9bceb4c47fd31', + '0xe2a246c36fa86eee290acef79a8dc66b6b7f25ba', + '0x8fc67b8ed339c740a58ebd7aae24ba9d57d8dd25', +] From 44e0519407225072619015e3544e32a860ae871e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 2 Jul 2023 22:01:07 +0200 Subject: [PATCH 0976/1354] add hallmark --- projects/sashimiswap/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/sashimiswap/index.js b/projects/sashimiswap/index.js index 1285ce9668..32409899dd 100644 --- a/projects/sashimiswap/index.js +++ b/projects/sashimiswap/index.js @@ -5,6 +5,9 @@ const { staking } = require("../helper/staking"); module.exports = { methodology: "We count liquidity on the Farms (LP tokens) threw Factory Contract; and on the lending markets same as compound", + hallmarks: [ + [Math.floor(new Date('2021-12-30')/1e3), 'Protocol was hacked for 210K USD'], + ], }; const config = { From a47703496a261d7d637cf6f752a1e62cfe80187e Mon Sep 17 00:00:00 2001 From: define Date: Mon, 3 Jul 2023 09:21:26 +0100 Subject: [PATCH 0977/1354] treasury cryptodickbutts --- projects/treasury/cryptodickbutts.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/treasury/cryptodickbutts.js diff --git a/projects/treasury/cryptodickbutts.js b/projects/treasury/cryptodickbutts.js new file mode 100644 index 0000000000..f45297dccc --- /dev/null +++ b/projects/treasury/cryptodickbutts.js @@ -0,0 +1,23 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const treasury = "0xf14d484b29a8ac040feb489afadb4b972422b4e9"; +const dick = "0x22BDc8Ad19aE84d9327E81FAD4F5973b91fbaA60" + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDT,//TETHER + ADDRESSES.ethereum.USDC,//USDC + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0x6d3D490964205c8bC8DeD39e48e88E8Fde45b41f", + "0x0000000000A39bb272e79075ade125fd351887Ac", + "0x6B175474E89094C44Da98b954EedeAC495271d0F" + ], + owners: [treasury], + ownTokens: [dick], + + }, +}) \ No newline at end of file From 09086ff43b0c0e9cb5155789440cb6a3c6159358 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 3 Jul 2023 11:50:08 +0200 Subject: [PATCH 0978/1354] track biswap v3 --- projects/biswap-v3/index.js | 24 ++++++++++++++++++++++++ projects/helper/sumTokens.js | 6 +++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 projects/biswap-v3/index.js diff --git a/projects/biswap-v3/index.js b/projects/biswap-v3/index.js new file mode 100644 index 0000000000..bed655ce7b --- /dev/null +++ b/projects/biswap-v3/index.js @@ -0,0 +1,24 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') + +const config = { + bsc: { factory: '0x7c3d53606f9c03e7f54abddffc3868e1c5466863', fromBlock: 29462097 }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0xe857b53ada03b8d88fd7546e77c34d3b68996e6ce330f0edee6e813b7daea099'], + eventAbi: 'event NewPool (address indexed tokenX, address indexed tokenY, uint16 indexed fee, uint24 pointDelta, address pool)', + onlyArgs: true, + fromBlock, + }) + const ownerTokens = logs.map(log => [[log.tokenX, log.tokenY], log.pool]) + return sumTokens2({ api, ownerTokens }) + } + } +}) \ No newline at end of file diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index fdfbaab68c..d8924b58c3 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -44,7 +44,11 @@ function sumTokensExport(options) { } async function sumTokens(options) { - let { chain, owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], balances = {}, token, } = options + let { chain, owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], balances = {}, token, api } = options + if (api) { + chain = api.chain + block = api.block + } if (token) tokens = [token] if (owner) owners = [owner] From 8f6dbf30939e4e54083fa73c945e0201921cf10c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 3 Jul 2023 13:28:59 +0200 Subject: [PATCH 0979/1354] bugfix --- projects/helper/sumTokens.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index d8924b58c3..e9f2522418 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -47,7 +47,6 @@ async function sumTokens(options) { let { chain, owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], balances = {}, token, api } = options if (api) { chain = api.chain - block = api.block } if (token) tokens = [token] From a41d628a1c4ac19f8baacc32d58ddac6945f2f7d Mon Sep 17 00:00:00 2001 From: DeFi-dev <137463793+WemadeDeFiDev@users.noreply.github.com> Date: Mon, 3 Jul 2023 20:44:20 +0900 Subject: [PATCH 0980/1354] add Konverter porotocol (#6684) * add konverter tvl * add konverter tvl * fix tvl methodology * konverter * Revert "konverter" This reverts commit d140f66649302cfe85fdfd00b357643af005120a. * code refactor --------- Co-authored-by: DannyBae Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/konverter/contracts.json | 31 +++++++++++++++++++++++++++++++ projects/konverter/index.js | 16 ++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 projects/konverter/contracts.json create mode 100644 projects/konverter/index.js diff --git a/projects/konverter/contracts.json b/projects/konverter/contracts.json new file mode 100644 index 0000000000..383135ab3c --- /dev/null +++ b/projects/konverter/contracts.json @@ -0,0 +1,31 @@ +{ + "wemix": { + "priceCalculator": "0xdc9cd9f7a3b962857854120dC3a8c75ed8A48b9e", + "stableSwapHelper": "0x164056263dBB527D06B008F263780fC8f1Bd22F5", + "pools": { + "0xa60448B0621335905a65753173D7e6FDFe494Da2": { + "name": "k3Pool", + "isMetaPool": false, + "n_coins": 3, + "poolToken": "0x7D57CeF121AC2371472214d100FF01eC6ddD5fAa", + "underlyingTokens": [ + "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", + "0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F", + "0x8E81fCc2d4A3bAa0eE9044E0D7E36F59C9BbA9c1" + ] + }, + "0xDacaD9ddF713496012748D35496c0FB09c8d8c15": { + "name": "wcd-k3Pool", + "isMetaPool": true, + "n_coins": 2, + "poolToken": "0xf7FA632AbeEDAD21E59089c5174C47735903506F", + "underlyingTokens": [ + "0x2ec6Fc5c495aF0C439E17268d595286d5f897dD0", + "0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D", + "0xA649325Aa7C5093d12D6F98EB4378deAe68CE23F", + "0x8E81fCc2d4A3bAa0eE9044E0D7E36F59C9BbA9c1" + ] + } + } + } +} \ No newline at end of file diff --git a/projects/konverter/index.js b/projects/konverter/index.js new file mode 100644 index 0000000000..9641ea22a5 --- /dev/null +++ b/projects/konverter/index.js @@ -0,0 +1,16 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const contracts = require("./contracts.json"); + +async function tvl(_, _b, _cb, { api, }) { + const ownerTokens = Object.entries(contracts[api.chain].pools).map(([pool, { underlyingTokens }]) => [underlyingTokens, pool]) + const blacklistedTokens = ownerTokens.map(i => i[1]) + return sumTokens2({ api, ownerTokens, blacklistedTokens }) +} + +module.exports = { + methodology: + "Sum of each liquidity pool's value", + wemix: { + tvl + } +}; From df83a26d9bd41c4030ff9deeecbd16af2f65f747 Mon Sep 17 00:00:00 2001 From: DeFi-dev <137463793+WemadeDeFiDev@users.noreply.github.com> Date: Mon, 3 Jul 2023 20:46:27 +0900 Subject: [PATCH 0981/1354] add kurrency-wemix tvl (#6685) * add kurrency-wemix tvl * code refactor --------- Co-authored-by: DannyBae Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/kurrency/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/kurrency/index.js diff --git a/projects/kurrency/index.js b/projects/kurrency/index.js new file mode 100644 index 0000000000..90a91a83c1 --- /dev/null +++ b/projects/kurrency/index.js @@ -0,0 +1,23 @@ +async function tvl(_, _b, _cb, { api, }) { + const cdpManager = '0x1B18d5a2f35B431aACa02B58eE9E4B7FBa9b098d' + const PSM = '0xbdd0b6212505bcD15C38839cf338E40aeCd95b13' + const ids = await api.call({ abi: abi.getCollateralIds, target: cdpManager }) + const psmTokens = await api.call({ abi: abi.getPSMTokens, target: PSM }) + const psmInfos = await api.multiCall({ abi: abi.getPSMTokenInfo, calls: psmTokens, target: PSM }) + const infos = await api.multiCall({ abi: abi.getCollateralInfo, calls: ids, target: cdpManager }) + infos.forEach(info => api.add(info.token, info.balance)) + psmInfos.forEach((info, i) => api.add(psmTokens[i], info.balance)) +} + +module.exports = { + wemix: { + tvl + } +}; + +const abi = { + "getCollateralIds": "uint256[]:getCollateralIds", + "getPSMTokenInfo": "function getPSMTokenInfo(address token) view returns (tuple(uint256 mintLimit, uint256 minReserve, uint256 balance, uint256 mintAmount, uint256 collateralId, address investor) tokenInfo)", + "getPSMTokens": "address[]:getPSMTokens", + "getCollateralInfo": "function getCollateralInfo(uint256 collateralId) view returns (tuple(address token, address investor, uint256 balance, uint256 maxLTV, uint256 liquidationLTV, uint256 debtCeiling, uint256 interestRate, uint256 liquidationBonusRate, uint256 lastUpdateTime, uint256 lastVaultId, tuple(uint256 originalDebt, uint256 debt, uint256 debtShare) debtInfo) collateralInfo)", +} \ No newline at end of file From 33e29894ec1968776956073582b826dd5d96a151 Mon Sep 17 00:00:00 2001 From: Gabriele Di Remigio <63728957+GabrieleDiRemigio@users.noreply.github.com> Date: Mon, 3 Jul 2023 13:51:53 +0200 Subject: [PATCH 0982/1354] Add xALGO adapter (#6696) --- projects/folks-xalgo/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/folks-xalgo/index.js diff --git a/projects/folks-xalgo/index.js b/projects/folks-xalgo/index.js new file mode 100644 index 0000000000..b7822c4042 --- /dev/null +++ b/projects/folks-xalgo/index.js @@ -0,0 +1,14 @@ +const { getAssetInfo } = require("../helper/chain/algorand"); + +const xAlgoAssetId = 1134696561; + +module.exports = { + timetravel: false, + algorand: { + tvl: async () => { + const info = await getAssetInfo(xAlgoAssetId); + const total = info.circulatingSupply / 10 ** info.decimals; + return { algorand: total }; + }, + }, +}; From 1ebca66fd17733f8bc6108c6b1620d9aea61202b Mon Sep 17 00:00:00 2001 From: xlsd <136213400+extlsd@users.noreply.github.com> Date: Mon, 3 Jul 2023 19:53:51 +0800 Subject: [PATCH 0983/1354] Update index.js (#6695) update LSD_TOKENS and STAKING_POOL_ADDRESS --- projects/xlsd/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/xlsd/index.js b/projects/xlsd/index.js index 6c194d3d50..6b2d0f04b4 100644 --- a/projects/xlsd/index.js +++ b/projects/xlsd/index.js @@ -1,7 +1,7 @@ const { sumTokensExport } = require("../helper/unwrapLPs"); -const LSD_TOKENS = ['0x22aB6bC52CAD84AAe84bD5781258677a6E0cFaB0', '0xce3a75572bc375476438206f6F29f46F8466EcC2', '0xC56dC613C8EF3C57314171d73EAEFE87Aa469186']; -const STAKING_POOL_ADDRESS = ['0x675B74A939fF8b16bA90Af9Cc9e6981a7975401E', '0x7931bfCeeD6FC04D35de75608F2977F3d3a69bc5', '0x77b16981d200dFe89Dd3AD5dc3238967646DDB28']; +const LSD_TOKENS = ['0xf40F19CAFaAA25bF9B52134646c6E325E76E0e93']; +const STAKING_POOL_ADDRESS = ['0x61CeC27ba136347ddA0AEDBe29a9b8219C32fF04']; module.exports = { methodology: "TVL of Staked ETH & LSD tokens in the StakingPool contracts", From a174f84cb7753f189f3f03c25a903ebab134566c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 3 Jul 2023 15:09:22 +0200 Subject: [PATCH 0984/1354] fix broken adapters --- projects/bubbleswap-v2/index.js | 5 ++++- projects/illuminate-fi/index.js | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/projects/bubbleswap-v2/index.js b/projects/bubbleswap-v2/index.js index 832c9ff9cb..9c46e6795f 100644 --- a/projects/bubbleswap-v2/index.js +++ b/projects/bubbleswap-v2/index.js @@ -13,10 +13,13 @@ async function fetch(){ } module.exports = { - fetch, + hedera: { + tvl: () => ({}), + }, timetravel: false, methodology: "Data is retrieved from the api at https://api.bubbleswap.io/", hallmarks: [ [1683288000, "V2 Launch"], + [Math.floor(new Date('2023-07-01')/1e3), 'Project shutdown'], ] } \ No newline at end of file diff --git a/projects/illuminate-fi/index.js b/projects/illuminate-fi/index.js index f94d90cd6e..b541fe9699 100644 --- a/projects/illuminate-fi/index.js +++ b/projects/illuminate-fi/index.js @@ -24,7 +24,14 @@ async function tvl(_, _b, _cb, { api, }) { const principalTokens = await api.multiCall({ abi: 'address:fyToken', calls: pools }) const principalTokenDecimals = await api.multiCall({ abi: 'uint256:decimals', calls: pools }) const oneCalls = principalTokenDecimals.map((v, i) => ({ params: 10 ** v, target: pools[i] })) - const principalTokenPrices = await api.multiCall({ abi: 'function sellFYTokenPreview(uint128) view returns (uint128)', calls: oneCalls }) + let principalTokenPrices = await api.multiCall({ abi: 'function sellFYTokenPreview(uint128) view returns (uint128)', calls: oneCalls, permitFailure: true }) + let i = 0 + for (const pt of principalTokenPrices) { + if (!pt) { + principalTokenPrices[i] = await api.call({ abi: 'function unwrapPreview(uint256) view returns (uint256)', ...oneCalls[i] }) + } + i++ + } const principalTokenSupplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: principalTokens }) principalTokenSupplies.forEach((supply, i) => api.add(baseTokens[i], supply * +principalTokenPrices[i] / 10 ** principalTokenDecimals[i])) From 52c44c1c47a2c2fc262bc9290f8e576c1dbabd12 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 3 Jul 2023 15:18:11 +0200 Subject: [PATCH 0985/1354] kleva: merge lend +farming tvl --- projects/kleva/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/kleva/index.js b/projects/kleva/index.js index 4fd5256c7e..af03f8240a 100644 --- a/projects/kleva/index.js +++ b/projects/kleva/index.js @@ -5,6 +5,7 @@ const { userInfos } = require('./FairLaunch') const { getChainTransform, getFixBalances } = require('../helper/portedTokens') const { getTokenPrices } = require('../helper/unknownTokens') +const kExports = require('../kleva-lend') const chain = 'klaytn' // const TOKEN_PRICE_QUERY_URL = "https://api.kltalchemy.com/klay/ksInfo" @@ -59,6 +60,6 @@ async function fetchLiquidity() { } module.exports = { - klaytn: { tvl: fetchLiquidity }, + klaytn: { tvl: sdk.util.sumChainTvls([fetchLiquidity, kExports.klaytn.tvl]) }, doublecounted: true, } \ No newline at end of file From 7b6cabf87850858161e6d59b3df0748696b1295f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 3 Jul 2023 15:20:26 +0200 Subject: [PATCH 0986/1354] alpaca-fi: merge farm + lend exports --- projects/alpaca-finance/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/alpaca-finance/index.js b/projects/alpaca-finance/index.js index 034347ce7f..81ee4eeb26 100644 --- a/projects/alpaca-finance/index.js +++ b/projects/alpaca-finance/index.js @@ -1,6 +1,8 @@ +const sdk = require('@defillama/sdk') const { calLyfTvl } = require("./lyf"); const { calAusdTvl } = require('./ausd'); const { calxALPACAtvl } = require('./xalpaca'); +const aExports = require('../alpaca-finance-lend'); async function bscTvl(timestamp, ethBlock, chainBlocks) { const lyfTvl = await calLyfTvl('bsc', chainBlocks.bsc); @@ -25,11 +27,11 @@ async function ftmStaking(timestamp, ethBlock, chainBlocks) { module.exports = { start: 1602054167, bsc: { - tvl: bscTvl, + tvl: sdk.util.sumChainTvls([bscTvl, aExports.bsc.tvl]), staking: bscStaking, }, fantom: { - tvl: fantomTvl, + tvl: sdk.util.sumChainTvls([fantomTvl, aExports.fantom.tvl]), staking: ftmStaking, } }; From 3b76b9c14145bb9956db6d961347b12d677bff74 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 3 Jul 2023 16:36:41 +0100 Subject: [PATCH 0987/1354] add 1 more wallet lido (wip) (#6700) * add 1 more wallet lido * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/treasury/lido.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/treasury/lido.js b/projects/treasury/lido.js index 1e57744ca2..6fa5c3d7d0 100644 --- a/projects/treasury/lido.js +++ b/projects/treasury/lido.js @@ -3,7 +3,10 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const LidoTreasury = "0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"; const LDO = ADDRESSES.ethereum.LIDO; +const treasuryMatic = "0xd65Fa54F8DF43064dfd8dDF223A446fc638800A9" +const treasurySolana = "GQ3QPrB1RHPRr4Reen772WrMZkHcFM4DL5q44x1BBTFm" +const LDOsol = "HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p" module.exports = treasuryExports({ ethereum: { @@ -18,7 +21,14 @@ module.exports = treasuryExports({ '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA '0x0d02755a5700414B26FF040e1dE35D337DF56218' //BEND ], - owners: [LidoTreasury], + owners: [LidoTreasury, treasuryMatic], ownTokens: [LDO], }, + solana: { + tokens: [ + "7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj" + ], + owners: [treasurySolana], + ownTokens: [LDOsol], + }, }) From b085d6a036e3f0ded8520af85045276feca787ec Mon Sep 17 00:00:00 2001 From: g1nt0ki Date: Mon, 3 Jul 2023 22:59:25 +0200 Subject: [PATCH 0988/1354] bugfix --- projects/helper/sumTokens.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index e9f2522418..d79a3295f9 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -45,7 +45,7 @@ function sumTokensExport(options) { async function sumTokens(options) { let { chain, owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], balances = {}, token, api } = options - if (api) { + if (api && !specialChains.includes(chain)) { chain = api.chain } From 6a16b93869d476ebcb89429a0251a9717e3ea96e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 3 Jul 2023 23:51:36 +0100 Subject: [PATCH 0989/1354] add protectorate --- projects/protectorate/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/protectorate/index.js diff --git a/projects/protectorate/index.js b/projects/protectorate/index.js new file mode 100644 index 0000000000..1248a900d1 --- /dev/null +++ b/projects/protectorate/index.js @@ -0,0 +1,11 @@ +const { treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + ADDRESSES.ethereum.WETH, + ], + owners: ["0xaF53431488E871D103baA0280b6360998F0F9926"], + }, +}) \ No newline at end of file From d1ebba73e80adf2ff29f91132708aab13ccd0a59 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 4 Jul 2023 07:48:36 +0100 Subject: [PATCH 0990/1354] add stUSDT --- projects/stUSDT/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/stUSDT/index.js diff --git a/projects/stUSDT/index.js b/projects/stUSDT/index.js new file mode 100644 index 0000000000..cd4ac290b6 --- /dev/null +++ b/projects/stUSDT/index.js @@ -0,0 +1,10 @@ +module.exports = { + tron: { + tvl: async (_, _b, _cb, { api, }) => { + const supply = await api.call({ abi: "erc20:totalSupply", target: "TThzxNRLrW2Brp9DcTQU8i4Wd9udCWEdZ3" }) + return { + "0xdac17f958d2ee523a2206206994597c13d831ec7": supply/1e12 + } + } + } +} From dd29836acba4eeff35b83c10a9997daf8fa81020 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jul 2023 10:03:19 +0200 Subject: [PATCH 0991/1354] blueshift: track polygon --- projects/blueshift/abi.json | 2 +- projects/blueshift/config.json | 22 +++++++-- projects/blueshift/index.js | 82 ++++++++++++---------------------- 3 files changed, 48 insertions(+), 58 deletions(-) diff --git a/projects/blueshift/abi.json b/projects/blueshift/abi.json index 3d03d17149..549cf17145 100644 --- a/projects/blueshift/abi.json +++ b/projects/blueshift/abi.json @@ -1,6 +1,6 @@ { "BlueshiftRegistry": { - "getPortfolios": "function getPortfolios() view returns (tuple(string name, address contractAddress, address baseTokenAddress, address lpTokenAddress, uint256 lpTokenPrice, uint256 totalValue, uint256 tokenCount, tuple(address tokenAddress, uint256 amount, uint256 price, uint256 depositLimit, uint256 withdrawLimit, uint256 depositEMAPrice, uint256 withdrawEMAPrice, uint256 portfolioShare, uint256 targetWeight)[] tokens)[])" + "getPortfolios": "function getPortfolios() view returns (tuple(string[] name, address[] contractAddress, address[] baseTokenAddress, address[] lpTokenAddress, uint256[] lpTokenPrice, uint256[] totalValue, uint256[] tokenCount, uint256[] baseTokenPriceCoefficient, tuple(address[] tokenAddress, uint256[] amount, uint256[] price, uint256[] depositLimit, uint256[] withdrawLimit, uint256[] depositEMAPrice, uint256[] withdrawEMAPrice, uint256[] portfolioShare, uint256[] targetWeight)[] tokens))" }, "BlueshiftEarning": { "getAccDeposit": "uint256:getAccDeposit", diff --git a/projects/blueshift/config.json b/projects/blueshift/config.json index f4c82f253e..07d9d2bbf8 100644 --- a/projects/blueshift/config.json +++ b/projects/blueshift/config.json @@ -1,12 +1,28 @@ { "registry": { - "milkomeda": "0x83E384d119adA05195Caca26396B8f56fdDA1c91", - "milkomeda_a1": "0x93e9c79582cAd65627758bbdB067EAB1c79E005c", - "kava": "0xe46e53672B160a67faEdE644d4A339CDeC1f671c" + "milkomeda": "0xb42F2f37Dedf435F4916665d6B4c2cC643A17f14", + "milkomeda_a1": "0xa98C276d262Cc3Bf660189E2eBE74c4B8C18e50a", + "kava": "0x49399653f651A25924b3D8718276b5b4372577b1", + "polygon": "0x2080A319A4B11D097050722b6b65d09F754EdC83" }, "manualPool": { "milkomeda": "0xA4f0e3C80C77b347250B9D3999478E305FF814A4", "milkomeda_a1": "0x589E3Edd93A22FB316cff53eABA6BB958ff601cd", "kava": "0x7A60918Bd5c83Ef7e2ABA87D13e3FD704f6A77E1" + }, + "blueschain": { + "milkomeda": { + "reserve": "0xa2351AEA209ceB0ffeCd77149eC615335d7f513d", + "tokens": [ + "0xAE83571000aF4499798d1e3b0fA0070EB3A3E3F9", + "0x8c008BBA2Dd56b99f4A6aB276bE3a478cB075F0C" + ] + }, + "polygon": { + "reserve": "0x3abd79823C595C0778e51246c491126e77367b20", + "tokens": [ + "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" + ] + } } } \ No newline at end of file diff --git a/projects/blueshift/index.js b/projects/blueshift/index.js index ddea2d6f76..fd9b3427f8 100644 --- a/projects/blueshift/index.js +++ b/projects/blueshift/index.js @@ -1,66 +1,40 @@ -const sdk = require('@defillama/sdk'); -const { transformBalances } = require('../helper/portedTokens'); +const { sumTokens2 } = require('../helper/unwrapLPs') const abi = require('./abi.json'); -const config = require("./config.json"); - - -async function staking(chain, chainBlocks) { - const balances = {}; - - const value = (await sdk.api.abi.call({ - abi: abi.BlueshiftEarning.getAccDeposit, - chain: chain, - target: config.manualPool[chain], - params: [], - block: chainBlocks[chain], - })).output; - - const tokenAddress = (await sdk.api.abi.call({ - abi: abi.BlueshiftEarning.getToken, - chain: chain, - target: config.manualPool[chain], - params: [], - block: chainBlocks[chain], - })).output; - - sdk.util.sumSingleBalance(balances, tokenAddress, value); - return transformBalances(chain, balances); +const { registry, manualPool, blueschain, } = require("./config.json"); + +async function staking(_, _1, _2, { api }) { + const chain = api.chain + if (!manualPool[chain]) return {} + const value = await api.call({ abi: abi.BlueshiftEarning.getAccDeposit, target: manualPool[chain], }) + const tokenAddress = await api.call({ abi: abi.BlueshiftEarning.getToken, target: manualPool[chain], }) + api.add(tokenAddress, value) + return api.getBalances() } -async function tvl(chain, chainBlocks) { - const balances = {}; +async function tvl(_, _1, _2, { api }) { + const chain = api.chain + const { reserve, tokens } = blueschain[chain] ?? {} - const portfolios = (await sdk.api.abi.call({ - abi: abi.BlueshiftRegistry.getPortfolios, - chain: chain, - target: config.registry[chain], - params: [], - block: chainBlocks[chain], - })).output; + // Blueschain reserves + if (reserve) + await sumTokens2({ api, owner: reserve, tokens, }) - for (let portfolio of portfolios) { - const value = portfolio.totalValue; - sdk.util.sumSingleBalance(balances, portfolio.baseTokenAddress, value); + // Local reserves + if (registry[chain]) { + const portfolios = await api.call({ abi: abi.BlueshiftRegistry.getPortfolios, target: registry[chain], }) + + for (let i = 0; i < portfolios.contractAddress.length; ++i) + api.add(portfolios.baseTokenAddress[i], portfolios.totalValue[i]) } - return transformBalances(chain, balances); + return api.getBalances() } + module.exports = { methodology: 'Accumulates TVL of all Blueshift portfolios calculated in base tokens. Adds TVL of BLUES tokens staked in Blueshift yield pools.', - milkomeda: { - start: 2023331, - staking: (timestamp, block, chainBlocks) => staking('milkomeda', chainBlocks), - tvl: (timestamp, block, chainBlocks) => tvl('milkomeda', chainBlocks) - }, - milkomeda_a1: { - start: 1300, - staking: (timestamp, block, chainBlocks) => staking('milkomeda_a1', chainBlocks), - tvl: (timestamp, block, chainBlocks) => tvl('milkomeda_a1', chainBlocks) - }, - kava: { - start: 2499737, - staking: (timestamp, block, chainBlocks) => staking('kava', chainBlocks), - tvl: (timestamp, block, chainBlocks) => tvl('kava', chainBlocks) - } }; + +Object.keys(registry).forEach(chain => { + module.exports[chain] = { tvl, staking } +}) From c0998e87de51c91ba7fc4c305d70cfaa0b0d2dd3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jul 2023 13:37:27 +0530 Subject: [PATCH 0992/1354] Arpa (#6707) * feat: Add arpa-staking * code refactor --------- Co-authored-by: shjie047 --- projects/arpa-staking/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/arpa-staking/index.js diff --git a/projects/arpa-staking/index.js b/projects/arpa-staking/index.js new file mode 100644 index 0000000000..e079e77122 --- /dev/null +++ b/projects/arpa-staking/index.js @@ -0,0 +1,16 @@ +const STAKING_CONTRACT = "0xee710f79aa85099e200be4d40cdf1bfb2b467a01"; +const ARPA = "0xBA50933C268F567BDC86E1aC131BE072C6B0b71a"; + +const staking = async (_, _1, _2, { api }) => { + const val = await api.call({ target: STAKING_CONTRACT, abi: 'uint256:getTotalCommunityStakedAmount', }); + api.add(ARPA, val) + return api.getBalances() +}; + +module.exports = { + methodology: "TVL is the total amount of ARPA staked by the community", + ethereum: { + tvl: () => ({}), + staking, + }, +}; From be5a74c7fc4f429e6d1d2a4289de9c6df2391bd7 Mon Sep 17 00:00:00 2001 From: jvalentee Date: Tue, 4 Jul 2023 09:11:30 +0100 Subject: [PATCH 0993/1354] add leNFT tvl adapter (#6702) --- projects/leNFT/index.js | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 projects/leNFT/index.js diff --git a/projects/leNFT/index.js b/projects/leNFT/index.js new file mode 100644 index 0000000000..2309f5b714 --- /dev/null +++ b/projects/leNFT/index.js @@ -0,0 +1,51 @@ +const { getLogs } = require("../helper/cache/getLogs"); +const { sumTokens2 } = require("../helper/unwrapLPs"); + +async function tvl(_, _b, _cb, { api }) { + const tradingPoolFactory = "0x197456A4f5c3B3605033270Bc04Bc599916CaBA0"; + const lendingMarket = "0xFAE8371d6b22F6451A64026785e79Bd7B438306F"; + + // Get the logs of trading pool creation + const tradingPoolFactoryLogs = await getLogs({ + api, + target: tradingPoolFactory, + topics: [ + "0xa1311e5e3c1c2207844ec9211cb2439ea0bce2a76c6ea09d9343f0d0eaddd9f6", + ], + fromBlock: 17605911, + eventAbi: + "event CreateTradingPool(address indexed pool, address indexed nft, address indexed token)", + onlyArgs: true, + }); + var ownerTokens = []; + + // Add trading pools + for (const log of tradingPoolFactoryLogs) { + ownerTokens.push([[log.token, log.nft], log.pool]); + } + + // Get the logs of lending pool creation + const lendingMarketLogs = await getLogs({ + api, + target: lendingMarket, + topics: [ + "0xe981a0f3e894fa2788c75d5d18601ca14c7b544c96311cc7c0a022bcc5900ee8", + ], + fromBlock: 17605911, + eventAbi: + "event CreateLendingPool(address indexed lendingPool, address indexed collection, address indexed asset)", + onlyArgs: true, + }); + + // Add lending pools + for (const log of lendingMarketLogs) { + ownerTokens.push([[log.asset, log.collection], log.lendingPool]); + } + + return sumTokens2({ ownerTokens, api }); +} + +module.exports = { + misrepresentedTokens: false, + ethereum: { tvl }, +}; From c7f051e92cc51415d04835cfa7199d96be4b9b4c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jul 2023 10:20:06 +0200 Subject: [PATCH 0994/1354] chainport: track ADA --- projects/chainport/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/chainport/index.js b/projects/chainport/index.js index d095583ded..8023401711 100644 --- a/projects/chainport/index.js +++ b/projects/chainport/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); +const { sumTokensExport, nullAddress } = require("../helper/sumTokens"); //ETH @@ -88,6 +88,9 @@ const config = { ], owners: [vault1ftm, vault2ftm], }, + cardano: { + owners: ['addr1xxcqzje930yw0hykwhf0a89l62dmjwqqpfzdsppf8rhv9rg2czf3yffs8ar450sw50w4xn3pxxwvkz25s4ygh7pjq23ql4slcu'], + } } Object.keys(config).forEach(chain => { From 1dfb9ebc42f5f789c51cf03f7f2d02829079c411 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 4 Jul 2023 16:20:36 +0800 Subject: [PATCH 0995/1354] add tvl for new pool sake and whiskey (#6706) --- projects/vaultka/index.js | 59 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index 3da29101a3..19f211c55d 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -11,8 +11,67 @@ module.exports = { calls: vaults, }); + const addresses = { + whiskey: "0x6532eFCC1d617e094957247d188Ae6d54093718A", + whiskeyWater: "0xa100E02e861132C4703ae96D6868664f27Eaa431", + sake: "0x45BeC5Bb0EE87181A7Aa20402C66A6dC4A923758", + sakeWater: "0x6b367F9EB22B2E6074E9548689cddaF9224FC0Ab", + }; + + const contractAbis = { + gainsBalance: "function getGainsBalance() view returns (uint256)", + gTokenPrice: "function gTokenPrice() view returns (uint256)", + wWaterBalance: "function balanceOfDAI() public view returns (uint256)", + vlpBalance: "function getVlpBalance() public view returns (uint256)", + stakedVlpBalance: + "function getStakedVlpBalance() public view returns (uint256)", + vlpPrice: "function getVLPPrice() public view returns (uint256)", + waterUSDCBal: "function balanceOfUSDC() public view returns (uint256)", + }; + + const whiskeyGainsBalance = await api.call({ + abi: contractAbis.gainsBalance, + target: addresses.whiskey, + }); + + const whiskeyGTokenPrice = await api.call({ + abi: contractAbis.gTokenPrice, + target: addresses.whiskey, + }); + + const whiskeyWaterDaiBal = await api.call({ + abi: contractAbis.wWaterBalance, + target: addresses.whiskeyWater, + }); + + const sakeWaterUSDCBal = await api.call({ + abi: contractAbis.waterUSDCBal, + target: addresses.sakeWater, + }); + + const vlpBal = await api.call({ + abi: contractAbis.vlpBalance, + target: addresses.sake, + }); + + const StakedVLPBal = await api.call({ + abi: contractAbis.stakedVlpBalance, + target: addresses.sake, + }); + + const sakeVLPPrice = await api.call({ + abi: contractAbis.vlpPrice, + target: addresses.sake, + }); + return { tether: bals.reduce((a, i) => a + i / 1e6, 0), + dai: + (whiskeyGainsBalance * whiskeyGTokenPrice) / 1e36 + + whiskeyWaterDaiBal / 1e18, + "usd-coin": + ((vlpBal + StakedVLPBal) * sakeVLPPrice) / 1e18 / 1e5 + + sakeWaterUSDCBal / 1e6, }; }, }, From a2586930857edc4919f1cf3dd869074d6bd2c948 Mon Sep 17 00:00:00 2001 From: Raul <42917076+elRaulito@users.noreply.github.com> Date: Tue, 4 Jul 2023 10:32:59 +0200 Subject: [PATCH 0996/1354] Added liquidity pools (#6705) Lending pools have been added, liquidity is locked in the smart contract and can be borrowed --- projects/fluidtokens/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js index a6ad125cc3..7ac1e750fa 100644 --- a/projects/fluidtokens/index.js +++ b/projects/fluidtokens/index.js @@ -52,8 +52,9 @@ async function tvl() { const repay_tvl = parseInt(await get("https://api.fluidtokens.com/get-total-available-repayments")); + const pools_tvl= parseInt(await get("https://api.fluidtokens.com/get-total-available-pools")); return { - cardano: (SC_offers_tvl+repay_tvl) / 1e6, + cardano: (SC_offers_tvl+repay_tvl+pools_tvl) / 1e6, }; } From b123422af322e15be26f390dff25522c342a1946 Mon Sep 17 00:00:00 2001 From: devflowx <138456737+devflowx@users.noreply.github.com> Date: Tue, 4 Jul 2023 16:29:37 +0700 Subject: [PATCH 0997/1354] Add FlowX (#6709) --- projects/flowx-finance/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/flowx-finance/index.js diff --git a/projects/flowx-finance/index.js b/projects/flowx-finance/index.js new file mode 100644 index 0000000000..03c6d8d5ab --- /dev/null +++ b/projects/flowx-finance/index.js @@ -0,0 +1,28 @@ +const sui = require("../helper/chain/sui"); + +async function suiTVL() { + const { api } = arguments[3]; + + const poolInfo = ( + await sui.getDynamicFieldObjects({ + parent: + "0xd15e209f5a250d6055c264975fee57ec09bf9d6acdda3b5f866f76023d1563e6", + }) + ).map((i) => i.fields.value.fields); + poolInfo.forEach(({ reserve_x, reserve_y }) => { + api.add( + reserve_x.type.replace(">", "").split("<")[1], + reserve_x.fields.balance + ); + api.add( + reserve_y.type.replace(">", "").split("<")[1], + reserve_y.fields.balance + ); + }); +} + +module.exports = { + sui: { + tvl: suiTVL, + }, +}; From a2c87cf1078273e8966db5c3ea0390048636490e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jul 2023 15:46:59 +0530 Subject: [PATCH 0998/1354] Titi (#6712) * Add files via upload * code refactor --------- Co-authored-by: TiTi Protocol <82432369+titimoney@users.noreply.github.com> --- projects/helper/cache/sumUnknownTokens.js | 4 +- projects/helper/unknownTokens.js | 4 +- projects/titi-finance/index.js | 77 ++++++++++------------- 3 files changed, 37 insertions(+), 48 deletions(-) diff --git a/projects/helper/cache/sumUnknownTokens.js b/projects/helper/cache/sumUnknownTokens.js index 7a05d1e584..c7dae15a2f 100644 --- a/projects/helper/cache/sumUnknownTokens.js +++ b/projects/helper/cache/sumUnknownTokens.js @@ -358,7 +358,7 @@ async function getTokenPrices({ async function sumUnknownTokens({ api, tokensAndOwners = [], balances, coreAssets = [], owner, tokens, chain = 'ethereum', block, restrictTokenRatio, blacklist = [], skipConversion = false, onlyLPs, minLPRatio, - log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, cache = {}, resolveLP = false, + log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, cache = {}, resolveLP = false, abis, }) { if (api) { chain = api.chain ?? chain @@ -377,7 +377,7 @@ async function sumUnknownTokens({ api, tokensAndOwners = [], balances, tokensAndOwners = tokens.map(t => [t, owner]) tokensAndOwners = tokensAndOwners.filter(t => !blacklist.includes(t[0])) await sumTokens2({ api, balances, chain, block, tokensAndOwners, skipFixBalances: true, resolveLP, }) - const { updateBalances, } = await getTokenPrices({ cache, coreAssets, lps: [...tokensAndOwners.map(t => t[0]), ...lps,], chain, block, restrictTokenRatio, blacklist, log_coreAssetPrices, log_minTokenValue, minLPRatio }) + const { updateBalances, } = await getTokenPrices({ cache, coreAssets, lps: [...tokensAndOwners.map(t => t[0]), ...lps,], chain, block, restrictTokenRatio, blacklist, log_coreAssetPrices, log_minTokenValue, minLPRatio, abis, }) await updateBalances(balances, { skipConversion, onlyLPs }) const fixBalances = await getFixBalances(chain) fixBalances(balances) diff --git a/projects/helper/unknownTokens.js b/projects/helper/unknownTokens.js index c7a17dabf2..8eb44efb5b 100644 --- a/projects/helper/unknownTokens.js +++ b/projects/helper/unknownTokens.js @@ -93,9 +93,9 @@ function pool2({ stakingContract, lpToken, chain, transformAddress, coreAssets = function sumTokensExport({ tokensAndOwners = [], coreAssets = [], owner, tokens, restrictTokenRatio, blacklist = [], skipConversion = false, onlyLPs, minLPRatio, - log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, + log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, abis, }) { - return (_, _b, _cb, { api }) => sumUnknownTokens({ api, tokensAndOwners, onlyLPs, minLPRatio, coreAssets, owner, tokens, restrictTokenRatio, blacklist, skipConversion, log_coreAssetPrices, log_minTokenValue, owners, lps, useDefaultCoreAssets, }) + return (_, _b, _cb, { api }) => sumUnknownTokens({ api, tokensAndOwners, onlyLPs, minLPRatio, coreAssets, owner, tokens, restrictTokenRatio, blacklist, skipConversion, log_coreAssetPrices, log_minTokenValue, owners, lps, useDefaultCoreAssets, abis, }) } function staking({ tokensAndOwners = [], diff --git a/projects/titi-finance/index.js b/projects/titi-finance/index.js index 3418ee2270..4642e140c6 100644 --- a/projects/titi-finance/index.js +++ b/projects/titi-finance/index.js @@ -1,8 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensAndLPsSharedOwners, sumTokens2 } = require('../helper/unwrapLPs') -const { stakings } = require("../helper/staking"); - -// -------------------------- +const { sumTokensExport } = require('../helper/unknownTokens') const ethTiTiToken = "0x3bdffA70f4b4E6985eED50453c7C0D4A15dcEc52"; // TiTi Token const ethTiTiStaking = "0x5390Dbf4958F21BB317C72744c110977F4c03311"; // TiTi Staking @@ -10,47 +7,39 @@ const ethTiTiStaking = "0x5390Dbf4958F21BB317C72744c110977F4c03311"; // TiTi const eraTiTiToken = "0x4EBfb78C4780C304dff7de518db630b67e3F044b"; // TiTi Token Era const eraTiTiStaking = "0x1B05972C2e46288201E0432262bd8e925d4fCF94"; // TiTi Staking Era +const ethereumLPs = ['0xca4AEf99b3567Dbb631DF0DCd51D446DB7eb63e5'] +const eraLPs = [ + "0x574E2E833A010997840f368edF6542d8950c2788", + "0x228D400F196760432BD8bcE74Fa1e6580aF4BF03", + "0xd4cb4f38de684122Af261ee822Dc1437601e5424", + "0x512f5a62eE69013643f37C12fd8Be391Db7b4550", +] +const lpReservesAbi = 'function getReserves() view returns (uint _reserve0, uint _reserve1)' -async function ethTvl() { - const balances = {}; - - const ownerAddresses = [ +module.exports = { + methodology: `Calculate the reserve-type assets locked in the contract, including the user's stake funds in MarketMakerFund and the reserve of TiUSD issued by the protocol, TiTi-AMMs used to provide liquidity TiUSD is not included`, + ethereum: { + tvl: sumTokensExport({ + owners: [ "0x49a0c2076DE4801bcadFEf78d0FA63cEC0AD1cB4", // MAMMSwapPair - ]; - - const tokenAddresses = [ - [ADDRESSES.ethereum.USDC, false], // USDC - ]; - - await sumTokensAndLPsSharedOwners(balances, tokenAddresses, ownerAddresses); - - return balances; -} - -// zksync era -async function eraTvl(_, _b, _cb, { api }) { - let balances = {}; - - const ownerAddresses = [ + ], tokens: [ADDRESSES.ethereum.USDC] + }), + staking: sumTokensExport({ owner: ethTiTiStaking, tokens: [ethTiTiToken], lps: ethereumLPs, useDefaultCoreAssets: true, restrictTokenRatio: 5000 }), + pool2: sumTokensExport({ owner: '0x9A132b777FE7af6561BAAb60A03302C697fA8F3B', tokens: ['0x830Ce3859F98104DC600efBFAD90A65386B95404'], lps: ethereumLPs, useDefaultCoreAssets: true, restrictTokenRatio: 1000, resolveLp: true, }), + }, + era: { + tvl: sumTokensExport({ + owners: [ "0xc856175575F6406b59AD6822c3114494990750DC", // MAMMSwapPair - ]; - - const tokenAddresses = [ - ADDRESSES.era.USDC // USDC - ]; - - balances = await sumTokens2({ api, tokens: tokenAddresses, owners: ownerAddresses }); - return balances; -} - -module.exports = { - methodology: `Calculate the reserve-type assets locked in the contract, including the user's stake funds in MarketMakerFund and the reserve of TiUSD issued by the protocol, TiTi-AMMs used to provide liquidity TiUSD is not included`, - ethereum: { - tvl: ethTvl, - // staking: stakings([ethTiTiStaking], [ethTiTiToken], 'ethereum') - }, - era: { - tvl: eraTvl, - // staking: stakings([eraTiTiStaking], eraTiTiToken, "era") - }, + ], tokens: [ADDRESSES.era.USDC] + }), + staking: sumTokensExport({ owner: eraTiTiStaking, tokens: [eraTiTiToken], lps: eraLPs, useDefaultCoreAssets: true, restrictTokenRatio: 5000, abis: { getReservesABI: lpReservesAbi } }), + pool2: sumTokensExport({ + owners: [ + "0xA690DC59d6afC12d6789f46fc211DdD27f1C7f7c", + "0x2cbCE1EFC624138326877C386692E889D8C7c834", + "0xDc8440CdC50bEe0936bB49De82e80c2439dCEc42" + ], tokens: eraLPs, lps: eraLPs, useDefaultCoreAssets: true, abis: { getReservesABI: lpReservesAbi }, resolveLp: true, restrictTokenRatio: 1000, + }), + }, } \ No newline at end of file From 42241ae7c575beeaa1e66ace8e2ed6551d579acd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jul 2023 15:51:09 +0530 Subject: [PATCH 0999/1354] Florence (#6713) * add(tvl): florence finance * add(tvl): florence finance * fix(tvl): florence finance * code refactor * minor fix --------- Co-authored-by: bbjansen --- projects/florence-finance/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/florence-finance/index.js diff --git a/projects/florence-finance/index.js b/projects/florence-finance/index.js new file mode 100644 index 0000000000..87bfbd4f88 --- /dev/null +++ b/projects/florence-finance/index.js @@ -0,0 +1,21 @@ + +const FACTORY_CONTRACT_ETH = "0xD6348E8EacE62Eb3Eb77fBbA8D8c363e375fC455"; +const EURS_CONTRACT_ETH= "0xdb25f211ab05b1c97d595516f45794528a807ad8"; + +async function borrowed(_, _1, _2, { api }) { + // Get all vaults + const vaultIds = await api.call({ + abi: "function getLoanVaultIds() external view returns (string[])", + target: FACTORY_CONTRACT_ETH + }) + const vaultContracts = await api.multiCall({ abi: "function getLoanVault (string loanVaultId) external view returns (address)", target: FACTORY_CONTRACT_ETH, calls: vaultIds }) + const loans = await api.multiCall({ abi: "function loansOutstanding() external view returns (uint256)", calls: vaultContracts}) + // Take the sum of all vault tokens in terms of EURS (1 Loan Vault Token = 1 EURS Statis) on the platform | 18-2 = 16 atomic units (LV-EURS + loans.forEach((val, i) => api.add(EURS_CONTRACT_ETH, val / 1e16)) +} + +module.exports = { + start: 16077400, + methodology: "Data is retrieved on-chain by taking the total sum of all loans outstanding (dominated in EURS Statis) from all platform vaults.", + ethereum: { borrowed, tvl: () => ({}) } +} From 57da0193332f486ad1fb7112358322be5962dd2a Mon Sep 17 00:00:00 2001 From: Igor Onyshchenko Date: Tue, 4 Jul 2023 18:25:50 +0300 Subject: [PATCH 1000/1354] fix(concordex): update concordex values to usd (#6714) --- projects/concordex-io/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/concordex-io/index.js b/projects/concordex-io/index.js index 8f02673e89..7ae0fc91ee 100644 --- a/projects/concordex-io/index.js +++ b/projects/concordex-io/index.js @@ -1,10 +1,11 @@ -const { post } = require('../helper/http') +const { post, get } = require('../helper/http') async function tvl(_, _b, _cb, { api, }) { const body = {"jsonrpc":"2.0","method":"liquidity_pools_list","params":{"filter":{"sort":"EFFECTIVE_TVL","page":1,"is_desc":true,"search":"","limit":999}},"id":0} const { result: { pools }} = await post('https://cdex-liquidity-pool.concordex.io/v1/rpc', body) + const { rates } = await get('https://open.er-api.com/v6/latest/EUR'); return { - tether: pools.reduce((acc, i) => acc + +i.tvl, 0) + tether: pools.reduce((acc, i) => acc + +i.tvl, 0) * rates['USD'] } } From 2234712e5ae8005c244490280f86e6eee3901c4b Mon Sep 17 00:00:00 2001 From: EdgarRBL <99257947+EdgarRBL@users.noreply.github.com> Date: Tue, 4 Jul 2023 12:27:27 -0300 Subject: [PATCH 1001/1354] feat: tashi protocol (#6715) --- projects/tashi/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/tashi/index.js diff --git a/projects/tashi/index.js b/projects/tashi/index.js new file mode 100644 index 0000000000..85239bae3a --- /dev/null +++ b/projects/tashi/index.js @@ -0,0 +1,11 @@ +const {compoundExports} = require('../helper/compound') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports={ + timetravel: true, + doublecounted: false, + methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", + evmos:{ + ...compoundExports("0x053841Bd1D291380726a007eA834Ecd296923260", "evmos", "0x1cd248D72248A0618932F77093Dc4ceC9757759d", ADDRESSES.evmos.WEVMOS) + } +} From d69a28d312a319b103ff4907452f6e395453a88b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jul 2023 17:29:04 +0200 Subject: [PATCH 1002/1354] minor fix --- projects/tashi/index.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/projects/tashi/index.js b/projects/tashi/index.js index 85239bae3a..e08d509c35 100644 --- a/projects/tashi/index.js +++ b/projects/tashi/index.js @@ -1,11 +1,7 @@ -const {compoundExports} = require('../helper/compound') +const { compoundExports } = require('../helper/compound') const ADDRESSES = require('../helper/coreAssets.json') -module.exports={ - timetravel: true, - doublecounted: false, - methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", - evmos:{ - ...compoundExports("0x053841Bd1D291380726a007eA834Ecd296923260", "evmos", "0x1cd248D72248A0618932F77093Dc4ceC9757759d", ADDRESSES.evmos.WEVMOS) - } +module.exports = { + methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", + evmos: compoundExports("0x053841Bd1D291380726a007eA834Ecd296923260", "evmos", "0x1cd248D72248A0618932F77093Dc4ceC9757759d", ADDRESSES.null, undefined, undefined, { fetchBalances: true, }) } From 895bd64aedd82258c6b2d77a49885241d7e07f10 Mon Sep 17 00:00:00 2001 From: Kirill Madorin Date: Tue, 4 Jul 2023 17:34:07 +0200 Subject: [PATCH 1003/1354] add CollectifDAO (#6719) --- projects/CollectifDAO/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/CollectifDAO/index.js diff --git a/projects/CollectifDAO/index.js b/projects/CollectifDAO/index.js new file mode 100644 index 0000000000..c54761837e --- /dev/null +++ b/projects/CollectifDAO/index.js @@ -0,0 +1,18 @@ +const { nullAddress } = require("../helper/tokenMapping"); + +const COLLECTIF_LIQUID_STAKING_POOL_CONTRACT = "0xd0437765D1Dc0e2fA14E97d290F135eFdf1a8a9A"; // pool address +const totalAssetsABI = "function totalAssets() public view returns (uint256)"; + +module.exports = { + methodology: + "Collectif DAO is a non-custodial liquid staking protocol on Filecoin. It allows users stake FIL tokens to the pool and get back clFIL token, which is a native yield bearing liquid staking asset on Filecoin. This TVL calculation returns total amount of assets backing clFIL, that includes buffered capital in the pool and pledged capital to the Filecoin Storage Providers (miners)", + filecoin: { + tvl: async (_, _1, _2, { api }) => { + const totalAssets = await api.call({ abi: totalAssetsABI, target: COLLECTIF_LIQUID_STAKING_POOL_CONTRACT }); + + const tvl = totalAssets.toString(); + + api.add(nullAddress, tvl) + }, + }, +}; From f80a4f399e5ffb1823398676257c73ae356aec05 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 4 Jul 2023 17:38:13 +0100 Subject: [PATCH 1004/1354] add fantom to velocimeter v2 --- projects/velocimeter-v2/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/velocimeter-v2/index.js b/projects/velocimeter-v2/index.js index b3b9d2a7cc..39a4d0fe24 100644 --- a/projects/velocimeter-v2/index.js +++ b/projects/velocimeter-v2/index.js @@ -15,5 +15,12 @@ module.exports = { useDefaultCoreAssets: true, hasStablePools: true, }) + }, + fantom: { + tvl: getUniTVL({ + factory: '0x472f3C3c9608fe0aE8d702f3f8A2d12c410C881A', + useDefaultCoreAssets: true, + hasStablePools: true, + }) } } From 1cf5933a6dddbda35af52e47ef6e56301635b9d1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jul 2023 22:26:50 +0530 Subject: [PATCH 1005/1354] Metastreet (#6704) * projects/metastreet-v2: add queries for tvl and total borrowed value * metasteet-v2: change tvl calc * metastreet v2: use subgraph for nft tvl * update endpoint --------- Co-authored-by: wegory --- projects/metastreet-v2/abi.json | 6 ++ projects/metastreet-v2/index.js | 102 ++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 projects/metastreet-v2/abi.json create mode 100644 projects/metastreet-v2/index.js diff --git a/projects/metastreet-v2/abi.json b/projects/metastreet-v2/abi.json new file mode 100644 index 0000000000..7ecb54a5d2 --- /dev/null +++ b/projects/metastreet-v2/abi.json @@ -0,0 +1,6 @@ +{ + "getPools": "address[]:getPools", + "collateralToken": "address:collateralToken", + "currencyToken": "address:currencyToken", + "liquidityNodes": "function liquidityNodes(uint128 startTick, uint128 endTick) view returns (tuple(uint128 tick, uint128 value, uint128 shares, uint128 available, uint128 pending, uint128 redemptions, uint128 prev, uint128 next)[])" +} \ No newline at end of file diff --git a/projects/metastreet-v2/index.js b/projects/metastreet-v2/index.js new file mode 100644 index 0000000000..d4e1283bb2 --- /dev/null +++ b/projects/metastreet-v2/index.js @@ -0,0 +1,102 @@ +const sdk = require("@defillama/sdk"); +const abi = require("./abi.json"); +const { sumTokens2 } = require('../helper/unwrapLPs') +const { blockQuery } = require('../helper/http') + +const query = ` +query nfts($block: Int) { + loans(where: { or: [{ status: "Active" }, { status: "Liquidated" }] } block: { number: $block }) { + collateralTokenIds + collateralToken { + id + } + pool { + id + } + } +} +` +const endpoint = 'https://api.studio.thegraph.com/query/49216/metastreet-v2-mainnet-devel/version/latest' + +// Constants +const METASTREET_POOL_FACTORY = "0x1c91c822F6C5e117A2abe2B33B0E64b850e67095"; +const MAX_UINT_128 = "0xffffffffffffffffffffffffffffffff" + +// Gets all MetaStreet V2 pools created by PoolFactory and their +// corresponding currency token +async function getAllPoolsAndTokens(block) { + const pools = ( + await sdk.api.abi.call({ + target: METASTREET_POOL_FACTORY, + abi: abi.getPools, + block, + }) + ).output; + + const tokens = ( + await sdk.api.abi.multiCall({ + abi: abi.currencyToken, + calls: pools.map((pool) => ({ + target: pool, + })), + block, + }) + ).output.map((response) => response.output); + + return [pools, tokens]; +} + +// Calculates total borrowed value across all MetaStreet pools +async function getBorrowedValue(values, block, pools, tokens) { + const poolsBorrowedValue = ( + await sdk.api.abi.multiCall({ + abi: abi.liquidityNodes, + calls: pools.map((pool) => ({ + target: pool, + params: [0, MAX_UINT_128], + })), + block, + }) + ).output.map((response) => + response.output.reduce( + (partialSum, node) => partialSum + +node.value - +node.available, + 0 + ) + ); + + // Sum up borrowed value of each pool + for (let i = 0; i < pools.length; i++) { + sdk.util.sumSingleBalance(values, tokens[i], poolsBorrowedValue[i]); + } + + return values; +} + +function getMetaStreetBorrowedValue() { + return async (_, block) => { + const values = {}; + // Get all pools and tokens + const [pools, tokens] = await getAllPoolsAndTokens(block); + await getBorrowedValue(values, block, pools, tokens); + return values; + }; +} + +module.exports = { + ethereum: { + tvl, + borrowed: getMetaStreetBorrowedValue(), + }, + methodology: "TVL is calculated by summing the value of token balances and NFTs across all MetaStreet pools. Total borrowed is calculated by subtracting the tokens available from the total value of all liquidity nodes across all pools.", + start: 17497132, // Block number of PoolFactory creation +}; + +async function tvl(_, _b, _cb, { api, }) { + const pools = await api.call({ target: METASTREET_POOL_FACTORY, abi: abi.getPools, }) + const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools }) + // const collateralTokens = await api.multiCall({ abi: abi.collateralToken, calls: pools }) + const ownerTokens = pools.map((pool, i) => [[tokens[i]], pool,]) + const { loans } = await blockQuery(endpoint, query, { api, blockCatchupLimit: 600, }) + loans.forEach(loan => api.add(loan.collateralToken.id, loan.collateralTokenIds.length)) + return sumTokens2({ api, ownerTokens, }) +} \ No newline at end of file From e27b0d5964a9411fc546a6596aa4d569b462e2fb Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:05:00 -0400 Subject: [PATCH 1006/1354] Addition of Arbitrum vaults and Polygon Retro vaults to TVL calculation (#6717) * Addition of Arbitrum vaults and Polygon Retro vaults to TVL calculation * ichifarm: code refactor --------- Co-authored-by: Tatyana Stemkovski Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ichifarm/index.js | 293 +++++++++++-------------------------- 1 file changed, 85 insertions(+), 208 deletions(-) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index aae4553e78..3245a3e22b 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -1,26 +1,15 @@ +const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const { stakings } = require("../helper/staking"); -const { transformBalances } = require('../helper/portedTokens') const abi = require("./abi.json"); -const { createIncrementArray } = require('../helper/utils'); -const { sumTokens2, unwrapUniswapV3NFTs } = require('../helper/unwrapLPs'); -const { GraphQLClient, gql } = require('graphql-request'); - +const { sumTokens2, } = require('../helper/unwrapLPs'); const ichiLegacy = "0x903bEF1736CDdf2A537176cf3C64579C3867A881"; const ichi = "0x111111517e4929D3dcbdfa7CCe55d30d4B6BC4d6"; const xIchi = "0x70605a6457B0A8fBf1EEE896911895296eAB467E"; -const tokenFactory = "0xD0092632B9Ac5A7856664eeC1abb6E3403a6A36a"; const farmContract = "0x275dFE03bc036257Cd0a713EE819Dbd4529739c8"; const ichiLending = "0xaFf95ac1b0A78Bd8E4f1a2933E373c66CC89C0Ce"; -const unilps = [ - // SLP - "0x9cD028B1287803250B1e226F0180EB725428d069", - // UNI-V2 lP - "0xd07D430Db20d2D7E0c4C11759256adBCC355B20C" -] const poolWithTokens = [ // BANCOR ["0x4a2F0Ca5E03B2cF81AebD936328CF2085037b63B", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C"]], @@ -30,206 +19,94 @@ const poolWithTokens = [ ["0x58378f5F8Ca85144ebD8e1E5e2ad95B02D29d2BB", ["0x903bEF1736CDdf2A537176cf3C64579C3867A881", ADDRESSES.ethereum.WETH]] ] -const graphUrl = { - 'ethereum': 'https://api.thegraph.com/subgraphs/name/ichi-org/v1', - 'polygon': 'https://api.thegraph.com/subgraphs/name/ichi-org/polygon-v1' -} - -const graphQuery = gql` -query { - ichiVaults { - id - tokenA - tokenB - } -} -`; - -async function getVaultsByGraph(chain = 'ethereum') { - const graphQLClient = new GraphQLClient(graphUrl[chain]); - - const data = await graphQLClient.request(graphQuery); - - const vaults = []; - data.ichiVaults.forEach( v => vaults.push({address: v.id, tokenA: v.tokenA, tokenB: v.tokenB})); - - return vaults; -} - -async function vaultBalances(block, chain = 'ethereum', oneTokenList){ - const vaults = await getVaultsByGraph(chain) - - const poolsCalls = vaults.map(i => ({ target: i.address })) - - const { output: vaultBalances } = await sdk.api.abi.multiCall({ - abi: abi.getTotalAmounts, - calls: poolsCalls, - chain, block, - }) - - const balances = {} - vaultBalances.forEach((data, i) => { - addBalance(vaults[i].tokenA, data.output.total0) - addBalance(vaults[i].tokenB, data.output.total1) - }) - - return balances; - - function addBalance(token, balance) { - if (oneTokenList.includes(token.toLowerCase())) - return; - sdk.util.sumSingleBalance(balances, token, balance) - } -} - -const oneFactory = { - 'ethereum': '0xD0092632B9Ac5A7856664eeC1abb6E3403a6A36a', - 'polygon': '0x101eB16BdbA37979a771c86e1CAAfbaDbABfc879' -} - -async function oneTokenBalances(block, chain='ethereum') { - - // get list of all oneTokens in system - const { output: oneTokenCount } = await sdk.api.abi.call({ - target: oneFactory[chain], - abi: abi.oneTokenCount, - chain, block, - }) - - const oneTokenParams = createIncrementArray(oneTokenCount).map(i => ({ params: i })) - const { output: oneTokens } = await sdk.api.abi.multiCall({ - target: oneFactory[chain], - abi: abi.oneTokenAtIndex, - calls: oneTokenParams, - chain, block, - }) - - const oneTokenList = oneTokens.map(i => ( i.output.toLowerCase() )) - - // get list of all tokens in the system - const { output: foreignTokenCount } = await sdk.api.abi.call({ - target: oneFactory[chain], - abi: abi.foreignTokenCount, - chain, block, - }) - - const foreignTokenParams = createIncrementArray(foreignTokenCount).map(i => ({ params: i})) - const { output: foreignTokens } = await sdk.api.abi.multiCall({ - target: oneFactory[chain], - abi: abi.foreignTokenAtIndex, - calls: foreignTokenParams, - chain, block, - }) - - const foreignTokenList = foreignTokens.map(i => (i.output)) - - // ICHI is not admited as foreign token to polygon oneToken Factory but it is used to back oneToken treasury - if (chain == 'polygon') { - foreignTokenList.push(ichi) - } - - // get list of all strategies in the system - const { output: moduleCount } = await sdk.api.abi.call({ - target: oneFactory[chain], - abi: abi.moduleCount, - chain, block, - }) - - const strategyParams = createIncrementArray(moduleCount).map(i => ({ params: i})) - const { output: moduleAtIndex } = await sdk.api.abi.multiCall({ - target: oneFactory[chain], - abi: abi.moduleAtIndex, - calls: strategyParams, - chain, block, - }) - - const modulesList = moduleAtIndex.map(i => ( {params: i.output })) - - const { output: moduleDetails } = await sdk.api.abi.multiCall({ - target: oneFactory[chain], - abi: abi.modules, - calls: modulesList, - chain, block, - }) - - const strategiesList = [] - moduleDetails.forEach((data, i) => { - if (data.output.moduleType == 2) { //modeuleType 2 are strategies - strategiesList.push(modulesList[i].params) - } - }) - - // get list of all owners of oneTokens - const ownerCalls = oneTokens.map(i => ( { target: i.output })) - const { output: oneTokenOwners } = await sdk.api.abi.multiCall({ - abi: abi.owner, - calls: ownerCalls, - chain, block, - }) - - const oneTokenOwnersList = oneTokenOwners.map(i => (i.output)) - - // create large list of tokens and owners list; - // owners are all onetokens, strategies, and owners of onetokens - // tokens are all tokens in the system but will exclude onetokens in the strategies - - const toa = [] - - oneTokenList.forEach( oneToken => foreignTokenList.forEach( foreignToken => toa.push([foreignToken, oneToken]))) - strategiesList.forEach( strategy => foreignTokenList.forEach( foreignToken => toa.push([foreignToken, strategy]))) - oneTokenOwnersList.forEach( owner => foreignTokenList.forEach( foreignToken => toa.push([foreignToken, owner]))) - - const balances = await sumTokens2({ tokensAndOwners: toa, block, chain, blacklistedTokens: oneTokenList }) - - const uniV3NFTHolders = [...strategiesList, ...oneTokenOwnersList] - - await unwrapUniswapV3NFTs({ balances, owners: uniV3NFTHolders, chain, block }) - - return { balances, oneTokenList }; -} - -async function tvl(timestamp, block) { - - const { balances, oneTokenList } = await oneTokenBalances(block) - - const vBalances = await vaultBalances(block, undefined, oneTokenList) - - for(var token in vBalances) - sdk.util.sumSingleBalance(balances, token, vBalances[token]) - - return balances -} - -async function polygonTvl(_, _b, { polygon: block }){ - const chain = 'polygon' - - const { balances, oneTokenList } = await oneTokenBalances(block, chain) - - const vBalances = await vaultBalances(block, chain, oneTokenList) - const vBalancesTransformed = await transformBalances(chain,vBalances) - for(var token in vBalancesTransformed) - sdk.util.sumSingleBalance(balances, token, vBalancesTransformed[token]) - - return balances; -} - module.exports = { methodology: "Tokens deposited to mint oneTokens excluding oneTokens , Vault deposits", misrepresentedTokens: true, doublecounted: true, +} // node test.js projects/ichifarm/index.js + +const defaultEvent = 'event ICHIVaultCreated (address indexed sender, address ichiVault, address tokenA, bool allowTokenA, address tokenB, bool allowTokenB, uint24 fee, uint256 count)' +const defaultTopic = '0xde147f43b6837f282eee187234c866cf001806167325f3ea883e36bed0c16a20' + +const config = { ethereum: { - tvl, - pool2: async (_, block) => { - const toa = [ - ['0x9cd028b1287803250b1e226f0180eb725428d069', farmContract], - ['0xd07d430db20d2d7e0c4c11759256adbcc355b20c', farmContract], - ] - poolWithTokens.forEach(([o, tokens]) => tokens.forEach(t => toa.push([t, o]))) - return sumTokens2({ tokensAndOwners: toa, block, resolveLP: true, }) - }, - staking: stakings([xIchi, ichiLending] , ichiLegacy) + vaultConfigs: [ + { factory: '0x5a40DFaF8C1115196A1CDF529F97122030F26112', fromBlock: 13671610, }, + ], + oneFactory: '0xD0092632B9Ac5A7856664eeC1abb6E3403a6A36a', + }, + arbitrum: { + vaultConfigs: [ + { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 102858581, }, + ], }, polygon: { - tvl: polygonTvl + vaultConfigs: [ + { factory: '0x2d2c72c4dc71aa32d64e5142e336741131a73fc0', fromBlock: 25697834, }, + { factory: '0xb2f44D8545315cDd0bAaB4AC7233218b932a5dA7', fromBlock: 44370370, }, // v2-retro + ], + oneFactory: '0x101eB16BdbA37979a771c86e1CAAfbaDbABfc879', + }, +} + +Object.keys(config).forEach(chain => { + const { vaultConfigs = [], oneFactory } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const blacklistedTokens = [] + if (oneFactory) { + const oneTokens = await api.fetchList({ lengthAbi: abi.oneTokenCount, itemAbi: abi.oneTokenAtIndex, target: oneFactory }) + const oneTokenOwners = await api.multiCall({ abi: abi.owner, calls: oneTokens }) + const foreignTokens = await api.fetchList({ lengthAbi: abi.foreignTokenCount, itemAbi: abi.foreignTokenAtIndex, target: oneFactory }) + const modulesList = await api.fetchList({ lengthAbi: abi.moduleCount, itemAbi: abi.moduleAtIndex, target: oneFactory }) + const moduleDetails = await api.multiCall({ abi: abi.modules, calls: modulesList, target: oneFactory }) + + const strategiesList = [] + moduleDetails.forEach((data, i) => { + if (data.moduleType == 2) { //modeuleType 2 are strategies + strategiesList.push(modulesList[i]) + } + }) + if (api.chain === 'polygon') { + foreignTokens.push(ichi) + } + + blacklistedTokens.push(...oneTokens.map(i => i.toLowerCase())) + await sumTokens2({ api, tokens: foreignTokens, owners: [oneTokens, strategiesList].flat(), blacklistedTokens }) + const uniV3NFTHolders = [...strategiesList, ...oneTokenOwners] + + await sumTokens2({ api, owners: uniV3NFTHolders, resolveUniV3: true, blacklistedTokens, }) + } + + for (const { factory, fromBlock, topic = defaultTopic, eventAbi = defaultEvent } of vaultConfigs) { + const logs = await getLogs({ + api, + target: factory, + topics: [topic], + eventAbi: eventAbi, + onlyArgs: true, + fromBlock, + }) + const vaultBalances = await api.multiCall({ abi: abi.getTotalAmounts, calls: logs.map(l => l.ichiVault) }) + vaultBalances.forEach((b, i) => { + const { tokenA, tokenB } = logs[i] + if (!blacklistedTokens.includes(tokenA.toLowerCase())) api.add(tokenA, b.total0) + if (!blacklistedTokens.includes(tokenB.toLowerCase())) api.add(tokenB, b.total1) + }) + } + + return api.getBalances() + } } -} // node test.js projects/ichifarm/index.js \ No newline at end of file +}) + +module.exports.ethereum.pool2 = async (_, block) => { + const toa = [ + ['0x9cd028b1287803250b1e226f0180eb725428d069', farmContract], + ['0xd07d430db20d2d7e0c4c11759256adbcc355b20c', farmContract], + ] + poolWithTokens.forEach(([o, tokens]) => tokens.forEach(t => toa.push([t, o]))) + return sumTokens2({ tokensAndOwners: toa, block, }) +} + +module.exports.ethereum.staking = stakings([xIchi, ichiLending], ichiLegacy) From 1bfb7b5c798c7a491694882a7b390ed41385c315 Mon Sep 17 00:00:00 2001 From: Deepcryptodive <61325205+Deepcryptodive@users.noreply.github.com> Date: Tue, 4 Jul 2023 19:05:56 +0100 Subject: [PATCH 1007/1354] Add support for GoodGhosting smart contracts v2.0.5 (#6718) Recently, HaloFi (prev. GoodGhosting) added support for Curve finance. This bumped up the smart contract version to v2.0.5. --- projects/good-ghosting/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/good-ghosting/index.js b/projects/good-ghosting/index.js index 8e13b050dc..0e333c145d 100644 --- a/projects/good-ghosting/index.js +++ b/projects/good-ghosting/index.js @@ -11,7 +11,7 @@ const chainIdMap = { }; const contractVersions = { - v200: ["2.0.0", "2.0.1", "2.0.2", "2.0.3", "2.0.4"], + v200: ["2.0.0", "2.0.1", "2.0.2", "2.0.3", "2.0.4", "2.0.5"], v001: "0.0.1", v002: "0.0.2", v003: "0.0.3", From 993bb1ed648e45f371164126563a89de4bcbf7d2 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 5 Jul 2023 00:32:02 +0100 Subject: [PATCH 1008/1354] fix gearbox --- projects/gearbox/abi.json | 7 +++ projects/gearbox/events.js | 121 +++++++++++++++++++++++++------------ projects/gearbox/index.js | 8 +-- 3 files changed, 91 insertions(+), 45 deletions(-) diff --git a/projects/gearbox/abi.json b/projects/gearbox/abi.json index a3f550f105..56d8f3d468 100644 --- a/projects/gearbox/abi.json +++ b/projects/gearbox/abi.json @@ -22,5 +22,12 @@ "event LiquidateCreditAccount(address indexed borrower, address indexed liquidator, address indexed to, uint256 remainingFunds)", "event TransferAccount(address indexed oldOwner, address indexed newOwner)", "event LiquidateExpiredCreditAccount(address indexed borrower, address indexed liquidator, address indexed to, uint256 remainingFunds)" + ], + "creditManagerV2": [ + "function creditFacade() view returns (address addr)", + "event NewConfigurator(address indexed newConfigurator)" + ], + "creditConfiguratorV2": [ + "event CreditFacadeUpgraded(address indexed newCreditFacade)" ] } \ No newline at end of file diff --git a/projects/gearbox/events.js b/projects/gearbox/events.js index 9697a7519a..04c7df166c 100644 --- a/projects/gearbox/events.js +++ b/projects/gearbox/events.js @@ -1,13 +1,52 @@ -const { api, api2, } = require("@defillama/sdk"); +const { api, api2 } = require("@defillama/sdk"); const { providers } = require("@defillama/sdk/build/general"); const { Contract, BigNumber } = require("ethers"); const abi = require("./abi.json"); -const getV2CAs = async (creditFacade, block) => { +const getV2CAs = async (creditManager, block) => { const eventsByDate = []; const accounts = new Set(); + const cm = new Contract( + creditManager, + abi["creditManagerV2"], + providers["ethereum"] + ); + const creditFacade = await cm.creditFacade(); + + const ccAddrs = ( + await cm.queryFilter( + { + address: creditManager, + topics: [cm.interface.getEventTopic("NewConfigurator")], + }, + undefined + ) + ).map((e) => e.args.newConfigurator); + + const cfAddrs = []; + + for (let cca of ccAddrs) { + const cc = new Contract( + cca, + abi["creditConfiguratorV2"], + providers["ethereum"] + ); + + const cfs = ( + await cc.queryFilter( + { + address: cca, + topics: [cc.interface.getEventTopic("CreditFacadeUpgraded")], + }, + undefined + ) + ).map((e) => e.args.newCreditFacade); + + cfAddrs.push(...cfs); + } + const addToEvents = (e, address, operation) => { eventsByDate.push({ time: e.blockNumber * 100000 + e.logIndex, @@ -18,38 +57,38 @@ const getV2CAs = async (creditFacade, block) => { }); }; - const cf = new Contract( - creditFacade, - abi["filtersV2"], - providers["ethereum"] - ); - - const topics = { - OpenCreditAccount: cf.interface.getEventTopic("OpenCreditAccount"), - CloseCreditAccount: cf.interface.getEventTopic("CloseCreditAccount"), - LiquidateCreditAccount: cf.interface.getEventTopic( - "LiquidateCreditAccount" - ), - LiquidateExpiredCreditAccount: cf.interface.getEventTopic( - "LiquidateExpiredCreditAccount" - ), - TransferAccount: cf.interface.getEventTopic("TransferAccount"), - }; - - const logs = ( - await cf.queryFilter( - { - address: creditFacade, - topics: [Object.values(topics)], - }, - undefined, - block - ) - ).map((log) => ({ - ...cf.interface.parseLog(log), - blockNumber: log.blockNumber, - logIndex: log.logIndex, - })); + const logs = []; + + for (let cfAddr of cfAddrs) { + const cf = new Contract(cfAddr, abi["filtersV2"], providers["ethereum"]); + + const topics = { + OpenCreditAccount: cf.interface.getEventTopic("OpenCreditAccount"), + CloseCreditAccount: cf.interface.getEventTopic("CloseCreditAccount"), + LiquidateCreditAccount: cf.interface.getEventTopic( + "LiquidateCreditAccount" + ), + LiquidateExpiredCreditAccount: cf.interface.getEventTopic( + "LiquidateExpiredCreditAccount" + ), + TransferAccount: cf.interface.getEventTopic("TransferAccount"), + }; + const l = ( + await cf.queryFilter( + { + address: cfAddr, + topics: [Object.values(topics)], + }, + undefined + ) + ).map((log) => ({ + ...cf.interface.parseLog(log), + blockNumber: log.blockNumber, + logIndex: log.logIndex, + })); + + logs.push(...l); + } logs.forEach((log) => { switch (log.name) { @@ -99,9 +138,9 @@ const getV2CAs = async (creditFacade, block) => { return totalValue[0] ? totalValue - .map((t) => t.output) - .reduce((a, c) => a.add(BigNumber.from(c)), BigNumber.from("0")) - .toString() + .map((t) => t.output) + .reduce((a, c) => a.add(BigNumber.from(c)), BigNumber.from("0")) + .toString() : "0"; }; @@ -183,10 +222,12 @@ const getV1CAs = async (creditManager, block) => { ).args.creditAccount ); - const totalValue= await api2.abi.multiCall({ + const totalValue = await api2.abi.multiCall({ abi: abi["calcTotalValue"], target: cf, - calls: openCAs.filter(i => i !== '0xaBBd655b3791175113c1f1146D3B369494A2b815'), // filtered out address throwing error + calls: openCAs.filter( + (i) => i !== "0xaBBd655b3791175113c1f1146D3B369494A2b815" + ), // filtered out address throwing error block, }); @@ -195,4 +236,4 @@ const getV1CAs = async (creditManager, block) => { .toString(); }; -module.exports = { getV1CAs, getV2CAs }; +module.exports = { getV1CAs, getV2CAs }; \ No newline at end of file diff --git a/projects/gearbox/index.js b/projects/gearbox/index.js index 0030759a16..11e8fd95bb 100644 --- a/projects/gearbox/index.js +++ b/projects/gearbox/index.js @@ -68,7 +68,7 @@ const getV2TVL = async (block) => { // Get all CA Balances const caValues = await Promise.all( - creditManagers.map((cm) => getV2CAs(cm.creditFacade, block)) + creditManagers.map((cm) => getV2CAs(cm.addr, block)) ); return creditManagers.map((cm, i) => ({ @@ -122,12 +122,10 @@ const tvl = async (timestamp, block) => { }; module.exports = { - hallmarks:[ - [1666569600, "LM begins"], - ], + hallmarks: [[1666569600, "LM begins"]], ethereum: { tvl, }, methodology: `Retrieves the tokens in each Gearbox pool (WETH/DAI/WBTC/USDC/wstETH) & value of all Credit Accounts (V1 & V2) denominated in the underlying token.`, misrepresentedTokens: true, -}; +}; \ No newline at end of file From 742e0eefdeed1c8057d6d8aa5f6da0ed56ee49b6 Mon Sep 17 00:00:00 2001 From: 4TT1L4 <2914096+4TT1L4@users.noreply.github.com> Date: Wed, 5 Jul 2023 09:27:50 +0200 Subject: [PATCH 1009/1354] Updated the Genius Yield Adapter: Added GENSX Staking (#6723) --- projects/genius-yield/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/genius-yield/index.js b/projects/genius-yield/index.js index 900c5167e5..acf9992430 100644 --- a/projects/genius-yield/index.js +++ b/projects/genius-yield/index.js @@ -4,13 +4,14 @@ const gens = 'dda5fdb1002f7389b33e036b6afee82a8189becb6cba852e8b79b4fb0014df1047 const nmkr = '5dac8536653edc12f6f5e1045d8164b9f59998d3bdc300fc928434894e4d4b52' const ntx = 'edfd7a1d77bcb8b884c474bdc92a16002d1fb720e454fa6e993444794e5458' const emp = '6c8642400e8437f737eb86df0fc8a8437c760f48592b1ba8f5767e81456d706f7761' +const gensx = 'fbae99b8679369079a7f6f0da14a2cf1c2d6bfd3afdf3a96a64ab67a0014df1047454e5358' const owner = 'addr1w8r99sv75y9tqfdzkzyqdqhedgnef47w4x7y0qnyts8pznq87e4wh' module.exports = { timetravel: false, cardano: { - staking: sumTokensExport({ owner, tokens: [gens, nmkr, ntx, emp]}), + staking: sumTokensExport({ owner, tokens: [gens, nmkr, ntx, emp, gensx]}), tvl: () => ({}) } }; From 55000c8e08ed3dff8d52326c317512082a73f39b Mon Sep 17 00:00:00 2001 From: happywomwom-wombat <129473631+happywomwom-wombat@users.noreply.github.com> Date: Wed, 5 Jul 2023 15:32:44 +0800 Subject: [PATCH 1010/1354] add snbnb address (#6722) --- projects/wombat-exchange/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 697b6cdeb9..12b5007dfa 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -24,6 +24,7 @@ module.exports = { smartHAY: "0xa61dccC6c6E34C8Fbf14527386cA35589e9b8C27", wBETH: "0x8b892b6Ea1d0e5B29b719d6Bd6eb9354f1cDE060", ankrETH: "0x1b507b97c89eDE3E40d1b2Ed92972197c6276D35", + SnBNB: "0xF1e604e9A31c3b575f91CF008445B7ce06BF3fef", }, }, arbitrum: { From 58079097dd4b4c30b85d2ebccb3d5a5858b86f80 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 5 Jul 2023 11:08:48 +0200 Subject: [PATCH 1011/1354] track surge --- projects/surge/index.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 projects/surge/index.js diff --git a/projects/surge/index.js b/projects/surge/index.js new file mode 100644 index 0000000000..4a4da24f20 --- /dev/null +++ b/projects/surge/index.js @@ -0,0 +1,31 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + arbitrum: { factory: '0xDaD057C49d957c98D20285935B0a87f23907e22C', fromBlock: 107875529, } +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + const _getLogs = (api) => getLogs({ + api, + target: factory, + topics: ['0xfd4f84c703fbc9ed47d26b2769a6133a02ea690b88125c716c7321699d0115fa'], + eventAbi: 'event PoolDeployed(uint256 poolId, address pool, address indexed collateralToken, address indexed loanToken, uint256 indexed maxCollateralRatioMantissa, uint256 surgeMantissa, uint256 collateralRatioFallDuration, uint256 collateralRatioRecoveryDuration, uint256 minRateMantissa, uint256 surgeRateMantissa, uint256 maxRateMantissa)', + onlyArgs: true, + fromBlock, + }) + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await _getLogs(api) + const ownerTokens = logs.map(l => [[l.collateralToken, l.loanToken], l.pool]) + return sumTokens2({ api, ownerTokens, }) + }, + borrowed: async (_, _b, _cb, { api, }) => { + const logs = await _getLogs(api) + const borrowed = await api.multiCall({ abi: 'uint256:lastTotalDebt', calls: logs.map(i => i.pool) }) + api.addTokens(logs.map(i => i.loanToken), borrowed) + return api.getBalances() + }, + } +}) \ No newline at end of file From 3eb1448f8926139bb5e6ec79eac6c3d00630ff5f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 5 Jul 2023 12:59:49 +0200 Subject: [PATCH 1012/1354] fix filecoin issue --- projects/helper/coreAssets.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 44468cc768..107a52eb0f 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1312,6 +1312,10 @@ "chihuahua": { "HUAHUA": "uhuahua" }, + "filecoin": { + "WFIL": "0xce5805cf6c84f71d2897f632e0aa60d2430ccd2a", + "USDT": "0x422849B355039bC58F2780cc4854919fC9cfaF94" + }, "pulse": { "WPLS": "0xa1077a294dde1b09bb078844df40758a5d0f9a27", "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", From 9dac74df4d57935ece24b9cb7535fe4dbaa8ae3c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 5 Jul 2023 13:05:21 +0200 Subject: [PATCH 1013/1354] fixed bifrost staking --- projects/bifrost-staking/index.js | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/projects/bifrost-staking/index.js b/projects/bifrost-staking/index.js index b6e5b35c85..70e47cfb16 100644 --- a/projects/bifrost-staking/index.js +++ b/projects/bifrost-staking/index.js @@ -8,14 +8,14 @@ module.exports = { tvl: async () => { const { bifrost } = getExports("bifrost-staking", ['bifrost']) const tvl = await bifrost.tvl() - return { 'bifrost-native-coin': tvl['bifrost-native-coin'], polkadot: tvl.polkadot, kusama: tvl.kusama } + return { 'bifrost-native-coin': tvl['bifrost-native-coin'], polkadot: tvl.polkadot, kusama: tvl.kusama, moonbeam: tvl.moonbeam, moonriver: tvl.moonriver, } } }, ethereum: { tvl: async (_, _1, _2, { api }) => { const vETH = await api.call({ target: '0x4bc3263eb5bb2ef7ad9ab6fb68be80e43b43801f', abi: 'uint256:totalSupply' }) const contract_veth1 = await api.call({ target: '0xc3d088842dcf02c13699f936bb83dfbbc6f721ab', abi: 'uint256:totalSupply' }) - const contract_veth1_null_address_balance = await api.call({ target: '0xc3d088842dcf02c13699f936bb83dfbbc6f721ab', abi: 'erc20:balanceOf',params:'0x000000000000000000000000000000000000dEaD' }) + const contract_veth1_null_address_balance = await api.call({ target: '0xc3d088842dcf02c13699f936bb83dfbbc6f721ab', abi: 'erc20:balanceOf', params: '0x000000000000000000000000000000000000dEaD' }) return { [nullAddress]: new BigNumber(vETH).plus(contract_veth1).minus(contract_veth1_null_address_balance).toString(), @@ -29,18 +29,4 @@ module.exports = { return { filecoin } } }, - moonbeam: { - tvl: async () => { - const { bifrost } = getExports("bifrost-staking", ['bifrost']) - const { moonbeam } = await bifrost.tvl() - return { moonbeam } - } - }, - moonriver: { - tvl: async () => { - const { bifrost } = getExports("bifrost-staking", ['bifrost']) - const { moonriver } = await bifrost.tvl() - return { moonriver } - } - } } From fd74af6dff2fb144c9fc0407bcdd7065b14cee01 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 5 Jul 2023 12:44:27 +0100 Subject: [PATCH 1014/1354] Something --- projects/entities/a16z-cold.js | 14 +++++++++ projects/entities/akg-ventures.js | 12 ++++++++ projects/entities/animoca-brands.js | 12 ++++++++ projects/entities/arca.js | 22 ++++++++++++++ projects/entities/axia8-venture.js | 17 +++++++++++ projects/entities/binance-labs.js | 12 ++++++++ projects/entities/block-one.js | 12 ++++++++ projects/entities/blockchain-capital.js | 14 +++++++++ projects/entities/chain-capital.js | 22 ++++++++++++++ projects/entities/coin98-venture.js | 28 ++++++++++++++++++ projects/entities/defiance-capital.js | 32 ++++++++++++++++++++ projects/entities/delphi-digital.js | 22 ++++++++++++++ projects/entities/digital-finance-group.js | 22 ++++++++++++++ projects/entities/dragonfly-capital.js | 18 ++++++++++++ projects/entities/fbg-capital.js | 18 ++++++++++++ projects/entities/fenbushi-capital.js | 18 ++++++++++++ projects/entities/framework-ventures.js | 11 +++++++ projects/entities/genesis-trading.js | 25 ++++++++++++++++ projects/entities/id-capital.js | 34 ++++++++++++++++++++++ projects/entities/jump-capital.js | 25 ++++++++++++++++ projects/entities/mechanism-capital.js | 13 +++++++++ projects/entities/multi-chain-capital.js | 31 ++++++++++++++++++++ projects/entities/ngc-ventures.js | 31 ++++++++++++++++++++ projects/entities/pantera-capital.js | 12 ++++++++ projects/entities/paradigm-capital.js | 15 ++++++++++ projects/entities/plutus-vc.js | 16 ++++++++++ projects/entities/polychain-capital.js | 13 +++++++++ projects/entities/silkroad-fbifunds.js | 14 +++++++++ projects/helper/cex.js | 11 ++++++- 29 files changed, 545 insertions(+), 1 deletion(-) create mode 100644 projects/entities/a16z-cold.js create mode 100644 projects/entities/akg-ventures.js create mode 100644 projects/entities/animoca-brands.js create mode 100644 projects/entities/arca.js create mode 100644 projects/entities/axia8-venture.js create mode 100644 projects/entities/binance-labs.js create mode 100644 projects/entities/block-one.js create mode 100644 projects/entities/blockchain-capital.js create mode 100644 projects/entities/chain-capital.js create mode 100644 projects/entities/coin98-venture.js create mode 100644 projects/entities/defiance-capital.js create mode 100644 projects/entities/delphi-digital.js create mode 100644 projects/entities/digital-finance-group.js create mode 100644 projects/entities/dragonfly-capital.js create mode 100644 projects/entities/fbg-capital.js create mode 100644 projects/entities/fenbushi-capital.js create mode 100644 projects/entities/framework-ventures.js create mode 100644 projects/entities/genesis-trading.js create mode 100644 projects/entities/id-capital.js create mode 100644 projects/entities/jump-capital.js create mode 100644 projects/entities/mechanism-capital.js create mode 100644 projects/entities/multi-chain-capital.js create mode 100644 projects/entities/ngc-ventures.js create mode 100644 projects/entities/pantera-capital.js create mode 100644 projects/entities/paradigm-capital.js create mode 100644 projects/entities/plutus-vc.js create mode 100644 projects/entities/polychain-capital.js create mode 100644 projects/entities/silkroad-fbifunds.js diff --git a/projects/entities/a16z-cold.js b/projects/entities/a16z-cold.js new file mode 100644 index 0000000000..58642a2fb0 --- /dev/null +++ b/projects/entities/a16z-cold.js @@ -0,0 +1,14 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x7D325A9C8F10758188641FE91cFD902499edC782", + "0x2B1Ad6184a6B0fac06bD225ed37C2AbC04415fF4", + "0x05E793cE0C6027323Ac150F6d45C2344d28B6019", //14k MKR staking + "0x0f50D31B3eaefd65236dd3736B863CfFa4c63C4E" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/akg-ventures.js b/projects/entities/akg-ventures.js new file mode 100644 index 0000000000..9bee71c524 --- /dev/null +++ b/projects/entities/akg-ventures.js @@ -0,0 +1,12 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x19a504b1096aE59624105E737B22F5943B1a4846", + + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/animoca-brands.js b/projects/entities/animoca-brands.js new file mode 100644 index 0000000000..ffce59fb8c --- /dev/null +++ b/projects/entities/animoca-brands.js @@ -0,0 +1,12 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xd6AF301A8770659c1Dc880843db4d1aaA01048b4", + "0xE929c67Db94f5b1541FB241eB3E5CbC6468c37e6", //binance deposited account + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/arca.js b/projects/entities/arca.js new file mode 100644 index 0000000000..3a88c09640 --- /dev/null +++ b/projects/entities/arca.js @@ -0,0 +1,22 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x23A5eFe19Aa966388E132077d733672cf5798C03", //1.6m wANT staking + "0xa66f8Db3B8F1e4c79e52ac89Fec052811F4dbd19", // 20,189.10 GMX staked + "0xe05A884D4653289916D54Ce6aE0967707c519879" + ], + }, + polygon: { + owners: [ + "0xa66f8Db3B8F1e4c79e52ac89Fec052811F4dbd19", + ], + }, + arbitrum: { + owners: [ + "0xa66f8Db3B8F1e4c79e52ac89Fec052811F4dbd19", + ], + }, +} +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/axia8-venture.js b/projects/entities/axia8-venture.js new file mode 100644 index 0000000000..5bd34c5bec --- /dev/null +++ b/projects/entities/axia8-venture.js @@ -0,0 +1,17 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x717821AAe2A45C5c5c5bcDa7A8662cD3df2385E5", + + ], + }, + bsc: { + owners: [ + "0x717821AAe2A45C5c5c5bcDa7A8662cD3df2385E5", + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/binance-labs.js b/projects/entities/binance-labs.js new file mode 100644 index 0000000000..24f8d7b673 --- /dev/null +++ b/projects/entities/binance-labs.js @@ -0,0 +1,12 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xfad531c62757cf18391E48Ee0959ab9ba106deCc", + + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/block-one.js b/projects/entities/block-one.js new file mode 100644 index 0000000000..f21dc32d1f --- /dev/null +++ b/projects/entities/block-one.js @@ -0,0 +1,12 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x24eaeCf1784c3bf9b01E011976E3D7ba917e2219", //binance deposited account + "0x2997A7a817e4b7ff60082b948a49fDAEfc042E4e" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/blockchain-capital.js b/projects/entities/blockchain-capital.js new file mode 100644 index 0000000000..b08e4bf1be --- /dev/null +++ b/projects/entities/blockchain-capital.js @@ -0,0 +1,14 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x598Dbe6738E0AcA4eAbc22feD2Ac737dbd13Fb8F", + "0x3744DA57184575064838BBc87A0FC791F5E39eA2", + "0x702caCafA54B88e9c54449563Fb2e496e85c78b7" + + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/chain-capital.js b/projects/entities/chain-capital.js new file mode 100644 index 0000000000..b4a544351c --- /dev/null +++ b/projects/entities/chain-capital.js @@ -0,0 +1,22 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x4cF9faf73714b65B98557c822B6B514dfDa0E339", + "0x2489146cf124A6900bA46c6F76f18eC76d5068b9" + ], + }, + polygon: { + owners: [ + "0x4cF9faf73714b65B98557c822B6B514dfDa0E339", + ], + }, + bsc: { + owners: [ + "0x2489146cf124A6900bA46c6F76f18eC76d5068b9" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/coin98-venture.js b/projects/entities/coin98-venture.js new file mode 100644 index 0000000000..c09aff9559 --- /dev/null +++ b/projects/entities/coin98-venture.js @@ -0,0 +1,28 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xFcbf806792f06d9c78E50B3737E1a22cfC36a942", + "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf" + ], + }, + bsc: { + owners: [ + "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf", + '0xFcbf806792f06d9c78E50B3737E1a22cfC36a942' + ], + }, + arbitrum: { + owners: [ + "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf", + ], + }, + polygon: { + owners: [ + "0x9413Da1bC1797179e5D019A9420cEEc44680A4bf", + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/defiance-capital.js b/projects/entities/defiance-capital.js new file mode 100644 index 0000000000..92043e314d --- /dev/null +++ b/projects/entities/defiance-capital.js @@ -0,0 +1,32 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", + "0xE97eb050Fa3e677e79E4ebEe7EF9c9c7D026377D", + "0x1E138759baED8a1139376a475Bf7f08053ACA016", + "0xdD709cAE362972cb3B92DCeaD77127f7b8D58202", + "0x9B5ea8C719e29A5bd0959FaF79C9E5c8206d0499" + + ], + }, + arbitrum: { + owners: [ + "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", + ], + }, + avax: { + owners: [ + "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", + ], + }, + bsc: { + owners: [ + "0x7E4B4DC22111B84594d9b7707A8DCFFd793D477A", + "0xdD709cAE362972cb3B92DCeaD77127f7b8D58202" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/delphi-digital.js b/projects/entities/delphi-digital.js new file mode 100644 index 0000000000..3e2938aa33 --- /dev/null +++ b/projects/entities/delphi-digital.js @@ -0,0 +1,22 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x5Ca29DC4845b8cB19CCF335337b774749C7Bb617", + "0x4181805C36ad6B1b2aDb43D0b0615d676ACBF9b4", + ], + }, + bsc: { + owners: [ + "0x4181805C36ad6B1b2aDb43D0b0615d676ACBF9b4" + ], + }, + avax: { + owners: [ + "0x4181805C36ad6B1b2aDb43D0b0615d676ACBF9b4" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/digital-finance-group.js b/projects/entities/digital-finance-group.js new file mode 100644 index 0000000000..88a171642b --- /dev/null +++ b/projects/entities/digital-finance-group.js @@ -0,0 +1,22 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xEaf3B28A87D498530cDC7f0700E70502CF896D3f", + "0x90FFFbbdf770eFB530d950C24bf56a292CDab3F7", + "0xC71BaF5d8667FfF515246811a4f61350D26A191F", + "0x36822AD3f4dF3E49EB042AFE74e43551d3c3Adba" + ], + }, + bsc: { + owners: [ + "0xEaf3B28A87D498530cDC7f0700E70502CF896D3f", + "0x2C20E739552cd0BEAF523930BAAD7754C426C962", + "0x36822AD3f4dF3E49EB042AFE74e43551d3c3Adba", + "0xC71BaF5d8667FfF515246811a4f61350D26A191F" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/dragonfly-capital.js b/projects/entities/dragonfly-capital.js new file mode 100644 index 0000000000..ab3e8939e8 --- /dev/null +++ b/projects/entities/dragonfly-capital.js @@ -0,0 +1,18 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xB953E202C5E51C7C010E80402a63C02f37F14059", //1.9m$ in cega protocol + // "0xe4A2410e158a790463ba1b2c98693061f5A3A9EF", old wallet not sure if related + // "0x30BDC51A48272F96480921ea280448695D2B5d6F", old wallet not sure if related + "0x221E3c87A034E79Dd16d64762a1B20FB71594F46", + "0xF410dC5Ff862BfD36111aD492123280dDB23D495", + // "0xEC4b615C8aBfB491cD4227b165A1e389DB5e8286", old wallet not sure if related + "0xB93994e2efCAed3E88C538F68eC6A2587C3E2ebF", + "0x002A5dc50bbB8d5808e418Aeeb9F060a2Ca17346" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/fbg-capital.js b/projects/entities/fbg-capital.js new file mode 100644 index 0000000000..bbeb547dfa --- /dev/null +++ b/projects/entities/fbg-capital.js @@ -0,0 +1,18 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xe25397734a184053cF382E5C4e32cA7eF8335F31", + "0x7c04A698855d1ECF9610636a1d7AFf8E03331fa5", + "0xb079F40dd951d842f688275100524c09bEf9b4E2" + ], + }, + avax: { + owners: [ + "0xe25397734a184053cF382E5C4e32cA7eF8335F31" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/fenbushi-capital.js b/projects/entities/fenbushi-capital.js new file mode 100644 index 0000000000..cf89112020 --- /dev/null +++ b/projects/entities/fenbushi-capital.js @@ -0,0 +1,18 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7", + "0x5963efF631bf3d28b68388909e2404AA6dB1e7a8" // binance deposited account + + ], + }, + arbitrum: { + owners: [ + "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/framework-ventures.js b/projects/entities/framework-ventures.js new file mode 100644 index 0000000000..7f96602761 --- /dev/null +++ b/projects/entities/framework-ventures.js @@ -0,0 +1,11 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x681148725731F213b0187A3CBeF215C291D85a3E", + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/genesis-trading.js b/projects/entities/genesis-trading.js new file mode 100644 index 0000000000..b81ca87613 --- /dev/null +++ b/projects/entities/genesis-trading.js @@ -0,0 +1,25 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x35b517039f75df2469Af8A329b75DfE215b33790", + "0x16ADa39D140699D9a1934F05DdCf78612f342b3e", + "0x7a59384e2bD2D75fb3e83c486b61921fa517EB27", + "0x2095feFc0cf268E58087A43DBf9733532eD51B25", + "0xF65D8e83396e66340743D852db8eb116BeC0027a", + "0xBF4731191af7029f7D669D3e337a0063D1E008a3", + "0x6d21266DfcF5541BEE9F67c4837AAa72b3BF9303", + "0xd628f7c481c7Dd87F674870BEc5D7A311Fb1D9A2", + "0xaF641E29C4730530d9428A37C5934B00a73624A9", + "0x7DC47f4C227e22DA6C81fCB4c253d1DC18BeC4A3" + ], + }, + avax: { + owners: [ + "0xd628f7c481c7dd87f674870bec5d7a311fb1d9a2", + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/id-capital.js b/projects/entities/id-capital.js new file mode 100644 index 0000000000..bf2e8dfb90 --- /dev/null +++ b/projects/entities/id-capital.js @@ -0,0 +1,34 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", + "0xbFC94A95d4448C802E848C68fdD2FC0fEE4a876E" + ], + }, + polygon: { + owners: [ + "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", + "0xbFC94A95d4448C802E848C68fdD2FC0fEE4a876E" + ], + }, + bsc: { + owners: [ + "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", + "0xbFC94A95d4448C802E848C68fdD2FC0fEE4a876E" + ], + }, + avax: { + owners: [ + "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", + ], + }, + arbitrum: { + owners: [ + "0xC3ad72Bf4721fdF448c970f2F8E303c57588B73c", + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/jump-capital.js b/projects/entities/jump-capital.js new file mode 100644 index 0000000000..bc480ed7af --- /dev/null +++ b/projects/entities/jump-capital.js @@ -0,0 +1,25 @@ + +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xCB8EFB0c065071E4110932858A84365A80C8feF0" + + ], + }, + avax: { + owners: [ + "0xCB8EFB0c065071E4110932858A84365A80C8feF0" + + ], + }, + bsc: { + owners: [ + "0xCB8EFB0c065071E4110932858A84365A80C8feF0" + + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/mechanism-capital.js b/projects/entities/mechanism-capital.js new file mode 100644 index 0000000000..032dee922f --- /dev/null +++ b/projects/entities/mechanism-capital.js @@ -0,0 +1,13 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x6Af3D183d225725d975C5EaA08D442dd01Aad8fF", + "0x953a50bd2daAa852A4Bc3E58b3AcFb95EA4E82D2", + "0x1366Dcf0f0178802Be85d405BBeA8026EC0876c4" // binance deposited account + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/multi-chain-capital.js b/projects/entities/multi-chain-capital.js new file mode 100644 index 0000000000..f345ba0ea6 --- /dev/null +++ b/projects/entities/multi-chain-capital.js @@ -0,0 +1,31 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xfbf335f8224a102e22abe78d78cc52dc95e074fa" //2.6m$ on convex + ], + }, + bsc: { + owners: [ + "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", + ], + }, + fantom: { + owners: [ + "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", + ], + }, + optimism: { + owners: [ + "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", + ], + }, + avax: { + owners: [ + "0xFBf335f8224a102e22abE78D78CC52dc95e074Fa", + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/ngc-ventures.js b/projects/entities/ngc-ventures.js new file mode 100644 index 0000000000..22f732c1cd --- /dev/null +++ b/projects/entities/ngc-ventures.js @@ -0,0 +1,31 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", + ], + }, + arbitrum: { + owners: [ + "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", + ], + }, + bsc: { + owners: [ + "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", + ], + }, + polygon: { + owners: [ + "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", + ], + }, + avax: { + owners: [ + "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/pantera-capital.js b/projects/entities/pantera-capital.js new file mode 100644 index 0000000000..11a1f6c514 --- /dev/null +++ b/projects/entities/pantera-capital.js @@ -0,0 +1,12 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x12ca45FEd7998ba0E56f52D678823A508BA9A99E", + "0x5789C571552b4820BfA64eFB6F0CaD80fD2A9Bca" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/paradigm-capital.js b/projects/entities/paradigm-capital.js new file mode 100644 index 0000000000..d70a67f182 --- /dev/null +++ b/projects/entities/paradigm-capital.js @@ -0,0 +1,15 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x11577a8a5baf1e25b9a2d89f39670f447d75c3cd", + "0xCA8d6F69D8f32516a109Df68B623452cc9f5E64d", + "0x917B3ACa2142Dd136fa106229990EA4D02763A83", + "0x09F82Ccd6baE2AeBe46bA7dd2cf08d87355ac430", + '0x820fb25352BB0c5E03E07AFc1d86252fFD2F0A18', //LIDO TOKENS + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/plutus-vc.js b/projects/entities/plutus-vc.js new file mode 100644 index 0000000000..b14fd8ea90 --- /dev/null +++ b/projects/entities/plutus-vc.js @@ -0,0 +1,16 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x3105889390F894F8ee1d3f8f75E2c4dde57735bA" + ], + }, + bsc: { + owners: [ + "0x3105889390F894F8ee1d3f8f75E2c4dde57735bA" + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/polychain-capital.js b/projects/entities/polychain-capital.js new file mode 100644 index 0000000000..9e513bd927 --- /dev/null +++ b/projects/entities/polychain-capital.js @@ -0,0 +1,13 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0xBcd5000F5c522856E710c5d274bb672B2f2EefBf", + "0x53c286E0AbE87c9e6d4d95ebE62ceaFa4aFCE849" + ], + }, + +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/entities/silkroad-fbifunds.js b/projects/entities/silkroad-fbifunds.js new file mode 100644 index 0000000000..3adb8f9224 --- /dev/null +++ b/projects/entities/silkroad-fbifunds.js @@ -0,0 +1,14 @@ +const { cexExports } = require('../helper/cex') + +const config = { + bitcoin: { + owners: [ + "bc1qa5wkgaew2dkv56kfvj49j0av5nml45x9ek9hz6", //https://www.reddit.com/r/CryptoCurrency/comments/li1fw7/btc_silkroad_stash_seized_nov_2020_by_the_feds/ + 'bc1qmxjefnuy06v345v6vhwpwt05dztztmx4g3y7wp', + 'bc1qf2yvj48mzkj7uf8lc2a9sa7w983qe256l5c8fs', + 'bc1qe7nk2nlnjewghgw4sgm0r89zkjzsurda7z4rdg' + ], + }, +} + +module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 7a4a5cd8e2..acc56eec6c 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -81,7 +81,15 @@ const defaultTokens = { '0x9d71CE49ab8A0E6D2a1e7BFB89374C9392FD6804',//nvir '0x5b649C07E7Ba0a1C529DEAabEd0b47699919B4a2',//sgt '0x4385328cc4d643ca98dfea734360c0f596c83449', - + '0xbc396689893d065f41bc2c6ecbee5e0085233447', //perp + '0xd7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b', //NXM + '0xaaef88cea01475125522e117bfe45cf32044e238', // GF + '0x949d48eca67b17269629c7194f4b727d4ef9e5d6', // MC + '0xbb0e17ef65f82ab018d8edd776e8dd940327b28b', // AXS + '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0', // FXS + '0xd417144312dbf50465b1c641d016962017ef6240',// cqt + '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', //VEGA + '0xcccd1ba9f7acd6117834e0d28f25645decb1736a', //ecox ], tron: [ nullAddress, @@ -99,6 +107,7 @@ const defaultTokens = { ADDRESSES.polygon.USDC, //USDC ADDRESSES.polygon.DAI, //DAI '0x2AB0e9e4eE70FFf1fB9D67031E44F6410170d00e', //xen + '0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6', //ALGB ], algorand: [], solana: [ From f61ed535d72ba217772bda539c4ef3b008e4ab78 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 5 Jul 2023 13:11:43 +0100 Subject: [PATCH 1015/1354] entities test --- test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.js b/test.js index c2c793a6d8..05bf0f2ce6 100644 --- a/test.js +++ b/test.js @@ -240,7 +240,7 @@ function checkExportKeys(module, filePath, chains) { ))) process.exit(0) - const blacklistedRootExportKeys = ['tvl', 'staking', 'pool2', 'borrowed', 'treasury', 'offers', 'vesting']; + const blacklistedRootExportKeys = ['tvl', 'staking', 'pool2', 'borrowed', 'treasury', 'offers', 'vesting', 'entities']; const rootexportKeys = Object.keys(module).filter(item => typeof module[item] !== 'object'); const unknownChains = chains.filter(chain => !chainList.includes(chain)); const blacklistedKeysFound = rootexportKeys.filter(key => blacklistedRootExportKeys.includes(key)); From 293ba151897373fc6198b419ad40e441a07ad3da Mon Sep 17 00:00:00 2001 From: define Date: Wed, 5 Jul 2023 13:23:56 +0100 Subject: [PATCH 1016/1354] remove last change --- test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.js b/test.js index 05bf0f2ce6..c2c793a6d8 100644 --- a/test.js +++ b/test.js @@ -240,7 +240,7 @@ function checkExportKeys(module, filePath, chains) { ))) process.exit(0) - const blacklistedRootExportKeys = ['tvl', 'staking', 'pool2', 'borrowed', 'treasury', 'offers', 'vesting', 'entities']; + const blacklistedRootExportKeys = ['tvl', 'staking', 'pool2', 'borrowed', 'treasury', 'offers', 'vesting']; const rootexportKeys = Object.keys(module).filter(item => typeof module[item] !== 'object'); const unknownChains = chains.filter(chain => !chainList.includes(chain)); const blacklistedKeysFound = rootexportKeys.filter(key => blacklistedRootExportKeys.includes(key)); From d167aaeb73b0c650b6dacd9263db0c24ec98d643 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Wed, 5 Jul 2023 13:29:31 +0100 Subject: [PATCH 1017/1354] Update getFileList.js --- .github/workflows/getFileList.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/getFileList.js b/.github/workflows/getFileList.js index 57a58c82c4..8a3070869b 100644 --- a/.github/workflows/getFileList.js +++ b/.github/workflows/getFileList.js @@ -4,7 +4,7 @@ const fileSet = new Set(); [...MODIFIED, ...ADDED].forEach(file => { const [root, dir] = file.split('/') - if (dir === 'treasury') fileSet.add(file) + if (dir === 'treasury' || dir === 'entities') fileSet.add(file) else if (root === 'projects' && dir !=='helper' && dir !== 'config') fileSet.add(root + '/' + dir) }) @@ -12,4 +12,4 @@ console.log(JSON.stringify([...fileSet])) function parse(data) { return data.replace('[', '').replace(']', '').split(',') -} \ No newline at end of file +} From 5ce1b798f4fdeb94f6d69aa5c2b657e56dd94c4c Mon Sep 17 00:00:00 2001 From: chainupk <121842069+chainupk@users.noreply.github.com> Date: Wed, 5 Jul 2023 23:14:48 +0800 Subject: [PATCH 1018/1354] remove nodedao filecoin and created folder for hashking (#6728) --- projects/hashking/index.js | 13 +++++++++++++ projects/node-dao/index.js | 9 --------- 2 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 projects/hashking/index.js diff --git a/projects/hashking/index.js b/projects/hashking/index.js new file mode 100644 index 0000000000..036bf811ba --- /dev/null +++ b/projects/hashking/index.js @@ -0,0 +1,13 @@ +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') + +module.exports = { + filecoin: { + tvl: async (_, _1, _2, { api }) => { + const owner = '0xe012f3957226894b1a2a44b3ef5070417a069dc2' + const validators = await api.call({ target: owner, abi: 'function beneficiarys() public view returns (address [] memory)'}) + const bals = await api.multiCall({ abi: 'uint256:totalStakingFil', calls: validators}) + bals.forEach(i => api.add(nullAddress, i)) + return sumTokens2({ api, owners: [owner], tokens: [nullAddress]}) + } + } +} \ No newline at end of file diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js index f898ec432a..6c70f489ac 100644 --- a/projects/node-dao/index.js +++ b/projects/node-dao/index.js @@ -7,14 +7,5 @@ module.exports = { const totalEth = await api.call({ abi: 'uint256:getTotalEthValue', target: owner }) api.add(nullAddress,totalEth) } - }, - filecoin: { - tvl: async (_, _1, _2, { api }) => { - const owner = '0xe012f3957226894b1a2a44b3ef5070417a069dc2' - const validators = await api.call({ target: owner, abi: 'function beneficiarys() public view returns (address [] memory)'}) - const bals = await api.multiCall({ abi: 'uint256:totalStakingFil', calls: validators}) - bals.forEach(i => api.add(nullAddress, i)) - return sumTokens2({ api, owners: [owner], tokens: [nullAddress]}) - } } } \ No newline at end of file From 6a4a0cba5785efdd25615a6d33af40613dd15e66 Mon Sep 17 00:00:00 2001 From: ChirpFinance <138693488+ChirpFinance@users.noreply.github.com> Date: Wed, 5 Jul 2023 17:22:04 +0100 Subject: [PATCH 1019/1354] Add files via upload (#6729) --- projects/ChirpFinance/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/ChirpFinance/index.js diff --git a/projects/ChirpFinance/index.js b/projects/ChirpFinance/index.js new file mode 100644 index 0000000000..9b14b8cc4a --- /dev/null +++ b/projects/ChirpFinance/index.js @@ -0,0 +1,10 @@ +const { masterchefExports } = require("../helper/unknownTokens"); + +module.exports = masterchefExports({ + chain: "pulse", + masterchef: "0x8d1e3458dA9E8a685732322D435178E790486651", + nativeTokens: ["0xCa66B54a8A4AD9a231DD70d3605D1ff6aE95d427"], + useDefaultCoreAssets: true, + poolInfoABI: "function poolInfo(uint256) view returns (address)", + getToken: (i) => i, +}); From 142bd94be292b3ebf784baab8347bd720a457c9e Mon Sep 17 00:00:00 2001 From: Merlin <39942523+merlincdj@users.noreply.github.com> Date: Thu, 6 Jul 2023 00:23:17 +0800 Subject: [PATCH 1020/1354] chore: WOOFi add Polygon zkEVM (#6727) --- projects/woofi.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/woofi.js b/projects/woofi.js index 70a871385a..af4d08b286 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -48,6 +48,10 @@ const wooPPConfig = { ADDRESSES.era.WETH, // WETH ADDRESSES.era.USDC, // USDC ], + polygon_zkevm: [ + ADDRESSES.polygon_zkevm.WETH, + ADDRESSES.polygon_zkevm.USDC, + ], } const chainConfig = { @@ -86,9 +90,14 @@ const chainConfig = { woo: '', stakingContract: '', }, + polygon_zkevm: { + wooPPContract: '0xF5d215d9C84778F85746D15762DaF39B9E83a2d6', + woo: '', + stakingContract: '', + }, } -const noStakingChains = ['optimism', 'era'] +const noStakingChains = ['optimism', 'era', 'polygon_zkevm'] Object.keys(chainConfig).forEach(chain => { const wooPPTokens = wooPPConfig[chain] const { wooPPContract, woo, stakingContract } = chainConfig[chain] From 587ffb52bb990bb3843b7b93765829d65317449c Mon Sep 17 00:00:00 2001 From: aankor <56882964+aankor@users.noreply.github.com> Date: Wed, 5 Jul 2023 18:24:45 +0200 Subject: [PATCH 1021/1354] marinade.finance: remove wSOL/SOL token separation and show 100% in native SOL (#6725) Co-authored-by: aankor --- projects/marinade.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/projects/marinade.js b/projects/marinade.js index 34003f7fb9..ad204fd662 100644 --- a/projects/marinade.js +++ b/projects/marinade.js @@ -1,4 +1,4 @@ -const { getProvider, sumTokens2, } = require('./helper/solana') +const { getProvider, getSolBalance, } = require("./helper/solana") const { Program, } = require("@project-serum/anchor"); async function tvl() { @@ -6,17 +6,21 @@ async function tvl() { const programId = 'MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD' const idl = await Program.fetchIdl(programId, provider) const program = new Program(idl, programId, provider) - const [{ - account: { - validatorSystem: { totalActiveBalance }, availableReserveBalance - } - }] = await program.account.state.all() - const balances = { - solana: (+totalActiveBalance + +availableReserveBalance)/1e9 + const [ + { + account: { + validatorSystem: { totalActiveBalance }, + availableReserveBalance, + }, + }, + ] = await program.account.state.all() + return { + solana: + (+totalActiveBalance + + +availableReserveBalance + + (await getSolBalance("UefNb6z6yvArqe4cJHTXCqStRsKmWhGxnZzuHbikP5Q"))) / // Liq Pool Sol Leg Pda + 1e9, } - return sumTokens2({ balances, solOwners: [ - 'UefNb6z6yvArqe4cJHTXCqStRsKmWhGxnZzuHbikP5Q', // Liq Pool Sol Leg Pda - ]}) } module.exports = { From b81c690ef66f0882e73913a105ddf544f6bf93a6 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Wed, 5 Jul 2023 17:28:44 +0100 Subject: [PATCH 1022/1354] symbiosis adds WETH tokens and updates USD tokens (#6724) --- projects/helper/coreAssets.json | 3 +++ projects/symbiosis-finance/config.js | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 107a52eb0f..139d6bbe17 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -182,6 +182,7 @@ "optimism": { "OP": "0x4200000000000000000000000000000000000042", "WETH": "0x121ab82b49b2bc4c7901ca46b8277962b4350204", + "WETH_1": "0x4200000000000000000000000000000000000006", "BitANT": "0x5029c236320b8f15ef0a657054b84d90bfbeded3", "FEI": "0x35d48a789904e9b15705977192e5d95e2af7f1d3", "alUSD": "0xcb8fa9a76b8e203d8c3797bf438d8fb81ea3326a", @@ -223,6 +224,7 @@ "WBTC": "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", "DAI": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", "USDC": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + "USDC_CIRCLE": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", "LINK": "0xf97f4df75117a78c1a5a0dbb814af92458539fb4", "USDT": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", "ARBY": "0x09ad12552ec45f82be90b38dfe7b06332a680864", @@ -965,6 +967,7 @@ "WKAVA": "0xc86c7c0efbd6a49b35e8714c5f59d99de09a225b", "USDC": "0xfa9343c3897324496a05fc75abed6bac29f8a40f", "USDT": "0xb44a9b6905af7c801311e8f4e76932ee959c663c", + "USDt": "0x919C1c267BC06a7039e03fcc2eF738525769109c", "WBTC": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", "DAI": "0x765277eebeca2e31912c9946eae1021199b39c61", "SUSHI": "0x7c598c96d02398d89fbcb9d41eab3df0c16f227d", diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index f01d992ddb..c04f4108f1 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -5,6 +5,7 @@ module.exports = { name: 'ethereum', tokens: [ ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, ], holders: [ '0xb80fDAA74dDA763a8A158ba85798d373A5E84d84', // portal v1 @@ -16,6 +17,7 @@ module.exports = { tokens: [ ADDRESSES.bsc.BUSD, ADDRESSES.bsc.USDC, + ADDRESSES.bsc.ETH, ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 @@ -27,6 +29,7 @@ module.exports = { name: 'avax', tokens: [ ADDRESSES.avax.USDC_e, + ADDRESSES.avax.USDC, ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 @@ -39,6 +42,7 @@ module.exports = { name: 'polygon', tokens: [ ADDRESSES.polygon.USDC, + ADDRESSES.polygon.WETH_1, ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 @@ -103,7 +107,8 @@ module.exports = { { name: 'kava', tokens: [ - ADDRESSES.telos.ETH, + ADDRESSES.kava.USDC, + ADDRESSES.kava.USDt, ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 @@ -113,6 +118,7 @@ module.exports = { name: 'era', tokens: [ ADDRESSES.era.USDC, + ADDRESSES.era.WETH, ], holders: [ '0x39dE19C9fF25693A2311AAD1dc5C790194084A39', // portal v2 @@ -121,7 +127,9 @@ module.exports = { { name: 'arbitrum', tokens: [ - ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDC, // USDC.e + ADDRESSES.arbitrum.USDC_CIRCLE, + ADDRESSES.arbitrum.WETH, ], holders: [ '0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9', // portal v2 @@ -131,6 +139,7 @@ module.exports = { name: 'optimism', tokens: [ ADDRESSES.optimism.USDC, + ADDRESSES.optimism.WETH_1, ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 @@ -140,6 +149,7 @@ module.exports = { name: 'arbitrum_nova', tokens: [ ADDRESSES.arbitrum_nova.USDC, + ADDRESSES.arbitrum_nova.WETH, ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 @@ -149,6 +159,7 @@ module.exports = { name: 'polygon_zkevm', tokens: [ ADDRESSES.polygon_zkevm.USDC, + ADDRESSES.polygon_zkevm.WETH, ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 From a08e47361a53dcb296382fd38985eb4958fae276 Mon Sep 17 00:00:00 2001 From: mummyguy <120447666+mummyguy@users.noreply.github.com> Date: Thu, 6 Jul 2023 00:46:43 +0700 Subject: [PATCH 1023/1354] Add mummy arbitrum (#6730) Co-authored-by: mummyguy --- projects/mummy/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/mummy/index.js b/projects/mummy/index.js index ded3ed0acf..27ee396e71 100644 --- a/projects/mummy/index.js +++ b/projects/mummy/index.js @@ -10,6 +10,10 @@ const fantomMMY = "0x01e77288b38b416F972428d562454fb329350bAc"; const opVault = "0xA6D7D0e650aa40FFa42d845A354c12c2bc0aB15f"; const opStaking = "0x04f23404553fcc388Ec73110A0206Dd2E76a6d95"; const opMMY = "0x47536f17f4ff30e64a96a7555826b8f9e66ec468"; +//Arbitrum +const arbVault = "0x304951d7172bCAdA54ccAC1E4674862b3d5b3d5b"; +const arbStaking = "0x52cC60893d3Bd8508baAB835620CbF9ddfA0A13C"; +const arbMMY = "0xA6D7D0e650aa40FFa42d845A354c12c2bc0aB15f"; module.exports = { hallmarks: [ [1675242000,"sifu 2M deposit"] @@ -21,6 +25,10 @@ module.exports = { optimism: { staking: staking(opStaking, opMMY, "optimism", fantomMMY, 18), tvl: gmxExports({ vault: opVault }) + }, + arbitrum: { + staking: staking(arbStaking, arbMMY, "arbitrum", fantomMMY, 18), + tvl: gmxExports({ vault: arbVault }) } }; From b42152b1c75326220b92f67b262b73157aa14295 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 5 Jul 2023 18:48:02 +0100 Subject: [PATCH 1024/1354] fix staking --- projects/mummy/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/mummy/index.js b/projects/mummy/index.js index 27ee396e71..d23f05efe3 100644 --- a/projects/mummy/index.js +++ b/projects/mummy/index.js @@ -19,15 +19,15 @@ module.exports = { [1675242000,"sifu 2M deposit"] ], fantom: { - staking: staking(fantomStaking, fantomMMY, "fantom", fantomMMY, 18), + staking: staking(fantomStaking, fantomMMY, "fantom"), tvl: gmxExports({ vault: fantomVault }) }, optimism: { - staking: staking(opStaking, opMMY, "optimism", fantomMMY, 18), + staking: staking(opStaking, opMMY, "optimism"), tvl: gmxExports({ vault: opVault }) }, arbitrum: { - staking: staking(arbStaking, arbMMY, "arbitrum", fantomMMY, 18), + staking: staking(arbStaking, arbMMY, "arbitrum"), tvl: gmxExports({ vault: arbVault }) } From 6452911364bfba3a6912b00d64d5a9d16d01f20d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jul 2023 09:40:58 +0200 Subject: [PATCH 1025/1354] track pika v4 --- projects/pika.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/projects/pika.js b/projects/pika.js index 50d584e44c..5a404a89f3 100644 --- a/projects/pika.js +++ b/projects/pika.js @@ -1,17 +1,12 @@ const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2 } = require('./helper/unwrapLPs') -const chain = 'optimism' - -async function tvl(_, _b, { [ chain]: block }) { - const owners = [ - '0x2FaE8C7Edd26213cA1A88fC57B65352dbe353698', '0xD5A8f233CBdDb40368D55C3320644Fb36e597002', - ] - const tokens = [ADDRESSES.optimism.USDC] - return sumTokens2({ chain, block, owners, tokens, }) -} +const { sumTokensExport } = require('./helper/unwrapLPs') module.exports = { optimism: { - tvl + tvl: sumTokensExport({ owners: [ + '0x2FaE8C7Edd26213cA1A88fC57B65352dbe353698', + '0xD5A8f233CBdDb40368D55C3320644Fb36e597002', + '0x9b86B2Be8eDB2958089E522Fe0eB7dD5935975AB', + ], tokens: [ADDRESSES.optimism.USDC]}) } } \ No newline at end of file From 7197c03a4f547bb01db9a08cc8ac0cc450e59f95 Mon Sep 17 00:00:00 2001 From: Q6Crypto <112528487+Q6Crypto@users.noreply.github.com> Date: Thu, 6 Jul 2023 03:42:03 -0400 Subject: [PATCH 1026/1354] pulserate (#6731) * pulserate * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/utils.js | 2 +- projects/pulserate/index.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 projects/pulserate/index.js diff --git a/projects/helper/utils.js b/projects/helper/utils.js index ccb3c9c384..2e74ecae44 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -54,7 +54,7 @@ function isLP(symbol, token, chain) { if (token && blacklisted_LPS.includes(token.toLowerCase()) || symbol.includes('HOP-LP-')) return false if (chain === 'bsc' && ['OLP', 'DLP', 'MLP', 'LP', 'Stable-LP'].includes(symbol)) return false if (chain === 'bsc' && ['WLP', 'FstLP', 'BLP',].includes(symbol)) return true - if (chain === 'pulse' && ['PLP',].includes(symbol)) return true + if (chain === 'pulse' && ['PLP', 'PLT'].includes(symbol)) return true if (chain === 'avax' && ['ELP', 'EPT', 'CRL', 'YSL', 'BGL', 'PLP'].includes(symbol)) return true if (chain === 'ethereum' && ['SSLP'].includes(symbol)) return true if (chain === 'polygon' && ['WLP', 'FLP'].includes(symbol)) return true diff --git a/projects/pulserate/index.js b/projects/pulserate/index.js new file mode 100644 index 0000000000..feca6b1e78 --- /dev/null +++ b/projects/pulserate/index.js @@ -0,0 +1,22 @@ +const { getUniTVL, sumTokensExport } = require("../helper/unknownTokens"); +const PSHARE = "0x11D4109Cd7E5cE596471583E90e20e51d087de33"; +module.exports = { + misrepresentedTokens: true, + methodology: + "Factory address (0xE2332E5297b18a21DcE0E6ac461e821C353A00cA) is used to find the LP pairs. TVL is equal to the liquidity on the AMM. Staking balance is equal to the balance of PSHARE in Boardroom contract", + pulse: { + tvl: getUniTVL({ + factory: "0xE2332E5297b18a21DcE0E6ac461e821C353A00cA", + useDefaultCoreAssets: true, + fetchBalances: true, + }), + staking: sumTokensExport({ + owners: ["0xD7A2F5A72079654E7997C615cC07A1b92D850b32"], + tokens: [PSHARE], + lps: [ + '0x91d3E933B7f2ccBAdf4d5278d826Cb10659a1c55', + ], + useDefaultCoreAssets: true, + }), + }, +}; From 3735c3de4fe0678664eb85d03b2002552935fb2c Mon Sep 17 00:00:00 2001 From: phiatFinance <107194334+phiatDev2@users.noreply.github.com> Date: Thu, 6 Jul 2023 17:42:17 +1000 Subject: [PATCH 1027/1354] add phux (#6732) * add phux * add phux * rm wrong index.js * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/phux/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/phux/index.js diff --git a/projects/phux/index.js b/projects/phux/index.js new file mode 100644 index 0000000000..20b7243d9c --- /dev/null +++ b/projects/phux/index.js @@ -0,0 +1,16 @@ +const { onChainTvl } = require('../helper/balancer') + +const VAULT_ADDRESS = '0x7F51AC3df6A034273FB09BB29e383FCF655e473c'; + +const config = { + pulse: { fromBlock: 17500116, }, +} + +module.exports = {}; + +Object.keys(config).forEach(chain => { + const { fromBlock } = config[chain] + module.exports[chain] = { + tvl: onChainTvl(VAULT_ADDRESS, fromBlock) + } +}) \ No newline at end of file From 5645736900be797ebd635618b47e21c77159e30b Mon Sep 17 00:00:00 2001 From: Merlin <39942523+merlincdj@users.noreply.github.com> Date: Thu, 6 Jul 2023 15:42:30 +0800 Subject: [PATCH 1028/1354] feat: add WOOFi staking v2 contract (#6733) * chore: WOOFi add Polygon zkEVM * feat: add WOOFi staking v2 contract --- projects/woofi.js | 58 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/projects/woofi.js b/projects/woofi.js index af4d08b286..eaecca27c0 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -1,5 +1,5 @@ const ADDRESSES = require('./helper/coreAssets.json') -const { staking } = require('./helper/staking') +const { staking, stakings } = require('./helper/staking') const wooPPConfig = { fantom: [ @@ -8,6 +8,7 @@ const wooPPConfig = { '0x321162Cd933E2Be498Cd2267a90534A804051b11', // BTC '0x6626c47c00F1D87902fc13EECfaC3ed06D5E8D8a', // WOO ADDRESSES.fantom.USDC, // USDC + ADDRESSES.fantom.fUSDT, ], bsc: [ ADDRESSES.bsc.WBNB, // WBNB @@ -23,6 +24,7 @@ const wooPPConfig = { ADDRESSES.avax.BTC_b, // BTC.b '0xaBC9547B534519fF73921b1FBA6E672b5f58D083', // WOO.e ADDRESSES.avax.USDC, // USDC + ADDRESSES.avax.USDt, ], polygon: [ ADDRESSES.polygon.WMATIC_2, // WMATIC @@ -30,6 +32,7 @@ const wooPPConfig = { ADDRESSES.polygon.WBTC, // WBTC '0x1B815d120B3eF02039Ee11dC2d33DE7aA4a8C603', // WOO ADDRESSES.polygon.USDC, // USDC + ADDRESSES.polygon.USDT, ], arbitrum: [ ADDRESSES.arbitrum.WETH, // WETH @@ -37,13 +40,18 @@ const wooPPConfig = { '0xcAFcD85D8ca7Ad1e1C6F82F651fA15E33AEfD07b', // WOO '0x912CE59144191C1204E64559FE8253a0e49E6548', // ARB ADDRESSES.arbitrum.USDC, // USDC + '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // native USDC + ADDRESSES.arbitrum.USDT, ], optimism: [ ADDRESSES.tombchain.FTM, // WETH '0x68f180fcCe6836688e9084f035309E29Bf0A2095', // WBTC ADDRESSES.optimism.OP, // OP ADDRESSES.optimism.USDC, // USDC + ADDRESSES.optimism.USDT, + '0x871f2F2ff935FD1eD867842FF2a7bfD051A5E527', // WOO ], + ethereum: [], era: [ ADDRESSES.era.WETH, // WETH ADDRESSES.era.USDC, // USDC @@ -59,54 +67,82 @@ const chainConfig = { wooPPContract: '0x286ab107c5E9083dBed35A2B5fb0242538F4f9bf', woo: '0x6626c47c00f1d87902fc13eecfac3ed06d5e8d8a', stakingContract: '0x2Fe5E5D341cFFa606a5d9DA1B6B646a381B0f7ec', + stakingContractV2: '0x1416E1378682b5Ca53F76656549f7570ad0703d9', }, bsc: { wooPPContract: '0x59dE3B49314Bf5067719364A2Cb43e8525ab93FA', woo: '0x4691937a7508860f876c9c0a2a617e7d9e945d4b', stakingContract: '0x2AEab1a338bCB1758f71BD5aF40637cEE2085076', + stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', }, avax: { wooPPContract: '0x3b3E4b4741e91aF52d0e9ad8660573E951c88524', woo: '0xabc9547b534519ff73921b1fba6e672b5f58d083', stakingContract: '0xcd1B9810872aeC66d450c761E93638FB9FE09DB0', + stakingContractV2: '0x3Bd96847C40De8b0F20dA32568BD15462C1386E3', }, polygon: { wooPPContract: '0x7081A38158BD050Ae4a86e38E0225Bc281887d7E', woo: '0x1b815d120b3ef02039ee11dc2d33de7aa4a8c603', stakingContract: '0x9BCf8b0B62F220f3900e2dc42dEB85C3f79b405B', + stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', }, arbitrum: { wooPPContract: '0xeFF23B4bE1091b53205E35f3AfCD9C7182bf3062', woo: '0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b', stakingContract: '0x9321785D257b3f0eF7Ff75436a87141C683DC99d', + stakingContractV2: '0x2CFa72E7f58dc82B990529450Ffa83791db7d8e2', }, optimism: { wooPPContract: '0xd1778F9DF3eee5473A9640f13682e3846f61fEbC', woo: '0x871f2f2ff935fd1ed867842ff2a7bfd051a5e527', - stakingContract: '', + stakingContract: null, + stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', + }, + ethereum: { + wooPPContract: null, + woo: '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', + stakingContract: null, + stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', }, era: { wooPPContract: '0x42ED123EB5266A5B8E2B54B2C76180CCF5e72FEe', - woo: '', - stakingContract: '', + woo: null, + stakingContract: null, + stakingContractV2: null, }, polygon_zkevm: { wooPPContract: '0xF5d215d9C84778F85746D15762DaF39B9E83a2d6', - woo: '', - stakingContract: '', + woo: null, + stakingContract: null, + stakingContractV2: null, }, } -const noStakingChains = ['optimism', 'era', 'polygon_zkevm'] Object.keys(chainConfig).forEach(chain => { const wooPPTokens = wooPPConfig[chain] - const { wooPPContract, woo, stakingContract } = chainConfig[chain] + const { wooPPContract, woo, stakingContract, stakingContractV2 } = chainConfig[chain] + + var tvl = 0 + if (wooPPContract != null) { + tvl = staking(wooPPContract, wooPPTokens, chain) + } + + var contracts = [] + if (stakingContract != null) { + contracts.push(stakingContract) + } + if (stakingContractV2 != null) { + contracts.push(stakingContractV2) + } + var stakingAmount = 0 - if (noStakingChains.indexOf(chain) == -1) { - stakingAmount = staking(stakingContract, woo, chain) + if (woo != null) { + stakingAmount = stakings(contracts, woo, chain) } + module.exports[chain] = { staking: stakingAmount, - tvl: staking(wooPPContract, wooPPTokens, chain), + tvl: tvl, } }) From cdb8354d0786479f9bb555d16c3bccd3a040b257 Mon Sep 17 00:00:00 2001 From: HashDAO Finance <125532714+HASHDAO1@users.noreply.github.com> Date: Thu, 6 Jul 2023 15:45:14 +0800 Subject: [PATCH 1029/1354] Add files via upload (#6735) --- projects/hashdaofinance/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/projects/hashdaofinance/index.js b/projects/hashdaofinance/index.js index 32f457f92b..62f700b302 100644 --- a/projects/hashdaofinance/index.js +++ b/projects/hashdaofinance/index.js @@ -4,6 +4,8 @@ const { staking } = require('../helper/staking') const contract = '0x90d11b8de2b30a84cB7e6cf6188581Ec08b1Bf82' const lp = '0x8dC6EFD57A13B7ba3ff7824c9708DB24d3190703' const chef = '0xb557c071BAe7DC3aa2366Cd0FC0477B45Eb696f1' +const vHash = '0x958882fda110febd41536e45034bebff2a815006' +const hash = '0x2e80259c9071b6176205ff5f5eb6f7ec8361b93f' async function tvl(_, _b, _cb, { api, }) { const owners = await api.call({ target: contract, abi: "function getAllPools() public view returns(address[] memory list)" }) @@ -11,9 +13,27 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, ownerTokens: tokens.map((v, i) => [v, owners[i]]) }) } +const op_contract = '0xF96aad4942D8A0394158Fd960003397690fB795D' +const op_lp = '0xb426aE40E43be57215ba7DAA06Cbc5d48eD35Dcf' +const op_chef = '0xEAB4C6C26A1F296E8E0033ffB817D5311C51299d' +const op_vHash = '0x9D66c32E137E618BEE9669Ae096FD59ba925AaA5' +const op_hash = '0x2e80259C9071B6176205FF5F5Eb6F7EC8361b93f' + +async function op_tvl(_, _b, _cb, { api, }) { + const owners = await api.call({ target: op_contract, abi: "function getAllPools() public view returns(address[] memory list)" }) + const tokens = await api.multiCall({ abi: "function getPoolTokens(address _pool) public view returns(address[] memory list)", target: op_contract, calls: owners }) + return sumTokens2({ api, ownerTokens: tokens.map((v, i) => [v, owners[i]]) }) +} + module.exports = { arbitrum: { tvl, pool2: staking(chef, lp), + staking: staking(vHash, hash), + }, + optimism: { + tvl: op_tvl, + pool2: staking(op_chef, op_lp, 'optimism', op_lp), + staking: staking(op_vHash, op_hash), } } From 07164ea405fe7b743afc53fd0ca97e9e1b88bf99 Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Thu, 6 Jul 2023 15:45:50 +0800 Subject: [PATCH 1030/1354] Create Bucket-Protocol (#6736) * feature: add bucket-protocol * feature: modified buck decimal * feature: comment tank tvl * feature: remove unused code --- projects/bucket-protocol/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/bucket-protocol/index.js diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js new file mode 100644 index 0000000000..ced7ee1722 --- /dev/null +++ b/projects/bucket-protocol/index.js @@ -0,0 +1,26 @@ +const sui = require("../helper/chain/sui"); + +const MAINNET_PROTOCOL_ID = + "0x9e3dab13212b27f5434416939db5dec6a319d15b89a84fd074d03ece6350d3df"; + +async function tvl(_, _1, _2, { api }) { + const protocolFields = await sui.getDynamicFieldObjects({ + parent: MAINNET_PROTOCOL_ID, + }); + + const bucketList = protocolFields.filter((item) => + item.type.includes("Bucket") + ); + + for (const bucket of bucketList) { + const coin = bucket.type.split("<").pop()?.replace(">", "") ?? ""; + api.add(coin, bucket.fields.collateral_vault); + } +} + +module.exports = { + timetravel: false, + sui: { + tvl, + }, +}; From 4bd463032c646de849ef80d6439f4708e97b1dbc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jul 2023 09:55:02 +0200 Subject: [PATCH 1031/1354] hashdao: code refactor --- projects/hashdaofinance/index.js | 62 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/projects/hashdaofinance/index.js b/projects/hashdaofinance/index.js index 62f700b302..d41df110b8 100644 --- a/projects/hashdaofinance/index.js +++ b/projects/hashdaofinance/index.js @@ -1,39 +1,37 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require('../helper/staking') +const { pool2 } = require('../helper/pool2') -const contract = '0x90d11b8de2b30a84cB7e6cf6188581Ec08b1Bf82' -const lp = '0x8dC6EFD57A13B7ba3ff7824c9708DB24d3190703' -const chef = '0xb557c071BAe7DC3aa2366Cd0FC0477B45Eb696f1' -const vHash = '0x958882fda110febd41536e45034bebff2a815006' -const hash = '0x2e80259c9071b6176205ff5f5eb6f7ec8361b93f' - -async function tvl(_, _b, _cb, { api, }) { - const owners = await api.call({ target: contract, abi: "function getAllPools() public view returns(address[] memory list)" }) - const tokens = await api.multiCall({ abi: "function getPoolTokens(address _pool) public view returns(address[] memory list)", target: contract, calls: owners }) - return sumTokens2({ api, ownerTokens: tokens.map((v, i) => [v, owners[i]]) }) -} - -const op_contract = '0xF96aad4942D8A0394158Fd960003397690fB795D' -const op_lp = '0xb426aE40E43be57215ba7DAA06Cbc5d48eD35Dcf' -const op_chef = '0xEAB4C6C26A1F296E8E0033ffB817D5311C51299d' -const op_vHash = '0x9D66c32E137E618BEE9669Ae096FD59ba925AaA5' -const op_hash = '0x2e80259C9071B6176205FF5F5Eb6F7EC8361b93f' - -async function op_tvl(_, _b, _cb, { api, }) { - const owners = await api.call({ target: op_contract, abi: "function getAllPools() public view returns(address[] memory list)" }) - const tokens = await api.multiCall({ abi: "function getPoolTokens(address _pool) public view returns(address[] memory list)", target: op_contract, calls: owners }) - return sumTokens2({ api, ownerTokens: tokens.map((v, i) => [v, owners[i]]) }) -} - -module.exports = { +const config = { arbitrum: { - tvl, - pool2: staking(chef, lp), - staking: staking(vHash, hash), + contract: '0x90d11b8de2b30a84cB7e6cf6188581Ec08b1Bf82', + lp: '0x8dC6EFD57A13B7ba3ff7824c9708DB24d3190703', + chef: '0xb557c071BAe7DC3aa2366Cd0FC0477B45Eb696f1', + vHash: '0x958882fda110febd41536e45034bebff2a815006', + hash: '0x2e80259c9071b6176205ff5f5eb6f7ec8361b93f', }, optimism: { - tvl: op_tvl, - pool2: staking(op_chef, op_lp, 'optimism', op_lp), - staking: staking(op_vHash, op_hash), - } + contract: '0xF96aad4942D8A0394158Fd960003397690fB795D', + lp: '0xb426aE40E43be57215ba7DAA06Cbc5d48eD35Dcf', + chef: '0xEAB4C6C26A1F296E8E0033ffB817D5311C51299d', + vHash: '0x9D66c32E137E618BEE9669Ae096FD59ba925AaA5', + hash: '0x2e80259c9071b6176205ff5f5eb6f7ec8361b93f', + isPool2: true, + }, } + +Object.keys(config).forEach(chain => { + const { contract, lp, chef, hash, vHash, isPool2,} = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const owners = await api.call({ target: contract, abi: "function getAllPools() public view returns(address[] memory list)" }) + const tokens = await api.multiCall({ abi: "function getPoolTokens(address _pool) public view returns(address[] memory list)", target: contract, calls: owners }) + return sumTokens2({ api, ownerTokens: tokens.map((v, i) => [v, owners[i]]), }) + } + } + if (chef && lp) + module.exports[chain].pool2 = isPool2 ? pool2(chef, lp) : staking(chef, lp) + + if (hash && vHash) + module.exports[chain].staking = staking(vHash, hash) +}) \ No newline at end of file From a02f53683bfa9a9ee72092f842248121d21287cb Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 6 Jul 2023 09:30:18 +0100 Subject: [PATCH 1032/1354] pendle bsc --- projects/pendle/v2.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index e8eb41eb24..20d807ab5b 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -6,6 +6,7 @@ const steth = ADDRESSES.ethereum.STETH; const config = { ethereum: { factory: '0x27b1dacd74688af24a64bd3c9c1b143118740784', fromBlock: 16032059 }, arbitrum: { factory: '0xf5a7de2d276dbda3eef1b62a9e718eff4d29ddc8', fromBlock: 62979673 }, + bsc: { factory: '0x2bEa6BfD8fbFF45aA2a893EB3B6d85D10EFcC70E', fromBlock: 29484286 }, } module.exports = {} From 22d383ec7e5bd14a051a68091ba4e76b1cec7e97 Mon Sep 17 00:00:00 2001 From: define Date: Thu, 6 Jul 2023 10:14:49 +0100 Subject: [PATCH 1033/1354] Update Binance Cex wallets --- projects/binance/config.js | 31 ++++++++++++++++++++++--------- projects/helper/coreAssets.json | 3 ++- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index e96f99f2be..13a3e18a27 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -338,19 +338,32 @@ const assetList = [ ["ARB", "ARB", "0xb38e8c17e38363af6ebdcb3dae12e0243582891d"], ["ARB", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], ["ARB", "ARB", "0xf92402bb795fd7cd08fb83839689db79099c8c9c"], - ["USDC", "ETH", "0xf8d3e5fe8bb885325d98a751a30a1573e887a953"], - ["USDC", "ETH", "0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4"], - ["USDC", "ETH", "0x95e63f78bd2fd5ea8a0d58182f3d998558881fda"], - ["USDC", "ETH", "0x39e2d89f4b4708077a48d75c5cf2ab059a4b3e48"], - ["USDC", "ETH", "0x558a87a7c8b79ffb66a3d10a4a2de8c73a46707d"], - ["USDC", "ETH", "0xf033bce292bcaaf998ca13755104a4b23c04af5c"], + // ["USDC", "ETH", "0xf8d3e5fe8bb885325d98a751a30a1573e887a953"], removed 06/07/2023 + // ["USDC", "ETH", "0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4"], removed 06/07/2023 + // ["USDC", "ETH", "0x95e63f78bd2fd5ea8a0d58182f3d998558881fda"], removed 06/07/2023 + // ["USDC", "ETH", "0x39e2d89f4b4708077a48d75c5cf2ab059a4b3e48"], removed 06/07/2023 + // ["USDC", "ETH", "0x558a87a7c8b79ffb66a3d10a4a2de8c73a46707d"], removed 06/07/2023 + // ["USDC", "ETH", "0xf033bce292bcaaf998ca13755104a4b23c04af5c"], removed 06/07/2023 ["LTC", "LTC", "LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN"], ["LTC", "LTC", "LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq"], ["LTC", "LTC", "MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k"], - ["USDC", "TRX", "TDjPeMNaRxoNMwENrdtNYmZt1YAfVVjp59"], - ["USDC", "TRX", "TL6VgVKo6natQb6hW5Hy2jcyX5EHgmwXLE"], + // ["USDC", "TRX", "TDjPeMNaRxoNMwENrdtNYmZt1YAfVVjp59"], removed 06/07/2023 + // ["USDC", "TRX", "TL6VgVKo6natQb6hW5Hy2jcyX5EHgmwXLE"], removed 06/07/2023 ["BTC", "BTC", "1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7"], // new wallet https://twitter.com/binance/status/1670723088802283520 - ["BTC", "BTC", "39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v"] // new wallet that got 3.1b + ["BTC", "BTC", "39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v"], // new wallet that got 3.1b + ["TUSD", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], + ["TUSD", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], + ["TUSD", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], + ["TUSD", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], + ["TUSD", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], + ["TUSD", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], + ["TUSD", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], + ["TUSD", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], + ["TUSD", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], + ["TUSD", "TRX", "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G"], + ["TUSD", "TRX", "TV6MuMXfmLbBqPZvBHdwFsDnQeVfnmiuSi"], + ["TUSD", "TRX", "TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb"], + ["TUSD", "TRX", "TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo"], ] function getAddresses(chain) { diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 139d6bbe17..b9d589ae4a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -108,7 +108,8 @@ "YGG": "0x13ab6739368a4e4abf24695bf52959224367391f", "IVN": "0x6a46d878401f46b4c7f665f065e0667580e031ec", "ankrBNB": "0xe85afccdafbe7f2b096f268e31cce3da8da2990a", - "aBNBb": "0xbb1aa6e59e5163d8722a122cd66eba614b59df0d" + "aBNBb": "0xbb1aa6e59e5163d8722a122cd66eba614b59df0d", + "TUSD": "0x40af3827f39d0eacbf4a168f8d4ee67c121d11c9" }, "polygon": { "WMATIC": "0xfd28c7cea3c50a060cb4c0059e453c6d4dd9829d", From 3bac99d007cddcef976fe0f91432e3afbdc5e422 Mon Sep 17 00:00:00 2001 From: define Date: Thu, 6 Jul 2023 11:06:39 +0100 Subject: [PATCH 1034/1354] add op wallets --- projects/binance/config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/binance/config.js b/projects/binance/config.js index 13a3e18a27..b063348ad4 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -296,6 +296,10 @@ const assetList = [ ["ETH", "OP", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], ["ETH", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], ["BUSD", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], + ["OP", "OP", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], + ["OP", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], + ["USDT", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], + ["USDT", "OP", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], ["XRP", "XRP", "rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK"], ["XRP", "XRP", "rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza"], ["XRP", "XRP", "rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A"], From 6965fbc07ad1e86247ba191658c12bff97400705 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 6 Jul 2023 11:24:44 +0100 Subject: [PATCH 1035/1354] tusd on tron --- projects/helper/cex.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/cex.js b/projects/helper/cex.js index acc56eec6c..feadaa86dc 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -95,7 +95,8 @@ const defaultTokens = { nullAddress, ADDRESSES.tron.USDT, // USDT ADDRESSES.tron.USDC, // USDC - 'TFptbWaARrWTX5Yvy3gNG5Lm8BmhPx82Bt' //wbt + 'TFptbWaARrWTX5Yvy3gNG5Lm8BmhPx82Bt', //wbt + ADDRESSES.tron.TUSD ], polygon: [ nullAddress, From 76b4bcdafb07360bdcaa50dc58a37fc67e28906c Mon Sep 17 00:00:00 2001 From: define Date: Thu, 6 Jul 2023 11:30:40 +0100 Subject: [PATCH 1036/1354] add tusd bsc --- projects/helper/cex.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/cex.js b/projects/helper/cex.js index feadaa86dc..12bdbc7cd5 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -138,6 +138,7 @@ const defaultTokens = { '0x352Cb5E19b12FC216548a2677bD0fce83BaE434B', // BTT '0xAD29AbB318791D579433D831ed122aFeAf29dcfe', // FTM '0x02ff5065692783374947393723dba9599e59f591',// yoshi + '0x40af3827f39d0eacbf4a168f8d4ee67c121d11c9', //TUSD ], eos: [ ["eosio.token", "EOS", "eos"], From 9fe187b70aac0b5a3ea969c009537d65c2447502 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jul 2023 13:00:50 +0200 Subject: [PATCH 1037/1354] update chainport --- projects/chainport/index.js | 6 +++++- projects/hashdaofinance/index.js | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/chainport/index.js b/projects/chainport/index.js index 8023401711..003c2e0557 100644 --- a/projects/chainport/index.js +++ b/projects/chainport/index.js @@ -89,7 +89,11 @@ const config = { owners: [vault1ftm, vault2ftm], }, cardano: { - owners: ['addr1xxcqzje930yw0hykwhf0a89l62dmjwqqpfzdsppf8rhv9rg2czf3yffs8ar450sw50w4xn3pxxwvkz25s4ygh7pjq23ql4slcu'], + owners: [ + 'addr1xxcqzje930yw0hykwhf0a89l62dmjwqqpfzdsppf8rhv9rg2czf3yffs8ar450sw50w4xn3pxxwvkz25s4ygh7pjq23ql4slcu', // multi sig cold storage + 'addr1v9nygflpcedeg004tfghu9hdxhg29sv9550sdyvvu4gxepq5ps9ra', // hot bridge address 1 + 'addr1vxku68zc6wrewfkrdaduw2t8yj7nsh0z6mg8vwuxh7pwjxckzjkjq' // hot bridge address 2 + ], } } diff --git a/projects/hashdaofinance/index.js b/projects/hashdaofinance/index.js index d41df110b8..c7516f54d8 100644 --- a/projects/hashdaofinance/index.js +++ b/projects/hashdaofinance/index.js @@ -33,5 +33,5 @@ Object.keys(config).forEach(chain => { module.exports[chain].pool2 = isPool2 ? pool2(chef, lp) : staking(chef, lp) if (hash && vHash) - module.exports[chain].staking = staking(vHash, hash) + module.exports[chain].staking = staking(vHash, hash, undefined, 'arbitrum:'+config.arbitrum.hash) }) \ No newline at end of file From 11da2849be93c9d9435e5f2ed86340d909ea9601 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jul 2023 13:01:55 +0200 Subject: [PATCH 1038/1354] update surge --- projects/surge/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/surge/index.js b/projects/surge/index.js index 4a4da24f20..92df270fbb 100644 --- a/projects/surge/index.js +++ b/projects/surge/index.js @@ -2,7 +2,7 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { - arbitrum: { factory: '0xDaD057C49d957c98D20285935B0a87f23907e22C', fromBlock: 107875529, } + arbitrum: { factory: '0x503A14768e23456620fB3Cb61e37A36A2736Cbd0', fromBlock: 107875529, } } Object.keys(config).forEach(chain => { From a1b9172082b9a2cf735cc5c2b464766ab221380b Mon Sep 17 00:00:00 2001 From: zxyge <32669799+zxyge@users.noreply.github.com> Date: Thu, 6 Jul 2023 21:39:06 +0800 Subject: [PATCH 1039/1354] Update index.js (#6741) --- projects/dforce/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/dforce/index.js b/projects/dforce/index.js index 1d76a4b034..8a3d4ed8b1 100644 --- a/projects/dforce/index.js +++ b/projects/dforce/index.js @@ -52,7 +52,8 @@ let oracles = { optimism: "0x4f9312A21F8853384E0f6141F3F9fB855d860161", polygon: "0x9E8B68E17441413b26C2f18e741EAba69894767c", avax: "0x5237d212F9BbC83d91c2cbd810D2b07808d94f08", - kava: "0xe04cea4d02261923769D79Dd24D188C2cB29dB4A" + kava: "0xe04cea4d02261923769D79Dd24D188C2cB29dB4A", + conflux: "0xfd3868B848B5D9eD3583938B4db4746415bD43a3" }; let allControllers = { @@ -73,6 +74,7 @@ let allControllers = { polygon: ["0x52eaCd19E38D501D006D2023C813d7E37F025f37"], avax: ["0x078ad8d6faeD9DAeE55f5d446C80E0C81230DE6b"], kava: ["0xFBf64A8cAEA1D641affa185f850dbBF90d5c84dC"], + conflux: ["0xA377eCF53253275125D0a150aF195186271f6a56"] }; let yieldMarkets = { @@ -141,6 +143,9 @@ const excludeAlliTokens = { ], kava: [ "0x9787af345e765a3fbf0f881c49f8a6830d94a514" // iUSX + ], + conflux: [ + "0x6f87b39a2e36F205706921d81a6861B655db6358" // iUSX ] }; @@ -154,6 +159,7 @@ const USXs = { "polygon": "0xCf66EB3D546F0415b368d98A95EAF56DeD7aA752", "avax": "0x853ea32391AaA14c112C645FD20BA389aB25C5e0", "kava": ADDRESSES.kava.USX, + "conflux": "0x422a86f57b6b6F1e557d406331c25EEeD075E7aA" }; async function getDFStakingValue(block) { @@ -274,6 +280,6 @@ module.exports = { ...chainTvl("ethereum"), staking, }, - ...generalizedChainExports(chainTvl, ["bsc", "arbitrum", "optimism", "polygon", "avax", "kava"]), + ...generalizedChainExports(chainTvl, ["bsc", "arbitrum", "optimism", "polygon", "avax", "kava", "conflux"]), start: 1564165044, // Jul-27-2019 02:17:24 AM +UTC } From ef3dbb177183c9c897c31238635ffd11080919ad Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jul 2023 15:55:33 +0200 Subject: [PATCH 1040/1354] track unicrypt v3 --- projects/helper/unwrapLPs.js | 21 +++++++++++++-------- projects/unicrypt-v3/index.js | 26 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 projects/unicrypt-v3/index.js diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index cff2ca6b24..6f1a101181 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -188,6 +188,8 @@ async function sumLPWithOnlyOneTokenOtherThanKnown(balances, lpToken, owner, tok } await sumLPWithOnlyOneToken(balances, lpToken, owner, listedToken, block, chain, transformAddress) } + +const PANCAKE_NFT_ADDRESS = '0x46A15B0b27311cedF172AB29E4f4766fbE7F4364' async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, chain = 'ethereum', owner, nftAddress, owners, blacklistedTokens = [], whitelistedTokens = [], }) { if (!nftsAndOwners.length) { if (!nftAddress) @@ -196,14 +198,17 @@ async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, c case 'polygon': case 'optimism': case 'arbitrum': nftAddress = '0xC36442b4a4522E871399CD717aBDD847Ab11FE88'; break; - case 'bsc': nftAddress = '0x7b8a01b39d58278b5de7e48c8449c9f4f5170613'; break; + case 'bsc': nftAddress = [PANCAKE_NFT_ADDRESS, '0x7b8a01b39d58278b5de7e48c8449c9f4f5170613']; break; default: throw new Error('missing default uniswap nft address') } if ((!owners || !owners.length) && owner) owners = [owner] owners = getUniqueAddresses(owners, chain) - nftsAndOwners = owners.map(o => [nftAddress, o]) + if (Array.isArray(nftAddress)) + nftsAndOwners = nftAddress.map(nft => owners.map(o => [nft, o])).flat() + else + nftsAndOwners = owners.map(o => [nftAddress, o]) } await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain, blacklistedTokens, whitelistedTokens, }))) return balances @@ -276,8 +281,8 @@ async function unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain = amount1 = liquidity * (sb - sa) } - addToken({ balances, token: token0, amount: amount0, chain, blacklistedTokens, whitelistedTokens}) - addToken({ balances, token: token1, amount: amount1, chain, blacklistedTokens, whitelistedTokens}) + addToken({ balances, token: token0, amount: amount0, chain, blacklistedTokens, whitelistedTokens }) + addToken({ balances, token: token1, amount: amount1, chain, blacklistedTokens, whitelistedTokens }) } } @@ -397,7 +402,7 @@ async function sumTokens(balances = {}, tokensAndOwners, block, chain = "ethereu ethBalanceInputs = getUniqueAddresses(ethBalanceInputs, chain) if (ethBalanceInputs.length) { - if(chain === "tron"){ + if (chain === "tron") { const ethBalances = await Promise.all(ethBalanceInputs.map(getTrxBalance)) ethBalances.forEach(balance => sdk.util.sumSingleBalance(balances, transformAddress(nullAddress), balance)) } else { @@ -730,7 +735,7 @@ async function sumTokens2({ } } -function sumTokensExport({ balances, tokensAndOwners,tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) { +function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) { return async (_, _b, _cb, { api }) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) } @@ -814,8 +819,8 @@ async function unwrap4626Tokens({ api, tokensAndOwners, }) { } async function unwrapConvexRewardPools({ api, tokensAndOwners }) { - const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(([t, o]) => ({ target: t, params: o}))}) - const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: tokensAndOwners.map(i => i[0])}) + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: tokensAndOwners.map(([t, o]) => ({ target: t, params: o })) }) + const tokens = await api.multiCall({ abi: 'address:stakingToken', calls: tokensAndOwners.map(i => i[0]) }) api.addTokens(tokens, bals) return api.getBalances() } diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js new file mode 100644 index 0000000000..2f840ee983 --- /dev/null +++ b/projects/unicrypt-v3/index.js @@ -0,0 +1,26 @@ +const sdk = require('@defillama/sdk') +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getCoreAssets } = require('../helper/tokenMapping') + +const config = { + ethereum: { reserves: ['0x231278edd38b00b07fbd52120cef685b9baebcc1'] }, + arbitrum: { reserves: ['0xfa104eb3925a27e6263e05acc88f2e983a890637'] }, + bsc: { reserves: ['0x0D29598EC01fa03665feEAD91d4Fb423F393886c'] }, +} + +module.exports = { + misrepresentedTokens: true, +} + +Object.keys(config).forEach(chain => { + const { reserves } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const uniV3WhitelistedTokens = await getCoreAssets(api.chain) + const tempBalances = await sumTokens2({ api, owners: reserves, resolveUniV3: true, uniV3WhitelistedTokens, }) + const balances = {} // we multiple core assets value by 2 as positions are spread between 0 - ∞ + Object.entries(tempBalances).forEach(([token, balance]) => sdk.util.sumSingleBalance(balances, token, balance * 2)) + return balances + } + } +}) \ No newline at end of file From ad8227520f4310162e5d8290b8068e798b42b8ac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jul 2023 19:32:49 +0530 Subject: [PATCH 1041/1354] Buffer (#6742) * Added pools * Removed BFR pool * minor fix --------- Co-authored-by: Heisenberg --- projects/buffer/index.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/projects/buffer/index.js b/projects/buffer/index.js index e08f44bc4d..0fc7e8cd66 100644 --- a/projects/buffer/index.js +++ b/projects/buffer/index.js @@ -13,6 +13,7 @@ const contracts = { USDC_POOL_V1: "0x37Cdbe3063002383B2018240bdAFE05127d36c3C", USDC_POOL_V2: "0x4d338bc1a2380752736718f49bd45d9a040fdff8", USDC_POOL_V3: "0x6Ec7B10bF7331794adAaf235cb47a2A292cD9c7e", + USDC_POOL_V4: "0xfD9f8841C471Fcc55f5c09B8ad868BdC9eDeBDE1", POLY_POOL_V1: "0x6FD5B386d8bed29b3b62C0856250cdD849b3564d", ARB_POOL_V1: "0xaE0628C88EC6C418B3F5C005f804E905f8123833", BFR_STAKING: "0x173817F33f1C09bCb0df436c2f327B9504d6e067" @@ -27,22 +28,26 @@ module.exports = { contracts.USDC_POOL_V1, contracts.USDC_POOL_V2, contracts.USDC_POOL_V3, - contracts.ARB_POOL_V1 + contracts.ARB_POOL_V1, + contracts.USDC_POOL_V4 ] }) }, polygon: { tvl: sumTokensExport({ tokens: [tokens.USDC_POLY], - owners: [ - contracts.POLY_POOL_V1 - ] + owners: [contracts.POLY_POOL_V1] }) }, hallmarks: [ [Math.floor(new Date("2022-10-26") / 1e3), "Shifted to USDC POL pool"], - [Math.floor(new Date("2023-01-30") / 1e3), "Opened USDC BLP pool to the public"], + [ + Math.floor(new Date("2023-01-30") / 1e3), + "Opened USDC BLP pool to the public" + ], [Math.floor(new Date("2023-02-22") / 1e3), "Added a USDC Pool on polygon"], - [Math.floor(new Date("2023-03-22") / 1e3), "Added ARB Pool"] + [Math.floor(new Date("2023-03-22") / 1e3), "Added ARB Pool"], + [Math.floor(new Date("2023-04-14") / 1e3), "Added USDC Protocol owned liquidity Pool"], + [Math.floor(new Date("2023-06-14") / 1e3), "Added BFR Pool"] ] }; From 8ef80ba8991f04943b9e6b52145cc411a78f369e Mon Sep 17 00:00:00 2001 From: Elliot Shiu Date: Thu, 6 Jul 2023 12:06:28 -0700 Subject: [PATCH 1042/1354] sommelier: add fraximal cellar (#6746) --- projects/sommelier/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index fba01c1bd2..fd08f3c7e9 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -32,6 +32,7 @@ const REAL_YIELD_1INCH = "0xc7b69e15d86c5c1581dacce3cacaf5b68cd6596f"; const REAL_YIELD_UNI = "0x6a6af5393dc23d7e3db28d28ef422db7c40932b6"; const REAL_YIELD_SNX = "0xcbf2250f33c4161e18d4a2fa47464520af5216b5"; const REAL_YIELD_ENS = "0x18ea937aba6053bc232d9ae2c42abe7a8a2be440"; +const FRAXIMAL = "0xdbe19d1c3f21b1bb250ca7bdae0687a97b5f77e6"; const cellarsV2 = [ { id: DEFI_STARS, startBlock: 17181497 }, @@ -42,6 +43,7 @@ const cellarsV2 = [ { id: REAL_YIELD_UNI, startBlock: 17377190 }, { id: REAL_YIELD_SNX, startBlock: 17377190 }, { id: REAL_YIELD_ENS, startBlock: 17377190 }, + { id: FRAXIMAL, startBlock: 17589948 }, ]; async function tvl(timestamp, block, chainBlocks, { api }) { From 272a782390bcf7d36b841a2055ab025b26b353e5 Mon Sep 17 00:00:00 2001 From: mayfairfund <130176886+mayfairfund@users.noreply.github.com> Date: Fri, 7 Jul 2023 10:41:52 +0500 Subject: [PATCH 1043/1354] Update Mayfair adapter (#6745) * Update Mayfair adapter * mayfair: cache graph response --------- Co-authored-by: g1nt0ki --- projects/mayfair/index.js | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/projects/mayfair/index.js b/projects/mayfair/index.js index 57eb0a2088..191602a0f1 100644 --- a/projects/mayfair/index.js +++ b/projects/mayfair/index.js @@ -1,11 +1,38 @@ -const { staking } = require('../helper/staking'); +const { request } = require("../helper/utils/graphql") +const { cachedGraphQuery } = require('../helper/cache') -const token = "0xf9df075716b2d9b95616341dc6bc64c85e56645c"; -const masterchef = "0x5F54638dade598B9c478EcaB330C3E62861d00C1"; +const { toUSDTBalances } = require("../helper/balances") + +const url = "https://squid.subsquid.io/mayfair-indexer/graphql" + +async function getStakingData() { + return await request(url, `query StakingAnalytics { + stakingPools(where: {id_eq: "0x3ad426dc2f005b721359a94f8b8d71b8890b3068-0"}) { + tvl + } + } + `) + +} +async function getStaking() { + let staking = 0 + const data = await getStakingData() + staking = data.stakingPools?.[0].tvl; + return toUSDTBalances(staking) +} + +async function tvl(_, _1, _2, { api }) { + const { balancerVaults: [{ pools }] } = await cachedGraphQuery('mayfair', url, `{ balancerVaults { pools{ id vaultId } } }`) + const data = await api.multiCall({ abi: 'function getPoolTokens(bytes32) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)', calls: pools.map(i => ({ target: i.vaultId, params: i.id })) }) + data.forEach(({ tokens, balances }) => api.addTokens(tokens.slice(1), balances.slice(1))) + return api.getBalances() +} module.exports = { + timetravel: false, + doublecounted: true, // tokens are in balancer pools arbitrum: { - tvl: () => 0, - staking: staking(masterchef, token) + tvl, + staking: getStaking } } From 8eed368a41a602c18880be16db0014fd44c93e9b Mon Sep 17 00:00:00 2001 From: CronosLabsDev <106642922+CronosLabsDev@users.noreply.github.com> Date: Fri, 7 Jul 2023 13:43:14 +0800 Subject: [PATCH 1044/1354] feat: add staked atom and vno (#6748) --- projects/venofinance/index.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/projects/venofinance/index.js b/projects/venofinance/index.js index 0f2fbd3d43..af33e240d2 100644 --- a/projects/venofinance/index.js +++ b/projects/venofinance/index.js @@ -1,9 +1,15 @@ const sdk = require('@defillama/sdk') +const { staking } = require("../helper/staking.js"); -async function tvl(timestamp, ethBlock, chainBlocks) { +const fountain_contract_address = "0xb4be51216f4926ab09ddf4e64bc20f499fd6ca95" +const reservoir_contract_address = "0x21179329c1dcfd36ffe0862cca2c7e85538cca07" +const vno_contract_address = "0xdb7d0a1ec37de1de924f8e8adac6ed338d4404e9" + +async function tvl(timestamp, ethBlock, chainBlocks, {api}) { const lcro_contract_address = '0x9Fae23A2700FEeCd5b93e43fDBc03c76AA7C08A6'; + const latom_contract_address = '0xac974ee7fc5d083112c809ccb3fce4a4f385750d'; const block = chainBlocks.cronos @@ -14,8 +20,16 @@ async function tvl(timestamp, ethBlock, chainBlocks) { chain: 'cronos' }) + const atom_pooled = await sdk.api.abi.call({ + abi: "uint256:getTotalPooledToken", + target: latom_contract_address, + block: block, + chain: 'cronos' + }) + return { - 'crypto-com-chain': Number(cro_pooled.output) / 1e18 + 'crypto-com-chain': Number(cro_pooled.output) / 1e18, + "cosmos": Number(atom_pooled.output) / 1e6 }; } @@ -24,6 +38,7 @@ module.exports = { misrepresentedTokens: false, methodology: 'TVL counts CRO staked by the protocol.', cronos: { - tvl + tvl , + staking: staking([fountain_contract_address, reservoir_contract_address], vno_contract_address) } } \ No newline at end of file From 7ca36df240909c04630e2591a3415343e6f7c597 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 09:23:58 +0200 Subject: [PATCH 1045/1354] track pinnako.io --- projects/helper/coreAssets.json | 2 ++ projects/pinnako/index.js | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 projects/pinnako/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index b9d589ae4a..efd13935ce 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1267,6 +1267,8 @@ "era": { "WETH": "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", "USDC": "0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4", + "WBTC": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", + "USDT": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", "BUSD": "0x2039bb4116B4EFc145Ec4f0e2eA75012D6C0f181" }, "polygon_zkevm": { diff --git a/projects/pinnako/index.js b/projects/pinnako/index.js new file mode 100644 index 0000000000..0527345476 --- /dev/null +++ b/projects/pinnako/index.js @@ -0,0 +1,17 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + era: { + tvl: sumTokensExport({ + owner: '0x87A43dfAB5068c9Ae2f75da2906559bc9A71b42d', + tokens: [ + ADDRESSES.era.WETH, + ADDRESSES.era.WBTC, + ADDRESSES.era.USDC, + ADDRESSES.era.USDT, + ] + }), + staking: sumTokensExport({ owner: '0x2A283C805D11ad77161Be0c503805a2b8Bc7Fd84', tokens: ['0xf8C6dA1bbdc31Ea5F968AcE76E931685cA7F9962'] }), + }, +} From 481b3ec48975400077e1936760d7aed9878a8c63 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 10:01:45 +0200 Subject: [PATCH 1046/1354] refactor stackswap --- projects/arkadiko.js | 50 ++++++++++---------------- projects/helper/chain/stacks-api.js | 56 +++++++++++++++++++++++++++++ projects/helper/coreAssets.json | 4 +++ projects/helper/tokenMapping.js | 2 +- projects/stackswap/api.js | 38 ++++++++++++++++++++ 5 files changed, 118 insertions(+), 32 deletions(-) create mode 100644 projects/helper/chain/stacks-api.js create mode 100644 projects/stackswap/api.js diff --git a/projects/arkadiko.js b/projects/arkadiko.js index 3961e42504..681d706a4c 100644 --- a/projects/arkadiko.js +++ b/projects/arkadiko.js @@ -1,39 +1,27 @@ -const { get } = require('./helper/http') -// node test.js projects/arkadiko.js -async function tvl() { - let balances = {}; - const dikoPrice = (await get("https://arkadiko-api.herokuapp.com/api/v1/tokens/diko"))["price_in_cents"]; - const response = (await get("https://arkadiko-api.herokuapp.com/api/v1/pools")); - - for (let pool of response.pools) { - balances[pool.token_y_name] = - pool.token_y_name in balances - ? Number(balances[pool.token_y_name]) + Number(pool.tvl_token_y) - : Number(pool.tvl_token_y); - balances[pool.token_x_name] = - pool.token_x_name in balances - ? Number(balances[pool.token_x_name]) + Number(pool.tvl_token_x) - : Number(pool.tvl_token_x); - } +const { sumTokens } = require('./helper/chain/stacks') - balances["blockstack"] = balances["wrapped-stx-token"] / 10 ** 6; - delete balances["wrapped-stx-token"]; - balances["usd-coin"] = balances["usda-token"] / 10 ** 6; - delete balances["usda-token"]; - balances["usd-coin"] = - Number(balances["usd-coin"]) + - Number(balances["arkadiko-token"] / 10 ** 8) * dikoPrice; - delete balances["arkadiko-token"]; - balances["wrapped-bitcoin"] = balances["Wrapped-Bitcoin"] / 10 ** 8; - delete balances["Wrapped-Bitcoin"] - - return balances; +async function tvl() { + // https://info.arkadiko.finance/balances + return sumTokens({ + owners: [ + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1', // stacks reserve + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-sip10-reserve-v2-1', // other vaults + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-v3-1', // PoX stackers + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-2-v3-1', + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-3-v3-1', + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-4-v3-1', + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1', // swap tokens + ], + blacklistedTokens: [ + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token::wstx', + 'stacks:SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token::diko', + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token::usda', + ] + }) } module.exports = { - misrepresentedTokens: true, stacks: { tvl, }, }; -// node test.js projects/arkadiko.js diff --git a/projects/helper/chain/stacks-api.js b/projects/helper/chain/stacks-api.js new file mode 100644 index 0000000000..d0eebe8a3a --- /dev/null +++ b/projects/helper/chain/stacks-api.js @@ -0,0 +1,56 @@ +const stacks = require('@stacks/transactions') +const { StacksMainnet } = require('@stacks/network') + +const { bufferCVFromString, callReadOnlyFunction, uintCV, principalCV, } = stacks +let network + +const senderAddress = 'ST2F4BK4GZH6YFBNHYDDGN4T1RKBA7DA1BJZPJEJJ' + +function getNetwork() { + if (!network) + network = new StacksMainnet() + return network +} + +async function call({ target, abi, inputArgs = [], }) { + const [contractAddress, contractName] = target.split('.') + const network = getNetwork() + const result = await callReadOnlyFunction({ network, contractAddress, contractName, functionName: abi, functionArgs: inputArgs.map(toClairty), senderAddress}); + return stacks.cvToValue(result) + + function toClairty(arg) { + switch (arg.type) { + case 'string': return bufferCVFromString(arg.value) + case 'number': return uintCV(arg.value) + case 'principal': return principalCV(arg.value) + default: throw new Error(`Unknown type ${arg.type}`) + } + } +} + +module.exports = { + call, +} + +async function main() { + const result = await callReadOnlyFunction(options); + const result1 = await callReadOnlyFunction({...options, functionName: 'get-lp-data' }); + console.log(sTransactions.cvToValue(result)); + console.log(sTransactions.cvToValue(result1)); + console.log(sTransactions.cvToValue(await callReadOnlyFunction({ + contractAddress: 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275', + contractName: 'stackswap-swap-v5k', + functionName: 'get-pair-count', + functionArgs: [], + network, + senderAddress + }))) + console.log(sTransactions.cvToValue(await callReadOnlyFunction({ + contractAddress: 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275', + contractName: 'stackswap-swap-v5k', + functionName: 'get-pair-contracts', + functionArgs: [uintCV(5)], + network, + senderAddress + }))) +} diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index efd13935ce..28828deac8 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1336,5 +1336,9 @@ "USDT": "0xff276c6bca1f66fd54a8915e830735d6ab0c7b09", "BTC": "0x935765ad27a1af00f73097c998a9fb721d2d7790", "ETH": "0xb4373ebb073a4dcba47e567d075a9583fa3c763e" + }, + "stacks": { + "WSTX": "SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.wstx-token-v4a", + "WBTC": "SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin::wrapped-bitcoin" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index b8ac7ef995..f69b60cb0a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -56,7 +56,7 @@ const fixBalancesTokens = { }, ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain - } + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/stackswap/api.js b/projects/stackswap/api.js new file mode 100644 index 0000000000..89c64945e2 --- /dev/null +++ b/projects/stackswap/api.js @@ -0,0 +1,38 @@ +const sdk = require('@defillama/sdk') +const { call } = require('../helper/chain/stacks-api') +const { transformDexBalances } = require('../helper/portedTokens') +const { getCache, setCache, } = require('../helper/cache') + +const factory = 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.stackswap-swap-v5k' + +module.exports = { + stacks: { tvl } +} + +async function tvl(_, _b, _cb, { api, }) { + const data = [] + const { value: pairCount } = await call({ target: factory, abi: 'get-pair-count' }) + const cache = await getCache('stackswap', 'stacks-config') + if (!cache.pairData) cache.pairData = [] + for (let i = cache.pairData.length +1; i <= pairCount; i++) { + const pair = await call({ target: factory, abi: 'get-pair-contracts', inputArgs: [{ type: 'number', value: i }] }) + cache.pairData.push(pair) + console.log('pair count: ', cache.pairData.length) + } + + await setCache('stackswap', 'stacks-config', cache) + let j = 0 + + for (const pair of cache.pairData) { + if (pair['liquidity-token'].value === 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.liquidity-token-v5krqbd8nh6') continue // ignore STSW-lBTC + const pairData = await call({ target: pair['liquidity-token'].value, abi: 'get-lp-data', }) + data.push({ + token0: pair['token-x'].value, + token1: pair['token-y'].value, + token0Bal: +pairData.value['balance-x'].value + +pairData.value['fee-balance-x'].value, + token1Bal: +pairData.value['balance-y'].value + +pairData.value['fee-balance-y'].value, + }) + console.log('pair data: ',++j) + } + return transformDexBalances({ chain: 'stacks', data}) +} \ No newline at end of file From 6cda695f11a1d0a2aa7c12dc195b6c75f6dd44b7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 10:07:44 +0200 Subject: [PATCH 1047/1354] minor fix --- projects/helper/portedTokens.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/portedTokens.js b/projects/helper/portedTokens.js index 638a9a4adb..47fac2291b 100644 --- a/projects/helper/portedTokens.js +++ b/projects/helper/portedTokens.js @@ -141,6 +141,7 @@ async function getChainTransform(chain) { if (chain === 'cardano' && addr === 'ADA') return 'coingecko:cardano' if (chain === 'near' && addr.endsWith('.near')) return chainStr if (chain === 'tron' && addr.startsWith('T')) return chainStr + if (chain === 'stacks' && addr.startsWith('SP')) return chainStr if (chain === 'tezos' && addr.startsWith('KT1')) return chainStr if (chain === 'terra2' && addr.startsWith('terra1')) return chainStr if (chain === 'algorand' && /^\d+$/.test(addr)) return chainStr From 6ea77db81d98027852879327178ba35cf83b349f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 10:30:56 +0200 Subject: [PATCH 1048/1354] fix ashswap --- projects/ashswap/index.js | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/projects/ashswap/index.js b/projects/ashswap/index.js index 4a8b3ea71b..7159c2e13d 100644 --- a/projects/ashswap/index.js +++ b/projects/ashswap/index.js @@ -1,32 +1,21 @@ -const { request } = require("graphql-request"); -const { toUSDTBalances } = require('../helper/balances') +const { cachedGraphQuery } = require('../helper/cache') +const { sumTokens, sumTokensExport } = require('../helper/sumTokens') const API_URL = 'https://api-v2.ashswap.io/graphql'; -const TVLQuery = ` -{ - defillama { - totalValueLockedUSD +const TVLQuery = `query ashBaseStateQuery { + pools { + address } -} -` - -const StakingQuery = ` -{ - defillama { - totalValueStakedUSD + poolsV2 { + address } -} -` +}` async function tvl() { - const results = await request(API_URL, TVLQuery) - return toUSDTBalances(results.defillama.totalValueLockedUSD) -} - -async function staking() { - const results = await request(API_URL, StakingQuery) - return toUSDTBalances(results.defillama.totalValueStakedUSD) + const data = await cachedGraphQuery('ashswap', API_URL, TVLQuery) + const owners = Object.values(data).flat().map(i => i.address) + return sumTokens({ owners, chain: 'elrond'}) } module.exports = { @@ -34,6 +23,6 @@ module.exports = { timetravel: false, elrond: { tvl, - staking, + staking: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgq58elfqng8edp0z83pywy3825vzhawfqp4fvsaldek8'}), }, } \ No newline at end of file From defb7184b62bfb317036026c6c2b57ec260fe1d4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 10:39:11 +0200 Subject: [PATCH 1049/1354] fix quantumx --- projects/quantumx-network/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/quantumx-network/index.js b/projects/quantumx-network/index.js index 3dfa35b250..38b4a8698a 100644 --- a/projects/quantumx-network/index.js +++ b/projects/quantumx-network/index.js @@ -64,7 +64,7 @@ const getRealBalance = (balance1, decimal) => { const real = balance.dividedBy(divider, 10); return real.toNumber(); }; -const formatBalanceDolar = (token, price) => { +const formatBalanceDolar = (token, price = 0) => { if (token && token.balance) { const strBalance = token.balance; From 4c619dbcc39b67e841a6f67860cdf6d1027f7ca2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 10:59:55 +0200 Subject: [PATCH 1050/1354] update stackswap --- projects/stackswap.js | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/projects/stackswap.js b/projects/stackswap.js index 5be904df0b..0038db1eac 100644 --- a/projects/stackswap.js +++ b/projects/stackswap.js @@ -1,16 +1,7 @@ -const { get } = require('./helper/http') - -async function fetch() { - let poolValues = ( - await get("https://app.stackswap.org/api/v1/pools") - ) - .filter(p => p.pair_name !== 'STSW-lBTC') - .map(p => p.liquidity_locked); - poolValues = poolValues.map(v => v.substring(0, v.indexOf('USD'))); - return poolValues.reduce((a, b) => a + parseFloat(b), 0); -} +const { getExports } = require('./helper/heroku-api') module.exports = { - timetravel: false, - fetch, -}; + timetravel: false, + misrepresentedTokens: true, + ...getExports("stackswap", ['stacks']), +} From c441c34b605eb4a0cc32a5314bbba9d0e0d3c32e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 12:01:00 +0200 Subject: [PATCH 1051/1354] fix kassandra --- projects/helper/tokenMapping.js | 4 ++ projects/kassandra/index.js | 84 +++++++++++++++++++++++++++------ 2 files changed, 73 insertions(+), 15 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f69b60cb0a..2f565faf4d 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -54,6 +54,10 @@ const fixBalancesTokens = { rpg: { '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, }, + avax: { + '0x8fdcf51d1aaeb9f031838ebeb15884a0d5efcda3': { coingeckoId: "wrapped-bitcoin", decimals: 18 }, + '0xaa44678304cc1a848bfc31dc013afcc6c9feae11': { coingeckoId: "benqi", decimals: 18 }, + }, ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, diff --git a/projects/kassandra/index.js b/projects/kassandra/index.js index e24bb1eb02..a9d8d4acb8 100644 --- a/projects/kassandra/index.js +++ b/projects/kassandra/index.js @@ -1,19 +1,73 @@ -const { postURL } = require('../helper/utils') +const sdk = require('@defillama/sdk') +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') +const abi = require('../aura-finance/abi.json') +const { stripTokenHeader } = require('../helper/tokenMapping') -async function fetch() { - const data = { - operationName: "TotalValueLocked", - variables: {}, - query: "query TotalValueLocked { factory (id: \"0x958c051B55a173e393af696EcB4C4FF3D6C13930\") { total_value_locked_usd } }" - } - const response = await postURL("https://graph.kassandra.finance/subgraphs/name/KassandraAvalanche", data); - return response.data.data.factory.total_value_locked_usd +const config = { + avax: { factory: '0x878fa1ef7d9c7453ea493c2424449d32f1dbd846', fromBlock: 10087927 }, } -module.exports = { - timetravel: false, - fetch, - avax: { - fetch, - } +const configBalancer = { + polygon: { factory: '0x228885c9d0440Ae640B88fBeE31522CC6a59Fd2F', fromBlock: 42020509 }, } + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x2dcffae760adbb49d27552cdcd6cf9835c1a8e4545a5b123f8cac6d5a968b11b'], + eventAbi: 'event LogNewPool(address indexed caller, address indexed pool)', + onlyArgs: true, + fromBlock, + }) + const pools = logs.map(log => log.pool) + const tokens = await api.multiCall({ abi: 'address[]:getCurrentTokens', calls: pools }) + await sumTokens2({ api, ownerTokens: pools.map((pool, i) => [tokens[i], pool]) }) + if (chain === 'avax') { + const balances = api.getBalances() + const allTokens = tokens.flat().map(i => i.toLowerCase()) + const symbols = await api.multiCall({ abi: 'string:symbol', calls: allTokens, }) + const yrtTokens = allTokens.filter((token, i) => symbols[i] === 'YRT') + const depositTokens = await api.multiCall({ abi: 'address:depositToken', calls: yrtTokens}) + const deposits = await api.multiCall({ abi: 'uint256:totalDeposits', calls: yrtTokens}) + const supply = await api.multiCall({ abi: 'uint256:totalSupply', calls: yrtTokens}) + Object.entries(balances).forEach(([token, balance]) => { + const t = stripTokenHeader(token) + yrtTokens.forEach((yToken, i) => { + if (yToken === t) { + delete balances[token] + sdk.util.sumSingleBalance(balances, depositTokens[i], balance * deposits[i] / supply[i], api.chain) + } + }) + }) + return balances + } + } + } +}) + +Object.keys(configBalancer).forEach(chain => { + const { factory, fromBlock } = configBalancer[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const managedPoolFactory = await api.call({ target: factory, abi: 'address:managedPoolFactory'}) + const vault = await api.call({ target: managedPoolFactory, abi: 'address:getVault'}) + const logs = await getLogs({ + api, + target: factory, + topics: ['0x3bccd8755c586fb977facb52bc850861b8588643edb28cbfef711671791710e9'], + eventAbi: 'event KassandraPoolCreatedTokens (bytes32 indexed vaultPoolId, string tokenName, string tokenSymbol, address[] tokens)', + onlyArgs: true, + fromBlock, + }) + const poolIds = logs.map(log => log.vaultPoolId) + const data = await api.multiCall({ abi: abi.getPoolTokens, calls: poolIds, target: vault}) + data.forEach(({ tokens, balances}) => api.addTokens(tokens.slice(1), balances.slice(1))) + return api.getBalances() + } + } +}) \ No newline at end of file From ace3746afd4850a830dffaa7edf198c0e393d78d Mon Sep 17 00:00:00 2001 From: MFIL <120017544+MFILDAO@users.noreply.github.com> Date: Fri, 7 Jul 2023 18:01:36 +0800 Subject: [PATCH 1052/1354] MFIL Update index.js (#6751) MFIL DAO updated the MFIL smart contract --- projects/MFIL/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/MFIL/index.js b/projects/MFIL/index.js index 6b16adf990..c071cd8ff0 100644 --- a/projects/MFIL/index.js +++ b/projects/MFIL/index.js @@ -1,5 +1,5 @@ -const MFILPOOLCONTRACT = '0x72A57760aE548B8d1B3a1b29bE25D2f09a6cB558'; -const MFILREGULARPOOLCONTRACT = '0xDcECF046dd21A7298Eb3c0a3c70d716999E7A607' +const MFILPOOLCONTRACT = '0x8aF827CDa3b7Eee9720496A30595D7Ee89A27ee2'; +const MFILREGULARPOOLCONTRACT = '0xD4f7c1A09ed5f50a3eC2F1e9fcF8B1bc2d1d3d70' const ADDRESSES = require('../helper/coreAssets.json') async function mfilTvl(_, _1, _2, { api }) { From e42d511899317f80d9c43a496376a015f74a4ca0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 15:33:22 +0530 Subject: [PATCH 1053/1354] Arcadia-fi (#6747) * :tada: Add tvl * Update projects/arcadia-finance/index.js Co-authored-by: Jasper <104004836+j-vp@users.noreply.github.com> * code refactor * arcadia-fi: count only available liquidity in lending pool * Update projects/arcadia-finance/index.js Co-authored-by: zeki --------- Co-authored-by: zeki Co-authored-by: Jasper <104004836+j-vp@users.noreply.github.com> Co-authored-by: g1nt0ki --- projects/arcadia-finance/helper/abi.json | 8 +++++ projects/arcadia-finance/helper/index.js | 38 ++++++++++++++++++++++++ projects/arcadia-finance/index.js | 9 ++++++ 3 files changed, 55 insertions(+) create mode 100644 projects/arcadia-finance/helper/abi.json create mode 100644 projects/arcadia-finance/helper/index.js create mode 100644 projects/arcadia-finance/index.js diff --git a/projects/arcadia-finance/helper/abi.json b/projects/arcadia-finance/helper/abi.json new file mode 100644 index 0000000000..f12130f7db --- /dev/null +++ b/projects/arcadia-finance/helper/abi.json @@ -0,0 +1,8 @@ +{ + "totalRealisedLiquidity": "uint128:totalRealisedLiquidity", + "totalUnrealisedLiquidity": "uint256:calcUnrealisedDebt", + "vaultLength": "uint256:allVaultsLength", + "vaultAddress": "function allVaults(uint256) view returns (address)", + "assetData": "function generateAssetData() view returns (address[], uint256[], uint256[])", + "assetsInPricingModule": "function assetsInPricingModule(uint256) view returns (address)" +} \ No newline at end of file diff --git a/projects/arcadia-finance/helper/index.js b/projects/arcadia-finance/helper/index.js new file mode 100644 index 0000000000..cc4aaaf409 --- /dev/null +++ b/projects/arcadia-finance/helper/index.js @@ -0,0 +1,38 @@ +const { sumTokens2 } = require('../../helper/unwrapLPs') +const abi = require("./abi.json") + +const config = { + optimism: { + factory: "0x00CB53780Ea58503D3059FC02dDd596D0Be926cB", + pools: { + wethPool: "0xD417c28aF20884088F600e724441a3baB38b22cc", + usdcPool: "0x9aa024D3fd962701ED17F76c17CaB22d3dc9D92d" + } + }, + ethereum: { + factory: "0x00CB53780Ea58503D3059FC02dDd596D0Be926cB", + pools: { + wethPool: "0xD417c28aF20884088F600e724441a3baB38b22cc", + usdcPool: "0x9aa024D3fd962701ED17F76c17CaB22d3dc9D92d", + } + } +} + + +async function tvl(_, _b, _cb, { api, }) { + const { chain } = api + let { factory, pools } = config[chain] + pools = Object.values(pools) + const poolAssets = await api.multiCall({ abi: 'address:asset', calls: pools }) + + const vaults = await api.fetchList({ lengthAbi: abi.vaultLength, itemAbi: abi.vaultAddress, target: factory, }) + const assetData = await api.multiCall({ abi: abi.assetData, calls: vaults, }) + + assetData.forEach((assetsInVaults) => api.addTokens(assetsInVaults[0], assetsInVaults[2])) + + return sumTokens2({ api, tokensAndOwners2: [poolAssets, pools, ]}) +} + +module.exports = { + tvl, +}; \ No newline at end of file diff --git a/projects/arcadia-finance/index.js b/projects/arcadia-finance/index.js new file mode 100644 index 0000000000..ffb07c2bfd --- /dev/null +++ b/projects/arcadia-finance/index.js @@ -0,0 +1,9 @@ +const { tvl, } = require("./helper"); + +module.exports = { + methodology: + "TVL includes ERC-20 tokens that have been supplied as collateral as well as ERC-20 tokens that are supplied by liquidity providers.", + optimism: { tvl }, + ethereum: { tvl }, + start: 1686391200 // Jun 10 2023 10:00:00 GMT+0000 +} \ No newline at end of file From 31ea9dcac297ba7920add8987453912654f2a4b3 Mon Sep 17 00:00:00 2001 From: Pham Anh Minh <93236465+phamminh0811@users.noreply.github.com> Date: Fri, 7 Jul 2023 17:42:17 +0700 Subject: [PATCH 1054/1354] Osmosis - Quasar add ICA adaper (#6708) * add tvl for quarsar * revert minh pr * add tvl for quarsar * add quarsar chain and change calculate lock on lpStrategyContracts * update pool contract * fix misspell quasar * add ica osmosis * minor fix * remove double counting --- projects/quasar/index.js | 67 ++++++++++------------------------------ 1 file changed, 16 insertions(+), 51 deletions(-) diff --git a/projects/quasar/index.js b/projects/quasar/index.js index bfd5c7a9ad..068a5a1689 100644 --- a/projects/quasar/index.js +++ b/projects/quasar/index.js @@ -1,5 +1,4 @@ -const axios = require("axios"); -const { endPoints, queryContract } = require('../helper/chain/cosmos') +const { queryContract } = require('../helper/chain/cosmos') const sdk = require('@defillama/sdk') const chain = 'quasar' @@ -15,9 +14,6 @@ const lpStrategyContracts = { "quasar1suhgf5svhu4usrurvxzlgn54ksxmn8gljarjtxqnapv8kjnp4nrsmslfn4", "quasar1ma0g752dl0yujasnfs9yrk6uew7d0a2zrgvg62cfnlfftu2y0egqx8e7fv", ], - 704: [ - "quasar1yyca08xqdgvjz0psg56z67ejh9xms6l436u8y58m82npdqqhmmtqk5tv30", - ], 803: [ "quasar1jgn70d6pf7fqtjke0q63luc6tf7kcavdty67gvfpqhwwsx52xmjq7kd34f", "quasar1t9adyk9g2q0efn3xndunzy4wvdrnegjkpvp382vm2uc7hnvash5qpzmxe4", @@ -34,25 +30,26 @@ const lpStrategyContracts = { ], } - async function tvl() { const api = new sdk.ChainApi({ chain: 'osmosis' }) for (const poolID in lpStrategyContracts) { let lpContracts = lpStrategyContracts[poolID]; - let poolEndpoint = `${endPoints['osmosis']}/osmosis/gamm/v1beta1/pools/${poolID}`; - const poolData = (await axios.get(poolEndpoint)).data.pool; - for (const contractAddress of lpContracts) { - let lp_shares = await queryContract({ - contract: contractAddress, - chain: chain, - data: { 'lp_shares': {} } - }); - - let amount = calculateTokenAmounts(poolData, lp_shares['lp_shares']['locked_shares']) - for (const denom in amount) { - api.add(denom, amount[denom]) + try { + let ica_balances = await queryContract({ + contract: contractAddress, + chain: chain, + data: { 'ica_balance': {} } + }); + + let denom = ica_balances.amount.denom; + let amount = Number(ica_balances.amount.amount); + + api.add(denom, amount) + } catch (e) { + console.log(e) + continue; } } } @@ -60,42 +57,10 @@ async function tvl() { return api.getBalances() } - -function calculateTokenAmounts(poolData, gammAmount) { - // Extract the total pool shares. - let totalShares = poolData.total_shares.amount; - - // Initialize an object to hold the amounts of each token. - let tokenAmounts = {}; - - // For each token in the pool... - if (typeof poolData.pool_assets !== "undefined") { - for (let asset of poolData.pool_assets) { - // Extract the token's denom and amount. - let denom = asset.token.denom; - let assetAmount = asset.token.amount; - - // Calculate the amount of this token that corresponds to the given amount of pool shares. - tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; - } - } else { - for (let asset of poolData.pool_liquidity) { - // Extract the token's denom and amount. - let denom = asset.denom; - let assetAmount = asset.amount; - - // Calculate the amount of this token that corresponds to the given amount of pool shares. - tokenAmounts[denom] = (gammAmount * assetAmount) / totalShares; - } - } - - return tokenAmounts; -} - module.exports = { timetravel: false, methodology: "Total TVL on vaults", - quasar: { + osmosis: { tvl, }, } \ No newline at end of file From e00e0a3c3bfb0759259b346e0c4754b1c9557f14 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 7 Jul 2023 11:46:42 +0100 Subject: [PATCH 1055/1354] add eth to davos (empty pool?!) --- projects/davos-protocol/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js index fb8b23e6a4..930d905b68 100644 --- a/projects/davos-protocol/index.js +++ b/projects/davos-protocol/index.js @@ -6,5 +6,13 @@ module.exports = { tvl: sumTokensExport({ chain: 'polygon', owner: '0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', tokens: [ '0x0E9b89007eEE9c958c0EDA24eF70723C2C93dD58', // ankrMATIC ] }), + }, + ethereum: { + tvl: sumTokensExport({ chain: 'ethereum', owner: '0x819d1Daa794c1c46B841981b61cC978d95A17b8e', tokens: [ + '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0', // WSTETH + '0xae78736cd615f374d3085123a210448e74fc6393', //reth + '0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599', //stmatic + '0xac3e018457b222d93114458476f3e3416abbe38f', //SFRXETH + ] }), } } From 36a468d7d5345e2cb3c318df17420e1cecce62ac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 12:58:01 +0200 Subject: [PATCH 1056/1354] track radiate-protocol --- projects/radiate-protocol/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/radiate-protocol/index.js diff --git a/projects/radiate-protocol/index.js b/projects/radiate-protocol/index.js new file mode 100644 index 0000000000..6e1c94227f --- /dev/null +++ b/projects/radiate-protocol/index.js @@ -0,0 +1,17 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +async function tvl(_, _b, _cb, { api, }) { + const vault = '0xC6dC7749781F7Ba1e9424704B2904f2F94D3eb63' + const dlp = await api.call({ abi: 'address:dlp', target: vault}) + const masterchef = await api.call({ abi: 'address:mfd', target: vault}) + const { total }= await api.call({ abi:"function lockedBalances(address user) view returns (uint256 total, uint256 unlockable, uint256 locked, uint256 lockedMultiplier, tuple(uint256 amount, uint256 unlockTime, uint256, uint256)[] lockData)", target: masterchef, params: vault }) + api.add(dlp, total) + return sumTokens2({ owner: vault, tokens: [dlp], api}) +} + +module.exports = { + doublecounted: true, + arbitrum: { + tvl, + }, +} \ No newline at end of file From 6269c7c377a949afa38db837147d3bb8ecccb62b Mon Sep 17 00:00:00 2001 From: "yepp4you - EOSeoul.io" Date: Fri, 7 Jul 2023 15:03:41 +0400 Subject: [PATCH 1057/1354] add new stake address on Klaytn (#6753) --- projects/neopin-staking/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/neopin-staking/index.js b/projects/neopin-staking/index.js index dbb6fc8cab..08f1f6abcf 100644 --- a/projects/neopin-staking/index.js +++ b/projects/neopin-staking/index.js @@ -11,6 +11,7 @@ module.exports = { '0xDa664b81C13b050F9b0435D0B712218Aa8BB1609', '0x0D3ACA076712DE598DF856cEcEF76daD38F0A75b', '0xf9d92BAd7b1410dfFB0a204B7aa418C9fd5A898F', + '0xf20816C9bdcb25da3ba79b206e9b7107ae02ae10' ], tokens: [nullAddress], }), From 0ee653a52e705440c925079a8d7a690015f7772c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 13:04:21 +0200 Subject: [PATCH 1058/1354] lint fix --- projects/helper/chain/stacks-api.js | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/projects/helper/chain/stacks-api.js b/projects/helper/chain/stacks-api.js index d0eebe8a3a..e61045874e 100644 --- a/projects/helper/chain/stacks-api.js +++ b/projects/helper/chain/stacks-api.js @@ -31,26 +31,3 @@ async function call({ target, abi, inputArgs = [], }) { module.exports = { call, } - -async function main() { - const result = await callReadOnlyFunction(options); - const result1 = await callReadOnlyFunction({...options, functionName: 'get-lp-data' }); - console.log(sTransactions.cvToValue(result)); - console.log(sTransactions.cvToValue(result1)); - console.log(sTransactions.cvToValue(await callReadOnlyFunction({ - contractAddress: 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275', - contractName: 'stackswap-swap-v5k', - functionName: 'get-pair-count', - functionArgs: [], - network, - senderAddress - }))) - console.log(sTransactions.cvToValue(await callReadOnlyFunction({ - contractAddress: 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275', - contractName: 'stackswap-swap-v5k', - functionName: 'get-pair-contracts', - functionArgs: [uintCV(5)], - network, - senderAddress - }))) -} From d111e99578b6f2632dbad37bd11004984845da3f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 14:48:55 +0200 Subject: [PATCH 1059/1354] harcode grim --- projects/grim/config.json | 539 ++++++++++++++++++++++++++++++++++++++ projects/grim/index.js | 124 +-------- projects/helper/utils.js | 2 +- 3 files changed, 551 insertions(+), 114 deletions(-) create mode 100644 projects/grim/config.json diff --git a/projects/grim/config.json b/projects/grim/config.json new file mode 100644 index 0000000000..d98d1d2cdb --- /dev/null +++ b/projects/grim/config.json @@ -0,0 +1,539 @@ +{ + "telos": [ + "0x5E9054c2eeCB9Dd9BC5818E9aE314070c92a9Dbb", + "0x8cAC1868B06A6B53181E497611c8496a96D72A8c", + "0x4Dc1B8dEee2aA42b2e6eC2c6C53d7f7D3fac3e9A", + "0x60DC3d4a7866E1F2802Fc851aC2AF12da4D65Cf1", + "0xB3e34c8046AFC1F7dE0F6f2C0d3140647AD58b30", + "0x6272593eEE38eC7F7F80f971250F39F34FE839ab", + "0x7AfB0Bc08873219d2b8F4Ee44312102e0a1A91d5", + "0xD52C0c24F47D06C5c3Bf41A610d7b591980e201c", + "0x69FE9896f7653BB1961bfCE4D01F3416f59f803E", + "0xaa5eE9cFc6c53419845867d5c4fE361c59D2a9bc", + "0x37CE0654FA0A5D7720b488f18B7c11f5b721BEC3", + "0x9a8d575B3f1Fc91Db2F29c4E87E48F528A3510B9", + "0x0Be694BBA360a5c375622aAf9e31EE82a95b680B", + "0xEcb20d5691E4eac894F4BD8f2A84b2c76BD49f67", + "0xFB65Af3cF542E356C16065467937BF90BB7B54BB", + "0xEC45eDc98243f9DaB8E8C738Aa51910075A0d90F", + "0x87EFdAe3fE46a861ec96fD5ffB5e4C5DDc8f9e79", + "0xeDb1A44fCBC18B0bc8998112b9a987E417bbb23b", + "0xF9c03F4042d4A5F2807A93381A8F7d68e93FD9B2", + "0x173630Ff7c7763DbcD9B38b03c2870B5d51dDB80", + "0xB0c5d5b4a59Ac769f54114D836e1530991da3863", + "0x9F8F4Ffe23Ff4bD7D64F82e60B046002dDCB6684", + "0x4b742d7f8E6E6911a9674EBB00cD6DEEf3091Afa", + "0xdf86120116F04E004f7EDF9B67e40452e08D5774" + ], + "polygon": [ + "0xEfA6e06B557ECF6b328bFffC361D559F4476c26b", + "0xa12e5A6f7968AE09a28e88D978Cae050751C06A5", + "0xBcDd8E50e2109cea403c9a7b88cdBD4c6F8F2045", + "0x00187581AAD2bf25724774676a6B22021Fe8b0C9", + "0x7F37f76d390eCFf2e9832C83fA70c1A1a53C40d8", + "0xbf5953bA9CD32c44e19795c17bC50Ff7369759e5", + "0x553F75622cF944b85f17Be3B53Cd17CE40798984", + "0x289Eb918eaD4cddaeCDE64f946569115E01Ba958", + "0x94118a1752cE651e8e4Ea21620C4da46D8f143d4" + ], + "fantom": [ + "0x54369163e3dE8D993A93f45946DFdadFED1E7Eb4", + "0x5a1d96F0ee43167B58234Bb81e008d3892639f0a", + "0x8Cf9E920AEF195C8D9024269699D762b0685C89c", + "0x6ab4a69a6E43D50f265F0619962F989B6615b7BC", + "0x3ae73a25532be8a67bAa2Cf2aDB765d63443d80D", + "0xAc38fB48A022971112019a40f2AcbB5b77bFB891", + "0x3e2e5AEf7Cea5606204d79616D0cdf8D5AcE385e", + "0x23869f49B5093aaaD5EDaF839B2C37707216b741", + "0x26CE39D79C3F13c6131B8B45577C87f9bB562857", + "0xB92D48c8896965c6eA7a04725F08564A2313D101", + "0x8410903237F9929146dcE683e7921CEA50547689", + "0x053365e9aeB14424a58c14117FEb6D760c0384e9", + "0x7964cd13E81F3B72d9E24FeA428772C29048f715", + "0x7d5196ed6F7E30B43297d5356ba31f3DE7a66827", + "0x66334e72Ba358b79cC2EBd0282c1d8949BFC7564", + "0x61f5d294D71Be47BB0Cb1C2430ECE5605EBA3734", + "0x4Bd6372d9b6e76ef55268b03e80C35b5BF743B62", + "0x40c3C7E16c5faFBAcD2F4f6A58858850d59a5a8e", + "0x30D89125F2b90942Ad77a7631481E0B49f449c13", + "0xb2cf157bA7B44922B30732ba0E98B95913c266A4", + "0xfD6DDdf0C9e6C5a7A518e6Cbfbc222cb2991a2B3", + "0x462aDf50aE6195f46430177450CdFB6eC742A0E5", + "0xf990AC8242FdB9De467A6e5E2b01CC08dC654717", + "0xD94C7DEd80CfA4650Dc61Ab483AF74df0d96f745", + "0x4edC791ddE70914B2C9179934ECaedFd539e1b0c", + "0xb6662bb1b66B75bE8A0cecFe5af08A1DcD46Cf82", + "0xc6493cE516CD3586bB77b41E1A410c6d8B0A305B", + "0x91B7c20330321095668Af86Fa746A7F1852fB190", + "0x6Cec287a3bF06b0d142777B2514FA419910BBC26", + "0x937576F8D178c2ea422b71016800916a1770c439", + "0x60Eba06eD584D1F1bd6620905Da36332D85422e6", + "0x104Bc733788AF33E674a676a227d273806AD958d", + "0xa3e348136D9F8A14300380225756BA6eAF40265d", + "0x18B19e727016409d7f76B0414A84c216Acd99185", + "0x2174f2aB95368B668971f0Ec015F82392d3ceAc1", + "0x6AbAb058747283B3E95BD987AB83B95e689Be3eE", + "0xfBBb8aeB8865fd776485Fd45bc96665E239c908a", + "0x21a5484D889DdEBCb9d192b5B96A794CA4147c91", + "0x7e8D2d029199a86950c733CbbC6d8160Cd21486C", + "0x883D002b2147CE081894f74a846F81FF97b141c2", + "0x10149fDf20A92822a5cBAf21eF9a4484238769F2", + "0x3E4Ea4d16233A5D5236739a8fe632b6b5848DA9e", + "0x54788611767AF25f0De57411354F111B5D9C6DEf", + "0xec0965D89C9E237b9BF0c8f6ed1e09314f5097E0", + "0xa0E9d69249E6AF75779EaB029d1ea3BaA7F2b381", + "0x9200Ac9C17EF8Ad1Ea16fDc63B8460e1F10d8eF4", + "0x9B30315e701945eBB855326f53335F717E4921d2", + "0xE1F9d163C2Fc5761a2860ae590E748BBEfAf39dA", + "0x9f68852dD559484e6BE2d034CEBfBF5d62B54449", + "0xc68048525bfC1a49910e740424399E10eef6dff9", + "0x829C25Bb47f35C02150E2cBBD0C962E5b7B02687", + "0x7f0f5C79b64d0544549c8FfDA52576d00963B15E", + "0x5253ea466157a498d195E1aDB3e19a6F5a97dEfb", + "0xc53103820Bbbeb0BE0592022C3d4d806D07F8610", + "0x43b99CC4384b3F0B384e81D8db2C763fBD6fd314", + "0x127Da0f069bc55410E551bf574438E757Df695dc", + "0x3cfdD338061fEE8523c75e372fc7D88033141eC4", + "0xBc9cad78f31F213A7a91C6f7C589081983398733", + "0xeC6F0E53597fb2e6d4b1a2B48743D52B662CDa24", + "0xbF1fB5E256c7C8D262e866EF20beFc72eD9fA633", + "0x3d9f39Bb535650b04d4B5Eb23bbA8609C117a695", + "0x3FB82257BBBA5A56aE748f1e1BE8A06127D45069", + "0x67769663Ea046dD2F3747827755ADd1694eff9d5", + "0xe30d25c275dA2cb8a8911BFB7cE9e59E227F80E0", + "0xD2752EB1794C4a1b7891feF1e1376B9C9c2FB2DA", + "0x56AFfc8EB077182157e90106B7924e089E86adcD", + "0xeC649a0Fc3D6af24d21ae9059DA1FFF4c9e6E727", + "0x94118a1752cE651e8e4Ea21620C4da46D8f143d4", + "0xe0BA4Bd9211e840e3B7b8B46816f247484916fE2", + "0xa21dD344EA44306e32582EB372B1e91B196e62FB", + "0xEA751A395725E54251308AE2DC5741E5EB4Bb5D0", + "0x3e739671De3B0321BA219fAA7468E5d349331BDA", + "0x67c35B10BB74e035EE062bbCa570c42B11893c71", + "0xa8D2Bee3C6FBc33c77814C208A420A3A8862c09B", + "0x77B76f8a50b4Beb89210E1e6194299243F334B03", + "0xEd83EFF17258cbB2d2a22579D1B001A8e9ae2e83", + "0xd70755B67dE0DeDC0fa749D47fF59ff61bB46933", + "0xdFE426842d07957c9e661794822dB12adc20b856", + "0xeDb1A44fCBC18B0bc8998112b9a987E417bbb23b", + "0xc9e80a3b7D26FF46b8A2F22D4a09E94f42e33039", + "0x126905C4708E55759A63F97D4D47c9E94FcEcB24", + "0x203166db0B7bdDa7a04440c7A0C1E8a8eEd0f11f", + "0xF9cDc12e329247639AC20fC2a2B9CCcAB0d85A4e", + "0xD82d0Cd391b8A1DEa50B9b4E79F02AA66Ee4BeDE", + "0x43691B5a3099365a32644c4216d9EA65cCD41B51", + "0x61373471A5CFaA25C3C7c291d8dc9b45989a8886", + "0x26D27a565865133c8Be4b7B28A1633B4D61bA852", + "0x73f0a7723c193C365Ae413D419EfD6E8e618Bbfe", + "0xb2229CC7a41CC7e5c3564982Cd48B06afFB49a09", + "0x97Fe4cFAeeCA2d0Cb54d8c88bD2D951eEb0C8Da4", + "0x1Bfe85c94bE740C9A8bd4423CfC03EdaB01E17D1", + "0x450b1f5D7872797A5704b1DBdc4042e22E28A495", + "0x6f5362bCAd5F3028FFb9D4575ef17D3e02AaE84b", + "0xe31d2Dba9ec60D0aE5653E967775D7113F75f3bF", + "0x207EC95A4d29b0AEAc7806f3B9FDd39Ce14b5Ff9", + "0x7a1467bb7026baD391d191D49a8B22D0c1E1DDF5", + "0xe9831B5A49D0193002ef4289E8a500438D26EdcC", + "0x341292523DFC4c46300B578D8E7825a83F092a09", + "0x2CeC649c9B5373dA72eF384A8c8340eFfAdcEaE2", + "0x6300ad0C0f0658caFB4D54688aeC30566f71A631", + "0x1A15885096CFE677E2Cd36e64A5FD4f8Fe7e96E1", + "0x8aD0A5159812A3A091E52F0Ee1FDFB8808Be238A", + "0x39768e3055399f05838Fd119eda229655610428b", + "0x373070fAaC2C75eE58Fda6f951a68494219dCda2", + "0x10CA611E52EAeA024535344BD3e1d651b9FaC184", + "0x8B0717362e7ddAf29d38235EB512Fd25C7A1E068", + "0x32C761d3B89e1878753279A4852a919950d448B9", + "0xb76F8dB409F3fe3F0cAA8E4922eEa6896a1A6171", + "0x71cb11349C43b482F654E5F38DC0331B3dD991FB", + "0x0626BE90ed887BC23AF94b546b49CF49521fE0d8", + "0x6c825D8AC98B98f7Ce2d4122154ece3f14188975", + "0x4080D6A1c828456aC4a9AdC8B60df6F4DE942B25", + "0x02392c98D9460DbfD564C04cFC6621d349B90C79", + "0x17cD27740580eA4F5773d4aa50D9E93579b02Dd5", + "0x4F25b50fd0aC12169323c07B693ad9aad6771670", + "0x259a7B98b07e0A8e3d51062901827F50D1462485", + "0x315E0B4C53EDE4DD721C8aad67794678595693F7", + "0x86B9e162C777ea108e7df6461Dd2644cA3A5fe32", + "0xd9F87DeC7dE788BcFc808Cd1c309dB37D977ACCA", + "0x15800c351a38d56d012189f21231e170c48a9764", + "0x86f50144077A62e2b2dd8514B3F06a7bC416eaE6", + "0xA74C821C224A85559c5bba7B76147bBcffEE32f4", + "0x7172A3F5453f453a6D0fb77327ae9209CFC5B519", + "0xd924B1adb80bf30fA49e54EAF9631cFFbBF29fc5", + "0x553899EAf7627bD4DDe54939F5d7791cc0986a9e", + "0xA74e3842b68a71789c8861F418d4F7c61b5f4f61", + "0x4096a34E71045d7B46205dBcf537a4bABD1fbA4B", + "0x89133D25aA5a1d935C5143A3Fc129E7FBdDc9F2c", + "0x0c2AEd118c234aB8adA5a268600FCde97211E9E0", + "0x35B04ADBa055f93AfB55C4aDcb1733E027007dC0", + "0x0b9A63D20dC2F104494FdCd9EdBd7e40d572f349", + "0xE315E491676170e2bE9ebAb022892b500e88E01b", + "0x10aA9E9446ed31B75df5B7F301235A7C5087b711", + "0x4Ea0C774620de22650F15f8f62B333780381DfDD", + "0xDFB65caDda2101a7B6c0B90D296d6A9c1B724A14", + "0x940C9Ba3113fcF75B87Dd46eB03DD023fc600816", + "0x0385131a643d2Eb15765297E0b48207aadbb0A5A", + "0x9883D89F48f0B4A88039cac78eD2A3081A66c2DC", + "0x2f5e44871ccbe7F53e4a812dF76e6417A2b36665", + "0xBabEC3e43C72b85741DEe9F3b6e98af83DF62FEc", + "0x8f4ce599b7A6c647913D7Ef111295d3a4bC8c006", + "0x19F823835650524571B2Efd83971Dc827ab7364A", + "0xe524fB2ad520aF3eD9Dce6D8Ea6E81b6752beFb2", + "0xBB0e625446F7519677db2aa0B5fc9949940b3D3b", + "0xe45C42ED2fa8bC48317c75227a91D8B49198FeD3", + "0x6B889C90D0Bfb856857a83ed02214A02FEE7fA46", + "0x0Cdb6366D8aE177AA273a866865baF4e058cdeB9", + "0x70b07305d17ad51ac8A81eaeDbbc2dA5DB12Fa84", + "0x3579a2711862e561973CbF28bC492b167CEBb8CF", + "0xf44b9aBCc5100DC22B33ac719c632bd1EEC5274d", + "0xDD8ed6392AF61e76BF3f17132A071756fDd094eE", + "0x8d008Aa4FF29733Bf09032cfd45979cE63c71969", + "0x55EcC8387232729ace7b15cD4EB55aaBF392F154", + "0xF20Cd3f92B99B4Bdc21b3C2ED7608267d4089abf", + "0x2487568947Dd2d03292a7F2Bd59485AaC8F00Afc", + "0x2Cb16567F59560C8F818B2Aa5d4b3fE7ab72d6dD", + "0x8208EBc031aBA6e13E7277cea54b42b7Ff6269DE", + "0x5e0c0d6EB53E35BA899b81fdb950ccCB0afAADcc", + "0x530578de626D4F3FDD716affe2e9bEd31A3b54A1", + "0xd1144236E50D257Cc23dA09d514aE4F8eC5C3607", + "0x2561b21335aE1223c61676F73e62d139f1bC88ef", + "0x946669cCBf544D35D272A04289A9AA55E19c1520", + "0x01F62c0FdB59bD820AdB0B45Ddb239a7e7EfCD20", + "0xBBcAD6595590EFB8c4b091298619919A7a51Cf7F", + "0x2D5B68eCdb083E26441EB73C16B86e0E7680DA66", + "0xCa88601ca582F5FA7AfBA26ECc47383E6B1770C2", + "0xA99Bc656A29993C05E6bCafd19A5D4c697277E1B", + "0xEeC83505C7136b4AE8bA9819222f3755A2A8cEF7", + "0xC7d681D00CF8f0C31a8ca9636E1f7058E4a465A4", + "0x6837701b116C74072deE9D8a26B62707b72e3329", + "0xb7754aE3b8044eC15CFe3491201288f1295D40d1", + "0x449A4000d69e46326B938185FfA2a7438A0Ba44b", + "0x99DF7acF2d2A8249B7F2Be131e9911903E0Bfc38", + "0x52614De8e8e2cD217de8AFC63c464205CbDEfE48", + "0x8Ed73DC3Bccc840C43E283740331371e6faC5E88", + "0xB2d955761fB9d481a3A42F17546211447E364DB6", + "0x5bCf5D988A373Bbd591D292F689f5D43d3FDA377", + "0x796Eb8E202ff1c1Db58B1716474e5f7562B07Aac", + "0x551CfDC850427E10522881E3BAe34ee256aCB65e", + "0xf97bd1cE45BF292e1588d4F0f2F7174CC2c81690", + "0x8302a17FC82Ab4Bc7BFa9595372fc89439b413D4", + "0x78292feeac11A682483aDD73660868466b3DC66D", + "0x23C424D3492f809DC3BC473918B12D4F914E97D8", + "0xa028F33b854F58Be522A24E57C32b9226aBD4dd8", + "0xb546841A83d1e3c10E814B280419c33a9e5B7c09", + "0xCAFc0bbeec46292689D881e6dFD02656FeFDBC8a", + "0x2a3CAfeaa0d6ccAe2c99bA285B1c1D3Cf3e8e3e0", + "0xbA1cB80d6Fd52e3174B9DaA0f7752eBe4773500B", + "0x485EFB09b1cddf8750f1abB96c712305D5d7d22a", + "0x3F36BA3a1C951122c59fe8e2EEa9F25D8cd266a2", + "0x9F8230c74E0F8E3c82505eEC20dDB4bd37Fbe7e9", + "0x5Cdd4df7C06a570C2733b2621F65bccc030D22fb", + "0x094Da2a7aa92Db16979F8c740a000F017C78E586", + "0x4db4F7eB136b78a21F6a49FAB2a07AC5454358D2", + "0x534d07b6d997d56d526bB0568F5c0a0875fA7491", + "0xe72bEeDEBc22042B3c054C9d985EF70F3F21C07F", + "0x4B4AC2115c7be54858341A357438089C360D0391", + "0x42443f195F8b0E25150E48965cDa520fDEEf1EC6", + "0x52A6ED8Af9a7587CD7c8097e55Ab51EA167FD1d5", + "0xE75a233bc8d59873CD5a443A7A7a14a18f80de04", + "0xfBdfabdEE0b082f92944cBf7321D901010a05Ff6", + "0x727f490Bd0fD299B98e6118Dbe3762c60241145d", + "0xeCe1E1a00159e831786337a0369eddeb41b44ce3", + "0xC44454116b12424c3CEF37CB4Cd314Be393F4414", + "0xaa6e92d650CD1008423f9502413cD3EB382E80bF", + "0xaaC80725AF8d74B5dCD0462B54bE6959faa49106", + "0x52eca7b8a6681d3541D44677CB7bf6436efaB104", + "0x43309fFccF1ecB86273f363c04b43Da25f2B9211", + "0xf18913fA8a97f703895aFe8102c06EC48a32E543", + "0xd8dC5856143d20A1C4534EAc565805BB23f88e71", + "0x666110FEF0cCee100CD154931aa1349312cb6C86", + "0x19AC1DA1172696c10bE21a3FE8E2f917913Fa2CE", + "0xccB4A945974316E21e333D1d2e81740831caD5Fc", + "0x8594c9e8Fdfe9Fa9D725cC4894E28484675C0894", + "0xa7793ea1aD45Be33EFA1Ea3C7d4ddD6746bc2176", + "0xd60055f132862dcF3Ed08880D8E11c1650BFb5c8", + "0x8C6d98751B4f6a6727F9dFd9670B3978A5762ac5", + "0x29e15bDAE0C0375A4412A83E9f95F7DfD0643Bc5", + "0x2B4a0737e3664A38597118D140E95D56cA022d97", + "0x5707742Df139ec717348E2eBa519891a6F523DD3", + "0x4A7D10BaF5207e866D4667314227123CEF785A01", + "0x48D681d5B9ED09DE4ee2453F26f6973D70611763", + "0xbce9282fe66b7Fc1B7823B884d97492D37530a36", + "0x55b7c199Bac27abbC5ec20B3c3f84d64878e3759", + "0xc98B1FeB7C339f29ca26182e820C9b09A588eAEe", + "0x0B28F99AB08151a751a6B2d5784e68F0796e36e0", + "0x3c50858ba3b778b6dbbe0b034f7ab23dcda37468", + "0xD6B7c1135D62f6EDF2F1d1Af003f3e6baD7deB00", + "0x66AF592fB516b1d8d337B2295B1D6Bade22cb681", + "0x84b106BE2A1b2781d3D560e8304c4197B6F2B40F", + "0xd6F57998B71A8FfE4cb085Ff015f40f75aD5a79E", + "0xE72B57B0c7567a5bE542F6B5ffF1BcB591D7B251", + "0x336dd54Acef3E913D5B59cb2e6fa139e528E8c58", + "0xaF01fC708f1d9bfc07DBcC74590afD005F551AF9", + "0x95c1A7Bc770E33dC1A9AB093a5Ca618Ff96852Fb", + "0x351e0322A75D96F2072c54E22f6013ED76F55FbC", + "0x5c695cf06CC40f0e4692ad4D0b096eF7C4b7ff00", + "0x50ADF00864c443a95253AD3C9ba90E6c0232881B", + "0xE2de4D4d19f6712f0d2836b477c311B627C96565", + "0x1C4C0040c99c0CAe55a66B028ae6644585d10094", + "0x29d237174Fe36eC20c3894251335ca2254b4C4C7", + "0x9cc639E3935b7650439212EC88946580292b5D09", + "0x6b654b20C5fb665d51DEDae98E421EBb0C0348b3", + "0x88249D5728492FFaD4Fb12B0539C9B88A05C3b41", + "0xcE677B9121Ed80429855376F4187bcc24D69dBe7", + "0x922615E9CD49bEf0dcdcdA5a3D650A300fae7d2a", + "0x22cA92B6Ce964c6E64A21Dc15198253231251dA0", + "0x522564885EB8d2b7bDc55Ee289563e1d5b09e8A9", + "0xAc2eAfdBDA2ca4d264A276Ca715081FB7c5fE2AA", + "0x31C5420cB9de6F5A317Efe7c10ab1bC440536dfc", + "0x0e1C794Fb817a20246439C093EBB41321729058a", + "0x8f8854b7782E190912adb538DCecd88fCC8e0909", + "0x01d17C8038cb21A43AFE1da372119A4e18717aFF", + "0x7A1885eC42597B1783dD5754c7a42AE60a5202E1", + "0x6a8673dAF590871198fe073B09D8a3fEAc73Bd3e", + "0x3bdF1D7723bCb1B544b137d3b0C8c38336e06621", + "0x3815a4883b1050D274AFeAf73FAfa41c47941C38", + "0x44a5B6be893cf8071A83aF8c8d81587C09422867", + "0x42A34bDCF4edf2B73Af56803e10654c65aDa3DCe", + "0x47A38879E95B271f8E6DA29006e619aE11eD5A1D", + "0xb1A7c9EcA5079D8Fa7073FB4B0A1150FA67dbf63", + "0x2B6e966230dfD7312979BB754f379c172dc39994", + "0x8bc41d77d5CbD1c7d8F7833Ba08dB5e559D53098", + "0x4ed0c0D87Ed8d52Bda0FfC5eEc393486eF09E8E6", + "0x2DCC96c2ff52E8BA8728C171A581EcE8665Cd34A", + "0x95a272b0672d85330baB132272A36D381F80Af98", + "0x93a2B600aD0dFE4Ba5b464DE30D164D1827F71c7", + "0x61f97F988FAB7c18c61c42d12e2D77612D5eb852", + "0x95dB548c3b9Ec3b310c4667BB6B4c490A5445A0e", + "0x48873b66d6Ec8ed753E1eFc733dA141c87772E5D", + "0x75F38c244dcf0C9214a1a75a423b10e896E1b2eB", + "0x92F9800229eb401106bbF273ECfE7F324620C5E8", + "0x3f24344DDc1C4b0A1D0D6d25260d50E6cF43c975", + "0x92eD2703e4EBC9363b894c645359bCCA5C1950A6", + "0xfa40006daBf692ccC12a5374352509D479f8dFA1", + "0xF1933ABb109bE140c03116aE2774Cf34c3A0eb39", + "0xC31E5c0a413Db0359765F3F88ef1052f802d9ed2", + "0x045A61547d592ea8e394607e601ec81167dDB2bd", + "0x3EF9c9e59dE3F53392dD75e1d0604b3cF85620D4", + "0xa5d08837b1160E83563de264551AFc0273C34B75", + "0x33177e16213d23CbB30e18C0011F5536943AbC83", + "0x75D1Bd5c18c7c4C9362Cd1A845C8c543E27c9f69", + "0x15B83d1A952ce0aCd31C57CA27a288217893991D", + "0x3c6870b4990c8dA73eF18eF25ce34432Cf127554", + "0x9b6F180AaDdF31fe0167aE931c9988548349Fb0D", + "0x39d61795F74377A2Bb69eeF09832c08263C25cc9", + "0x6D26C46086838602E398b0b660871FB961542433", + "0xA350c82529dFdc4Bd8C40086e5aBFd2C00f405a8", + "0xBFb23Ed072c442442f0f049Aa030885483517d36", + "0xD68Bf8eCbA2bc0002F0A8C6cDBE19283b7064C3A", + "0x234eadBA601E874fcED396758875f146992Cf72B", + "0x04aD31904B7cc9d84e6d924972146ABbeB22909b", + "0x420A8E998BC2cc0df14ec8DCf4076aE560B3Ed68", + "0xbCB81BFe71478d182eE612CF71Cb8b68DEC5E84A", + "0xB08a10588E5A8e89f0FaEBfFd18f0AC9eb984022", + "0x2a8d600aa656102Df55017fBA42e404a365bEb4b", + "0xBb381e6d0F3ed77bD47ecB7e9f5C21b800B3a9C6", + "0xbB398185E4b1587F666db8913Aa039fe1663Fd23", + "0xbD76310784908874E0F1f7DfcF2A8fB02594bE6F", + "0x7A729a3B63b9360C4939f8232235801b506c7240", + "0xbCAe8d211969279Eb1e07930e7da4670fe0c10e7", + "0x82D666B8113b7f4dBA99A7982518D6f4d50e771f", + "0xf34E317438C1F6fe863128bD43AB416203c7Cc0F", + "0xF447B93c108d50dc7D52593cB753702A283319aE", + "0xEf52fA3F031235289bd3088ef37c0c9471F99338", + "0x6c9a53d7BdA34815A80cCB6d239142354F39c232", + "0xCe4c5530A150FdB155F02cE42c8791234Bd93688", + "0x3a1FC65e730e3f00a43c58d3770D8a9a38aFEAa5", + "0x4Bc563ead4469C453d526ad603E5223e5B3EDfE4", + "0x24E68643e173BE75C9847ACE5B1aB02Ff2d347B3", + "0x6b6F8CfdF536C71Cc0820387259f181026E964ad", + "0x117325Ad73BFb95e6653baAc3114EF2Ec2f142C4", + "0xAF68D39a0AE64b88AE39A7531A54131946db380E", + "0xFA1054Bb918727B36008CCA64978CD83db230ae0", + "0xc094897bcf7aF2943f439E20ED3A7DcBd7b1C843", + "0xCF3Dfe76608bC47038bB47813081689Fc9a18299", + "0x739b2ea6824Ad2d5D1aF230E9fbc13FBb2E4746a", + "0x1DDE0476FA03c89CD4797169db7034231375F164", + "0xD67C2c733D9cAe58353c49A33Af6DDC206fCee9c", + "0x30B133b801cC60D0676b4c22E961E1718DE15ac9", + "0xf4F4fFCDDAe6B7a1B5B2e0d8eA0Dfd27F013D830", + "0xAF1986Efa7080f4546c2750f08f8Eb0BC714cdb8", + "0xE7D0a4950f44D845846Dd0BA499401ef9E6C310d", + "0x75831D954222abC150359D7A6ee495895Daa26f7", + "0xA321473aE338dd6B83BD20BAeB4D31fBBf1ff34C", + "0x95373F5C8A4FdFf72Cc9E9E0c0eB3b77eF10Ebec", + "0x5086D9849CdB2529a8E1cdB5AfC467aC5018A97d", + "0x89d5410F417858576197d6659D6680b532de7cAD", + "0x1473807Bb1F4328AD27b99d7846C9Df0bB7D46A0", + "0xA2186e410F61Bf1B5f84DD0b11AF281E55825264", + "0xAAfE784942216c8cA73cb0305d6d756B64c56bE2", + "0x4272955b14A1982dc90bec2fa9026941B318809f", + "0xACE58eF4c8350a20Db8cf2f7A452057f809F942F", + "0xe476e01732779Cd1c14b6E084Eb6D7abd10E4815", + "0x8D3c7311497489eBAcF0822f185779A5C7056F8b", + "0xD76f809CDEE95E8961E185003384315191E4F391", + "0x18ef2B849789a2BC790230A8280a6C899C791397", + "0xBac80a35E86fB2c31FfaFC12dF70cfc032D2fA5E", + "0x991C2C63ABfaA999B1Cb5Cb4B05237BCfcD3E1d8", + "0xcf256e5e665ae67ecd921da7b8c983427036c769", + "0xab3c0ab53ccc8d19a93fb331579ad98101f2bd14", + "0xafdb6f52bfacf17c676873115f50f2d3ebaef771", + "0x2Bf3b14711bDc8739e65D188d48E004645C9ed41", + "0x9E58c1F325f8D1Ba6a43E808588d67Ae6b4b6d34", + "0xe08B10E92D22339785038a494E39e98A62104A91", + "0x5B51dFF90Fe87E22A9170ddB74A979bEcEd880dB", + "0xD2B0009B3a222dF065d9DE766f2b2E01bC2a9825", + "0x6D04758840C946f0BFDB98599AdA4F0f68dE2247", + "0xf8b25F0D1Cfa1cbC3dD13c8a871643D14B81e7A4", + "0x5a06B00442E8bb2F1D7E8A191a27e0455369e9ca", + "0xF2D657a80C0246D81dF0ee02Aa3799b1cCc3F251", + "0x20Ed528e8fdbDCa16423f89dDcc848FfDbF2C14d", + "0xb157A23429fB6CaF15BE8aFA001c409C21A121c2", + "0x5bd1bcA04AE6F64842C4B8bd04fb464Fb7925195", + "0xAAE38D7D9987415Ee7502d2579092c559f1E767E", + "0x6518DCa3565fb7f6328284A6fb167968BA38BAE2", + "0x55A53C8491A3CCFB8084CB4Ea48884478c57346c", + "0xcc359d3C834760E587B579607fA3351dc4253e60", + "0xEe237BC2973963d5ADC121c542E2e508A049c18D", + "0xd835e8182372416E87bD904544501F485D6687cE", + "0xa7739978e6c7DA30D858e636ad2aCea4e912f482", + "0xd226F4F0a217A73035746E657b292c88EeE7daF3", + "0xc6595CEcD11f91517c7774357A0a824472b850D5", + "0x39475a68B88415B17324d06676B550A83BF2C70b", + "0x4636E1B72076732b16ea99DE639692Ea05a34893", + "0x3ED98536D5971D4EAC1881ffc8AbDDa2E2bc2ab4", + "0xA3Af04BaA3e418c4cE64DB8bC2d6FBCb1265f824", + "0x34dC8f8136E62B9323FB434D11CE26bAeFaaD3C3", + "0xAef0652343C154662F17D8b7AA86d2b2DE01D012", + "0x62b16eBF03C5aA31aF040a4C31D2d6b67107d92e", + "0x561078c9521519a71B512FBECa07F6C06AfE2e9b", + "0xc17f3e0cc8f8c270F9665d287fceAEeb228062F7", + "0x40FcDfB0d8f1c3B70745e5d6f62611783B22Ae0F", + "0x3aDb0D0F7569D7934ebB21088031D7663427EbC0", + "0x88e2641212047313d5AE5c01E4EaB4A2eAfBbC28", + "0x08B3361d3f0d51BB7D02894b3496ed771ca811e6", + "0xd1bE0B3c6F71adcF173bF3bD38AD260569B1Ed37", + "0x039C681B4CD27243e79C447BAEa6103f4c7A18e2", + "0x3eFfEc22EF5705a0Db035FE98E55df8b0D1F5076", + "0x6086765f5eaB32E5673629d8A33D5d28671182D4", + "0x8054A73E9e641E465d92CAA16B5Fd4a214C46Be3", + "0x46EebF35206BD1D0e11e89c5AB10b5Fd9DC759B6", + "0x1F72FbbB85591Edf28C73bE614f2F83381bbB95b", + "0x3DE1633fBc6A7B7CDe144f2A805A1c68ae5048f4", + "0xcec7b076BA94378d03e13D5898F9EF0f41394BEE", + "0xdA65AEDCE13c13a98dF8b872Af3596Bd22bC26E3", + "0xb7145dE7F5537D07D7Cc3410691D105566A5E434", + "0x18C5C07a9F68c82de678470a9E9306Ffc3e9Ced6", + "0x26f47811f74f67e0Dc00494406685d07A3255C96", + "0x8582267c3a2bb11fCcF1eBB1c9Af128e94B024E0", + "0x48eF177C15d091A038176cD262638bE999E138D6", + "0x40F7E873Ebefa5BB762341a8DD63f06d9A332D56", + "0x0d5Ecb27D1574E3B574d6D8c93C628d17348c99B", + "0x52692fF7230Bb3a11B77B09a63682F6Ef4d43B1c", + "0x177Bd708eB4880d2f0e0E319F48BF1308CFe6494", + "0x55BcAe2D9797184b30D0480A1F6aC3763AEdd9a5", + "0xFDc10560bd833B763352C481f5785Dd69C803429", + "0xC7abe55e5532ddA1943bbe5A94bD837dcd96e233", + "0xCce2E2ea6169449715D1B3E74c776335Cece21d6", + "0x7216e8395C37aE8A17665Aaeb8563ef81d6041A8", + "0x662bDd5cb8Aefc78361C653117Fd9a0f896e0246", + "0xfd5E8252d377f20dc53ABDc12B7A21704CC8A566", + "0xf17C4842D9b52C733a127591296B26FaA8F0d30b", + "0xCC0C4D49E2b104a24b6b6c35660fE8e5AEe1bA47", + "0x3a5138Cd818913169E6a5506a39ff1B0A18cA880", + "0x99e76A57337192B70BeC637e75fdd60251AC7Fb9", + "0x613dcbc575034eB8dbBF3FD5AF90697C241F4C73", + "0xEddA6eEd092736B15610767C6d3D7a1D2FCCb5EF", + "0xE7d661aCa8752Ac8A3C7dA51e4D8C468FeA0a76e", + "0xDe0A2585f0b2Fe4DE98C56DAF53389dDe8C315d2", + "0x9E6f53c29870C436F4eDC200714713549ADA274f", + "0x7BE6c15780390aa8335b356693d82411Fc26B6d9", + "0x45A3cac1d1620B28b8bED91d1bc0Eaf0323916A1", + "0x184bcF123cFF6af3F5Bb39BEE3E2a882c1497d6a", + "0x5cB9f1A5A184f56DE000B5Cf7492F1839451a742", + "0x1B589B49A02960973C8A1C2F5ab6e56023a6bbca", + "0x8F73C2eB80a0A6E83C6d74161f4872d5B9076A1C", + "0xaA4d006b4062650Ab4824f5E44187F10dbc6F100", + "0xc10c76ab2fcc743b783378ad5c192ade0ad70912", + "0x5fe9F73b79106f78552d3D846776300b9aDDd535" + ], + "kava": [ + "0xE9dfDD6Db5577504630aF0d59F6DA0fE58A7A543", + "0xA58580B3Ee8997A6F351b558Ba66785AFC9cF4aD", + "0xA066F4f1B3326a24EE88e0703b480E47fA28617c", + "0xD468F11f00133f843152eFE796094cF7da3C0CeF", + "0x144779e1D5d2177084e8DC58C703C7683a41c8Ad", + "0xC1D17E608236b7338c91ef6909Ed5631823d0631", + "0x83A369A0D21cCcC9594B35eA2EDb578737e2125E", + "0xfB8eDeD3e963C1Ba0e5215DB124848400C7a69dA" + ], + "arbitrum": [ + "0xC536FEDe5427cbF80A891eCABA1F4A67104c6bBf", + "0xAA23927C9ae3061517a6AD63d2F97E40d0357638", + "0x6b66F96cA6f9b27B87682c3FA6D628d509a550D9", + "0x4e3569d91F08402a6215cfA80E2CaA646d704242", + "0xCdE69123119036D088Ef45c6A28C4cECa697f52F", + "0xCfFfE2214D71835b23b8EFCB53253C56F2E4F86C", + "0xacC52DB471106b0cb4681958B9c40A2067C9F4b1", + "0x2228E92aF2bE0adeb69Fa5DF677E442BEf9a1343", + "0x77922ECD7618a4cEE460d2e45836827f1A35dee7", + "0xD6Ce8A5021C7731119Bb7ac714408ba38eFE450A", + "0xcc4373Ff112Bc16e56Fc57C4c75b90EaD04A16a9", + "0xC37b270a403057F3Fac0BEe873D72F8AdE086a3b", + "0x155fFdab92888d2600c1ff4cEBe9dB88f546890f", + "0xD71aA46F14e8CD63a18E3BBe778752D2a5E0cDD2", + "0xF3466b8dB66A3Fc6bb7cA22E3029E3f3F9f247AB", + "0xfe71D131b449e854bA6b3173ada393D41e58275f", + "0xf07355A90b03bfbf262CfBdB5DcABA6B6D77B23f", + "0x93f4f49411284636215C4CCf9120EC9C573a4235", + "0x7692a071Ab5267656333635e97E65b6F2734421E", + "0x1D8308b7cD5eD3762E0871EC2ef6b5b7d5DcDc47", + "0xc93E5392e1F2de59c822FB105AB10d75A547C895", + "0x488F3e4582cAaf0417b1051174861235726fbAb4", + "0x13AaeDC6d4Fb37Ebb71EC5612BfCC64Ff352E948", + "0x4dfC3Cc8275e71ecB9C060e0358044910Ecd572A", + "0x114Bc9fb8c6A0a92348C0Fb59a0ec3984a469b39", + "0x43AbE4df66235Cd8F11F8ef7931ca5330EC32c80", + "0xdD35cd7Bf20e22bbf6DF92221618202259e88661", + "0x15dF484c8caE85c895AcDD9198c3c01FEcd18938", + "0x622502B553AEaCC6D82d39f6AbedAb877B502ed9", + "0x6375B4C1eF33FE9A2dD4EFf936812f93c330134e", + "0x0bcACf155ceB5F5a3A8a61049934E3D79E65c13B", + "0x7c98B83925ea2574E688808Bc1cfB1F82F3Af559", + "0x0289dfF687B38b04eaE6887D1CB68a9F08B3e4f5", + "0xF4771304A5C01E5267b4E8Bc964042485ACaE5D8", + "0x48C0069565e2265b2D5586F762577DE38dc7778D", + "0x9E89e79DF8fEb31EB0d529586201A5541978CbE5", + "0x5E173F6Bf035cFf25029dee6003e8CC18Ac65D7e" + ], + "avax": [ + "0xdFE426842d07957c9e661794822dB12adc20b856", + "0x9aBE7c2062780e7ff8cd9E48bddc54c44107bB62", + "0x852e297f5fD64bB97da1Ce0eDfFB807dDe6f3296", + "0xF9cDc12e329247639AC20fC2a2B9CCcAB0d85A4e", + "0x6D254E5a833A62119631A75A52bEE7c9fb131199", + "0x9495651be0CAE17125091E86DdEf35C4D46085E7", + "0xe7EAbBF65BE5ecFf390124e0FABf15048C4442F5", + "0xFB65Af3cF542E356C16065467937BF90BB7B54BB", + "0xBA3D12D3a11ec109504518c7C284f39fD1626B6D", + "0x87EFdAe3fE46a861ec96fD5ffB5e4C5DDc8f9e79", + "0xf7afb8BBB576E883a6f8fA178b01d9D1E6233635", + "0xF57b11637EeE8e199A1CeE403F0A9efe0B9c968f", + "0x992804e457CBa7EC1f08c8EEE2536eE4a5c38304", + "0xc9dbE91fa4306208dFa092eCc6C1952AfF964bb3", + "0x507f9CB0A7269602588c184BcEB2e0Fdb1bA62Ce", + "0xc33e491BF463F410eF530DB307c384CE4Fa5B52B", + "0xc03edF8e71170985b0E7217C530BBEab83396F32", + "0xD468F11f00133f843152eFE796094cF7da3C0CeF", + "0xEA1A8b0D746b7ab2479655fB49ddFe9381b6d96C", + "0xCD2d3dF9b116E4f8A40271aD3838cDc581B20405", + "0xBa5702F3B09F9DD43b6915D67F5f98AfA2c4ef14", + "0xa638BC40082C2233a9285580d9176E7c0784e7A8", + "0x91bABb9e0CBdc9E7b6B04c03B8DC15E1Da92E143", + "0x7848B2163f0BE2Fc7c855021a8f0A59b2697934A", + "0x7B13baABa686990746153B08D420002Aa6eA2d75", + "0x81e9C6F53aD8576Ba9D73DEad9D48be91151d3da", + "0x8c0e385725070491F42f2b453559C478d9825763" + ] +} \ No newline at end of file diff --git a/projects/grim/index.js b/projects/grim/index.js index f432d3722d..637772c25f 100644 --- a/projects/grim/index.js +++ b/projects/grim/index.js @@ -1,116 +1,14 @@ -const utils = require('../helper/utils'); -const {toUSDTBalances} = require('../helper/balances') +const { sumTokens2 } = require('../helper/unwrapLPs') +const config = require('./config.json') -async function fantom() { - const response = await utils.fetchURL('https://api.grim.finance/tvl'); - - let tvl = 0; - for (const chainId in response.data) { - const chain = response.data[chainId]; - - for (const vault in chain) { - tvl += chain[vault]; - } - } - if(tvl === 0){ - throw new Error("TVL for grim finance cannot be 0") - } - - return toUSDTBalances(tvl); -} - -async function polygon() { - const response = await utils.fetchURL('https://api.grim.finance/tvl'); - - let tvl = 0; - - const chain = response.data[137]; - - for (const vault in chain) { - tvl += chain[vault]; - } - - if(tvl === 0){ - throw new Error("TVL for grim finance cannot be 0") - } - - return toUSDTBalances(tvl); -} - -async function kava() { - const response = await utils.fetchURL('https://api.grim.finance/tvl'); - - let tvl = 0; - - const chain = response.data[2222]; - - for (const vault in chain) { - tvl += chain[vault]; +Object.keys(config).forEach(chain => { + const pools = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const tokens = await api.multiCall({ abi: 'address:want', calls: pools}) + const bals = await api.multiCall({ abi: 'uint256:balance', calls: pools}) + api.addTokens(tokens, bals) + return sumTokens2({ api, resolveLP: true, }) } - - if(tvl === 0){ - throw new Error("TVL for grim finance cannot be 0") } - - return toUSDTBalances(tvl); -} - -async function arbitrum() { - const response = await utils.fetchURL('https://api.grim.finance/tvl'); - - let tvl = 0; - - const chain = response.data[42161]; - - for (const vault in chain) { - tvl += chain[vault]; - } - - if(tvl === 0){ - throw new Error("TVL for grim finance cannot be 0") - } - - return toUSDTBalances(tvl); -} - -async function avax() { - const response = await utils.fetchURL('https://api.grim.finance/tvl'); - - let tvl = 0; - - const chain = response.data[43114]; - - for (const vault in chain) { - tvl += chain[vault]; - } - - if(tvl === 0){ - throw new Error("TVL for grim finance cannot be 0") - } - - return toUSDTBalances(tvl); -} - -module.exports = { - misrepresentedTokens: true, - hallmarks: [ - [1639785600, "Reentrancy attack"] -], - timetravel: false, - methodology: 'TVL data is pulled from the Grim Finance API "https://api.grim.finance/tvl".', - fantom: { - tvl: fantom - }, - polygon: { - tvl: polygon - }, - kava: { - tvl: kava - }, - arbitrum: { - tvl: arbitrum - }, - avax: { - tvl: avax - }, -} +}) \ No newline at end of file diff --git a/projects/helper/utils.js b/projects/helper/utils.js index 2e74ecae44..cc95d92fa2 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -64,7 +64,7 @@ function isLP(symbol, token, chain) { if (chain === 'dogechain' && ['DST-V2'].includes(symbol)) return true if (chain === 'harmony' && ['HLP'].includes(symbol)) return true if (chain === 'klaytn' && ['NLP'].includes(symbol)) return true - if (chain === 'fantom' && ['HLP'].includes(symbol)) return true + if (chain === 'fantom' && ['HLP', 'WLP'].includes(symbol)) return true if (chain === 'era' && /(cSLP|sSLP)$/.test(symbol)) return true // for syncswap if (chain === 'songbird' && ['FLRX', 'OLP'].includes(symbol)) return true if (chain === 'arbitrum' && ['DXS', 'ZLP',].includes(symbol)) return true From 6669d79fd6ecdff3fa3a8e2a9847e40b76f32821 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 14:54:00 +0200 Subject: [PATCH 1060/1354] fix brewlabs --- projects/brewlabs/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/brewlabs/index.js b/projects/brewlabs/index.js index 1c268b1962..325d1c28ce 100644 --- a/projects/brewlabs/index.js +++ b/projects/brewlabs/index.js @@ -62,8 +62,8 @@ async function staking(_, _b, _cb, { api, }) { const poolInfoAbi = "function poolInfo(uint256) view returns (address lpToken, uint256, uint256, uint256, uint256, uint256, uint16, uint16)" async function pool2(_, _b, _cb, { api, }) { - const pools = await getStakingPools(api.chain, 'pool2') - const infos = await api.multiCall({ abi: poolInfoAbi , calls: pools.map(i => ({ target: i.contractAddress, params: [0]}))}) - const tokensAndOwners = pools.map((v, i) => ([infos[i].lpToken, v.contractAddress])) + const pools = (await getStakingPools(api.chain, 'pool2')).filter(i => i.contractAddress !== '0xb4d96033a260f0a0ea9c927aa1583668118c8145') + const infos = await api.multiCall({ abi: poolInfoAbi , calls: pools.map(i => ({ target: i.contractAddress, params: [0]})), permitFailure: false, }) + const tokensAndOwners = pools.map((v, i) => ([infos[i].lpToken, v.contractAddress])).filter(i => i[0]) return sumUnknownTokens({ api, tokensAndOwners, blacklist}) } From acfa76e510e161ba195fe8a85b41d1632f9fecc3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 15:09:13 +0200 Subject: [PATCH 1061/1354] refactor halo fi --- projects/good-ghosting/index.js | 84 ++++++--------------------------- 1 file changed, 15 insertions(+), 69 deletions(-) diff --git a/projects/good-ghosting/index.js b/projects/good-ghosting/index.js index 0e333c145d..af6ef60cf2 100644 --- a/projects/good-ghosting/index.js +++ b/projects/good-ghosting/index.js @@ -1,5 +1,4 @@ -const sdk = require("@defillama/sdk"); -const { getChainTransform } = require("../helper/portedTokens"); +const { sumTokens2 } = require('../helper/unwrapLPs') const { getConfig } = require("../helper/cache"); const apiUrl = "https://goodghosting-api.com/v1/games"; @@ -26,78 +25,25 @@ const isV2Game = (contractVersion) => { return true; } return false; -}; - -function tvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - const gameData = await getConfig("good-ghosting", apiUrl); - - const balances = {}; - const transform = await getChainTransform(chain); +} - const calls = Object.values(gameData) - .filter((game) => game.networkId == chainIdMap[chain]) +async function tvl(_, _b, _cb, { api, }) { + const gameData = await getConfig("good-ghosting", apiUrl) + const ownerTokens = [] + Object.values(gameData) + .filter((game) => game.networkId == chainIdMap[api.chain]) .map((game) => { - const gameParams = [ - { - target: game.depositTokenAddress, - params: [game.id], - }, - { - target: game.liquidityTokenAddress, - params: [game.id], - }, - ]; - - if (isV2Game(game.contractVersion)) { - gameParams.push({ - target: game.depositTokenAddress, - params: [game.strategyController.toLowerCase()], - }); + const tokens = [game.depositTokenAddress, game.liquidityTokenAddress].filter(i => i) + ownerTokens.push([tokens, game.id]) - gameParams.push({ - target: game.liquidityTokenAddress, - params: [game.strategyController.toLowerCase()], - }); - } - return gameParams; + if (isV2Game(game.contractVersion)) + ownerTokens.push([tokens, game.strategyController]) }) - .flat(); - - const gameContractBalances = await sdk.api.abi.multiCall({ - calls: calls.filter(i => i.target), - abi: "erc20:balanceOf", - chain, - permitFailure: true, - }); - - sdk.util.sumMultiBalanceOf( - balances, - gameContractBalances, - false, - transform - ); - - //fix decimal issue with celo tokens - for (const representation of ["celo-dollar", "celo", "celo-euro"]) { - if (balances[representation] !== undefined) { - balances[representation] = Number(balances[representation]) / 1e18; - } - } - - return balances; - }; + return sumTokens2({ api, ownerTokens}) } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: - "counts the amount of interest bearing tokens owned by the smart game contract", - polygon: { - tvl: tvl("polygon"), - }, - celo: { - tvl: tvl("celo"), - }, + methodology: "counts the amount of interest bearing tokens owned by the smart game contract", + polygon: { tvl }, + celo: { tvl }, }; From 44100c67a7ba70255693637df85afae0ed0f0cd8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jul 2023 16:42:57 +0200 Subject: [PATCH 1062/1354] fix stakedao --- projects/stakedao/index.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/projects/stakedao/index.js b/projects/stakedao/index.js index 5b7678bcd6..14d9bee993 100644 --- a/projects/stakedao/index.js +++ b/projects/stakedao/index.js @@ -163,14 +163,21 @@ async function tvl(timestamp, block, _, { api }) { // To deal with special vePendle case const vePendle = "0x4f30A9D41B80ecC5B94306AB4364951AE3170210" + const veMAV = "0x4949Ac21d5b2A0cCd303C20425eeb29DCcba66D8".toLowerCase() const calls = [] const callsPendle = [] + const callsMAV = [] for (let i = 0; i < lockersInfos.length; ++i) { if (lockersInfos[i].veToken == vePendle) { callsPendle.push({ target: lockersInfos[i].veToken, params: lockersInfos[i].contract }) + } else if (lockersInfos[i].veToken.toLowerCase() == veMAV) { + callsMAV.push({ + veToken: lockersInfos[i].veToken, + contract: lockersInfos[i].contract + }) } else { calls.push({ target: lockersInfos[i].veToken, @@ -181,13 +188,27 @@ async function tvl(timestamp, block, _, { api }) { let lockerBals = await api.multiCall({ abi: abi.locked, calls }) let lockerPendleBal = await api.multiCall({ abi: "function positionData(address arg0) view returns (uint128 amount, uint128 end)", calls: callsPendle }) + let lockerMAVBal = [] + + for (const { contract, veToken } of callsMAV) { + const count = await api.call({ abi: 'function lockupCount(address) view returns (uint256)', target: veToken, params: contract }) + let balance = 0 + for (let i = 0; i < count; i++) { + const lockup = await api.call({ abi: 'function lockups(address,uint256) view returns (uint256 amount, uint256 end, uint256 points)', target: veToken, params: [contract, i] }) + balance += +lockup.amount + } + lockerMAVBal.push({ amount: balance, end: 0 }) + } + + console.log(lockerBals, lockerPendleBal, lockerMAVBal) for (let i = 0; i < lockersInfos.length; ++i) { let amount; if (lockersInfos[i].veToken == vePendle) { amount = lockerPendleBal.shift().amount - console.log("pendle") - } else { + } else if (lockersInfos[i].veToken.toLowerCase() == veMAV) { + amount = lockerMAVBal.shift().amount + } else { amount = lockerBals.shift().amount } sdk.util.sumSingleBalance(balances, lockersInfos[i].token, amount) From eb9e45604d6c7c5c874da1af54a8643db8a71318 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 8 Jul 2023 02:44:58 +0100 Subject: [PATCH 1063/1354] add hallmark --- projects/nowswap/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/nowswap/index.js b/projects/nowswap/index.js index 4abd3c9b93..19957883cf 100644 --- a/projects/nowswap/index.js +++ b/projects/nowswap/index.js @@ -2,6 +2,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { + hallmarks: [ + [1631664000, "Hacked"] + ], ethereum: { tvl: getUniTVL({ factory: '0xa556E2d77060A42516C9A8002E9156d8d3c832CE', From debc20c5cbdcab2fe35898538c551fe1db1cde6a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 8 Jul 2023 08:08:00 +0100 Subject: [PATCH 1064/1354] add hallmarks --- projects/asgardfinance/index.js | 3 +++ projects/cryptoyieldfocus/index.js | 3 +++ projects/kuufinance/index.js | 3 +++ 3 files changed, 9 insertions(+) diff --git a/projects/asgardfinance/index.js b/projects/asgardfinance/index.js index d33dbb92f1..4aa1535a86 100644 --- a/projects/asgardfinance/index.js +++ b/projects/asgardfinance/index.js @@ -56,6 +56,9 @@ async function ethTvl(timestamp, block) { } module.exports = { + hallmarks: [ + [1643155200, "Token mint exploit"] + ], ethereum: { staking, tvl: ethTvl, diff --git a/projects/cryptoyieldfocus/index.js b/projects/cryptoyieldfocus/index.js index 3c35b110be..d41be93634 100644 --- a/projects/cryptoyieldfocus/index.js +++ b/projects/cryptoyieldfocus/index.js @@ -23,6 +23,9 @@ const avaxTvl = async (timestamp, ethBlock, chainBlocks) => { }; module.exports = { + hallmarks: [ + [1631318400, "Rug Pull"] + ], avax:{ tvl: avaxTvl, }, diff --git a/projects/kuufinance/index.js b/projects/kuufinance/index.js index b14a38422b..6461825496 100644 --- a/projects/kuufinance/index.js +++ b/projects/kuufinance/index.js @@ -6,6 +6,9 @@ const JITU_CONTRACT_ADDRESS = "0x037BB12721A8876386411dAE5E31ff0c5bA991A8"; module.exports = { deadFrom: 1648765747, + hallmarks: [ + [1633737600, "pausing liquidations program indefinitely"] + ], avax:{ tvl: sumTokensExport({ owner: JITU_CONTRACT_ADDRESS, From 1e8a66d36dcfda535cda1f028b705bfb2ccd4d6c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 8 Jul 2023 10:41:09 +0200 Subject: [PATCH 1065/1354] fix broken adapters --- projects/deltaprime/mappings/assetToAddressMapping.json | 2 ++ projects/grim/config.json | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/deltaprime/mappings/assetToAddressMapping.json b/projects/deltaprime/mappings/assetToAddressMapping.json index 85dd436c43..6fe5809efd 100644 --- a/projects/deltaprime/mappings/assetToAddressMapping.json +++ b/projects/deltaprime/mappings/assetToAddressMapping.json @@ -39,5 +39,7 @@ "SHLB_AVAX-USDC_B": "0x668530302c6ecc4ebe693ec877b79300ac72527c", "SHLB_BTC.b-AVAX_B": "0x536d7e7423e8fb799549caf574cfa12aae95ffcd", "GMX": "0x62edc0692bd897d2295872a9ffcac5425011c661", + "EUROC": "0xc891eb4cbdeff6e073e859e987815ed1505c2acd", + "SHLB_EUROC-USDC_V2_1_B": "0x638f969675822dfae4566b44d0f2a11362fbed52", "SHLB_USDT.e-USDt_C": "0x9f44e67ba256c18411bb041375e572e3dd11fa72" } \ No newline at end of file diff --git a/projects/grim/config.json b/projects/grim/config.json index d98d1d2cdb..7594520756 100644 --- a/projects/grim/config.json +++ b/projects/grim/config.json @@ -108,7 +108,6 @@ "0xe0BA4Bd9211e840e3B7b8B46816f247484916fE2", "0xa21dD344EA44306e32582EB372B1e91B196e62FB", "0xEA751A395725E54251308AE2DC5741E5EB4Bb5D0", - "0x3e739671De3B0321BA219fAA7468E5d349331BDA", "0x67c35B10BB74e035EE062bbCa570c42B11893c71", "0xa8D2Bee3C6FBc33c77814C208A420A3A8862c09B", "0x77B76f8a50b4Beb89210E1e6194299243F334B03", From f72898e111161508d5d50381cc3ce91dbd260fc6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 8 Jul 2023 12:40:08 +0200 Subject: [PATCH 1066/1354] update buffer hallmark --- projects/buffer/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/buffer/index.js b/projects/buffer/index.js index 0fc7e8cd66..3da25c9935 100644 --- a/projects/buffer/index.js +++ b/projects/buffer/index.js @@ -48,6 +48,5 @@ module.exports = { [Math.floor(new Date("2023-02-22") / 1e3), "Added a USDC Pool on polygon"], [Math.floor(new Date("2023-03-22") / 1e3), "Added ARB Pool"], [Math.floor(new Date("2023-04-14") / 1e3), "Added USDC Protocol owned liquidity Pool"], - [Math.floor(new Date("2023-06-14") / 1e3), "Added BFR Pool"] ] }; From a75374a6c5442b6755467bbf8040d0d0519a9e07 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Sat, 8 Jul 2023 12:40:50 +0200 Subject: [PATCH 1067/1354] Add nftperp v1 shutdown hallmark (#6755) --- projects/nftperp/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/nftperp/index.js b/projects/nftperp/index.js index f6c8bf3410..cccf4948fb 100644 --- a/projects/nftperp/index.js +++ b/projects/nftperp/index.js @@ -12,4 +12,7 @@ module.exports = { ] }) }, + hallmarks: [ + [1688695200, "v1 shutdown"], + ], }; From 1232a7458aca449dde09867d7703b6d3ee36a273 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Sat, 8 Jul 2023 12:42:10 +0200 Subject: [PATCH 1068/1354] Add Tribe3 NFT perp market (#6757) --- projects/tribe3/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/tribe3/index.js diff --git a/projects/tribe3/index.js b/projects/tribe3/index.js new file mode 100644 index 0000000000..ef871bd6de --- /dev/null +++ b/projects/tribe3/index.js @@ -0,0 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensExport } = require('../helper/sumTokens'); + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ + tokensAndOwners: [ + // DEX + [ADDRESSES.arbitrum.WETH, '0x01b6407adf740d135ddf1ebdd1529407845773f3'], + // Insurance fund + [ADDRESSES.arbitrum.WETH, '0x3af692a5ab2da34f742686bd4a77b5e609ee9ec6'], + ] + }) + }, +}; From 5f80b407a8b1cf787683abea135d95913d2d9d8d Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Sat, 8 Jul 2023 11:44:35 +0100 Subject: [PATCH 1069/1354] Update paraswap.js --- projects/paraswap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/paraswap.js b/projects/paraswap.js index 1724b18a3c..488964c139 100644 --- a/projects/paraswap.js +++ b/projects/paraswap.js @@ -19,7 +19,7 @@ async function safetyModuleStaking(timestamp, ethBlock, chainBlocks, { api }) { } module.exports = { - methodology: "PSP can be staked in staking pools, one pool per Private Market Maker, to signal and share the PMM benefits", + methodology: "PSP can be staked either on its single asset sePSP pool or 2x boosted sePSP2, an 80/20 balancer pool. Staking allows users to receive Revenue based on their boosted actions.", ethereum: { staking, pool2: safetyModuleStaking, From 0d3d5c74e2b062a4baeb2d9619c051afb6e37803 Mon Sep 17 00:00:00 2001 From: Dinotopia Rex <138904282+dinotopiafi@users.noreply.github.com> Date: Sat, 8 Jul 2023 16:24:05 -0400 Subject: [PATCH 1070/1354] Add Dinotopia (#6756) * Add Dinotopia * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dinotopia/abi.json | 8 ++++++++ projects/dinotopia/index.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 projects/dinotopia/abi.json create mode 100644 projects/dinotopia/index.js diff --git a/projects/dinotopia/abi.json b/projects/dinotopia/abi.json new file mode 100644 index 0000000000..fa91e9331c --- /dev/null +++ b/projects/dinotopia/abi.json @@ -0,0 +1,8 @@ +{ + "bank": { + "usableBnbBalance": "uint256:usableCollateralBalance" + }, + "multiFeeDistribution": { + "totalSupply": "uint256:totalSupply" + } +} \ No newline at end of file diff --git a/projects/dinotopia/index.js b/projects/dinotopia/index.js new file mode 100644 index 0000000000..1598163f84 --- /dev/null +++ b/projects/dinotopia/index.js @@ -0,0 +1,31 @@ +const Abis = require("./abi.json"); +const { sumTokensExport, sumUnknownTokens, } = require('../helper/unknownTokens') + +const Contracts = { + bsc: { + wbnb: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + brx: "0xe550c560a895d043E5EEd2bC7eC8A8e46c2408D6", + fossil: "0xfE8FFB60a2B6d46102caa35739Be465E600D0f5E", + bank: "0xF90c0b409001b97067c539693754008456f6C265", + multiFeeDistribution: "0xd1f2467b2E2cb7bABc5CE8a947A294f216D93F90", + chef: "0xF59e1568cb5FA1cdf1f4233D738D802A90c64B5E", + lps: [ + "0x9bB50fE7E33C15405f94978A5bb88F8544847007", // FOSSIL_BNB_LP + "0x5Ff686208DFe12D35761fe9C74396852303BC377", // BRX_BNB_LP + ], + }, +}; + +async function calcBscStakingTvl(timestamp, ethBlock, chainBlocks, {api}) { + const bscStakingData = await api.call({ target: Contracts.bsc.multiFeeDistribution, abi: Abis.multiFeeDistribution.totalSupply, }); + api.add(Contracts.bsc.fossil, bscStakingData) + return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: Contracts.bsc.lps, }) +} + +module.exports = { + bsc: { + tvl: sumTokensExport({ owner: Contracts.bsc.bank, tokens: [Contracts.bsc.wbnb] }), + pool2: sumTokensExport({ owner: Contracts.bsc.chef, tokens: Contracts.bsc.lps, useDefaultCoreAssets: true, }), + staking: calcBscStakingTvl, + }, +}; \ No newline at end of file From d8a527ca6f5e604181be8848912f1df5409b94fe Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sun, 9 Jul 2023 00:11:43 +0100 Subject: [PATCH 1071/1354] add bsc contracts --- projects/penpie/config.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/penpie/config.js b/projects/penpie/config.js index 36b200559d..1d6d3ee244 100644 --- a/projects/penpie/config.js +++ b/projects/penpie/config.js @@ -13,4 +13,11 @@ module.exports = { PENDLE: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", pendleStaking: "0x6DB96BBEB081d2a85E0954C252f2c1dC108b3f81", }, + bsc: { + masterPenpie: "0xb35b3d118c0394e750b4b59d2a2f9307393cd5db", + vePENDLE: "0x8A09574b0401A856d89d1b583eE22E8cb0C5530B", + mPENDLE: "0x0465aad9da170798433f4ab7fa7ec8b9b9bf0bb1", + PENDLE: "0xb3Ed0A426155B79B898849803E3B36552f7ED507", + pendleStaking: "0x782d9d67feaa4d1cdf8222d9053c8cba1c3b7982", + }, }; From 9c87aa6a41d66c6846bc03b1166a3a3d33476756 Mon Sep 17 00:00:00 2001 From: define Date: Sun, 9 Jul 2023 10:55:59 +0100 Subject: [PATCH 1072/1354] add two wallets huobi --- projects/huobi/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/huobi/index.js b/projects/huobi/index.js index 930ee55c8d..b9c5b0d2be 100644 --- a/projects/huobi/index.js +++ b/projects/huobi/index.js @@ -8,6 +8,7 @@ const config = { '1KVpuCfhftkzJ67ZUegaMuaYey7qni7pPj', //These 3 addresses has 48,555 #Bitcoin. This is only less than 3% of the total high value assets we have, including btc, usd, stablecoins, T-bills.. According to Justin Sun https://twitter.com/justinsuntron/status/1590311559242612743 '14XKsv8tT6tt8P8mfDQZgNF8wtN5erNu5D', + '1LXzGrDQqKqVBqxfGDUyhC6rTRBN5s8Sbj' ], }, ethereum: { @@ -54,7 +55,10 @@ const config = { }, eos: { owners: ['vuniyuoxoeub'], - } + }, + ripple: { + owners: ['rKUDvXFJMFu65LqPTH3Yfpii4rbKT9bSQT'], + }, } module.exports = cexExports(config) From 49fecb3423ae96005bde7489a6ae1b0aa6cc2367 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Sun, 9 Jul 2023 19:29:20 +0200 Subject: [PATCH 1073/1354] Share FRAX and SAFE addies (#6760) * Share FRAX address * Share SAFE address * Rename SFRETH to sfrxETH --- projects/asgardfinance/index.js | 2 +- projects/asymmetry-fi/index.js | 2 +- projects/bprotocol/index.js | 2 +- projects/celerbridge/index.js | 17 +---- projects/config/onx/constant.js | 2 +- projects/davos-protocol/index.js | 7 +- projects/dotoracle/index.js | 2 +- projects/finnexus/index.js | 2 +- projects/fpi/index.js | 4 +- projects/fraxlend/index.js | 3 +- projects/helper/coreAssets.json | 4 +- projects/helper/curvePools.js | 2 +- projects/helper/streamingHelper.js | 2 +- projects/metronome-synth/index.js | 4 +- projects/nomad/index.js | 8 +-- projects/ondofinance-v1/index.js | 2 +- projects/orion-money/index.js | 10 +-- projects/polygon/index.js | 2 +- projects/redacted/index.js | 4 +- projects/solace-finance/config.js | 2 +- projects/stakedao/index.js | 2 +- projects/standcash/index.js | 6 +- projects/swivel/index.js | 10 +-- projects/synapse/config.js | 104 ++++++++++++++--------------- projects/templedao-trade/index.js | 6 +- projects/templedao/index.js | 2 +- projects/tokemak/index.js | 6 +- projects/treasury/aave.js | 2 +- projects/treasury/aura.js | 6 +- projects/treasury/balancer.js | 19 +++--- projects/treasury/beanstalk.js | 6 +- projects/treasury/frax.js | 6 +- projects/treasury/guru-network.js | 6 +- projects/treasury/illuvium.js | 9 ++- projects/treasury/index-coop.js | 5 +- projects/treasury/inverse.js | 2 +- projects/treasury/iq.js | 11 ++- projects/treasury/jade-protocol.js | 16 ++--- projects/treasury/jpegd.js | 4 +- projects/treasury/looksrare.js | 4 +- projects/treasury/nexus-mutual.js | 6 +- projects/treasury/push.js | 2 +- projects/treasury/railgun.js | 6 +- projects/treasury/redacted.js | 12 ++-- projects/treasury/ribbon.js | 18 ++--- projects/treasury/stakedao.js | 12 ++-- projects/treasury/stargate.js | 2 +- projects/treasury/sudoswap.js | 2 +- projects/treasury/synapse.js | 60 ++++++++--------- projects/treasury/tokemak.js | 10 +-- 50 files changed, 212 insertions(+), 233 deletions(-) diff --git a/projects/asgardfinance/index.js b/projects/asgardfinance/index.js index 4aa1535a86..bf5323aaa8 100644 --- a/projects/asgardfinance/index.js +++ b/projects/asgardfinance/index.js @@ -9,7 +9,7 @@ const AsgardTreasury = "0x9D5818af130705F95444d78A55B4F3d85cBfCC13"; const DAI = ADDRESSES.ethereum.DAI; const ASG_DAI_SLP = "0x024cc95611d478dd367240e72c82662d9e390a6a"; -const FRAX = "0x853d955acef822db058eb8505911ed77f175b99e"; +const FRAX = ADDRESSES.ethereum.FRAX; const ASG_FRAX_SLP = "0x5696cd9054ce11625141f5ee2c65fc4d57c2a5ca"; const WUST = "0xa47c8bf37f92abed4a126bda807a7b7498661acd"; const ASG_UST_SLP = "0x5a1abc007f031aa58238f45941d965ce6892fdff"; diff --git a/projects/asymmetry-fi/index.js b/projects/asymmetry-fi/index.js index 02ad6ab331..8d669b28e3 100644 --- a/projects/asymmetry-fi/index.js +++ b/projects/asymmetry-fi/index.js @@ -7,7 +7,7 @@ module.exports = { tokensAndOwners: [ [ADDRESSES.ethereum.WSTETH, '0x972a53e3a9114f61b98921fb5b86c517e8f23fad'], [ADDRESSES.ethereum.RETH, '0x7b6633c0cd81dc338688a528c0a3f346561f5ca3'], - [ADDRESSES.ethereum.SFRETH, '0x36ce17a5c81e74dc111547f5dffbf40b8bf6b20a'], + [ADDRESSES.ethereum.sfrxETH, '0x36ce17a5c81e74dc111547f5dffbf40b8bf6b20a'], ] }) } diff --git a/projects/bprotocol/index.js b/projects/bprotocol/index.js index ee990af010..8f5b611965 100644 --- a/projects/bprotocol/index.js +++ b/projects/bprotocol/index.js @@ -33,7 +33,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const usdtEth = ADDRESSES.ethereum.USDT const usdtArbitrum = ADDRESSES.arbitrum.USDT - const fraxEth = "0x853d955aCEf822Db058eb8505911ED77F175b99e" + const fraxEth = ADDRESSES.ethereum.FRAX const usdcFantomBAMM = "0xEDC7905a491fF335685e2F2F1552541705138A3D" const daiFantomBAMM = "0x6d62d6Af9b82CDfA3A7d16601DDbCF8970634d22" diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js index d5a39397b1..4ee0a323bf 100644 --- a/projects/celerbridge/index.js +++ b/projects/celerbridge/index.js @@ -117,7 +117,6 @@ const liquidityBridgeTokens = [ xdai: ADDRESSES.xdai.USDC, }, { - // BUSD ethereum: ADDRESSES.ethereum.BUSD, bsc: ADDRESSES.bsc.BUSD, }, @@ -319,7 +318,6 @@ const liquidityBridgeTokens = [ polygon: "0x08648471B5AAd25fEEeb853d6829048f3Fc37786", }, { - // iZi arbitrum: ADDRESSES.bsc.iZi, bsc: ADDRESSES.bsc.iZi, ethereum: "0x9ad37205d608B8b219e6a2573f922094CEc5c200", @@ -365,12 +363,9 @@ const liquidityBridgeTokens = [ ethereum: "0xcA37530E7c5968627BE470081d1C993eb1dEaf90", }, { - // cUSD celo: ADDRESSES.celo.cUSD, }, { - // WSYS - // origin: "syscoin:" + ADDRESSES.syscoin.WSYS, syscoin: ADDRESSES.syscoin.WSYS, bsc: "0x6822A778726CD2f0d4A1Cfaca2D04654e575cC82", ethereum: "0xF3C96924d85566C031ddc48DbC63B2d71da6D0f6", @@ -385,8 +380,7 @@ const liquidityBridgeTokens = [ ethereum: "0xa02120696c7b8fe16c09c749e4598819b2b0e915", }, { - // FRAX - ethereum: "0x853d955acef822db058eb8505911ed77f175b99e", + ethereum: ADDRESSES.ethereum.FRAX, }, { // FXS @@ -401,15 +395,12 @@ const liquidityBridgeTokens = [ bsc: "0x1fD991fb6c3102873ba68a4e6e6a87B3a5c10271", }, { - // BNB bsc: ADDRESSES.bsc.WBNB, }, { - // AVAX avax: ADDRESSES.avax.WAVAX, }, { - // FTM fantom: ADDRESSES.fantom.WFTM, }, { @@ -437,8 +428,6 @@ const liquidityBridgeTokens = [ heco: "0x4668e0E7cC545De886aBF038067F81cD4DC0924b", }, { - // SDN - // origin: "shiden:" + ADDRESSES.shiden.WSDN, shiden: ADDRESSES.shiden.WSDN, }, { @@ -450,15 +439,12 @@ const liquidityBridgeTokens = [ avax: "0x4fbf0429599460d327bd5f55625e30e4fc066095", }, { - // MATIC polygon: ADDRESSES.polygon.WMATIC_2, }, { - // AAVE ethereum: ADDRESSES.ethereum.AAVE, }, { - // CRV ethereum: ADDRESSES.ethereum.CRV, }, { @@ -486,7 +472,6 @@ const liquidityBridgeTokens = [ boba: "0xCe055Ea4f29fFB8bf35E852522B96aB67Cbe8197", }, { - // LUSD ethereum: ADDRESSES.ethereum.LUSD, }, { diff --git a/projects/config/onx/constant.js b/projects/config/onx/constant.js index 6ba33a7187..9b3c7b565c 100644 --- a/projects/config/onx/constant.js +++ b/projects/config/onx/constant.js @@ -12,7 +12,7 @@ const tokenAddresses = { aethToken: "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb", onsToken: "0xfC97C0c12438B6E4CF246cD831b02FeF4950DCAD", daiToken: ADDRESSES.ethereum.DAI, - fraxToken: "0x853d955acef822db058eb8505911ed77f175b99e", + fraxToken: ADDRESSES.ethereum.FRAX, usdcToken: ADDRESSES.ethereum.USDC, aethPairEth: "0x6147805e1011417B93e5D693424a62A70d09d0E5", aethPairOns: "0x5022BbC26B3Bc8c8d2F1F7dB9ee3A2B4631b9b18", diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js index 930d905b68..f4f6b47fe8 100644 --- a/projects/davos-protocol/index.js +++ b/projects/davos-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require('../helper/unknownTokens') module.exports = { @@ -9,10 +10,10 @@ module.exports = { }, ethereum: { tvl: sumTokensExport({ chain: 'ethereum', owner: '0x819d1Daa794c1c46B841981b61cC978d95A17b8e', tokens: [ - '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0', // WSTETH - '0xae78736cd615f374d3085123a210448e74fc6393', //reth + ADDRESSES.ethereum.WSTETH, + ADDRESSES.ethereum.RETH, '0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599', //stmatic - '0xac3e018457b222d93114458476f3e3416abbe38f', //SFRXETH + ADDRESSES.ethereum.sfrxETH, ] }), } } diff --git a/projects/dotoracle/index.js b/projects/dotoracle/index.js index 78eb4bb8f2..979e146a07 100644 --- a/projects/dotoracle/index.js +++ b/projects/dotoracle/index.js @@ -13,7 +13,7 @@ const config = { usdc: ADDRESSES.ethereum.USDC, usdt: ADDRESSES.ethereum.USDT, DAI: ADDRESSES.ethereum.DAI, - frax: '0x853d955acef822db058eb8505911ed77f175b99e', + frax: ADDRESSES.ethereum.FRAX, fxs: '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0', maker: ADDRESSES.ethereum.MKR, aave: ADDRESSES.ethereum.AAVE, diff --git a/projects/finnexus/index.js b/projects/finnexus/index.js index f0cc21f4d1..e64e540448 100644 --- a/projects/finnexus/index.js +++ b/projects/finnexus/index.js @@ -5,7 +5,7 @@ const config = { // ['0xef9cd7882c067686691b6ff49e650b43afbbcc6b', '0x919a35A4F40c479B3319E3c3A2484893c06fd7de'], [ADDRESSES.ethereum.USDC, '0xff60d81287BF425f7B2838a61274E926440ddAa6'], [ADDRESSES.ethereum.USDT, '0xff60d81287BF425f7B2838a61274E926440ddAa6'], - ['0x853d955acef822db058eb8505911ed77f175b99e', '0x6f88e8fbF5311ab47527f4Fb5eC10078ec30ab10'], + [ADDRESSES.ethereum.FRAX, '0x6f88e8fbF5311ab47527f4Fb5eC10078ec30ab10'], ], wan: [ // ['0xC6F4465A6a521124C8e3096B62575c157999D361', '0xe96E4d6075d1C7848bA67A6850591a095ADB83Eb'], diff --git a/projects/fpi/index.js b/projects/fpi/index.js index 587b43b440..90a3ccf3c9 100644 --- a/projects/fpi/index.js +++ b/projects/fpi/index.js @@ -1,4 +1,6 @@ -const frax = "0x853d955acef822db058eb8505911ed77f175b99e" +const ADDRESSES = require('../helper/coreAssets.json') + +const frax = ADDRESSES.ethereum.FRAX const fxs = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0" async function tvl(_, _b, _cb, { api, erc20 }){ diff --git a/projects/fraxlend/index.js b/projects/fraxlend/index.js index 27f8acbf27..86df2b95b8 100644 --- a/projects/fraxlend/index.js +++ b/projects/fraxlend/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -11,7 +12,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { async function borrowed(timestamp, block, chainBlocks, { api }) { const pairs = await api.call({ target: REGISTRY_ADDR, abi: abi['getAllPairAddresses'], }) const bals = await api.multiCall({ abi: 'function totalBorrow() view returns (uint128 amount, uint128 shares)', calls: pairs }) - bals.forEach(bal => api.add('0x853d955acef822db058eb8505911ed77f175b99e', bal.amount)) + bals.forEach(bal => api.add(ADDRESSES.ethereum.FRAX, bal.amount)) } module.exports = { diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 28828deac8..d8f2cb7de2 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -4,7 +4,7 @@ "WETH": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "WSTETH": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", "STETH": "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", - "SFRETH": "0xac3e018457b222d93114458476f3e3416abbe38f", + "sfrxETH": "0xac3e018457b222d93114458476f3e3416abbe38f", "USDC": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "LINK": "0x514910771af9ca656af840dff83e8264ecf986ca", "MATIC": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", @@ -22,9 +22,11 @@ "cvxCRV": "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", "vlCVX": "0x72a19342e8f1838460ebfccef09f6585e32db86e", "CVX": "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", + "FRAX": "0x853d955aCEf822Db058eb8505911ED77F175b99e", "BNB": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", "tBTC": "0x18084fba666a33d37592fa2633fd49a74dd93a88", "USX": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + "SAFE": "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", "TOKE": "0x2e9d63788249371f1dfc918a52f8d799f4a38c94", "TUSD": "0x0000000000085d4780B73119b644AE5ecd22b376", "BUSD": "0x4fabb145d64652a948d72533023f6e7a623c7c53", diff --git a/projects/helper/curvePools.js b/projects/helper/curvePools.js index e4b847a0aa..4c4cd6f354 100644 --- a/projects/helper/curvePools.js +++ b/projects/helper/curvePools.js @@ -156,7 +156,7 @@ module.exports = { '0xd632f22692fac7611d2aa1c0d552930d43caed3b': { swapContract: '0xd632f22692fac7611d2aa1c0d552930d43caed3b', underlyingTokens: [ - '0x853d955acef822db058eb8505911ed77f175b99e', + ADDRESSES.ethereum.FRAX, '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490' ] }, diff --git a/projects/helper/streamingHelper.js b/projects/helper/streamingHelper.js index 32f1000a89..0b440f0b24 100644 --- a/projects/helper/streamingHelper.js +++ b/projects/helper/streamingHelper.js @@ -43,7 +43,7 @@ const stableTokenAddresses = [ ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, - '0x853d955aCEf822Db058eb8505911ED77F175b99e', + ADDRESSES.ethereum.FRAX, '0xe2f2a5C287993345a840Db3B0845fbC70f5935a5', ADDRESSES.ethereum.WETH, diff --git a/projects/metronome-synth/index.js b/projects/metronome-synth/index.js index 9eab11276f..2fce148733 100644 --- a/projects/metronome-synth/index.js +++ b/projects/metronome-synth/index.js @@ -9,12 +9,12 @@ module.exports = { ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.WETH, "0xd1C117319B3595fbc39b471AB1fd485629eb05F2", - "0x853d955aCEf822Db058eb8505911ED77F175b99e", + ADDRESSES.ethereum.FRAX, ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.WBTC, "0xa8b607Aa09B6A2E306F93e74c282Fb13f6A80452", "0xc14900dFB1Aa54e7674e1eCf9ce02b3b35157ba5", - ADDRESSES.ethereum.SFRETH, + ADDRESSES.ethereum.sfrxETH, "0x4Dbe3f01aBe271D3E65432c74851625a8c30Aa7B", "0x650CD45DEdb19c33160Acc522aD1a82D9701036a", "0xDD9F61a85fFE73E41eF889817972f0B0AaE6D6Dd" diff --git a/projects/nomad/index.js b/projects/nomad/index.js index fd528b033a..6639c25b3a 100644 --- a/projects/nomad/index.js +++ b/projects/nomad/index.js @@ -16,19 +16,15 @@ const HOME_CHAINS = { const TOKEN_ADDRESSES = [ { - // FRAX - 'ethereum': '0x853d955aCEf822Db058eb8505911ED77F175b99e' + 'ethereum': ADDRESSES.ethereum.FRAX }, { - // USDC 'ethereum': ADDRESSES.ethereum.USDC }, { - // DAI 'ethereum': ADDRESSES.ethereum.DAI }, { - // USDT 'ethereum': ADDRESSES.ethereum.USDT }, { @@ -36,11 +32,9 @@ const TOKEN_ADDRESSES = [ 'ethereum': '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0' }, { - // WETH 'ethereum': ADDRESSES.ethereum.WETH }, { - // WBTC 'ethereum': ADDRESSES.ethereum.WBTC }, { diff --git a/projects/ondofinance-v1/index.js b/projects/ondofinance-v1/index.js index 1867f5b2b2..86e7796899 100644 --- a/projects/ondofinance-v1/index.js +++ b/projects/ondofinance-v1/index.js @@ -45,7 +45,7 @@ const data = { supported_tokens: [ "0x4Eb8b4C65D8430647586cf44af4Bf23dEd2Bb794", "0x36784d3B5aa8A807698475b3437a13fA20B7E9e1", - "0x853d955aCEf822Db058eb8505911ED77F175b99e", + ADDRESSES.ethereum.FRAX, "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", "0x0f2D719407FdBeFF09D87557AbB7232601FD9F29", diff --git a/projects/orion-money/index.js b/projects/orion-money/index.js index 9200342341..3179ed945f 100644 --- a/projects/orion-money/index.js +++ b/projects/orion-money/index.js @@ -5,12 +5,12 @@ const fundedContracts = [ '0xd9184981bbab68e05eafd631dd2f8cbaf47e3e13' //TransparentUpgradeableProxy ]; const stable = [ - ADDRESSES.ethereum.USDC, //'USDC' : - ADDRESSES.ethereum.USDT, //'USDT' : - ADDRESSES.ethereum.DAI, //'DAI' : + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.DAI, '0xa47c8bf37f92abed4a126bda807a7b7498661acd', //'wUST' : - ADDRESSES.ethereum.BUSD, //'BUSD' : - '0x853d955acef822db058eb8505911ed77f175b99e' //'FRAX' : + ADDRESSES.ethereum.BUSD, + ADDRESSES.ethereum.FRAX, ]; const anchor = [ '0x94eAd8f528A3aF425de14cfdDA727B218915687C', //'aUSDC': diff --git a/projects/polygon/index.js b/projects/polygon/index.js index 96d9f1e166..d8c647dba2 100644 --- a/projects/polygon/index.js +++ b/projects/polygon/index.js @@ -55,7 +55,7 @@ async function tvl(_, block) { '0xe912b8bA2513D7e29b7b2E5B14398dbf77503Fb4', '0xba8a621b4a54e61c442f5ec623687e2a942225ef', '0x249e38ea4102d0cf8264d3701f1a0e39c4f2dc3b', - '0x853d955acef822db058eb8505911ed77f175b99e', + ADDRESSES.ethereum.FRAX, '0xd0cd466b34a24fcb2f87676278af2005ca8a78c4', '0x3a4f40631a4f906c2BaD353Ed06De7A5D3fCb430', '0xba100000625a3754423978a60c9317c58a424e3d', diff --git a/projects/redacted/index.js b/projects/redacted/index.js index 0d5c4440f5..01745540a4 100644 --- a/projects/redacted/index.js +++ b/projects/redacted/index.js @@ -36,10 +36,8 @@ async function tvl(timestamp, block, chainBlocks){ [AURA, false], // BTRFLY/ETH Curve LP ['0x7483Dd57f6488b0e194A151C57Df6Ec85C00aCE9', false], - // USDC [ADDRESSES.ethereum.USDC, false], - // FRAX - ['0x853d955aCEf822Db058eb8505911ED77F175b99e', false], + [ADDRESSES.ethereum.FRAX, false], ], treasuries, block) //Add UniswapV3 LPs diff --git a/projects/solace-finance/config.js b/projects/solace-finance/config.js index 8892996414..51f428ae11 100644 --- a/projects/solace-finance/config.js +++ b/projects/solace-finance/config.js @@ -6,7 +6,7 @@ module.exports = { uwp_address: '0x5efC0d9ee3223229Ce3b53e441016efC5BA83435', tokens: [ { - PoolToken: "0x853d955aCEf822Db058eb8505911ED77F175b99e", + PoolToken: ADDRESSES.ethereum.FRAX, TokenTicker: "FRAX", }, { diff --git a/projects/stakedao/index.js b/projects/stakedao/index.js index 14d9bee993..9382c955e7 100644 --- a/projects/stakedao/index.js +++ b/projects/stakedao/index.js @@ -90,7 +90,7 @@ async function tvl(timestamp, block, _, { api }) { const angle_sanFRAX_V3 = { contract: angle_protocol.locker, sanFraxEurGauge: '0xb40432243E4F317cE287398e72Ab8f0312fc2FE8', - fraxToken: '0x853d955aCEf822Db058eb8505911ED77F175b99e', + fraxToken: ADDRESSES.ethereum.FRAX, abi: 'balanceOf', } const angle_sushi_agEUR_V3 = { diff --git a/projects/standcash/index.js b/projects/standcash/index.js index 2fbf23e79f..62665eeb70 100644 --- a/projects/standcash/index.js +++ b/projects/standcash/index.js @@ -40,15 +40,11 @@ const poolContracts = [ ]; const tokenAddresses = [ - //USDT ADDRESSES.ethereum.USDT, - //USDC ADDRESSES.ethereum.USDC, - //FRAX - "0x853d955acef822db058eb8505911ed77f175b99e", + ADDRESSES.ethereum.FRAX, //ESD "0x36F3FD68E7325a35EB768F1AedaAe9EA0689d723", - //DAI ADDRESSES.ethereum.DAI, //BAC "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a", diff --git a/projects/swivel/index.js b/projects/swivel/index.js index f5729272dc..ff654a4a7d 100644 --- a/projects/swivel/index.js +++ b/projects/swivel/index.js @@ -14,14 +14,14 @@ module.exports = { ], tokens: [ "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, "0x39AA39c021dfbaE8faC545936693aC917d5E7563", // cUSDC, // "0xEb91861f8A4e1C12333F42DCE8fB0Ecdc28dA716", // eUSDC - ADDRESSES.ethereum.STETH, // Lido stETH - ADDRESSES.ethereum.WSTETH, // Lido wstETH + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.WSTETH, "0x5E8422345238F34275888049021821E8E08CAa1f", // frxETH - ADDRESSES.ethereum.SFRETH // sfrxETH + ADDRESSES.ethereum.sfrxETH ] }) } diff --git a/projects/synapse/config.js b/projects/synapse/config.js index f568024c5a..af2ca176fc 100644 --- a/projects/synapse/config.js +++ b/projects/synapse/config.js @@ -6,9 +6,9 @@ module.exports = { { pool: '0x1116898dda4015ed8ddefb84b6e8bc24528af2d8', tokens: [ - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, ] }, ], @@ -16,17 +16,17 @@ module.exports = { address: '0x2796317b0fF8538F253012862c06787Adfb8cEb6', tokens: [ '0x98585dfc8d9e7d48f0b1ae47ce33332cf4237d96', // NEWO - ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.WETH, '0x0ab87046fBb341D058F17CBC4c1133F25a20a52f', // gOHM '0x71ab77b7dbb4fa7e017bc15090b2163221420282', // HIGH - '0x853d955acef822db058eb8505911ed77f175b99e', // FRAX + ADDRESSES.ethereum.FRAX, '0xbaac2b4491727d78d2b78815144570b9f2fe8899', // DOG '0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f', // SDT - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, '0xb753428af26e81097e7fd17f40c88aaa3e04902c', // SFI - ADDRESSES.ethereum.DAI, // DAI - ADDRESSES.ethereum.WBTC, // wBTC + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WBTC, '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', // agEUR '0x0642026E7f0B6cCaC5925b4E7Fa61384250e1701', // H2O '0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B', // USDB @@ -45,14 +45,14 @@ module.exports = { pool: '0xE27BFf97CE92C3e1Ff7AA9f86781FDd6D48F5eE9', tokens: [ // '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', // neth - ADDRESSES.optimism.WETH, // weth + ADDRESSES.optimism.WETH, ] }, { pool: '0xF44938b0125A6662f9536281aD2CD6c499F22004', tokens: [ // ADDRESSES.metis.SYN, // nusd - ADDRESSES.optimism.USDC, // usdc + ADDRESSES.optimism.USDC, ] }, ], @@ -63,10 +63,10 @@ module.exports = { bridge: { address: '0xC05e61d0E7a63D27546389B7aD62FdFf5A91aACE', tokens: [ - ADDRESSES.avax.WAVAX, // WAVAX + ADDRESSES.avax.WAVAX, '0x1f1e7c893855525b303f99bdf5c3c05be09ca251', // SYN '0x321E7092a180BB43555132ec53AaA65a5bF84251', // gOHM - ADDRESSES.avax.BTC_b, // BTC.b + ADDRESSES.avax.BTC_b, '0x5aB7084CB9d270c2Cb052dd30dbecBCA42F8620c', // USDB '0x62edc0692BD897D2295872a9FFCac5425011c661', // GMX ] @@ -75,9 +75,9 @@ module.exports = { { pool: '0xED2a7edd7413021d440b09D654f3b87712abAB66', tokens: [ - ADDRESSES.avax.DAI, // DAI - ADDRESSES.avax.USDC_e, // USDC - ADDRESSES.avax.USDT_e, // USDT + ADDRESSES.avax.DAI, + ADDRESSES.avax.USDC_e, + ADDRESSES.avax.USDT_e, // "0xCFc37A6AB183dd4aED08C204D1c2773c0b1BDf46", // nusd ] }, @@ -101,7 +101,7 @@ module.exports = { { pool: '0xCb6674548586F20ca39C97A52A0ded86f48814De', tokens: [ - ADDRESSES.cronos.USDC, // DAI + ADDRESSES.cronos.USDC, // "0x396c9c192dd323995346632581BEF92a31AC623b", // nusd ] }, @@ -115,7 +115,7 @@ module.exports = { tokens: [ '0x5f4bde007dc06b867f86ebfe4802e34a1ffeed63', // HIGH '0xaA88C603d142C371eA0eAC8756123c5805EdeE03', // DOG - ADDRESSES.bsc.BUSD, // BUSD + ADDRESSES.bsc.BUSD, '0x0FE9778c005a5A6115cBE12b0568a2d50b765A51', // NFD '0x130025eE738A66E691E6A7a62381CB33c6d9Ae83', // JUMP '0xc8699AbBba90C7479dedcCEF19eF78969a2fc608', // USDB @@ -125,9 +125,9 @@ module.exports = { { pool: '0x28ec0B36F0819ecB5005cAB836F4ED5a2eCa4D13', tokens: [ - ADDRESSES.bsc.BUSD, // BUSD - ADDRESSES.bsc.USDC, // USDC - ADDRESSES.bsc.USDT, // USDT + ADDRESSES.bsc.BUSD, + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.USDT, // "0x23b891e5c62e0955ae2bd185990103928ab817b3", // nusd ] }, @@ -140,16 +140,16 @@ module.exports = { address: '0x8f5bbb2bb8c2ee94639e55d5f41de9b4839c1280', tokens: [ '0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195', // gOHM - ADDRESSES.polygon.WMATIC_2, // wMATIC + ADDRESSES.polygon.WMATIC_2, ] }, pools: [ { pool: '0x85fCD7Dd0a1e1A9FCD5FD886ED522dE8221C3EE5', tokens: [ - ADDRESSES.polygon.DAI, // DAI - ADDRESSES.polygon.USDC, // USDC - ADDRESSES.polygon.USDT, // USDT + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDT, // "0xb6c473756050de474286bed418b77aeac39b02af", // nusd ] }, @@ -162,7 +162,7 @@ module.exports = { address: '0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b', tokens: [ '0x91fa20244Fb509e8289CA630E5db3E9166233FDc', // gOHM - ADDRESSES.fantom.WFTM, // wFTM + ADDRESSES.fantom.WFTM, '0x6Fc9383486c163fA48becdEC79d6058f984f62cA', // USDB ] }, @@ -170,17 +170,17 @@ module.exports = { { pool: '0x85662fd123280827e11c59973ac9fcbe838dc3b4', tokens: [ - ADDRESSES.fantom.USDC, // USDC - ADDRESSES.fantom.fUSDT, // fUSDT + ADDRESSES.fantom.USDC, + ADDRESSES.fantom.fUSDT, // "0xED2a7edd7413021d440b09D654f3b87712abAB66", // nusd ] }, { pool: ADDRESSES.arbitrum.nUSD, tokens: [ - ADDRESSES.fantom.MIM, // MIM - ADDRESSES.fantom.USDC, // USDC - ADDRESSES.fantom.fUSDT, // USDT + ADDRESSES.fantom.MIM, + ADDRESSES.fantom.USDC, + ADDRESSES.fantom.fUSDT, // "0xED2a7edd7413021d440b09D654f3b87712abAB66", // nusd ] }, @@ -205,16 +205,16 @@ module.exports = { { pool: '0x753bb855c8fe814233d26Bb23aF61cb3d2022bE5', tokens: [ - ADDRESSES.boba.WETH, // weth + ADDRESSES.boba.WETH, // "0x96419929d7949D6A801A6909c145C8EEf6A40431", // neth ] }, { pool: '0x75FF037256b36F15919369AC58695550bE72fead', tokens: [ - ADDRESSES.boba.DAI, // DAI - ADDRESSES.boba.USDC, // USDC - ADDRESSES.boba.USDT, // USDT + ADDRESSES.boba.DAI, + ADDRESSES.boba.USDC, + ADDRESSES.boba.USDT, // "0x6B4712AE9797C199edd44F897cA09BC57628a1CF", // nusd ] }, @@ -233,14 +233,14 @@ module.exports = { { pool: '0x09fec30669d63a13c666d2129230dd5588e2e240', tokens: [ - ADDRESSES.metis.WETH, // weth + ADDRESSES.metis.WETH, // "0x931b8f17764362a3325d30681009f0edd6211231", // neth ] }, { pool: '0x555982d2E211745b96736665e19D9308B615F78e', tokens: [ - ADDRESSES.metis.m_USDC, // USDC + ADDRESSES.metis.m_USDC, // "0x961318fc85475e125b99cc9215f62679ae5200ab", // nusd ] }, @@ -259,24 +259,24 @@ module.exports = { { pool: '0xa067668661C84476aFcDc6fA5D758C4c01C34352', tokens: [ - ADDRESSES.arbitrum.WETH, // weth + ADDRESSES.arbitrum.WETH, // "0x3ea9b0ab55f34fb188824ee288ceaefc63cf908e", // neth ] }, { pool: '0x9Dd329F5411466d9e0C488fF72519CA9fEf0cb40', tokens: [ - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.USDC, // ADDRESSES.arbitrum.nUSD, // nusd ] }, { pool: '0x0Db3FE3B770c95A0B99D1Ed6F2627933466c0Dd8', tokens: [ - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.arbitrum.USDC, // USDC - ADDRESSES.arbitrum.MIM, // MIM + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.MIM, // ADDRESSES.arbitrum.nUSD, // nusd ] }, @@ -294,8 +294,8 @@ module.exports = { { pool: '0xcEf6C2e20898C2604886b888552CA6CcF66933B0', tokens: [ - ADDRESSES.aurora.USDC_e, // USDC - ADDRESSES.aurora.USDT_e, // USDT + ADDRESSES.aurora.USDC_e, + ADDRESSES.aurora.USDT_e, // ADDRESSES.aurora.nUSD, // nusd ] }, @@ -307,8 +307,8 @@ module.exports = { bridge: { address: '0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b', tokens: [ - ADDRESSES.harmony.JEWEL, // JEWEL - ADDRESSES.harmony.xJEWEL, // xJEWEL + ADDRESSES.harmony.JEWEL, + ADDRESSES.harmony.xJEWEL, '0x24eA0D436d3c2602fbfEfBe6a16bBc304C963D04', // DFKTEARS ] }, @@ -332,7 +332,7 @@ module.exports = { { pool: '0x00A4F57D926781f62D09bb05ec76e6D8aE4268da', tokens: [ - ADDRESSES.harmony.AVAX, // avax + ADDRESSES.harmony.AVAX, // "???", // synAvax ] }, @@ -370,21 +370,21 @@ module.exports = { { pool: ADDRESSES.aurora.nUSD, tokens: [ - ADDRESSES.canto.NOTE, // NOTE + ADDRESSES.canto.NOTE, // "0xd8836af2e565d3befce7d906af63ee45a57e8f80", // nUSD ] }, { pool: '0x273508478e099Fdf953349e6B3704E7c3dEE91a5', tokens: [ - ADDRESSES.functionx.WFX, // USDC + ADDRESSES.functionx.WFX, // "0xd8836af2e565d3befce7d906af63ee45a57e8f80", // nusd ] }, { pool: '0xF60F88bA0CB381b8D8A662744fF93486273c22F9', tokens: [ - ADDRESSES.functionx.PURSE, // cantoETH + ADDRESSES.functionx.PURSE, // "0x09fec30669d63a13c666d2129230dd5588e2e240", // nETH ] }, @@ -409,7 +409,7 @@ module.exports = { pool: '0xfdbad1699a550f933efebf652a735f2f89d3833c', tokens: [ "0xd6dab4cff47df175349e6e7ee2bf7c40bb8c05a3", // USDT - ADDRESSES.klaytn.oUSDT, // o.USDT + ADDRESSES.klaytn.oUSDT, ] }, ] diff --git a/projects/templedao-trade/index.js b/projects/templedao-trade/index.js index 2e155b27dd..b0cb2306af 100644 --- a/projects/templedao-trade/index.js +++ b/projects/templedao-trade/index.js @@ -1,12 +1,10 @@ const sdk = require("@defillama/sdk"); - - -const FRAX = "0x853d955aCEf822Db058eb8505911ED77F175b99e"; +const ADDRESSES = require('../helper/coreAssets.json') const tvlContracts = [ { address: '0x98257C876ACe5009e7B97843F8c71b3AE795c71E', // AMMrouter - token: FRAX + token: ADDRESSES.ethereum.FRAX } ]; diff --git a/projects/templedao/index.js b/projects/templedao/index.js index 1d52c4cc63..3cc965307c 100644 --- a/projects/templedao/index.js +++ b/projects/templedao/index.js @@ -15,7 +15,7 @@ const TEMPLE = "0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7"; const auraLocker = '0x3Fa73f1E5d8A792C80F426fc8F84FBF7Ce9bBCAC'; const templeTreasuryContract = "0x5c8898f8e0f9468d4a677887bc03ee2659321012"; -const FRAX = "0x853d955acef822db058eb8505911ed77f175b99e"; +const FRAX = ADDRESSES.ethereum.FRAX; const FXS = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0"; const CVX_FXS = ADDRESSES.ethereum.cvxFXS; const AURA = '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF' diff --git a/projects/tokemak/index.js b/projects/tokemak/index.js index 27abde6218..c65db1ca39 100644 --- a/projects/tokemak/index.js +++ b/projects/tokemak/index.js @@ -1,8 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const { sumTokens, sumTokens2, } = require('../helper/unwrapLPs') +const { sumTokens2, } = require('../helper/unwrapLPs') const abi = require("../pendle/abi.json"); -const BigNumber = require('bignumber.js') const positions = require('./positions.json'); const cvx_abi = { @@ -16,7 +15,6 @@ const cvx_abi = { stkcvxFRAXBP_lockedStakesOf: "function lockedStakesOf(address account) view returns (tuple(bytes32 kek_id, uint256 start_timestamp, uint256 liquidity, uint256 ending_timestamp, uint256 lock_multiplier)[])", } -const cvxBoosterAddress = "0xF403C135812408BFbE8713b5A23a04b3D48AAE31"; const degenesisContract = "0xc803737D3E12CC4034Dde0B2457684322100Ac38"; const wethPool = "0xD3D13a578a53685B4ac36A1Bab31912D2B2A2F36"; const usdcPool = "0x04bda0cf6ad025948af830e75228ed420b0e860d"; @@ -39,7 +37,7 @@ const rtoke3 = "0xA374A62DdBd21e3d5716cB04821CB710897c0972"; const sushiPool = "0xf49764c9C5d644ece6aE2d18Ffd9F1E902629777"; const sushi = ADDRESSES.ethereum.SUSHI; const fraxPool = "0x94671A3ceE8C7A12Ea72602978D1Bb84E920eFB2"; -const frax = "0x853d955acef822db058eb8505911ed77f175b99e"; +const frax = ADDRESSES.ethereum.FRAX; const daiPool = "0x0CE34F4c26bA69158BC2eB8Bf513221e44FDfB75"; const dai = ADDRESSES.ethereum.DAI; const feiPool = "0x03DccCd17CC36eE61f9004BCfD7a85F58B2D360D"; diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js index 36884d3c3d..0aa792d7d3 100644 --- a/projects/treasury/aave.js +++ b/projects/treasury/aave.js @@ -77,7 +77,7 @@ module.exports = treasuryExports({ '0xc713e5E149D5D0715DcD1c156a020976e7E56B88', // aMKR ADDRESSES.ethereum.BUSD, '0xA361718326c15715591c299427c62086F69923D9', // aBUSD - '0x853d955acef822db058eb8505911ed77f175b99e', // FRAX + ADDRESSES.ethereum.FRAX, '0xd4937682df3C8aEF4FE912A96A74121C0829E664', // aFRAX ADDRESSES.ethereum.sUSD, '0x6C5024Cd4F8A59110119C56f8933403A539555EB', // aSUSD diff --git a/projects/treasury/aura.js b/projects/treasury/aura.js index 0e7b430431..906185f16f 100644 --- a/projects/treasury/aura.js +++ b/projects/treasury/aura.js @@ -13,10 +13,10 @@ module.exports = treasuryExports({ ], tokens: [ nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, "0xba100000625a3754423978a60c9317c58a424e3D", // BAL - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.SAFE, "0x0d02755a5700414B26FF040e1dE35D337DF56218", // BEND "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", // auraBAL "0x3dd0843A028C86e0b760b1A76929d1C5Ef93a2dd", // B-auraBAL-STABLE diff --git a/projects/treasury/balancer.js b/projects/treasury/balancer.js index 8f0677a3c5..c574c04df0 100644 --- a/projects/treasury/balancer.js +++ b/projects/treasury/balancer.js @@ -3,9 +3,6 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const eth = "0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f"; const eth2 = "0xb129f73f1afd3a49c701241f374db17ae63b20eb" -const polygon = "0xd2bD536ADB0198f74D5f4f2Bd4Fe68Bae1e1Ba80"; -const arbitrum = "0x6207ed574152496c9B072C24FD87cE9cd9E17320"; -const optimism = "0x043f9687842771b3dF8852c1E9801DCAeED3f6bc"; const bal = "0xba100000625a3754423978a60c9317c58a424e3D"; const abal = "0x272F97b7a56a387aE942350bBC7Df5700f8a4576"; @@ -14,16 +11,16 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.LIDO, // LDO - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.LIDO, + ADDRESSES.ethereum.USDC, "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", // GTC "0xCFEAead4947f0705A14ec42aC3D44129E1Ef3eD5", // NOTE - ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.WETH, "0x2d94AA3e47d9D5024503Ca8491fcE9A2fB4DA198", // BANK - ADDRESSES.ethereum.DAI, // DAI + ADDRESSES.ethereum.DAI, "0x226f7b842E0F0120b7E194D05432b3fd14773a9D", // UNN - ADDRESSES.ethereum.STETH, // stETH - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.SAFE, ], owners: [eth, eth2], ownTokens: [bal, abal], @@ -31,8 +28,8 @@ module.exports = treasuryExports({ arbitrum: { owners: ['0xaf23dc5983230e9eeaf93280e312e57539d098d0'], tokens: [ - ADDRESSES.arbitrum.WETH, // WETH - ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.USDC, ], ownTokens: ['0xbc2597d3f1f9565100582cde02e3712d03b8b0f6'], } diff --git a/projects/treasury/beanstalk.js b/projects/treasury/beanstalk.js index 5df3969b82..6aeae1108b 100644 --- a/projects/treasury/beanstalk.js +++ b/projects/treasury/beanstalk.js @@ -1,13 +1,15 @@ const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); + const bean = "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab"; const sprout = "0xb7ab3f0667eFF5e2299d39C23Aa0C956e8982235"; const farms = "0x21DE18B6A8f78eDe6D16C50A167f6B222DC08DF7"; const tokens = [ nullAddress, - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.SAFE, + ADDRESSES.ethereum.USDC, ]; + module.exports = treasuryExports({ ethereum: { tokens, diff --git a/projects/treasury/frax.js b/projects/treasury/frax.js index 6afee13fc0..744f04050e 100644 --- a/projects/treasury/frax.js +++ b/projects/treasury/frax.js @@ -1,16 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json'); const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48"; const fpis = "0xc2544A32872A91F4A553b404C6950e89De901fdb"; const fxs = "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0"; -const frax = "0x853d955aCEf822Db058eb8505911ED77F175b99e"; const treasuryarb = "0xe61d9ed1e5dc261d1e90a99304fadcef2c76fd10" module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.SAFE, ], owners: [ treasury, @@ -20,7 +20,7 @@ module.exports = treasuryExports({ '0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48', '0x874a873e4891fB760EdFDae0D26cA2c00922C404', ], - ownTokens: [fpis, fxs, frax], + ownTokens: [fpis, fxs, ADDRESSES.ethereum.FRAX], }, arbitrum: { tokens: [ diff --git a/projects/treasury/guru-network.js b/projects/treasury/guru-network.js index 3e6922e643..f03fa933d5 100644 --- a/projects/treasury/guru-network.js +++ b/projects/treasury/guru-network.js @@ -8,10 +8,10 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC, //usdc + ADDRESSES.ethereum.USDC, '0x777172D858dC1599914a1C4c6c9fC48c99a60990',//solid - ADDRESSES.ethereum.WETH,//weth - '0x853d955aCEf822Db058eb8505911ED77F175b99e',//frax + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.FRAX, ], owners: [treasury], ownTokens: [], diff --git a/projects/treasury/illuvium.js b/projects/treasury/illuvium.js index c50e18e68c..78ca8eea09 100644 --- a/projects/treasury/illuvium.js +++ b/projects/treasury/illuvium.js @@ -9,7 +9,14 @@ module.exports = treasuryExports({ owners: [Treasury], }, ethereum: { - tokens: [nullAddress, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.SUSHI, '0x5afe3855358e112b5647b952709e6165e1c1eeee' ], + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.SUSHI, + ADDRESSES.ethereum.SAFE, + ], owners: [Treasury], ownTokens: ['0x767fe9edc9e0df98e07454847909b5e959d7ca0e'], } diff --git a/projects/treasury/index-coop.js b/projects/treasury/index-coop.js index 509a961260..30c718a5fb 100644 --- a/projects/treasury/index-coop.js +++ b/projects/treasury/index-coop.js @@ -1,6 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { Indexed } = require("ethers/lib/utils"); -const { nullAddress,treasuryExports } = require("../helper/treasury"); +const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x9467cfADC9DE245010dF95Ec6a585A506A8ad5FC"; const treasury2 = "0x462a63d4405a6462b157341a78fd1babfd3f8065" @@ -13,7 +12,7 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - '0x5aFE3855358E112B5647B952709E6165e1c1eEEe',//SAFE + ADDRESSES.ethereum.SAFE, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.DAI, '0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84', diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index 5f378f36c5..7c00b23019 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -26,7 +26,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.CRV, ADDRESSES.ethereum.CVX, "0x4C2e59D098DF7b6cBaE0848d66DE2f8A4889b9C3", // FODL - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.SAFE, "0x22915f309EC0182c85cD8331C23bD187fd761360", // DOLA USDC Stable Pool Aura Deposit Vault "0x7f50786A0b15723D741727882ee99a0BF34e3466", // Stake DAO sdCRV Gauge "0x445494F823f3483ee62d854eBc9f58d5B9972A25", // 50DOLA-50DBR diff --git a/projects/treasury/iq.js b/projects/treasury/iq.js index 227813ec67..d7e909d3ee 100644 --- a/projects/treasury/iq.js +++ b/projects/treasury/iq.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json'); const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0x56398b89d53e8731bca8c1b06886cfb14bd6b654"; @@ -6,10 +6,10 @@ const IQ = "0x579CEa1889991f68aCc35Ff5c3dd0621fF29b0C9" module.exports = treasuryExports({ ethereum: { - tokens: [ + tokens: [ nullAddress, - ADDRESSES.ethereum.SFRETH, - "0x853d955aCEf822Db058eb8505911ED77F175b99e", + ADDRESSES.ethereum.sfrxETH, + ADDRESSES.ethereum.FRAX, "0x9D45081706102E7aadDD0973268457527722E274", ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.WBTC, @@ -18,6 +18,5 @@ module.exports = treasuryExports({ ], owners: [treasury], ownTokens: [IQ], - }, -}) \ No newline at end of file +}) diff --git a/projects/treasury/jade-protocol.js b/projects/treasury/jade-protocol.js index 02568fe90e..ca55cdf63c 100644 --- a/projects/treasury/jade-protocol.js +++ b/projects/treasury/jade-protocol.js @@ -16,9 +16,9 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDC,//USDC - ADDRESSES.ethereum.WBTC, // wbtc - ADDRESSES.ethereum.SFRETH, // sfrxETH + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.sfrxETH, '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0', // FXS ], owners: [treasury, treasury1], @@ -26,30 +26,30 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - ADDRESSES.bsc.BUSD,//busd + ADDRESSES.bsc.BUSD, ], owners: [treasuryBSC], }, avax: { tokens: [ nullAddress, - ADDRESSES.avax.USDC,//usdc + ADDRESSES.avax.USDC, ], owners: [treasuryAVAX] }, optimism: { tokens: [ nullAddress, - ADDRESSES.optimism.USDC, //usdc + ADDRESSES.optimism.USDC, ], owners: [treasuryOP] }, arbitrum: { tokens: [ nullAddress, - ADDRESSES.arbitrum.USDC, //usdc + ADDRESSES.arbitrum.USDC, '0x0C4681e6C0235179ec3D4F4fc4DF3d14FDD96017', //rdnt - ADDRESSES.arbitrum.GMX,//gmx + ADDRESSES.arbitrum.GMX, ], owners: [treasuryARB, treasuryARB2] } diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index a705859070..a00f0ea774 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -21,10 +21,10 @@ const treasuryTvl = treasuryExports({ ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.TUSD, ADDRESSES.ethereum.CVX, - "0x853d955aCEf822Db058eb8505911ED77F175b99e", // FRAX + ADDRESSES.ethereum.FRAX, ADDRESSES.ethereum.LINK, ADDRESSES.ethereum.cvxCRV, - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.SAFE, "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", "0x34eD182D0812D119c92907852D2B429f095A9b07", "0x836A808d4828586A69364065A1e064609F5078c7", diff --git a/projects/treasury/looksrare.js b/projects/treasury/looksrare.js index 06d772b563..4b906d6894 100644 --- a/projects/treasury/looksrare.js +++ b/projects/treasury/looksrare.js @@ -11,8 +11,8 @@ const looks = "0xf4d2888d29D722226FafA5d9B24F9164c092421E"; const tokens = [ nullAddress, - ADDRESSES.ethereum.USDC, // USDC - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.SAFE, ]; async function ownTokens(timestamp, block) { diff --git a/projects/treasury/nexus-mutual.js b/projects/treasury/nexus-mutual.js index 568a857a79..dde13a0d43 100644 --- a/projects/treasury/nexus-mutual.js +++ b/projects/treasury/nexus-mutual.js @@ -10,10 +10,10 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.USDT, "0x2ba592F78dB6436527729929AAf6c908497cB200", // CREAM - ADDRESSES.ethereum.USDC, // USDC - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.SAFE, ], ownTokens: [nxm, wNxm], owners: [communityFund, treasury], diff --git a/projects/treasury/push.js b/projects/treasury/push.js index 505349cb51..25aa7ebb90 100644 --- a/projects/treasury/push.js +++ b/projects/treasury/push.js @@ -15,7 +15,7 @@ module.exports = treasuryExports({ "0xAf31Fd9C3B0350424BF96e551d2D1264d8466205", ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.WBTC, - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe" + ADDRESSES.ethereum.SAFE, ], }, }); \ No newline at end of file diff --git a/projects/treasury/railgun.js b/projects/treasury/railgun.js index e3bb995e49..f303f476c7 100644 --- a/projects/treasury/railgun.js +++ b/projects/treasury/railgun.js @@ -29,7 +29,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.cvxCRV, "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0",//wbtc "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3",//mim - ADDRESSES.ethereum.LUSD,//lusd + ADDRESSES.ethereum.LUSD, "0x090185f2135308BaD17527004364eBcC2D37e5F6",//spell ADDRESSES.ethereum.BUSD, "0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0",//albt @@ -42,7 +42,7 @@ module.exports = treasuryExports({ "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E",//ilv ADDRESSES.ethereum.MKR, "0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed",//tsuka - "0x853d955acef822db058eb8505911ed77f175b99e",//frax + ADDRESSES.ethereum.FRAX, "0x2223bF1D7c19EF7C06DAB88938EC7B85952cCd89",//kxa "0x0f2d719407fdbeff09d87557abb7232601fd9f29",//syn "0x7aE1D57b58fA6411F32948314BadD83583eE0e8C",//paper @@ -96,7 +96,7 @@ module.exports = treasuryExports({ "0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b",//avax "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39",//link "0xfe712251173A2cd5F5bE2B46Bb528328EA3565E1",//mvi - ADDRESSES.polygon.WMATIC_2,//wmatic + ADDRESSES.polygon.WMATIC_2, "0x752d59604d72b6DC44196f4A39A3f07779417407",//methmoon "0x8f006D1e1D9dC6C98996F50a4c810F17a47fBF19",//nsfw ADDRESSES.fantom.renBTC, diff --git a/projects/treasury/redacted.js b/projects/treasury/redacted.js index 1e37dbb158..0dcf99dcbd 100644 --- a/projects/treasury/redacted.js +++ b/projects/treasury/redacted.js @@ -13,10 +13,10 @@ module.exports = treasuryExports({ ethereum: { tokens: [ nullAddress, - ADDRESSES.ethereum.USDT, // USDT + ADDRESSES.ethereum.USDT, "0x2ba592F78dB6436527729929AAf6c908497cB200", // CREAM - ADDRESSES.ethereum.USDC, // USDC - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.SAFE, "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", ADDRESSES.ethereum.DAI, "0xaCe78D9BaB82b6B4783120Dba82aa10B040A14D9", @@ -29,9 +29,9 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - ADDRESSES.optimism.OP, // USDT + ADDRESSES.optimism.OP, "0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151", // DHT - ADDRESSES.optimism.USDC, // USDC + ADDRESSES.optimism.USDC, "0x3f56e0c36d275367b8c502090edf38289b3dea0d", // QI "0x97513e975a7fa9072c72c92d8000b0db90b163c5", //BEETS "0x39fde572a18448f8139b7788099f0a0740f51205", //OATH @@ -44,7 +44,7 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDC, "0x10393c20975cf177a3513071bc110f7962cd67da", // JONES ], owners: [treasury6ARB], diff --git a/projects/treasury/ribbon.js b/projects/treasury/ribbon.js index c9a23759be..899bc9c364 100644 --- a/projects/treasury/ribbon.js +++ b/projects/treasury/ribbon.js @@ -12,18 +12,18 @@ module.exports = treasuryExports({ tokens: [ // Ethereum Assets nullAddress, - ADDRESSES.ethereum.WSTETH, // wstETH - ADDRESSES.ethereum.LIDO, // LDO - ADDRESSES.ethereum.WETH, // WETH - ADDRESSES.ethereum.WBTC, // WBTC - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.RETH, // rETH - ADDRESSES.ethereum.STETH, // stETH + ADDRESSES.ethereum.WSTETH, + ADDRESSES.ethereum.LIDO, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.RETH, + ADDRESSES.ethereum.STETH, "0xba100000625a3754423978a60c9317c58a424e3D", // BAL "0x4d224452801ACEd8B2F0aebE155379bb5D594381", // APE "0x090185f2135308BaD17527004364eBcC2D37e5F6", // SPELL - ADDRESSES.ethereum.UNI, // UNI - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.UNI, + ADDRESSES.ethereum.SAFE, "0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE", // yvUSDC "0x25751853Eab4D0eB3652B5eB6ecB102A2789644B", // rETH-THETA ], diff --git a/projects/treasury/stakedao.js b/projects/treasury/stakedao.js index c7b262bb6c..2245cf2157 100644 --- a/projects/treasury/stakedao.js +++ b/projects/treasury/stakedao.js @@ -8,25 +8,25 @@ const arbitrumTreasury = "0xfdb1157ac847d334b8912df1cd24a93ee22ff3d0" const ethTokens = [ nullAddress, - ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDC, "0x31429d1856aD1377A8A0079410B297e1a9e214c2", // ANGLE - ADDRESSES.ethereum.CRV, // CRV + ADDRESSES.ethereum.CRV, "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", // 3CRV "0xc2544A32872A91F4A553b404C6950e89De901fdb", // FPIS "0xba100000625a3754423978a60c9317c58a424e3D", // BAL "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", // ALCX - ADDRESSES.ethereum.WETH, // WETH + ADDRESSES.ethereum.WETH, "0x65Ef703f5594D2573eb71Aaf55BC0CB548492df4", // MULTI "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8", // agEUR "0xcAfE001067cDEF266AfB7Eb5A286dCFD277f3dE5", // PSP "0x4104b135DBC9609Fc1A9490E61369036497660c8", // APW - ADDRESSES.ethereum.LINK, // LINK + ADDRESSES.ethereum.LINK, "0x579CEa1889991f68aCc35Ff5c3dd0621fF29b0C9", // IQ - ADDRESSES.ethereum.AAVE, // AAVE + ADDRESSES.ethereum.AAVE, "0x1b40183EFB4Dd766f11bDa7A7c3AD8982e998421", // VSP "0x6f80310CA7F2C654691D1383149Fa1A57d8AB1f8", // SILO "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", // FRAX3CRV-f - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.SAFE, "0x318C3a9373419aA57c7C8aa53Eef92814e975F51", // 90D-StakeDAO-sdFRAX3CRV-f-0 "0x43E54C2E7b3e294De3A155785F52AB49d87B9922", // asdCRV "0xA13a9247ea42D743238089903570127DdA72fE44", // bb-a-USD diff --git a/projects/treasury/stargate.js b/projects/treasury/stargate.js index e73deed126..b9ddbaa5bf 100644 --- a/projects/treasury/stargate.js +++ b/projects/treasury/stargate.js @@ -18,7 +18,7 @@ module.exports = treasuryExports({ "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", // 3CRV DAI/USDC/USDT "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT ADDRESSES.ethereum.cvxCRV, - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.SAFE, "0xFCc5c47bE19d06BF83eB04298b026F81069ff65b", // yCRV "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", // auraBAl "0xA13a9247ea42D743238089903570127DdA72fE44", // bb-a-USD diff --git a/projects/treasury/sudoswap.js b/projects/treasury/sudoswap.js index f5ff7594ec..902d6e480c 100644 --- a/projects/treasury/sudoswap.js +++ b/projects/treasury/sudoswap.js @@ -16,7 +16,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, - "0x853d955aCEf822Db058eb8505911ED77F175b99e", //frax + ADDRESSES.ethereum.FRAX, "0xb23d80f5FefcDDaa212212F028021B41DEd428CF", //PRIME ], }, diff --git a/projects/treasury/synapse.js b/projects/treasury/synapse.js index e0be92c399..1404982bf3 100644 --- a/projects/treasury/synapse.js +++ b/projects/treasury/synapse.js @@ -33,11 +33,11 @@ module.exports = treasuryExports({ tokens: [ nullAddress, //"0x080F6AEd32Fc474DD5717105Dba5ea57268F46eb",//syn - ADDRESSES.arbitrum.WETH,//weth - ADDRESSES.optimism.DAI,//dai - ADDRESSES.arbitrum.nUSD,//nusd - ADDRESSES.arbitrum.USDT,//tether - ADDRESSES.arbitrum.USDC,//usdc + ADDRESSES.arbitrum.WETH, + ADDRESSES.optimism.DAI, + ADDRESSES.arbitrum.nUSD, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.USDC, ], owners: [arbtreasury, arbtreasury2], ownTokens: [arbSYN] @@ -46,10 +46,10 @@ module.exports = treasuryExports({ tokens: [ nullAddress, //"0x1f1E7c893855525b303f99bDF5c3c05Be09ca251",//syn - ADDRESSES.avax.WAVAX,//wavax - ADDRESSES.avax.DAI,//dai - ADDRESSES.avax.USDC_e,//usdc - ADDRESSES.avax.USDT_e,//tether + ADDRESSES.avax.WAVAX, + ADDRESSES.avax.DAI, + ADDRESSES.avax.USDC_e, + ADDRESSES.avax.USDT_e, ], owners: [avaxTreasury], @@ -58,13 +58,13 @@ module.exports = treasuryExports({ bsc: { tokens: [ nullAddress, - ADDRESSES.bsc.USDC,//usdc - ADDRESSES.bsc.BUSD,//busd - ADDRESSES.fantom.fUSDT,//fusdt - ADDRESSES.bsc.BTCB,//btcb + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.BUSD, + ADDRESSES.fantom.fUSDT, + ADDRESSES.bsc.BTCB, "0x54261774905f3e6E9718f2ABb10ed6555cae308a",//anybtc "0x42F6f551ae042cBe50C739158b4f0CAC0Edb9096",//nrv - ADDRESSES.bsc.USDT,//bsc-usd + ADDRESSES.bsc.USDT, "0x23396cF899Ca06c4472205fC903bDB4de249D6fC",//ustc ], owners: [bscTreasury] @@ -74,8 +74,8 @@ module.exports = treasuryExports({ nullAddress, //"0xE55e19Fb4F2D85af758950957714292DAC1e25B2",//syn "0x74b23882a30290451A17c44f4F05243b6b58C76d",//eth - ADDRESSES.fantom.USDC,//usdc - ADDRESSES.fantom.WFTM,//wftm + ADDRESSES.fantom.USDC, + ADDRESSES.fantom.WFTM, ], owners: [FantomTreasury], ownTokens: [fantomSYN] @@ -90,22 +90,22 @@ module.exports = treasuryExports({ tokens: [ nullAddress, //"0x0f2D719407FdBeFF09D87557AbB7232601FD9F29",//syn - ADDRESSES.ethereum.USDC,//usdc + ADDRESSES.ethereum.USDC, "0x0ab87046fBb341D058F17CBC4c1133F25a20a52f",//gohm - "0x853d955aCEf822Db058eb8505911ED77F175b99e",//frax - ADDRESSES.ethereum.WETH,//weth - ADDRESSES.ethereum.DAI,//dai - ADDRESSES.ethereum.USDT,//tether + ADDRESSES.ethereum.FRAX, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDT, "0x98585dFc8d9e7D48F0b1aE47ce33332CF4237D96",//newo "0x71Ab77b7dbB4fa7e017BC15090b2163221420282",//high - ADDRESSES.ethereum.WBTC,//wbtc + ADDRESSES.ethereum.WBTC, "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F",//sdt "0xBAac2B4491727D78D2b78815144570b9f2Fe8899",//dog "0x02B5453D92B730F29a86A0D5ef6e930c4Cf8860B",//usdb "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8",//ageur "0x0642026E7f0B6cCaC5925b4E7Fa61384250e1701",//h2o "0xb753428af26E81097e7fD17f40c88aaA3E04902c",//sfi - ADDRESSES.ethereum.LINK,//link + ADDRESSES.ethereum.LINK, ], owners: [MainnetTreasury], ownTokens: [mainnetSYN, mainnetsynethLP] @@ -113,9 +113,9 @@ module.exports = treasuryExports({ metis: { tokens: [ nullAddress, - //ADDRESSES.metis.SYN,//syn + //ADDRESSES.metis.SYN, "0xFB21B70922B9f6e3C6274BcD6CB1aa8A0fe20B80",//gohm - ADDRESSES.metis.m_USDC,//usdc + ADDRESSES.metis.m_USDC, ], owners: [MetisTreasury], ownTokens: [metisSYN] @@ -123,7 +123,7 @@ module.exports = treasuryExports({ optimism: { tokens: [ nullAddress, - ADDRESSES.optimism.OP,//op + ADDRESSES.optimism.OP, "0x809DC529f07651bD43A172e8dB6f4a7a0d771036",//neth ], owners: [OptimismTreasury] @@ -131,10 +131,10 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - ADDRESSES.polygon.USDC,//usdc - ADDRESSES.polygon.USDT,//usdt - ADDRESSES.polygon.WMATIC_2,//wmatic - ADDRESSES.polygon.DAI,//dai + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.WMATIC_2, + ADDRESSES.polygon.DAI, "0xd8cA34fd379d9ca3C6Ee3b3905678320F5b45195",//gohm //"0xf8F9efC0db77d8881500bb06FF5D6ABc3070E695",//syn ], diff --git a/projects/treasury/tokemak.js b/projects/treasury/tokemak.js index 267a248281..d5a0b47f5d 100644 --- a/projects/treasury/tokemak.js +++ b/projects/treasury/tokemak.js @@ -5,20 +5,20 @@ const treasury = "0x8b4334d4812C530574Bd4F2763FcD22dE94A969B"; const tokens = [ nullAddress, - ADDRESSES.ethereum.USDC, // USDC - ADDRESSES.ethereum.STETH, // stETH + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.STETH, "0x9C4A4204B79dd291D6b6571C5BE8BbcD0622F050", // TCR "0x4104b135DBC9609Fc1A9490E61369036497660c8", // APW "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237", // Uniswap FXS/FRAX LP - ADDRESSES.ethereum.LIDO, // LDO - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.LIDO, + ADDRESSES.ethereum.SAFE, "0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434", // stkCvxCrv "0x04906695D6D12CF5459975d7C3C03356E4Ccd460", // sOHM ]; const ownTokens = [ - ADDRESSES.ethereum.TOKE, // TOKE + ADDRESSES.ethereum.TOKE, ]; module.exports = treasuryExports({ From 18688589f368174cf669e9d644b2df4438afc790 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 10 Jul 2023 05:17:20 +0100 Subject: [PATCH 1074/1354] add tranchess eth --- projects/tranchessETH/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/tranchessETH/index.js diff --git a/projects/tranchessETH/index.js b/projects/tranchessETH/index.js new file mode 100644 index 0000000000..7d5a7e11d7 --- /dev/null +++ b/projects/tranchessETH/index.js @@ -0,0 +1,10 @@ +const sdk = require("@defillama/sdk") +const token = '0x93ef1Ea305D11A9b2a3EbB9bB4FCc34695292E7d' + +module.exports = { + ethereum: { + tvl: async (_, block) => ({ + [token]: (await sdk.api.erc20.totalSupply({ target: token, block})).output + }) + } +} \ No newline at end of file From 701ef6aa1ddb96ed066ce5c39e6e4358f9cfd840 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 10 Jul 2023 05:29:10 +0100 Subject: [PATCH 1075/1354] delete duplicated project --- projects/tranchessETH/index.js | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 projects/tranchessETH/index.js diff --git a/projects/tranchessETH/index.js b/projects/tranchessETH/index.js deleted file mode 100644 index 7d5a7e11d7..0000000000 --- a/projects/tranchessETH/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const sdk = require("@defillama/sdk") -const token = '0x93ef1Ea305D11A9b2a3EbB9bB4FCc34695292E7d' - -module.exports = { - ethereum: { - tvl: async (_, block) => ({ - [token]: (await sdk.api.erc20.totalSupply({ target: token, block})).output - }) - } -} \ No newline at end of file From e5fdfb3987f95f939533d0238b269828b74b5089 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 10 Jul 2023 08:15:00 +0200 Subject: [PATCH 1076/1354] track level finance treasury --- projects/helper/coreAssets.json | 1 + projects/treasury/level.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 projects/treasury/level.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index d8f2cb7de2..167ba283a4 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -231,6 +231,7 @@ "LINK": "0xf97f4df75117a78c1a5a0dbb814af92458539fb4", "USDT": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", "ARBY": "0x09ad12552ec45f82be90b38dfe7b06332a680864", + "ARB": "0x912ce59144191c1204e64559fe8253a0e49e6548", "MIM": "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a", "renBTC": "0xdbf31df14b66535af65aac99c32e9ea844e14501", "DFL": "0x31635a2a3892daec7c399102676e344f55d20da7", diff --git a/projects/treasury/level.js b/projects/treasury/level.js new file mode 100644 index 0000000000..f08b75afe6 --- /dev/null +++ b/projects/treasury/level.js @@ -0,0 +1,24 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + bsc: { + tokens: [ + "0xb5c42f84ab3f786bca9761240546aa9cec1f8821", + ], + owners: ['0x8BFf27E9Fa1C28934554e6B5239Fb52776573619'], + }, + arbitrum: { + tokens: [ + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.ARB, + "0x502697AF336F7413Bb4706262e7C506Edab4f3B9", + "0xb076f79f8D1477165E2ff8fa99930381FB7d94c1", + "0x5573405636F4b895E511C9C54aAfbefa0E7Ee458", + ], + owners: ['0x635aac65f37a6bbe06a2dde77b0fd2f1748674d4'], + }, +}) \ No newline at end of file From f24185bdb49db4d9602304ba13f28cf57d2a8ec3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 10 Jul 2023 10:14:06 +0200 Subject: [PATCH 1077/1354] fix solanax --- projects/solanax.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/solanax.js b/projects/solanax.js index 7deb202e35..59b5fa2a04 100644 --- a/projects/solanax.js +++ b/projects/solanax.js @@ -15,7 +15,7 @@ module.exports = { misrepresentedTokens: true, methodology: `TVL is fetched by making calls to the Solanax API (https://solanax.org/api/data/)`, solana: { - tvl: fetch, + tvl: () => ({}), } }; \ No newline at end of file From 1f4422469e7c48e05270afad63e31f092500bb4a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 10 Jul 2023 10:23:28 +0200 Subject: [PATCH 1078/1354] add hallmark --- projects/arcadia-finance/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/arcadia-finance/index.js b/projects/arcadia-finance/index.js index ffb07c2bfd..a9d10c7b41 100644 --- a/projects/arcadia-finance/index.js +++ b/projects/arcadia-finance/index.js @@ -5,5 +5,8 @@ module.exports = { "TVL includes ERC-20 tokens that have been supplied as collateral as well as ERC-20 tokens that are supplied by liquidity providers.", optimism: { tvl }, ethereum: { tvl }, - start: 1686391200 // Jun 10 2023 10:00:00 GMT+0000 + start: 1686391200, // Jun 10 2023 10:00:00 GMT+0000 + hallmarks: [ + [Math.floor(new Date('2023-07-10')/1e3), 'Protocol was exploited.'], + ], } \ No newline at end of file From d7d6855599ae27882654ddd0cb49a836e6214f92 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 10 Jul 2023 20:55:39 +0200 Subject: [PATCH 1079/1354] track https://sigmafi.app --- projects/ergodex.js | 18 ++++---------- projects/ergodex/index.js | 12 ---------- projects/ergopad/index.js | 26 +------------------- projects/helper/chain/ergo.js | 45 +++++++++++++++++++++++++++++++++++ projects/sigmafi/index.js | 22 +++++++++++++++++ projects/sigmausd/index.js | 23 +++++++----------- 6 files changed, 81 insertions(+), 65 deletions(-) delete mode 100644 projects/ergodex/index.js create mode 100644 projects/helper/chain/ergo.js create mode 100644 projects/sigmafi/index.js diff --git a/projects/ergodex.js b/projects/ergodex.js index f15973256d..4cbf22d73a 100644 --- a/projects/ergodex.js +++ b/projects/ergodex.js @@ -1,16 +1,8 @@ -const utils = require('./helper/utils'); -const {toUSDTBalances} = require('./helper/balances') - -async function tvl() { - var totalTvl = await utils.fetchURL('https://api.spectrum.fi/v1/amm/platform/stats'); - return toUSDTBalances(totalTvl.data.tvl.value); -} +const { sumTokensExport } = require('./helper/chain/ergo') module.exports = { - misrepresentedTokens: true, - timetravel: false, - ergo:{ - tvl - }, - methodology: `Spectrum Finance TVL is achieved by making a call to its API: https://api.spectrum.fi/v1/amm/platform/stats.` + timetravel: false, + ergo: { + tvl: sumTokensExport({ owner: '5vSUZRZbdVbnk4sJWjg2uhL94VZWRg4iatK9VgMChufzUgdihgvhR8yWSUEJKszzV7Vmi6K8hCyKTNhUaiP8p5ko6YEU9yfHpjVuXdQ4i5p4cRCzch6ZiqWrNukYjv7Vs5jvBwqg5hcEJ8u1eerr537YLWUoxxi1M4vQxuaCihzPKMt8NDXP4WcbN6mfNxxLZeGBvsHVvVmina5THaECosCWozKJFBnscjhpr3AJsdaL8evXAvPfEjGhVMoTKXAb2ZGGRmR8g1eZshaHmgTg2imSiaoXU5eiF3HvBnDuawaCtt674ikZ3oZdekqswcVPGMwqqUKVsGY4QuFeQoGwRkMqEYTdV2UDMMsfrjrBYQYKUBFMwsQGMNBL1VoY78aotXzdeqJCBVKbQdD3ZZWvukhSe4xrz8tcF3PoxpysDLt89boMqZJtGEHTV9UBTBEac6sDyQP693qT3nKaErN8TCXrJBUmHPqKozAg9bwxTqMYkpmb9iVKLSoJxG7MjAj72SRbcqQfNCVTztSwN3cRxSrVtz4p87jNFbVtFzhPg7UqDwNFTaasySCqM', }) + }, } diff --git a/projects/ergodex/index.js b/projects/ergodex/index.js deleted file mode 100644 index 2e4c4247e1..0000000000 --- a/projects/ergodex/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const utils = require("../helper/utils"); - -const api_ergo = "https://api.ergodex.io/v1/amm/platform/stats?"; - -async function fetch() { - const data = (await utils.fetchURL(api_ergo)).data.tvl; - return data.value / 10 ** data.units.currency.decimals; -} - -module.exports = { - fetch, -}; diff --git a/projects/ergopad/index.js b/projects/ergopad/index.js index a4e4335d02..66aaa261b2 100644 --- a/projects/ergopad/index.js +++ b/projects/ergopad/index.js @@ -2,39 +2,15 @@ const utils = require('../helper/utils'); async function staking() { const { data: { 'Total amount staked': totalStaked } } = await utils.fetchURL('https://api.ergopad.io/staking/status/'); - const price = await getErgopadPrice() return { - ergo: totalStaked * price + 'ergo:d71693c49a84fbbecd4908c94813b46514b18b67a99952dc1e6e4791556de413': totalStaked * 1e2 } } -async function getErgopadPrice() { - const { data: { lockedX, lockedY, } } = await utils.fetchURL('https://api.spectrum.fi/v1/amm/pool/d7868533f26db1b1728c1f85c2326a3c0327b57ddab14e41a2b77a5d4c20f4b2/stats'); - let ergQuantity, padQunatity - - const ergId = '0000000000000000000000000000000000000000000000000000000000000000' - if (lockedX.id === ergId) { - ergQuantity = getQuantity(lockedX) - padQunatity = getQuantity(lockedY) - } else { - ergQuantity = getQuantity(lockedY) - padQunatity = getQuantity(lockedX) - } - - function getQuantity({ amount, decimals }) { - return amount / 10 ** decimals - } - - return ergQuantity / padQunatity - -} - module.exports = { - misrepresentedTokens: true, timetravel: false, ergo: { tvl: () => ({}), staking }, - methodology: `Ergopad TVL is achieved by making a call to its API: https://ergopad.io/api/blockchain/tvl/d71693c49a84fbbecd4908c94813b46514b18b67a99952dc1e6e4791556de413 and consists of both staked ergopad tokens.` } diff --git a/projects/helper/chain/ergo.js b/projects/helper/chain/ergo.js new file mode 100644 index 0000000000..1ca8efd45e --- /dev/null +++ b/projects/helper/chain/ergo.js @@ -0,0 +1,45 @@ +const ADDRESSES = require('../coreAssets.json') +const axios = require("axios") +const sdk = require('@defillama/sdk') +const chain = 'ergo' + +const API_HOST = 'https://api.ergoplatform.com/api/v1' + +const nullAddress = ADDRESSES.null + +async function queryTree({ address, params = {}}) { + const { data } = await axios.get(`${API_HOST}/boxes/unspent/byErgoTree/${address}`, { + params, + }) + return data +} + +async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [] }) { + const { data: { confirmed: { nanoErgs, tokens: tokenData}}} = await axios.get(`${API_HOST}/addresses/${address}/balance/total`) + tokenData.push({ tokenId: nullAddress, amount: nanoErgs ?? 0 }) + tokenData.forEach(({ tokenId, amount }) => { + if (tokens.length && !tokens.includes(tokenId)) return; // sum only whitelistedTokens + if (blacklistedTokens.includes(tokenId)) return; // skip blacklisted tokens + sdk.util.sumSingleBalance(balances, tokenId, amount, chain) + }) +} + +async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = [], owner,}) { + if (owner) owners = [owner] + if (tokensAndOwners.length) { + await Promise.all(tokensAndOwners.map(([token, owner]) => sumTokens({ owners: [owner], tokens: [token], balances, blacklistedTokens, }))) + return balances + } + + await Promise.all(owners.map(i => getTokens({ address: i, balances, tokens, blacklistedTokens, }))) + return balances +} + +function sumTokensExport(args) { + return () => sumTokens(args) +} + +module.exports = { + sumTokens, + sumTokensExport, +} \ No newline at end of file diff --git a/projects/sigmafi/index.js b/projects/sigmafi/index.js new file mode 100644 index 0000000000..245d0dbd58 --- /dev/null +++ b/projects/sigmafi/index.js @@ -0,0 +1,22 @@ +const { nullAddress } = require('../helper/tokenMapping') +const { sumTokensExport } = require('../helper/chain/ergo') +const axios = require('axios') + +async function borrowed(_, _b, _cb, { api, }) { + const { data } = await axios.get('https://api.sigmaexplorer.org/sigmafi/loans/ongoing?limit=10000') + data.forEach(({ repayment: { tokenId, amount}}) => { + api.add(tokenId === 'erg' ? nullAddress : tokenId, amount) + }) + return api.getBalances() +} + +module.exports = { + timetravel: false, + ergo: { + tvl: sumTokensExport({ owners: [ + '47r8CNpYJhLaJy9vQAyyhVX7SLu73dg8EDmi9zzei7YWomvTAbNaZMAHdM38TsFoiZfAcKuyrgngD6ZS2uPQktLfFpvypxkRiRi9LswRYd5tk6B5HHDsFNMfLcdqeWT9RDR2SRq1zm2HF9F913aY1gc9gVyeh8PGED2ThKJ2NCG19XhyPqCbgTFY5uTC6RaqpGCdH9p58fD4DWDd46D3EfUXz3XLzqGQvDGXTghkh9UtZ1LB7nFFoPDFc2QVDt6BCtTQwq4Jh9vFfTfBG9q6ReVF5cVX7nA6vXhWjUuHKMd7Zw5anM2u95e', + '2f7L4F3Q9eCjdWRmxSENw18Bw5SPAf3vBaimRqgpWB5JayiqSWG2tvnc6kF8ae8mpYwtZasmVDzmgjbfa8EBTdA1u55yB8ypRZDDFhs6DmhQekuGvzBoViApMyKdAXCPriXMaJWgHxAdjtR7QhXSjdnyozxZ7ApXrQY6hDSX6H2Fg9siuGUQpTQ3oJDa8nScMGdLNK2T5A7oHs', + ] }), + borrowed, + }, +} diff --git a/projects/sigmausd/index.js b/projects/sigmausd/index.js index 6fe990661c..81e46d3f51 100644 --- a/projects/sigmausd/index.js +++ b/projects/sigmausd/index.js @@ -1,17 +1,10 @@ -const utils = require('../helper/utils'); - -async function tvl() { - const {data: { confirmed }} = await utils.fetchURL('https://api.ergoplatform.com/api/v1/addresses/MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX/balance/total'); - - return { - ergo: confirmed.nanoErgs / 1e9 - }; -} +const { nullAddress } = require('../helper/tokenMapping') +const { sumTokensExport } = require('../helper/chain/ergo') module.exports = { - timetravel: false, - ergo:{ - tvl - }, - methodology: `SigmaUSD TVL is calculated by calling the sigmaUSD bank (via the ergo blockchain explorer API), this returns the confirmed total within the contract in nanoERGs` -} \ No newline at end of file + timetravel: false, + ergo: { + tvl: sumTokensExport({ owner: 'MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX', tokens: [nullAddress] }) + }, + methodology: `Spectrum Finance TVL is achieved by making a call to its API: https://api.spectrum.fi/v1/amm/platform/stats.` +} From 508c8d591e15ec479cb5883d54f59560dd0b82f5 Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Mon, 10 Jul 2023 15:39:35 -0400 Subject: [PATCH 1080/1354] Add bsc vaults (#6766) * Addition of Arbitrum vaults and Polygon Retro vaults to TVL calculation * ichifarm: code refactor * Add BNB chain vaults --------- Co-authored-by: Tatyana Stemkovski Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ichifarm/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index 3245a3e22b..9d491c42b5 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -40,6 +40,11 @@ const config = { { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 102858581, }, ], }, + bsc: { + vaultConfigs: [ + { factory: '0xbBB97d634460DACCA0d41E249510Bb741ef46ad3', fromBlock: 29702590, }, + ], + }, polygon: { vaultConfigs: [ { factory: '0x2d2c72c4dc71aa32d64e5142e336741131a73fc0', fromBlock: 25697834, }, From 6b945af1b65daf0713e3bd4cb73b4bd5b132052a Mon Sep 17 00:00:00 2001 From: Rafael Albuquerque <70333411+albuquerque-rafael@users.noreply.github.com> Date: Mon, 10 Jul 2023 15:40:11 -0400 Subject: [PATCH 1081/1354] feat(pirex): add px btrfly vault (#6765) --- projects/pirex/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/pirex/index.js b/projects/pirex/index.js index ce193c685d..47fa8fbbae 100644 --- a/projects/pirex/index.js +++ b/projects/pirex/index.js @@ -7,16 +7,25 @@ const pxGMX = "0x9a592b4539e22eeb8b2a3df679d572c7712ef999"; const pxGLP = "0x0eac365e4d7de0e293078bd771ba7d0ba9a4c892" const GMX = ADDRESSES.arbitrum.GMX; const GLP = "0x4277f8F2c384827B5273592FF7CeBd9f2C1ac258"; +const BTRFLY = "0xc55126051B22eBb829D00368f4B12Bde432de5Da"; +const pxBTRFLY = "0x10978Db3885bA79Bf1Bc823E108085FB88e6F02f"; async function ethereum(ts, block, _, { api }) { const balances = {}; + const chain = "ethereum"; + const { locked: lockedCVX } = await api.call({ abi: abi.balances, target: ADDRESSES.ethereum.vlCVX, params: [PirexCVX], }); + const { output: pxBTRFLYSupply } = await sdk.api.erc20.totalSupply({ + target: pxBTRFLY, + chain + }); sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.CVX, lockedCVX); + sdk.util.sumSingleBalance(balances, BTRFLY, pxBTRFLYSupply, chain); return balances; } From 80b6553b190090537d0974b9da49837d7c9f550a Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 10 Jul 2023 21:41:18 +0200 Subject: [PATCH 1082/1354] Rysk beyond (#6764) * added beyond liquidity pool * added beyond margin pool --- projects/rysk/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/rysk/index.js b/projects/rysk/index.js index 2f65c945eb..f76bef041b 100644 --- a/projects/rysk/index.js +++ b/projects/rysk/index.js @@ -14,8 +14,10 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, balances, tokensAndOwners: [ - [ADDRESSES.arbitrum.USDC, '0xc10b976c671ce9bff0723611f01422acbae100a5'], // LP + [ADDRESSES.arbitrum.USDC, '0xc10b976c671ce9bff0723611f01422acbae100a5'], // LP alpha + ["0xaf88d065e77c8cC2239327C5EDb3A432268e5831", '0x217749d9017cB87712654422a1F5856AAA147b80'], // LP beyond USDC native [ADDRESSES.arbitrum.USDC, '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool + ["0xaf88d065e77c8cC2239327C5EDb3A432268e5831", '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool USDC native [ADDRESSES.arbitrum.WETH, '0xb9F33349db1d0711d95c1198AcbA9511B8269626'], // marginPool ] }) From c93aa16a459f6764274e3b730143bcd4b6d499d6 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Mon, 10 Jul 2023 21:42:28 +0200 Subject: [PATCH 1083/1354] Add Immutable X (#6758) --- projects/dydx/index.js | 2 -- projects/immutablex/index.js | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 projects/immutablex/index.js diff --git a/projects/dydx/index.js b/projects/dydx/index.js index 0189c829c5..eb26b94f88 100644 --- a/projects/dydx/index.js +++ b/projects/dydx/index.js @@ -1,8 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); - const BigNumber = require("bignumber.js"); - const contracts = [ '0x5199071825CC1d6cd019B0D7D42B08106f6CF16D', '0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e', diff --git a/projects/immutablex/index.js b/projects/immutablex/index.js new file mode 100644 index 0000000000..b13c4128c7 --- /dev/null +++ b/projects/immutablex/index.js @@ -0,0 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensExport } = require('../helper/sumTokens'); + +const owners = [ + '0x5FDCCA53617f4d2b9134B29090C87D01058e27e9', +]; + +const tokens = [ + ADDRESSES.null, + ADDRESSES.ethereum.USDC, + "0xeD35af169aF46a02eE13b9d79Eb57d6D68C1749e", // OMI + "0xccC8cb5229B0ac8069C51fd58367Fd1e622aFD97", // GODS +]; + +module.exports = { + ethereum: { tvl: sumTokensExport({ owners, tokens }) }, +}; From 9eb80e3a9144a919ccd63ce49bc7b649f05bd291 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Mon, 10 Jul 2023 21:43:08 +0200 Subject: [PATCH 1084/1354] Track staked ETH in JPEGd treasury (#6761) Start tracking staked ETH coins that are going to be staked in the JPEGd treasury based on PIP-67[1] [1] https://snapshot.org/#/jpeg%E2%80%99d.eth/proposal/0x3d1fe59da03edceceedac15cd5cb30b002dc5a1daa0be4d52ac6fa37bd594d57 --- projects/treasury/jpegd.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index a00f0ea774..1ccd1352bc 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -30,6 +30,10 @@ const treasuryTvl = treasuryExports({ "0x836A808d4828586A69364065A1e064609F5078c7", "0x9848482da3Ee3076165ce6497eDA906E66bB85C5", ADDRESSES.ethereum.vlCVX, + ADDRESSES.ethereum.sfrxETH, + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.WSTETH, + ADDRESSES.ethereum.RETH, lp, lp2, ], From bb493e1ca2345c03d0b6950584d265f054cce402 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 10 Jul 2023 22:01:14 +0200 Subject: [PATCH 1085/1354] fix sigmafi tvl --- projects/sigmafi/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/sigmafi/index.js b/projects/sigmafi/index.js index 245d0dbd58..a0bcac9f17 100644 --- a/projects/sigmafi/index.js +++ b/projects/sigmafi/index.js @@ -16,6 +16,8 @@ module.exports = { tvl: sumTokensExport({ owners: [ '47r8CNpYJhLaJy9vQAyyhVX7SLu73dg8EDmi9zzei7YWomvTAbNaZMAHdM38TsFoiZfAcKuyrgngD6ZS2uPQktLfFpvypxkRiRi9LswRYd5tk6B5HHDsFNMfLcdqeWT9RDR2SRq1zm2HF9F913aY1gc9gVyeh8PGED2ThKJ2NCG19XhyPqCbgTFY5uTC6RaqpGCdH9p58fD4DWDd46D3EfUXz3XLzqGQvDGXTghkh9UtZ1LB7nFFoPDFc2QVDt6BCtTQwq4Jh9vFfTfBG9q6ReVF5cVX7nA6vXhWjUuHKMd7Zw5anM2u95e', '2f7L4F3Q9eCjdWRmxSENw18Bw5SPAf3vBaimRqgpWB5JayiqSWG2tvnc6kF8ae8mpYwtZasmVDzmgjbfa8EBTdA1u55yB8ypRZDDFhs6DmhQekuGvzBoViApMyKdAXCPriXMaJWgHxAdjtR7QhXSjdnyozxZ7ApXrQY6hDSX6H2Fg9siuGUQpTQ3oJDa8nScMGdLNK2T5A7oHs', + '2jMoa21VMLebD9C3j1jXHBCSZitYqMdcqJt7jSKAVwAsVaKifkspA8jfSeRp2dnnQVgjdsXfRDzo4h1hmroTnPsMAB8qiBnyGjStmMxxFirroejmZFgH25zouApdAZtjTERNrvn67QFPGhGRpxopGEZYrQbpj3PmNR4UPyvKkCHzWbkM7cMA2o45RadU4gY6LAoDwvop35QmPsbP2CuETfJPWUKHgDw87wzwPfpBHYxNht3btUuaNB7ifL1To8KotbFKQyRQ3s84vsbed5abchfWhgSkU6HDvJJM9vmt2axcC5P72jEtPsdK19oGw3FsYZp5S9DpKmQRJasDStTRtgBEbD6vnP6orTrje9oJEpvarFdRE9gG1gQKoQdUn5PtssaVhWG3yX67BSyy1mQVkdPq17CrD4di6mhuakBKi9Wn6YTFCvdeLqfSTAaFJPA3uitsqpSkLxNGyqMMtHZ5oahuZ3jVtx3As5N2ZTt835XUYsFE31n3CzfZPvyHCDtahYTRqeCBvPMZw8vdh3a1XtfqNX15AmQy7Jf8W6Y7McsKQVwG5gogXu6XSSCrGn9r2j9m3DBPitUPpEdNqavvxX5Jqrrp2UNLNNfsZZRT26ifnWWa1W5LnjVQVeRFdki5Haf', + '3FdyuY8fqeTtYcsuvTsmsw4ZBGde2cad6hyntGxzSY3rd4JtTwTvK64xp3XJZvYNTijrTMZMQxkFiULuHpq46VFbAiSSHXLe1qy5WXNRELj4tcx6wEPbSDqzDyVbY6wKFQhmvYQT2XjqLJAiBGV9F6f2uXrjXFPzPnXpVeJnWc8ob1wMqbfgBQKdfu24qx3pejkAfAz2hmQQ57xgzGwHCcGyJdad7UxwmDetAUER8iwE32rygGCmqXaVeKGcJ33epYNGpDLPnYUg3Qz7eYuHHb7mAqwkEp6XGE1jWbf8nS7TA1taNpakssbWYN2YmB9NBG8nWNzLhc9QBdqyAn9WQ63Jh1znt2up6sQJR7xnon9ZsYoeo7bErzg4uoJbTLzwjhZBJ9En9bMX72xUb5zhvSSua6CseMMA6s86g2mwrieRwqFM7CGDypy78MzWS1nagUBKLet8LAFFpb6DKBK1h2HpAvLnMbWB7Kp3rJ4be6ed5crNdZTqhbSww96P2KNSZemhwfgAkUFjMJzB2dEG9VNAW1dMk5nBrS8JsRHhYpPqFcJiFtQvcar1ijs2PqsR9k4P41Y99iomfYXkSoA6z612v1U1C19ASVurzuxGP1vNwNyKLceFVTYXbgkgUFX8Z2nwMz6d2TCa4XTpt9daV5sBV88YJgCiYbL5QhxnoTdYRZbxu725jnV7gbnX9FWjLNaXYJubi5u8kPs3MYzSALeUvtfx6wJV1XyBn5DMbvy8XgFFMKyxtUrfU3dAVaZmUZJnYy8Dz6qrf8tyKx3uU7RfosjV7rcAFRDpozznWRfsxZUir5EzcVFQc9NbjB4HdgJxxvUJ9Nr9F8XCQLL89wCTtaNZBFF284qLtrQ', ] }), borrowed, }, From ff384ffd40133801d9cf7392a44d1276f840f34a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 11 Jul 2023 06:19:55 +0100 Subject: [PATCH 1086/1354] comment bsc chain while mpendle is priced --- projects/penpie/config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/penpie/config.js b/projects/penpie/config.js index 1d6d3ee244..31b01d4923 100644 --- a/projects/penpie/config.js +++ b/projects/penpie/config.js @@ -12,12 +12,12 @@ module.exports = { mPENDLE: "0xB688BA096b7Bb75d7841e47163Cd12D18B36A5bF", PENDLE: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", pendleStaking: "0x6DB96BBEB081d2a85E0954C252f2c1dC108b3f81", - }, + },/* bsc: { masterPenpie: "0xb35b3d118c0394e750b4b59d2a2f9307393cd5db", vePENDLE: "0x8A09574b0401A856d89d1b583eE22E8cb0C5530B", mPENDLE: "0x0465aad9da170798433f4ab7fa7ec8b9b9bf0bb1", PENDLE: "0xb3Ed0A426155B79B898849803E3B36552f7ED507", pendleStaking: "0x782d9d67feaa4d1cdf8222d9053c8cba1c3b7982", - }, + },*/ }; From c51757a3249a33607544e81405da4a37d49bd476 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 09:50:01 +0200 Subject: [PATCH 1087/1354] ergo update --- projects/anetabtc/index.js | 29 ++--------------------------- projects/helper/sumTokens.js | 1 + projects/helper/tokenMapping.js | 2 +- projects/milkomeda-djed/index.js | 7 ------- projects/sigmafi/index.js | 2 ++ 5 files changed, 6 insertions(+), 35 deletions(-) diff --git a/projects/anetabtc/index.js b/projects/anetabtc/index.js index 597139bf53..c635356d98 100644 --- a/projects/anetabtc/index.js +++ b/projects/anetabtc/index.js @@ -1,21 +1,4 @@ -const { get } = require('../helper/http') -const { sumTokensExport } = require('../helper/chain/cardano') - -let tokenPrice -const DAY = 24 * 60 * 60 * 1000 -const aDayAgo = new Date() - DAY - -async function getTokenPrice() { - if (!tokenPrice) tokenPrice = _getTokenPrice() - return tokenPrice - - async function _getTokenPrice() { - const data = await get('https://api.ergodex.io/v1/amm/markets?from='+aDayAgo) - const priceObj = data.find(i => i.quoteSymbol === 'NETA' && i.baseSymbol === 'ERG') - if (!priceObj) return 0 - return 1/(priceObj.lastPrice) - } -} +const { sumTokensExport } = require('../helper/sumTokens') module.exports = { timetravel: false, @@ -24,14 +7,6 @@ module.exports = { staking: sumTokensExport({ tokens: ['b34b3ea80060ace9427bda98690a73d33840e27aaa8d6edb7f0c757a634e455441'], owner: 'addr1w8p79rekquuw5kmdg4z36y9gpnm88k5huddwqluk9mjjeqgc3xmss'}) }, ergo: { - staking: async () => { - const api = 'https://api.ergoplatform.com/api/v1/addresses/5ASYVJ2w8tH3bDQx5ZLz6rZUdokD1kmTXSRZ8GfrsAUW4vqy9eg5omtTYVzY22ibHANf7GgSc2E5FiThgo8qXzWpU3RDLohN277hksbAf9yykajXbYPUaXUeMPfSXbS1GdE4y2GoYKaXHR3H57MV5CDZE58YteqWe3XVXzmMvj1192AD7UZ1N6nguRfjgijxEWTrLq2ZrykjRAut2JBGYHanAKn46tYWW3chpxNosXG7ZW2ShDzKju2ttHhfxeZVMBydryuoEya5E9KVagjsfa9E2qPUdLpbh8enppVWcwoQ4GF1ktgzSX32QbfKhfpD23iWQixThUbcCca14FjXDt94GVFPuhAT5tQyiKen863Cq5eRAEgsQ7otX6pWa32Q28sxSF9Az4abwiJKNbFhbhb3cDCs6A45ZnW6aB6AkfwTJSAZ2ZzqqG7LXT4HdxNpdmiwno9sJWxPf2PC4vRhVqBPdxxyCgoodjyutf4UuinSCibhfqdhUJLc1JM8zX9UcD699mChgUZoKE8kXD4soVGSgQD3qfGXC6RP7n8dtowArNLm3H5QJ3EobDCbEgECLHFaHN2BPwwWscAt5eejKeFvkp3CuQ3mqFW7vfQG4n9tTLnshj8cjxnpkBdfFKC83sW8A3AoZAX4K1UrhndfLSFh4w/balance/confirmed' - const data = await get(api) - const tokenData = data.tokens.find(i => i.tokenId === '472c3d4ecaa08fb7392ff041ee2e6af75f4a558810a74b28600549d5392810e8') - return { - // cneta: tokenData.amount * (await getTokenPrice())/(10 ** tokenData.decimals) - cneta: tokenData.amount /(10 ** tokenData.decimals) - } - } + staking: sumTokensExport({ tokens: ['472c3d4ecaa08fb7392ff041ee2e6af75f4a558810a74b28600549d5392810e8'], owner: '5ASYVJ2w8tH3bDQx5ZLz6rZUdokD1kmTXSRZ8GfrsAUW4vqy9eg5omtTYVzY22ibHANf7GgSc2E5FiThgo8qXzWpU3RDLohN277hksbAf9yykajXbYPUaXUeMPfSXbS1GdE4y2GoYKaXHR3H57MV5CDZE58YteqWe3XVXzmMvj1192AD7UZ1N6nguRfjgijxEWTrLq2ZrykjRAut2JBGYHanAKn46tYWW3chpxNosXG7ZW2ShDzKju2ttHhfxeZVMBydryuoEya5E9KVagjsfa9E2qPUdLpbh8enppVWcwoQ4GF1ktgzSX32QbfKhfpD23iWQixThUbcCca14FjXDt94GVFPuhAT5tQyiKen863Cq5eRAEgsQ7otX6pWa32Q28sxSF9Az4abwiJKNbFhbhb3cDCs6A45ZnW6aB6AkfwTJSAZ2ZzqqG7LXT4HdxNpdmiwno9sJWxPf2PC4vRhVqBPdxxyCgoodjyutf4UuinSCibhfqdhUJLc1JM8zX9UcD699mChgUZoKE8kXD4soVGSgQD3qfGXC6RP7n8dtowArNLm3H5QJ3EobDCbEgECLHFaHN2BPwwWscAt5eejKeFvkp3CuQ3mqFW7vfQG4n9tTLnshj8cjxnpkBdfFKC83sW8A3AoZAX4K1UrhndfLSFh4w'}) } } \ No newline at end of file diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index d79a3295f9..79e40ad52c 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -5,6 +5,7 @@ const sdk = require('@defillama/sdk') const helpers = { "eos": require("./chain/eos"), + "ergo": require("./chain/ergo"), "elrond": require("./chain/elrond"), "cardano":require("./chain/cardano"), "algorand":require("./chain/algorand"), diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 2f565faf4d..98a24d9d33 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -17,7 +17,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', ] -const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui'] +const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', ] const distressedAssts = new Set(Object.values({ CRK: '0x065de42e28e42d90c2052a1b49e7f83806af0e1f', diff --git a/projects/milkomeda-djed/index.js b/projects/milkomeda-djed/index.js index 6cf3a6de31..c1ed78e7b8 100644 --- a/projects/milkomeda-djed/index.js +++ b/projects/milkomeda-djed/index.js @@ -1,6 +1,4 @@ const sdk = require('@defillama/sdk'); -const utils = require('../helper/utils'); -const { sumTokensExport } = require("../helper/chain/cardano"); const { transformBalances } = require('../helper/portedTokens'); const abi = require('./abi.json'); @@ -17,11 +15,6 @@ async function tvl(chain, chainBlocks) { return transformBalances(chain, balances); } -async function ergotvl() { - const {data: { confirmed }} = await utils.fetchURL('https://api.ergoplatform.com/api/v1/addresses/MUbV38YgqHy7XbsoXWF5z7EZm524Ybdwe5p9WDrbhruZRtehkRPT92imXer2eTkjwPDfboa1pR3zb3deVKVq3H7Xt98qcTqLuSBSbHb7izzo5jphEpcnqyKJ2xhmpNPVvmtbdJNdvdopPrHHDBbAGGeW7XYTQwEeoRfosXzcDtiGgw97b2aqjTsNFmZk7khBEQywjYfmoDc9nUCJMZ3vbSspnYo3LarLe55mh2Np8MNJqUN9APA6XkhZCrTTDRZb1B4krgFY1sVMswg2ceqguZRvC9pqt3tUUxmSnB24N6dowfVJKhLXwHPbrkHViBv1AKAJTmEaQW2DN1fRmD9ypXxZk8GXmYtxTtrj3BiunQ4qzUCu1eGzxSREjpkFSi2ATLSSDqUwxtRz639sHM6Lav4axoJNPCHbY8pvuBKUxgnGRex8LEGM8DeEJwaJCaoy8dBw9Lz49nq5mSsXLeoC4xpTUmp47Bh7GAZtwkaNreCu74m9rcZ8Di4w1cmdsiK1NWuDh9pJ2Bv7u3EfcurHFVqCkT3P86JUbKnXeNxCypfrWsFuYNKYqmjsix82g9vWcGMmAcu5nagxD4iET86iE2tMMfZZ5vqZNvntQswJyQqv2Wc6MTh4jQx1q2qJZCQe4QdEK63meTGbZNNKMctHQbp3gRkZYNrBtxQyVtNLR8xEY8zGp85GeQKbb37vqLXxRpGiigAdMe3XZA4hhYPmAAU5hpSMYaRAjtvvMT3bNiHRACGrfjvSsEG9G2zY5in2YWz5X9zXQLGTYRsQ4uNFkYoQRCBdjNxGv6R58Xq74zCgt19TxYZ87gPWxkXpWwTaHogG1eps8WXt8QzwJ9rVx6Vu9a5GjtcGsQxHovWmYixgBU8X9fPNJ9UQhYyAWbjtRSuVBtDAmoV1gCBEPwnYVP5GCGhCocbwoYhZkZjFZy6ws4uxVLid3FxuvhWvQrVEDYp7WRvGXbNdCbcSXnbeTrPMey1WPaXX/balance/total'); - return { ergo: confirmed.nanoErgs / 1e9 }; -} - module.exports = { methodology: 'The TVL of each Djed deployment on Milkomeda C1.', milkomeda: { diff --git a/projects/sigmafi/index.js b/projects/sigmafi/index.js index a0bcac9f17..0845f58e59 100644 --- a/projects/sigmafi/index.js +++ b/projects/sigmafi/index.js @@ -18,6 +18,8 @@ module.exports = { '2f7L4F3Q9eCjdWRmxSENw18Bw5SPAf3vBaimRqgpWB5JayiqSWG2tvnc6kF8ae8mpYwtZasmVDzmgjbfa8EBTdA1u55yB8ypRZDDFhs6DmhQekuGvzBoViApMyKdAXCPriXMaJWgHxAdjtR7QhXSjdnyozxZ7ApXrQY6hDSX6H2Fg9siuGUQpTQ3oJDa8nScMGdLNK2T5A7oHs', '2jMoa21VMLebD9C3j1jXHBCSZitYqMdcqJt7jSKAVwAsVaKifkspA8jfSeRp2dnnQVgjdsXfRDzo4h1hmroTnPsMAB8qiBnyGjStmMxxFirroejmZFgH25zouApdAZtjTERNrvn67QFPGhGRpxopGEZYrQbpj3PmNR4UPyvKkCHzWbkM7cMA2o45RadU4gY6LAoDwvop35QmPsbP2CuETfJPWUKHgDw87wzwPfpBHYxNht3btUuaNB7ifL1To8KotbFKQyRQ3s84vsbed5abchfWhgSkU6HDvJJM9vmt2axcC5P72jEtPsdK19oGw3FsYZp5S9DpKmQRJasDStTRtgBEbD6vnP6orTrje9oJEpvarFdRE9gG1gQKoQdUn5PtssaVhWG3yX67BSyy1mQVkdPq17CrD4di6mhuakBKi9Wn6YTFCvdeLqfSTAaFJPA3uitsqpSkLxNGyqMMtHZ5oahuZ3jVtx3As5N2ZTt835XUYsFE31n3CzfZPvyHCDtahYTRqeCBvPMZw8vdh3a1XtfqNX15AmQy7Jf8W6Y7McsKQVwG5gogXu6XSSCrGn9r2j9m3DBPitUPpEdNqavvxX5Jqrrp2UNLNNfsZZRT26ifnWWa1W5LnjVQVeRFdki5Haf', '3FdyuY8fqeTtYcsuvTsmsw4ZBGde2cad6hyntGxzSY3rd4JtTwTvK64xp3XJZvYNTijrTMZMQxkFiULuHpq46VFbAiSSHXLe1qy5WXNRELj4tcx6wEPbSDqzDyVbY6wKFQhmvYQT2XjqLJAiBGV9F6f2uXrjXFPzPnXpVeJnWc8ob1wMqbfgBQKdfu24qx3pejkAfAz2hmQQ57xgzGwHCcGyJdad7UxwmDetAUER8iwE32rygGCmqXaVeKGcJ33epYNGpDLPnYUg3Qz7eYuHHb7mAqwkEp6XGE1jWbf8nS7TA1taNpakssbWYN2YmB9NBG8nWNzLhc9QBdqyAn9WQ63Jh1znt2up6sQJR7xnon9ZsYoeo7bErzg4uoJbTLzwjhZBJ9En9bMX72xUb5zhvSSua6CseMMA6s86g2mwrieRwqFM7CGDypy78MzWS1nagUBKLet8LAFFpb6DKBK1h2HpAvLnMbWB7Kp3rJ4be6ed5crNdZTqhbSww96P2KNSZemhwfgAkUFjMJzB2dEG9VNAW1dMk5nBrS8JsRHhYpPqFcJiFtQvcar1ijs2PqsR9k4P41Y99iomfYXkSoA6z612v1U1C19ASVurzuxGP1vNwNyKLceFVTYXbgkgUFX8Z2nwMz6d2TCa4XTpt9daV5sBV88YJgCiYbL5QhxnoTdYRZbxu725jnV7gbnX9FWjLNaXYJubi5u8kPs3MYzSALeUvtfx6wJV1XyBn5DMbvy8XgFFMKyxtUrfU3dAVaZmUZJnYy8Dz6qrf8tyKx3uU7RfosjV7rcAFRDpozznWRfsxZUir5EzcVFQc9NbjB4HdgJxxvUJ9Nr9F8XCQLL89wCTtaNZBFF284qLtrQ', + '3FdyuY8fqeBRBVN7uhPo71JiPcmugpqdCjG5gakgXSPR7DKEGbXWkwm4dfer46kn8nCbAK1Ycw8svJGj2fMLM2kiA7GsZZdVEqDeR9K3RcVHRUCATB9qo9pf9FmekGVfG6pbzRMNrPp3TaWimHFhZCLUyqukuSaf4h9JuDqJE29hHCtdb8W7AeXTV2kfB18jUpDhCKxET3EnoBTHC1buAg3SdhPiBhVAYJFw5NVfph6kfV37nHn6hdawVrdtLbnC47xgQ7KzeMG9spHbEbn73Mz9bhCdPeqnS75jAQSjokrDLDeQSgKU8aN3Cb4i5oE5MUT9p55ignJnjzJ335UfAiEGve4tbr489sCcZ5sCNeXZEGK1WYWp39RbwdpdsfhyrVNKCpXn9xHsjSPwZVGduc5fanzGDGHEESEJCV1JYzzJ32ai274q1aQMgJuPB3CSvcy4pqcJe2XNKVSMrrwou9VXNrpeNv4DTDcnVSjB8kc6omgSYKaWBjGwaSVs6vuHK9gLfvQrDa3G1EMhfpuM3Vqs2TaHqxjc4XQyGRjJnhhqKwN4td5bo54MXEa8kojxXrXSFbi2DwcVzMQemjzxs1m5VqLv3wjCSzP9wXDEhyFMCsRbfNPTju5j7HVsRf4YBgViG6vXbAvbUcE7bA3nHMpB9SKyuGQZRVabo5899yfJpWyUM1DEwAnPDjoK4v1UYsSvUBHfs6adrHWu6oVDhZBFZZXYMVvmo56jhSXhGYTrecnhPY25a2UV5cN64bPcE3vFnW7Lpvo1nvh8XYGT9bJuP9fn1ohgnKqBwpgnwMEZxoCWHqvSsbyp4SV6nMcA416YCBYrNmwfiwFqmhYYFfAYCFdutEx52xa8E2r', + '3FdyuY8fqvU21gvgv1A5Vo8XkkR4ba8RzyqwDv6ig7466wTwax4fbJc5bJMeGnYrRsvS5uiAisS7gykBJsxYgE4LRuRuKr9KzZn4BtcNeT3Hsw3zncjE7yhzSPKoW7FkbijxtTUoKYXuby5W8TEk9L1kBaDzgKRpG1YahyHVghtJYgMcy3utVjRZXxBqZbij3cZtqSNqk3UZJmTBZKufYT17C5Mae62DckHwk6ZSZi9GVSTvw2xiENo5koKya67JcX4n23WPQ4dCVsEKcQ2cGjETJhSCi4fsvFUteGkayZW9Q4jqkuum3hz3imhdSAyPvhHnRTMEPG7PKvnn4E7hbiPsbTRAd5L8DruVosvQkcyFPXJ8qhaKDrzmcqy4baHzWHN5GRqY1CrFMnSMJTmznHXzdPwm4MfdjHXppvxBsmDTFxoRdGtriafByVmvYtkKmH9pS3agL142ByqKo79yFSWucVQnE6ojfY8gmVb7uwHqxq1Lez2Nxjbupu2tC9hHdYeM3kX3VBYrjTnXP72sv3Gr3eocm383ZGC5Ppa3pB4DSYmtiJ9LdxU85WBA36KzfrLLEsnHj9gRFWwqEfA6akTNgtboo4wQH9HTCSyHRFnu4HZh4fHaLZe6Wg1LrbbTrcEWUaMFaTEaGhKR32KG2Pd75BxVbYeF6LTQ5yfVeSyhvLWBgKD49X6Y2AemNdV2JE62cS42WDFNH7NwJL7Zqrf465mWhJ137rcrzUpm4sGqv3fnVuxcT2bY2AD8UKindPGjSzP9cg8Pey8EqG4c5jZ44D4rbmNSGaVBzm47tvNyEZRNAmhRPhkuvqsMDoNNjAGwUDxQ2XCShQHhdQAMSdTfKiPMGxmqv7n25js', ] }), borrowed, }, From d0915539d97f8a0f8265e45d3965c845b91720c8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 10:04:06 +0200 Subject: [PATCH 1088/1354] penpie: include bsc --- projects/penpie/config.js | 4 ++-- projects/penpie/index.js | 40 +++++++++------------------------------ 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/projects/penpie/config.js b/projects/penpie/config.js index 31b01d4923..1d6d3ee244 100644 --- a/projects/penpie/config.js +++ b/projects/penpie/config.js @@ -12,12 +12,12 @@ module.exports = { mPENDLE: "0xB688BA096b7Bb75d7841e47163Cd12D18B36A5bF", PENDLE: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8", pendleStaking: "0x6DB96BBEB081d2a85E0954C252f2c1dC108b3f81", - },/* + }, bsc: { masterPenpie: "0xb35b3d118c0394e750b4b59d2a2f9307393cd5db", vePENDLE: "0x8A09574b0401A856d89d1b583eE22E8cb0C5530B", mPENDLE: "0x0465aad9da170798433f4ab7fa7ec8b9b9bf0bb1", PENDLE: "0xb3Ed0A426155B79B898849803E3B36552f7ED507", pendleStaking: "0x782d9d67feaa4d1cdf8222d9053c8cba1c3b7982", - },*/ + }, }; diff --git a/projects/penpie/index.js b/projects/penpie/index.js index a353314614..cb783d1ded 100644 --- a/projects/penpie/index.js +++ b/projects/penpie/index.js @@ -1,49 +1,27 @@ -const sdk = require("@defillama/sdk"); -const { staking } = require("../helper/staking"); const MasterMagpieAbi = require("../magpiexyz/abis/masterMagpie.json"); const config = require("./config"); async function tvl(timestamp, block, chainBlocks, { api }) { - const { masterPenpie, pendleStaking, vePENDLE, PENDLE } = config[api.chain]; + const { masterPenpie, pendleStaking, vePENDLE, PENDLE, mPENDLE, } = config[api.chain]; const poolTokens = await api.fetchList({ lengthAbi: MasterMagpieAbi.poolLength, itemAbi: MasterMagpieAbi.registeredToken, target: masterPenpie, }); - - const decimals = await api.multiCall({ - abi: "erc20:decimals", - calls: poolTokens, - }); - - const balances = {}; - poolTokens.push(vePENDLE); - decimals.push("18"); - - const bals = await api.multiCall({ - abi: "erc20:balanceOf", - calls: poolTokens.map((i) => ({ target: i, params: pendleStaking })), - }); - - bals.forEach((v, i) => { - v /= 10 ** (18 - decimals[i]); - sdk.util.sumSingleBalance( - balances, - poolTokens[i] == vePENDLE ? PENDLE : poolTokens[i], - v, - api.chain - ); - }); - - return balances; + const poolInfos = await api.multiCall({ abi: 'function getPoolInfo(address) view returns ( uint256 emission, uint256 allocpoint, uint256 sizeOfPool, uint256 totalPoint)', calls: poolTokens, target: masterPenpie, }) + const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: poolTokens, }) + poolTokens.forEach((token, i) => { + if (symbols[i] === 'vlPenpie' || symbols[i] === 'mPendle' || symbols[i] === 'mPendleOFT') { + token = PENDLE + } + api.add(token, poolInfos[i].sizeOfPool) + }) } Object.keys(config).forEach((chain) => { - const { masterPenpie, mPENDLE } = config[chain]; module.exports[chain] = { doublecounted: true, tvl: tvl, - staking: staking(masterPenpie, mPENDLE), }; }); From 11f29262ad4b9c40a92b1eb4dbb0f943b43d86bb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 10:39:21 +0200 Subject: [PATCH 1089/1354] track https://lab.aerielab.io --- projects/aerie/index.js. | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/aerie/index.js. diff --git a/projects/aerie/index.js. b/projects/aerie/index.js. new file mode 100644 index 0000000000..2740ae3083 --- /dev/null +++ b/projects/aerie/index.js. @@ -0,0 +1,27 @@ +const { sumUnknownTokens } = require('../helper/unknownTokens') + +async function tvl(_, _b, _cb, { api, }) { + const Indexer = '0x0336dfb02ba66ce75f5cc7898c3eafeddc493daf' + let pools = await api.call({ abi: abi.getAllSaaSPools, target: Indexer }) + const isEnabled = await api.multiCall({ abi: abi.poolEnabled, calls: pools }) + pools = pools.filter((_, i) => isEnabled[i]) + const tokens = await api.multiCall({ abi: abi.stakedTokenAddress, calls: pools}) + const poolInfo = await api.multiCall({ abi: abi.pool, calls: pools}) + const bals = poolInfo.map(i => i.totalTokensStaked) + api.addTokens(tokens, bals) + return sumUnknownTokens({ api, useDefaultCoreAssets: true, lps: ['0x412cb411be14ec0ee87c2823f830d33dd37aa8f8']}) +} + +module.exports = { + ethereum: { + tvl: () => ({}), + staking: tvl, + }, +} + +const abi = { + "getAllSaaSPools": "address[]:getAllSaaSPools", + "stakedTokenAddress": "address:stakedTokenAddress", + "pool": "function pool() view returns (address creator, address tokenOwner, uint256 poolTotalSupply, uint256 poolRemainingSupply, uint256 totalTokensStaked, uint256 creationBlock, uint256 perBlockNum, uint256 lockedUntilDate, uint256 lastRewardBlock, uint256 accERC20PerShare, uint256 stakeTimeLockSec, bool isStakedNft, bytes32 website)", + "poolEnabled": "bool:poolEnabled", +} \ No newline at end of file From 06906dd4471ac68411b9f3a80e055a8531881764 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 10:43:13 +0200 Subject: [PATCH 1090/1354] add hallmark --- projects/rodeo/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/rodeo/index.js b/projects/rodeo/index.js index 6357615d1d..a353abdedb 100644 --- a/projects/rodeo/index.js +++ b/projects/rodeo/index.js @@ -20,4 +20,7 @@ async function tvl(_, _b, _cb, { api, }) { module.exports = { arbitrum: { tvl, borrowed, }, methodology: `The TVL shown is the result of subtracting the borrow from the supply for each Rodeo lending pool`, + hallmarks: [ + [Math.floor(new Date('2023-07-11')/1e3), 'Protocol was exploited'], + ], }; From b0458a255e68cd7aa7523f8e4c47d3b25173dffb Mon Sep 17 00:00:00 2001 From: 0xjosaphat <120175614+0xjosaphat@users.noreply.github.com> Date: Tue, 11 Jul 2023 10:43:48 +0200 Subject: [PATCH 1091/1354] added new chain arbitrum (#6770) * added new chain polygon_zkevm * added marker for new chain launch on Polygon zkEVM * added new chain arbitrum --- projects/swapline/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/swapline/index.js b/projects/swapline/index.js index a380e75881..e1b9a93133 100644 --- a/projects/swapline/index.js +++ b/projects/swapline/index.js @@ -4,6 +4,7 @@ const factories = { fantom: '0x640801a6983c109805E928dc7d9794080C21C88E', optimism: '0xd08C98F6409fCAe3E61f3157B4147B6595E60cf3', polygon_zkevm: '0x5A5c0C4832828FF878CE3ab4fEc44d21200b1496', + arbitrum: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', } async function tvl(_, _b, _cb, { api, }) { @@ -31,7 +32,8 @@ async function tvl(_, _b, _cb, { api, }) { module.exports = { hallmarks: [ [1682298000,"Launch on Optimism"], - [1687827600,"Launch on Polygon zkEVM"] + [1687827600,"Launch on Polygon zkEVM"], + [1689037200,"Launch on Arbitrum"] ], methodology: 'We count the token balances in in different liquidity book contracts', fantom:{ @@ -43,4 +45,7 @@ module.exports = { polygon_zkevm:{ tvl, }, + arbitrum:{ + tvl, + }, }; \ No newline at end of file From 43b64fc8a9ebbb70260311b453fb61b8313614f9 Mon Sep 17 00:00:00 2001 From: Maksim Kurbatov <94808996+yungwine@users.noreply.github.com> Date: Tue, 11 Jul 2023 15:44:25 +0700 Subject: [PATCH 1092/1354] add bemo protocol (#6769) * add bemo * remove logs --- projects/bemo/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/bemo/index.js diff --git a/projects/bemo/index.js b/projects/bemo/index.js new file mode 100644 index 0000000000..a829af299b --- /dev/null +++ b/projects/bemo/index.js @@ -0,0 +1,23 @@ +const BigNumber = require("bignumber.js"); +const { post } = require('../helper/http') + +module.exports = { + timetravel: false, + methodology: "stTon", + ton: { + tvl: async () => { + const requestBody = { + "address": "EQDNhy-nxYFgUqzfUzImBEP67JqsyMIcyk2S5_RwNNEYku0k", + "method": "get_full_data", + "stack": [] + } + const response = await post('https://toncenter.com/api/v2/runGetMethod', requestBody) + if (! response.ok) { + throw new Error("Unknown"); + } + const result = response.result + const tonTotalSupply = parseInt(result.stack[1][1], 16) + return {"coingecko:the-open-network": BigNumber(tonTotalSupply).div(1e9).toFixed(0)}; + } + } +} From ed2afdd63babd6b3e4fbbb7e4fe720bc3d1c7bb3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 14:50:05 +0530 Subject: [PATCH 1093/1354] Coinscope (#6771) * Added coinscope project. * Finalized adapter. * refactor coinscope --------- Co-authored-by: geovla93 --- projects/coinscope/index.js | 44 +++++++++++++++++++++++++++++++++++++ projects/helper/utils.js | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 projects/coinscope/index.js diff --git a/projects/coinscope/index.js b/projects/coinscope/index.js new file mode 100644 index 0000000000..773f5391bf --- /dev/null +++ b/projects/coinscope/index.js @@ -0,0 +1,44 @@ + +const { sumUnknownTokens } = require('../helper/unknownTokens') +module.exports = { + misrepresentedTokens: true, + methodology: "TVL is calculated by summing the values of LP tokens held in lockers for a specific network", +}; + +const lockerFactories = { + ethereum: "0x269D4d211CBc9845B006128717eE51b0D6524955", + bsc: "0x269D4d211CBc9845B006128717eE51b0D6524955", + polygon: "0x269D4d211CBc9845B006128717eE51b0D6524955", + avax: "0x269D4d211CBc9845B006128717eE51b0D6524955", + arbitrum: "0x269D4d211CBc9845B006128717eE51b0D6524955", + cronos: "0x269D4d211CBc9845B006128717eE51b0D6524955", + fantom: "0x269D4d211CBc9845B006128717eE51b0D6524955", + telos: "0x269D4d211CBc9845B006128717eE51b0D6524955", + harmony: "0x097f5E933306ad0EbB1c0027B223a3dd153520BE", +} + +Object.keys(lockerFactories).forEach(chain => { + const factory = lockerFactories[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + let fetchLength = 100 + let page = 0 + const tokensAndOwners = [] + let result + do { + result = await api.call({ + abi: abi.getTokens, + target: factory, + params: [true, page, fetchLength, "0x0000000000000000000000000000000000000000",], + }) + tokensAndOwners.push(...result.pageTokens.map(i => i.lockerAddresses.map(j => [i.tokenAddress, j]))) + ++page + } while (result.total === tokensAndOwners) + return sumUnknownTokens({ api, tokensAndOwners: tokensAndOwners.flat(), useDefaultCoreAssets: true }) + } + } +}) + +const abi = { + "getTokens": "function getTokens(bool lp, uint256 page, uint256 pageSize, address token) view returns (tuple(address tokenAddress, uint8 decimals, uint256 totalSupply, bool pair, string pairToken1Name, address pairToken1Address, string pairToken2Name, address pairToken2Address, address pairDexAddress, string tokenName, string tokenSymbol, uint256 totalAmountLocked, uint256 currentAmountLocked, address[] lockerAddresses)[] pageTokens, uint256 total)", +} \ No newline at end of file diff --git a/projects/helper/utils.js b/projects/helper/utils.js index cc95d92fa2..a2243c1740 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -53,7 +53,7 @@ function isLP(symbol, token, chain) { if (!symbol) return false if (token && blacklisted_LPS.includes(token.toLowerCase()) || symbol.includes('HOP-LP-')) return false if (chain === 'bsc' && ['OLP', 'DLP', 'MLP', 'LP', 'Stable-LP'].includes(symbol)) return false - if (chain === 'bsc' && ['WLP', 'FstLP', 'BLP',].includes(symbol)) return true + if (chain === 'bsc' && ['WLP', 'FstLP', 'BLP', 'DsgLP'].includes(symbol)) return true if (chain === 'pulse' && ['PLP', 'PLT'].includes(symbol)) return true if (chain === 'avax' && ['ELP', 'EPT', 'CRL', 'YSL', 'BGL', 'PLP'].includes(symbol)) return true if (chain === 'ethereum' && ['SSLP'].includes(symbol)) return true From 05dac94f3ef481f7d817ae6074a5ecd687897845 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 15:06:48 +0530 Subject: [PATCH 1094/1354] Tenx (#6772) * add: Tenet Network projects: TenX && Tendieswap * add: Tenet Network to chain.json * code refactor --------- Co-authored-by: bulbazavr1024 --- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ projects/tenx-exchange/index.js | 3 +++ 3 files changed, 7 insertions(+) create mode 100644 projects/tenx-exchange/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 9c91550f15..e74b1076e6 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -187,6 +187,7 @@ "sx", "syscoin", "telos", + "tenet", "terra", "terra2", "tezos", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 98a24d9d33..8223b701ac 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -54,6 +54,9 @@ const fixBalancesTokens = { rpg: { '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, }, + tenet: { + '0xd6cb8a253e12893b0cf39ca78f7d858652cca1fe': { coingeckoId: "tenet-1b000f7b-59cb-4e06-89ce-d62b32d362b9", decimals: 18 }, + }, avax: { '0x8fdcf51d1aaeb9f031838ebeb15884a0d5efcda3': { coingeckoId: "wrapped-bitcoin", decimals: 18 }, '0xaa44678304cc1a848bfc31dc013afcc6c9feae11': { coingeckoId: "benqi", decimals: 18 }, diff --git a/projects/tenx-exchange/index.js b/projects/tenx-exchange/index.js new file mode 100644 index 0000000000..4fddb4762c --- /dev/null +++ b/projects/tenx-exchange/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('tenet', '0xbaB158ED71F7FD4AD43b1db1aAc5d0EFA0a8469f') \ No newline at end of file From 62b6f64d6cc9b785c5e6215d6d3b1839b130e6ac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 12:15:28 +0200 Subject: [PATCH 1095/1354] bugfix --- projects/aerie/{index.js. => index.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename projects/aerie/{index.js. => index.js} (100%) diff --git a/projects/aerie/index.js. b/projects/aerie/index.js similarity index 100% rename from projects/aerie/index.js. rename to projects/aerie/index.js From 8606c919351e1775b13f6eaad036768ad5698725 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 12:52:16 +0200 Subject: [PATCH 1096/1354] track swaap-v2 --- projects/swaap-v2/index.js | 27 +++++++++++++++++++++++++++ projects/swaap/index.js | 29 +++++++++++------------------ 2 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 projects/swaap-v2/index.js diff --git a/projects/swaap-v2/index.js b/projects/swaap-v2/index.js new file mode 100644 index 0000000000..a2f7d3325a --- /dev/null +++ b/projects/swaap-v2/index.js @@ -0,0 +1,27 @@ +const { getLogs } = require('../helper/cache/getLogs') + +const config = { + ethereum: { factory: '0x03C01Acae3D0173a93d819efDc832C7C4F153B06', fromBlock: 17598603, }, + polygon: { factory: '0x03C01Acae3D0173a93d819efDc832C7C4F153B06', fromBlock: 44521619, }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0x83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc'], + eventAbi: 'event PoolCreated (address indexed pool)', + onlyArgs: true, + fromBlock, + }) + const pools = logs.map(log => log.pool) + const vault = await api.call({ abi: 'address:getVault', target: factory }) + const poolIds = await api.multiCall({ abi: 'function getPoolId() view returns (bytes32)', calls: pools }) + const data = await api.multiCall({ abi: 'function getPoolTokens(bytes32) view returns (address[] tokens, uint256[] balances, uint256 lastChangeBlock)', calls: poolIds, target: vault }) + data.forEach(({ tokens, balances }) => api.addTokens(tokens, balances)) + } + } +}) \ No newline at end of file diff --git a/projects/swaap/index.js b/projects/swaap/index.js index bf5d6f10ce..a269c0e564 100644 --- a/projects/swaap/index.js +++ b/projects/swaap/index.js @@ -1,7 +1,7 @@ -const { GraphQLClient, gql } = require("graphql-request"); const { sumTokens2 } = require('../helper/unwrapLPs') +const { cachedGraphQuery } = require('../helper/cache') -const configV1 = { +const configV1 = { polygon: { startBlock: 29520285, blockDelay: 30, @@ -18,33 +18,26 @@ const configV1 = { } function tvlFunctionGetterV1(chain) { - - return async function tvlFunction(timestamp, ethBlock, chainBlocks) { - - var graphQLClient = new GraphQLClient(configV1[chain]['theGraph']['endpoint']); - + return async function tvlFunction(timestamp, ethBlock, chainBlocks, { api }) { let block = chainBlocks[chain] if (block) - block = configV1[chain]['startBlock'] + configV1[chain]['blockDelay'] > chainBlocks[chain]['startBlock'] ? - configV1[chain]['startBlock'] : chainBlocks[chain] - configV1[chain]['blockDelay'] // delayed to allow subgraph to update - - const fetchAllPools = gql`query ($block: Int) { ${configV1[chain]['theGraph']['query']} }`; - const results = await graphQLClient.request(fetchAllPools, { - block, + block = configV1[chain]['startBlock'] + configV1[chain]['blockDelay'] > chainBlocks[chain]['startBlock'] ? + configV1[chain]['startBlock'] : chainBlocks[chain] - configV1[chain]['blockDelay'] // delayed to allow subgraph to update + + const fetchAllPools = `query ($block: Int) { ${configV1[chain]['theGraph']['query']} }`; + const results = await cachedGraphQuery('swaaap-v1/' + chain, configV1[chain]['theGraph']['endpoint'], fetchAllPools, { + variables: { block, } }); const toa = results.pools.map(i => i.tokens.map(j => ([j.address, i.id]))).flat() - return sumTokens2({ chain, block, tokensAndOwners: toa, }) - } + return sumTokens2({ api, tokensAndOwners: toa, }) + } } module.exports = { start: 1655130642, // Jun-13-2022 02:30:42 PM +UTC - timetravel: true, - misrepresentedTokens: false, methodology: `The TVL is retrieved using a mix of TheGraph (to get the list of pools) and on-chain (to get the pools' assets balance) calls.`, polygon: { tvl: tvlFunctionGetterV1("polygon"), }, - hallmarks:[] }; From 2075976abeb9b24aec4b3d83ed78a1c76d70f01d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 13:16:21 +0200 Subject: [PATCH 1097/1354] cega: track arbitrum --- projects/cega/evm.js | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/projects/cega/evm.js b/projects/cega/evm.js index 35c5b97843..dee221d9fe 100644 --- a/projects/cega/evm.js +++ b/projects/cega/evm.js @@ -3,9 +3,10 @@ const abi = require("./abi.json"); const maxLeverage = 5; const LOV_SUFFIX = "-lov"; -const CEGA_STATE = "0x0730AA138062D8Cc54510aa939b533ba7c30f26B"; -const CEGA_PRODUCT_VIEWER = "0x31C73c07Dbd8d026684950b17dD6131eA9BAf2C4"; -const usdcAddress = ADDRESSES.ethereum.USDC; +const config = { + ethereum: { CEGA_STATE: "0x0730AA138062D8Cc54510aa939b533ba7c30f26B", CEGA_PRODUCT_VIEWER: '0x31C73c07Dbd8d026684950b17dD6131eA9BAf2C4', usdcAddress: ADDRESSES.ethereum.USDC, }, + arbitrum: { CEGA_STATE: "0xc809B7F21250B1ce0a61b7Fb645AEf5CE7c1B5ed", CEGA_PRODUCT_VIEWER: '0x8c32a5d9f29da36ed68a9d454eda1b374795b6ca', usdcAddress: ADDRESSES.arbitrum.USDC, }, +} // Funds are not lent out const FCN_PURE_OPTIONS_ADDRESSES = [ @@ -23,6 +24,7 @@ const FCN_BOND_AND_OPTIONS_ADDRESSES = [ ]; async function getProducts(api) { + const { CEGA_STATE } = config[api.chain] const productNames = await api.call({ target: CEGA_STATE, abi: abi.getProductNames, }) const LOVProductNames = productNames.filter(v => v.includes(LOV_SUFFIX)) return api.multiCall({ target: CEGA_STATE, abi: abi.products, calls: LOVProductNames }) @@ -42,32 +44,39 @@ function getLOVCalls(lovProducts) { for (const product of lovProducts) for (let i = 2; i < maxLeverage; i++) calls.push([product, i]) - return calls.map(i => ({ params: i})) + return calls.map(i => ({ params: i })) } async function getSumLOVProductDeposits(lovProducts, api) { + const { CEGA_PRODUCT_VIEWER } = config[api.chain] const calls = getLOVCalls(lovProducts) return (await api.multiCall({ target: CEGA_PRODUCT_VIEWER, abi: abi.getLOVVaultMetadata, calls })).map(i => i.map(j => j.underlyingAmount)).flat() } async function getSumLOVProductQueuedDeposits(lovProducts, api) { + const { CEGA_PRODUCT_VIEWER } = config[api.chain] const calls = getLOVCalls(lovProducts) return await api.multiCall({ target: CEGA_PRODUCT_VIEWER, abi: abi.getLOVProductQueuedDeposits, calls }) } async function getEthereumTvl(_, _1, _2, { api }) { + const { usdcAddress } = config[api.chain] const lovProducts = await getProducts(api); - const results = await Promise.all([ - getSumFCNProductDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), - getSumFCNProductQueuedDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), + const calls = [ getSumLOVProductDeposits(lovProducts, api), getSumLOVProductQueuedDeposits(lovProducts, api) - ]); + ] + if (api.chain === 'ethereum') { + calls.push(getSumFCNProductDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), getSumFCNProductQueuedDeposits(FCN_PURE_OPTIONS_ADDRESSES, api)) + } + const results = await Promise.all(calls); const sum = results.flat().flat().reduce((total, currentValue) => total + +currentValue, 0); api.add(usdcAddress, sum) + return api.getBalances() } async function getBorrowedTvl(_, _1, _2, { api }) { + const { usdcAddress } = config[api.chain] const results = await Promise.all([ getSumFCNProductDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api), getSumFCNProductQueuedDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api), @@ -80,5 +89,8 @@ module.exports = { ethereum: { tvl: getEthereumTvl, borrowed: getBorrowedTvl, - } + }, + arbitrum: { + tvl: getEthereumTvl, + }, } \ No newline at end of file From d67753c75e2bb32b64b85995cedb5e3fef999086 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 13:26:44 +0200 Subject: [PATCH 1098/1354] stader: track ETHx --- projects/stader/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/stader/index.js b/projects/stader/index.js index a927826224..758de462c6 100644 --- a/projects/stader/index.js +++ b/projects/stader/index.js @@ -1,3 +1,4 @@ +const { nullAddress } = require('../helper/unwrapLPs') const { fetchURL } = require("../helper/utils") async function hbarTvl(timestamp) { @@ -67,6 +68,14 @@ module.exports = { near: { tvl: nearTvl }, + ethereum: { + tvl: async (_, _1, _2, { api }) => { + return { + [nullAddress]: await api.call({ abi: 'uint256:totalAssets', target: '0xcf5ea1b38380f6af39068375516daf40ed70d299' }) + // [nullAddress]: await api.call({ abi: 'uint256:totalSupply', target: '0xa35b1b31ce002fbf2058d22f30f95d405200a15b' }) + } + } + }, hallmarks:[ [1651881600, "UST depeg"], ] From 154a825986e2e00c4ea19bcc53b8af1c7fa67f04 Mon Sep 17 00:00:00 2001 From: ZkSwapDev <131446232+ZkSwapDev@users.noreply.github.com> Date: Tue, 11 Jul 2023 15:44:37 +0400 Subject: [PATCH 1099/1354] add zk-Swap (#6773) * add zk-swap-dex tvl * to full on-chain adapter --- projects/zk-swap-dex/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/zk-swap-dex/index.js diff --git a/projects/zk-swap-dex/index.js b/projects/zk-swap-dex/index.js new file mode 100644 index 0000000000..ea67a2ab96 --- /dev/null +++ b/projects/zk-swap-dex/index.js @@ -0,0 +1,30 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const FACTORY = '0x91C94381a0F0B7F03d911676bD59d32Bb3410060' +const CHAIN = 'era' + +async function getFactoryLogs(api) { + return getLogs({ + api, + target: FACTORY, + fromBlock: 7891758, + topic: 'PoolCreated(address,address,uint24,int24,address)', + eventAbi: 'event PoolCreated(address indexed token0,address indexed token1,uint24 indexed swapFeeUnits,int24 tickDistance,address pool)', + onlyArgs: true, + }) +} + +async function tvl(timestamp, ethBlock, chainBlocks, { api }) { + const factoryLogs = await getFactoryLogs(api) + let balanceRequests = [] + factoryLogs.forEach(({ token0, token1, pool}) => { + balanceRequests.push([token0, pool]) + balanceRequests.push([token1, pool]) + }) + return sumTokens2({ chain: CHAIN, ethBlock, tokensAndOwners: balanceRequests }) +} + +module.exports = { + era: { tvl, } +} From a3f46775c4c20a77a83343bf3bb16ddcd87bc024 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 13:46:15 +0200 Subject: [PATCH 1100/1354] ergopad: on chain now --- projects/ergopad/index.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/projects/ergopad/index.js b/projects/ergopad/index.js index 66aaa261b2..bf42734328 100644 --- a/projects/ergopad/index.js +++ b/projects/ergopad/index.js @@ -1,16 +1,16 @@ -const utils = require('../helper/utils'); - -async function staking() { - const { data: { 'Total amount staked': totalStaked } } = await utils.fetchURL('https://api.ergopad.io/staking/status/'); - return { - 'ergo:d71693c49a84fbbecd4908c94813b46514b18b67a99952dc1e6e4791556de413': totalStaked * 1e2 - } -} +const { sumTokensExport } = require('../helper/sumTokens') module.exports = { timetravel: false, ergo: { tvl: () => ({}), - staking + staking: sumTokensExport({ + owners: [ + '3eiC8caSy3jiCxCmdsiFNFJ1Ykppmsmff2TEpSsXY1Ha7xbpB923Uv2midKVVkxL3CzGbSS2QURhbHMzP9b9rQUKapP1wpUQYPpH8UebbqVFHJYrSwM3zaNEkBkM9RjjPxHCeHtTnmoun7wzjajrikVFZiWurGTPqNnd1prXnASYh7fd9E2Limc2Zeux4UxjPsLc1i3F9gSjMeSJGZv3SNxrtV14dgPGB9mY1YdziKaaqDVV2Lgq3BJC9eH8a3kqu7kmDygFomy3DiM2hYkippsoAW6bYXL73JMx1tgr462C4d2PE7t83QmNMPzQrD826NZWM2c1kehWB6Y1twd5F9JzEs4Lmd2qJhjQgGg4yyaEG9irTC79pBeGUj98frZv1Aaj6xDmZvM22RtGX5eDBBu2C8GgJw3pUYr3fQuGZj7HKPXFVuk3pSTQRqkWtJvnpc4rfiPYYNpM5wkx6CPenQ39vsdeEi36mDL8Eww6XvyN4cQxzJFcSymATDbQZ1z8yqYSQeeDKF6qCM7ddPr5g5fUzcApepqFrGNg7MqGAs1euvLGHhRk7UoeEpofFfwp3Km5FABdzAsdFR9', + 'BxjSQHD1hqQFUXbXatkn46YUxM6wVsLkT5HNXJe1N1n3dM2c7X8BtgnLqszJuxoRTnzXzrCrmEjPyLxqstcnW7YkQJ9m7QTmhChBYt1hAFcTWiyVMdaiYYFtxr7qfXKcjsadtfusNhS63ZddciC3wogjrfSE3U2Fy9dhrrKStUVzWhTP22ZuwdDPv8F88WVtdLsu24bbHsv2ntXZJGhvdKnvJL83kJWs9XV582sqUBqX7kL2A5qp6T2Jxgt3gLxcZ99JhUG99YtRsmpuwb94TE5KVTESWA6cD8EdReTbP1kwW77rnJyNfj8KUsy1j7AZuNBUsVBc3oLV4GxYFDvaTNEyNBmGY3dEe8k7UKjUSnqCmYH2QM2cmhtPEdT6UBR9sS4h4YFiGsRHiybjuTSaBUPrzhJ12ESKf8jcaNna9rYprzm8ZnfwNEQFtPJyKfCoJjbwkfsAEirsMcyU3VjPAvKJ2mtu7A3WwXViBSfwUgdCnWkEhdPCRPueAXfN38JXG8HjJeZTPi3VtgcnFobg8Zjp1XtRkTaoj6i4BgyfwCft3sCYgBgmNjXhtFuuozpCiAXWyGMMs5rhJL6FzXsJWiTSML96LdshFnhoPRPi8FXVooURKztnqJowFcpLApL2ou2jfeC4iaxKgtd6zDR6ikFVXMsipVHmBrhan9dheUPnfjeXz9WVPmGLmVkrxnVv', + '5ASYVJ2w8tH3bDMmDvjvgX76HQen4rcvoHku32GsL9js8THW6rduV5VDy8Diue6rRQfp4DRTs4P9bd4vjQY9mmE94A473YeANVps31i76HD88Xk3oeuMgWSgAPuTncfYG1hYHvyT9N7RECUYb64Hs8b2kuvUksccZ841k1vYTmhzseiAFEC59PPnfxxJ4EL9MJ6oHSfwwJBYaZHjmH5eCPkXbJZhGwnTb6bFXvCGGucjDXhmiDPSXGUU49U3r8gN2eTnbh5Dz5mh9eSudUGf7N1fWtT3asz1uruMcdYeNFptD2jFNz6MDTqajZjSEw5guvAmvZAYnfiXwRW8yQyqbd5GcwiuiaPybcGThdf5TLhYxrNeTr1eLn7d1A1RGvySo8dz9vHNrzsK4Zd8HGK4ofhE4kwepyNbYWJY9XbfKVZxqtmLTUHwheNwiJ7cQSCcQUFyMZwAKmjuXdPrVZ9AftFc5gkdqdaC82ya8oMhsbHBV68yorJbp4yyXs8qjaegUfEb4TEZ4L9NsTTsKZxfHB2GypBmssJ6gHGEongQWnca3zqSV9A55SGwbvMQrrkrnvAe9UVsK1h6XwzBj41vF2faVp7Sfp5noqJi9jZjobiCTYA344RW6dNpGS2YpxNzrZtxvyVhmyF9Tms7nSTUMpbF4L', + '5ASYVJ2w8tH3bDQx5ZLz6rZUdokD1kmTXSRZ8GfrsAUW4vqy9eg5omtTYVzY22ibHANf7GgSc2E5FiThgo8qXzWpU3RDLohN277hksbAf9yykajXbYPUaXUeMPfSXbS1GdE4y2GoYKaXHR3H57MV5CDZE58YteqWe3XVXzmMvj1192AD7UZ1N6nguRfjgijxEWTrLq2ZrykjRAut2JBGYHanAKn46tYWW3chpxNosXG7ZW2ShDzKju2ttHhfxeZVMBydryuoEya5E9KVagjsfa9E2qPUdLpbh8enppVWcwoQ4GF1ktgzSX32QbfKhfpD23iWQixThUbcCca14FjXDt94GVFPuhAT5tQyiKen863Cq5eRAEgsQ7otX6pWa32Q28sxSF9Az4abwiJKNbFhbhb3cDCs6A45ZnW6aB6AkfwTJSAZ2ZzqqG7LXT4HdxNpdmiwno9sJWxPf2PC4vRhVqBPdxxyCgoodjyutf4UuinSCibhfqdhUJLc1JM8zX9UcD699mChgUZoKE8kXD4soVGSgQD3qfGXC6RP7n8dtowArNLm3H5QJ3EobDCbEgECLHFaHN2BPwwWscAt5eejKeFvkp3CuQ3mqFW7vfQG4n9tTLnshj8cjxnpkBdfFKC83sW8A3AoZAX4K1UrhndfLSFh4w', + ] + }) }, } From 9bd245fcb2e2c5dbf468cb1b3a5894ba6aff2dc7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 14:20:36 +0200 Subject: [PATCH 1101/1354] track : https://www.sigmao.cc --- projects/sigmao/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/sigmao/index.js diff --git a/projects/sigmao/index.js b/projects/sigmao/index.js new file mode 100644 index 0000000000..1dd00d9f73 --- /dev/null +++ b/projects/sigmao/index.js @@ -0,0 +1,12 @@ +const { sumTokensExport } = require('../helper/sumTokens') + +module.exports = { + timetravel: false, + ergo: { + tvl: sumTokensExport({ + owners: [ + '2PnwgiUqPKQyKUNfDShUyoZZA1DLwJyVE7oNri6JrKVWf4DYCiBqqoBYFfokffDVaV9VYahvpDiKBt9x6NVXBkBm4LgE5tM3wC8w2Qhbhh9Ps7scNLGXJZ3tLbZpu1E78ynnrn4MBouTuE7rqTaG6Su8PwkzhBFBaiQgZKqCtQMVDLrN1D6MzAj5MvbpscFEsLTqaWEemPQvxKfx7rW1HgcMSCccWAvzy4pThM7re7Mqxz9Su7ETX2RRmjGksPpHMJxVV5cGM8ijQwNsdakuMWDVLJ7qL1FEaBAbwEih6CdRZMnkYV6sNS3FFrepAa8G1nA21ztiadoQdT9wKx9gfQZJwPe2DJWoeTEp3s2TezdUiZEM67MFa5RiSEtQwkuYzin8nQ7EMWenqmSQkRfhf1QyfwEsWz7cGYHHndBp8Axg29qp1kEzcGBMUA4f8Qivi3JLPrzqKPZH7neTRYmcbYKxSTFkdzBvbKJSVoKcUaUb4QVvpcdNg4TywHELP4B2JRjhaDJFgKQvZT14owh1xuB62VoMGQhoRg8Xub4fJVJUXVSAVLcZ5qhmrc1X6Gwt5a5Nju1t4R6LFERuBYmfreofxpACfsq3oN83cSQCSiNbkRn4YVQzZqGnrHaDbsDgR2wEJbdYfXpfV6YMX525MfCj6t2TXjBzuhyYtBTnQyp7bRQeQ47kfm77gYU6esdCokZj4ic2jxyxnpm6AHxkM2oDLqrvQ8uXCM4oToNEsr8xJWFRmDsUvtu5zs9dm5HGoyXjfjojCXuE2ZMhgweU4v7N21mzGgKepzpJvWARzjtnFFK7wRpCyZvLcgq9Hf4gqdR82Pmiko5azFBYA3T1su3L1u93RxAZTSWEGJ54uoYnbBWr1mT3GDo8iXPjXQ8S5SCwJ5xzASCsvi1DAtS5jmMWp745TJPekGFE7jovG9eoqzYCgoTmjfuFHv6cuMK6TQpFRKqLGPyprmDEGSVZ2TUTzP7JoJZgQxRHrwoAwFRejgJzgVxdxH9LXCuvYvzy4GnNaTJ3eatzhwpHPQjsMdZjBsEbLujgqWV4je5d719sAb5Lqc3Dd6LRFNqR6SRw8cL3XXKiRnEmVBrTokA91CFnjroSgQ3erYBabNTpQF64Nd4BrLxKVt3UEppfXFghaQ8AjBnkjwjkrnCrwt83XtnehwjMGpJksiy9yYKoP281njgfe2S8y6JQziy9peQoSLuUXtLE9Ptz6MmKgn22NonRxMA7Rzqw8Wywsbs9Z7yrpKyzNJJ89Vwyd9aRWBuPLuNEwoLqv54bUsPoiqeyfSK8RaCpE1WhzoCK6Uncrx9pAbysJNZVesMCu5CydDKTJC3MY7ryLe4cL82PxzTjTTrvGPmdtKfro4jpR3nnPFg8FkJ3YktHKzzJjM91fs283hjVJBxuvugQTbd5SdfTro9fd3P3YPSQPzRhEHY63642x8qez4Q2HnhKeKuvhvTNiN6XpvzFMtu5DN268BYwP3V4qc2btLbEWtVG3QLVL363Q4UiBgscq5XV', + ] + }) + }, +} From 6abbcb67a037645609f460c9445a8b7a6b376b28 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 15:16:16 +0200 Subject: [PATCH 1102/1354] fix broken adapters --- projects/fractal-protocol/index.js | 1 + projects/gearbox/events.js | 15 ++++++++++----- projects/logium/index.js | 9 +++++++-- projects/maskex/index.js | 24 ++++++++++++------------ 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/projects/fractal-protocol/index.js b/projects/fractal-protocol/index.js index e3fb14c1ae..370f575696 100644 --- a/projects/fractal-protocol/index.js +++ b/projects/fractal-protocol/index.js @@ -55,6 +55,7 @@ const abis = { async function getLoanDebt(loans, api) { const loanDebts = await api.multiCall({ abi: abis.getDebt, calls: loans }) loanDebts.map((loanDebt) => api.add(USDC_ETH, loanDebt.principalDebtAmount, { skipChain: true })) + return api.getBalances() } const getEthTvl = async (_, ethBlock, __, { api }) => { diff --git a/projects/gearbox/events.js b/projects/gearbox/events.js index 04c7df166c..08d505fd9f 100644 --- a/projects/gearbox/events.js +++ b/projects/gearbox/events.js @@ -1,9 +1,14 @@ const { api, api2 } = require("@defillama/sdk"); -const { providers } = require("@defillama/sdk/build/general"); const { Contract, BigNumber } = require("ethers"); +const sdk = require('@defillama/sdk') const abi = require("./abi.json"); +function getProvider(network) { + const chainApi = new sdk.ChainApi(network) + return chainApi.provider +} + const getV2CAs = async (creditManager, block) => { const eventsByDate = []; const accounts = new Set(); @@ -11,7 +16,7 @@ const getV2CAs = async (creditManager, block) => { const cm = new Contract( creditManager, abi["creditManagerV2"], - providers["ethereum"] + getProvider("ethereum") ); const creditFacade = await cm.creditFacade(); @@ -31,7 +36,7 @@ const getV2CAs = async (creditManager, block) => { const cc = new Contract( cca, abi["creditConfiguratorV2"], - providers["ethereum"] + getProvider("ethereum") ); const cfs = ( @@ -60,7 +65,7 @@ const getV2CAs = async (creditManager, block) => { const logs = []; for (let cfAddr of cfAddrs) { - const cf = new Contract(cfAddr, abi["filtersV2"], providers["ethereum"]); + const cf = new Contract(cfAddr, abi["filtersV2"], getProvider("ethereum")) const topics = { OpenCreditAccount: cf.interface.getEventTopic("OpenCreditAccount"), @@ -159,7 +164,7 @@ const getV1CAs = async (creditManager, block) => { const cm = new Contract( creditManager, abi["filtersV1"], - providers["ethereum"] + getProvider("ethereum") ); const cf = await cm.creditFilter(); diff --git a/projects/logium/index.js b/projects/logium/index.js index 891b7d9a16..de8afe8321 100644 --- a/projects/logium/index.js +++ b/projects/logium/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { getBlock } = require('../helper/http') -const { providers } = require('@defillama/sdk/build/general'); +const sdk = require('@defillama/sdk') const { Contract } = require('ethers') const { sumTokens2 } = require('../helper/unwrapLPs') const USDC = ADDRESSES.ethereum.USDC @@ -11,9 +11,14 @@ const ONE_DAY = 24 * 60 * 60 const usdcABI = 'event Transfer(address indexed from, address indexed to, uint256 value)' +function getProvider(network) { + const chainApi = new sdk.ChainApi(network) + return chainApi.provider +} + async function tvl(ts, block) { const fromBlock = await getBlock(ts - (31 * ONE_DAY), 'ethereum', {}, false) //33 days ago - const usdcContract = new Contract(USDC, [usdcABI], providers.ethereum) + const usdcContract = new Contract(USDC, [usdcABI], getProvider('ethereum')) const eventFilter = usdcContract.filters.Transfer(LOGIUM_CORE); const events = await usdcContract.queryFilter(eventFilter, fromBlock, block); const owners = [LOGIUM_CORE] diff --git a/projects/maskex/index.js b/projects/maskex/index.js index fe9b6f6268..c8de7c1a07 100644 --- a/projects/maskex/index.js +++ b/projects/maskex/index.js @@ -47,25 +47,25 @@ const config = { }, tron: { owners: [ - 'TArBsHHp4zz1TWgHhZWvNcxD4A7DMbcoMm', + // 'TArBsHHp4zz1TWgHhZWvNcxD4A7DMbcoMm', 'TAv486fty6xRuWHQfhBiMh4jBofSuXJcpV', - 'TBqiQviC27UdWU58qbviJKJwp9b3DygLpY', + // 'TBqiQviC27UdWU58qbviJKJwp9b3DygLpY', 'TDQ7nxDTJBMZkkWcFZKs9KdWzb2vT2drDu', 'TKCbzA6HPnwEDL9M2tAWnqsbD6TXLUD7yy', - 'TLHuz1191oCESWJH6sAq9MS5w66HtHVbyc', + // 'TLHuz1191oCESWJH6sAq9MS5w66HtHVbyc', 'TLqPRfPHieHsMMFaQSMXoXqWD18C97cFqB', - 'TNoQvaDoPHcdoux2Ymt3yUnsSGJgLSXygo', + // 'TNoQvaDoPHcdoux2Ymt3yUnsSGJgLSXygo', 'TSFvf8LZuwy4BKNPdULFD5vaCFMrkiGRme', - 'TTNeMfGyAL1Bb8vw32U8hxJ5Vmju5tsQ8y', - 'TUTh7mS9o2EPgxLbx2bNSwwyoPCsLUmkNq', - 'TUXjobUdiUPvSZmbBVWTcSEqoXzFNr4ZDa', - 'TUrk8EeZgKCQkfd1KhAfRMBmH1Y4NYnaaL', + // 'TTNeMfGyAL1Bb8vw32U8hxJ5Vmju5tsQ8y', + // 'TUTh7mS9o2EPgxLbx2bNSwwyoPCsLUmkNq', + // 'TUXjobUdiUPvSZmbBVWTcSEqoXzFNr4ZDa', + // 'TUrk8EeZgKCQkfd1KhAfRMBmH1Y4NYnaaL', 'TW6DLBY5dyCUVzc3sgKV72HXNT8EkmEUT8', - 'TX39NXuXviJ1be8y1XkbnQ4DfFmp9gRhez', + // 'TX39NXuXviJ1be8y1XkbnQ4DfFmp9gRhez', 'TXiZ9ddXTBUke9PDs5HLXVvvHY68kmC3me', - 'TYp46EYRTHb2grSfjkDFFtakcgedXBHEhh', - 'TYshj25EXjnPB7P5xRGLmFTNPV6HMoZyrq', - 'TUiATx1SGs3TwwKY1atafMvYjrQD8KLiSk', + // 'TYp46EYRTHb2grSfjkDFFtakcgedXBHEhh', + // 'TYshj25EXjnPB7P5xRGLmFTNPV6HMoZyrq', + // 'TUiATx1SGs3TwwKY1atafMvYjrQD8KLiSk', ] }, bitcoin: { From a7a212f3db41e3284e02660c97600b5e097965ed Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 15:21:59 +0200 Subject: [PATCH 1103/1354] update sigmao --- projects/sigmao/index.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/projects/sigmao/index.js b/projects/sigmao/index.js index 1dd00d9f73..01cf185e77 100644 --- a/projects/sigmao/index.js +++ b/projects/sigmao/index.js @@ -5,7 +5,29 @@ module.exports = { ergo: { tvl: sumTokensExport({ owners: [ - '2PnwgiUqPKQyKUNfDShUyoZZA1DLwJyVE7oNri6JrKVWf4DYCiBqqoBYFfokffDVaV9VYahvpDiKBt9x6NVXBkBm4LgE5tM3wC8w2Qhbhh9Ps7scNLGXJZ3tLbZpu1E78ynnrn4MBouTuE7rqTaG6Su8PwkzhBFBaiQgZKqCtQMVDLrN1D6MzAj5MvbpscFEsLTqaWEemPQvxKfx7rW1HgcMSCccWAvzy4pThM7re7Mqxz9Su7ETX2RRmjGksPpHMJxVV5cGM8ijQwNsdakuMWDVLJ7qL1FEaBAbwEih6CdRZMnkYV6sNS3FFrepAa8G1nA21ztiadoQdT9wKx9gfQZJwPe2DJWoeTEp3s2TezdUiZEM67MFa5RiSEtQwkuYzin8nQ7EMWenqmSQkRfhf1QyfwEsWz7cGYHHndBp8Axg29qp1kEzcGBMUA4f8Qivi3JLPrzqKPZH7neTRYmcbYKxSTFkdzBvbKJSVoKcUaUb4QVvpcdNg4TywHELP4B2JRjhaDJFgKQvZT14owh1xuB62VoMGQhoRg8Xub4fJVJUXVSAVLcZ5qhmrc1X6Gwt5a5Nju1t4R6LFERuBYmfreofxpACfsq3oN83cSQCSiNbkRn4YVQzZqGnrHaDbsDgR2wEJbdYfXpfV6YMX525MfCj6t2TXjBzuhyYtBTnQyp7bRQeQ47kfm77gYU6esdCokZj4ic2jxyxnpm6AHxkM2oDLqrvQ8uXCM4oToNEsr8xJWFRmDsUvtu5zs9dm5HGoyXjfjojCXuE2ZMhgweU4v7N21mzGgKepzpJvWARzjtnFFK7wRpCyZvLcgq9Hf4gqdR82Pmiko5azFBYA3T1su3L1u93RxAZTSWEGJ54uoYnbBWr1mT3GDo8iXPjXQ8S5SCwJ5xzASCsvi1DAtS5jmMWp745TJPekGFE7jovG9eoqzYCgoTmjfuFHv6cuMK6TQpFRKqLGPyprmDEGSVZ2TUTzP7JoJZgQxRHrwoAwFRejgJzgVxdxH9LXCuvYvzy4GnNaTJ3eatzhwpHPQjsMdZjBsEbLujgqWV4je5d719sAb5Lqc3Dd6LRFNqR6SRw8cL3XXKiRnEmVBrTokA91CFnjroSgQ3erYBabNTpQF64Nd4BrLxKVt3UEppfXFghaQ8AjBnkjwjkrnCrwt83XtnehwjMGpJksiy9yYKoP281njgfe2S8y6JQziy9peQoSLuUXtLE9Ptz6MmKgn22NonRxMA7Rzqw8Wywsbs9Z7yrpKyzNJJ89Vwyd9aRWBuPLuNEwoLqv54bUsPoiqeyfSK8RaCpE1WhzoCK6Uncrx9pAbysJNZVesMCu5CydDKTJC3MY7ryLe4cL82PxzTjTTrvGPmdtKfro4jpR3nnPFg8FkJ3YktHKzzJjM91fs283hjVJBxuvugQTbd5SdfTro9fd3P3YPSQPzRhEHY63642x8qez4Q2HnhKeKuvhvTNiN6XpvzFMtu5DN268BYwP3V4qc2btLbEWtVG3QLVL363Q4UiBgscq5XV', + "2PnwgiUqPKQyKUNfDShUyoZZA1DLwJyVE7oNri6JrKVWf4DYCiBqqoBYFfokffDVaV9VYahvpDiKBt9x6NVXBkBm4LgE5tM3wC8w2Qhbhh9Ps7scNLGXJZ3tLbZpu1E78ynnrn4MBouTuE7rqTaG6Su8PwkzhBFBaiQgZKqCtQMVDLrN1D6MzAj5MvbpscFEsLTqaWEemPQvxKfx7rW1HgcMSCccWAvzy4pThM7re7Mqxz9Su7ETX2RRmjGksPpHMJxVV5cGM8ijQwNsdakuMWDVLJ7qL1FEaBAbwEih6CdRZMnkYV6sNS3FFrepAa8G1nA21ztiadoQdT9wKx9gfQZJwPe2DJWoeTEp3s2TezdUiZEM67MFa5RiSEtQwkuYzin8nQ7EMWenqmSQkRfhf1QyfwEsWz7cGYHHndBp8Axg29qp1kEzcGBMUA4f8Qivi3JLPrzqKPZH7neTRYmcbYKxSTFkdzBvbKJSVoKcUaUb4QVvpcdNg4TywHELP4B2JRjhaDJFgKQvZT14owh1xuB62VoMGQhoRg8Xub4fJVJUXVSAVLcZ5qhmrc1X6Gwt5a5Nju1t4R6LFERuBYmfreofxpACfsq3oN83cSQCSiNbkRn4YVQzZqGnrHaDbsDgR2wEJbdYfXpfV6YMX525MfCj6t2TXjBzuhyYtBTnQyp7bRQeQ47kfm77gYU6esdCokZj4ic2jxyxnpm6AHxkM2oDLqrvQ8uXCM4oToNEsr8xJWFRmDsUvtu5zs9dm5HGoyXjfjojCXuE2ZMhgweU4v7N21mzGgKepzpJvWARzjtnFFK7wRpCyZvLcgq9Hf4gqdR82Pmiko5azFBYA3T1su3L1u93RxAZTSWEGJ54uoYnbBWr1mT3GDo8iXPjXQ8S5SCwJ5xzASCsvi1DAtS5jmMWp745TJPekGFE7jovG9eoqzYCgoTmjfuFHv6cuMK6TQpFRKqLGPyprmDEGSVZ2TUTzP7JoJZgQxRHrwoAwFRejgJzgVxdxH9LXCuvYvzy4GnNaTJ3eatzhwpHPQjsMdZjBsEbLujgqWV4je5d719sAb5Lqc3Dd6LRFNqR6SRw8cL3XXKiRnEmVBrTokA91CFnjroSgQ3erYBabNTpQF64Nd4BrLxKVt3UEppfXFghaQ8AjBnkjwjkrnCrwt83XtnehwjMGpJksiy9yYKoP281njgfe2S8y6JQziy9peQoSLuUXtLE9Ptz6MmKgn22NonRxMA7Rzqw8Wywsbs9Z7yrpKyzNJJ89Vwyd9aRWBuPLuNEwoLqv54bUsPoiqeyfSK8RaCpE1WhzoCK6Uncrx9pAbysJNZVesMCu5CydDKTJC3MY7ryLe4cL82PxzTjTTrvGPmdtKfro4jpR3nnPFg8FkJ3YktHKzzJjM91fs283hjVJBxuvugQTbd5SdfTro9fd3P3YPSQPzRhEHY63642x8qez4Q2HnhKeKuvhvTNiN6XpvzFMtu5DN268BYwP3V4qc2btLbEWtVG3QLVL363Q4UiBgscq5XV", + "2k6W1ZcLsgRi4qtmdmFKEXGL6c5Av34BGEeRrEVAZ3jeKzmdAX37YEmd3bDCz9sZkf7tP6Pvz6qWcXnWGxvrrBwPqrJvCgubAD4Tn5WipkY5YXz8yjNCzEPaFmwZm6iMqtFsrjhWc9QE91ZYoWzAPU8fmf8uZxuJn37W9wHAV5Qxs96VWiJ1rjo7AiWX7SavEZC3nCBeDKpSnjgsoaq5qEkhYWDYR4woDT6B7ui8o38ZuHS3jDx88YHaMEqKWLHJYmRszJFMM2x1keJgHX3syPXgVfkinmMC8wVACDgQkaALBodq6fcVsF2Hs82XvmaMu4fDkA9uLG9cgw86AWCNWaMhcGp678UPNCeT9hsd31nPaUETxhgyibmonHpJk5if5QPyn3p45rYn3i71Y1Wgq3uvMCwuC682K8vCzc8DVHCDZDQgnBYbbQNypEWAadSWv6iVZU78mjwZ", + "7uQ7MoQgMkyP9RxB7cfAAtZFWUtuWGEWzskvUq4ZxEvh4nDruTmrRQejoBbVmZXirMTmG8Yxk3p7HPQwzziugxxXrQhgXP62k6jrz28xXVz1bNJfACUstvozRNBzcB5MuX2RYMoE", + "V9BoRZ3WH5ph9FY7MfrNc6cNtPdd6PNA7EWZVkHCDiuxwrcore2gCWbGcZWQxpwkqQK5rp78KPSSD1DLV8nqv4RnuN4Q7oaknZxYEN2LbVDcZHNffxSJ1sEVsqDMe418qyzYoaSvTBGZ3e6UkEWVvCb3vzQATAcv7zAEP3dzs7kZEB9prJChfn4mjUNGpdeeh8KwsrxMdS5m2a7TmkkWJ6SH4KCJpVaQikKqUYk2wMKgH3yBLL6h1ZnPtdptL7F6YRkfU74UFxubsFb5ZrkmWV1ynjJ1orz7c8Nzdh44tqCX1VUdFWwqUwH5wXggawXPNwSCR8qLQawkrhAdR7kRBEMGTWMXvwdtXbtQGpiC8VXWbYS77d7L82CYBwqwZk1eYatASrNrzyc7LXpjKZ3JzAibeDJiKSpQzH79QT1F84zvF3pFYR9XTmYMRcNSS3a8qupqyRG1JawzF4FUnnQpsyhTmQYnfQGiG5ob9ymQyBHdj4fE3787VzQRhoJQQtztBhvQye992odAQyJZbdfgF4KetoCPK6t9XTHfKxGtse1yk7MZGUQC4WMF4dyhJnaRcfrJupn4Y5UcqYhMN9vmCUe8BvypkqPUsUW834Q", + "3i4iuEoB17WB96toihTpjxoGeMFs7y9oMkvB5GnAkS8mPpPNbJuyHNAZBaDqURaurt93CwV532VNXe1sQmCGXySDGLmsx8WQXP7yNdK1L5cz3yLfxZkMUKddYejNnyV53CfHs8QVyRLUjCXwZB3g27UxwsirTNvhuWC4F2ACMwvqSgpVuDjpSEb3sgBqjFG1tpJHxHiyss5GyriA2X54Nip35ANWQJ9KXfXRj1ogjoNUNFQVtotPkfA9LdCoF9ZCuT94UpgXw1kj6Ndp1Y3Rvmy4crrxBt2J9PcwiGvq1WNH5PdVyUJCgYpwhHELbZTBABbhmcj92mp3cbBHqF6qHqvG4ZjoVMLvT5CXKkx2u8psshcqTdEqpe2D3QH6CJNAwANv2iY3kaVct2jhjNqNoY7S8RMT18ZCZQo9RJQX26QFyEBwkoAsxAFCLAqVRRosrUUTWkUUfzaVYzMZJ8gsQLAjbD4WcChktk6B5ju3f5WG4YX2C3wjGkFBsvzMcMwZt8ZfiRpdKp7ooJryVBPp8sf4aZEm8GjorjzV58xMzUa2crRLDd3rg3FTAvPzGWKpaaAAbTRyePEy1Vm5B44t32x3Rv2mR9jbCcxfQDAHAXNJSgVFNDaUCUk2p2QqraQNUFY98sg7Q9PDQhbMPafyBpyS2AvPLQgP4JvfB67TzAVwS121FNjdfczHSETJMEf8q7gXXhDu2zuXhVwS4tcWNabS9rJ2hnL7zubi3TsKN2LLboHs8KNkcoGLY1rcfgmhoovF92nK3p5ZP1hE2YyZDwUyH88WydUJiKW4R7GEzqZ88bPfH3NArzenoRQAfWcsbbzBTbMJvfBeRwv57RYUciWqNe2nrAom6GoyFi1RuHfJb3W4Y8d6Ez4Fn17Guhtu7aMBa7uaWaHKuv58wAf8wQgv6vpvETEhPJvSGTaXY4dpbKyGhqSiPSqPNJsLjWMyMWqT9ceQAjhMpitxq7e2TuHCGYzQdvtJbgN2UfyX14r2BEkbzE6xxEQunF3eugXwoG22ymgeFw2qMURmuREV7QThf96o2sQ396tUBJNuMvnbCBRB4XK6wAfiN5xUh3CFwajw5yhtikhjc2o2Uj6yZTPpFcGGqaWbCEBc3zqVQZivXJSp1QcF3eGXqKKJKyoPc4g4uxrk448a1Aa4PugVWqmUsnKyfuh1vd3L6TYNVhmxbnMbkSAm2i31fgMaJTSnodTZ1QcPtvWngZtbwEHEmbAkXppoe9cT9zq42dHAfskPZ4MPysaGbqEKPJcUmNwP4SSa1CtgVShHrtL6Z4CsZJCNjatZXNhSczPE9WDewUZ22jnUaYFQd4ULuJFS5zfU2iBTRvxR83q6xU8NNiWTH2VvquPg2gBJMZS7bRL4AD71Hsq29r3UxNHGDQHDo7YouA7mKUdyLp2BhaZHrbNdbK22T9Y1e6U1D9Y2GGpcX2gu2zEKRe3eLZAiCqC942BoYJob147SoDPmrJcJ1pngJVVg8ECzA3aq8XNWuT3VPbWnyhNAaqqMLYC3RHw7ch7SnUzctq6GVbcEcA11YgvrwVYjnPFLxd9d4MisfARjN", + "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwZSc5pqdMTPQVDMP3GKxr5g5ghBj229zLJFZZcMjVE1amzioJqeLVFLFmw7bN739P39oPBnmoccJXn7YZzx1tEtkzxCwSv8z7Nson6UEt98emWremVCAYbWpHqqiaUnZzSckLENiAnq4MBdSht7xhRf3NjCRLQEsm9RaGs1hUHVXaynNXJt4uoYddFhZPZC3ZqftdtxUNgwBqAdMQPNaEantUL1Q5qum5iW8oiPJFj7yp4dbt5xBab3ot5eb5yGSkR4LtENHJ4x36gheFmRNx51bxYt5cbzPZLrRNyFLRFaABxKmTT9FHAkgZVb1zNKgnviw2nzreC5Gspqsa2L3tRFGdHQCcEYE2QpkUw3ntTfUfPx4sTkYgimMJ23W2t7wWdb7Q9mT1cyRSD5GzDuvXwKHbKvedVgZSvvLVPUgfK7YyHhTPcv2LyZCho1j6NUcXY525FhbfdquMFmcR6JedSRv8hpWHYJ7QcfWG2StoaM5CjzqGzMWtNXJ6hrmK526jzWzBaDVETaN4afb9k6CspQL3zfkpY3Wu7Dhv8APN7nAH2y4b7vZ3DShvQjNBAipXKnim1b5JQaxGJCFPL8FGXXDnJUx5NPZrh4TgDAzBA7c3erqYHBa2Q44pUoZLBnQBzjEsDAQvfaW7AjX5p7HBZoa2aVVf8QpsBkxwqTxs5QQ6q8An9PYXagocKWMaX7zbvjvXrAQ3RLMPgDQtM1LkiSvL9fQVKaBXcnzwUhiPB5S7UNNdBfBdRa9o2rG9Q1EDZkdqZpQgShkHchN93S4BMVFzJa2e3tbCqyyMRTYeZ3Yi24k3EVSp9hYspKjW37ghPajqLnwrXHowM9dm7JUi2g8nnGowTPsu7TuPaEZfFsCkPUwVyHqntArHwdy24tLHuogD2FYxYNMSS4psT3TJxZJWSCvjmYxpsB1pm24rSEmjcRnbLGwC6J42qE8ceKeY3pLHJS9yEYvBkNjWkw8QjT7hejABFMA9QYoir7fAdEDq6feVUvRVgVNKis9Th1L8AGVSDVPJdSwE1p5NGenH2x1giKsDQVfNeQ9FbaZsQFS1d3CUc3fcSahov1nBnMYWr5HwqeeCotCbL3HT1zjfpZmsYA5hyGjthTur8dMKvy7vQoKjK1RoZW11fQr6FmGsFUa2rAj3wdrMfXHbMdU5hPNN6hjDFknmeGNGzXDfRLUWrUptaiU5bQKhkzSH3vyG7CyjCuQo3hpJGbmSmvdV6px4C3jFLfYDhYTT2zieos3yadm12fpB1Nxt15KWXv69EsJCHba4sng1Expk8TgeNp6s6TzerpsxSCu5Ccc6a6L9phLeVqCQ2QqVWqv8Ve3fW9N8JD3bRY5rrvS9MA9j", + "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwafpAmWPbXWv7XFV6Yx1pFJUg3q1Y5Cxi4TvYU5z6yhupeXQZgccL253TQKbFupXLzqSJ8J85QNAM3hFCg4xvVTMsdM5ovVsvSXLNXvM2VX12BR5otuJwfJVBAfYdYwPSecEbeGjoCecPS1SCw4S5rErEE8RcTEG9zn8Gpt1aKyT8qhwvvapksxcfGG5d9wCg8k3La87LW1DT5djS6nMZ9XH5zMUPuxHnMsoEj2UhQYBHyX3nuX3u8qmFb2JVgTUZqbYfu1SGHe6FTsQcTgm9e6zt8KFxzrMAk1QSHhC4FD6jS65cyWhwLVPyF2miB8KeoGLCoUdc26vhen7uDiwyz8gZZMaWcSKrVWsS45xK6vi1BNA5LrLYRE6YM8X69jXkcLdZHUgkph1Z9gjr3tCzYXXrPvUsHBLZhkaUTXzNkcnPj4LFTHLS2NGnxUcnvRDjk5eZ6mj7dDtux3HWqzf8bmdd25e4qALwRXDdmoPRw6L6MMvojHAJndjW4LEPmk3Stkffo1EHAvrDBPcmuhkzJ6tq4Lc355AykviKo7daJgN7aAwBW5r7p21RcHwuth6po9eUsp8nwJhrBDHv9CenPAtpjUTE2twL8YavVFbcDigGqQMcCa4puKsGyCmF2bfbgzSWw7R4gh2i4eb9NmaJXqSceYiqv39HDbVuaQhzhitfXXG9E15sCf7MK95F7zfmepD1uLzUbErGZGWDtDbNnVNA3QR66QkwivhHXQh6Ce1ERp3xAa7V5hNa4HnKZJLgGqNC6fCvLphUp7ZaKX883bSyTUn6VSAL414ss6oxejQT1C2CFrYceSecF8RhLSDBUeqiusYuwPgNrNyn7jyRxs2KuoiJQZpftnvF6rpg5fs5MyzkhG7hG6RwvfMG2D6BxDobHYumQq8ZHGZ9RYeiKZQuScAYsNF7JmondyYXSW97ciyCSGLskSdGxHq6auJzc5SE8bq8tjJUPpgKhqfbew8Ry93oWgSkzUnDjS2Na2UG6mf1RqZcVphH6LWrpvdtJEQXxYcoN8w4ogTMhm8iM5WEXDL4H49iBKpHkqcntyKx7sEGt8xqif4bbgBkpPvFDAz4z6aqTASnjgKdmmBQfbj1cAJTPNtZbnyQBghjohqEyHgnZ3NA5qm1Ax289QHtsiTLvB7c4HhdqRQ5reV3APRxg3Tq9fENvZB9UAeHoc68QkuPqEnFCtK29i94zAVrJiMu6zX1p9NprPf5a1Q3MYspfMicf4zJfeJtZj3Qo4jbnVUkjrtDwuY8Mjaaari32ipiqXFeATYvt7w9J3hky98aK7VZh4v7EdAmMzckYyjxZMhejr3gTj8H1g9nx22R3AzZaAXkZLdvSXArKKhB", + "9YRY2j5TBZrc5T8aJWNMmxmPWyA8JMCRvtTQmpz7QJSJKED1fnjgt2FLEf5tgHZAKtZZvprxZdLx91q4zDYbZ9GCAd8DNmoAJe4fpEU89HMWa7NdQTuisS8vKGN6HuBj73rjzCfUuA6xupEq5ihPSC1a9f7w3GayayDtDJvK9wjdpf8tV18893kPW3sbZAzs6fbvZZhMpaA8EmVg7n1UemRDAv1jxgGs6vHpPb3FUk59Lpa6r41Fp3ycwiGMy53bVUT4V36bFXV9sJyE4dCnyjK4Aik8LVc3u5jymVH1boSC31q6m3PMNsUiWxq8N91m4NXnDZiic5jT8iGou1g9FodbTN5ntExFr4s1rHnJ2FbrSqxPbZnvZFekSBJVFDFXYbGnwpkoEEk4h9RZLHGrUgYqp6sCEWoiUddKyrxgN8fjUZx1aEEV6N5kgrarJpfpUQr8YCreCJH6cxfgSeGxrHKMKK1xdfyhGfHgfgo2XKWmGPySFuSTJDkNAJZ9C5KS3RKCMuFvn2zREw1T26hNQXpwMADnMF3SBqHrqhdzxdaaPBkUXncoFnbVKYTxo4x2WeTCx4Pp7ZeWkWBpGaoAiMwRenqcK9GbXy89Ff3DF9UGunGsGMzch4qwicWviFrqcUhw87CZu9jhEEj7Akw6A6p8JwqEEkM4qFpHCpn3DApvViDpLZoCNGF23uh9ydy2Sa7v71ohFBSojDv6dQexKY9J8UwxuLm6FjLm1XwBwX7Dq678zdKdTHkxekwx2ec1x5Sd48NrVNHSoVNbA4ZQvbh66R6B68S14HE1oDn5yAS39wQxPpe8y2qg25wa4nFKPJRo7LXa9adP7sCyQvrp26PhMp8E5b1VCYNfSu1dBDxEU33JVKyaKB1rU8bQk798wLRtqnGo5Bg3MXVdSmoM6zGrDuzYfmCmKj78yTP59EHLEd9P64hLVB7igtSZWaBipkadxAFUFSvoaNCgG4T7p7wYSXjCPcKnL5BPaEwvdovd9VjpoaahSEac3QRaDFtfduym4GC6ACXW9bs8zYRygGf3hEkyLMwHfEpHJTP6U4cVka8tPDpmZq2L7aBkSYph64SctB8yKe3HuQEQJnUwtuEry3ysbAaS12CQZj7xgGyCqhVQc4Eqe1Dvk7bBmKbxD9ABcMypiMUpciEg4xAutR64TJBbrbvQ5R4JuX6a3oc68WExV8YM8MufyeTyGhn6NBCCttzRJS3FRJjhyrjDDx8C4i7Xcmz1b6SDTiM9MrzffCExDxKabhUucTkxoA5sA6P8aqyw7yGBLZ1aAbULL6vasLqrihF1agY6SSthh9cjjyidZBytvZ5k9v1CsunKBoc4G742RQUzERXhpyikiPEqqRE6tY5oTGaAdaTihTLG54iRkYZgwMen83sXLTUzjSYA4q8A666nVaTHLafdHs7BdgqtrK651ntW7BC8Vm6sSWs2GnyfsPQxWQYhnFGX5ZTaWMnPuSGviXr3xcXRknqcvaGZDW4BuUgzDSdug5npopJw6FLbGKTyXZDsQDKgHTHKr7iegEPazg53RxKBsqiAivNiqz9dBNFwrSwu8eVMkL7thQy4zCgnhY1gxAbasMPMqcNDDWPq7tvS4LR5GTMrxzzzZiszXnSfnJrF8nSrK", + "2wF8sNAVsk5NkVqW2tt34Q6HgnHMX8b3v2TWAsHfkFGHF5ep16ZUU8vTnKdiunuoQEvHJCtXuok1LL77t5izFHkRzF8YVNPYEvT2efNJDKdj4YAxRH3F92XMh8VqFGyikYopcd5rvCcnciHW21fhnEGUdZcvSfjtyCWbywgZc95y7vm6GvTXTxNdaDKJNinkzNiTvbqnzyRFDSWaALpmTGAkaXtaTKVyQrgwieBV6W5xbW23FT1ibjirjLBoEWaKfK9NfQMDDzjYDu82PvRXBFdE8Sxosv5LnwGVXVtAVmrEbgLtb9zXsy8BKjhhUbmZmjjjqcDSKbmQ1R3E4oX7dAnb6wwPHSJQtKUW47KPV8pDAwP89hVTik57VEAJ1Tp2ssUN7CVZc1HhUYrmuoFCfrWPPwoYhCXR8NEUzjvVaZc2JmofKo4huZFTyD4YV1JnUiaAtwMUkBGZdJpQbrMqtUUww5H4p5VtDir8di9tAxBBewkimAc1YeraJUpCbWsb1MJWwk97bkZo9XiMUX2uucVMjq8EnMWcmfcihxRp2omZ4KPLfYMsQaDu8hDc5JL6mdtcPKAyFKV5LW2ALcdbNoqyPEV7AanwnP5SL81PSX6L7PTcCCrkyBcmTp2Vix7DpxVerZpbpxxWsAhGQPu6BnwSioNJDXUNGyMKZKuLnMu3nBqYeSkWf2XUaouTb8N5UE53iAw81gCvHyHjyqUcNhAGW3CCQG7VfQSwVuwqtZyg94kjcS6nuNvtBBottQZi63XbiicmeFPZJNdBUxXpEiTjQmBdTdYmNbL8mDH9XMo7DpRnPGdAYwnUXpreXxAxnAX6yvAbMVCeK5dsx65Cw2jJyeGbKCQ47bjmMPLtsgzvoXqBnHwBNu6eWuEW9q3shTqeyGsgAjxtxA7JLpkGVE5EyVSPuiAqMnsThNXeopshL2sd5a3HS6De4VXtXQLeiUvLYPTpqipiD59obempFrj8DsTWu5oP2LkCGzHErtfSyp8GvVRbg3fm4HGiSbP8DEr3CPGRKgTWkedVGQ3wT5R6ULUsVTXjZXCv7V8McZhCxH1skeJHqEt2u1jbtWmaS9KH4n5J1rp59GFeqZaLSbrsRoXVa495yppeSG2ga52iJcE96ZUTuHVMLTVmTZ9fVnT1JJdbkeRQcTxXNQQnMADBPNgSfbT7cL6JkkrAiRgtA74rUajW2WYFuSEm6bgtfKTmUk8VgADHEQsPhpJ9egibddASoezYw1PuWWWeq4Qp2QcwbwgWbiMRZPyga4eezzZVZP3f1X8kCXWxJapqTBvZtogDfWnoHKKe3kX3yG6ntUZ2BJ9DTj5ZUUwdZP6vrk3C1KTJoMMuXxhVTwGsDoLADx4qGw8aPpdobKBMEfWHjSu5yNbZoffBDvrcsQsxMAC9vbeMmqSYBxvGvqLQNfV5oU3ZHS6uB8ys6ESSGUxS9HLrSMEZrHmwWeYX7XRSE6gYmemWBnWB3wfjSiMk62n6nnhTweEQhj6pAUWGoqdsVCfAyzZ6C9x1JETc2YbGGQJET8kisX6rzqfx4APm786vSK7wyK7xCEMe1JZrdtpTv7xXwxAn3R9NcvJZAyi6Ms5BJYPpEt5bXMn4fYHZD7JrJRHuQiBctnpARmv6PLB9", + "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrgXZwnvkejzWdt2jk7PYbzCeVGQ3vaTrgvZWfMuMxwTiFiRKxb55gkNbcSnojSDzk91mA55CV42K6HtijTjn4JukcwafcfsM26N6eD8s9a5wDhtVFNy6XSU54nvkWo4AcSijRL8hHwAHS2LyhgjDmExQc384TtXhjjmKUqBKumJw77gFX7H7vitSPpSejHLJ7AaNtoZEaVhPEVUnSgTLizkfCEZkSsAufXpRVgHNWtyFRwSqraDfUBkuTgDBYE17N9efhNA5tHAQDKBkFxofR4cQL9veBMPCJSSAPieoXjo5a8J1NXZuyAiub53J2J8g8FBkHtesNZRuEzLQYUtDmDfXhjBSxDV8GDa4eVgbX2FyPddAfen79vXUKWDEzAVnDkHezvmmJSd24in5vYCuhPDhBXvBcXt4NL6MmH5gHcUWzWEcj9pXvs5E2tuFhPJGbyVGqJkqVcAMX6dTA2Y5Y25CHPU9W4SVo7d78avDa1G23nGhGzf59BBQPJiDeCs7Mo5qS7PX6RFFeKtwEnzvhh4vmzbXNcSpE9wvpZyaPaiscmjurti9djNMd74zecbii9bgUKEyh913ze79xcYZ7s1DZEj65u9vHgVmMUbyfzBhnc5FpwpdQF999DEdioYhJ2gioYxA97gLbmzHjqxFt59Gr1STcn9UeDsiwg7rJJRu34DNxbmSa8x51kBQYCFQ5ZQ7izJzk5FVAaNkurJ9wh8tUC8iXzqd1o33rpEb84jrNJdxnkB1JHo6PrkWfHxQ2LvAZSTPS2W9EmmS2qPF5i2Hegd5Mt4zzCSsdAQYBJG2DDoDAyMskZPLqfJ6sgS1i5rRV84CiGsvhoJg6d7xZc6px7oCpxpnMU3iGRm6Z5avWo4dJBbUYRvdtiASxzqz1UqZJA5SGZ5iad6xmQ61dSGT7RpSWnXZ8Cw5nNicUD4YxYy5fckVSZ3qkt8BxBsB2r5Q3x4ZVKMMe9oPE32mgY5YPqVyXnanz4LubBFhKmC4LoyHLxRjuSkvMpBwN8usbwTj87zp4sxomMtcEhKsagTpSg5Qvms46ERpLdsiywQAhLkiMEeychcZtVhXTTPdE2sTVPaaR21uALrLWwsWsss1awugG3eZFdR8oAZF9TTdAjTMViMcuh3GxzhmgoxEeWPuv6TyzkpWQkAZVCafnchPJxa9QfWZ6Z6rt7gAry6d5eHWkm3Qx6aQ5DCaA6JMrjufubGJJK12mHRnEvjU6xNj2PZzj8y6WhSSh3L4ADDLhvprwUT2udQHPgMZmGf5X2oBXyNj9hAmYJi8mdHeHfF6LAAaDmEduWtDGmzy8778Txy1ZT1SjE2Hqhwb5figyFvfMtTY9wdv3nQ7Gws8", + "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrdFPymjFMFAsNt2vSWhVxh7X7KigVuWQCTv5ig7qcM7aShwN9fnpMtLMxh6jadCWN5ozS1oQ4pQxx4E5RzQwen7YJ1j6jisP2XjJ3vSozEzBqeui2kUevVQwDxc2jziAodhPc5PWNS7KaAX7y7m5PmgKU6sSnXnuPj6d85gv95fmEr3w8DpttTf9m2oQP4PERchifotFQPNQ83cod3c2tj7BCHnbFR5JaJadjbbxk3634R6JFJ56v9S3JGuBDZjZ7dVo6giLJUybDBRbN7xYTbzBLHyYdvnhXnczMvRGQ6XNVdNVbHkLheRQGqH6UAsMR6SCkyuW66H8boKGjTbNFigtjj9MGPbyvjAVQUWteUpJY9UqmNYVpbNesm2jx3sVQLy9oEMzmACKkjrM8ZBk31SN9CQLshVfPdBFPJ7Tb82uckM3t4gYXEWJXJGQ1JVMriwHGizXJ6pM8gckfPb5XLo11hu1P1eXz1FDQzqUoNyocTA8TT5KArePH7CjyQUZ5PAKv6d8UbZMcJwdxiwFhRQtthPGbhbWKe6ttwqz3pw3Vm15y4PUeknf6ULzWzvZok31J7fB1QXyPvsPZMZQ4eWGf4mqkM7W5ff5DgtvXaRP2oJCDQueTr1DyApSwXP796uEWyC3M3dczzsS4DJ4fe3Sxz8PSWFoKKZR4KwxJW9gtBdYN8WyEjwouzsf7tGtPQN5y6jF7VS914grZkMMVYBCVqsN58vAazAHVnqdSkoUmrdiHjUp1bFFZhcQLZx3arj1JK9mFGzarthvxJYMUH1aweoAE84o18acqrxNJsQpDGE1oiLrBukBs2j8t7bC5Cb9wJ4NtM9bD4vsC1mSpyW3utVZHDWcZQT9dD18MyDFzkoeQsKFhcNtkGzyUg1yo3uy5YfM79pnMnmGYWxpYz8h75DL8BFESjJvdwGXYzAgo6fGep7t7hzdV18tmrXUhUwW8VFnqjwLki8ceEzvz3bzc9q7c76qrRCt1fe2pAD2ku9HhZhpFBQ13yLR1inM71Brq9KdWD1ek8GSCDmanqmuV7EKf2WtjsuytbBmHs3qQ3djCZPX4hfDfqXbKqfsVfAATRsk9bNCbgGqqfGUgMrkxV6ErMtShWKc8GS6qHYdJ7p6TPu2Xw9SntozAXg3GSFLXrGyFhKQ2z77woL3EG8MTWnbjqJsWPJm6nrPtcZjErwJ5uArH5s5mTPU95mrmRDrtVQDGEZJ363APFmNNiqaJVigkHtiRAnHhStL49xK5pDhzmTxhmEwt6Y2yYmaSqAxoMa7szdwqZaJ1b7qbq3gfSzBdUE9K7HjL2MAoTKu8W7dL8P8j7fXbqLbPN2KHfAGDim6hb2BXsgtXT5D", + "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKreqRNRKK6po3m1zS8u2h5wn3N767WB2LZkGSY5ayo74A9nTXGteRuZU1cv4ZUudsmAHbLR7XCvgKxGPnZ2hfYv2n9c2xqcUyjJaaewAMhrEBw3ZswNvNA9zobF49ak1yXZA2EJ29bghhMk7EFZqSTTP3mfUtunS2aCfhgeMJ7HBgLT6HHxyJfygfvW6XEjNgfnzFGQjfq3SNFCGcbDirQJ36wEbZemFahCLGi5oPLzPzTSgN5i8wpNuyNJoaBGBwpVTnHdTAi6HPda67xTbRxyM6A8pNprveRGPtgxt6Y9CughZatz3M5kxT7GToXUWTuv3zZCceRPkxffcscSWDyHrvPcweWgJS54MA38njaKKBRAQMwvDUt332uiUTNVzSaAHkZzDNUS7JoJjRQZiUGBua9t7YRxoibPCQVPtcFQqy6rJNawrkUyVqDLxDnuCfttCwxzhshtvZf6jtgGm9E6XDw3m6rtFqqyUWFwQrnE4jc1imJf9reFR5pU2VhVLF7GoMb9GTHrXG8x5vLGuDsPb3GNsPDcMMC75a3qpPMtTVRmwAY4gfghhmCAEiFwV2fTZuXVLKJRUUkmTVB9qwFpBpyH5hsjVxG7LshYNBWfqj3a7p8u8nHKS2sVaFaQXsoRcNzmduTrK8mdvBRkQ8XbQGeN1pRiVVoAhTM2sqv2KHMLAmHswtyKFc5JD9jkqNV14SpkXETMQDQLRh8X5j3TvAyMK6kBXdqwwdPzGVGqrjbpsZJd5GtquJSfSDh1mF1yUrq9CaXtxCALBDXNgj4ZrjXUvGeXC7SgjdSubtBcdjWVuBkKUAUurszLnT6j9LY9gvQLn6HhAB661Yy7yqYKRR8KciVrRJtAjp7VN8HjNixdALCx47kGp2wm293FHshLmBRtGMHSsNmHBr6bYUtTsZV6jVRxqaqFo66ZXVjt4ofdhYCAK39ubmaBB7WXajuG5XrZzK7if3HwVUbCjo4cSJwVUzujdQNNtK7DyjunPkBQqwbPKPN1c5kLdYippp6bN2JHZHpEWedfw38dTtDwFavc6qyL3pVAcRjuJWeUeR1Wb8Lsji639VmCLk2Bog4tDbQGzDsmr8h7Q2tCFWmgVameJJWpV5j3JXC1C7GNfWwUAE4JUnYoTssCLTCzPchJJ6UqetZQgmvG2w4zZbz185gNea4HtzkMhgREaZW4tjhkQqRppN3DhgsHXp6KYf1w3YkPEmX1qVED3hQrvghP2Mdt3WbxVYDJcurMTCht2EvdjZyEHTbz13ULFvsUxRCa8XkoGcgq96LRac724fPQrK6dCzQVeUkj5ygvAcXcqMJm5kVhPJRxYTgU8Xho5VPgy14ZbRZ5wBojGu64Mm", + "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrDP659LKft7LjBqo5YaTaYmdThf8X71Ky2sUoLWEWjHX2uKqhdKHnS95Ngwovo4YFWKMA4pWNpy23AaK7a5Qxs8Uc31RgjDekU2Yhm1goy3xk7sa4rwJfQPHKp7CBQn6NcWVW2fwmk6SVYAWDgj1jvK3kWTxmuBFReAVpdMXCTfRALMi7MuWkXVkuYgrgxpScMTfCZgYFApDhCgz1r46Y6AWgcJW1h6HejfatJCQmdujEoTSz76CP3g7VxyZFSmosAyRkQaDAkvud3bgkdawWftihkwUHvrwnHWtRqehsR7ybQa4Fgipfg67nMGJPMLcc2T6fR4Q9jFehDPU1aBaaBprxneHERTSJNUF5ospECkQXK4VDAcZscz4kJkTnbAnrBd8a65Wa6eWUWQqUQUYYP7yPCUeDy3mJDQJm5MKUSM5YxphNucf8a2MT9KdLvR1CM78jgpztiKupoparB2mBw1HAN7uLMZzRgbumypf66w5rLsVp3GbEBWnD2S3UJX1qxQZBGVcDdXviWoBq3V4NiqidruRUfyKhg8yJ74GGJtJfgBrE9oFDQ5zPqTkqkrm7k8b77C7E4G5gp79udZyKn5FbkazdVA8rE8PyzMj2Q8H2qJ1ozapi6y5qi7os4CNwiqxoUMyvQxvqHViL5HzhiejKgnsCMXEm18msPtxrx8yvQPu1u1HCe5PEdNAU9UiGhrDYeTywfbgw2ANaN5BRYwLqb7SYzs4zrBHV889D6VXKVqpTPBWuHhsLpCEMfcbp5qS8tVX5ubHQA1Fip3nWqizMdXi3XY84WwBc1FjyHUnRrJCDa3PRWMzAzqVZyjgCyGQP8iq7baKDAGw4R8DmKXdfVV8dqmYP5479vaqutCWLEz7AtZtQve3zf9MRpQLtXnepmaQ7J9Ddw7BRb4DkjWR2acubBMDcJvEhUJbMr3tqcA9pABzUTyKmYU1igEkCZTDRqArs81yUP5MDJ28vq6TuGrrcm27V4SJcKEdxUG7PATsYWuBSRpk29iCYDz7hG9DxsnSps67HRREZeE6kZRr8rTR3G971eqZys1992fk4LGLZHKUBDyXkyKtCrNCGwt3UeqcJuewxvQj4RZ3z3gZaZiBX7pAS7inpb6jxyio8Grt6poyfwCykhb7NaNYHGZGx9TvYgzcEudXpTuzhFRgg4aTwbhcU4LKuqY8ZQ964MrRTJGmem8HN5LvrpRDpn7R2FERfWoKRsEmrULR2rmjpEe1p4WsVcpxNhT6RZeoBvL33sD4XnV1bstiwiD48RXt9S9UE5YnhjNZPaLkp5v581EZzk4US8JdXCh6X9sSxYjF5G6rA3EEBiXeAgQ9d6pdcTwkdwPXbvHEr2CK", + "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwyCBu5zHeqqGcGzqjvHbHHGH1ev98wMmeqGbeGpi4yL5Cxq4FRgLDUTr5g9C6eTkrwuE31q3YYoDAzwfzFHtq7eognqaiWMR2t25qb69QGDt8wnYKHMNkxNuug7kBM4btmhPm9D6NcLJsCScWueFAtHnQKgHGmUSde9HqsiFXehmXcnJL2rQpWaj12ktNcruUdLKYrpbAGAoUtt7QFD4jwaXmnJZcPPymV6fb3EQ71NMAL6VBaSu8wqhYAXDsfHa2s3pfYxydmWiY4n1FwLYAgfh5mPhK5ukjzxbA7ioBvWpHhDMAnZhGdj6AHKN1zwruyjEmrRHFP9J8bA5nVhgQ7uqQmHatrZY2e3i2Y2jvgWSZrj12b6YKW3pihasyR9fiYLy9MGtV5cvEHCr28h8F2xFStkhkEP3WqkjTXzJYuv8cL6xVMv1gXxM9xpUBkchSw9WWdzn5Mii5xafufEqVTT1L7Zpbr8jr36S4h84HUhcnfton1pEJb3Enr8eCEjcJqvsPZaxjr1pkL3rjvVHRWM1rWYp86LTEGwQgAcAvBdkRw1QoJASBH6uMfZWMgRrAsyNPdbnQHX1Aupku3Gvy115p3VPhPtnC1p1NSW3dUGH94z6MRq3aG1kVpn3vjnG6mKuFWRBqNTHVj2wk7cJgjXsSeydDcVxGNNh9FyCwSjjLnp7H4FNESK8d21TYPfNSha5mPu6UGTRo2oNrSbjHRnFPubYL4te1zzowjb9JsQLGKzfYyXoBgrLmjvcqZcNJuL798eSr1yACpWm5928K13536MV8BTtR8FgNA57WNkzLQkuUi3hEwWEkG8hBK1DRbr5kU35paQ9FuXo6ZDhvokenubw5xXxnXMg59Ky3ce2xA7qnkYTv5orD7ipLybrNL8PN4KHx2te1dhV399qEPChRPegiFL56sDavsJuRjgWCWxkSoKaL3hvR7eLBuMwxdAch21Kpv8w6ex2di9kHFEuXKZCfrEtWfHbp8KbfRcyzkG7DwVMrHygPbvkBNXxnEqvBXqBaA2TJxUQsmvaPRahYtiyUSpSsScQwkTEnEGMNxo6NKFiLn1aiN64b6bfgELNHqV3tJ99WvhvNNQBjRAzJZFk6EeURiJFwYyn4w9MyA8hPeoGAt2WgvqAMYfKfysoiHZdtfnyQJKXAC3Bu2wj3qZ7Su9jzKJgykFsrUvBkcGPTaQ15KWbiyQ5xvBW3xvw53Xw8uFvMb2DM1FdZTguysxxH7HLj3ZfkcDeL1iykH9RVS3mABVFe9XvRss2Qwg5aoqcKfbtDnTSrAGkrJ6iZSgKePbUVDavN479WJhZ9oXLjuQWHhjtTQ6LCeFGZroTksLAppottiXNDy4un", + "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uzBrpBUJWAamhRD8zzu3iHTh6MN2Zb5m64ydpNUrtxhECCWPDaSSRBXu9noUmHTR93e72FFyXcxxCwx2oq2N9S2DyoEoytLur2nzgczMPKqEMvEfy8X19xp2ih7hNCthn2eq6Hqr7pamZUWp7srji587CkDFq11YnKMgXeGweRHQ3hPTGeFCnaLMJ6SAPjj8VgPKQMEhnT6graMsAgZiwqDKiLtPWqVCvzZ8Dhhma62moTthnBc9aw1v4WNsnnX43VnEgWVQFnnxwLp55uv7AAhxHC96EnA3jPrXcUNadm82njEaHBayfzLy9dr9PVjPHhrrsWThvG41ZPa8iP936EA81c2usCtWKqsie71hrmxB5CzJypFV5U6eurtf7t8pZab1tyKCgn4pN6HBPuFTzRV3Tcw5JTsdTbTvG7f7eieC9UrnuxFFwHdUgdGXnfAmND6j3Jrzhxsc9rzbEAv561QdKmns113JZeLNrUdkfvPr7XiSethpQugvUt1n2cNHwj77whEHMFnKgEsygJUD5xVKtG8cxS9AdB4egPe6gwSuGuW63oBXq6xKt8RURmy3FGf865LqBtb5a7Q1SdxnyFWPQsjJrPpE9SsyBfN8VFh3wEsTqNUtfnh6WwJ1SdRFycSJBiuFK7mWHKqJQNNMwrzS88Fw1AJscbvq23AvgCj9RboGSn1CLd4o3yqNec26i9Ucgy2djVxZjjdCsxDhqsRoevNjrNsRbAE3fiddJ2T5pxWg75NYBiCDiqd9hc361MUNy8n8BXA87CdexrstrGUHQd4EW424cVAoV7X48kYmHJnUuegA6aXKCSYvrMhEGPC38trrYgDav4DN1VzKK81nE3zjHS2JrnXGiNsmven8JFH3yEL463iWLw3rZAVGpjSaEHWsgKnf3JLB72kA2D6WrFjv7PWWPuQiKLgsSTxLkcbDcQ7ttdBfzMuMLFPtahcsdYgjrrRc7v99UYEyMnfJMbJqWAAquguZQ1WvacdjdJmRue46QyboQeKE3LuscRk4nhBvubpSPbLcwEaHsjeDaw4PwSEPS5H1GQt9iWvCybjmnFvSB9G5a6udRjJj9nVL8N483uJUfzSfxgLLmEQ57EoJ5rDptM8oAUB1zd12KuE7Bzgg8t1ENoS1MxPWRHKSgmC9qWjpVQHxKwPT1PyRaxsj6CM2ysqiwtEaok7G5d7dMdA7eom8ENB2JoSFSbsii6zSDBGkuzfakJeatfWvYtu9phtvykaWAqbqwk33u9jZkbTP6vjrgoxzGDQkdsdqNKn3BXwihmTwJfG7HQidueaW7LWiq8LR1Hw3X2pWzsrwn8vag48qhBfxm65gvm2wGVVvxthDPMvHeLPuZS", + "9YRY2j5TBZrc5T8aJWNMmxmPWyA8JMCRvtTQmpz7QJSJKED1fnjgt2FLEf5tgHZAKtZZvprxZdLx91q4zDYbZ9GCAd8DNmoAJe4fpEU89HMWa7NdQTuisS8vKGN6HuBj73rjzCfUuA6xupEq5ihPSC1a9f7w3GayayDtDJvK9wjdpf8tV18893kPW3sbZAzs6fbvZZhMpaA8EmVg7n1UemRDAv1jxgGs6vHpPb3FUk59Lpa6r41Fp3ycwiGMy53bVUT4V36bFXV9sJyE4dCnyjK4AiLX8BnsqZm5G1dTdPUaJD4XAi5pQa46XTS2NL7fZpLnUVJcfH6dnLxdmTEuppABYqXiGM5pT9FQbkaSyVxiqfFS4j6Q18pn6WSz1DQfTJRQtt1r4UA79UaimUsoMEoQBXVyVyHCEpChf99faDaasNmZ7Qc7WECCRi7yazV7roJNAb2EmhBMGqXQjokt7NwcRFJPd82k6NtyjEH7CXsVgRQGnZ2Sie6H4A51L71MsbMV5cy6rmJHzXVYe7fGwcZGxVeCmfCQVBz7w1xazYSZAM1HfoFAkggj29Zq1N1rbpBRXQvSZd7d9rLGFwgozk5N7AMmwJY9r7HiQWioZdM9A5tXtKDZ5PnFi163HtyZHaLA5AwnBzpUutigkYwT4KpPdzqFJNtu3heu9ZBJ6VxQZaXHbG2YmZaU84c53dEyLitW2j6V4CXVzDTLxe6briherveYiwvnGiujFCGuisBktzGMcgsA32qR45pnRFRYfWuvPTNjLWUkd3LR4jjEgeds41PW85rD195Lc9Aqtt7X1f9TMBuR5cmyL9enRhEipaSiReynxcp2iofKH63gneHkCbite6sJDojdK5tnUhzPSjZHYeqHfd2eNhWUYdZG9kFjxfBGk8v4jDXvbp7Y7mKPf6VTLieBcJK9ufke3ZonA15pRAG14fzKNxWvYr3qPEWAJUF96sms6TFuLV77PbZigKJooajg6kzDzvPEbwaDg2x9j5rATPEXv2iqUXK1TJLRetS6mckqQQ7CsQy1a2sbQ1UmzxAtmRLU2KFmxkcWiPEqeQvkgMYKksySajBEKybTDimesVoDkPLrNeFQmXr46voqPo9hNaerkZN86zjspPWBLLmGE3BWJVyzMiEGzPPJTDDki4n6hww3zbeiniJqboSTf7DrvaBRL3YiG3RgqfvH3spVjsbDB96KtqLRPqXCQHftnt3jwCSGYW5P1hVGdfQSnq8Re2a8xhkoQpbRaa7B5JEmVyfNXFoLbzwXwdE8f8AeQbchCNgCHJjksdJ7BsRCGTZoqS1VDLSyEC8183XG5rsUHpKWvibbHXDiZ7sfVDa1n3jSFGNpQvKisivXhZR4ETVfYg6bfLdbZyNuY3so8ax1vCTTsanXtxva57PMLPnn44s1BG1nHf6pPFYhBubJTbG7qvGf8TLdthZYVohsoVW6j7kGiMhziupRLJp5oL9joBg1AjxrhT3Z6mkDiJUc8KTvmZjtnbR5E2JEti2WCwabGCi28nnX4hQ5GNGLnRJPyAQwzXTce5HCWjD8qn7L94Uv17cChouKNw7q4A8jp6udJCLGFuF1rdUUBmkjtwQG1vCP6hYe6VmP2mG7s7WP2ctSb7qDdzahSr4qo", + "2RsDz4W1HJ6FBsRyHnBfHFpLfJkeVLAVVc3SN1xCct4EEs88B7jHasKNoPVyer4sLhafNViWaSbsKaNUiqwnb1c7LHF49bKDTZtp5KgC1scYWCJoRLu9Qr8LuzVNmS97QsSV2raZKKMG7e6uyCGAFqn2VCSnBWtUhgHRtg8r1KSnZYd8BpWthL8QMqxSjABYp8oEjCnP69Fg2LugAApCj5YkdJDknYUw4Ph8iAnmzHBRggiazCcRKscYkM6ZySqGUJ8gjtBdnWt5TZQ9rVdoPiRa9z5tVNcwgYQi5WoWdr4Mj9RhPskN63rKBifnAJnnbXCcZdAFKLvQvy1weiY27tWTRD9eLYujw4ZLGh9wFk1er86zCsg1ntyU5CJ638J8y3i3pf4yUhmKC2DhRA1YqMpiukRjxqeiiXVLGMhhWsXRv8N4JHA1N53SzmZmi4Ba1V566SgwGbFaWJQYSNmLSRqgaoKWTuqz4bcG2AYBXoitrrsgraVsh3Nh56KLzeNLPPJTMpnQMS8MKCCoq8XkwdRjf1fd5vmoV43dAAUfez9joYWBZdiCNZfHUCB5PCPjuZJTLXDVcmwEn5ALJurdH6gyUPu57Z9Dd2a2BbQjb9YdHEegaaKn36BJoA3iS32rexEf6uQF4yyhu4N8NBQqoTbBE2BWXAEf81dZ76J6vuc7ZHg53UBW4E4KiymHfbHPfLAU6vLBcuaAemxAP4YgsbU9a7MYR9hMxtdSc4mpcauDT2tEGBT9fMm98wVurk2qXBS47oXNWXDUbQhDMU4DhB2NthU9qkWTvjtsXGdBA44Rogk3FXftUBfYwDR1Sfw9PnNaYaqdqnADhFCe33jGXD3z49bu1htufZRnoHK3QULiUiN6SMgHDhvCjEK7tvuNSTtbjZ8rBxF8FFkHNTD76W8cdkw4bGjPeNnQn7ujGhkD4zvtS14o8bPH6wA8qthaHDHmyvA62R8C7Ybw2L3gwYaKjCnTHuDB2CiFZKvhpVUbmvNXJLMtAJ66J5UjE19JmjcGTEnbSrXCtooYpVntPUFqAjgfddFk2TyNBr8SwhKLSAAPdmN8R21qArCxqoR97968JkQh5SC3kH8b55Kos3KAsFMBbJgek9Cs7DErithUsB4CM4HN275saRSNkREGdRkSKbLmdbER26D8sr6VBdFz7CYRDUoWejhWsG7vgAeWbZPpncCsAQmu9gMirps1aY3xPSm9nfmHFQ67SFzBE4yg2rbBTqbuhQ46yBALRjuAPC1vn1MyrVuagDcoA4NSXVARkCNnipGqUPm55WDDq9zZixSjfVQ2qr3RrDkZJA5ucb67h7hAVQpBJtacer4GCCHseEh2yTip2pYPwn7h9BHAcrkxNNVbmb9iscbVtP7o7dVBCrQCmi59f7QXHhk8rET8JPanWDCJhwnXbmLJUJ4hSUkzVw1LvyFY9qFj4MZegr3HdKr8GzWHnoay9MibfxwMjBH2gUre2bjUtGHgAeMnhMAd17vfaD3aUjUQE4pwXsAGdoeUzn2Yb68vBZs3jqbaktpcm9Uzm8DB5iqR6mp2Vd1y2xXWG8J7bHcUPdR5y9hL2fpPUH7hhR5byJNDHZYnMLLETmF9J6TmEE2k6cABvF9wetw5a38dcpS1EV8WXh8uPpQERn3", + "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uwyFfu8QeAwhd3MwnV7kFhdAXsvoDWj9SsyXtdF9EJhHBmod6E34PmJgQWhp9qEnu1qwQw5Pqaw48EQKoYbME1ceE13vXNcQmWYGTYJT5qVq3wHJEsVWTSQYzSNGcTaDrSonH2b8rmAPGceLLv8Dcp76aw8UbBEUXZSBRnTekkh52GRYJYqHoXf1Pyxqtudu5FUWvxwGkq2ZJDgqLpTkCw9SrkuPQJn8QZErrNqzEaFzS9YbDoHs99SxaX5kmzMt353Q3dcCQe6YE65jjKydFkNCuMEfybDbP3Dk7t8dxhpMcrL1qdh4YhMV3QV1z2Q7qfYNoLbwjMxdqL4ESX7VZTXhJ5MuJ8GMHoqsKiRWz4ge1z474gksy8DXKVKDFisWpNhcL7hvJov7mKj5gjq2xM37fJe79QoKEb8WNywGzAgVsntvKKTtParmkiNtWW9bJMr1ewzW27FBhDzvaXutkXejfJKp7GiHGiLUDkS89Jqy8YnZUwqo7Vus5fgVjxYXJHACHHhGuPPSkKf5PaFDUCJhDLKz7to1djuVeNCJBnDU1JjHVNeznQWL1wmsuurTgWnaCww1raacT8jnxc3rj4v4BYuTfTdgJsY6sPpuX5KHNNjWGyvR3r8R4HhKUJteC7mv6czPTPTSy38rKkNW5pT9NxUQQgpSxFt3s6Py9sPvovSj8xU3Cu9RhvPQQnsKfEWZDXs6BfhTdVaXWB8CYz4Reeb2CCwtdYbyxvTz2T9i12EA4PecRXGjqxddm9CwVBEnWhzLFiSgVgBWyGpirSjujv6v6SKUc2MWyyqDRBWmBTZjKrf7DHvGDe5fVWZf4kwiU4jMLkF7T6AdSDrMnnUsdfWA9NcajV7U1VTnANaUtcB1oc2E4NiqfdFQHDrMbeN7K2HKzod6bjuNAYh3sQ6BBotKAsJdNbWCM6THYceY4nSfkSfVBsUdaiqXaUHKEXYH1LNRBdr5Rx7jPGm6sAUbSdLWD6UT362gK69rBc3auv5rZSfThL9bY8MPLhJN6hzetknw1bnsrc4UVqmYNgXX4tVJHYGwiPw2hjQsJC6f45QbvyFct2jeQ62ARhi1kmV5Vvb5VfT2DnCjKkgjXgXw93JVmhpgnC7jAiWJr2iFzHjfgvUQUBgMCT7DnjixDrmJfTXVu4BZjP7AVaBa34PBkgznofoz7ojJKJ1sjtRKj2Gg8gknwLsVaTjKaqXsgLtt3TFRYGmoWHtpihadJ3ELBbb1S8w2LmUDiWbJXw4oyHdcVuW6TWofniQQh9XFZX3uu7omug68ttLGnbbtfmvqmdmYNAz4apixj2EW1shev7ciwAh5ZF5hCvFsrJBYFSbxb1BGRoRQWvxQ77z6Hq", + "2RsDz4W1HJ6FBsRyHnBfHFpLfJkeVLAVVc3SN1xCct4EEs88B7jHasKNoPVyer4sLhafNViWaSbsKaNUiqwnb1c7LHF49bKDTZtp5KgC1scYWCJoRLu9Qr8LuzVNmS97QsSV2raZKKMG7e6uyCGAFqn2VCSnBWtUhgHRtg8r1KSnZYd8BpWthL8QMqxSjABYp8oEjCnP69Fg2LugAApCj5YkdJDknYUw4Ph8iAnmzHBRggiazCcRKscYkM6ZySqGUJ8gjtBdnWt5TZQ9rVdoPiRa9z5tVNcwgYQiS3EhZMmc78gU1DqGVM4HruSkCZoeiReXaUwE232Uprm8P6dK8NM8nGL2NC6bMraxqpKNUvx39ENjSy9z8rcQuU9t4KUP2tfvHxWFwZ6nU2EWgpTDVkdwg1nbJyDLeGL37FgfiqzdGhS1QgmZsinpN1cowo8P7fyyngHuUzD5E6aiqS7uNVvUmLvQ4TDGA7sDa6UQqhd8eTxcm7EksetrQqXKGZMzJApp1HLvgxdGBNUMMajSbauk1bjVjyCpcjkJyLznFerZEqcmwEhEnCXUVdQaM9dtRhiMVVVgujt925rEDbjGcjkT1XCibxrcKBT2raL7W6ScSFTm9py8z3CtBrU4w9htwDoQ7n3pwheEAP7LKkMzBXdEi3J9sXAJy2pJBqM5bGLvRqXykdswpKCzogpGktfXRpiQ5d6TooH7MTEfTibvk9aEoGDhhuf5oakcvJnBGkebMfK9S7tbaWQF1NudjFrUJoD6ZGFFeJGQs51HTTCT4UWhQyYED6ZdCD351YJXG5bZnVr4Tc8oTDV1LtSVbRAjtMT9Fai5fh6P1Lb9P2NGnXayVWHdkHFGFT7drCDAjsqyA4ar5bWUwadLgpPzKpim9yuCdAdiey6FUitJfqtWt63MMEGBd76ahd7SHnXS9QVsuytrgu4FKRYbnfo3akTTWio1d4EorrebqgpcCuyvduR4bU4dJHsqYfZ8qmL4FtqiHLw7P8dKoeWkwvV2quu4nuxWtZ4TWLP2MqeYYyCFEtC6eY1b9cJXt7VMVCJGjsoy63vWmZ13S7pQytguUNmipW77TL7z5TZSsBEY5WsDNeGTFr522YynUp6fWv1sYzxSDDg2Xb5gEaDWx8McJYZjbyBUmwPoaiuEizs47A2fKP6dTbBck8QAGEeD5XeXWRS2equjpF242CDMY4UeGWvVbD9BzfitimAtK923nRtFr6LGP1GsTAL4TNKMMHxVpWLHfXbsWF8uq2ZJj8vPFBeymaaNdqnoPXzaRmt8T5vDuZYvFzqgKdLsr42e6sX7j2iNgNFt4obmR6fqYk3EABHVYHJ166ArX16XNRbF1MPDyTqESLiBQA5MGEd4jA89YzMM1CtzcnRpy9DrJsDR7xZqhq89aVCfB2WGF7sENKcrRBRXRvAGts2ciytTKTj2aToq8AifQMBFZiWieHtRwQUWz3ieLU99Ygrh7zya57wAYpJ2W1DhyjjXpvkgAKrJ3FRFqLMkz21iSSwFTjJk9d15FxGun13wyKcjcwaRytmwbx4QreQP88mqsNcSVZ2UYkfCaRa2HreDf19RmxzCQuXWpbhX5GhyDqMvrMn9rW9t3afKn7wpZ26UQWkDHM8L2edatcH6ojmb2tV", + "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrVo1ikPrYsQKMPDqBa3Pg5U4ZXUK58YY6Q4n8H4NQM4fYo8JchQqqhu7Hhf5oSGnkZPJ8MhCPLbg5i1XRLZDFSsm6Jq3LCdrdLuyiGUafaWznLi54oghwQcTBdhjABWLZiZydxMxjq7uD3NULABrXrC8FCaKfTLEe64FyhjxuFch2EmrrmhmKGjvzYqvc67xrWpvYSZLDmVwkH2wC7hQmYxTwPzant3GwCx1uhREnHHJLvv2keK8bAwhb4H9GCygx1p4s72e91NXBHg1RmR7YQLChEDjMLgCydCNAayi81SGzspNkqGQy4CThqYGRP6vxXPHP3ZYyn8TGvyQDtGahgqNchSHTGbcxcTp83fJ7wEEDpoEQF7yAVDkosRFYz7b98uiSFzhQ4PVtmLhY3fGCBySCqUhjNjqYeufh2uE4P23ELxEbVQJAFQw6aFcpudZmHuyXreQmenqYfnSuU1ZixwNGs2TJrqGVVTbpKNtEqZCp6ZbdPTETJPHtja94qBBdh5qgTfWeZQVfXrZsnXqWbjPBBQC2j96ZX4cZLXSc1GEzQXb6ci7yFQvZoUY4JPETwCQetSNUajLcnZUay7V9pFbKv9sWJfgUBKh3nZ7fsKcYBgMmfnqcbtHjZ1fypQj9TS1cnDSGj5tkbuZUVdGh7PoCbTSC8LE1eCEA6KBSJzSZLVLUFT2JQVnbb28fYEMtRcwB48T84mP1MTDuP1BP1Bpsntm2EWcuRHA4mVTBpcm8AYksFpyBwpiSHosBwRhxoGiSsFp9YB7cNSjQQa3k5EHbAm4Far2qYiSymWXWDVejdCygubcLD6dctAMcqswj9js6XyWRcBxgCBUQCXTM1HohBLye8DYe1k51doqLVuEqnniWqNSHR1Bik6Fxkxi26zsmwB9uMdfovRJ8jYmtr6BSKY4Ameb83ozKTDsMHcoq2tVP6GkCm7Um8FtwRYQRGLTzJcT8BH1QyUCwnThFwtoD45x9YoteLdY4ahY12DK1dx2dpFhC5dyKbpXMaBEZ6xZKmBJE6Vr2WBK8Y3VYmvsdNuyktEvNdMmSmLck63uM1xCRdpSWpRy1RioKkk8myvCF45mhNgmZXcDo8BY4raFjfLCtUzsvQXyoeS3pWuvJnkuv9JSe48XKqXtWDxukrbzzjU9ZrNskEBzMUfao4LFYDSy6FVEo6kpNBWwa3yeN83gozACAK31HqRYV3XhpwjsUyNiE4cqpvdWACYkbQvFKJZ137B4b76vFC3h4aqdcF86cxsRbZ7jE3sifk15ZKfbQJ3CbseD1XiBoLMCdgefKoYLTZGDvimwh1pAP7s3M8ttRxM19UNLHGatTtEiSB654Qo3MkaosdceFUzC", + "DfVFCdP3wxHvs1T6zV3UaL1RWXGbVUouKbBja63RCjur5imaiNUSPWh4DJUzkQ74FK9exj66xjtRYwtYtndzyJZWvbAPjML1znXQZ8S3hVTNBfHXmyZvCpK3oSdproRWHQBHYtPsxDqtFoqdwLPqo7B2fpjUxoPksRpimGzqWUkQpPb79NW6B8H9qr7ktmfpy864YgMDcXZAQPoTVZRPsozRaB7UJ3xbgVmFfGfkivF9Zm6FCWHe76M9rjFGoZjZbEZWSv1pyn2XhGMZhQYPYysMToaEKrESE3griYC7sq7LWyGr6NTyzbgn2arrrCEjKoUe1HdXRERBe2YjxTMtFgFqXGeB8dyZddrQ75apZoGzXheCbHt4PXesqwzTPg1ybNoqiBDLr4AyoWqkt8BNFCzGxNL8Rb5dGozChvJG82batVEwbjbygaL9mmFHxBi4kNvY7abk8bh6gCwFVE4dKBq6mrvXaoqnR27DpwrcgSHKpBkB4KuWqKBMdKXCmDSFj5E7LRezwEWyUTu5exovMknqgj9hiMKzczK8RzDhLsEL9w4a1FKfn4UYcpk9dNNguftUQgQkyzmUPDaMX17acbgW99qNvMgGvc2xc2aTqyCNTKtzbaRiXyStQz8onT4SmgxjvdEXiTRCtnG953sCYHYGKrYRtvdXQw4yTRhoXznKPiFoYC5fse51S5PRZV5VjLbQZxX3BfMmwEXMt18TQyBd2WJLryKVdVtDR5pmxPrrpHjeRdAt1Ar7r7hDy4mQ5kAaFLzDVsTWCXkRZdAG45S8FvQfWV7Mh8JLEC41HdSBuZdaNXbBRagKj5W92EyDyajYLPQ5nzUmq2VJprLitQmzTrBvV6qBJcxZm42kDazY3TKfwZ2d1bHezxNPbiYZivy8qm58Z8aPKQQd1qEL3WbrfMQRTGFTDEC9RUaLKPnS3fdovKpbxkmfU1oou26MeWFrATRp5FNJiGNZ7Gb2TaLokPUhrv9sCMg7g5x7MGBhGpeXdAyb8hri6K5SbVaWj7fHgEDJnjhTDvF2Y9A75GE4tpcsM9XHaqnvDeBZakjUdW88F28LfTUHmyCjGmopsgChL1rjKFoYnqV5fDHKWqJtSLjeg6RzXV94CGzyq6BD7mojdVtmMQjnQEbFcnrs5am55w8nUE4F7jk6XsEsiZinN23ehG9zuAMJUiXtVMPWbXefRAUwHLpbnCur32C7suwCcFzzxFS3w1sMkJhvPYi6bfienqhX1tks6cfR4YkPWuu1HaHVbCrYybdA5fnR8hqM5URG4HSXXfLe8hnK4Lro6rJx1m1bXeYxdgzJdczejDKj3rmedSu4HC2BMZSGVatPScReH9sQVpZ3GS7ALpr5TMm6jisYLqFT6JWfZsJmydqrn5QZMZv5x9XAwkWEoEB8Sk8W7SuH1ZwvS4m8pDmegVFKWXTLqPxW11q9ydWZQ8zjqMxDTR42K2oVJUkRk3qgcsYiJSjyLBrbpheArpxB7z1JneQ7b97zu8j1KQS1aHTFvxU4ANRU3quRtySxy6iPNLapmwpBWwK6uniGkv3UmjWjvhzx3fiTC2rrMj6NdqP1fLAUkMTczWHkdCA4abRmPHiTYP3YuTvyy1QcQhAowwcdQsnD959dHXtJ4XsKAb4z8", + "4tQGGLNJFJ2pSiGpQZZRxamsS2moL5vEZ2Y35pnqyjXNVdoRQgTNwcwZN2wKpHt1DAndD6pkBeuZbCEKC4khRKxFd9KEJvpEesmZUvQ2RMXTTeXXioMMonSbGHouMX5Ng6GixyNfyHWXrDUJEmbNqgcGsMxUKaab4fCgQt95GU1dgJ9XFVchpbJ62m3R9ZEEWrUPCBM5MmC57xV7uKhdJkJdw74QU6pAMeFxgru3CSTWznFm62zMx3GKeMQsVMLVuJrDkUe5jDQ8Ru5uxJcBB868FiQToHL5G1dW9W7RfJrD6ZqAgLBm8V48XCSG9TfZhrjjmj4hukQ8etisz7FuDu1Tx3Tf2bEhfeqm9j1WUpzRt5DwYQc8Tu21gdT3zzwNgPkTugxgzJH6cPL393tgktCXNF5Ar64s5E6DodUXhc5NEapAc1uSCP5RaZ7spaEhXr5XsUqH9VUzMhSXSss2ziDiTU31Stz9DLGdhumXMzbR1y89zHEeKEWA9PFqNqf9svF41hiuTinRNeSDtpMqcf2EPDyEbB87kMQE4UHTzFn18DEHryVpkUGbbL1GT5c8E89rUqNGtEG1z1Aw8849veWDoX4xqDnomWT5FWWj2ozAMbbRZqYBDGxWZfPq8XZdXwz836Z6m1GysiCJVCTuMXUZnZ6Lqo49thrK8SPUX656rik8M6Vec6QRri517wf6EWR69iLe9ZUKK99XbwqkFb1y3kni6mqz4Z2q6a8QdepMNfCUXTPoFe2MMJRQZ3XdxSSKd3Ht71RfrGbDdR4Gu9xojZY46paGSBGDsDmvQFbnqQiN4yZjcNFwrVvpWPFVQL5hh6BBiHU2WGgEZ3doc8hU6kcJUMaNkLMAKusMCzhDWr4rC9m9qoagpBojNTqttqnvERLPggwKcpP9wtYrwRXgoSVKiQTFmbRtTofcCgFjCU8wgU3DMRWY289oH5VvKX3WkJ1k8UbDcnymv3V18zCRhmaLwygDSbzXR8ye92fjxrHPEQa56D7WVy8dRjVxAPfmWw75QVTusmRswcKNipLE4RSE5Kx1gfGcsN52NkwVYwV6aGN9T65MJccvEdUbG16Lz515QbCFtK5ay1TBkzi21XpR5jwiUBU4zc98VqS21YmAyVgbRf4JMCJXHzKWyhpYaa3BFGuVx5by59DVv3ZTjghKdHt2osCGSHPmoXRw2MA6RdvZuiPntJ7TsNcSpSmJqftZTCSXvkYGkDuoj8YRHbzKANs1cu2zkYHz6HANxiTgD71px8Xrtooh13RZBQ5PQ3ZdzpyT3etAGEHqcYsvAwm12zhtctL7NXuDpgJ7V1NYcuAXsRoRkBVMU5WUPCZ3ZmySyAXFyGf6XP2U1mKVoTxKRDay6JJr6kDa57zDYQJD3L1beKBUMXQnFhfyzBBMDwVVTvw7n2t73wz6k5jHggtU1eBKhRmhwTvur9otMJmtXN5yGDY7vcxxnP3MFeptq1zAGXYFFdQcU26ceThahq9TpixmZFALohtyjUCxBYpSJVdZNRW71Uueu7sqjKdBtAAC9e8NtdekJMYqsBdRRiui8ectZjJL6Dz4zuEmq19ruQsqxF4v1zgEQaTX35djjg44k91kBdQN1TzNHCvn3XireZyP9NKRW", + "2wF8sNAVsk5NkVqW2tt34Q6HgnHMX8b3v2TWAsHfkFGHF5ep16ZUU8vTnKdiunuoQEvHJCtXuok1LL77t5izFHkRzF8YVNPYEvT2efNJDKdj4YAxRH3F92XMh8VqFGyikYopcd5rvCcnciHW21fhnEGUdZcvSfjtyCWbywgZc95y7vm6GvTXTxNdaDKJNinkzNiTvbqnzyRFDSWaALpmTGAkaXtaTKVyQrgwieBV6W5xbW23FT1ibjirjLBoEWaKfK9NfQMDDzjYDu82PvRXBFdE8nyhYmsYXmX8dGVfg6kMcKgMqXR4C5QsmUqJ5bazAcWYPCv4LpsQtw1oMa31f25LgXMt88HWa5V1iQoZNXbh7drCERXhrpGsPGwAbgRqJZ5DfRvc4EtoqYiR4N66i5PkrpVHYJTV9VHtMv8zFJEavDaRaUk9wPXqprTXhjk4f8r3U2QtBTPrp9YUMWL1YxoeAtdQCMLSqRwRVVvJbXPcQEKzTUUDvqsUdDofPXwVHVq23Z93BU9WKDZ3YR98VnRdrFMKavE6uGbT99ay5XtYZAKhNVrZNdJnQyLHDsT1DnT4QDZ5mcAJSAVpNgwoPFmvJYrcntoVH1Pye7rJHCxZSRrwo9kTeM1RBS8frGMJmUiPcC1K9yGb6JeXQADEsNPPG8ZXTRry16JdUCjDW1JYMV4YrhuX3Kr69R2LHJ5AVgk2Cup2LjSEJ8FJ2MjHaAgGPPegn3UCWbZYM2VBWm1pBLaXEEYP8cc22JmGWVcbv2zP6ixGDefdGS2E9sEnQj76avTz8qcejTgaP8tTVsgBdi7sTSr5xE6peqK7tbT7PWL2Skwhr4BKQyfi38nVbyfH1gVtKLVoiK4bcpVdzdXRtkCoqqVeerXzonnFHSgzYFuH3fUrbJQrDwSCfyE42dZjeC3SD2aqdTkvLyKbhs1ws2diRcioJ6ZmwQ6T8qANEzoavbKbzsJqbCFQEdQVy67jsXiJhFQX83LzAcVkcmqdmCcGfNpBze1gshH72YpTf5as9DysZZYnUmSdYAxuHo69S69WNiKs5oQyUfvyLkMpUh16BCho4BP5dJF8Xou26Vwfzb8BXrMQf5RG65tzfy1tqsADWq4gCkFwhSp9vG7BxxvLFvWGZCa1GKjrHPagPEchuekA4s8kMEvZzkC119myDLjniThawLxGF9CLzW9kXfEPRVCoVpFYs3vqVcxLMAKyuHGCRumWgEjJJbtDAxSnMYAr5iRkDXoLfyvvip28167L16xfLD4d5VNrk6hsu3Ta8WUqt2y1WnMAXYkdLE5zswhGFQVyTow1CH2oqezoJLJLs3Vp4HAb6ng2WS6JBGDxL3EhRrAgzruezYBYCZBMoeMDn8Lt2M8kHxCaKax5mzves8AaE1ooi8m5uiLFVPmd6NJCTM2Tia7XLZTxu3YLEbztRqz1tTox8muB481c7SEn9S5L9ENHxPswy4KdS5k8BVMT86yxnnctx4ruEnLRYENmMDp2McBz22z3tJ4tVq37nn3hMuc5pajTnR99it5wBbwZWbHXzyU9uMeK8MjS9GmVz52KqAwi53WnbnkyboKeFunH99Dt4D8AhJoH3iFNXn9PTXLcGw7AMonWCB4qMfwQieMJgRAHf1PGUnzV", ] }) }, From d10f80ce30d88b83868a21c9751bbafca5eb123e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 17:54:46 +0200 Subject: [PATCH 1104/1354] track tendieswap.app --- projects/tendieswap-app/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/tendieswap-app/index.js diff --git a/projects/tendieswap-app/index.js b/projects/tendieswap-app/index.js new file mode 100644 index 0000000000..be38e7a01a --- /dev/null +++ b/projects/tendieswap-app/index.js @@ -0,0 +1,13 @@ +const { staking } = require("../helper/staking.js"); +const { getUniTVL } = require("../helper/unknownTokens.js"); + +const masterchef = "0x6dDb25ca46656767f8f2385D653992dC1cdb4470"; +const tendie = "0x0260F440AEa04a1690aB183Dd63C5596d66A9a43" + +module.exports = { + misrepresentedTokens: true, + tenet: { + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x2D2ee1a4aec9f3c8c14dFcE837e1C89b639dd1E4', }), + // staking: staking(masterchef, tendie) + }, +}; \ No newline at end of file From 5817e5662285a90375260683d4a34292a2309d7f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 19:53:12 +0200 Subject: [PATCH 1105/1354] fix platypus --- projects/platypus-finance/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/platypus-finance/index.js b/projects/platypus-finance/index.js index a653008c7b..5ec8120e1f 100644 --- a/projects/platypus-finance/index.js +++ b/projects/platypus-finance/index.js @@ -32,13 +32,16 @@ async function getToa(pool, api) { return tokens.map((val, i) => [val, owners[i]]); } +const blacklistedTokens = [] + async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { + if (timestamp > +new Date("2023-02-17") / 1e3) blacklistedTokens.push("0xdaCDe03d7Ab4D81fEDdc3a20fAA89aBAc9072CE2") // USP was hacked const toa = (await Promise.all(pools.map((i) => getToa(i, api)))).flat(); toa.push([ "0xb599c3590f42f8f995ecfa0f85d2980b76862fc1", "0xc7388d98fa86b6639d71a0a6d410d5cdfc63a1d0", ]); - return sumTokens2({ api, tokensAndOwners: toa }); + return sumTokens2({ api, tokensAndOwners: toa, blacklistedTokens }); } module.exports = { @@ -47,7 +50,9 @@ module.exports = { staking: staking( "0x5857019c749147eee22b1fe63500f237f3c1b692", "0x22d4002028f537599be9f666d1c4fa138522f9c8", - "avax" ), }, + hallmarks: [ + [Math.floor(new Date('2023-02-17') / 1e3), 'Protocol was hacked for $8.5m'], + ], }; From 0a400d78892972973d7ddf127e1f78ba2a7d688a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 20:04:48 +0200 Subject: [PATCH 1106/1354] fix stader --- projects/stader/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/stader/index.js b/projects/stader/index.js index 758de462c6..2e308d7b4f 100644 --- a/projects/stader/index.js +++ b/projects/stader/index.js @@ -53,9 +53,9 @@ module.exports = { tvl: hbarTvl, }, // its on ethereum because funds are locked there - ethereum: { + /* ethereum: { tvl: maticTvl - }, + }, */ fantom: { tvl: ftmTvl }, @@ -70,13 +70,16 @@ module.exports = { }, ethereum: { tvl: async (_, _1, _2, { api }) => { + + const res = await fetchURL("https://universe.staderlabs.com/common/tvl") return { + "matic-network": res.data.polygon.native, [nullAddress]: await api.call({ abi: 'uint256:totalAssets', target: '0xcf5ea1b38380f6af39068375516daf40ed70d299' }) // [nullAddress]: await api.call({ abi: 'uint256:totalSupply', target: '0xa35b1b31ce002fbf2058d22f30f95d405200a15b' }) } } }, - hallmarks:[ + hallmarks: [ [1651881600, "UST depeg"], ] } From 237edfd6ce3bbda34e98ade7bdf7466bd257218d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jul 2023 20:18:01 +0200 Subject: [PATCH 1107/1354] fix platypus --- projects/platypus-finance/index.js | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/projects/platypus-finance/index.js b/projects/platypus-finance/index.js index 5ec8120e1f..62638cab70 100644 --- a/projects/platypus-finance/index.js +++ b/projects/platypus-finance/index.js @@ -19,29 +19,18 @@ const pools = [ "0xb3393f4e609c504da770ebc968540784cc4e016c", ]; -async function getToa(pool, api) { - const tokens = await api.call({ - abi: "function getTokenAddresses() view returns (address[])", - target: pool, - }); - const owners = await api.multiCall({ - abi: "function assetOf(address) view returns (address)", - calls: tokens, - target: pool, - }); - return tokens.map((val, i) => [val, owners[i]]); -} - const blacklistedTokens = [] async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { if (timestamp > +new Date("2023-02-17") / 1e3) blacklistedTokens.push("0xdaCDe03d7Ab4D81fEDdc3a20fAA89aBAc9072CE2") // USP was hacked - const toa = (await Promise.all(pools.map((i) => getToa(i, api)))).flat(); - toa.push([ - "0xb599c3590f42f8f995ecfa0f85d2980b76862fc1", - "0xc7388d98fa86b6639d71a0a6d410d5cdfc63a1d0", - ]); - return sumTokens2({ api, tokensAndOwners: toa, blacklistedTokens }); + const tokensArray = await api.multiCall({ abi: "function getTokenAddresses() view returns (address[])", calls: pools}) + const tokens = tokensArray.flat() + const calls = tokensArray.map((t, i)=> t.map((token) => ({ target: pools[i], params: token }))).flat() + + const owners = await api.multiCall({ abi:"function assetOf(address) view returns (address)", calls}) + tokens.push('0xb599c3590f42f8f995ecfa0f85d2980b76862fc1') + owners.push('0xc7388d98fa86b6639d71a0a6d410d5cdfc63a1d0') + return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens }); } module.exports = { From 5aa74e9ca1eeb66be755d42610e3439371507f61 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 12 Jul 2023 07:04:00 +0100 Subject: [PATCH 1108/1354] add hallmarks --- projects/axe/index.js | 3 +++ projects/moondao/index.js | 3 +++ projects/snowdogdao/index.js | 3 +++ projects/taichi/index.js | 3 +++ 4 files changed, 12 insertions(+) diff --git a/projects/axe/index.js b/projects/axe/index.js index b7e7797f61..92b63f3532 100644 --- a/projects/axe/index.js +++ b/projects/axe/index.js @@ -30,6 +30,9 @@ const AXE_DAI_POOL = "0xd34d3b648db688bee383022dd26a9027592b82d5"; } module.exports = { + hallmarks: [ + [1648765747, "Rug Pull"] + ], deadFrom: 1648765747, start: 1637036516, // 16 Nov 2021 ethereum: { diff --git a/projects/moondao/index.js b/projects/moondao/index.js index 01234074c9..475529c8dd 100644 --- a/projects/moondao/index.js +++ b/projects/moondao/index.js @@ -2,6 +2,9 @@ const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') const treasury = "0xeC2aE8A3E2692E4b0836AB5cf88104d101DEBEf4" +module.exports.hallmarks=[ + [1639180800,"Rug Pull"] +], module.exports = ohmTvl(treasury, [ //DAI ["0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844", false], diff --git a/projects/snowdogdao/index.js b/projects/snowdogdao/index.js index 152c9005d0..bd4938f6da 100644 --- a/projects/snowdogdao/index.js +++ b/projects/snowdogdao/index.js @@ -1,6 +1,9 @@ const ADDRESSES = require('../helper/coreAssets.json') const { ohmTvl } = require('../helper/ohm') +module.exports.hallmarks=[ + [1637798400,"Rug Pull"] +], module.exports=ohmTvl("0xC0E7DA06e56727F3B55B24F58e9503FdaAfb2a68", [ //mim ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], diff --git a/projects/taichi/index.js b/projects/taichi/index.js index f6ad6dd63b..daeb79d21d 100644 --- a/projects/taichi/index.js +++ b/projects/taichi/index.js @@ -3,6 +3,9 @@ const { ohmTvl } = require('../helper/ohm') const treasury = "0xD4b0DC48AB6BD7907E3698A62CCD1DBE2d46d310" module.exports = { + hallmarks: [ + [1648765747,"Rug Pull"] + ], deadFrom: 1648765747, ...ohmTvl(treasury, [ //BUSD From f686aa21bd3867015086de4682ba821f0330d374 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 12 Jul 2023 09:41:13 +0100 Subject: [PATCH 1109/1354] golem treasury --- projects/treasury/golem.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/treasury/golem.js diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js new file mode 100644 index 0000000000..eb1fdddc42 --- /dev/null +++ b/projects/treasury/golem.js @@ -0,0 +1,24 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +// Treasury +const treasury = "0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9"; +const GLM = "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429"; + + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + // Ethereum Assets + nullAddress, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WSTETH,//wsteth + "0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39" //hex + ], + owners: [treasury], + ownTokens: [GLM] + }, +}) \ No newline at end of file From f370338f4da4eee2f6031869130b55933a48c4cd Mon Sep 17 00:00:00 2001 From: strobie <0xstrobe@protonmail.com> Date: Wed, 12 Jul 2023 11:03:08 +0200 Subject: [PATCH 1110/1354] delist fantom assets cuz bridge rugged --- liquidations/mimo-protocol/index.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/liquidations/mimo-protocol/index.ts b/liquidations/mimo-protocol/index.ts index 40071814f1..9d0bc72c79 100644 --- a/liquidations/mimo-protocol/index.ts +++ b/liquidations/mimo-protocol/index.ts @@ -24,14 +24,14 @@ const latestRoundDataABI = { enum Chain { ethereum = "ethereum", polygon = "polygon", - fantom = "fantom", + // fantom = "fantom", } const getEURUSD = async (chain: Chain) => { const oracleAddresses = { [Chain.ethereum]: "0xb49f677943bc038e9857d61e7d053caa2c1734c1", [Chain.polygon]: "0x73366fe0aa0ded304479862808e02506fe556a98", - [Chain.fantom]: "0x3e68e68ea2c3698400465e3104843597690ae0f7", + // [Chain.fantom]: "0x3e68e68ea2c3698400465e3104843597690ae0f7", }; const eurUSDRoundData = await sdk.api.abi.call({ @@ -56,11 +56,11 @@ const getSubgraphUrl = (chain: Chain) => { subgraphUrl = "https://api.thegraph.com/subgraphs/name/m19/titanpolygon"; break; } - case Chain.fantom: { - subgraphUrl = - "https://api.thegraph.com/subgraphs/name/rayxpub/titanfantom"; - break; - } + // case Chain.fantom: { + // subgraphUrl = + // "https://api.thegraph.com/subgraphs/name/rayxpub/titanfantom"; + // break; + // } } return subgraphUrl; @@ -194,7 +194,7 @@ module.exports = { polygon: { liquidations: positions(Chain.polygon), }, - fantom: { - liquidations: positions(Chain.fantom), - }, + // fantom: { + // liquidations: positions(Chain.fantom), + // }, }; From 4071dd4408dc20a06399e22b0083c717b5b6dafb Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Wed, 12 Jul 2023 11:46:27 +0200 Subject: [PATCH 1111/1354] Add comments and group JPEGd treasury addresses (#6775) * Add comments and group JPEGd treasury addresses * Remove redundant addresses --- projects/treasury/jpegd.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index 1ccd1352bc..79bbdfd5e4 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -3,13 +3,13 @@ const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports, nullAddress } = require("../helper/treasury"); const jpegd = "0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3"; + +// Owners const multisig = "0x51C2cEF9efa48e08557A361B52DB34061c025a1B"; const donationEvent = "0x3b7157E5E732863170597790b4c005436572570F"; const usdcVault = "0xFD110cf7985f6B7cAb4dc97dF1932495cADa9d08"; const usdtVault = "0x152DE634FF2f0A6eCBd05cB591cD1eEaCd2900Ed"; const pethVault = "0x548cAB89eBF34509Ae562BC8cE8D5Cdb4F08c3AD"; -const lp = "0xdB06a76733528761Eda47d356647297bC35a98BD" -const lp2 = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" const treasuryTvl = treasuryExports({ ethereum: { @@ -19,23 +19,22 @@ const treasuryTvl = treasuryExports({ ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.TUSD, ADDRESSES.ethereum.CVX, ADDRESSES.ethereum.FRAX, ADDRESSES.ethereum.LINK, ADDRESSES.ethereum.cvxCRV, ADDRESSES.ethereum.SAFE, - "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", - "0x34eD182D0812D119c92907852D2B429f095A9b07", - "0x836A808d4828586A69364065A1e064609F5078c7", - "0x9848482da3Ee3076165ce6497eDA906E66bB85C5", ADDRESSES.ethereum.vlCVX, ADDRESSES.ethereum.sfrxETH, ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.RETH, - lp, - lp2, + "0x836A808d4828586A69364065A1e064609F5078c7", // pETH + // Liquidity positions + "0xC47EBd6c0f68fD5963005D28D0ba533750E5C11B", // pUSDFRAXBP3CRV-f + "0x34eD182D0812D119c92907852D2B429f095A9b07", // JPEGETH-f + "0x9848482da3Ee3076165ce6497eDA906E66bB85C5", // pETH-ETH-f + "0xdB06a76733528761Eda47d356647297bC35a98BD", // JPEGWETH SLP ], owners: [multisig, donationEvent, usdcVault, usdtVault, pethVault], ownTokens: [jpegd], From 4194632d64defde5cf431db6830a7f3f1dea6467 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 12:07:17 +0200 Subject: [PATCH 1112/1354] pinjam: add hallmark --- projects/pinjam/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/pinjam/index.js b/projects/pinjam/index.js index c9f719f286..0112742f7d 100644 --- a/projects/pinjam/index.js +++ b/projects/pinjam/index.js @@ -40,6 +40,9 @@ module.exports = { kava: { staking: staking(stakingContract, PINKAV), }, + hallmarks: [ + [1688670115, "Multichain Exploit"], +], }; From 4ca705be0a534649287857933b589c9ed6d7a0cb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 12:36:45 +0200 Subject: [PATCH 1113/1354] update jojo --- projects/jojo/index.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/projects/jojo/index.js b/projects/jojo/index.js index 4e8f4eb7ca..532f4d57fb 100644 --- a/projects/jojo/index.js +++ b/projects/jojo/index.js @@ -1,14 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') -const contracts = [ - '0x25173BB47CB712cFCDFc13ECBebDAd753090801E' -]; - -const tokens = [ - ADDRESSES.bsc.USDC -]; - module.exports = { - bsc: { tvl: sumTokensExport({ tokens, chain: 'bsc', owners: contracts, }) } + era: { tvl: sumTokensExport({ tokens: [ADDRESSES.era.USDC], owners: ['0x47eAD228547db8397398C1D3aAfd0847CBEbddeC'], }) }, + bsc: { tvl: sumTokensExport({ tokens: [ADDRESSES.bsc.USDC], owners: ['0x25173BB47CB712cFCDFc13ECBebDAd753090801E'], }) }, }; From 80a2fe6b6ff4c13031e59e99a9f6e838d5a80b6a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 12:46:44 +0200 Subject: [PATCH 1114/1354] fix metronome --- projects/metronome-synth/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/metronome-synth/index.js b/projects/metronome-synth/index.js index 2fce148733..b8c57da684 100644 --- a/projects/metronome-synth/index.js +++ b/projects/metronome-synth/index.js @@ -26,7 +26,7 @@ module.exports = { owner: '0x4c6bf87b7fc1c8db85877151c6ede38ed27c34f6', tokens: [ ADDRESSES.optimism.USDC, - ADDRESSES.optimism.WETH, + ADDRESSES.optimism.WETH_1, ADDRESSES.optimism.OP, "0xdd63ae655b388cd782681b7821be37fdb6d0e78d", "0xccf3d1acf799bae67f6e354d685295557cf64761", From bab1cae9ebbf62eddf838a662d2e1c687ad8da2d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 12:57:45 +0200 Subject: [PATCH 1115/1354] track https://app.hope.money --- projects/hope-swap/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/hope-swap/index.js diff --git a/projects/hope-swap/index.js b/projects/hope-swap/index.js new file mode 100644 index 0000000000..1c8fabe0c4 --- /dev/null +++ b/projects/hope-swap/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + ethereum: { + tvl: getUniTVL({ factory: '0x26F53fbADeEb777fb2A122dC703433d79241b64e', useDefaultCoreAssets: true, fetchBalances: true }), + }, +}; \ No newline at end of file From 299f70afbcba3c5e7c1b99431e482470b040f339 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:02:05 +0200 Subject: [PATCH 1116/1354] aura: track op --- projects/aura-finance/index.js | 22 +++++++++++++++------- projects/brewlabs/index.js | 6 +++--- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index df8f5cd2dc..4fd9a113b2 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -60,24 +60,32 @@ async function tvl(_, block, _1, { api }) { } } +const config = { + arbitrum: { factory: '0x6817149cb753bf529565b4d023d7507ed2ff4bc0', fromBlock: 72942741, voterProxy: '0xc181edc719480bd089b94647c2dc504e2700a2b0'}, + optimism: { factory: '0xa523f47A933D5020b23629dDf689695AA94612Dc', fromBlock: 83239534, voterProxy: '0xc181edc719480bd089b94647c2dc504e2700a2b0'}, +} + module.exports = { methodology: "TVL of Aura Finance consists of the total deposited assets, protocol-controlled value via veBAL and vote-locked AURA (staking)", ethereum: { tvl, staking: staking(addresses.auraLocker, addresses.aura) - }, - arbitrum: { - tvl: async (_, _1, _2, { api }) => { + } +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, voterProxy, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { const logs = await getLogs({ api, - target: '0x6817149cb753bf529565b4d023d7507ed2ff4bc0', + target: factory, topics: ['0xaa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c0'], eventAbi: 'event GaugeCreated (address indexed gauge)', onlyArgs: true, - fromBlock: 72942741, + fromBlock, }) - const voterProxy = '0xc181edc719480bd089b94647c2dc504e2700a2b0' // const auraBalVault = '0x4EA9317D90b61fc28C418C247ad0CA8939Bbb0e9' // const asset = await api.call({ abi: 'address:asset', target: auraBalVault }) // const bal = await api.call({ abi: 'uint256:totalAssets', target: auraBalVault }) @@ -88,4 +96,4 @@ module.exports = { api.addTokens(tokens, bals) } } -} +}) diff --git a/projects/brewlabs/index.js b/projects/brewlabs/index.js index 325d1c28ce..1985439877 100644 --- a/projects/brewlabs/index.js +++ b/projects/brewlabs/index.js @@ -39,6 +39,7 @@ async function getStakingPools(chain, poolType) { async function _getPools() { const poolTypeStr = poolType === 'pool2' ? 'farms' : 'pools' const pools = await post(`${api_endpoint}/${poolTypeStr}`, { chainId: chains[chain]}) + console.log(pools, `brewlabs ${chain} ${poolType} pools: ${pools.length}`) setCache(`brewlabs/pools`, chain, pools) return pools } @@ -62,8 +63,7 @@ async function staking(_, _b, _cb, { api, }) { const poolInfoAbi = "function poolInfo(uint256) view returns (address lpToken, uint256, uint256, uint256, uint256, uint256, uint16, uint16)" async function pool2(_, _b, _cb, { api, }) { - const pools = (await getStakingPools(api.chain, 'pool2')).filter(i => i.contractAddress !== '0xb4d96033a260f0a0ea9c927aa1583668118c8145') - const infos = await api.multiCall({ abi: poolInfoAbi , calls: pools.map(i => ({ target: i.contractAddress, params: [0]})), permitFailure: false, }) - const tokensAndOwners = pools.map((v, i) => ([infos[i].lpToken, v.contractAddress])).filter(i => i[0]) + const pools = (await getStakingPools(api.chain, 'pool2')) + const tokensAndOwners = pools.map((v, i) => ([v.lpAddress, v.contractAddress])) return sumUnknownTokens({ api, tokensAndOwners, blacklist}) } From 0c287328740c3f19a78387983a33db53c9307073 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 15:10:02 +0200 Subject: [PATCH 1117/1354] update golem treasury --- projects/treasury/golem.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js index eb1fdddc42..284adb7193 100644 --- a/projects/treasury/golem.js +++ b/projects/treasury/golem.js @@ -11,14 +11,8 @@ module.exports = treasuryExports({ tokens: [ // Ethereum Assets nullAddress, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WBTC, - ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.WSTETH,//wsteth - "0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39" //hex ], - owners: [treasury], + owners: [treasury, '0x70a0a7be87deb51e1fab16d4f2bf00be1510e476'], ownTokens: [GLM] }, }) \ No newline at end of file From 4b99f1ce53c485cc209c16e995a239d6141da14d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 18:40:53 +0530 Subject: [PATCH 1118/1354] refactor anyswap to be on chain (#6774) --- projects/anyswap/index.js | 84 +++++++++++++++------------------------ 1 file changed, 33 insertions(+), 51 deletions(-) diff --git a/projects/anyswap/index.js b/projects/anyswap/index.js index decb28c57a..d094245225 100644 --- a/projects/anyswap/index.js +++ b/projects/anyswap/index.js @@ -1,4 +1,8 @@ -const { get } = require('../helper/http') +const sdk = require('@defillama/sdk') +const { sumTokens } = require('../helper/sumTokens') +const { getConfig } = require('../helper/cache') +const ADDRESSES = require('../helper/coreAssets.json') + const chains = { '1': 'ethereum', @@ -58,67 +62,45 @@ const chains = { '32520': 'bitgert' } - - -const sleep = ms => new Promise(r => setTimeout(r, ms)); - -let coingeckoMcapsPromise - -async function getCgMcaps() { - if (!coingeckoMcapsPromise) coingeckoMcapsPromise = _getData() - return coingeckoMcapsPromise - - async function _getData() { - const protocolsInChain = await getChainData() - const protocolsWithRouters = Array.from(new Set(protocolsInChain.filter(p => p.type === "router" && p.label !== null).map(p => p.label.toLowerCase()))); - - const coingeckoMcaps = {} - const step = 200; - for (let i = 0; i < protocolsWithRouters.length; i += step) { - console.log(i / step) - const cgUrl = `https://api.coingecko.com/api/v3/simple/price?vs_currencies=usd&include_market_cap=true&ids=${protocolsWithRouters.slice(i, i + step).join(',') - }` - await sleep(1e3) - const partMcaps = await get(cgUrl) - Object.assign(coingeckoMcaps, partMcaps) - } - return coingeckoMcaps - } -} - let chainData async function getChainData() { - if (!chainData) chainData = get('https://netapi.anyswap.net/bridge/v2/info').then(i => i.bridgeList.filter(j => j.amount > 0)) + if (!chainData) chainData = getConfig('anyswap-config', 'https://netapi.anyswap.net/bridge/v2/info').then(i => i.bridgeList.filter(j => j.amount > 0)) return chainData } +const blacklistedTokens = [ + '0xc342774492b54ce5f8ac662113ed702fc1b34972' // BGEO +] + +const EXECUTOR = '0x2A038e100F8B85DF21e4d44121bdBfE0c288A869' +const NEW_ADDR = '0x1eed63efba5f81d95bfe37d82c8e736b974f477b' + function fetchChain(chain) { - return async () => { + return async (_, _1, _2, { api }) => { const data = await getChainData() const protocolsInChain = chain === null ? data : data.filter(p => p.srcChainId.toString() === chain.toString()) - - const coingeckoMcaps = await getCgMcaps(); - const counted = {} - let total = 0 + const tokensAndOwners = [] protocolsInChain.forEach((item) => { - const tvl = Number(item.tvl || 0) - if (item.type === "bridge") { - total += tvl - } else if (item.type === "router") { - const label = item.label - const mcap = coingeckoMcaps[label]?.usd_market_cap - if (counted[label] === undefined) { - counted[label] = 0 + let token = item.srcToken + let owner = item.depositAddr + if (owner.startsWith("0x") && !token.startsWith("0x")) { + sdk.log(chain, 'replace', token, 'with null') + token = ADDRESSES.null } - if (mcap !== undefined && mcap > counted[label]) { - const tvlToAdd = Math.min(tvl, mcap - counted[label]) - total += tvlToAdd - counted[label] += tvlToAdd + tokensAndOwners.push([token, owner]) + tokensAndOwners.push([token, EXECUTOR]) + // tokensAndOwners.push([token, NEW_ADDR]) + } else if (item.type === "router") { + if (item.token === item.srcToken && item.underlying) { + tokensAndOwners.push([item.underlying, item.token]) + tokensAndOwners.push([item.underlying, EXECUTOR]) + // tokensAndOwners.push([item.underlying, NEW_ADDR]) } } }) - return total + + return sumTokens({ api, tokensAndOwners, blacklistedTokens, }) } } @@ -127,7 +109,7 @@ const chainTvls = {} Object.keys(chains).forEach((chain) => { const chainName = chains[chain] chainTvls[chainName] = { - fetch: fetchChain(chain) + tvl: fetchChain(chain) } }) @@ -135,8 +117,8 @@ module.exports = { misrepresentedTokens: true, timetravel: false, ...chainTvls, - fetch: fetchChain(null), - hallmarks:[ + // fetch: fetchChain(null), + hallmarks: [ [1651881600, "UST depeg"], ], } From 318e79afe74251fa5cffaa399ddc5ac34ef54d2f Mon Sep 17 00:00:00 2001 From: m00n <93987216+0xm00neth@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:18:09 -0500 Subject: [PATCH 1119/1354] list blur vault for spice finance (#6786) --- projects/spice-finance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/spice-finance/index.js b/projects/spice-finance/index.js index a343b0b0e6..a5e83ababe 100644 --- a/projects/spice-finance/index.js +++ b/projects/spice-finance/index.js @@ -2,6 +2,7 @@ const vaults = [ '0xAe11ae7CaD244dD1d321Ff2989543bCd8a6Db6DF', // Flagship '0xd68871bd7D28572860b2E0Ee5c713b64445104F9', // Leverage '0x6110d61DD1133b0f845f1025d6678Cd22A11a2fe', // VIP + '0xfC287513E2DD58fbf952eB0ED05D511591a6215B', // Blur ] async function tvl(_1, _2, chainBlocks, { api }) { From 44b14e5e282e11fc678781c19a9956fc89033880 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jul 2023 21:18:47 +0200 Subject: [PATCH 1120/1354] uniswap: track avax --- projects/uniswap/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index c7076c493e..2d44b64835 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -9,6 +9,7 @@ const graphs = { polygon: "https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v3-polygon", celo: "https://api.thegraph.com/subgraphs/name/jesse-sawa/uniswap-celo", bsc: "https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v3-bsc", + avax: "https://api.thegraph.com/subgraphs/name/lynnshaoyu/uniswap-v3-avax", } const blacklists = { @@ -74,7 +75,7 @@ module.exports = { ] } -const chains = ['ethereum', 'arbitrum', 'optimism', 'polygon', 'celo', 'bsc'] +const chains = ['ethereum', 'arbitrum', 'optimism', 'polygon', 'celo', 'bsc', 'avax'] chains.forEach(chain => { module.exports[chain] = { From f5a4875799dfd969d3ec05f4aef42c3806bcf2d8 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 13 Jul 2023 03:23:38 +0100 Subject: [PATCH 1121/1354] add hallmark --- projects/zodiac/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/zodiac/index.js b/projects/zodiac/index.js index ed36b5a41c..65949d4dc7 100644 --- a/projects/zodiac/index.js +++ b/projects/zodiac/index.js @@ -7,6 +7,9 @@ const Staking = "0x1450d20E99F7e8c27864a8D9e6E3d0694ed567DA"; const ZD = "0x98051143830fa99848E7059E97AcB03B3cc62403"; const ZD_USDT_POOL = "0x4cb107576c7f3d59e3355ce760af5cbc36cf5e0d"; +module.exports.hallmarks=[ + [1641254400,"Rug Pull"] +], module.exports = ohmTvl(treasuryAddress, [ [USDT, false], [ZD_USDT_POOL, true], From 9eda4a217df4ecbd46ede6e9e7a20719b9744d42 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 12:52:26 +0530 Subject: [PATCH 1122/1354] Update how secrets are fetched (#6787) --- projects/helper/chain/aptos.js | 18 +++++++-------- projects/helper/chain/bitcoin.js | 4 ++-- projects/helper/chain/sui.js | 12 +++++----- projects/helper/env.js | 39 ++++++++++++++++++++++++-------- projects/helper/http.js | 7 +++--- projects/helper/solana.js | 24 ++++++++++---------- projects/helper/utils.js | 8 +++---- projects/lofty/index.js | 4 ++-- projects/olympus/index.js | 5 ++-- 9 files changed, 69 insertions(+), 52 deletions(-) diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js index 03a26303f1..d820b393e8 100644 --- a/projects/helper/chain/aptos.js +++ b/projects/helper/chain/aptos.js @@ -2,24 +2,24 @@ const sdk = require('@defillama/sdk') const http = require('../http') -const env = require('../env') +const { getEnv } = require('../env') const coreTokensAll = require('../coreAssets.json') const { transformBalances } = require('../portedTokens') const { log, getUniqueAddresses } = require('../utils') const coreTokens = Object.values(coreTokensAll.aptos) -const endpoint = env.APTOS_RPC || "https://aptos-mainnet.pontem.network" +const endpoint = () => getEnv('APTOS_RPC') async function aQuery(api) { - return http.get(`${endpoint}${api}`) + return http.get(`${endpoint()}${api}`) } async function getResources(account) { const data = [] let lastData let cursor do { - let url = `${endpoint}/v1/accounts/${account}/resources?limit=9999` + let url = `${endpoint()}/v1/accounts/${account}/resources?limit=9999` if (cursor) url += '&start=' + cursor const res = await http.getWithMetadata(url) lastData = res.data @@ -31,14 +31,14 @@ async function getResources(account) { } async function getResource(account, key) { - let url = `${endpoint}/v1/accounts/${account}/resource/${key}` + let url = `${endpoint()}/v1/accounts/${account}/resource/${key}` const { data } = await http.get(url) return data } async function getCoinInfo(address) { if (address === '0x1') return { data: { decimals: 8, name: 'Aptos' } } - return http.get(`${endpoint}/v1/accounts/${address}/resource/0x1::coin::CoinInfo%3C${address}::coin::T%3E`) + return http.get(`${endpoint()}/v1/accounts/${address}/resource/0x1::coin::CoinInfo%3C${address}::coin::T%3E`) } function dexExport({ @@ -95,12 +95,12 @@ async function sumTokens({ balances = {}, owners = [] }) { } async function getTableData({ table, data }) { - const response = await http.post(`${endpoint}/v1/tables/${table}/item`, data) + const response = await http.post(`${endpoint()}/v1/tables/${table}/item`, data) return response } async function function_view({ functionStr, type_arguments = [], args = [] }) { - const response = await http.post(`${endpoint}/v1/view`, { "function": functionStr, "type_arguments": type_arguments, arguments:args }) + const response = await http.post(`${endpoint()}/v1/view`, { "function": functionStr, "type_arguments": type_arguments, arguments:args }) return response } @@ -121,7 +121,7 @@ function hexToString(hexString) { } module.exports = { - endpoint, + endpoint: endpoint(), dexExport, aQuery, getCoinInfo, diff --git a/projects/helper/chain/bitcoin.js b/projects/helper/chain/bitcoin.js index bcf8cbe23e..b2a8563aeb 100644 --- a/projects/helper/chain/bitcoin.js +++ b/projects/helper/chain/bitcoin.js @@ -1,6 +1,6 @@ const sdk = require('@defillama/sdk') const { get } = require('../http') -const env = require('../env') +const { getEnv } = require('../env') const url = addr => 'https://blockstream.info/api/address/' + addr @@ -34,7 +34,7 @@ async function getBalance(addr, timestamp) { if (!timestamp || (now - timestamp) < delay) return balance - let endpoint = `https://btc.getblock.io/${env.GETBLOCK_KEY}/mainnet/blockbook/api/v2/balancehistory/${addr}?fiatcurrency=btc&groupBy=86400&from=${timestamp}` + let endpoint = `https://btc.getblock.io/${getEnv('GETBLOCK_KEY')}/mainnet/blockbook/api/v2/balancehistory/${addr}?fiatcurrency=btc&groupBy=86400&from=${timestamp}` const response = await get(endpoint) response.forEach(({ sent, received }) => balance += sent / 1e8 - received / 1e8) diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index 9123b4f492..a90941f0f2 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -2,13 +2,13 @@ const sdk = require('@defillama/sdk') const http = require('../http') -const env = require('../env') +const { getEnv } = require('../env') const { transformDexBalances } = require('../portedTokens') const { sliceIntoChunks } = require('../utils') //https://docs.sui.io/sui-jsonrpc -const endpoint = env.SUI_RPC || "https://fullnode.mainnet.sui.io/" +const endpoint = () => getEnv('SUI_RPC') async function getObject(objectId) { return (await call('sui_getObject', [objectId, { @@ -40,7 +40,7 @@ async function getObjects(objectIds) { } const { result - } = await http.post(endpoint, { + } = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method: 'sui_multiGetObjects', params: [objectIds, { "showType": true, "showOwner": true, @@ -60,7 +60,7 @@ async function getDynamicFieldObject(parent, id) { async function getDynamicFieldObjects({ parent, cursor = null, limit = 48, items = [], idFilter = i => i, addedIds = new Set() }) { const { result: { data, hasNextPage, nextCursor } - } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method: 'suix_getDynamicFields', params: [parent, cursor, limit], }) + } = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method: 'suix_getDynamicFields', params: [parent, cursor, limit], }) sdk.log('[sui] fetched items length', data.length, hasNextPage, nextCursor) const fetchIds = data.filter(idFilter).map(i => i.objectId).filter(i => !addedIds.has(i)) fetchIds.forEach(i => addedIds.add(i)) @@ -74,7 +74,7 @@ async function call(method, params, { withMetadata = false} = {}) { if (!Array.isArray(params)) params = [params] const { result - } = await http.post(endpoint, { jsonrpc: "2.0", id: 1, method, params, }) + } = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method, params, }) return withMetadata ? result : result.data } @@ -131,7 +131,7 @@ function dexExport({ } module.exports = { - endpoint, + endpoint: endpoint(), call, multiCall, getObject, diff --git a/projects/helper/env.js b/projects/helper/env.js index 483f825597..fe0419c141 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -1,13 +1,32 @@ -const env = process.env +const BOOL_KEYS = [ + 'HISTORICAL', + 'LLAMA_DEBUG_MODE', +] + +const ENV_KEYS = [ + ...BOOL_KEYS, + 'GETBLOCK_KEY', + 'SOLANA_RPC', + 'APTOS_RPC', + 'SUI_RPC', + 'LOFTY_API', + 'COVALENT_KEY', + 'OLYMPUS_GRAPH_API_KEY', +] + +const DEFAULTS = { + COVALENT_KEY: 'ckey_72cd3b74b4a048c9bc671f7c5a6', + SOLANA_RPC: 'https://try-rpc.mainnet.solana.blockdaemon.tech', + APTOS_RPC: 'https://aptos-mainnet.pontem.network', + SUI_RPC: 'https://fullnode.mainnet.sui.io/', +} + +function getEnv(key) { + if (!ENV_KEYS.includes(key)) throw new Error(`Unknown env key: ${key}`) + const value = process.env[key] ?? DEFAULTS[key] + return BOOL_KEYS.includes(key) ? !!value : value +} module.exports = { - HISTORICAL: !!env.HISTORICAL, - LLAMA_DEBUG_MODE: !!env.LLAMA_DEBUG_MODE, - GETBLOCK_KEY: env.GETBLOCK_KEY, - SOLANA_RPC: env.SOLANA_RPC, - APTOS_RPC: env.APTOS_RPC, - SUI_RPC: env.SUI_RPC, - LOFTY_API: env.LOFTY_API, - COVALENT_KEY: env.COVALENT_KEY, - OLYMPUS_GRAPH_API_KEY: env.OLYMPUS_GRAPH_API_KEY, + getEnv, } \ No newline at end of file diff --git a/projects/helper/http.js b/projects/helper/http.js index adc522911b..cdae512f94 100644 --- a/projects/helper/http.js +++ b/projects/helper/http.js @@ -1,9 +1,8 @@ const axios = require("axios") const { request, GraphQLClient, } = require("graphql-request") const sdk = require('@defillama/sdk') -const env = require('./env') +const { getEnv } = require('./env') const { getCache: cGetCache, setCache } = require('./cache') -const COVALENT_KEY = env.COVALENT_KEY ?? 'ckey_72cd3b74b4a048c9bc671f7c5a6' const chainIds = { 'ethereum': 1, @@ -23,7 +22,7 @@ async function getCache(endpoint) { } async function getBlock(timestamp, chain, chainBlocks, undefinedOk = false) { - if (chainBlocks[chain] || (!env.HISTORICAL && undefinedOk)) { + if (chainBlocks[chain] || (!getEnv('HISTORICAL') && undefinedOk)) { return chainBlocks[chain] } else { if (chain === "celo") { @@ -74,7 +73,7 @@ async function covalentGetTokens(address, chain = 'ethereum') { async function _covalentGetTokens() { const { data: { items } - } = await get(`https://api.covalenthq.com/v1/${chainId}/address/${address}/balances_v2/?&key=${COVALENT_KEY}`) + } = await get(`https://api.covalenthq.com/v1/${chainId}/address/${address}/balances_v2/?&key=${getEnv('COVALENT_KEY')}`) let table = {} items .filter(i => +i.balance > 0) diff --git a/projects/helper/solana.js b/projects/helper/solana.js index d8c053dbd3..e7e2a77312 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -1,7 +1,7 @@ const ADDRESSES = require('./coreAssets.json') const axios = require("axios"); const http = require('./http') -const env = require('./env') +const { getEnv } = require('./env') const { transformBalances: transformBalancesOrig, transformDexBalances, } = require('./portedTokens.js') const { getUniqueAddresses } = require('./tokenMapping') const { Connection, PublicKey, Keypair } = require("@solana/web3.js") @@ -21,10 +21,10 @@ const blacklistedTokens_default = [ let connection, provider -const endpoint = env.SOLANA_RPC || "https://try-rpc.mainnet.solana.blockdaemon.tech" +const endpoint = () => getEnv('SOLANA_RPC') function getConnection() { - if (!connection) connection = new Connection(endpoint) + if (!connection) connection = new Connection(endpoint()) return connection } @@ -46,7 +46,7 @@ async function getSolBalances(accounts) { const tokenBalances = [] const chunks = sliceIntoChunks(accounts, 99) for (let chunk of chunks) { - const bal = await axios.post(endpoint, chunk.map(formBody)) + const bal = await axios.post(endpoint(), chunk.map(formBody)) tokenBalances.push(...bal.data) } return tokenBalances.reduce((a, i) => a + i.result.value, 0) @@ -59,7 +59,7 @@ async function getSolBalance(account) { const TOKEN_LIST_URL = "https://cdn.jsdelivr.net/gh/solana-labs/token-list@main/src/tokens/solana.tokenlist.json" async function getTokenSupply(token) { - const tokenSupply = await axios.post(endpoint, { + const tokenSupply = await axios.post(endpoint(), { jsonrpc: "2.0", id: 1, method: "getTokenSupply", @@ -88,7 +88,7 @@ async function getTokenDecimals(tokens) { const res = {} const chunks = sliceIntoChunks(tokens, 99) for (const chunk of chunks) { - const tokenSupply = await axios.post(endpoint, calls(chunk)) + const tokenSupply = await axios.post(endpoint(), calls(chunk)) tokenSupply.data.forEach(({ id, result }) => res[id] = result.value.decimals) } return res @@ -107,7 +107,7 @@ function formTokenBalanceQuery(token, account) { } } async function getTokenBalance(token, account) { - const tokenBalance = await axios.post(endpoint, formTokenBalanceQuery(token, account)); + const tokenBalance = await axios.post(endpoint(), formTokenBalanceQuery(token, account)); return tokenBalance.data.result.value.reduce( (total, account) => total + account.account.data.parsed.info.tokenAmount.uiAmount, @@ -117,7 +117,7 @@ async function getTokenBalance(token, account) { async function getTokenBalances(tokensAndAccounts) { const body = tokensAndAccounts.map(([token, account]) => formTokenBalanceQuery(token, account)) - const tokenBalances = await axios.post(endpoint, body); + const tokenBalances = await axios.post(endpoint(), body); const balances = {} tokenBalances.data.forEach((v, i )=> { if (!v.result) console.log(v, tokensAndAccounts[i]) @@ -138,7 +138,7 @@ async function getTokenAccountBalances(tokenAccounts, { individual = false, chun const chunks = sliceIntoChunks(tokenAccounts, chunkSize) for (const chunk of chunks) { const body = chunk.map(formBody) - const data = await axios.post(endpoint, body); + const data = await axios.post(endpoint(), body); data.data.forEach(({ result: { value } }, i) => { if (!value || !value.data.parsed) { if (tokenAccounts[i].toString() === '11111111111111111111111111111111') { @@ -164,7 +164,7 @@ async function getTokenAccountBalances(tokenAccounts, { individual = false, chun async function getTokenAccountBalance(account) { const tokenBalance = await axios.post( - endpoint, + endpoint(), { jsonrpc: "2.0", id: 1, @@ -210,7 +210,7 @@ async function getMultipleAccountsRaw(accountsArray) { const res = [] const chunks = sliceIntoChunks(accountsArray, 99) for (const chunk of chunks) { - const accountsInfo = await axios.post(endpoint, { + const accountsInfo = await axios.post(endpoint(), { jsonrpc: "2.0", id: 1, method: "getMultipleAccounts", @@ -391,7 +391,7 @@ function readBigUInt64LE(buffer, offset) { } module.exports = { - endpoint, + endpoint: endpoint(), getTokenSupply, getTokenBalance, getTokenAccountBalance, diff --git a/projects/helper/utils.js b/projects/helper/utils.js index a2243c1740..7b68ec4a0f 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -3,7 +3,7 @@ const BigNumber = require("bignumber.js"); const axios = require("axios"); const sdk = require('@defillama/sdk') const http = require('./http') -const env = require('./env') +const { getEnv } = require('./env') const erc20 = require('./abis/erc20.json') async function returnBalance(token, address, block, chain) { @@ -144,7 +144,7 @@ function getUniqueAddresses(addresses, isCaseSensitive = false) { return [...set] } -const DEBUG_MODE = env.LLAMA_DEBUG_MODE +const DEBUG_MODE = () => getEnv('LLAMA_DEBUG_MODE') const log = sdk.log function sliceIntoChunks(arr, chunkSize = 100) { @@ -167,7 +167,7 @@ function stripTokenHeader(token) { } async function diplayUnknownTable({ tvlResults = {}, tvlBalances = {}, storedKey = 'ethereum', tableLabel = 'Unrecognized tokens' }) { - if (!DEBUG_MODE) return; + if (!DEBUG_MODE()) return; const balances = {} storedKey = storedKey.split('-')[0] Object.entries(tvlResults.tokenBalances).forEach(([label, balance]) => { @@ -215,7 +215,7 @@ async function getDecimals(chain, tokens) { } async function debugBalances({ balances = {}, chain, log = false, tableLabel = '', withETH = true }) { - if (!DEBUG_MODE && !log) return; + if (!DEBUG_MODE() && !log) return; if (!Object.keys(balances).length) return; const labelMapping = {} diff --git a/projects/lofty/index.js b/projects/lofty/index.js index a91bbd652f..c3597c946f 100644 --- a/projects/lofty/index.js +++ b/projects/lofty/index.js @@ -1,6 +1,6 @@ const { toUSDTBalances } = require('../helper/balances'); -const { LOFTY_API } = require('../helper/env'); +const { getEnv } = require('../helper/env'); const axios = require("axios"); const LoftyTVLApi = "https://partners.lofty.ai/properties/v2/valuations"; @@ -9,7 +9,7 @@ async function loftyTVL() { const response = ( await axios.get(LoftyTVLApi, { headers: { - 'X-API-Key': LOFTY_API + 'X-API-Key': getEnv('LOFTY_API') } }) ).data.data; diff --git a/projects/olympus/index.js b/projects/olympus/index.js index eb4c2eb581..da2f70e583 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -1,7 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const { blockQuery } = require("../helper/http"); -const env = require("../helper/env"); +const { getEnv } = require("../helper/env"); const { staking } = require('../helper/staking'); const { sumTokens2 } = require("../helper/unwrapLPs"); @@ -65,7 +64,7 @@ query { }`; const subgraphUrls = { - ethereum: `https://gateway.thegraph.com/api/${env.OLYMPUS_GRAPH_API_KEY}/subgraphs/id/DTcDcUSBRJjz9NeoK5VbXCVzYbRTyuBwdPUqMi8x32pY`, + ethereum: `https://gateway.thegraph.com/api/${getEnv('OLYMPUS_GRAPH_API_KEY')}/subgraphs/id/DTcDcUSBRJjz9NeoK5VbXCVzYbRTyuBwdPUqMi8x32pY`, arbitrum: "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-arbitrum", fantom: From 3daf143c3bb750d9b8744a3a0fad9fa7e69b2e7c Mon Sep 17 00:00:00 2001 From: kavsky02 <95619352+kavsky02@users.noreply.github.com> Date: Thu, 13 Jul 2023 09:26:03 +0200 Subject: [PATCH 1123/1354] Add new tokens to DeltaPrime adapter (#6789) * Add SteakHut tokens * Add new tokens * Fix JSON --- projects/deltaprime/mappings/assetToAddressMapping.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/deltaprime/mappings/assetToAddressMapping.json b/projects/deltaprime/mappings/assetToAddressMapping.json index 6fe5809efd..3bd2b801b9 100644 --- a/projects/deltaprime/mappings/assetToAddressMapping.json +++ b/projects/deltaprime/mappings/assetToAddressMapping.json @@ -5,6 +5,8 @@ "ETH": "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", "BTC": "0x152b9d0FdC40C096757F570A51E494bd4b943E50", "USDT": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", + "EUROC": "0xC891EB4cbdEFf6e073e859e987815Ed1505c2ACD", + "GMX": "0x62edc0692BD897D2295872a9FFCac5425011c661", "QI": "0x8729438eb15e2c8b576fcc6aecda6a148776c0f5", "PNG": "0x60781C2586D68229fde47564546784ab3fACA982", "PTP": "0x22d4002028f537599bE9f666d1c4Fa138522f9c8", @@ -38,8 +40,7 @@ "crvUSDBTCETH": "0x1daB6560494B04473A0BE3E7D83CF3Fdf3a51828", "SHLB_AVAX-USDC_B": "0x668530302c6ecc4ebe693ec877b79300ac72527c", "SHLB_BTC.b-AVAX_B": "0x536d7e7423e8fb799549caf574cfa12aae95ffcd", - "GMX": "0x62edc0692bd897d2295872a9ffcac5425011c661", - "EUROC": "0xc891eb4cbdeff6e073e859e987815ed1505c2acd", + "SHLB_JOE-AVAX_B": "0x89547441489262feb5cee346fdacb9037c2574db", "SHLB_EUROC-USDC_V2_1_B": "0x638f969675822dfae4566b44d0f2a11362fbed52", "SHLB_USDT.e-USDt_C": "0x9f44e67ba256c18411bb041375e572e3dd11fa72" } \ No newline at end of file From db7fc05684ed90706a8d9c9de50ef28541b5ad24 Mon Sep 17 00:00:00 2001 From: Rafael Albuquerque <70333411+albuquerque-rafael@users.noreply.github.com> Date: Thu, 13 Jul 2023 03:55:55 -0400 Subject: [PATCH 1124/1354] feat(hidden-hand): add hidden hand tvl (#6779) * feat(hidden-hand): add hidden hand tvl * code refactor * fix(hidden-hand): change subgraph url --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hidden-hand/index.js | 84 +++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 projects/hidden-hand/index.js diff --git a/projects/hidden-hand/index.js b/projects/hidden-hand/index.js new file mode 100644 index 0000000000..8f9deeb7af --- /dev/null +++ b/projects/hidden-hand/index.js @@ -0,0 +1,84 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { cachedGraphQuery } = require('../helper/cache') + +const protocol_contracts = { + ethereum: { + v1: { + distributor: "0x0b139682d5c9df3e735063f46fb98c689540cf3a", + vault: "0x9DDb2da7Dd76612e0df237B89AF2CF4413733212", + }, + v2: { + distributor: "0xa9b08B4CeEC1EF29EdEC7F9C94583270337D6416", + vault: "0xE00fe722e5bE7ad45b1A16066E431E47Df476CeC", + harvester: "0xd23aa7EdF42CD3Fc4CD391faAbc0c207B1c86542", + }, + }, + optimism: { + v1: { + distributor: "0x0b139682d5c9df3e735063f46fb98c689540cf3a", + vault: "0x9DDb2da7Dd76612e0df237B89AF2CF4413733212", + }, + v2: { + distributor: "0x7354BB6842E421773E7b78f8875A1B85991677c0", + vault: "0xa9b08B4CeEC1EF29EdEC7F9C94583270337D6416", + harvester: "0x4573F58461acd1a6C743d9CDE34A142Ca18B6873", + }, + }, + arbitrum: { + v2: { + distributor: "0x0A390DE04B7717B078CF5c8A7Eb891130d4a843b", + vault: "0x8d89593c199Cb763bDEF04529F978f82503E4669", + harvester: "0xcA795Dc6f668add4801D2B92cF36C8FBcBEb8Ac4", + }, + }, +}; + +const subgraphs = { + ethereum: { + v1: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand", + v2: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v2", + }, + optimism: { + v1: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v1-optimism", + v2: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v2-optimism", + }, + arbitrum: { + v2: "https://api.thegraph.com/subgraphs/name/albuquerque-rafael/hidden-hand-v2-arbitrum", + }, +}; + +async function getTokens(chain, version) { + const graphQuery = ` + { + tokens { + address + } + } + `; + + const { tokens } = await cachedGraphQuery(`hidden-hand/${chain}-${version}`, subgraphs[chain][version], graphQuery); + const addresses = tokens.map((token) => token.address); + + return addresses; +} + +async function tvl(ts, block, _, { api }) { + const { chain } = api + const ownerTokens = [] + + for (const version of Object.keys(protocol_contracts[chain])) { + const tokens = await getTokens(chain, version); + for (const owner of Object.values(protocol_contracts[chain][version])) { + ownerTokens.push([tokens, owner]) + } + } + + return sumTokens2({ api, ownerTokens, permitFailure: true, }); +} + +module.exports = { + methodology: `Sums bribe tokens deposited on Hidden Hand Reward Distributors, Bribe Vaults and Harvester contracts.`, + ethereum: { tvl }, + optimism: { tvl }, + arbitrum: { tvl }, +}; From a91e89648db67b6d6779dc51c4fbb4373f7a0093 Mon Sep 17 00:00:00 2001 From: chainupk <121842069+chainupk@users.noreply.github.com> Date: Thu, 13 Jul 2023 16:09:37 +0800 Subject: [PATCH 1125/1354] updated nodedao etehreum tvl calculations (#6785) Co-authored-by: zhenhao goh --- projects/node-dao/index.js | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js index 6c70f489ac..e19286cb84 100644 --- a/projects/node-dao/index.js +++ b/projects/node-dao/index.js @@ -3,9 +3,31 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') module.exports = { ethereum: { tvl: async (_, _1, _2, { api }) => { - const owner = '0x8103151E2377e78C04a3d2564e20542680ed3096' - const totalEth = await api.call({ abi: 'uint256:getTotalEthValue', target: owner }) - api.add(nullAddress,totalEth) + // nodeDAO v0 validator nft + const nodeDaoV0ValidatorNFT = '0x40Cd77D9aa9e0b2D485259415eA05486B201c514' + const v0VdalitorsNumber = await api.call({ abi: 'uint256:totalSupply', target: nodeDaoV0ValidatorNFT }) + + // nodeDAO liquidStaking + const nodeDaoLiquidStaking = '0x8103151E2377e78C04a3d2564e20542680ed3096' + const nethTVL = await api.call({ abi: 'uint256:getTotalEthValue', target: nodeDaoLiquidStaking }) + + // nodeDAO v1 validator nft + const nodeDaoV1ValidatorNFT = '0x58553F5c5a6AEE89EaBFd42c231A18aB0872700d' + const v1Vdalitors = await api.call({ abi: 'uint256[]:activeNftsOfUser', target: nodeDaoV1ValidatorNFT }) + + // nodeDAO totalEth = nethTVL + (v1ValidatorNumber + v0VdalitorsNumber)* 32 eth + let totalEth = parseInt(nethTVL) + (v1Vdalitors.length + parseInt(v0VdalitorsNumber)) * 32_000_000_000_000_000_000 + + // nodeDAO largeStaking + const nodeDaoLargeStaking = '0xBBd19e8F766Dcc94D50e47502b79C81cdaD484B8' + const nodeOperatorRegistry = '0x8742178Ac172eC7235E54808d5F327C30A51c492' + const operatorNumbers = await api.call({ abi: 'uint256:getNodeOperatorsCount', target: nodeOperatorRegistry }) + for (let i = 1; i <= operatorNumbers; i++) { + const validatorNumbers = await api.call({ abi: 'function getOperatorValidatorCounts(uint256 _operatorId) external view returns (uint256)', target: nodeDaoLargeStaking, params: [i] }) + totalEth += parseInt(validatorNumbers) * 32_000_000_000_000_000_000 + } + + api.add(nullAddress, totalEth) } } -} \ No newline at end of file +} From 1f8bae9b07cdd5433467b888ed159f8d93428078 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 13:59:48 +0530 Subject: [PATCH 1126/1354] Revert "updated nodedao etehreum tvl calculations (#6785)" (#6793) This reverts commit a91e89648db67b6d6779dc51c4fbb4373f7a0093. --- projects/node-dao/index.js | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js index e19286cb84..6c70f489ac 100644 --- a/projects/node-dao/index.js +++ b/projects/node-dao/index.js @@ -3,31 +3,9 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') module.exports = { ethereum: { tvl: async (_, _1, _2, { api }) => { - // nodeDAO v0 validator nft - const nodeDaoV0ValidatorNFT = '0x40Cd77D9aa9e0b2D485259415eA05486B201c514' - const v0VdalitorsNumber = await api.call({ abi: 'uint256:totalSupply', target: nodeDaoV0ValidatorNFT }) - - // nodeDAO liquidStaking - const nodeDaoLiquidStaking = '0x8103151E2377e78C04a3d2564e20542680ed3096' - const nethTVL = await api.call({ abi: 'uint256:getTotalEthValue', target: nodeDaoLiquidStaking }) - - // nodeDAO v1 validator nft - const nodeDaoV1ValidatorNFT = '0x58553F5c5a6AEE89EaBFd42c231A18aB0872700d' - const v1Vdalitors = await api.call({ abi: 'uint256[]:activeNftsOfUser', target: nodeDaoV1ValidatorNFT }) - - // nodeDAO totalEth = nethTVL + (v1ValidatorNumber + v0VdalitorsNumber)* 32 eth - let totalEth = parseInt(nethTVL) + (v1Vdalitors.length + parseInt(v0VdalitorsNumber)) * 32_000_000_000_000_000_000 - - // nodeDAO largeStaking - const nodeDaoLargeStaking = '0xBBd19e8F766Dcc94D50e47502b79C81cdaD484B8' - const nodeOperatorRegistry = '0x8742178Ac172eC7235E54808d5F327C30A51c492' - const operatorNumbers = await api.call({ abi: 'uint256:getNodeOperatorsCount', target: nodeOperatorRegistry }) - for (let i = 1; i <= operatorNumbers; i++) { - const validatorNumbers = await api.call({ abi: 'function getOperatorValidatorCounts(uint256 _operatorId) external view returns (uint256)', target: nodeDaoLargeStaking, params: [i] }) - totalEth += parseInt(validatorNumbers) * 32_000_000_000_000_000_000 - } - - api.add(nullAddress, totalEth) + const owner = '0x8103151E2377e78C04a3d2564e20542680ed3096' + const totalEth = await api.call({ abi: 'uint256:getTotalEthValue', target: owner }) + api.add(nullAddress,totalEth) } } -} +} \ No newline at end of file From a0fc3ada9487e82a4a25b97bc8b74cb6ffd179f0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 10:35:07 +0200 Subject: [PATCH 1127/1354] fix helio money --- projects/helio-money/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/helio-money/index.js b/projects/helio-money/index.js index 8969efde6b..accb969050 100644 --- a/projects/helio-money/index.js +++ b/projects/helio-money/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require('../helper/unknownTokens') module.exports = { @@ -7,8 +8,9 @@ module.exports = { //[1670544000,"aBNBc to AnkrBNB swap & HAY buyback"] ], bsc: { - tvl: sumTokensExport({ chain: 'bsc', owner: '0x25b21472c073095bebC681001Cbf165f849eEe5E', tokens: [ + tvl: sumTokensExport({ owner: '0x25b21472c073095bebC681001Cbf165f849eEe5E', tokens: [ '0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827', // ankrBNB + ADDRESSES.null, ] }), } } From e6953164bada28d2227a3a3e74fd22a12b2cea0e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 10:39:47 +0200 Subject: [PATCH 1128/1354] fix nexon --- projects/helper/compound.js | 2 +- projects/nexon/index.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/projects/helper/compound.js b/projects/helper/compound.js index fa243b8d28..d819e42f83 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -172,7 +172,7 @@ function getCompoundV2Tvl(comptroller, chain, transformAdress, await unwrapUniswapLPs(balances, lpPositions, block, chain, transformAdress) } - if (resolveLPs) return unwrapLPsAuto({ balances, block, chain}) + if (resolveLPs) return unwrapLPsAuto({ balances, block, chain, abis}) return balances; } diff --git a/projects/nexon/index.js b/projects/nexon/index.js index f592935d29..aa8d221b21 100644 --- a/projects/nexon/index.js +++ b/projects/nexon/index.js @@ -3,6 +3,9 @@ const { nullAddress } = require('../helper/tokenMapping'); module.exports = { era: compoundExports('0x0171cA5b372eb510245F5FA214F5582911934b3D', 'era', '0x1BbD33384869b30A323e15868Ce46013C82B86FB', nullAddress, undefined, undefined, { - resolveLPs: false + resolveLPs: true, + abis: { + getReservesABI: 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)' + } }), }; \ No newline at end of file From 3f44d74f0f9c0a9796ce1382bbf39d63765b1715 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:44:51 +0200 Subject: [PATCH 1129/1354] fix liqwid --- projects/liqwid/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index 65cacb6816..cb366728f2 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -63,9 +63,6 @@ const query = `{ market { scripts { actionToken { - assetClass { - name - } script { value0 { value0 From 3654ed505bbe8db4c6b239c68f6b0a40fc26fc60 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 12:28:08 +0200 Subject: [PATCH 1130/1354] fix croswap --- projects/croswap/index.js | 40 +++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/projects/croswap/index.js b/projects/croswap/index.js index 47d3dcee32..983df3793d 100644 --- a/projects/croswap/index.js +++ b/projects/croswap/index.js @@ -1,38 +1,46 @@ const { staking } = require("../helper/staking"); const { getLogs, getAddress } = require('../helper/cache/getLogs'); const { transformDexBalances } = require("../helper/portedTokens"); +const { cachedGraphQuery } = require('../helper/cache') module.exports = { misrepresentedTokens: true, } async function tvl(_, _b, _cb, { api, }) { - const { factory, fromBlock }= config[api.chain] - - const logs = await getLogs({ - api, - target: factory, - topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], - fromBlock, - }) - const pools = logs.map(i => getAddress(i.data.slice(0, 64 + 2))) - const token0s = await api.multiCall({ abi: 'address:token0', calls: pools}) - const token1s = await api.multiCall({ abi: 'address:token1', calls: pools}) - const reserves = await api.multiCall({ abi: 'function getReserves() view returns (uint112, uint112, uint32)', calls: pools}) - const data = reserves.map(([token0Bal, token1Bal], i) => ({ token0Bal, token1Bal, token1: token1s[i], token0: token0s[i]})) + const { factory, fromBlock } = config[api.chain] + let pools + + if (api.chain === 'cronos') { + const data = await cachedGraphQuery('croswap/cronos', 'https://graph.croswap.com/subgraphs/name/croswap/croswap-v2', `{ pairInfos { pair { id}}}`) + pools = data.pairInfos.map(i => i.pair.id) + } else { + + const logs = await getLogs({ + api, + target: factory, + topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], + fromBlock, + }) + pools = logs.map(i => getAddress(i.data.slice(0, 64 + 2))) + } + const token0s = await api.multiCall({ abi: 'address:token0', calls: pools }) + const token1s = await api.multiCall({ abi: 'address:token1', calls: pools }) + const reserves = await api.multiCall({ abi: 'function getReserves() view returns (uint112, uint112, uint32)', calls: pools }) + const data = reserves.map(([token0Bal, token1Bal], i) => ({ token0Bal, token1Bal, token1: token1s[i], token0: token0s[i] })) return transformDexBalances({ ...api, data, }) } const config = { - arbitrum: { factory: '0x8f6ecb066f2bfe31bf87e022c76f63bc4642d8bc', fromBlock: 82954506, stakingContracts: ['0x8e9DA87f58A8480dD6b8878Aa37144a5Fb2F122D'], cros: '0x780469101caBD2bFe4B596D98d4777C2a142e012'}, - cronos: { factory: '0x4ae2bd26e60741890edb9e5c7e984bb396ec26e3', fromBlock: 4807004, stakingContracts: ['0xedfe968033fd2b9a98371d052cd7f32a711e533a'], cros: '0x1Ba477CA252C0FF21c488d41759795E7E7812aB4'}, + arbitrum: { factory: '0x8f6ecb066f2bfe31bf87e022c76f63bc4642d8bc', fromBlock: 82954506, stakingContracts: ['0x8e9DA87f58A8480dD6b8878Aa37144a5Fb2F122D'], cros: '0x780469101caBD2bFe4B596D98d4777C2a142e012' }, + cronos: { factory: '0x4ae2bd26e60741890edb9e5c7e984bb396ec26e3', fromBlock: 4807004, stakingContracts: ['0xedfe968033fd2b9a98371d052cd7f32a711e533a'], cros: '0x1Ba477CA252C0FF21c488d41759795E7E7812aB4' }, } module.exports = { }; Object.keys(config).forEach(chain => { - const {stakingContracts, cros,} = config[chain] + const { stakingContracts, cros, } = config[chain] module.exports[chain] = { tvl, staking: staking(stakingContracts, cros) } From abf15e6acd0fb219cc9e859df64a99ca367dec1c Mon Sep 17 00:00:00 2001 From: Bluespadexyz <129598406+Bluespadexyz@users.noreply.github.com> Date: Thu, 13 Jul 2023 19:31:00 +0900 Subject: [PATCH 1131/1354] add bluespade to DefiLlama (#6795) * add bluespade to DefiLlama * minor fix --------- Co-authored-by: alphamate Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bluespade/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/bluespade/index.js diff --git a/projects/bluespade/index.js b/projects/bluespade/index.js new file mode 100644 index 0000000000..0bf9136b7e --- /dev/null +++ b/projects/bluespade/index.js @@ -0,0 +1,22 @@ +const {staking} = require('../helper/staking') +const { gmxExports } = require('../helper/gmx') + +//Cronos +const cronosVault = '0x26e5FbFbfd38a27D5777C9C9CC5543e687E637D8'; +const cronosStaking = '0xbCCE1c2efDED06ee73183f8B20f03e452EF8495D'; +const cronosBLU = '0x1542bA4CA0fb6D1B4476a933B292002fd1959A52'; +//Polygon +const polygonVault = '0xd6f70237f501891C3E1634544F36E026250c2D3F' +const polygonStaking = '0xb710f0D97023340eB3faBC4259FEAdf3bBeDdf05' +const polygonBLU = '0x759d34685468604c695De301ad11A9418e2f1038' + +module.exports = { + cronos: { + staking: staking(cronosStaking, cronosBLU), + tvl: gmxExports({ vault: cronosVault, }) + }, + polygon:{ + staking: staking(polygonStaking, polygonBLU), + tvl: gmxExports({ vault: polygonVault, }) + } +}; From ec32dc7f90f42882f004e0e118f3dd597b154b6c Mon Sep 17 00:00:00 2001 From: Roch Date: Thu, 13 Jul 2023 14:42:11 +0200 Subject: [PATCH 1132/1354] Fix Owna protocol tvl by calling contract (#6790) * Fix Owna protocol tvl by calling contract * count borrows as borrows * remove repaid borrows * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/owna/config.js | 5 ++--- projects/owna/index.js | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/projects/owna/config.js b/projects/owna/config.js index 05d736df3c..ad8b5edca0 100644 --- a/projects/owna/config.js +++ b/projects/owna/config.js @@ -6,9 +6,8 @@ module.exports = { tokens: [ ADDRESSES.polygon_zkevm.USDC, ], - holders: [ - '0x27Ca3D6c64398FF9BcF2E66896EC4B3BEc5e1959', - ] + nftContract: '0xa0db7ef54eeffb7a3a5d9e7a95fb853392573b90', + lendingContract: '0x27Ca3D6c64398FF9BcF2E66896EC4B3BEc5e1959', }, ] } \ No newline at end of file diff --git a/projects/owna/index.js b/projects/owna/index.js index ad2b1240da..84a4aece5a 100644 --- a/projects/owna/index.js +++ b/projects/owna/index.js @@ -5,9 +5,22 @@ module.exports = { methodology: 'Counts the amount of stables locked in Owna protocol contracts', }; -config.chains.forEach(chainInfo => { - const {name: chain, tokens, holders} = chainInfo +config.chains.forEach(async chainInfo => { + const { name: chain, tokens, lendingContract, nftContract } = chainInfo + + async function borrowed(_, _1, _2, { api }) { + const count = await api.call({ abi: 'uint256:noOfTokenId', target: nftContract }) + let calls = [] + for (let i = 0; i < count; i++) calls.push(i) + const borrows = await api.multiCall({ calls, abi: 'function borrow(uint256) view returns (bool nft, bool isEntryFeePaid, bool isSold, uint256 nftId, uint256 offerType, uint256 loanAmount, uint256 debtPaid, uint256 lastUpdate, uint256 borrowedStartTime)', target: lendingContract }) + borrows.forEach(borrow => { + if (!borrow.isEntryFeePaid) + api.add(tokens[0], borrow.loanAmount - borrow.debtPaid) + }) + } + module.exports[chain] = { - tvl: sumTokensExport({ chain, tokens, owners: holders }) + tvl: sumTokensExport({ tokens, owners: [lendingContract] }), + borrowed, } -}) \ No newline at end of file +}) From 60f2d349d1c2a22a01b1eeb0e433dbef89cef4cc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 14:54:19 +0200 Subject: [PATCH 1133/1354] track mare v2 --- projects/mare-finance-v2/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/mare-finance-v2/index.js diff --git a/projects/mare-finance-v2/index.js b/projects/mare-finance-v2/index.js new file mode 100644 index 0000000000..c4848883fe --- /dev/null +++ b/projects/mare-finance-v2/index.js @@ -0,0 +1,11 @@ +const { compoundExports } = require("../helper/compound"); +const { staking } = require("../helper/staking"); + +const unitroller = "0xFcD7D41D5cfF03C7f6D573c9732B0506C72f5C72"; + +module.exports = { + methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", + kava: { + ...compoundExports(unitroller, "kava"), + }, +} \ No newline at end of file From 78f2a5132b33c6382d7026c8e617824562304640 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 15:35:58 +0200 Subject: [PATCH 1134/1354] delist genshiro --- projects/genshiro/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/genshiro/index.js b/projects/genshiro/index.js index ea2ed9934e..e940d249d9 100644 --- a/projects/genshiro/index.js +++ b/projects/genshiro/index.js @@ -2,5 +2,8 @@ const { getExports } = require('../helper/heroku-api') module.exports = { timetravel: false, - ...getExports("genshiro", ['genshiro']) + // ...getExports("genshiro", ['genshiro']), + genshiro: { + tvl: async () => ({}), + } } \ No newline at end of file From 610a4096c41e352fd91bec22830d989023b0b838 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Thu, 13 Jul 2023 14:58:26 +0100 Subject: [PATCH 1135/1354] new lp in Invest (#6788) * new lp in Invest * add base assets aswell if available * add base assets aswell if available * usdt vault and new kava vault --------- Co-authored-by: theg --- projects/scrubinvest/index.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index e14eaa6409..1621561e06 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -13,6 +13,9 @@ async function tvl(_, _b, _cb, { api, }) { { target: '0x8EEA85dA61b397EaB933C001DAAD6fC1C5A4c67C', params: '0xcf4673F714183C42DADc1B42DAC21BE09cfc3684' }, { target: '0xc28fcef5970fd23e5bfcdc31ce1ba72ef98cc70a', params: '0xef7541FCa94988fA423bC418a854f7967f83a3E0' }, { target: '0x371d33963fb89ec9542a11ccf955b3a90391f99f', params: '0x43Ac7f627e41EBDa7515FEaCa425306AaB9cB602' }, + { target: '0x1E5573b2A7C1D08112d0Ff22e9F2D8EFc9583532', params: '0x9e890FBD4295D92c41fA12a2083b51C387699Fd8' }, + { target: '0x8fE243F8B47107c468537D74514d7c52Cd61E937', params: '0x56a9c9230d6D3b7bF147c10fdDBCD8F2eB1a2B6d' }, + ] const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls }) const lps = await api.multiCall({ abi: 'address:stake', calls: calls.map(i => i.target)}) @@ -26,8 +29,20 @@ async function tvl(_, _b, _cb, { api, }) { ['0x92e17FD2DA50775FBD423702E4717cCD7FB2A6BB', '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], ['0x58333b7D0644b52E0e56cC3803CA94aF9e0B52C3', '0xB4Ba7ba722eacAE8f1e4c6213AF05b5E8B27dbdB'], ['0x24149e2D0D3F79EBb7Fc464b09e3628dE395b39D', '0xB9774bB2A18Af59Ec9bf86dCaeC07473A2D2F230'], - // WETH ['0x0B6c2a9d4d739778dF6cD1cf815754BD1438063c', '0x3CcA2C0d433E00433082ba16e968CA11dA6Dc156'], + ['0x2f9e61D4E9A9A3694CcDc287c790EA5cc3302E88', '0x1504B9EDdD57Ed8252b3b3b407DdE27B72A80790'], + ['0x350c4A0aC240755Bb6432FeB907eCAFbbBc75770', '0xC05021F3b3601BF33aB59dc75577B85985ACaab7'], + // also count base assets if available + ['0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', '0xcd017B495DF1dE2DC8069b274e2ddfBB78561176'], + ['0xB44a9B6905aF7c801311e8F4E76932ee959c663C', '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], + ['0x765277EebeCA2e31912C9946eAe1021199B39C61', '0xB4Ba7ba722eacAE8f1e4c6213AF05b5E8B27dbdB'], + ['0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', '0xB9774bB2A18Af59Ec9bf86dCaeC07473A2D2F230'], + ['0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', '0x3CcA2C0d433E00433082ba16e968CA11dA6Dc156'], + ['0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', '0x1504B9EDdD57Ed8252b3b3b407DdE27B72A80790'], + ['0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', '0xC05021F3b3601BF33aB59dc75577B85985ACaab7'], + + // WETH + // Vaults Equilibre Scrub // ['0xeA848151ACB1508988e56Ee7689F004df2B15ced', "0x4402Cf5433D57266563979654d20887AcE672393"], // ['0x7f8ed7d31795dc6f5fc5f6685b11419674361501', "0xa2355f35Ab85f1771FB1085a0e5b2599B8F47457"], From c09e634904416a2ad1625a9b2ecbf0da3ef98490 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 16:25:44 +0200 Subject: [PATCH 1136/1354] fix protectorate --- projects/helper/erc4626.js | 18 ++++++++++++++++++ projects/protectorate/index.js | 16 ++++++---------- 2 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 projects/helper/erc4626.js diff --git a/projects/helper/erc4626.js b/projects/helper/erc4626.js new file mode 100644 index 0000000000..7beff42e8c --- /dev/null +++ b/projects/helper/erc4626.js @@ -0,0 +1,18 @@ + +async function sumERC4626Vaults({ api, vaults }) { + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults}) + api.addTokens(tokens, bals) + return api.getBalances() +} + +function sumERC4626VaultsExport({ vaults, ...options}) { + return async (timestamp, ethBlock, chainBlocks, { api }) => { + return sumERC4626Vaults({ ...options, api, vaults }) + } +} + +module.exports = { + sumERC4626Vaults, + sumERC4626VaultsExport, +} \ No newline at end of file diff --git a/projects/protectorate/index.js b/projects/protectorate/index.js index 1248a900d1..20c9813de6 100644 --- a/projects/protectorate/index.js +++ b/projects/protectorate/index.js @@ -1,11 +1,7 @@ -const { treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') +const { sumERC4626VaultsExport } = require("../helper/erc4626"); -module.exports = treasuryExports({ - ethereum: { - tokens: [ - ADDRESSES.ethereum.WETH, - ], - owners: ["0xaF53431488E871D103baA0280b6360998F0F9926"], - }, -}) \ No newline at end of file +module.exports = { + ethereum: { + tvl: sumERC4626VaultsExport({ vaults: ["0xaF53431488E871D103baA0280b6360998F0F9926"], }), + }, +} \ No newline at end of file From a610c90e69ae8ab45eabb82900a8d8179061d344 Mon Sep 17 00:00:00 2001 From: IamNimrod <125320281+IamNimrod@users.noreply.github.com> Date: Thu, 13 Jul 2023 16:46:27 +0200 Subject: [PATCH 1137/1354] Add ChainTools Adapter (#6794) * Added initial ChainTools Adapter for TVL Calcs * code refactor * lint fix * add treasury adapter --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/chaintools/index.js | 18 ++++++++++++++++++ projects/treasury/chaintools.js | 11 +++++++++++ 2 files changed, 29 insertions(+) create mode 100644 projects/chaintools/index.js create mode 100644 projects/treasury/chaintools.js diff --git a/projects/chaintools/index.js b/projects/chaintools/index.js new file mode 100644 index 0000000000..79b1d943e7 --- /dev/null +++ b/projects/chaintools/index.js @@ -0,0 +1,18 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const YIELD_BOOSTER_ADDRESS = "0x9954B485E650E067BCAD654F66CD67DAC122123b"; +const YIELD_VAULT_ADDRESS = "0xce2C952B27FCc41F868BDC32c9411F0759378ED0"; +const MULTISIG_ADDRESS = "0xb0Df68E0bf4F54D06A4a448735D2a3d7D97A2222"; +const CTLS_ADDRESS = "0xE155F64B9aD8c81318c313196a60c72e72fD2cD1"; +const UNI_V3_POOL = "0xc53489F27F4d8A1cdceD3BFe397CAF628e8aBC13"; // we cant count liquidity on uni v3 as your tvl +const INCENTIVES_WALLET = "0x9318a070a16E25554f098c6930B506123b66E19d"; // this is EOA, whis is it included in tvl? +const COMPOUNDING_KEEPER_ADDRESS = "0x5648C24Ea7cFE703836924bF2080ceFa44A12cA8"; // this is EOA, whis is it included in tvl? + +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + methodology: "Total balances of the Uniswap V3 Pool plus protocol/user controlled balances (in WETH+ETH and CTLS)", + ethereum: { + tvl: sumTokensExport({ owners: [YIELD_VAULT_ADDRESS,], tokens: [ADDRESSES.ethereum.WETH, ADDRESSES.null, ], }), + staking: sumTokensExport({ owners: [YIELD_BOOSTER_ADDRESS, YIELD_VAULT_ADDRESS,], tokens: [CTLS_ADDRESS,], }), + }, +}; diff --git a/projects/treasury/chaintools.js b/projects/treasury/chaintools.js new file mode 100644 index 0000000000..808a225cc0 --- /dev/null +++ b/projects/treasury/chaintools.js @@ -0,0 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const MULTISIG_ADDRESS = "0xb0Df68E0bf4F54D06A4a448735D2a3d7D97A2222"; +const CTLS_ADDRESS = "0xE155F64B9aD8c81318c313196a60c72e72fD2cD1"; +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + ethereum: { + tvl: sumTokensExport({ owners: [MULTISIG_ADDRESS,], tokens: [ADDRESSES.ethereum.WETH, ADDRESSES.null, ADDRESSES.ethereum.USDC,], }), + ownTokens: sumTokensExport({ owners: [MULTISIG_ADDRESS,], tokens: [CTLS_ADDRESS, ], }), + }, +}; From ff8493bea0fd93b5d86937d7d7d7d545dac79a37 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jul 2023 18:26:22 +0200 Subject: [PATCH 1138/1354] fix quoll --- projects/quoll/index.js | 96 ++++++++++------------------------------- 1 file changed, 22 insertions(+), 74 deletions(-) diff --git a/projects/quoll/index.js b/projects/quoll/index.js index c8799c1233..26ea2999c5 100644 --- a/projects/quoll/index.js +++ b/projects/quoll/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); -const { ethers: {BigNumber} } = require("ethers") +const { ethers: { BigNumber } } = require("ethers") const { staking } = require("../helper/staking"); const abi = require('./abi.json'); const voterProxy = '0xe96c48C5FddC0DC1Df5Cf21d68A3D8b3aba68046'; @@ -11,95 +11,43 @@ const wom = '0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1'; const veWom = '0x3DA62816dD31c56D9CdF22C6771ddb892cB5b0Cc'; const chain = 'bsc'; -async function voterProxyBalances(block) { - const poolLength = await sdk.api.abi.call({ - abi: abi.poolLength, - target: masterWombat, - params: [], - block, - chain - }).then(l => parseInt(l.output.toString())); +async function voterProxyBalances(api) { + const poolLength = await api.call({ abi: abi.poolLength, target: masterWombat, }) - const masterWombatPoolInfos = await sdk.api.abi.multiCall({ - block, - abi: abi.poolInfo, - calls: Array.from(Array(poolLength).keys()).map((pid) => ({ target: masterWombat, params: [pid] })), - chain, - }); - - const masterWombatVoterProxyBalances = await sdk.api.abi.multiCall({ - block, - abi: abi.userInfo, - calls: Array.from(Array(poolLength).keys()).map((pid) => ({ target: masterWombat, params: [pid, voterProxy] })), - chain, - }); - - const lpTokenTargets = masterWombatPoolInfos.output.map((pool) => ({ target: pool.output.lpToken, params: [] })); + const masterWombatPoolInfos = await api.multiCall({ abi: abi.poolInfo, target: masterWombat, calls: Array.from(Array(+poolLength).keys()), }); + const masterWombatVoterProxyBalances = await api.multiCall({ abi: abi.userInfo, target: masterWombat, calls: Array.from(Array(+poolLength).keys()).map((pid) => ({ params: [pid, voterProxy] })), }); - const lpPools = await sdk.api.abi.multiCall({ - block, - abi: abi.pool, - calls: lpTokenTargets, - chain, - }); - - const underlyingTokens = await sdk.api.abi.multiCall({ - block, - abi: abi.underlyingToken, - calls: lpTokenTargets, - chain, - }); + const lpTokenTargets = masterWombatPoolInfos.map((pool) => pool.lpToken); + const lpPools = await api.multiCall({ abi: abi.pool, calls: lpTokenTargets, }); + const underlyingTokens = await api.multiCall({ abi: abi.underlyingToken, calls: lpTokenTargets, }); - const underlyingAmounts = await sdk.api.abi.multiCall({ - block, + const underlyingAmounts = await api.multiCall({ abi: abi.quotePotentialWithdraw, - calls: lpPools.output.map((pool, index) => { + calls: lpPools.map((pool, index) => { return { - target: pool.output, - params: [underlyingTokens.output[index].output, masterWombatVoterProxyBalances.output[index].output.amount], + target: pool, + params: [underlyingTokens[index], masterWombatVoterProxyBalances[index].amount], }; }), - chain, permitFailure: true, }); - return underlyingAmounts.output + return underlyingAmounts .map((a, i) => { - if (masterWombatVoterProxyBalances.output[i].output.amount === '0') return; - if (underlyingTokens.output[i].output.toLowerCase() === ADDRESSES.bsc.ankrBNB.toLowerCase()) return; // disable aBNBc (ankr bnb) - return ({amount: a.output.amount, token: underlyingTokens.output[i].output}) - }).filter(i => i); + if (+masterWombatVoterProxyBalances[i].amount === 0) return; + if (underlyingTokens[i].toLowerCase() === ADDRESSES.bsc.ankrBNB.toLowerCase()) return; // disable aBNBc (ankr bnb) + if (a) + api.add(underlyingTokens[i], a.amount) + }) } -async function veWomBalance(block) { - return sdk.api.erc20.balanceOf({ - owner: voterProxy, - target: veWom, - block, - chain, - }).then(s => s.output); -} - -async function tvl(timestamp, ethereumBlock, chainBlocks) { - const block = chainBlocks[chain]; - - let balances = {}; - balances[`${chain}:${wom}`] = await veWomBalance(block); - - const vpBalances = await voterProxyBalances(block); - vpBalances.forEach(b => { - if (balances[`${chain}:${b.token}`]) { - balances[`${chain}:${b.token}`] = BigNumber.from(balances[`${chain}:${b.token}`]).add(BigNumber.from(b.amount)).toString(); - } else { - balances[`${chain}:${b.token}`] = b.amount; - } - }); - - return balances; +async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { + api.add(wom, await api.call({ abi: 'erc20:balanceOf', target: veWom, params: [voterProxy], })) + await voterProxyBalances(api) } module.exports = { methodology: - "TVL of Quoll Finance consists of Wombat LP tokens staked in MasterWombat, WOM tokens locked in veWOM, and Quoll tokens locked in QUO Vote Lock contract.", + "TVL of Quoll Finance consists of Wombat LP tokens staked in MasterWombat, WOM tokens locked in veWOM, and Quoll tokens locked in QUO Vote Lock contract.", bsc: { tvl, staking: staking( From b275d8c04077cedfab5637fa457ff282ec3f806b Mon Sep 17 00:00:00 2001 From: Elliot Shiu Date: Thu, 13 Jul 2023 12:51:08 -0700 Subject: [PATCH 1139/1354] sommelier: add RealYieldBTC cellar (#6797) --- projects/sommelier/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index fd08f3c7e9..a263c6bd29 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -32,6 +32,7 @@ const REAL_YIELD_1INCH = "0xc7b69e15d86c5c1581dacce3cacaf5b68cd6596f"; const REAL_YIELD_UNI = "0x6a6af5393dc23d7e3db28d28ef422db7c40932b6"; const REAL_YIELD_SNX = "0xcbf2250f33c4161e18d4a2fa47464520af5216b5"; const REAL_YIELD_ENS = "0x18ea937aba6053bc232d9ae2c42abe7a8a2be440"; +const REAL_YIELD_BTC = "0x0274a704a6d9129f90a62ddc6f6024b33ecdad36"; const FRAXIMAL = "0xdbe19d1c3f21b1bb250ca7bdae0687a97b5f77e6"; const cellarsV2 = [ @@ -43,6 +44,7 @@ const cellarsV2 = [ { id: REAL_YIELD_UNI, startBlock: 17377190 }, { id: REAL_YIELD_SNX, startBlock: 17377190 }, { id: REAL_YIELD_ENS, startBlock: 17377190 }, + { id: REAL_YIELD_BTC, startBlock: 17667535 }, { id: FRAXIMAL, startBlock: 17589948 }, ]; From a199fe058ddfcf19ebe4ba8f35814423a757e1de Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 14 Jul 2023 00:37:41 +0100 Subject: [PATCH 1140/1354] add hallmarks --- projects/sashimidao/index.js | 3 +++ projects/sierra/index.js | 3 +++ projects/trapeza-protocol/index.js | 3 +++ 3 files changed, 9 insertions(+) diff --git a/projects/sashimidao/index.js b/projects/sashimidao/index.js index 14c3c14578..015f1abed7 100644 --- a/projects/sashimidao/index.js +++ b/projects/sashimidao/index.js @@ -36,6 +36,9 @@ async function avaxTvl(timestamp, chainBlocks) { } module.exports = { + hallmarks: [ + [1642464000, "Rug Pull"] + ], misrepresentedTokens: true, avax: { staking: stakings(sashimidaoStakings, SASHI, "avax"), diff --git a/projects/sierra/index.js b/projects/sierra/index.js index f48d243865..7692061507 100644 --- a/projects/sierra/index.js +++ b/projects/sierra/index.js @@ -9,6 +9,9 @@ const treasuryTokens = [ ]; module.exports = { + hallmarks: [ + [1648765747, "Rug Pull"] + ], deadFrom: 1648765747, misrepresentedTokens: true, ...ohmTvl(treasury, treasuryTokens, "avax", tokenStaking, token, undefined, undefined, false) diff --git a/projects/trapeza-protocol/index.js b/projects/trapeza-protocol/index.js index 250b68315e..7e8925d946 100644 --- a/projects/trapeza-protocol/index.js +++ b/projects/trapeza-protocol/index.js @@ -10,6 +10,9 @@ const treasuryTokens = [ ]; module.exports = { + hallmarks: [ + [1648684800, "Rug Pull"] + ], misrepresentedTokens: true, ...ohmTvl(treasury, treasuryTokens, "bsc", fidlStaking, fidl, undefined, undefined, false) } \ No newline at end of file From 7587020ddaa0ff7e33cfc3d2a59ca7b284a8e536 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 14 Jul 2023 11:09:56 +0100 Subject: [PATCH 1141/1354] add new wallets to bitvenus --- projects/bitvenus/index.js | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/projects/bitvenus/index.js b/projects/bitvenus/index.js index f5c24bccfb..af65a1bc5c 100644 --- a/projects/bitvenus/index.js +++ b/projects/bitvenus/index.js @@ -3,35 +3,39 @@ const { cexExports } = require('../helper/cex') const config = { ethereum: { owners: [ - '0xe43c53c466a282773f204df0b0a58fb6f6a88633', - '0x2b097741854eedeb9e5c3ef9d221fb403d8d8609', - '0x686b9202a36c09ce8aba8b49ae5f75707edec5fe', - '0xef7a2610a7c9cfb2537d68916b6a87fea8acfec3', - '0x5631aa1fc1868703a962e2fd713dc02cad07c1db', - '0x4785e47ae7061632c2782384da28b9f68a5647a3' + // '0xe43c53c466a282773f204df0b0a58fb6f6a88633', Old wallets + // '0x2b097741854eedeb9e5c3ef9d221fb403d8d8609', Old wallets + // '0x686b9202a36c09ce8aba8b49ae5f75707edec5fe', Old wallets + // '0xef7a2610a7c9cfb2537d68916b6a87fea8acfec3', Old wallets + '0x5631aa1fc1868703a962e2fd713dc02cad07c1db', + '0x4785e47ae7061632c2782384da28b9f68a5647a3', + '0x25Ee4Ce905Da85df8620cB82884adDf96A14498A', + '0xE1E5F8caCc6B9Ace0894Fe7ba467328587e60bE7' ], }, bitcoin: { owners: [ - '3FdoFGYYcD1EU7ekrt2x2u2mFrjmxouMJG', - '358pjjkYRG8exw2BKZnn7Q9s6SCb7wZEWN', - '3C1ykoWkHBMZwmY8PUUMVxtJJSBkZBCtN8', - 'bc1qrm2a7u9xyeffvulm6e589qvesmt0v0rjxqfkhv' + // '3FdoFGYYcD1EU7ekrt2x2u2mFrjmxouMJG', + // '358pjjkYRG8exw2BKZnn7Q9s6SCb7wZEWN', + // '3C1ykoWkHBMZwmY8PUUMVxtJJSBkZBCtN8', + 'bc1qrm2a7u9xyeffvulm6e589qvesmt0v0rjxqfkhv', + 'bc1qvht34dma2uy23l9j862nnqr38a42kjr66e6lec' ] }, bsc: { owners: [ - '0xef7a2610a7c9cfb2537d68916b6a87fea8acfec3', + // '0xef7a2610a7c9cfb2537d68916b6a87fea8acfec3', '0x4785e47aE7061632C2782384DA28B9F68a5647a3' ] }, tron: { owners: [ - 'TPbExxiw99nMsDfWVjaweSPkMVQfZSVVZj', + 'TPbExxiw99nMsDfWVjaweSPkMVQfZSVVZj', + 'TSM8m5ADsMRySsWy7d4REX7FBXusMQCi6y' ] } } module.exports = cexExports(config) -module.exports.methodology = 'This wallets where provide by BitVenus team on the 07/02/2023' \ No newline at end of file +module.exports.methodology = 'This wallets where provide by BitVenus team on the 07/02/2023. *On the 14/07/2023 BitVenus team provided new wallets' \ No newline at end of file From 48159431ad662bb46ae792c56ae4501abc1876d8 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 14 Jul 2023 11:53:48 +0100 Subject: [PATCH 1142/1354] add hallmark to multichain --- projects/anyswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/anyswap/index.js b/projects/anyswap/index.js index d094245225..583a4d470b 100644 --- a/projects/anyswap/index.js +++ b/projects/anyswap/index.js @@ -120,5 +120,6 @@ module.exports = { // fetch: fetchChain(null), hallmarks: [ [1651881600, "UST depeg"], + [1689202800,"Access to Wallets Lost"] ], } From 9d535c9ecbad1ebd43961977b0e81b4675111e97 Mon Sep 17 00:00:00 2001 From: DainaTsuru <102115233+DainaTsuru@users.noreply.github.com> Date: Fri, 14 Jul 2023 04:13:53 -0700 Subject: [PATCH 1143/1354] New Project xWin Finance (#6792) * New Project xWinFinance * Deleted md file * Update index.js * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/xWinFinance/Helper.js | 72 ++++++++++++++++++++++++++++++++++ projects/xWinFinance/index.js | 27 +++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 projects/xWinFinance/Helper.js create mode 100644 projects/xWinFinance/index.js diff --git a/projects/xWinFinance/Helper.js b/projects/xWinFinance/Helper.js new file mode 100644 index 0000000000..4636c16121 --- /dev/null +++ b/projects/xWinFinance/Helper.js @@ -0,0 +1,72 @@ +const token = { + XWIN: '0xd88ca08d8eec1e9e09562213ae83a7853ebb5d28' +}; + +const Strategies = { + xSCA: "0x0a652784DF3f8Abde85dAEeee77D1EA97f5c5B24", + xDCA: "0x482ae949E4a70953fCa090717b68359b73b8602a", + xWinBBMA: "0x5EFaaBc34a3ba66f1fD02F056AC457AeBaF57D55", + xWinIRT: "0x5A8a66DF53DF88844c60829967b88d00eD208E08", + xCAKE_V: "0x1d2430bBfe86432E36A7C7286E99f78546F23De9", + xETH_V: "0x0C34Aa4e36983aB6ec11bC557A3B8cF79A7a9Ae7", + xUSDC_V: "0xcBca44d60c5A2b3c56ACfB51aFC66Ea04b8a2742", + xBUSD_V: "0xf4979C043df6f7d5dA929DeAB11b220A82886395", + xBTC_V: "0x7A0dEc70473602Cd0EF3Dc3d909b6Dc3FA42116C", + xUSDT_V: "0x8B7fcACB99124F009c8470FDa6f5fcF60277BDB2", + xADA_V: "0x605926F795FD9B4c3A8B1A2db33cBE01c66bA83f", + xBTC_O: "0x69764856e82180150f5366be610E40c2f812d7D6", + xUSDT_O: "0xCEbd365e4BFd8589Fd6BDe21898DB35a8095f956", +}; + +const PublicVault = { + fDEFI: "0x61d5722290F8755b2f31D260064658D6Ad837F37", + fMIV: "0x0A0817454710102F2bcB2215D616cBe3aFf495e5", + fxDollar: "0xFa4d4B4243dDA1F5f4d09269f61D57d02470635C", + fBTCETH: "0x284b4aDD0C9669f635EA64418C216821c45D0B48", + fvUSDT: "0xE949d266E8740470a15DFB1F40A795b5a2b63f02", + fCombo: "0x4d4F948C8E9Ec3d1cE1B80d598f57F8c75c64e4a", + fTACombo: "0xaaFF5eFe1376474a520FFe9129d8Aa8d7422AAbe", +}; + +const PrivateVault = { + Vault1: "0xa74c70d0bf531171360e603e6441faeb71b117d1", + Vault2: "0x834672c33291fd6932c1786e0c5fd4a3b921dc00", + Vault3: "0xc1908cf72426c0d6c48a4930bef681bb6621c106", + Vault4: "0x774c1ba3c31af51e4596fcaf9f90eaf167aee34c", + Vault5: "0x69f69df395c05202ec935999d072fa390defc31f", + Vault6: "0xb3c713a845378484f66e3f2ad608e3438675ff7c", + Vault7: "0xc5782a89ad76fe0b68cd67dcc4b294fcb5307415", + Vault8: "0xbddd3ff6f5902171faebb34e9ee084341c94a1e6", + Vault9: "0xe6eff8492c6832c1da6f76d3cc3288951021a7b5", + Vault10: "0x42289b0356470bdc0a93d6710f0bcf8bc0868f96", + Vault11: "0x90aadea5b2f10c4c53139fe4cf8005ffe5ed8d47", + Vault12: "0xbff5506a0c604cbf231646838f2f29118210e236", + Vault13: "0xeb23a52115e5ac9ed9085a1c0b25ec29529eef3b", +}; + +const farms = { + MasterChefAddress: "0xD09774e3d5Dc02fa969896c53D3Cbb5bC8900A60", + BuddyChefAddress: "0x4B87a60fC5a94e5ac886867977e29c9711C2E903", + LockStakingAddress: "0xa4AE0DCC89Af9855946C0b2ad4A10FF27125a9Fc", + PriceMasterAddr: "0xB1233713FeA0984fff84c7456d2cCed43e5e48E2", +}; + +const abi = { + getVaultValues: + "function getVaultValuesInUSD() public view returns (uint vaultValue)", + poolLength: "function poolLength() view returns (uint)", + poolInfoMaster: + "function poolInfo(uint256) view returns (address, uint256, uint256, uint256, uint256, uint256)", + balance: "function balanceOf(address) view returns (uint256)", + decimals: "function decimals() view returns (uint8)", + getPrice: "function getPrice(address, address) view returns (uint rate)", +}; + +module.exports = { + Strategies, + PublicVault, + PrivateVault, + farms, + abi, + token, +}; diff --git a/projects/xWinFinance/index.js b/projects/xWinFinance/index.js new file mode 100644 index 0000000000..6ac76cf048 --- /dev/null +++ b/projects/xWinFinance/index.js @@ -0,0 +1,27 @@ +const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') +const Helper = require("./Helper.js"); +const { farms: { MasterChefAddress, LockStakingAddress }, abi, token: { XWIN } } = require('./Helper.js'); + +async function tvl(_, _1, _2, { api }) { + const vaults = [ + ...Object.values(Helper.Strategies), + ...Object.values(Helper.PublicVault), + ...Object.values(Helper.PrivateVault), + ] + const bals = await api.multiCall({ abi: 'uint256:getVaultValues', calls: vaults}) + const tokens = await api.multiCall({ abi: 'address:baseToken', calls: vaults}) + api.addTokens(tokens, bals) +} + +async function pool2(_, _1, _2, { api }) { + const data = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfoMaster, target: MasterChefAddress, }) + return sumTokens2({ api, owner: MasterChefAddress, tokens: data.map(i => i[0]), resolveLP: true, blacklistedTokens: [XWIN, LockStakingAddress] }) +} + +module.exports = { + bsc: { + tvl, + pool2, + staking: sumTokensExport({ owners: [MasterChefAddress, LockStakingAddress], tokens: [XWIN]}) + }, +}; From 9772f1bb3360582217a5ebaffb0200f936f98c54 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jul 2023 13:17:17 +0200 Subject: [PATCH 1144/1354] zkswap get token breakdown --- projects/zkSwap-finance/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/projects/zkSwap-finance/index.js b/projects/zkSwap-finance/index.js index ab2df25797..b115f0565d 100644 --- a/projects/zkSwap-finance/index.js +++ b/projects/zkSwap-finance/index.js @@ -1,11 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { - misrepresentedTokens: true, era: { tvl: getUniTVL({ factory: '0x3a76e377ED58c8731F9DF3A36155942438744Ce3', - useDefaultCoreAssets: true, fetchBalances: true, }) }, From 3d6943e5a5e4f76dec756e294441e057a607ed8c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jul 2023 17:16:50 +0530 Subject: [PATCH 1145/1354] Revert "Revert "updated nodedao etehreum tvl calculations (#6785)" (#6793)" (#6805) This reverts commit 1f8bae9b07cdd5433467b888ed159f8d93428078. --- projects/node-dao/index.js | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js index 6c70f489ac..e19286cb84 100644 --- a/projects/node-dao/index.js +++ b/projects/node-dao/index.js @@ -3,9 +3,31 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') module.exports = { ethereum: { tvl: async (_, _1, _2, { api }) => { - const owner = '0x8103151E2377e78C04a3d2564e20542680ed3096' - const totalEth = await api.call({ abi: 'uint256:getTotalEthValue', target: owner }) - api.add(nullAddress,totalEth) + // nodeDAO v0 validator nft + const nodeDaoV0ValidatorNFT = '0x40Cd77D9aa9e0b2D485259415eA05486B201c514' + const v0VdalitorsNumber = await api.call({ abi: 'uint256:totalSupply', target: nodeDaoV0ValidatorNFT }) + + // nodeDAO liquidStaking + const nodeDaoLiquidStaking = '0x8103151E2377e78C04a3d2564e20542680ed3096' + const nethTVL = await api.call({ abi: 'uint256:getTotalEthValue', target: nodeDaoLiquidStaking }) + + // nodeDAO v1 validator nft + const nodeDaoV1ValidatorNFT = '0x58553F5c5a6AEE89EaBFd42c231A18aB0872700d' + const v1Vdalitors = await api.call({ abi: 'uint256[]:activeNftsOfUser', target: nodeDaoV1ValidatorNFT }) + + // nodeDAO totalEth = nethTVL + (v1ValidatorNumber + v0VdalitorsNumber)* 32 eth + let totalEth = parseInt(nethTVL) + (v1Vdalitors.length + parseInt(v0VdalitorsNumber)) * 32_000_000_000_000_000_000 + + // nodeDAO largeStaking + const nodeDaoLargeStaking = '0xBBd19e8F766Dcc94D50e47502b79C81cdaD484B8' + const nodeOperatorRegistry = '0x8742178Ac172eC7235E54808d5F327C30A51c492' + const operatorNumbers = await api.call({ abi: 'uint256:getNodeOperatorsCount', target: nodeOperatorRegistry }) + for (let i = 1; i <= operatorNumbers; i++) { + const validatorNumbers = await api.call({ abi: 'function getOperatorValidatorCounts(uint256 _operatorId) external view returns (uint256)', target: nodeDaoLargeStaking, params: [i] }) + totalEth += parseInt(validatorNumbers) * 32_000_000_000_000_000_000 + } + + api.add(nullAddress, totalEth) } } -} \ No newline at end of file +} From 238141e70e642e84151034c0d64cc26773b8e923 Mon Sep 17 00:00:00 2001 From: Philipp Date: Fri, 14 Jul 2023 13:48:33 +0200 Subject: [PATCH 1146/1354] add osmosis, injective to eris (#6802) --- projects/eris-protocol/index.js | 103 ++++++++++++++++++++------------ 1 file changed, 65 insertions(+), 38 deletions(-) diff --git a/projects/eris-protocol/index.js b/projects/eris-protocol/index.js index ecbfb7de25..ed1c3eec28 100644 --- a/projects/eris-protocol/index.js +++ b/projects/eris-protocol/index.js @@ -50,6 +50,10 @@ const config = { kujira: { coinGeckoId: "kujira", hub: "kujira1n3fr5f56r2ce0s37wdvwrk98yhhq3unnxgcqus8nzsfxvllk0yxquurqty", + voteEscrow: + "kujira1mxzfcxpn6cjx4u9zln6ttxuc6fuw6g0cettd6nes74vrt2f22h4q3j5cdz", + ampToken: + "factory/kujira1n3fr5f56r2ce0s37wdvwrk98yhhq3unnxgcqus8nzsfxvllk0yxquurqty/ampKUJI", }, juno: { coinGeckoId: "juno-network", @@ -62,6 +66,24 @@ const config = { "migaloo1hntfu45etpkdf8prq6p6la9tsnk3u3muf5378kds73c7xd4qdzysuv567q", ampToken: "factory/migaloo1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgshqdky4/ampWHALE", + // currently not running due to node simulation gas issues + arbVault: + "migaloo1ey4sn2mkmhew4pdrzk90l9acluvas25qlhuvsfgssw42ugz8yjlqx92j9l", + }, + osmosis: { + coinGeckoId: "osmosis", + hub: "osmo1dv8wz09tckslr2wy5z86r46dxvegylhpt97r9yd6qc3kyc6tv42qa89dr9", + voteEscrow: + "osmo1vcg9a7zwfeuqwtkya5l34tdgzxnafdzpe22ahphd02uwed43wnfs3wtf8a", + ampToken: + "factory/osmo1dv8wz09tckslr2wy5z86r46dxvegylhpt97r9yd6qc3kyc6tv42qa89dr9/ampOSMO", + }, + injective: { + coinGeckoId: "injective-protocol", + hub: "inj1cdwt8g7nxgtg2k4fn8sj363mh9ahkw2qt0vrnc", + voteEscrow: "inj1yp0lgxq460ked0egtzyj2nck3mdhr8smfmteh5", + ampToken: "factory/inj1cdwt8g7nxgtg2k4fn8sj363mh9ahkw2qt0vrnc/ampINJ", + decimals: 18, }, }; @@ -79,19 +101,29 @@ async function tvlHub(chain, state) { state ||= await getState(chain, chainConfig.hub); - let tvl = +(state.tvl_uluna ?? state.tvl_utoken ?? 0) / 1e6; + let tvl = + +(state.tvl_uluna ?? state.tvl_utoken ?? 0) / getDecimalFactor(chainConfig); return { [coinGeckoId]: tvl, }; } +function getDecimalFactor(chainConfig) { + let decimals = chainConfig.decimals ?? 6; + return Math.pow(10, decimals); +} + async function tvlArbVault(chain) { let chainConfig = config[chain]; let coinGeckoId = chainConfig.coinGeckoId; + if (!chainConfig.arbVault) { + return {}; + } + const res = await getState(chain, chainConfig.arbVault); - let tvl = +(res.balances.tvl_utoken ?? 0) / 1e6; + let tvl = +(res.balances.tvl_utoken ?? 0) / getDecimalFactor(chainConfig); return { [coinGeckoId]: tvl, }; @@ -100,6 +132,10 @@ async function tvlArbVault(chain) { async function tvlAmpGovernance(chain, state) { let chainConfig = config[chain]; + if (!chainConfig.ampToken) { + return {}; + } + let isTokenFactory = chainConfig.ampToken.startsWith("factory"); let ampAmount = 0; @@ -122,11 +158,12 @@ async function tvlAmpGovernance(chain, state) { if (chainConfig.coinGeckoIdAmp) { return { - [chainConfig.coinGeckoIdAmp]: ampAmount / 1e6, + [chainConfig.coinGeckoIdAmp]: ampAmount / getDecimalFactor(chainConfig), }; } else { state ||= await getState(chain, chainConfig.hub); - let amount = (ampAmount / 1e6) * +state.exchange_rate; + let amount = + (ampAmount / getDecimalFactor(chainConfig)) * +state.exchange_rate; return { [chainConfig.coinGeckoId]: amount, }; @@ -135,7 +172,7 @@ async function tvlAmpGovernance(chain, state) { async function farm2Tvl(farm) { const res = await queryContractCosmos({ - chain: 'terra2', + chain: "terra2", contract: farm, data: { state: {} }, }); @@ -199,44 +236,34 @@ function merge(elements) { }, {}); } -function terraTvl() { - return mergePromises([tvlHub("terra")]); -} - -function kujiraTvl() { - return mergePromises([tvlHub("kujira")]); -} - -function junoTvl() { - return mergePromises([tvlHub("juno")]); -} - -async function migalooTvl() { - let chain = "migaloo"; +async function productsTvl(chain) { let chainConfig = config[chain]; - let state = await getState(chain, chainConfig.hub); - return await mergePromises([ - tvlHub(chain, state), - tvlAmpGovernance(chain, state), - ]); -} - -function terra2Tvl() { - return mergePromises([ - tvlHub("terra2"), - tvlArbVault("terra2"), - tvlAmpGovernance("terra2"), - ...config.terra2.farms.map(farm2Tvl), - ]); + try { + let state = await getState(chain, chainConfig.hub); + return await mergePromises([ + tvlHub(chain, state), + tvlAmpGovernance(chain, state), + tvlArbVault(chain).catch((a) => ({})), + ...(chainConfig.farms ?? []).map(farm2Tvl), + ]); + } catch (error) { + let url = error?.response?.config?.url; + if (url) { + console.log("Issue calling", error?.response?.config?.url); + } + throw error; + } } module.exports = { timetravel: false, misrepresentedTokens: false, methodology: "Liquid Staking and Arbitrage Protocol", - terra2: { tvl: terra2Tvl }, - terra: { tvl: terraTvl }, - kujira: { tvl: kujiraTvl }, - juno: { tvl: junoTvl }, - migaloo: { tvl: migalooTvl }, + terra2: { tvl: () => productsTvl("terra2") }, + terra: { tvl: () => productsTvl("terra") }, + kujira: { tvl: () => productsTvl("kujira") }, + juno: { tvl: () => productsTvl("juno") }, + migaloo: { tvl: () => productsTvl("migaloo") }, + injective: { tvl: () => productsTvl("injective") }, + osmosis: { tvl: () => productsTvl("osmosis") }, }; From aff2175e8266fb4042056d534994bf948db3118c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jul 2023 14:01:02 +0200 Subject: [PATCH 1147/1354] fix spookyswap --- projects/spookyswap/index.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/projects/spookyswap/index.js b/projects/spookyswap/index.js index d266bfd34a..9416f18f21 100644 --- a/projects/spookyswap/index.js +++ b/projects/spookyswap/index.js @@ -1,9 +1,7 @@ -const { getChainTvl } = require("../helper/getUniSubgraphTvl") +const { getUniTVL } = require("../helper/unknownTokens") module.exports={ misrepresentedTokens: true, fantom:{ - tvl: getChainTvl({ - fantom: 'https://api.thegraph.com/subgraphs/name/eerieeight/spookyswap' - })('fantom') - } -} \ No newline at end of file + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x152eE697f2E276fA89E96742e9bB9aB1F2E61bE3' }), + }, +} \ No newline at end of file From 24ce57c26b315bba2f27ee7db25bb4bbb281626a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jul 2023 16:41:21 +0200 Subject: [PATCH 1148/1354] blacklist anyswap tokens from coreAssets --- projects/helper/tokenMapping.js | 95 +++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 3 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 8223b701ac..7f609adefe 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -16,8 +16,8 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList -const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', ] -const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', ] +const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'stargaze', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua',] +const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo',] const distressedAssts = new Set(Object.values({ CRK: '0x065de42e28e42d90c2052a1b49e7f83806af0e1f', @@ -97,8 +97,9 @@ function getCoreAssets(chain = 'ethereum') { Object.keys(transformTokens[chain] || {}), Object.keys(fixBalancesTokens[chain] || {}), ].flat() - const addresses = getUniqueAddresses(tokens, chain) + let addresses = getUniqueAddresses(tokens, chain) if (ibcChains.includes(chain)) addresses.push(...coreAssets.ibc) + if (anyswapTokenBlacklist[chain]) addresses = addresses.filter(i => !anyswapTokenBlacklist[chain].includes(i)) return addresses } @@ -129,6 +130,94 @@ const eulerTokens = [ "0xbd1bd5c956684f7eb79da40f582cbe1373a1d593", ] +const anyswapTokenBlacklist = { + ethereum: ['0x4e15361fd6b4bb609fa63c81a2be19d873717870'], + fantom: [ + '0x95bf7e307bc1ab0ba38ae10fc27084bc36fcd605', + '0x049d68029688eabf473097a2fc38ef61633a3c7a', + '0x04068da6c83afcfa0e13ba15a6696662335d5b75', + '0x049d68029688eabf473097a2fc38ef61633a3c7a', + '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e', + '0x82f0b8b456c1a451378467398982d4834b6829c1', + '0x7f620d7d0b3479b1655cefb1b0bc67fb0ef4e443' + ], + harmony: ['0xb12c13e66ade1f72f71834f2fc5082db8c091358'], + kcc: [ + '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', + '0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c', + '0xc9baa8cfdde8e328787e29b4b078abf2dadc2055', + '0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0' + ], + moonriver: [ + '0xb44a9b6905af7c801311e8f4e76932ee959c663c', + '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', + '0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c' + ], + arbitrum: ['0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a'], + shiden: [ + '0xfa9343c3897324496a05fc75abed6bac29f8a40f', + '0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b', + '0x735abe48e8782948a37c7765ecb76b98cde97b0f', + '0x765277eebeca2e31912c9946eae1021199b39c61', + '0x332730a4f6e03d9c55829435f10360e13cfa41ff', + '0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a' + ], + telos: [ + '0xfa9343c3897324496a05fc75abed6bac29f8a40f', + '0xf390830df829cf22c53c8840554b98eafc5dcbc2', + '0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b', + '0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73' + ], + syscoin: [ + '0x2bf9b864cdc97b08b6d79ad4663e71b8ab65c45c', + '0x7c598c96d02398d89fbcb9d41eab3df0c16f227d', + '0x922d641a426dcffaef11680e5358f34d97d112e1' + ], + boba: ['0x461d52769884ca6235b685ef2040f47d30c94eb5'], + velas: [ + '0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c', + '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d' + ], + dogechain: [ + '0xb44a9b6905af7c801311e8f4e76932ee959c663c', + '0x332730a4f6e03d9c55829435f10360e13cfa41ff', + '0xdc42728b0ea910349ed3c6e1c9dc06b5fb591f98' + ], + kava: [ + '0xfa9343c3897324496a05fc75abed6bac29f8a40f', + '0xb44a9b6905af7c801311e8f4e76932ee959c663c', + '0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b', + '0x765277eebeca2e31912c9946eae1021199b39c61', + '0x7c598c96d02398d89fbcb9d41eab3df0c16f227d', + '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', + '0x332730a4f6e03d9c55829435f10360e13cfa41ff' + ], + step: [ + '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', + '0xfa9343c3897324496a05fc75abed6bac29f8a40f', + '0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b', + '0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73' + ], + godwoken_v1: [ + '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', + '0x765277eebeca2e31912c9946eae1021199b39c61', + '0xfa9343c3897324496a05fc75abed6bac29f8a40f', + '0xb44a9b6905af7c801311e8f4e76932ee959c663c' + ], + milkomeda_a1: ['0xfa9343c3897324496a05fc75abed6bac29f8a40f'], + wemix: [ + '0x461d52769884ca6235b685ef2040f47d30c94eb5', + '0x765277eebeca2e31912c9946eae1021199b39c61', + '0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d' + ], + eos_evm: [ + '0x922d641a426dcffaef11680e5358f34d97d112e1', + '0x765277eebeca2e31912c9946eae1021199b39c61', + '0xfa9343c3897324496a05fc75abed6bac29f8a40f', + '0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73' + ] +} + module.exports = { nullAddress, caseSensitiveChains, From dc7cd3c4489cf6cb7a449f750bc62d2919c9890f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jul 2023 16:46:47 +0200 Subject: [PATCH 1149/1354] sushiswap: fix fantom --- projects/sushiswap/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index 85809d040e..977473cc2f 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -79,5 +79,5 @@ module.exports = { module.exports.polygon.tvl = getChainTVL('polygon') // module.exports.bsc.tvl = getChainTVL('bsc') -module.exports.fantom.tvl = getChainTVL('fantom') +// module.exports.fantom.tvl = getChainTVL('fantom') // module.exports.harmony.tvl = getChainTVL('harmony') From cedc27b9dc1f451527b0636d99e99d5356a05472 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jul 2023 17:54:33 +0200 Subject: [PATCH 1150/1354] refactor yearn --- projects/helper/erc4626.js | 6 +- projects/yearn/index.js | 160 +++++++++++++++---------------------- 2 files changed, 67 insertions(+), 99 deletions(-) diff --git a/projects/helper/erc4626.js b/projects/helper/erc4626.js index 7beff42e8c..145f12a4a6 100644 --- a/projects/helper/erc4626.js +++ b/projects/helper/erc4626.js @@ -1,7 +1,7 @@ -async function sumERC4626Vaults({ api, vaults }) { - const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults}) - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults}) +async function sumERC4626Vaults({ api, vaults, abi = {} }) { + const tokens = await api.multiCall({ abi: abi.asset ?? 'address:asset', calls: vaults}) + const bals = await api.multiCall({ abi: abi.balance ?? 'uint256:totalAssets', calls: vaults}) api.addTokens(tokens, bals) return api.getBalances() } diff --git a/projects/yearn/index.js b/projects/yearn/index.js index 99985ebffd..c7830be7d3 100644 --- a/projects/yearn/index.js +++ b/projects/yearn/index.js @@ -1,104 +1,72 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') const axios = require('axios') -const { getApiTvl } = require('../helper/historicalApi') +const { getConfig } = require('../helper/cache') +const { sumERC4626Vaults } = require('../helper/erc4626') -async function ethereum(timestamp) { - return getApiTvl(timestamp, async () => { - const tvl = await axios.get('https://api.yearn.finance/v1/chains/1/vaults/all') - return tvl.data.reduce((all, vault) => all + vault.tvl.tvl, 0) - }, async () => { - /* - Outdated as of Dec 2022 - const historicalTvls = Object.entries((await axios.get('https://yearn.science/v1/tvl')).data) - .map(([date, tvl]) => [Date.parse(date)/1000, tvl]).sort(([date1], [date2]) => date1 - date2); - */ - const ibTvl = await axios.post("https://yearn.vision/api/ds/query", { "queries": [{ "datasource": { "uid": "PBFE396EC0B189D67", "type": "prometheus" }, "expr": "(sum(ironbank{network=\"ETH\", param=\"tvl\"}) or vector(0))", "utcOffsetSec": 0, "datasourceId": 1 }], "from": "1639958400000", "to": Date.now().toString() }) - const totalTvl = await axios.post("https://yearn.vision/api/ds/query", { "queries": [{ "datasource": { "uid": "PBFE396EC0B189D67", "type": "prometheus" }, "expr": "(sum(ironbank{network=\"ETH\", param=\"tvl\"}) or vector(0)) + (sum(yearn_vault{network=\"ETH\", param=\"tvl\"}) or vector(0))", "utcOffsetSec": 0, "datasourceId": 1 }], "from": "1639958400000", "to": Date.now().toString() }) - const result = [] - const [tvlTimestamps, tvls] = totalTvl.data.results.A.frames[0].data.values - const [ibTimestamps, ib] = ibTvl.data.results.A.frames[0].data.values - tvlTimestamps.forEach((time, index) => { - const ibIndex = ibTimestamps.indexOf(time) - const tvl = tvls[index] - ib[ibIndex] - result.push({ - date: Math.round(time / 1000), - totalLiquidityUSD: tvl - }) - }) - return result - }) -} - -async function fantom(timestamp) { - return getApiTvl(timestamp, async () => { - const tvl = await axios.get('https://api.yearn.finance/v1/chains/250/vaults/all') - const total = tvl.data.reduce((all, vault) => all + vault.tvl.tvl, 0) - if(total === 0){ throw new Error("TVL can't be 0")} - return total - }, async () => { - const totalTvl = await axios.post("https://yearn.vision/api/ds/query", {"queries":[{"datasource":{"uid":"PBFE396EC0B189D67","type":"prometheus"},"expr":"(sum(ironbank{network=\"FTM\", param=\"tvl\"}) or vector(0)) + (sum(yearn_vault{network=\"FTM\", param=\"tvl\"}) or vector(0))", "utcOffsetSec":0,"datasourceId":1}],"from":"1642091361529","to": Date.now().toString() }) - const result = [] - const [tvlTimestamps, tvls] = totalTvl.data.results.A.frames[0].data.values - tvlTimestamps.forEach((time, index) => { - const tvl = tvls[index] - result.push({ - date: Math.round(time / 1000), - totalLiquidityUSD: tvl - }) - }) - return result - }) -} - -async function arbitrum(timestamp) { - return getApiTvl(timestamp, async () => { - const tvl = await axios.get('https://api.yearn.finance/v1/chains/42161/vaults/all') - const total = tvl.data.reduce((all, vault) => all + vault.tvl.tvl, 0) - if(total === 0){ throw new Error("TVL can't be 0")} - return total - }, async () => { - const totalTvl = await axios.post("https://yearn.vision/api/ds/query", {"queries":[{"datasource":{"uid":"PBFE396EC0B189D67","type":"prometheus"},"expr":"(sum(ironbank{network=\"AETH\", param=\"tvl\"}) or vector(0)) + (sum(yearn_vault{network=\"AETH\", param=\"tvl\"}) or vector(0))", "utcOffsetSec":0,"datasourceId":1}],"from":"1645565848000","to": Date.now().toString() }) - const result = [] - const [tvlTimestamps, tvls] = totalTvl.data.results.A.frames[0].data.values - tvlTimestamps.forEach((time, index) => { - const tvl = tvls[index] - result.push({ - date: Math.round(time / 1000), - totalLiquidityUSD: tvl - }) - }) - return result - }) -} +const v1Vaults = [ + '0x597aD1e0c13Bfe8025993D9e79C69E1c0233522e', + '0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c', + '0x37d19d1c4E1fa9DC47bD1eA12f742a0887eDa74a', + '0xACd43E627e64355f1861cEC6d3a6688B31a6F952', + '0x2f08119C6f07c006695E079AAFc638b8789FAf18', + '0xBA2E7Fed597fd0E3e70f5130BcDbbFE06bB94fe1', + '0x2994529C0652D127b7842094103715ec5299bBed', + '0x7Ff566E1d69DEfF32a7b244aE7276b9f90e9D0f6', + '0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7', + '0x9cA85572E6A3EbF24dEDd195623F188735A5179f', + '0xec0d8D3ED5477106c6D4ea27D90a60e594693C90', + '0x629c759D1E83eFbF63d84eb3868B564d9521C129', + '0x0FCDAeDFb8A7DfDa2e9838564c5A1665d856AFDF', + '0xcC7E70A958917cCe67B4B87a8C30E6297451aE98', + '0x98B058b2CBacF5E99bC7012DF757ea7CFEbd35BC', + '0xE0db48B4F71752C4bEf16De1DBD042B82976b8C7', + '0x5334e150B938dd2b6bd040D9c4a03Cff0cED3765', + '0xFe39Ce91437C76178665D64d7a2694B0f6f17fE3', + '0xF6C9E9AF314982A4b38366f4AbfAa00595C5A6fC', + '0xA8B1Cb4ed612ee179BDeA16CCa6Ba596321AE52D', + '0x46AFc2dfBd1ea0c0760CAD8262A5838e803A37e5', + '0x5533ed0a3b83F70c3c4a1f69Ef5546D3D4713E44', + '0x8e6741b456a074F0Bc45B8b82A755d4aF7E965dF', + '0x03403154afc09Ce8e44C3B185C82C6aD5f86b9ab', + '0xE625F5923303f1CE7A43ACFEFd11fd12f30DbcA4', + '0xBacB69571323575C6a5A3b4F9EEde1DC7D31FBc1', + '0x1B5eb1173D2Bf770e50F10410C9a96F7a8eB6e75', + '0x96Ea6AF74Af09522fCB4c28C269C26F59a31ced6', +] +const blacklist = [ + '0xbD17B1ce622d73bD438b9E658acA5996dc394b0d', + '0xc5bDdf9843308380375a611c18B50Fb9341f502A', + '0x07FB4756f67bD46B748b16119E802F1f880fb2CC', + '0x7F83935EcFe4729c4Ea592Ab2bC1A32588409797', + '0x123964EbE096A920dae00Fb795FFBfA0c9Ff4675', + '0x39546945695DCb1c037C836925B355262f551f55', + ...v1Vaults, +] -async function optimism(timestamp) { - return getApiTvl(timestamp, async () => { - const tvl = await axios.get('https://api.yearn.finance/v1/chains/10/vaults/all') - const total = tvl.data.reduce((all, vault) => all + vault.tvl.tvl, 0) - if(total === 0){ throw new Error("TVL can't be 0")} - return total - }, async () => { - throw new Error("No historical data for optimism") - }) +async function tvl(timestamp, _, _1, { api }) { + const data = await getConfig('yearn/' + api.chain, `https://api.yearn.finance/v1/chains/${api.chainId}/vaults/all`) + const vaults = data.map(i => i.address).filter(i => !blacklist.includes(i)) + await sumERC4626Vaults({ api, vaults, abi: { asset: 'address:token', } }) + if (api.chain === 'ethereum') { + const tokens = await api.multiCall({ abi: 'address:token', calls: v1Vaults }) + let bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: v1Vaults }) + const ratio = await api.multiCall({ abi: 'uint256:getPricePerFullShare', calls: v1Vaults }) + bals = bals.map((bal, i) => bal * ratio[i] / 1e18) + api.addTokens(tokens, bals) + } + return sumTokens2({ api, resolveLP: true,}) } module.exports = { - doublecounted: true, - misrepresentedTokens: true, - timetravel: false, - fantom: { - tvl: fantom - }, - ethereum: { - tvl: ethereum - }, - arbitrum: { - tvl: arbitrum - }, - optimism: { - tvl: optimism - }, - hallmarks:[ - [1594944000, "YFI token Launch"], - ] + doublecounted: true, + misrepresentedTokens: true, + timetravel: false, + fantom: { tvl }, + ethereum: { tvl }, + arbitrum: { tvl }, + optimism: { tvl }, + hallmarks: [ + [1594944000, "YFI token Launch"], + ] }; From e8dddb59b19cb65db71abecced0074bdc3f78f01 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jul 2023 18:05:30 +0200 Subject: [PATCH 1151/1354] update yoshi --- projects/yoshi-exchange/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/projects/yoshi-exchange/index.js b/projects/yoshi-exchange/index.js index e83b079618..eddf65b737 100644 --- a/projects/yoshi-exchange/index.js +++ b/projects/yoshi-exchange/index.js @@ -10,8 +10,11 @@ const factoryData = { }; let tvls = {}; -Object.entries(factoryData).forEach(([chain, data]) => tvls[chain] = {tvl: uniTvlExport(data.factory, chain)}); +Object.entries(factoryData).forEach(([chain, data]) => tvls[chain] = {tvl: uniTvlExport(data.factory, chain, undefined, undefined, { + useDefaultCoreAssets: true, +})}); module.exports = { - ...tvls + ...tvls, + misrepresentedTokens: true, } From 24071317918e0c929ce1e4ea018bc710ea8a142b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 14 Jul 2023 18:16:51 +0100 Subject: [PATCH 1152/1354] remove un-used adapter files --- projects/ftmguru/index.js | 27 -- projects/growth-defi.js | 29 -- projects/hydradex.js | 27 -- projects/ordernchaos/index.js | 38 --- projects/pegasusdao/index.js | 11 - projects/push/index.js | 9 - projects/shibance-bsc/constants/abi.json | 4 - .../shibance-bsc/constants/bsc/contracts.js | 22 -- projects/shibance-bsc/constants/bsc/farms.js | 215 ------------ projects/shibance-bsc/constants/bsc/pools.js | 79 ----- projects/shibance-bsc/constants/bsc/tokens.js | 135 -------- projects/shibance-bsc/constants/chain.js | 4 - .../shibance-bsc/constants/kcc/contracts.js | 14 - projects/shibance-bsc/constants/kcc/farms.js | 105 ------ projects/shibance-bsc/constants/kcc/pools.js | 39 --- projects/shibance-bsc/constants/kcc/tokens.js | 73 ---- projects/shibance-bsc/farm.js | 318 ------------------ projects/shibance-bsc/format.js | 43 --- projects/shibance-bsc/index.js | 93 ----- projects/shibance-bsc/pool.js | 78 ----- projects/shibance-bsc/vault.js | 88 ----- 21 files changed, 1451 deletions(-) delete mode 100644 projects/ftmguru/index.js delete mode 100644 projects/growth-defi.js delete mode 100644 projects/hydradex.js delete mode 100644 projects/ordernchaos/index.js delete mode 100644 projects/pegasusdao/index.js delete mode 100644 projects/push/index.js delete mode 100644 projects/shibance-bsc/constants/abi.json delete mode 100644 projects/shibance-bsc/constants/bsc/contracts.js delete mode 100644 projects/shibance-bsc/constants/bsc/farms.js delete mode 100644 projects/shibance-bsc/constants/bsc/pools.js delete mode 100644 projects/shibance-bsc/constants/bsc/tokens.js delete mode 100644 projects/shibance-bsc/constants/chain.js delete mode 100644 projects/shibance-bsc/constants/kcc/contracts.js delete mode 100644 projects/shibance-bsc/constants/kcc/farms.js delete mode 100644 projects/shibance-bsc/constants/kcc/pools.js delete mode 100644 projects/shibance-bsc/constants/kcc/tokens.js delete mode 100644 projects/shibance-bsc/farm.js delete mode 100644 projects/shibance-bsc/format.js delete mode 100644 projects/shibance-bsc/index.js delete mode 100644 projects/shibance-bsc/pool.js delete mode 100644 projects/shibance-bsc/vault.js diff --git a/projects/ftmguru/index.js b/projects/ftmguru/index.js deleted file mode 100644 index ed3d2e9428..0000000000 --- a/projects/ftmguru/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const ITVL = { - pool2: "uint256:pool2", - staking: "uint256:staking", - tvl: "uint256:tvl", -} - -const tvlGuru = "0x0786c3a78f5133F08C1c70953B8B10376bC6dCad"; //On-Chain Universal TVL Finder -const USD = "fantom:" + ADDRESSES.fantom.USDC; //same as abi.call({target:tvlGuru,abi:ITVL[3]}) -//NOTE: USD===fantom:USDC is used explicitly to reduce EVM calls by this adapter. It makes this process faster. - -function tvl(abi) { - return async (_, _b, _cb, { api, }) => { - return { - [USD]: (await api.call({ target: tvlGuru, abi: ITVL[abi], })) / 1e12 - } - } -} - -module.exports = { - methodology: "USD-denominated value aggregation of most Locked assets held across ftm.guru's contracts, powered by direct on-chain storage of quantity, pools and prices using ftm.guru's Universal TVL Finder Tool (tvlGuru.sol). More detailed documentation of TVL is available at https://ftm.guru/rawdata/tvl", - fantom: { - pool2: tvl('pool2'), - staking: tvl('staking'), - tvl: tvl('tvl'), - }, -} diff --git a/projects/growth-defi.js b/projects/growth-defi.js deleted file mode 100644 index 63afc2d69b..0000000000 --- a/projects/growth-defi.js +++ /dev/null @@ -1,29 +0,0 @@ -const axios = require("axios"); - -async function fetch() { - const query = ` - { - totalValueLocked(id: 1) { - totalValueLockedUSD - } - } - `; - - const options = { - method: "post", - url: "https://api.thegraph.com/subgraphs/name/growthdefi/growth-defi", - data: { - query, - }, - }; - - const response = await axios(options); - - const tvl = response.data.data.totalValueLocked.totalValueLockedUSD; - - return parseFloat(tvl); -} - -module.exports = { - fetch -} diff --git a/projects/hydradex.js b/projects/hydradex.js deleted file mode 100644 index 109c65f220..0000000000 --- a/projects/hydradex.js +++ /dev/null @@ -1,27 +0,0 @@ -const { blockQuery } = require('./helper/http') -const { getBlock } = require('./hydradex/getHydraV3SubgraphTvl') - -async function tvl(timestamp) { - const endpoint = 'https://info.hydradex.org/graphql' - const block = await getBlock(endpoint, timestamp) - const query = `query ($block: Float!){ - hydraswapFactories (block: { number: $block }) { - totalLiquidityUSD - } - }` - const { hydraswapFactories: [{ totalLiquidityUSD }] } = await blockQuery(endpoint, query, { - api: { - getBlock: () => block, - block - } - }) - return { tether: +totalLiquidityUSD } -} - -module.exports = { - misrepresentedTokens: true, - methodology: "We count liquidity on the dex, pulling data from subgraph", - hydra: { - tvl, - }, -}; \ No newline at end of file diff --git a/projects/ordernchaos/index.js b/projects/ordernchaos/index.js deleted file mode 100644 index 6ccd1a3b0d..0000000000 --- a/projects/ordernchaos/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { getChainTransform} = require("../helper/portedTokens") -const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); - - -const DAI = ADDRESSES.avax.DAI -const USDC = ADDRESSES.avax.USDC -const USDT = ADDRESSES.avax.USDt - - -const collateralAddr = [ - "0xD5a7Df8B56d285011AbE406235109c029F45797A", // 3pool - ]; - -async function stablePoolTvl(timestamp, chainBlocks) { - const balances = {}; - const transformAddress = await getChainTransform("avax"); - await sumTokensAndLPsSharedOwners( - balances, - [ - [DAI, false], - [USDC, false], - [USDT, false], - ], - collateralAddr, - chainBlocks["avax"], - "avax", - transformAddress - ); - return balances; - } - -module.exports = { - methodology: 'Counts the DAI, USDC, and USDT that have been deposited to mint CHAOS', - avax: { - tvl: stablePoolTvl - } -}; \ No newline at end of file diff --git a/projects/pegasusdao/index.js b/projects/pegasusdao/index.js deleted file mode 100644 index e1240030ca..0000000000 --- a/projects/pegasusdao/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {ohmTvl} = require("../helper/ohm"); - -const sus = "0x5b5Fe1238aca91C65683aCd7f9D9Bf922e271EAA"; -const stakingContract = ""; - -const treasury = "0x7310855e0Aa8B110925fdE0100b01c62984d2a3C"; -const treasuryTokens = [ - [ADDRESSES.cronos.USDC, false], // USDC - ["0xAE182Db2F7897D7678c5099C1e52A1c802580827", true], // SUS-USDC CRONA LPS -] \ No newline at end of file diff --git a/projects/push/index.js b/projects/push/index.js deleted file mode 100644 index 2c0b8fed49..0000000000 --- a/projects/push/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { staking } = require('../helper/staking') - -module.exports = { - ethereum: { - tvl: () => 0, - pool2: staking('0xb72ff1e675117bedeff05a7d0a472c3844cfec85', '0xaf31fd9c3b0350424bf96e551d2d1264d8466205'), - staking: staking('0xb72ff1e675117bedeff05a7d0a472c3844cfec85', '0xf418588522d5dd018b425e472991e52ebbeeeeee'), - } -} \ No newline at end of file diff --git a/projects/shibance-bsc/constants/abi.json b/projects/shibance-bsc/constants/abi.json deleted file mode 100644 index 195cb3b29b..0000000000 --- a/projects/shibance-bsc/constants/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCakePerShare)", - "totalAllocPoint": "uint256:totalAllocPoint" -} \ No newline at end of file diff --git a/projects/shibance-bsc/constants/bsc/contracts.js b/projects/shibance-bsc/constants/bsc/contracts.js deleted file mode 100644 index 6994418857..0000000000 --- a/projects/shibance-bsc/constants/bsc/contracts.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - masterChef: { - 56: "0x4fbEebd68B71aE4367F778129d4218668151EB99", - 97: "0x5559C8a6267b0b1bcDe0005a44db0B1546711B76", - }, - sousChef: { - 56: "0x0703c295644ba1d333e14367e510773629264Ee2", - 97: "0x4A2947DE6A35F0B83cc26827A9Cf832193c38614", - }, - multiCall: { - 56: "0x3dB443d8e82700FaBdB831dBe180994B6b109790", - 97: "0x6a45C680E74c81797E287Ccf48284698f85909b4", - }, - woofVault: { - 56: "0x09fE45A62502E7a0b226a99f18043F3eC32F78E8", - 97: "0x238d502163AC149Da69A180Cbae59347d72AE842", - }, - woofCollectibles: { - 56: "0x89e36408cc275168ab235e8a5902a2dd4c8fbaa7", - 97: "", - }, -}; diff --git a/projects/shibance-bsc/constants/bsc/farms.js b/projects/shibance-bsc/constants/bsc/farms.js deleted file mode 100644 index b6fb682aba..0000000000 --- a/projects/shibance-bsc/constants/bsc/farms.js +++ /dev/null @@ -1,215 +0,0 @@ -const tokens = require("./tokens"); -const farms = [ - { - pid: 0, - lpSymbol: "WOOF", - lpAddresses: { - 56: "0x9e26c50B8A3b7652c3fD2B378252A8647a0C9268", - 97: "0x43eef5BA4899431F7F9D855E9C5Ed06016c8227b", - }, - token: tokens.syrup, - quoteToken: tokens.wbnb, - }, - { - pid: 1, - lpSymbol: "WOOF-BNB LP", - lpAddresses: { - 56: "0xccefc6013a4f3e1c4e71c5006353a55e228f4c2d", - 97: "0x5d6ddb67bcef8dd94a7f4ade4f5b912da9bacd62", - }, - token: tokens.woof, - quoteToken: tokens.wbnb, - }, - { - pid: 18, - lpSymbol: "CUPCAKE-WOOF LP", - lpAddresses: { - 97: "", - 56: "0x897a60da157cdca5faff2fd9314e72b763dda9cd", - }, - token: tokens.cupcake, - quoteToken: tokens.woof, - }, - { - pid: 21, - lpSymbol: "CUPCAKE-BUSD LP", - lpAddresses: { - 97: "", - 56: "0x9e20535e12d1ef96a3838ea27256ee6c767f644f", - }, - token: tokens.cupcake, - quoteToken: tokens.busd, - }, - { - pid: 3, - lpSymbol: "WOOF-BUSD SHIBANCE LP", - lpAddresses: { - 97: "0x00ce857d4a66beF6614E2EBAcf16c8fF5C451146", - 56: "0x6e729f2ed894fbcebc14dfd7344975a558052c55", - }, - token: tokens.woof, - quoteToken: tokens.busd, - }, - { - pid: 4, - lpSymbol: "WOOF-BUSD PANCAKESWAP LP", - lpAddresses: { - 97: "0x638798c119ffC95482423981884c0461664d7195", - 56: "0xe064a0666b86d5554e83adf4bf14fa6d5ffc4175", - }, - token: tokens.woof, - quoteToken: tokens.busd, - }, - { - pid: 2, - lpSymbol: "BUSD-BNB LP", - lpAddresses: { - 56: "0xf5ef5e2ecfb73126ea2db39703e4f6269d484f61", - 97: "0x354f0d65790d44ac7ad65354e150dd8a1aa76f48", - }, - token: tokens.busd, - quoteToken: tokens.wbnb, - }, - { - pid: 6, - lpSymbol: "DOGE-BUSD LP", - lpAddresses: { - 97: "0xaC0AEC94af77eDCc868BDb7BA816380c5129E163", - 56: "0xe076028cecc3e9390e9ae1222b7c99b13de95627", - }, - token: tokens.doge, - quoteToken: tokens.busd, - }, - { - pid: 20, - lpSymbol: "BIRB-WOOF LP", - lpAddresses: { - 97: "", - 56: "0x9809eFcc1E1cDEE2BbA0Efd23ec000ca840725cb", - }, - token: tokens.birb, - quoteToken: tokens.woof, - }, - { - pid: 15, - lpSymbol: "MOONSHOT-WOOF LP", - lpAddresses: { - 97: "", - 56: "0xaa19A0bF68acc25e6a853044AA0f9E9c08C97A7d", - }, - token: tokens.moonshot, - quoteToken: tokens.woof, - }, - { - pid: 8, - lpSymbol: "CUMMIES-WOOF LP", - lpAddresses: { - 97: "", - 56: "0x8Fe92296F007F7B864765BAEc58fCfB7820d71B6", - }, - token: tokens.cummies, - quoteToken: tokens.woof, - }, - { - pid: 11, - lpSymbol: "CUMMIES-BUSD LP", - lpAddresses: { - 97: "", - 56: "0x82b34a5384d337a8f306d1d49063d7e22ebcc296", - }, - token: tokens.cummies, - quoteToken: tokens.busd, - }, - { - pid: 16, - lpSymbol: "CAKE-WOOF LP", - lpAddresses: { - 97: "", - 56: "0xba7e74e2d06d7a76025413a1f338ab849084843b", - }, - token: tokens.cake, - quoteToken: tokens.woof, - }, - { - pid: 17, - lpSymbol: "CAKE-BUSD LP", - lpAddresses: { - 97: "", - 56: "0xcda8205d6bd1619bf79b27e765e4e29651fd987e", - }, - token: tokens.cake, - quoteToken: tokens.busd, - }, - { - pid: 14, - lpSymbol: "ASS-WOOF LP", - lpAddresses: { - 97: "", - 56: "0x2e4a51084eae9237388bec1dce2a26afcbbdb568", - }, - token: tokens.ass, - quoteToken: tokens.woof, - }, - { - pid: 13, - lpSymbol: "ASS-BUSD LP", - lpAddresses: { - 97: "0xF7a8F04bFE8813Ad888d1b6a123aACc2DD86B120", - 56: "0xb719c3f92cdbf7d8426217ae323509b8cee8f4b9", - }, - token: tokens.ass, - quoteToken: tokens.busd, - }, - { - pid: 9, - lpSymbol: "SAFEMOON-WOOF LP", - lpAddresses: { - 97: "", - 56: "0x5261bd9a6fed9361cbf5d00c831e11d7db6bdf54", - }, - token: tokens.safemoon, - quoteToken: tokens.woof, - }, - { - pid: 10, - lpSymbol: "SAFEMOON-BUSD LP", - lpAddresses: { - 97: "", - 56: "0x916c7e58017e24de428b48a05db7531dd478a75b", - }, - token: tokens.safemoon, - quoteToken: tokens.busd, - }, - { - pid: 7, - lpSymbol: "BABYDOGE-WOOF LP", - lpAddresses: { - 97: "", - 56: "0x3627589F64e3942b18549361fC35a5F2Bd08eF77", - }, - token: tokens.babydoge, - quoteToken: tokens.woof, - }, - { - pid: 12, - lpSymbol: "BABYDOGE-BUSD LP", - lpAddresses: { - 97: "", - 56: "0x1f6753200130e3478c7d02671bb7234220f4520c", - }, - token: tokens.babydoge, - quoteToken: tokens.busd, - }, - { - pid: 5, - lpSymbol: "USDT-BUSD LP", - lpAddresses: { - 97: "0x2E2b6cdB1ea0C39b397EbFc50BF2117437819002", - 56: "0x6f5ae0eb19343b8b1b1426fc11fa9ae1f0a15159", - }, - token: tokens.usdt, - quoteToken: tokens.busd, - }, -]; - -module.exports = farms; \ No newline at end of file diff --git a/projects/shibance-bsc/constants/bsc/pools.js b/projects/shibance-bsc/constants/bsc/pools.js deleted file mode 100644 index b1b6fae888..0000000000 --- a/projects/shibance-bsc/constants/bsc/pools.js +++ /dev/null @@ -1,79 +0,0 @@ -const tokens = require("./tokens"); - -const PoolCategory = { - 'COMMUNITY' :'Community', - 'CORE' : 'Core', - 'BINANCE' : 'Binance', // Pools using native BNB behave differently than pools using a token - 'AUTO' : 'Auto', -} - -const pools = [ - { - sousId: 0, - stakingToken: tokens.woof, - earningToken: tokens.woof, - contractAddress: { - 97: "0x5559C8a6267b0b1bcDe0005a44db0B1546711B76", - 56: "0x4fbEebd68B71aE4367F778129d4218668151EB99", - }, - poolCategory: PoolCategory.CORE, - harvest: true, - tokenPerBlock: "10", - sortOrder: 1, - isFinished: false, - }, - { - sousId: 1, - stakingToken: tokens.woof, - earningToken: tokens.ass, - contractAddress: { - 97: "0x1E3C2695Aa1b040a56e9aE7db7E7b2B96125e17A", - 56: "0xb2b694833e0875eA76AF7Fe50800658A41831fcF", - }, - poolCategory: PoolCategory.CORE, - harvest: true, - tokenPerBlock: "3260302.556", - sortOrder: 1, - }, - { - sousId: 2, - stakingToken: tokens.woof, - earningToken: tokens.busd, - contractAddress: { - 97: "0x4Cad350eA6F1C0010A11aA6b4Df26617A50AD8fF", - 56: "0x52C68033b2eEEFD7b6875b3f9b880a5ccDc51eF7", - }, - poolCategory: PoolCategory.CORE, - harvest: true, - tokenPerBlock: "0.011574", - sortOrder: 1, - }, - { - sousId: 3, - stakingToken: tokens.woof, - earningToken: tokens.cummies, - contractAddress: { - 97: "0x88f1Ee74eE6727Cb77208A8935261146F9b64293", - 56: "0x2d7831a6C7018dCEF7f9764Bee684B8f7d505222", - }, - poolCategory: PoolCategory.CORE, - harvest: true, - tokenPerBlock: "0.230902777", - sortOrder: 1, - }, - { - sousId: 4, - stakingToken: tokens.woof, - earningToken: tokens.cupcake, - contractAddress: { - 97: "", - 56: "0xD7a7b01C47497339ECaDcca579492De45bE68A71", - }, - poolCategory: PoolCategory.CORE, - harvest: true, - tokenPerBlock: "1765", - sortOrder: 2, - }, -]; - -module.exports = pools; \ No newline at end of file diff --git a/projects/shibance-bsc/constants/bsc/tokens.js b/projects/shibance-bsc/constants/bsc/tokens.js deleted file mode 100644 index 5140a1a7a5..0000000000 --- a/projects/shibance-bsc/constants/bsc/tokens.js +++ /dev/null @@ -1,135 +0,0 @@ -const ADDRESSES = require('../../../helper/coreAssets.json') -const tokens = { - bnb: { - symbol: "BNB", - projectLink: "https://www.binance.com/", - }, - woof: { - symbol: "WOOF", - address: { - 56: "0x9e26c50B8A3b7652c3fD2B378252A8647a0C9268", - 97: "0x43eef5BA4899431F7F9D855E9C5Ed06016c8227b", - }, - decimals: 18, - projectLink: "https://shibance.com/", - }, - syrup: { - symbol: "DOGGYPOUND", - address: { - 56: "0x516B3D832379cd9417bFA3cc54459460CB91fd33", - 97: "0xCBc317eFa8f0b18683C6c1b9e1842BcaCbC46f36", - }, - decimals: 18, - projectLink: "https://pancakeswap.finance/", - }, - wbnb: { - symbol: "wBNB", - address: { - 56: ADDRESSES.bsc.WBNB, - 97: "0xae13d989dac2f0debff460ac112a837c89baa7cd", - }, - decimals: 18, - projectLink: "https://pancakeswap.finance/", - }, - busd: { - symbol: "BUSD", - address: { - 56: ADDRESSES.bsc.BUSD, - 97: "0x8301f2213c0eed49a7e28ae4c3e91722919b8b47", - }, - decimals: 18, - projectLink: "https://www.paxos.com/busd/", - }, - usdt: { - symbol: "USDT", - address: { - 56: ADDRESSES.bsc.USDT, - 97: "0x9D4BB7939D27D3bd7F425744DFBf7eE777490388", - }, - decimals: 18, - projectLink: "https://usdt.com/", - }, - doge: { - symbol: "DOGE", - address: { - 56: "0xba2ae424d960c26247dd6c32edc70b295c744c43", - 97: "0x30c638Fd87379Dc280fA1892667a1BFA4ff31387", - }, - decimals: 8, - projectLink: "https://doge.com/", - }, - babydoge: { - symbol: "BABYDOGE", - address: { - 56: "0xc748673057861a797275cd8a068abb95a902e8de", - 97: "", - }, - decimals: 18, - projectLink: "https://babydogecoin.com/", - }, - cummies: { - symbol: "CUMMIES", - address: { - 56: "0x27ae27110350b98d564b9a3eed31baebc82d878d", - 97: "", - }, - decimals: 18, - projectLink: "https://cumrocket.io/", - }, - safemoon: { - symbol: "SAFEMOON", - address: { - 56: "0x8076c74c5e3f5852037f31ff0093eeb8c8add8d3", - 97: "", - }, - decimals: 9, - projectLink: "https://safemoon.net/", - }, - ass: { - symbol: "ASS", - address: { - 56: "0x7c63f96feafacd84e75a594c00fac3693386fbf0", - 97: "0x422227357806ed386de58340d34c17b60d68046e", - }, - decimals: 9, - projectLink: "https://assfinance.com/", - }, - moonshot: { - symbol: "MOONSHOT", - address: { - 56: "0xd27d3f7f329d93d897612e413f207a4dbe8bf799", - 97: "", - }, - decimals: 9, - projectLink: "https://project-moonshot.me/", - }, - cake: { - symbol: "CAKE", - address: { - 56: "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", - 97: "", - }, - decimals: 18, - projectLink: "https://pancakeswap.finance/", - }, - cupcake: { - symbol: "CUPCAKE", - address: { - 56: "0x5d74b0f8c474f96e093c70b507452399573cff73", - 97: "", - }, - decimals: 18, - projectLink: "https://cupcakecoin.io/", - }, - birb: { - symbol: "BIRB", - address: { - 56: "0x82a479264b36104be4fdb91618a59a4fc0f50650", - 97: "", - }, - decimals: 18, - projectLink: "https://birb.co/", - }, -}; - -module.exports = tokens; \ No newline at end of file diff --git a/projects/shibance-bsc/constants/chain.js b/projects/shibance-bsc/constants/chain.js deleted file mode 100644 index 16c7147896..0000000000 --- a/projects/shibance-bsc/constants/chain.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - kcc: 321, - bsc: 56, -}; \ No newline at end of file diff --git a/projects/shibance-bsc/constants/kcc/contracts.js b/projects/shibance-bsc/constants/kcc/contracts.js deleted file mode 100644 index 929889ec98..0000000000 --- a/projects/shibance-bsc/constants/kcc/contracts.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - masterChef: { - 321: "0x1Ae33198c47799e9333bbcd74cd3aB80DC03D283", - }, - sousChef: { - 321: "0xE35a1619319BBfa5Bf985e4Ca14964210774aB31", - }, - multiCall: { - 321: "0xEdf9cC6cC32842D74ffD6D85D7985ee9283B1E24", - }, - woofVault: { - 321: "0x5cE1e2F6c99aFcfbB6E640354837C263ec3a5664", - }, -}; \ No newline at end of file diff --git a/projects/shibance-bsc/constants/kcc/farms.js b/projects/shibance-bsc/constants/kcc/farms.js deleted file mode 100644 index 0abaf129c3..0000000000 --- a/projects/shibance-bsc/constants/kcc/farms.js +++ /dev/null @@ -1,105 +0,0 @@ -const tokens = require("./tokens"); - -const farms = [ - { - pid: 0, - lpSymbol: "KWOOF", - lpAddresses: { - 321: "0x192F72eFD1009D90B0e6F82Ff27a0a2389F803e5", - }, - token: tokens.syrup, - quoteToken: tokens.wbnb, - }, - { - pid: 10, - lpSymbol: "KAFE-KWOOF LP", - lpAddresses: { - 321: "0x016b2ec91d6eebf65827c16b612a35187e0db6f9", - }, - token: tokens.kafe, - quoteToken: tokens.kwoof, - }, - { - pid: 11, - lpSymbol: "KAFE-USDT LP", - lpAddresses: { - 321: "0x473666ca99a69c3d445386c0c4d1b524c9e8fd35", - }, - token: tokens.kafe, - quoteToken: tokens.busd, - }, - { - pid: 1, - lpSymbol: "KWOOF-KCS LP", - lpAddresses: { - 321: "0x463e451d05f84da345d641fbaa3129693ce13816", - }, - token: tokens.kwoof, - quoteToken: tokens.wbnb, - }, - { - pid: 3, - lpSymbol: "KWOOF-USDT LP", - lpAddresses: { - 321: "0x5ea4ee58945c7e94c6efdce53d0b46d3dfbcf7db", - }, - token: tokens.kwoof, - quoteToken: tokens.busd, - }, - { - pid: 4, - lpSymbol: "KWOOF-USDC LP", - lpAddresses: { - 321: "0xd05be4d487beffb4eb9dbec9f16158d7c9e60a7c", - }, - token: tokens.kwoof, - quoteToken: tokens.usdc, - }, - { - pid: 2, - lpSymbol: "USDT-KCS LP", - lpAddresses: { - 321: "0x5a4b75cec96b99bc7dda80c42914636a5a46dfb1", - }, - token: tokens.busd, - quoteToken: tokens.wbnb, - }, - { - pid: 5, - lpSymbol: "USDC-KCS LP", - lpAddresses: { - 321: "0x3705eef160335a9aaa375ce31f858ba0a64aade0", - }, - token: tokens.usdc, - quoteToken: tokens.wbnb, - }, - { - pid: 6, - lpSymbol: "USDC-USDT LP", - lpAddresses: { - 321: "0x7060d8bfe77df123c8992d6ebf36b66163124c33", - }, - token: tokens.usdc, - quoteToken: tokens.busd, - }, - { - pid: 7, - lpSymbol: "GHOST-KWOOF LP", - lpAddresses: { - 321: "0x35540268609fbfbbed512bc917d75668e5f5d11d", - }, - token: tokens.ghost, - quoteToken: tokens.kwoof, - }, - { - pid: 8, - lpSymbol: "KUST-KWOOF LP", - lpAddresses: { - 321: "0x4eda6784ed216a30d89da18a73c05dff810c69e2", - }, - token: tokens.kust, - quoteToken: tokens.kwoof, - }, -]; - -module.exports = farms; diff --git a/projects/shibance-bsc/constants/kcc/pools.js b/projects/shibance-bsc/constants/kcc/pools.js deleted file mode 100644 index b9593ae39a..0000000000 --- a/projects/shibance-bsc/constants/kcc/pools.js +++ /dev/null @@ -1,39 +0,0 @@ -const tokens = require("./tokens"); - -const PoolCategory = { - COMMUNITY: "Community", - CORE: "Core", - BINANCE: "Binance", // Pools using native BNB behave differently than pools using a token - AUTO: "Auto", -}; - -const pools = [ - { - sousId: 0, - stakingToken: tokens.kwoof, - earningToken: tokens.kwoof, - contractAddress: { - 321: "0x1Ae33198c47799e9333bbcd74cd3aB80DC03D283", - }, - poolCategory: PoolCategory.CORE, - harvest: true, - tokenPerBlock: "10", - sortOrder: 1, - isFinished: false, - }, - { - sousId: 1, - stakingToken: tokens.kwoof, - earningToken: tokens.kafe, - contractAddress: { - 321: "0x27d55dd01cb6bff2791f46e4a7657e69257e80df", - }, - poolCategory: PoolCategory.CORE, - harvest: true, - tokenPerBlock: "0.00289", - sortOrder: 1, - isFinished: false, - }, -]; - -module.exports = pools; diff --git a/projects/shibance-bsc/constants/kcc/tokens.js b/projects/shibance-bsc/constants/kcc/tokens.js deleted file mode 100644 index f99759f16c..0000000000 --- a/projects/shibance-bsc/constants/kcc/tokens.js +++ /dev/null @@ -1,73 +0,0 @@ -const ADDRESSES = require('../../../helper/coreAssets.json') -const tokens = { - bnb: { - symbol: "BNB", - projectLink: "https://www.kucoin.com/", - }, - kwoof: { - symbol: "KWOOF", - address: { - 321: "0x192F72eFD1009D90B0e6F82Ff27a0a2389F803e5", - }, - decimals: 18, - projectLink: "https://shibance.com/", - }, - syrup: { - symbol: "DOGGYPOUND", - address: { - 321: "0xc72B04864aE423CD97F83E49D53b76b5937de8C8", - }, - decimals: 18, - projectLink: "https://shibance.com/", - }, - wbnb: { - symbol: "wBNB", - address: { - 321: ADDRESSES.kcc.WKCS, - }, - decimals: 18, - projectLink: "https://www.kcc.io/", - }, - busd: { - symbol: "BUSD", - address: { - 321: ADDRESSES.kcc.USDT, - }, - decimals: 18, - projectLink: "https://www.kcc.io/", - }, - usdc: { - symbol: "USDC", - address: { - 321: ADDRESSES.kcc.USDC, - }, - decimals: 18, - projectLink: "https://www.kcc.io/", - }, - ghost: { - symbol: "GHOST", - address: { - 321: "0x3341a4cc481637a773187400227446f85f66da0a", - }, - decimals: 9, - projectLink: "https://twitter.com/kughostkcc/", - }, - kust: { - symbol: "KUST", - address: { - 321: "0xfc56a7e70f6c970538020cc39939929b4d393f1f", - }, - decimals: 18, - projectLink: "https://kustarter.com/", - }, - kafe: { - symbol: "KAFE", - address: { - 321: "0x516F50028780B60e2FE08eFa853124438f9E46a7", - }, - decimals: 18, - projectLink: "https://kukafe.finance/", - }, -}; - -module.exports = tokens; diff --git a/projects/shibance-bsc/farm.js b/projects/shibance-bsc/farm.js deleted file mode 100644 index 97ba169f07..0000000000 --- a/projects/shibance-bsc/farm.js +++ /dev/null @@ -1,318 +0,0 @@ - - -const chains = require('./constants/chain'); -const { BIG_TEN, BIG_ZERO } = require("./format"); -const sdk = require("@defillama/sdk"); -const multiCall = sdk.api.abi.multiCall; -const allABI = require("./constants/abi.json"); -const BigNumber = require("bignumber.js"); - -const fetchFarm = async (chain, farm, block) => { - const { pid, lpAddresses, token, quoteToken } = farm; - const chainId = chains[chain]; - const addresses = require("./constants/" + chain + "/contracts.js"); - - function getAddress(addrs) { - return addrs[chainId]; - } - - const getMasterChefAddress = () => { - return getAddress(addresses.masterChef); - }; - - const lpAddress = lpAddresses[chainId]; - const farmFetch = async () => { - var _a; - const balances = ( - await multiCall({ - chain, - block, - calls: [ - // Balance of token in the LP contract - { - target: getAddress(token.address), - params: lpAddress, - }, - // Balance of quote token on LP contract - { - target: getAddress(quoteToken.address), - params: lpAddress, - }, - // Balance of LP tokens in the master chef contract - { - target: lpAddress, - params: getMasterChefAddress(), - }, - ].filter((_) => _.params), - abi: "erc20:balanceOf", - }) - ).output.map((_) => _.output); - - const decimals = ( - await multiCall({ - chain, - block, - calls: [ - { - target: getAddress(token.address), - }, - { - target: getAddress(quoteToken.address), - }, - ], - abi: "erc20:decimals", - }) - ).output.map((_) => _.output); - - const lpTotal = ( - await multiCall({ - chain, - block, - calls: [ - { - target: lpAddress, - }, - ], - abi: "erc20:totalSupply", - }) - ).output.map((_) => _.output); - - - const [tokenBalanceLP, quoteTokenBalanceLP, lpTokenBalanceMC] = balances; - const [lpTotalSupply] = lpTotal; - const [tokenDecimals, quoteTokenDecimals] = decimals; - - // Ratio in % of LP tokens that are staked in the MC, vs the total number in circulation - const lpTokenRatio = new BigNumber(lpTokenBalanceMC).div( - new BigNumber(lpTotalSupply) - ); - // Raw amount of token in the LP, including those not staked - const tokenAmountTotal = new BigNumber(tokenBalanceLP).div( - BIG_TEN.pow(tokenDecimals) - ); - const quoteTokenAmountTotal = new BigNumber(quoteTokenBalanceLP).div( - BIG_TEN.pow(quoteTokenDecimals) - ); - // Amount of token in the LP that are staked in the MC (i.e amount of token * lp ratio) - const tokenAmountMc = tokenAmountTotal.times(lpTokenRatio); - const quoteTokenAmountMc = quoteTokenAmountTotal.times(lpTokenRatio); - // Total staked in LP, in quote token value - const lpTotalInQuoteToken = quoteTokenAmountMc.times(new BigNumber(2)); - - // Only make masterchef calls if farm has pid - const [info, totalAllocPoint] = - pid || pid === 0 - ? [ - ( - await multiCall({ - chain, - block, - calls: [ - { - target: getMasterChefAddress(), - name: "poolInfo", - params: [pid], - }, - ], - abi: allABI["poolInfo"], - }) - ).output.map((_) => _.output)[0], - ( - await multiCall({ - chain, - block, - calls: [ - { - target: getMasterChefAddress(), - name: "totalAllocPoint", - }, - ], - abi: allABI["totalAllocPoint"], - }) - ).output.map((_) => _.output)[0], - ] - : [null, null]; - - const allocPoint = info ? new BigNumber(info.allocPoint) : BIG_ZERO; - const poolWeight = totalAllocPoint - ? allocPoint.div(new BigNumber(totalAllocPoint)) - : BIG_ZERO; - return { - ...farm, - tokenAmountMc: tokenAmountMc.toJSON(), - quoteTokenAmountMc: quoteTokenAmountMc.toJSON(), - tokenAmountTotal: tokenAmountTotal.toJSON(), - quoteTokenAmountTotal: quoteTokenAmountTotal.toJSON(), - lpTotalSupply: new BigNumber(lpTotalSupply).toJSON(), - lpTotalInQuoteToken: lpTotalInQuoteToken.toJSON(), - tokenPriceVsQuote: quoteTokenAmountTotal.div(tokenAmountTotal).toJSON(), - poolWeight: poolWeight.toJSON(), - multiplier: `${allocPoint.div(100).toString()}X`, - }; - }; - // // In some browsers promise above gets stuck that causes fetchFarms to not proceed. - // const timeout = new Promise((resolve) => { - // const id = setTimeout(() => { - // clearTimeout(id); - // resolve({}); - // }, 25000); - // }); - return await farmFetch(); -}; - -const filterFarmsByQuoteToken = ( - farms, - preferredQuoteTokens = ["BUSD", "wBNB"] -) => { - const preferredFarm = farms.find((farm) => { - return preferredQuoteTokens.some((quoteToken) => { - return farm.quoteToken.symbol === quoteToken; - }); - }); - return preferredFarm || farms[0]; -}; - - -const getFarmFromTokenSymbol = ( - farms, - tokenSymbol, - preferredQuoteTokens -) => { - const farmsWithTokenSymbol = farms.filter( - (farm) => farm.token.symbol === tokenSymbol - ); - const filteredFarm = filterFarmsByQuoteToken( - farmsWithTokenSymbol, - preferredQuoteTokens - ); - return filteredFarm; -}; - -const getFarmBaseTokenPrice = ( - farm, - quoteTokenFarm, - bnbPriceBusd -) => { - const hasTokenPriceVsQuote = Boolean(farm.tokenPriceVsQuote); - - if (farm.quoteToken.symbol === "BUSD") { - return hasTokenPriceVsQuote - ? new BigNumber(farm.tokenPriceVsQuote) - : BIG_ZERO; - } - - if (farm.quoteToken.symbol === "wBNB") { - return hasTokenPriceVsQuote - ? bnbPriceBusd.times(farm.tokenPriceVsQuote) - : BIG_ZERO; - } - - // We can only calculate profits without a quoteTokenFarm for BUSD/BNB farms - if (!quoteTokenFarm) { - return BIG_ZERO; - } - - // Possible alternative farm quoteTokens: - // UST (i.e. MIR-UST), pBTC (i.e. PNT-pBTC), BTCB (i.e. bBADGER-BTCB), ETH (i.e. SUSHI-ETH) - // If the farm's quote token isn't BUSD or wBNB, we then use the quote token, of the original farm's quote token - // i.e. for farm PNT - pBTC we use the pBTC farm's quote token - BNB, (pBTC - BNB) - // from the BNB - pBTC price, we can calculate the PNT - BUSD price - if (quoteTokenFarm.quoteToken.symbol === "wBNB") { - const quoteTokenInBusd = bnbPriceBusd.times( - quoteTokenFarm.tokenPriceVsQuote - ); - return hasTokenPriceVsQuote && quoteTokenInBusd - ? new BigNumber(farm.tokenPriceVsQuote).times(quoteTokenInBusd) - : BIG_ZERO; - } - - if (quoteTokenFarm.quoteToken.symbol === "BUSD") { - const quoteTokenInBusd = quoteTokenFarm.tokenPriceVsQuote; - return hasTokenPriceVsQuote && quoteTokenInBusd - ? new BigNumber(farm.tokenPriceVsQuote).times(quoteTokenInBusd) - : BIG_ZERO; - } - - // Catch in case token does not have immediate or once-removed BUSD/wBNB quoteToken - return BIG_ZERO; -}; - -const getFarmQuoteTokenPrice = ( - farm, - quoteTokenFarm, - bnbPriceBusd -) => { - if (farm.quoteToken.symbol === "BUSD") { - return new BigNumber(1); - } - - if (farm.quoteToken.symbol === "wBNB") { - return bnbPriceBusd; - } - - if (!quoteTokenFarm) { - return BIG_ZERO; - } - - if (quoteTokenFarm.quoteToken.symbol === "wBNB") { - return quoteTokenFarm.tokenPriceVsQuote - ? bnbPriceBusd.times(quoteTokenFarm.tokenPriceVsQuote) - : BIG_ZERO; - } - - if (quoteTokenFarm.quoteToken.symbol === "BUSD") { - return quoteTokenFarm.tokenPriceVsQuote - ? new BigNumber(quoteTokenFarm.tokenPriceVsQuote) - : BIG_ZERO; - } - - return BIG_ZERO; -}; - -const fetchFarmsPrices = async (farms) => { - const bnbBusdFarm = farms.find((farm) => farm.pid === 2); - const bnbPriceBusd = bnbBusdFarm.tokenPriceVsQuote - ? new BigNumber(1).div(bnbBusdFarm.tokenPriceVsQuote) - : BIG_ZERO; - - const farmsWithPrices = farms.map((farm) => { - const quoteTokenFarm = getFarmFromTokenSymbol( - farms, - farm.quoteToken.symbol - ); - const baseTokenPrice = getFarmBaseTokenPrice( - farm, - quoteTokenFarm, - bnbPriceBusd - ); - const quoteTokenPrice = getFarmQuoteTokenPrice( - farm, - quoteTokenFarm, - bnbPriceBusd - ); - const token = { ...farm.token, busdPrice: baseTokenPrice.toJSON() }; - const quoteToken = { - ...farm.quoteToken, - busdPrice: quoteTokenPrice.toJSON(), - }; - return { ...farm, token, quoteToken }; - }); - - return farmsWithPrices; -}; - - -async function fetchFarms(chain, block) { - try { - const farms = require("./constants/" + chain + "/farms"); - let allInfos = await Promise.all( - farms.map((_) => fetchFarm(chain, _, block)) - ); - allInfos = fetchFarmsPrices(allInfos); - return allInfos; - } catch(e) { - sdk.log("fetchFarms.error", e); - } -} - -module.exports = fetchFarms; \ No newline at end of file diff --git a/projects/shibance-bsc/format.js b/projects/shibance-bsc/format.js deleted file mode 100644 index dbca93475e..0000000000 --- a/projects/shibance-bsc/format.js +++ /dev/null @@ -1,43 +0,0 @@ - -const BigNumber = require("bignumber.js"); -const BIG_TEN = new BigNumber(10) -const BIG_ZERO = new BigNumber(0); -/** - * Take a formatted amount, e.g. 15 BNB and convert it to full decimal value, e.g. 15000000000000000 - */ -const getDecimalAmount = (amount, decimals = 18) => { - return new BigNumber(amount).times(BIG_TEN.pow(decimals)) -} - -const getBalanceAmount = (amount, decimals = 18) => { - return new BigNumber(amount).dividedBy(BIG_TEN.pow(decimals)) -} - -/** - * This function is not really necessary but is used throughout the site. - */ -const getBalanceNumber = (balance, decimals = 18) => { - return getBalanceAmount(balance, decimals).toNumber() -} - -const getFullDisplayBalance = (balance, decimals = 18, decimalsToAppear) => { - return getBalanceAmount(balance, decimals).toFixed(decimalsToAppear) -} - -const formatNumber = (number, minPrecision = 2, maxPrecision = 2) => { - const options = { - minimumFractionDigits: minPrecision, - maximumFractionDigits: maxPrecision, - } - return number.toLocaleString(undefined, options) -} - -module.exports = { - BIG_ZERO, - BIG_TEN, - formatNumber, - getFullDisplayBalance, - getBalanceNumber, - getBalanceAmount, - getDecimalAmount -} \ No newline at end of file diff --git a/projects/shibance-bsc/index.js b/projects/shibance-bsc/index.js deleted file mode 100644 index cfc420d444..0000000000 --- a/projects/shibance-bsc/index.js +++ /dev/null @@ -1,93 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const BigNumber = require("bignumber.js"); -const { getBalanceNumber } = require('./format'); -const chains = require('./constants/chain'); - -const fetchPublicVaultData = require("./vault"); -const fetchFarms = require('./farm'); -const { fetchPoolsTotalStaking } = require('./pool'); - -function getChainTvl(chain) { - return function (timestamp, _ethBlock, chainBlocks) { - return getTvl(chain, timestamp, _ethBlock, chainBlocks); - }; -} - -async function getTvl(chain, timestamp, _ethBlock, chainBlocks) { - const block = chainBlocks ? chainBlocks[chain] : null; - const chainPid = { - kcc: 1, - bsc: 3 - }; - - const chainId = chains[chain]; - const [vData, pools, farmsLP] = await Promise.all([ - fetchPublicVaultData(chain, block), - fetchPoolsTotalStaking(chain, block), - fetchFarms(chain, block), - ]); - - const totalCakeInVault = new BigNumber(vData.totalCakeInVault); - const woofLp = farmsLP.filter(_ => _.pid == chainPid[chain])[0]; - const woofPrice = new BigNumber(woofLp.token.busdPrice); - - const farmsLiquidity = farmsLP - .map((farm) => { - if ( - farm.pid !== 0 && - farm.multiplier !== "0X" && - farm.lpTotalInQuoteToken && - farm.quoteToken.busdPrice - ) { - return new BigNumber(farm.lpTotalInQuoteToken).times( - farm.quoteToken.busdPrice - ); - } - return null; - }) - .filter((liquidity) => !!liquidity) - .reduce((a, b) => a.plus(b)); - - let poolsStaked = null; - - if (woofPrice.gt(0) && totalCakeInVault.gt(0)) { - const staked = pools.map((pool) => { - if (pool.sousId === 0) { - return new BigNumber(pool.totalStaked) - .minus(totalCakeInVault) - .times(woofPrice); - } - return new BigNumber(pool.totalStaked).times(woofPrice); - }); - poolsStaked = staked.reduce((a, b) => a.plus(b)); - } - - const tvl = - farmsLiquidity && totalCakeInVault && poolsStaked - ? farmsLiquidity - .plus( - getBalanceNumber( - totalCakeInVault.times(woofPrice).plus(poolsStaked), - 18 - ) - ) - : null; - - const balances = {}; - const usdMappings = { - 'bsc' : ADDRESSES.ethereum.BUSD - } - const baseToken = usdMappings[chain]; - balances[`${chain}:${baseToken}`] = tvl.toNumber(); - - return tvl.toNumber(); -} - - -module.exports = { - misrepresentedTokens: true, - methodology: "We count liquidity on the dexes, pulling data from onchain", - bsc: { - tvl: getChainTvl("bsc"), - } -}; \ No newline at end of file diff --git a/projects/shibance-bsc/pool.js b/projects/shibance-bsc/pool.js deleted file mode 100644 index c8533bf5fa..0000000000 --- a/projects/shibance-bsc/pool.js +++ /dev/null @@ -1,78 +0,0 @@ -const chains = require("./constants/chain"); -const sdk = require("@defillama/sdk"); -const multiCall = sdk.api.abi.multiCall; -const BigNumber = require("bignumber.js"); - -const fetchPoolsTotalStaking = async (chain, block) => { - const chainId = chains[chain]; - const tokens = require("./constants/" + chain + "/tokens"); - const poolsConfig = require("./constants/" + chain + "/pools"); - - function getAddress(addrs) { - return addrs[chainId]; - } - - const getWbnbAddress = () => { - return getAddress(tokens.wbnb.address); - }; - try { - - const nonBnbPools = poolsConfig.filter( - (p) => p.stakingToken.symbol !== "BNB" - ); - const bnbPool = poolsConfig.filter((p) => p.stakingToken.symbol === "BNB"); - const callsNonBnbPools = nonBnbPools - .map((poolConfig) => { - return { - target: getAddress(poolConfig.stakingToken.address), - params: getAddress(poolConfig.contractAddress), - }; - }) - .filter((_) => _.params); - - const callsBnbPools = bnbPool - .map((poolConfig) => { - return { - target: getWbnbAddress(), - params: getAddress(poolConfig.contractAddress), - }; - }) - .filter((_) => _.params); - - const nonBnbPoolsTotalStaked = ( - await multiCall({ - chain, - block, - calls: callsNonBnbPools, - abi: "erc20:balanceOf", - }) - ).output.map((_) => _.output); - - const bnbPoolsTotalStaked = ( - await multiCall({ - chain, - block, - calls: callsBnbPools, - abi: "erc20:balanceOf", - }) - ).output.map((_) => _.output); - - return [ - ...nonBnbPools.map((p, index) => ({ - sousId: p.sousId, - totalStaked: new BigNumber(nonBnbPoolsTotalStaked[index]).toJSON(), - })), - ...bnbPool.map((p, index) => ({ - sousId: p.sousId, - totalStaked: new BigNumber(bnbPoolsTotalStaked[index]).toJSON(), - })), - ]; - } catch (e) { - sdk.log("fetchPoolsTotalStaking", e); - } -}; - - -module.exports = { - fetchPoolsTotalStaking, -}; \ No newline at end of file diff --git a/projects/shibance-bsc/vault.js b/projects/shibance-bsc/vault.js deleted file mode 100644 index 5d5832ae2f..0000000000 --- a/projects/shibance-bsc/vault.js +++ /dev/null @@ -1,88 +0,0 @@ -const cakeVaultAbi = { - getPricePerFullShare: "uint256:getPricePerFullShare", - totalShares: "uint256:totalShares", - calculateHarvestCakeRewards: "uint256:calculateHarvestCakeRewards", - calculateTotalPendingCakeRewards: "uint256:calculateTotalPendingCakeRewards", -} -const BigNumber = require("bignumber.js"); -const { - getBalanceNumber, - getFullDisplayBalance, - getDecimalAmount, -} = require("./format"); - -const woofVaultContractAddres = { - kcc: "0x5cE1e2F6c99aFcfbB6E640354837C263ec3a5664", - bsc: "0x09fE45A62502E7a0b226a99f18043F3eC32F78E8", -}; -const sdk = require("@defillama/sdk") - -const convertSharesToWoof = ( - shares, - cakePerFullShare, - decimals = 18, - decimalsToRound = 3 -) => { - const sharePriceNumber = getBalanceNumber(cakePerFullShare, decimals); - const amountInCake = new BigNumber(shares.multipliedBy(sharePriceNumber)); - const cakeAsNumberBalance = getBalanceNumber(amountInCake, decimals); - const cakeAsBigNumber = getDecimalAmount( - new BigNumber(cakeAsNumberBalance), - decimals - ); - const cakeAsDisplayBalance = getFullDisplayBalance( - amountInCake, - decimals, - decimalsToRound - ); - return { cakeAsNumberBalance, cakeAsBigNumber, cakeAsDisplayBalance }; -}; - -const fetchPublicVaultData = async (chain, block) => { - const woofVaultAddress = woofVaultContractAddres[chain]; - const [ - sharePrice, - shares, - estimatedCakeBountyReward, - totalPendingCakeHarvest, - ] = await Promise.all([ - sdk.api.abi.call({ - block, chain, - target: woofVaultAddress, - abi: cakeVaultAbi.getPricePerFullShare - }), - sdk.api.abi.call({ - block, chain, - target: woofVaultAddress, - abi: cakeVaultAbi.totalShares - }), - sdk.api.abi.call({ - block, chain, - target: woofVaultAddress, - abi: cakeVaultAbi.calculateHarvestCakeRewards - }), - sdk.api.abi.call({ - block, chain, - target: woofVaultAddress, - abi: cakeVaultAbi.calculateTotalPendingCakeRewards - }), - ]).then(response => response.map(a => a.output)); - - const totalSharesAsBigNumber = new BigNumber(shares); - const sharePriceAsBigNumber = new BigNumber(sharePrice); - const totalCakeInVaultEstimate = convertSharesToWoof( - totalSharesAsBigNumber, - sharePriceAsBigNumber - ); - return { - totalShares: totalSharesAsBigNumber.toJSON(), - pricePerFullShare: sharePriceAsBigNumber.toJSON(), - totalCakeInVault: totalCakeInVaultEstimate.cakeAsBigNumber.toJSON(), - estimatedCakeBountyReward: new BigNumber( - estimatedCakeBountyReward - ).toJSON(), - totalPendingCakeHarvest: new BigNumber(totalPendingCakeHarvest).toJSON(), - }; -}; - -module.exports = fetchPublicVaultData; \ No newline at end of file From b87db77ac19f3a01f3c0d29053bd1cb4fd443f71 Mon Sep 17 00:00:00 2001 From: MirthFutures <69535002+MirthFutures@users.noreply.github.com> Date: Sat, 15 Jul 2023 07:40:20 -0400 Subject: [PATCH 1153/1354] Add Beefy Polygon zkEVM (#6812) --- projects/beefy/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index f26b625255..2556850b16 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -34,6 +34,7 @@ const chains = { fantom: 250, zksync: 324, metis: 1088, + polygon_zkevm: 1101, moonbeam: 1284, moonriver: 1285, kava: 2222, From 533b63a0d3b7c4689440c35c1953520fc54b2dea Mon Sep 17 00:00:00 2001 From: stupid-boar <6961601+stupid-boar@users.noreply.github.com> Date: Sat, 15 Jul 2023 14:40:58 +0300 Subject: [PATCH 1154/1354] Add TRON chain (#6809) * fix swop.fi TVL * add USDT/USDC/BTCB for BSC TVL * add CRV token * add polygon MATIC * add USDT+USDC [polygon] + TRX [tron] --- projects/pepe-bridge/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index b4440ebb1a..b690b874cf 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -27,6 +27,16 @@ const config = { ], polygon: [ [[nullAddress], '0xEa3cc73165748AD1Ca76b4d1bA9ebC43fb399018'], + [ + [ + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.USDC, + ], + '0xF57dB884606a0ed589c06320d9004FBeD4f81e4A' + ] + ], + tron: [ + [[nullAddress], 'TMsm33cUm8HuxyRqwG7xhV46cmx5NVPPGB'] ] } module.exports = {}; From 59e3acab8aa532740e0c66557c1ece129db7594c Mon Sep 17 00:00:00 2001 From: yieldpulse <138122078+yieldpulse@users.noreply.github.com> Date: Sat, 15 Jul 2023 17:24:36 +0530 Subject: [PATCH 1155/1354] add yieldpulse finance (#6808) * add yieldpulse finance * minor fix --------- Co-authored-by: darkcrystl <111988230+tombhio@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/YieldPulseFinance/index.js | 10 ++++++++++ projects/helper/coreAssets.json | 1 + 2 files changed, 11 insertions(+) create mode 100644 projects/YieldPulseFinance/index.js diff --git a/projects/YieldPulseFinance/index.js b/projects/YieldPulseFinance/index.js new file mode 100644 index 0000000000..98946809a2 --- /dev/null +++ b/projects/YieldPulseFinance/index.js @@ -0,0 +1,10 @@ +const { masterchefExports } = require("../helper/unknownTokens"); + +module.exports = masterchefExports({ + chain: "pulse", + masterchef: "0xc9649cd27cFe8D74a47D711e04fEF3AbC4B56bae", + nativeTokens: ["0xDd40a166b43c0b95F1248c9A5AFFD7A166f1526a"], + useDefaultCoreAssets: true, + poolInfoABI: "function poolInfo(uint256) view returns (address)", + getToken: (i) => i, +}); diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 167ba283a4..07e338b099 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1330,6 +1330,7 @@ "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", "USDC": "0x15D38573d2feeb82e7ad5187aB8c1D52810B1f07", "USDT": "0x0Cb6F5a34ad42ec934882A05265A7d5F59b51A2f", + "HEX": "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39", "DAI": "0xefd766ccb38eaf1dfd701853bfce31359239f305" }, "onus": { From 0d6e53f15ece4ab189b750ae82b0be8212d3b91f Mon Sep 17 00:00:00 2001 From: Lawson Graham <45542987+LawsonGraham@users.noreply.github.com> Date: Sat, 15 Jul 2023 05:15:11 -0700 Subject: [PATCH 1156/1354] added psm tvl (#6810) * added psm tvl * Update package-lock.json --- projects/move-dollar/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/move-dollar/index.js b/projects/move-dollar/index.js index 36880178b7..43d9d511f2 100644 --- a/projects/move-dollar/index.js +++ b/projects/move-dollar/index.js @@ -12,6 +12,7 @@ async function _getResources() { } const extractVaultType = resource => resource.type.split('<')[1].replace('>', '').split(', '); const vaultsFilter = resource => resource.type.includes(`${moveDollarAddress}::vault::Vaults<`) +const psmsFilter = resource => resource.type.includes(`${moveDollarAddress}::psm::PSM<`) module.exports = { timetravel: false, @@ -25,10 +26,16 @@ module.exports = { total_collateral: vault.data.total_collateral, asset_type: extractVaultType(vault), })); - + const psms = resources.filter(psmsFilter).map(psm => ({ + total_collateral: psm.data.coin.value, + asset_type: extractVaultType(psm), + })); vaults.forEach(({ asset_type, total_collateral }) => { sdk.util.sumSingleBalance(balances, asset_type, total_collateral); }); + psms.forEach(({ asset_type, total_collateral }) => { + sdk.util.sumSingleBalance(balances, asset_type, total_collateral); + }); return transformBalances("aptos", balances); }, From e2a8ce9306b19bf75515478532b17ddc801a0f31 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Sat, 15 Jul 2023 13:15:42 +0100 Subject: [PATCH 1157/1354] New LPs 14/07 Scrub Invest (#6807) Co-authored-by: theg --- projects/scrubinvest/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index 1621561e06..3515579cfd 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -15,6 +15,10 @@ async function tvl(_, _b, _cb, { api, }) { { target: '0x371d33963fb89ec9542a11ccf955b3a90391f99f', params: '0x43Ac7f627e41EBDa7515FEaCa425306AaB9cB602' }, { target: '0x1E5573b2A7C1D08112d0Ff22e9F2D8EFc9583532', params: '0x9e890FBD4295D92c41fA12a2083b51C387699Fd8' }, { target: '0x8fE243F8B47107c468537D74514d7c52Cd61E937', params: '0x56a9c9230d6D3b7bF147c10fdDBCD8F2eB1a2B6d' }, + //NEW LPs 14/07 - GAUGE / CONTRACT + { target: '0x5383dEB37479599a33584f7Bbc346ab299e30FF0', params: '0x79eb3848B7B4630D1d883172f8e56B2e8fb18521' }, + { target: '0x776d2Ae19FC4c5982D5b20d8c14BCDae09755796', params: '0x1C415Ce79D0A18A4aA835D3d9083d2aF4d7894FC' }, + { target: '0x1f343A11b317EB54F08D80FD3cF9d706eDA5982c', params: '0xF35265f9713FD7ab6a27D387B2D02C1306FFB606' }, ] const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls }) From 261d4191c2e0830c8bc4b89cbf2a0a7f88fdcee9 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 15 Jul 2023 15:40:14 +0100 Subject: [PATCH 1158/1354] add ajna --- projects/ajna/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/ajna/index.js diff --git a/projects/ajna/index.js b/projects/ajna/index.js new file mode 100644 index 0000000000..70070aee1f --- /dev/null +++ b/projects/ajna/index.js @@ -0,0 +1,25 @@ +const sdk = require("@defillama/sdk") +const { sumTokens2 } = require('../helper/unwrapLPs') + +async function tvl(_, _b, _cb, { api, }) { + const pools = await api.call({ abi: 'address[]:getDeployedPoolsList', target: '0xe6f4d9711121e5304b30ac2aae57e3b085ad3c4d'}) + const collaterals = await api.multiCall({ abi: 'address:collateralAddress', calls: pools}) + const borrows = await api.multiCall({ abi: 'address:quoteTokenAddress', calls: pools}) + const ownerTokens = pools.map((v, i) => [[collaterals[i], borrows[i]], v]) + return sumTokens2({ ownerTokens, api}) +} + +async function borrowed(_, _b, _cb, { api, }) { + const pools = await api.call({ abi: 'address[]:getDeployedPoolsList', target: '0xe6f4d9711121e5304b30ac2aae57e3b085ad3c4d'}) + const debts = await api.multiCall({ abi: 'function debtInfo() external view returns (uint256, uint256, uint256, uint256)', calls: pools}) + const borrows = await api.multiCall({ abi: 'address:quoteTokenAddress', calls: pools}) + const borrowScale = await api.multiCall({ abi: 'uint:quoteTokenScale', calls: pools}) + const balances = {} + pools.map((v, i) => sdk.util.sumSingleBalance(balances, borrows[i], debts[i][0]/borrowScale[i])) + return balances + } + +module.exports = { + misrepresentedTokens: true, + ethereum: { tvl, borrowed } +} \ No newline at end of file From ff0d2275d3c243b93ec264bbe7dc9f22bcaf6d8c Mon Sep 17 00:00:00 2001 From: Joss Duff Date: Sat, 15 Jul 2023 14:09:31 -0400 Subject: [PATCH 1159/1354] Added Arbitrum TVL (#6806) * Added 3 new hallmark events * Added tvl data for arbitrum. Both queries run off a dynamic token query from metrics subgraph * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/rubicon/index.js | 78 ++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/projects/rubicon/index.js b/projects/rubicon/index.js index 32f6290c20..53b4768732 100644 --- a/projects/rubicon/index.js +++ b/projects/rubicon/index.js @@ -1,43 +1,47 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {transformOptimismAddress} = require('../helper/portedTokens') -const {sumTokensAndLPsSharedOwners} = require('../helper/unwrapLPs') +const { cachedGraphQuery } = require('../helper/cache') +const { sumTokens2 } = require('../helper/unwrapLPs') -const tokens = [ - ADDRESSES.optimism.USDC, //USDC - "0x68f180fcce6836688e9084f035309e29bf0a2095", //WBTC - ADDRESSES.optimism.DAI, //DAI - ADDRESSES.optimism.USDT, //USDT - "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", //SNX - ADDRESSES.tombchain.FTM, //ETH - ADDRESSES.optimism.OP //OP -] +const RUBICON_MARKET_OPTIMISM = '0x7a512d3609211e719737E82c7bb7271eC05Da70d' +const RUBICON_MARKET_ARBITRUM = '0xC715a30FDe987637A082Cf5F19C74648b67f2db8' -const owners = [ - "0x7a512d3609211e719737E82c7bb7271eC05Da70d", // Rubicon Market - // * Bath Tokens * TODO: drive dynamically off of subgraph query - "0xB0bE5d911E3BD4Ee2A8706cF1fAc8d767A550497", // bathETH - "0x7571CC9895D8E997853B1e0A1521eBd8481aa186", // bathWBTC - "0xe0e112e8f33d3f437D1F895cbb1A456836125952", // bathUSDC - "0x60daEC2Fc9d2e0de0577A5C708BcaDBA1458A833", // bathDAI - "0xfFBD695bf246c514110f5DAe3Fa88B8c2f42c411", // bathUSDT - "0xeb5F29AfaaA3f44eca8559c3e8173003060e919f", // bathSNX - "0x574a21fE5ea9666DbCA804C9d69d8Caf21d5322b" // bathOP -] +module.exports = { + methodology: "Counts the tokens on the market (orders in the orderbook) and in bath pools", + hallmarks: [ + [1657915200, "OP Rewards Start"], + [1685073974, "V2 Upgrade"], + [1688184374, "OP Rewards for Makers"], + [1688616374, "Arbitrum Launch"] + ] +} -async function tvl(time, ethBlock, {optimism: block}){ - const balances={} - const transform = await transformOptimismAddress() - await sumTokensAndLPsSharedOwners(balances, tokens.map(t=>[t, false]), owners, block, "optimism", transform) - return balances +const config = { + optimism: { + endpoint: 'https://api.thegraph.com/subgraphs/name/denverbaumgartner/rubiconmetricsoptimism', + owners: [ + RUBICON_MARKET_OPTIMISM, // Rubicon Market + "0xB0bE5d911E3BD4Ee2A8706cF1fAc8d767A550497", // bathETH + "0x7571CC9895D8E997853B1e0A1521eBd8481aa186", // bathWBTC + "0xe0e112e8f33d3f437D1F895cbb1A456836125952", // bathUSDC + "0x60daEC2Fc9d2e0de0577A5C708BcaDBA1458A833", // bathDAI + "0xfFBD695bf246c514110f5DAe3Fa88B8c2f42c411", // bathUSDT + "0xeb5F29AfaaA3f44eca8559c3e8173003060e919f", // bathSNX + "0x574a21fE5ea9666DbCA804C9d69d8Caf21d5322b" // bathOP + ] + }, + arbitrum: { + endpoint: 'https://api.thegraph.com/subgraphs/name/jossduff/rubiconmetricsarbitrum', + owners: [RUBICON_MARKET_ARBITRUM,] + } } -module.exports={ - methodology: "Counts the tokens on the bath pools and on the market (orders in the orderbook)", - optimism:{ - tvl - }, - hallmarks:[ - [1657915200, "OP Rewards Start"], - ] -} \ No newline at end of file +Object.keys(config).forEach(chain => { + const { endpoint, owners } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const response = await cachedGraphQuery('rubicon/' + chain, endpoint, `{ tokens { address } }`) + const tokens = response.tokens.map(i => i.address) + return sumTokens2({ api, tokens, owners}) + } + } +}) \ No newline at end of file From 4a442a7693dd71994385e63cd35a0bffb2d42e52 Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Sat, 15 Jul 2023 21:30:28 +0300 Subject: [PATCH 1160/1354] Add BSC for Morphex (#6814) --- projects/morphex/index.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/projects/morphex/index.js b/projects/morphex/index.js index 89de146681..bc99181130 100644 --- a/projects/morphex/index.js +++ b/projects/morphex/index.js @@ -1,14 +1,24 @@ const { staking } = require("../helper/staking"); const { gmxExports } = require("../helper/gmx"); -const vaultAddress = "0x3CB54f0eB62C371065D739A34a775CC16f46563e"; -const stakingAddress = "0xa4157E273D88ff16B3d8Df68894e1fd809DbC007"; -const tokenAddressMPX = "0x66eEd5FF1701E6ed8470DC391F05e27B1d0657eb"; +// Fantom +const vaultAddressFantom = "0x3CB54f0eB62C371065D739A34a775CC16f46563e"; +const stakingAddressFantom = "0xa4157E273D88ff16B3d8Df68894e1fd809DbC007"; +const tokenAddressMPXFantom = "0x66eEd5FF1701E6ed8470DC391F05e27B1d0657eb"; + +// BNB Chain +const vaultAddressBSC = "0x46940Dc651bFe3F2CC3E04cf9dC5579B50Cf0765"; +const stakingAddressBSC = "0x13d2bBAE955c54Ab99F71Ff70833dE64482519B1"; +const tokenAddressMPXBSC = "0x94C6B279b5df54b335aE51866d6E2A56BF5Ef9b7"; module.exports = { methodology: "Morphex liquidity is calculated by the value of tokens in the MLP pool. TVL also includes MPX staked.", fantom: { - staking: staking(stakingAddress, tokenAddressMPX, "fantom"), - tvl: gmxExports({ vault: vaultAddress }) - } + staking: staking(stakingAddressFantom, tokenAddressMPXFantom, "fantom"), + tvl: gmxExports({ vault: vaultAddressFantom }) + }, + bsc: { + staking: staking(stakingAddressBSC, tokenAddressMPXBSC, "bsc"), + tvl: gmxExports({ vault: vaultAddressBSC }) + }, }; From 9aa1e2a7c52bfe7291d83b174037097fce4ce6cb Mon Sep 17 00:00:00 2001 From: techyderp <138676931+techyderp@users.noreply.github.com> Date: Sun, 16 Jul 2023 20:38:08 +0530 Subject: [PATCH 1161/1354] Added new project(dex) - DerpDEX (#6815) * added DerpDEX as a project(dex) * formatted * Update index.js --------- Co-authored-by: tehyderp <138676931+tehyderp@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/DerpDEX/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/DerpDEX/index.js diff --git a/projects/DerpDEX/index.js b/projects/DerpDEX/index.js new file mode 100644 index 0000000000..7c09f1f6ab --- /dev/null +++ b/projects/DerpDEX/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + era: { + factory: "0x52a1865eb6903bc777a02ae93159105015ca1517", + fromBlock: 7790768, + }, +}); From b2684dbd3e19d6967209fe39d9f4b51bff8c3c98 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Sun, 16 Jul 2023 16:08:27 +0100 Subject: [PATCH 1162/1354] New Scrub Invest Pool (#6816) * New LPs 14/07 Scrub Invest * New Pool on Scrub Invest --------- Co-authored-by: theg --- projects/scrubinvest/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index 3515579cfd..9ffe54bb09 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -44,6 +44,8 @@ async function tvl(_, _b, _cb, { api, }) { ['0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', '0x3CcA2C0d433E00433082ba16e968CA11dA6Dc156'], ['0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d', '0x1504B9EDdD57Ed8252b3b3b407DdE27B72A80790'], ['0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', '0xC05021F3b3601BF33aB59dc75577B85985ACaab7'], + // New Scrub Pool + ['0x471F79616569343e8e84a66F342B7B433b958154', '0x67041094c4fc1492A1AB988Fb8De0ab4A0a4A080'], // WETH From 7ec0cdf944e1dfe4bc8f48592faa03335c0caade Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 16 Jul 2023 20:24:25 +0100 Subject: [PATCH 1163/1354] cull events --- projects/meanfinance/index.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/projects/meanfinance/index.js b/projects/meanfinance/index.js index de54e2772e..6b8637e2f8 100644 --- a/projects/meanfinance/index.js +++ b/projects/meanfinance/index.js @@ -61,13 +61,9 @@ module.exports = { arbitrum: getV2TvlObject('arbitrum'), bsc: getV2TvlObject('bsc'), hallmarks: [ - [1638850958, "V2 Beta launch on Optimism"], - [1643602958, "V2 full launch"], - [1646367758, "Deployment on Polygon"], - [1650082958, "Protocol is paused because a non-critical vulnerability"], + [1650082958, "Protocol is paused due to non-critical vulnerability"], [1653366158, "V2 Relaunch"], - [1654057358, "OP launch brings more users into Optimism and benefits Mean"], - [1666364400, "Yield-While-DCA launch"], + [1654057358, "OP launch"], [1668006000, "Deployment on Arbitrum"], [1672099200, "Deployment on Ethereum"], ] From 54fd4e744e4b9156a9eabe0c02aae229e47180f1 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 16 Jul 2023 20:25:52 +0100 Subject: [PATCH 1164/1354] remove another event --- projects/meanfinance/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/meanfinance/index.js b/projects/meanfinance/index.js index 6b8637e2f8..bab0a68a3d 100644 --- a/projects/meanfinance/index.js +++ b/projects/meanfinance/index.js @@ -62,7 +62,6 @@ module.exports = { bsc: getV2TvlObject('bsc'), hallmarks: [ [1650082958, "Protocol is paused due to non-critical vulnerability"], - [1653366158, "V2 Relaunch"], [1654057358, "OP launch"], [1668006000, "Deployment on Arbitrum"], [1672099200, "Deployment on Ethereum"], From d1ceab1b624fd86312bbe9f9871db1ce62eeb09d Mon Sep 17 00:00:00 2001 From: skydest <139523103+skydest@users.noreply.github.com> Date: Mon, 17 Jul 2023 15:24:34 +0800 Subject: [PATCH 1165/1354] add skydex tvl (#6799) * add skydex tvl * refactor skydex --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/skydex/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/skydex/index.js diff --git a/projects/skydex/index.js b/projects/skydex/index.js new file mode 100644 index 0000000000..52156dd304 --- /dev/null +++ b/projects/skydex/index.js @@ -0,0 +1,22 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const pools = [ + "0xe59eA42466f3dD0ea620A622701085983A068863", + "0x33b4424A65cfE19CDf0Dff4E54e399782327a1b6", +]; + +const blacklistedTokens = [] + +async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { + const tokensArray = await api.multiCall({ abi: "address[]:getTokens", calls: pools}) + const tokens = tokensArray.flat() + const calls = tokensArray.map((t, i)=> t.map((token) => ({ target: pools[i], params: token }))).flat() + const owners = await api.multiCall({ abi:"function assetOf(address) view returns (address)", calls}) + return sumTokens2({ api, tokensAndOwners2: [tokens, owners], blacklistedTokens }); +} + +module.exports = { + era: { + tvl, + }, +}; From 42aff58c35108417820c37c0335549be4c0a7a15 Mon Sep 17 00:00:00 2001 From: 0xortizzz <139551063+0xortizzz@users.noreply.github.com> Date: Mon, 17 Jul 2023 14:34:58 +0700 Subject: [PATCH 1166/1354] Update treasury (#6819) --- projects/treasury/level.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/projects/treasury/level.js b/projects/treasury/level.js index f08b75afe6..8ddfe1fee2 100644 --- a/projects/treasury/level.js +++ b/projects/treasury/level.js @@ -1,12 +1,20 @@ const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports } = require("../helper/treasury"); +const LVL = '0xb64e280e9d1b5dbec4accedb2257a87b400db149'; + module.exports = treasuryExports({ bsc: { tokens: [ "0xb5c42f84ab3f786bca9761240546aa9cec1f8821", ], - owners: ['0x8BFf27E9Fa1C28934554e6B5239Fb52776573619'], + owners: [ + '0x8BFf27E9Fa1C28934554e6B5239Fb52776573619', + '0xb07953f23545796710957faec97f05b21146ac2d', + '0x92a0a11a57c28d4c86a629530fd59b83b1276003', + '0x712a2e08c67cd7153f04fdb3037d4696300921d0', + ], + ownTokens: [LVL], }, arbitrum: { tokens: [ @@ -19,6 +27,10 @@ module.exports = treasuryExports({ "0xb076f79f8D1477165E2ff8fa99930381FB7d94c1", "0x5573405636F4b895E511C9C54aAfbefa0E7Ee458", ], - owners: ['0x635aac65f37a6bbe06a2dde77b0fd2f1748674d4'], + owners: [ + '0x635aac65f37a6bbe06a2dde77b0fd2f1748674d4', + '0x4b47ef68180ec46a0b6be4d34fd9d8680bee2b2c', + ], + ownTokens: [LVL], }, -}) \ No newline at end of file +}) From b3e518e21763f5d18710300e33a425c2e5d8ad0f Mon Sep 17 00:00:00 2001 From: rh-low <113329217+rh-low@users.noreply.github.com> Date: Mon, 17 Jul 2023 15:35:46 +0800 Subject: [PATCH 1167/1354] Added avax, arb, and bsc chains. (#6818) --- projects/messinaone/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/messinaone/index.js b/projects/messinaone/index.js index 9d8dd2bdf5..c906f8a0ca 100644 --- a/projects/messinaone/index.js +++ b/projects/messinaone/index.js @@ -8,6 +8,9 @@ const tokenChain = { algorand: 8, cronos: 20025, polygon: 5, + avax: 6, + arbitrum: 23, + bsc: 4, }; const fetchAssets = async () => { @@ -36,4 +39,7 @@ module.exports = { algorand: { tvl }, cronos: { tvl }, polygon: { tvl }, + avax: { tvl }, + arbitrum: { tvl }, + bsc: { tvl }, }; From 10310103da80892d546f64d3592ec3ab4f72cab1 Mon Sep 17 00:00:00 2001 From: ColaZero-dev <134653846+ColaZero-dev@users.noreply.github.com> Date: Mon, 17 Jul 2023 09:39:03 +0200 Subject: [PATCH 1168/1354] update colafactory adapter (#6817) * update colafactory adapter * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ColaFactory/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/ColaFactory/index.js diff --git a/projects/ColaFactory/index.js b/projects/ColaFactory/index.js new file mode 100644 index 0000000000..e34b1fc206 --- /dev/null +++ b/projects/ColaFactory/index.js @@ -0,0 +1,11 @@ +const { masterchefExports } = require("../helper/unknownTokens"); + +module.exports = masterchefExports({ + chain: "pulse", + masterchef: "0x5Fe423A22d4bFD1caFd6044042f4269Fc930F8dC", + nativeTokens: ["0x02Dff78fDeDaF86D9dfbe9B3132aA3Ea72Ed1680"], + useDefaultCoreAssets: true, + poolInfoABI: "function poolInfo(uint256) view returns (address)", + getToken: (i) => i, + blacklistedTokens: ['0x9bd778df9b803a2df1fbe94ca9b5765cdb299a23'], +}); From 870e962494f338e252b810204e1e64a079d2e551 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 17 Jul 2023 10:48:30 +0100 Subject: [PATCH 1169/1354] yield guild game adapters --- projects/treasury/yield-guild-game.js | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 projects/treasury/yield-guild-game.js diff --git a/projects/treasury/yield-guild-game.js b/projects/treasury/yield-guild-game.js new file mode 100644 index 0000000000..209fd1e80b --- /dev/null +++ b/projects/treasury/yield-guild-game.js @@ -0,0 +1,57 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const Treasury = "0xe30ed74c6633a1b0d34a71c50889f9f0fdb7d68a"; +const YGG = "0x25f8087EAD173b73D6e8B84329989A8eEA16CF73"; +const Treasury1 = "0xf0103243f4d22b5696588646b21313d85916a16a" +const Treasury2 = "0x16b281438c5984a46d94acc6c4b31e252a03dfcf" +const Treasury3 = "0xcafeacdadd29f55ce935492e20f1f982df3fb51d" +const Treasury4 = "0x23eb4e02c29e69452718cd5caf2255488bc7ce3a" +const Treasury5 = "0xb981290d9d804075986482f0302c03a3cd2aff32" +const Treasury6 = "0x21653e2f0472afaf64ec85f585f0db4ab83a83f0" +const Treasury7 = "0x8e8d8015a7ffa49c83ee7a8773b0f69380cc6552" + + +const treasurySolana = "GvAm8xG5BSWXy286jWXWzYpN2xzPADQEoK9U8dQCDtzt" +const treasurySolana1 = "3fGSv3VdKvf7KSMt1o9Lb3dZ4YK9ScUTWktcrC4JJBTq" + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.DAI,//DAI + ADDRESSES.ethereum.STETH,//stETH + ADDRESSES.ethereum.MATIC,//MATIC + ADDRESSES.ethereum.USDC,//USDC + ADDRESSES.ethereum.USDT, + '0x61E90A50137E1F645c9eF4a0d3A4f01477738406',//loka + '0xbA6B0dbb2bA8dAA8F5D6817946393Aef8D3A4487',//HSF + '0x232FB065D9d24c34708eeDbF03724f2e95ABE768',//SHEESHA + '0x0d02755a5700414B26FF040e1dE35D337DF56218' //BEND + ], + owners: [Treasury, Treasury1, Treasury2, Treasury3, Treasury5, Treasury6, Treasury7], + ownTokens: [YGG], + }, + solana: { + tokens: [ + "7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj" + ], + owners: [treasurySolana, treasurySolana1], + }, + optimism: { + tokens: [ + ADDRESSES.optimism.OP, + ADDRESSES.optimism.WETH + ], + owners: [Treasury1], + }, + polygon: { + tokens: [ + "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4", + "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "0x0b3F868E0BE5597D5DB7fEB59E1CADBb0fdDa50a" + ], + owners: [Treasury2, Treasury4], + }, +}) \ No newline at end of file From 6dda1addbb93fb7c896f4b9683ce167acb1e4e1f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 17 Jul 2023 13:30:25 +0200 Subject: [PATCH 1170/1354] track fusionx.fi --- package-lock.json | 12 ++++++------ projects/fusionx-fi/index.js | 10 ++++++++++ projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 4 ++++ 4 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 projects/fusionx-fi/index.js diff --git a/package-lock.json b/package-lock.json index 56af725e08..a24e14c6d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.30", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.30.tgz", - "integrity": "sha512-2Z5uQhddHSlcAePFw7d6xBK7JjDXDjmJQiOM7E5/IckaDu7AAD1bm5HScBeTKvBItKAdgDvU48nZeMFj7okImA==", + "version": "4.0.34", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.34.tgz", + "integrity": "sha512-Y6YWoqQWts3kliQ7+yXATEOoNn0iVZaz6PVPUdCN0dOta0eOFG6SgaVUDusaqxriQAHUKoYsodcFaIiMeQnQuw==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.30", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.30.tgz", - "integrity": "sha512-2Z5uQhddHSlcAePFw7d6xBK7JjDXDjmJQiOM7E5/IckaDu7AAD1bm5HScBeTKvBItKAdgDvU48nZeMFj7okImA==", + "version": "4.0.34", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.34.tgz", + "integrity": "sha512-Y6YWoqQWts3kliQ7+yXATEOoNn0iVZaz6PVPUdCN0dOta0eOFG6SgaVUDusaqxriQAHUKoYsodcFaIiMeQnQuw==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/fusionx-fi/index.js b/projects/fusionx-fi/index.js new file mode 100644 index 0000000000..5c28a36589 --- /dev/null +++ b/projects/fusionx-fi/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + mantle: { + tvl: getUniTVL({ + factory: "0xe5020961fa51ffd3662cdf307def18f9a87cce7c", + useDefaultCoreAssets: true, + }), + }, +}; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index e74b1076e6..85a86bef98 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -110,6 +110,7 @@ "litecoin", "loop", "lung", + "mantle", "map", "meta", "meter", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7f609adefe..a6ff5a4e46 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -64,6 +64,10 @@ const fixBalancesTokens = { ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, + mantle: { + '0x201eba5cc46d216ce6dc03f6a759e8e766e956ae': { coingeckoId: "tether", decimals: 6 }, + '0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8': { coingeckoId: "mantle", decimals: 18 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 8ddbaf87787f5ad58d51e83d3b0ea8538b9175ad Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 17 Jul 2023 13:44:16 +0200 Subject: [PATCH 1171/1354] track fusionx v3 --- projects/fusionx-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/fusionx-v3/index.js diff --git a/projects/fusionx-v3/index.js b/projects/fusionx-v3/index.js new file mode 100644 index 0000000000..a460bd32c0 --- /dev/null +++ b/projects/fusionx-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + mantle: { factory: '0x0c69e6B21cD183e2A268649178A66d53d738E760', fromBlock: 2646 }, +}) From d92094aaaad13432fd443440b49b99a165e7c596 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 17 Jul 2023 13:55:33 +0200 Subject: [PATCH 1172/1354] iziswap track mantle --- package-lock.json | 12 ++++++------ projects/helper/tokenMapping.js | 4 ++++ projects/izumi-iziswap/index.js | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a24e14c6d4..463ef7a6ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.34", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.34.tgz", - "integrity": "sha512-Y6YWoqQWts3kliQ7+yXATEOoNn0iVZaz6PVPUdCN0dOta0eOFG6SgaVUDusaqxriQAHUKoYsodcFaIiMeQnQuw==", + "version": "4.0.35", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.35.tgz", + "integrity": "sha512-v9v8Ang7xfDOqT93uxzR6jtpICRMGS+AI6/3dbKDk/WVfT1nq9I3Hz2uXcs1q4vIwK8WSpoeT5qlRXgadyJ95g==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.34", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.34.tgz", - "integrity": "sha512-Y6YWoqQWts3kliQ7+yXATEOoNn0iVZaz6PVPUdCN0dOta0eOFG6SgaVUDusaqxriQAHUKoYsodcFaIiMeQnQuw==", + "version": "4.0.35", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.35.tgz", + "integrity": "sha512-v9v8Ang7xfDOqT93uxzR6jtpICRMGS+AI6/3dbKDk/WVfT1nq9I3Hz2uXcs1q4vIwK8WSpoeT5qlRXgadyJ95g==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index a6ff5a4e46..858902bd14 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -57,6 +57,9 @@ const fixBalancesTokens = { tenet: { '0xd6cb8a253e12893b0cf39ca78f7d858652cca1fe': { coingeckoId: "tenet-1b000f7b-59cb-4e06-89ce-d62b32d362b9", decimals: 18 }, }, + ultron: { + '0xb1183357745d3fd7d291e42a2c4b478cdb5710c6': { coingeckoId: "ultron", decimals: 18 }, + }, avax: { '0x8fdcf51d1aaeb9f031838ebeb15884a0d5efcda3': { coingeckoId: "wrapped-bitcoin", decimals: 18 }, '0xaa44678304cc1a848bfc31dc013afcc6c9feae11': { coingeckoId: "benqi", decimals: 18 }, @@ -67,6 +70,7 @@ const fixBalancesTokens = { mantle: { '0x201eba5cc46d216ce6dc03f6a759e8e766e956ae': { coingeckoId: "tether", decimals: 6 }, '0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8': { coingeckoId: "mantle", decimals: 18 }, + '0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111': { coingeckoId: "ethereum", decimals: 18 }, } } diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index ccdf428ac8..95e75d5580 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -14,6 +14,7 @@ const poolHelpers = { 'cronos': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', 'polygon': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', // 'conflux': '0x1502d025BfA624469892289D45C0352997251728', + 'mantle': '0x1502d025BfA624469892289D45C0352997251728', 'ethereum': '0x19b683A2F45012318d9B2aE1280d68d3eC54D663', 'ontology_evm': '0x110dE362cc436D7f54210f96b8C7652C2617887D', 'ultron' : '0xcA7e21764CD8f7c1Ec40e651E25Da68AeD096037' From ac263becdb293c4ade48a3a365feaf0731c8e7b3 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Mon, 17 Jul 2023 13:45:54 +0100 Subject: [PATCH 1173/1354] Update fusion v3 --- projects/fusionx-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/fusionx-v3/index.js b/projects/fusionx-v3/index.js index a460bd32c0..ff3f1093c3 100644 --- a/projects/fusionx-v3/index.js +++ b/projects/fusionx-v3/index.js @@ -1,5 +1,5 @@ const { uniV3Export } = require('../helper/uniswapV3') module.exports = uniV3Export({ - mantle: { factory: '0x0c69e6B21cD183e2A268649178A66d53d738E760', fromBlock: 2646 }, + mantle: { factory: '0x530d2766D1988CC1c000C8b7d00334c14B69AD71', fromBlock: 2646 }, }) From 1726fce912a1f1460992d86df385e72207ae1c68 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 17 Jul 2023 18:32:02 +0200 Subject: [PATCH 1174/1354] track magicianmv.com --- projects/autofarm.js | 63 +++++++++++++++++++++--------------- projects/helper/utils.js | 4 +++ projects/magicianmv/index.js | 10 ++++++ 3 files changed, 51 insertions(+), 26 deletions(-) create mode 100644 projects/magicianmv/index.js diff --git a/projects/autofarm.js b/projects/autofarm.js index e0d7b51888..aec56e503b 100644 --- a/projects/autofarm.js +++ b/projects/autofarm.js @@ -1,31 +1,42 @@ -const utils = require('./helper/utils'); -const {fetchChainExports} = require('./helper/exports'); +const { sumUnknownTokens } = require('./helper/unknownTokens'); -const transformChain = { - okexchain: 'okex', - avax: 'avax', - wan: 'wanchain', -} - -function chainTvl(chain){ - return async()=>{ - const data = await utils.fetchURL(`https://static.autofarm.network/${transformChain[chain] ?? chain}/stats.json`) - return data.data.platformTVL - } -} - -module.exports=fetchChainExports(chainTvl, [ - 'bsc', 'polygon', - 'heco', 'avax', - 'fantom', 'moonriver', - 'okexchain', 'celo', - 'cronos', 'boba', - 'harmony', 'xdai', - 'velas', 'aurora', - 'oasis', 'wan', - 'kcc', 'evmos' -]) module.exports.hallmarks=[ [1618966800, "Venus incident"], [1634778000, "Emissions end"], ] + +const config = { + aurora: "0x62537419c8327AB66165bAE205Da8fcB6871A700", + avax: "0x864A0B7F8466247A0e44558D29cDC37D4623F213", + boba: "0x864A0B7F8466247A0e44558D29cDC37D4623F213", + bsc: "0x0895196562c7868c5be92459fae7f877ed450452", + celo: "0xdD11b66B90402F294a017c4688509c364312303F", + cronos: "0x76b8c3ECdF99483335239e66F34191f11534cbAA", + fantom: "0x76b8c3ECdF99483335239e66F34191f11534cbAA", + fuse: "0x9C30e4B50b4b3804D3b50f01619c61fE44ed894e", + harmony: "0x9c57658139afb41949cebc07d806f37d29d13eea", + heco: "0x96a29c4bce3126266983f535b41c30dba80d5d99", + moonbeam: "0x77286f5257e090b1bedbc6df6726d53cbf8573a6", + moonriver: "0xfadA8Cc923514F1D7B0586aD554b4a0CeAD4680E", + oasis: "0xbf19C3fe078258F1D1C34bEc7e624AD8a1DE343A", + okexchain: "0x864A0B7F8466247A0e44558D29cDC37D4623F213", + polygon: "0x89d065572136814230A55DdEeDDEC9DF34EB0B76", + velas: "0xAd2DB12795CeD89cA2D1819710233106115E3034", + xdai: "0xfadA8Cc923514F1D7B0586aD554b4a0CeAD4680E", + evmos: "0x9C30e4B50b4b3804D3b50f01619c61fE44ed894e", + kcc: "0x76b8c3ECdF99483335239e66F34191f11534cbAA", + wan: "0xAd2DB12795CeD89cA2D1819710233106115E3034", +} + +Object.keys(config).forEach(chain => { + const masterchef = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const data = await api.fetchList({ lengthAbi: 'uint256:poolLength', itemAbi: 'function poolInfo(uint256) view returns (address want, uint256,uint256,uint256,address strat)', target: masterchef, }) + const tokens = data.map(i => i.want) + const bals = await api.multiCall({ abi: 'uint256:wantLockedTotal', calls: data.map(i => i.strat), permitFailure: true, }) + bals.forEach((v, i) => v && api.add(tokens[i], v)) + return sumUnknownTokens({ api, resolveLP: true, useDefaultCoreAssets: true, }) + } + } +}) diff --git a/projects/helper/utils.js b/projects/helper/utils.js index 7b68ec4a0f..787dfae90a 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -60,6 +60,10 @@ function isLP(symbol, token, chain) { if (chain === 'polygon' && ['WLP', 'FLP'].includes(symbol)) return true if (chain === 'moonriver' && ['HBLP'].includes(symbol)) return true if (chain === 'ethpow' && ['LFG_LP'].includes(symbol)) return true + if (chain === 'aurora' && ['wLP'].includes(symbol)) return true + if (chain === 'oasis' && ['LPT'].includes(symbol)) return true + if (chain === 'wan' && ['WSLP'].includes(symbol)) return true + if (chain === 'polygon' && ['MbtLP'].includes(symbol)) return true if (chain === 'ethereum' && ['SUDO-LP'].includes(symbol)) return false if (chain === 'dogechain' && ['DST-V2'].includes(symbol)) return true if (chain === 'harmony' && ['HLP'].includes(symbol)) return true diff --git a/projects/magicianmv/index.js b/projects/magicianmv/index.js new file mode 100644 index 0000000000..05f52d0903 --- /dev/null +++ b/projects/magicianmv/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + polygon: { + tvl: getUniTVL({ + factory: "0xf08ae17c2a2728a788bb1b6c243fe7eb3e5bbadc", + useDefaultCoreAssets: true, + }), + }, +}; From 01aa5ad1c4bab584a8f7c7105d80a0ca82e5b5f1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:32:39 +0200 Subject: [PATCH 1175/1354] hotfix: heliswap --- projects/heliswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/heliswap/index.js b/projects/heliswap/index.js index 1adf5a5251..2d8a730585 100644 --- a/projects/heliswap/index.js +++ b/projects/heliswap/index.js @@ -44,7 +44,7 @@ const tvl = async () => { data: { data: { poolsConsistingOf }} } = await axios(requestObject); - totalTVL = poolsConsistingOf.reduce((acc, pool) => (isNaN(+pool.tvl)) ? acc : acc + +pool.tvl, 0) + totalTVL = poolsConsistingOf.reduce((acc, pool) => (isNaN(+pool.tvl) || +pool.tvl > 1e7) ? acc : acc + +pool.tvl, 0) return { tether: totalTVL }; }; From a4ce1ac3660baf08ab1a8780d1934759e8e603bf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:43:26 +0200 Subject: [PATCH 1176/1354] minor fix --- projects/heliswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/heliswap/index.js b/projects/heliswap/index.js index 2d8a730585..a6c26debbd 100644 --- a/projects/heliswap/index.js +++ b/projects/heliswap/index.js @@ -44,7 +44,7 @@ const tvl = async () => { data: { data: { poolsConsistingOf }} } = await axios(requestObject); - totalTVL = poolsConsistingOf.reduce((acc, pool) => (isNaN(+pool.tvl) || +pool.tvl > 1e7) ? acc : acc + +pool.tvl, 0) + totalTVL = poolsConsistingOf.reduce((acc, pool) => (isNaN(+pool.tvl) || +pool.tvl > 1e8) ? acc : acc + +pool.tvl, 0) return { tether: totalTVL }; }; From e508f68c811efbbf9f24087192986b09a826e5a3 Mon Sep 17 00:00:00 2001 From: 0xkaidev <92993009+0xkaidev@users.noreply.github.com> Date: Tue, 18 Jul 2023 01:51:51 +0700 Subject: [PATCH 1177/1354] Moraswap V2 on Neon EVM (#6823) * moraswap v2 * add neon evm chain * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 9 +++------ projects/moraswap/index.js | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 projects/moraswap/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 85a86bef98..2b85f5f476 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -127,6 +127,7 @@ "near", "neo", "neo3", + "neon_evm", "neutron", "nova", "nuls", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 858902bd14..5150ee20ac 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -45,12 +45,9 @@ const ibcMappings = { const fixBalancesTokens = { // Sample Code - // arbitrum_nova: { - // [nullAddress]: { coingeckoId: "ethereum", decimals: 18 }, - // [ADDRESSES.arbitrum_nova.WETH]: { coingeckoId: "ethereum", decimals: 18 }, - // [ADDRESSES.arbitrum_nova.USDT]: { coingeckoId: "tether", decimals: 6 }, - // [ADDRESSES.arbitrum_nova.USDC]: { coingeckoId: "usd-coin", decimals: 6 }, - // }, + neon_evm: { + '0xb14760c064a1b9eaf9ec5a8a421971e40a51b59c': { coingeckoId: 'neon', decimals:18}, + }, rpg: { '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, }, diff --git a/projects/moraswap/index.js b/projects/moraswap/index.js new file mode 100644 index 0000000000..b587bd0f29 --- /dev/null +++ b/projects/moraswap/index.js @@ -0,0 +1,24 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +const ethers = require("ethers") +const { config } = require('@defillama/sdk/build/api'); +config.setProvider("neon_evm", new ethers.providers.StaticJsonRpcProvider( + "https://neon-proxy-mainnet.solana.p2p.org", + { + name: "neon_evm", + chainId: 245022934, + } + )) + + +const dexTVL_neon = getUniTVL({ factory: '0xd43F135f6667174f695ecB7DD2B5f953d161e4d1', useDefaultCoreAssets: true }) + + +module.exports = { + misrepresentedTokens: true, + neon_evm: { + tvl: dexTVL_neon, + } +}; + + From 291a39b12904b03432944918b16fa6d42d54368d Mon Sep 17 00:00:00 2001 From: camolezi Date: Mon, 17 Jul 2023 17:20:32 -0300 Subject: [PATCH 1178/1354] feat: add gauge staked lp token for crv pools (#6824) --- projects/good-ghosting/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/good-ghosting/index.js b/projects/good-ghosting/index.js index af6ef60cf2..dddce3197a 100644 --- a/projects/good-ghosting/index.js +++ b/projects/good-ghosting/index.js @@ -33,7 +33,7 @@ async function tvl(_, _b, _cb, { api, }) { Object.values(gameData) .filter((game) => game.networkId == chainIdMap[api.chain]) .map((game) => { - const tokens = [game.depositTokenAddress, game.liquidityTokenAddress].filter(i => i) + const tokens = [game.depositTokenAddress, game.liquidityTokenAddress, game.gaugeLiquidityTokenAddress].filter(i => i) ownerTokens.push([tokens, game.id]) if (isV2Game(game.contractVersion)) From 5bb3acabd916f3cf52dcb07607deab991361eeeb Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 17 Jul 2023 23:43:39 +0100 Subject: [PATCH 1179/1354] add polygon --- projects/kromatika/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/kromatika/index.js b/projects/kromatika/index.js index dce4f8b3c9..e7d6fbb0d6 100644 --- a/projects/kromatika/index.js +++ b/projects/kromatika/index.js @@ -15,10 +15,10 @@ const contracts = { KROM: "0x55ff62567f09906a85183b866df84bf599a4bf70", position: "0x02c282f60fb2f3299458c2b85eb7e303b25fc6f0", }, - // polygon: { - // KROM: "0x14Af1F2f02DCcB1e43402339099A05a5E363b83c", - // position: "0xD1fDF0144be118C30a53E1d08Cc1E61d600E508e", - // }, + polygon: { + KROM: "0x14Af1F2f02DCcB1e43402339099A05a5E363b83c", + position: "0x03F490aE5b59E428E6692059d0Dca1B87ED42aE1", + }, }; async function opTvl(api, position) { From 7b8167dca2a0e75df9779b1fac9a44ee9a7bd491 Mon Sep 17 00:00:00 2001 From: ngfam Date: Tue, 18 Jul 2023 09:03:19 +0700 Subject: [PATCH 1180/1354] Fix Pendle v2 TVL (Accounting for interest bearing token exchangeRate) --- projects/pendle/v2.js | 96 ++++++++++++++++++++++++++++--------------- 1 file changed, 64 insertions(+), 32 deletions(-) diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index 20d807ab5b..73ff88c91c 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -1,46 +1,75 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const contracts = require("./contracts"); -const { staking } = require('../helper/staking') -const { getLogs } = require('../helper/cache/getLogs') +const { staking } = require("../helper/staking"); +const { getLogs } = require("../helper/cache/getLogs"); const steth = ADDRESSES.ethereum.STETH; const config = { - ethereum: { factory: '0x27b1dacd74688af24a64bd3c9c1b143118740784', fromBlock: 16032059 }, - arbitrum: { factory: '0xf5a7de2d276dbda3eef1b62a9e718eff4d29ddc8', fromBlock: 62979673 }, - bsc: { factory: '0x2bEa6BfD8fbFF45aA2a893EB3B6d85D10EFcC70E', fromBlock: 29484286 }, -} + ethereum: { + factory: "0x27b1dacd74688af24a64bd3c9c1b143118740784", + fromBlock: 16032059, + }, + arbitrum: { + factory: "0xf5a7de2d276dbda3eef1b62a9e718eff4d29ddc8", + fromBlock: 62979673, + }, + bsc: { + factory: "0x2bEa6BfD8fbFF45aA2a893EB3B6d85D10EFcC70E", + fromBlock: 29484286, + }, +}; -module.exports = {} +module.exports = {}; -Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] +Object.keys(config).forEach((chain) => { + const { factory, fromBlock } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (_, _b, _cb, { api }) => { const logs = await getLogs({ api, target: factory, - topics: ['0x166ae5f55615b65bbd9a2496e98d4e4d78ca15bd6127c0fe2dc27b76f6c03143'], - eventAbi: 'event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor)', + topics: [ + "0x166ae5f55615b65bbd9a2496e98d4e4d78ca15bd6127c0fe2dc27b76f6c03143", + ], + eventAbi: + "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor)", onlyArgs: true, fromBlock, - }) - const pt = logs.map(i => i.PT) - const sy = [ + }); + const pt = logs.map((i) => i.PT); + let sy = [ ...new Set( - (await api.multiCall({ - abi: "address:SY", - calls: pt, - })).map(s => s.toLowerCase()), + ( + await api.multiCall({ + abi: "address:SY", + calls: pt, + }) + ).map((s) => s.toLowerCase()) ), - ] + ]; + const [data, supply, decimals] = await Promise.all([ - api.multiCall({ abi: 'function assetInfo() view returns (uint8 assetType , address uAsset , uint8 decimals )', calls: sy }), - api.multiCall({ abi: 'erc20:totalSupply', calls: sy }), - api.multiCall({ abi: 'erc20:decimals', calls: sy }), - ]) + api.multiCall({ + abi: "function assetInfo() view returns (uint8 assetType , address uAsset , uint8 decimals )", + calls: sy, + }), + api.multiCall({ abi: "erc20:totalSupply", calls: sy }), + api.multiCall({ abi: "erc20:decimals", calls: sy }), + ]); + + const tokenAssetTypeSy = sy.filter((_, i) => data[i].assetType === "0"); + const exchangeRates = await api.multiCall({ + abi: "function exchangeRate() view returns (uint256 res)", + calls: tokenAssetTypeSy, + }); + data.forEach((v, i) => { - let value = supply[i] * (10 ** (v.decimals - decimals[i])) - api.add(v.uAsset.toLowerCase(), value) - }) + let value = supply[i] * 10 ** (v.decimals - decimals[i]); + let index = tokenAssetTypeSy.indexOf(sy[i]); + if (index !== -1) { + value = (value * exchangeRates[index]) / 10 ** 18; + } + api.add(v.uAsset.toLowerCase(), value); + }); let balances = api.getBalances(); const bridged = `arbitrum:${steth}`; if (bridged in balances) { @@ -48,8 +77,11 @@ Object.keys(config).forEach(chain => { delete balances[bridged]; } return balances; - } - } -}) + }, + }; +}); -module.exports.ethereum.staking = staking(contracts.v2.vePENDLE, contracts.v2.PENDLE) \ No newline at end of file +module.exports.ethereum.staking = staking( + contracts.v2.vePENDLE, + contracts.v2.PENDLE +); From f15465ab27f3cd73e1242e9f9dc32fcfa62a17e2 Mon Sep 17 00:00:00 2001 From: DCota <32775237+DaigaroCota@users.noreply.github.com> Date: Mon, 17 Jul 2023 21:46:16 -0700 Subject: [PATCH 1181/1354] Fujidaov2/refactor/add multiple factories per chain (#6813) * feat(fujidaov2): add newly deployed factories public launch * refactor(fujidaov2): tvl and borrow logic to consider array of factories * feat(fujidaov2): add ethereum factories but commented * fix(fujidao-v2): uncomment ethereum factories * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fujidao-v2/index.js | 78 +++++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 24 deletions(-) diff --git a/projects/fujidao-v2/index.js b/projects/fujidao-v2/index.js index bd6070edc0..b91df7b921 100644 --- a/projects/fujidao-v2/index.js +++ b/projects/fujidao-v2/index.js @@ -1,10 +1,25 @@ const { getLogs } = require('../helper/cache/getLogs') const config = { - xdai: { borrowFactory: '0xBeaa4b2cE11cc2F8a059341DaD422814B66d1aD0', borrowStartBlock: 28448319, }, - arbitrum: { borrowFactory: '0x2855666fbc5f526269b1f5dc73dfc8e11acb67f1', borrowStartBlock: 101069692, }, - optimism: { borrowFactory: '0xC377e6e13426739f14E411dD88Af8056e2DcabA4', borrowStartBlock: 105577184, }, - polygon: { borrowFactory: '0x157A03942e4F88c0357e4Afc1da46E9Cc12DB1D5', borrowStartBlock: 43896122, }, + ethereum: [ + { borrowFactory: '0x24E72207a078558BF9018dcF97D7f580E79B9221', borrowStartBlock: 17690796 }, + ], + xdai: [ + { borrowFactory: '0xBeaa4b2cE11cc2F8a059341DaD422814B66d1aD0', borrowStartBlock: 28448319 }, + { borrowFactory: '0xeAcb50131a46a7b8C750c03ba336f2632fDb0344', borrowStartBlock: 28911067 }, + ], + arbitrum: [ + { borrowFactory: '0x2855666fbc5f526269b1f5dc73dfc8e11acb67f1', borrowStartBlock: 101069692 }, + { borrowFactory: '0x2bb069a248Ba1c62062143462AE7bDB5C4360E3d', borrowStartBlock: 110400709 }, + ], + optimism: [ + { borrowFactory: '0xC377e6e13426739f14E411dD88Af8056e2DcabA4', borrowStartBlock: 105577184 }, + { borrowFactory: '0x1cbf7f06c04226488B4D5b2d5EA5C8B965130500', borrowStartBlock: 106780843 }, + ], + polygon: [ + { borrowFactory: '0x157A03942e4F88c0357e4Afc1da46E9Cc12DB1D5', borrowStartBlock: 43896122 }, + { borrowFactory: '0x6Ed2428624da78cfE2daeC70BE171D1752cDEfF8', borrowStartBlock: 44986739 }, + ], } module.exports = { @@ -12,18 +27,25 @@ module.exports = { }; Object.keys(config).forEach(chain => { - const { borrowFactory, borrowStartBlock } = config[chain] + const factories = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - const logs = await getLogs({ - api, - target: borrowFactory, - topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], - eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', - onlyArgs: true, - fromBlock: borrowStartBlock, - extraKey: 'borrow-vault' - }) + let logs = []; + for (let i = 0; i < factories.length; i++) { + const { borrowFactory, borrowStartBlock } = factories[i]; + const interlogs = await getLogs({ + api, + target: borrowFactory, + topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], + eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', + onlyArgs: true, + fromBlock: borrowStartBlock, + extraKey: 'borrow-vault' + }) + interlogs.forEach(log => { + logs.push(log); + }) + } const vaults = logs.map(log => log.vault) const assets = logs.map(log => log.asset) const debtAssets = logs.map(log => log.debtAsset) @@ -37,19 +59,26 @@ Object.keys(config).forEach(chain => { api.add(assets[i], bal) api.add(debtAssets[i], debtBals[i] * -1) }) + return api.getBalances() }, borrowed: async (_, _b, _cb, { api, }) => { - const logs = await getLogs({ - api, - target: borrowFactory, - topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], - eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', - onlyArgs: true, - fromBlock: borrowStartBlock, - extraKey: 'borrow-vault' - }) + let logs = []; + for (let i = 0; i < factories.length; i++) { + const { borrowFactory, borrowStartBlock } = factories[i]; + const interlogs = await getLogs({ + api, + target: borrowFactory, + topics: ['0x89d38637357ca536d5c3f7cfcf4738f465b8b6bf51af92d02cb9fa8eb093f368'], + eventAbi: 'event DeployBorrowingVault (address indexed vault, address indexed asset, address indexed debtAsset, string name, string symbol, bytes32 salt)', + onlyArgs: true, + fromBlock: borrowStartBlock, + extraKey: 'borrow-vault' + }) + interlogs.forEach(log => { + logs.push(log); + }) + } const vaults = logs.map(log => log.vault) - const assets = logs.map(log => log.asset) const debtAssets = logs.map(log => log.debtAsset) const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults }) const debtBals = (await api.multiCall({ abi: 'uint256:totalDebt', calls: vaults, permitFailure: true, })) @@ -60,6 +89,7 @@ Object.keys(config).forEach(chain => { } api.add(debtAssets[i], debtBals[i]) }) + return api.getBalances() } } }) \ No newline at end of file From 06ee19e104db7bc0d56ccf387fb9e7a6eb633423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B4=94=E6=A3=89=E5=A4=A7=E5=B8=88?= <1046166@qq.com> Date: Tue, 18 Jul 2023 12:48:27 +0800 Subject: [PATCH 1182/1354] add Meter Liquid Staking (#6826) * create stMTRG * rename --- projects/meter-Liquid-Staking/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/meter-Liquid-Staking/index.js diff --git a/projects/meter-Liquid-Staking/index.js b/projects/meter-Liquid-Staking/index.js new file mode 100644 index 0000000000..390a59cb03 --- /dev/null +++ b/projects/meter-Liquid-Staking/index.js @@ -0,0 +1,21 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const sdk = require("@defillama/sdk"); +const { BigNumber,utils } = require('ethers'); + +const stMTRG = '0x215d603293357ca222bE92A1bf75eEc38DeF0aad'; +async function tvl(timestamp, _, { meter: block }) { + const stMTRGStaking = await sdk.api.abi.call({ + target: stMTRG, + abi: 'erc20:totalSupply', + chain: "meter", block, + }); + return { + meter: stMTRGStaking.output / 1e18 + }; +} + +module.exports = { + meter: { + tvl, + } +} \ No newline at end of file From 81fd9586f62a340fb7a06c2a83430883e9f51c1c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 07:58:00 +0200 Subject: [PATCH 1183/1354] fix tron issue by rate limiting queries --- projects/helper/unwrapLPs.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 6f1a101181..e16d54476b 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -12,6 +12,7 @@ const { isLP, log, } = require('./utils') const { sumArtBlocks, whitelistedNFTs, } = require('./nft') const wildCreditABI = require('../wildcredit/abi.json'); const { covalentGetTokens, get } = require("./http"); +const { sliceIntoChunks } = require('@defillama/sdk/build/util'); const lpReservesAbi = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' const lpSuppliesAbi = "uint256:totalSupply" @@ -720,7 +721,14 @@ async function sumTokens2({ tokensAndOwners = getUniqueToA(tokensAndOwners) log(chain, 'summing tokens', tokensAndOwners.length) - await sumTokens(balances, tokensAndOwners, block, chain, transformAddress, { resolveLP, unwrapAll, blacklistedLPs, skipFixBalances: true, abis, permitFailure, }) + if (chain === 'tron') { + const tokensAndOwnersChunks = sliceIntoChunks(tokensAndOwners, 3) + for (const toa of tokensAndOwnersChunks) { + await sumTokens(balances, toa, block, chain, transformAddress, { resolveLP, unwrapAll, blacklistedLPs, skipFixBalances: true, abis, permitFailure, }) + } + } else { + await sumTokens(balances, tokensAndOwners, block, chain, transformAddress, { resolveLP, unwrapAll, blacklistedLPs, skipFixBalances: true, abis, permitFailure, }) + } if (!skipFixBalances) { const fixBalances = await getFixBalances(chain) From c349c5d5202554b6ccce9b9d37761323c4fd496e Mon Sep 17 00:00:00 2001 From: Philipp Date: Tue, 18 Jul 2023 08:22:59 +0200 Subject: [PATCH 1184/1354] Eris: Add Neutron TVL (#6831) * add osmosis, injective to eris * add neutron --- projects/eris-protocol/index.js | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/projects/eris-protocol/index.js b/projects/eris-protocol/index.js index ed1c3eec28..c4e1cf057e 100644 --- a/projects/eris-protocol/index.js +++ b/projects/eris-protocol/index.js @@ -85,9 +85,31 @@ const config = { ampToken: "factory/inj1cdwt8g7nxgtg2k4fn8sj363mh9ahkw2qt0vrnc/ampINJ", decimals: 18, }, + neutron: { + farms: [ + "neutron1h4ehzx3j92jv4tkgjy3k2qphh5863l68cyep7vaf83fj6k89l4lqjfyh77", + "neutron1sfmpf84xacu2la88zzsgende2jjlczswdmhzn7jh6tuhn43jl86q6d0vhj", + "neutron1smam4j5cypw2vp7un3q8w68sg97zq9s2c95ukwsmpsl2jh4xwzdskxm6az", + "neutron188xz8cg4uqk4ssg9tcf3q2764ar8ev0jr8qpx2qspchul98ykzuqx58r50", + ], + coinGeckoMap: { + "ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349": + "usd-coin", + "ibc/57503D7852EF4E1899FE6D71C5E81D7C839F76580F86F21E39348FC2BC9D7CE2": + "tether", + "ibc/5751B8BCDA688FD0A8EC0B292EEF1CDEAB4B766B63EC632778B196D317C40C3A": + "astroport-fi", + untrn: "neutron-3", + "ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9": + "cosmos", + }, + }, }; async function getState(chain, contract) { + if (!contract) { + return {}; + } return queryContractCosmos({ contract, chain, @@ -170,9 +192,9 @@ async function tvlAmpGovernance(chain, state) { } } -async function farm2Tvl(farm) { +async function farm2Tvl(chain, farm) { const res = await queryContractCosmos({ - chain: "terra2", + chain: chain, contract: farm, data: { state: {} }, }); @@ -191,8 +213,8 @@ async function farm2Tvl(farm) { amount: +res.locked_assets[1].amount, }; - token1.coinGeckoId = getCoinGeckoId("terra2", token1.denom); - token2.coinGeckoId = getCoinGeckoId("terra2", token2.denom); + token1.coinGeckoId = getCoinGeckoId(chain, token1.denom); + token2.coinGeckoId = getCoinGeckoId(chain, token2.denom); let results = []; if (token1.coinGeckoId) { @@ -244,7 +266,7 @@ async function productsTvl(chain) { tvlHub(chain, state), tvlAmpGovernance(chain, state), tvlArbVault(chain).catch((a) => ({})), - ...(chainConfig.farms ?? []).map(farm2Tvl), + ...(chainConfig.farms ?? []).map((farm) => farm2Tvl(chain, farm)), ]); } catch (error) { let url = error?.response?.config?.url; @@ -266,4 +288,5 @@ module.exports = { migaloo: { tvl: () => productsTvl("migaloo") }, injective: { tvl: () => productsTvl("injective") }, osmosis: { tvl: () => productsTvl("osmosis") }, + neutron: { tvl: () => productsTvl("neutron") }, }; From 793e792837f6424bf8ae446ae60cd4bc523643f9 Mon Sep 17 00:00:00 2001 From: ZeroLend <139714235+zerolend@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:54:40 +0530 Subject: [PATCH 1185/1354] Added zerolend into defilamma (#6830) Co-authored-by: ZeroLend --- projects/zerolend/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/zerolend/index.js diff --git a/projects/zerolend/index.js b/projects/zerolend/index.js new file mode 100644 index 0000000000..76516fa347 --- /dev/null +++ b/projects/zerolend/index.js @@ -0,0 +1,7 @@ +const { aaveExports } = require("../helper/aave"); + +module.exports = { + era: aaveExports("era", undefined, undefined, [ + "0xB73550bC1393207960A385fC8b34790e5133175E", + ]), +}; From e96e04e3544c1558a424023465f89aa5e335d00a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:48:15 +0200 Subject: [PATCH 1186/1354] fix elrond --- projects/helper/chain/elrond.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index f31dc0772f..bafae36870 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -52,7 +52,7 @@ async function getTokens({ address, balances = {}, tokens = [], blacklistedToken if (prices[token]) return sdk.util.sumSingleBalance(balances, nullAddress, (prices[token] * i.balance).toFixed(0), chain) } - return sdk.util.sumSingleBalance(balances, token, i.balance / (10 ** i.decimals), chain) + return sdk.util.sumSingleBalance(balances, token, i.balance, chain) }) return balances } From e0e683cfac791424a8c9da53628132e471b4065e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 13:29:28 +0200 Subject: [PATCH 1187/1354] track onedex --- projects/coindrip/index.js | 4 ++- projects/helper/chain/elrond.js | 43 +++++---------------------------- projects/helper/coreAssets.json | 23 +----------------- projects/onedex/index.js | 8 ++++++ projects/proteo-farms/index.js | 43 ++------------------------------- 5 files changed, 20 insertions(+), 101 deletions(-) create mode 100644 projects/onedex/index.js diff --git a/projects/coindrip/index.js b/projects/coindrip/index.js index dd48f8021c..1d717f2d35 100644 --- a/projects/coindrip/index.js +++ b/projects/coindrip/index.js @@ -1,6 +1,7 @@ const { toUSDTBalances } = require("../helper/balances"); const { get } = require("../helper/http"); const { sumTokensExport } = require('../helper/sumTokens') +const { getCoreAssets } = require('../helper/tokenMapping') const API_URL = "https://app.coindrip.finance/api/tvl"; @@ -12,6 +13,7 @@ async function tvl() { module.exports = { timetravel: false, elrond: { - tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqnm3x37972323nuv3l3kywev0n8q5n6gyc8qwljqz9', }) + tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqnm3x37972323nuv3l3kywev0n8q5n6gyc8qwljqz9', whitelistedTokens: getCoreAssets('elrond')}), + vesting: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqnm3x37972323nuv3l3kywev0n8q5n6gyc8qwljqz9', blacklistedTokens: getCoreAssets('elrond')}), }, }; \ No newline at end of file diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index bafae36870..20f63d880a 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -1,34 +1,11 @@ const ADDRESSES = require('../coreAssets.json') -const { get, graphQuery } = require('../http') +const { get } = require('../http') const { getCoreAssets, } = require('../tokenMapping') const { transformBalances } = require('../portedTokens') const sdk = require('@defillama/sdk') const chain = 'elrond' const API_HOST = 'https://api.multiversx.com' -const MAIAR_GRAPH = 'http://graph.xexchange.com/graphql' -const unknownTokenList = ["CYBER-489c1c", "CPA-97530a"] -let prices - -async function getTokenPrices() { - if (!prices) prices = _getPrices() - return prices - - async function _getPrices() { - const query = `{ - tokens (identifiers: ${JSON.stringify(unknownTokenList)}){ - price - decimals - derivedEGLD - identifier - } - }` - const { tokens } = await graphQuery(MAIAR_GRAPH, query) - const res = {} - tokens.forEach(i => res[i.identifier] = i.derivedEGLD * 1e18/(10 ** i.decimals)) - return res - } -} async function getElrondBalance(address) { const { data: { account: { balance } } } = await get(`${API_HOST}/address/${address}`) @@ -36,34 +13,26 @@ async function getElrondBalance(address) { } const nullAddress = ADDRESSES.null -async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [] }) { - const prices = await getTokenPrices() - const coreAssets = new Set(getCoreAssets('elrond')) +async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [], whitelistedTokens = [], }) { const res = await get(`${API_HOST}/accounts/${address}/tokens?size=1000`) res.filter(i => i.type === 'FungibleESDT') .forEach(i => { const token = i.identifier if (tokens.length && !tokens.includes(token)) return; // sum only whitelistedTokens + if (whitelistedTokens.length && !whitelistedTokens.includes(token)) return; // sum only whitelistedTokens if (blacklistedTokens.includes(token)) return; // skip blacklisted tokens - if (!coreAssets.has(token)) { - if (i.valueUsd) - return sdk.util.sumSingleBalance(balances, 'ethereum:' + ADDRESSES.ethereum.USDT, i.valueUsd * 1e6) - - if (prices[token]) - return sdk.util.sumSingleBalance(balances, nullAddress, (prices[token] * i.balance).toFixed(0), chain) - } return sdk.util.sumSingleBalance(balances, token, i.balance, chain) }) return balances } -async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = []}) { +async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = [], whitelistedTokens = []}) { if (tokensAndOwners.length) { - await Promise.all(tokensAndOwners.map(([token, owner]) => sumTokens({ owners: [owner], tokens: [token], balances, blacklistedTokens, }))) + await Promise.all(tokensAndOwners.map(([token, owner]) => sumTokens({ owners: [owner], tokens: [token], balances, blacklistedTokens, whitelistedTokens, }))) return balances } - await Promise.all(owners.map(i => getTokens({ address: i, balances, tokens, blacklistedTokens, }))) + await Promise.all(owners.map(i => getTokens({ address: i, balances, tokens, blacklistedTokens, whitelistedTokens, }))) if (!tokens.length || tokens.includes(nullAddress)) await Promise.all(owners.map(async i => { const bal = await getElrondBalance(i) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 07e338b099..4becd95c5e 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1215,28 +1215,7 @@ "USDT": "USDT" }, "elrond": { - "SUPER": "SUPER-507aa6", - "WEGLD": "WEGLD-bd4d79", - "LAND": "LAND-40f26f", - "CHECKR": "CHECKR-60108b", - "ITHEUM": "ITHEUM-df6f26", - "ISET": "ISET-84e55e", - "MEX": "MEX-455c57", - "ASH": "ASH-a642d1", - "RIDE": "RIDE-7d18e9", - "QWT": "QWT-46ac01", - "AERO": "AERO-458bbf", - "VITAL": "erd1qqqqqqqqqqqqqpgq3ahw8fctzfnwgvq2g4hjsqzkkvgl9ksr2jps646dnj", - "TLC": "TLC-1a2357", - "BHAT": "BHAT-c1fde3", - "CRT": "CRT-52decf", - "BSK": "BSK-baa025", - "UTK": "UTK-2f80e9", - "ZPAY": "ZPAY-247875", - "KRO": "KRO-df97ec", - "EGLD": "0x0000000000000000000000000000000000000000", - "KOSON": "KOSON-5dd4fa", - "CTP": "CTP-298075" + "WEGLD": "WEGLD-bd4d79" }, "bitindi": { "WBNI": "0x15E162205421dc3A47b15A1A740FbF5EAbB77921" diff --git a/projects/onedex/index.js b/projects/onedex/index.js new file mode 100644 index 0000000000..73fd88f9b6 --- /dev/null +++ b/projects/onedex/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/sumTokens') + +module.exports = { + timetravel: false, + elrond: { + tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqqz6vp9y50ep867vnr296mqf3dduh6guvmvlsu3sujc', }), + }, +}; \ No newline at end of file diff --git a/projects/proteo-farms/index.js b/projects/proteo-farms/index.js index 76cc93009b..b1d0f25828 100644 --- a/projects/proteo-farms/index.js +++ b/projects/proteo-farms/index.js @@ -1,32 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens } = require('../helper/chain/elrond') -const { get } = require('../helper/http') -const sdk = require('@defillama/sdk') - -let prices - -async function getPrices() { - if (!prices) prices = _getPrices() - return prices - - async function _getPrices() { - const getApi = ({ token1, token2 }) => `https://api.multiversx.com/mex/pairs/${token1}/${token2}?fields=price` - const lps = [ - // { lp: 'PROTEOEGLD-baf054', token1: 'PROTEO-0c7311', token2: ADDRESSES.elrond.WEGLD, }, - { lp: 'ZPAYWEGLD-34e5c1', token1: ADDRESSES.elrond.ZPAY, token2: ADDRESSES.elrond.WEGLD, }, - { lp: 'AEROWEGLD-81cc37', token1: ADDRESSES.elrond.AERO, token2: ADDRESSES.elrond.WEGLD, }, - { lp: 'KROUSDC-7787ab', token1: 'USDC-c76f1f', token2: ADDRESSES.elrond.KRO, }, - ] - - const prices = {} - await Promise.all(lps.map(async i => { - const { price } = await get(getApi(i)) - prices['elrond:' + i.lp] = i.token1.startsWith('USDC') ? 1 / price : price - })) - - return prices - } -} async function tvl() { const tokensAndOwners = [ @@ -41,18 +14,7 @@ async function tvl() { ['AEROWEGLD-81cc37', 'erd1qqqqqqqqqqqqqpgqapmdgehzl22pu6m5pkvy2fhzm49uxkxhznyqhwhcx5'], ['AEROWEGLD-81cc37', 'erd1qqqqqqqqqqqqqpgqnedra5da464rkcektgzyv0qxcgqgyh26znyq8q4phx'], ] - return computeTvl(tokensAndOwners) -} - -async function computeTvl(tokensAndOwners) { - const balances = await sumTokens({ chain: 'elrond', tokensAndOwners, }) - const prices = await getPrices() - Object.entries(prices).forEach(([token, price]) => { - if (!balances[token]) return; - sdk.util.sumSingleBalance(balances, 'tether', balances[token] * price) - delete balances[token] - }) - return balances + return sumTokens({tokensAndOwners}) } async function pool2() { @@ -61,11 +23,10 @@ async function pool2() { ['PROTEOEGLD-baf054', 'erd1qqqqqqqqqqqqqpgq6hzck3wac3ljmth7dkzk2wcw3c9lvcauznyq268sn6'], ] - return computeTvl(tokensAndOwners) + return sumTokens({tokensAndOwners}) } module.exports = { - misrepresentedTokens: true, timetravel: false, elrond: { tvl, From fa2eb3c0f1d3145d2dc08cf69af6c4c32558ff57 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:01:07 +0200 Subject: [PATCH 1188/1354] refactor quantumx --- projects/quantumx-network/api.js | 9 +- projects/quantumx-network/index.js | 262 +---------------------------- 2 files changed, 6 insertions(+), 265 deletions(-) diff --git a/projects/quantumx-network/api.js b/projects/quantumx-network/api.js index 6473250325..95326af529 100644 --- a/projects/quantumx-network/api.js +++ b/projects/quantumx-network/api.js @@ -1,8 +1 @@ -const { getExports } = require('../helper/heroku-api') - -module.exports = { - methodology: "It counts the TVL from the Staking Farms/Pools of QuantumX.", - timetravel: false, - misrepresentedTokens: true, - ...getExports("quantumx-network", ['elrond']), -} +module.exports = require('./index') \ No newline at end of file diff --git a/projects/quantumx-network/index.js b/projects/quantumx-network/index.js index 38b4a8698a..5a7ca2265d 100644 --- a/projects/quantumx-network/index.js +++ b/projects/quantumx-network/index.js @@ -1,260 +1,8 @@ -const { toUSDTBalances } = require("../helper/balances"); -var abiFile = require("./farms.abi.json"); -var { - AbiRegistry, - ContractFunction, - ResultsParser, - SmartContract, - // SmartContractAbi, - Address, -} = require("@multiversx/sdk-core/out"); -var { - ProxyNetworkProvider, -} = require("@multiversx/sdk-network-providers"); -var axios = require("axios"); -var BigNumber = require("bignumber.js"); -const sdk = require('@defillama/sdk') - -//provider -const provider = new ProxyNetworkProvider("https://api.multiversx.com", { - timeout: 30000, -}); - -// api -const BASE_URL = "https://api.multiversx.com"; -const api = axios.create({ - baseURL: BASE_URL, -}); - -// fetch multiversx economics for egld info -const getEconomics = async () => { - return await api.get("/economics"); -}; -// fetch tokens info -const getFromAllTokens = async ({ - size = 10000, - name = undefined, - identifier = undefined, - identifiers = undefined, - search = undefined, -}) => { - return await api.get("/tokens", { - params: { - identifier, - identifiers, - name, - size, - search, - }, - }); -}; -// api to fetch lp prices -const fetchLpPrices = async () => { - const { data } = await axios.get("https://eldar.solutions/api/lpapi.php"); - return data; -}; -const getMexPairs = async () => { - return await api.get("/mex/pairs?size=150"); -}; - -/* ---------------- UTILS ------------------------ */ -const getRealBalance = (balance1, decimal) => { - const divider = Math.pow(10, decimal ?? 18); - const balance = new BigNumber(balance1); - const real = balance.dividedBy(divider, 10); - return real.toNumber(); -}; -const formatBalanceDolar = (token, price = 0) => { - if (token && token.balance) { - const strBalance = token.balance; - - const intBalance = Number(strBalance); - const intBalanceDolar = intBalance * Number(price); - const realDollarAmount = getRealBalance(intBalanceDolar, token.decimals); - return realDollarAmount; - } - return 0; -}; - -// fetch info from sc -const scQuery = async (funcName, args) => { - try { - const abiRegistry = await AbiRegistry.create(abiFile); - // const abi = new SmartContractAbi(abiRegistry, ["Farms"]); - const contract = new SmartContract({ - address: new Address( - "erd1qqqqqqqqqqqqqpgql6dxenaameqn2uyyru3nmmpf7e95zmlxu7zskzpdcw" - ), - abi: abiRegistry, - }); - - const query = contract.createQuery({ - func: new ContractFunction(funcName), - args: args, - }); - const queryResponse = await provider.queryContract(query); - const endpointDefinition = contract.getEndpoint(funcName); - const parser = new ResultsParser(); - const data = parser.parseQueryResponse(queryResponse, endpointDefinition); - - return data; - } catch (error) { - console.log(`query error for ${funcName} : `, error); - } -}; - -// get Tvl -const tvl = async () => { - // tvl - let tvlDollar = 0; - - try { - sdk.log("getting all farms"); - const scFarmsRes = await scQuery("getAllFarms", []); - const allFarmsFirstValue = scFarmsRes?.firstValue?.valueOf(); - if (allFarmsFirstValue) { - // get all farms from sc - const allFarms = allFarmsFirstValue.map((farm) => { - // sdk.log(farm); - return { - farm: { - farmId: farm.field0.id.toNumber(), - creationEpoch: farm.field0.creation_epoch.toNumber(), - stakingToken: farm.field0.staked_token, - rewardToken: farm.field0.reward_token, - creator: farm.field0.creator.bech32(), - }, - stakedBalance: farm.field2.toNumber(), - totalRewardsLeft: farm.field3.toNumber(), - }; - }); - - // array of tokens identifiers - const tokensIdentifiers = allFarms.map((f) => f.farm.stakingToken); - // all tokens info - let tokensInfo = []; - - // get the info of tokens in array from multiversx api - sdk.log("\n\ngetting all tokens info"); - const { data: tokensData } = await getFromAllTokens({ - identifiers: tokensIdentifiers.join(","), - }); - // add info of the returned tokens to the array of info - tokensInfo = [...tokensData]; - // sdk.log(tokensInfo); - - // if egld is include in tokens indentifeirs, we need to get the data of egld for price - const isEgldonTokens = tokensIdentifiers.includes("EGLD"); - if (isEgldonTokens) { - // fetch egld data - sdk.log("getting egld data"); - - const { data: egldData } = await getEconomics(); - sdk.log("egldData", egldData); - - tokensInfo.unshift({ - type: "FungibleESDT", - identifier: "EGLD", - name: "EGLD", - ticker: "EGLD", - decimals: 18, - price: egldData.data.price, - marketCap: egldData.data.marketCap, - supply: egldData.data.totalSupply, - circulatingSupply: egldData.data.circulatingSupply, - }); - } - - sdk.log("\n\ngetting lp prices"); - const lptokensInfo = await fetchLpPrices(); - // sdk.log(lptokensInfo); - - sdk.log("\n\ngetting mex pairs"); - const { data: mexPairs } = await getMexPairs(); - - const pools = mexPairs - ? allFarms.filter( - (farm) => - mexPairs.findIndex( - (mexPair) => mexPair.id === farm.farm.stakingToken - ) === -1 - ) - : []; - const farms = mexPairs - ? allFarms.filter( - (farm) => - mexPairs.findIndex( - (mexPair) => mexPair.id === farm.farm.stakingToken - ) !== -1 || farm.farm.stakingToken == "RAREWEGLD-b29251" || farm.farm.stakingToken == "HYPELEGLD-d65493" - ) - : []; - - // sdk.log(pools); - // sdk.log(farms.length); - - // get tvl in dollar for farms - for (let i = 0; i < farms.length; i++) { - // info from sc about the farm - const farm = farms[i]; - - const stakingToken = tokensInfo.find( - (token) => token.identifier === farm.farm.stakingToken - ); - const lpPrice = - lptokensInfo.find( - (lpToken) => lpToken.token === farm.farm.stakingToken - )?.tokenvalue || 0; - - tvlDollar += formatBalanceDolar( - { - balance: farm.stakedBalance, - decimals: stakingToken.decimals, - }, - Number(lpPrice) - ); - // sdk.log(stakingToken?.identifier); - // sdk.log(farm.stakedBalance); - // sdk.log(tvlDollar); - } - - // // get tvl in dollar for pools - for (let i = 0; i < pools.length; i++) { - const farm = pools[i]; - - const stakingToken = tokensInfo.find( - (token) => token.identifier === farm.farm.stakingToken - ); - - if (stakingToken?.identifier != "BONEZ-ff9a73" - && stakingToken?.identifier != "RAREWEGLD-b29251" - && stakingToken?.identifier != "HYPELEGLD-d65493" - && farm.farm.farmId != 36 - && farm.farm.farmId != 41) { - tvlDollar += formatBalanceDolar( - { - balance: farm.stakedBalance, - decimals: stakingToken.decimals, - }, - stakingToken?.price - ); - // sdk.log(stakingToken?.identifier); - // sdk.log(tvlDollar); - // sdk.log(farm); - } - } - - sdk.log("\n\nTotal calculated: ", tvlDollar); - return toUSDTBalances(tvlDollar); - } - } catch (err) { - sdk.log("Exeption error : ", err); - } - return tvlDollar; -}; +const { sumTokensExport } = require('../helper/sumTokens') module.exports = { - methodology: "It counts the TVL from the Staking Farms/Pools of QuantumX.", + timetravel: false, elrond: { - tvl, - }, -}; + tvl: sumTokensExport({ chain: 'elrond', owner: 'erd1qqqqqqqqqqqqqpgql6dxenaameqn2uyyru3nmmpf7e95zmlxu7zskzpdcw', }) + } +} \ No newline at end of file From 5b6faf7ebcb64d0454e5ebc7bf808fe9a627dc99 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:38:29 +0200 Subject: [PATCH 1189/1354] fix broken adapters --- projects/hydradex.js | 27 +++++++++++++++++++++++++++ projects/hydradex/api.js | 2 ++ projects/tegro/index.js | 3 ++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 projects/hydradex.js diff --git a/projects/hydradex.js b/projects/hydradex.js new file mode 100644 index 0000000000..4e1a289325 --- /dev/null +++ b/projects/hydradex.js @@ -0,0 +1,27 @@ +const { blockQuery } = require('./helper/http') +const { getBlock } = require('./hydradex/getHydraV3SubgraphTvl') + +async function tvl(timestamp) { + const endpoint = 'https://info.hydradex.org/graphql' + const block = await getBlock(endpoint, timestamp) + const query = `query ($block: Float!){ + hydraswapFactories (block: { number: $block }) { + totalLiquidityUSD + } + }` + const { hydraswapFactories: [{ totalLiquidityUSD }] } = await blockQuery(endpoint, query, { + api: { + getBlock: () => block, + block + } + }) + return { tether: totalLiquidityUSD } +} + +module.exports = { + misrepresentedTokens: true, + methodology: "We count liquidity on the dex, pulling data from subgraph", + hydra: { + tvl, + }, +}; \ No newline at end of file diff --git a/projects/hydradex/api.js b/projects/hydradex/api.js index 9b31da47f1..9a1b91f36f 100644 --- a/projects/hydradex/api.js +++ b/projects/hydradex/api.js @@ -1,3 +1,5 @@ + +const hydraExport = require('../hydradex.js') const { getExports } = require('../helper/heroku-api') module.exports = { diff --git a/projects/tegro/index.js b/projects/tegro/index.js index 7652b284f2..e66a25a663 100644 --- a/projects/tegro/index.js +++ b/projects/tegro/index.js @@ -1,5 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const { get } = require('../helper/http') +const { getConfig } = require('../helper/cache') const { getTonBalance } = require('../helper/chain/ton') const sdk = require('@defillama/sdk') const nullAddress = ADDRESSES.null @@ -9,7 +10,7 @@ module.exports = { timetravel: false, ton: { tvl: async (_, _1, _2, { api}) => { - const pools = await get('https://api.tegro.finance/v1/pairs') + const pools = await getConfig('tegro-fi', 'https://api.tegro.finance/v1/pairs') let tonPools = pools.filter(i => !i.base.address ).map(i => i.address) sdk.log(pools.length, tonPools.length) const tonBalances = await Promise.all(tonPools.map(getTonBalance)) From 96674180e2d63226c69880a51a182e677ecb1443 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:01:14 +0200 Subject: [PATCH 1190/1354] moraswap: code refactor --- projects/moraswap/index.js | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/projects/moraswap/index.js b/projects/moraswap/index.js index b587bd0f29..9efe0f8a00 100644 --- a/projects/moraswap/index.js +++ b/projects/moraswap/index.js @@ -1,23 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') -const ethers = require("ethers") -const { config } = require('@defillama/sdk/build/api'); -config.setProvider("neon_evm", new ethers.providers.StaticJsonRpcProvider( - "https://neon-proxy-mainnet.solana.p2p.org", - { - name: "neon_evm", - chainId: 245022934, - } - )) - - -const dexTVL_neon = getUniTVL({ factory: '0xd43F135f6667174f695ecB7DD2B5f953d161e4d1', useDefaultCoreAssets: true }) - - module.exports = { misrepresentedTokens: true, neon_evm: { - tvl: dexTVL_neon, + tvl: getUniTVL({ factory: '0xd43F135f6667174f695ecB7DD2B5f953d161e4d1', useDefaultCoreAssets: true }), } }; From aaf9de9e89545a37c3d3600fa787244fb175730f Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Tue, 18 Jul 2023 06:02:27 -0700 Subject: [PATCH 1191/1354] Update index.js (#6832) Update Fantom, Avax, Mantle, new AMMs --- projects/visor/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/projects/visor/index.js b/projects/visor/index.js index bc6d11f0e2..51197f2e0a 100644 --- a/projects/visor/index.js +++ b/projects/visor/index.js @@ -26,6 +26,7 @@ const HYPE_REGISTRY = { "0xAeC731F69Fa39aD84c7749E913e3bC227427Adfd", // Quickswap "0xcAC19d43C9558753d7535978A370055614Ce832E", // Retro "0x97686103B3E7238Ca6c2C439146B30adBd84a593", // Sushiswap + "0x7b9c2f68f16c3618bb45616fb98d83f94fd7062e", // Ascent ], polygon_zkevm: [ "0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", // Quickswap @@ -51,6 +52,15 @@ const HYPE_REGISTRY = { celo: [ "0x0F548d7AD1A0CB30D1872b8C18894484d76e1569", // Uniswap ], + avax: [ + "0x3FE6F25DA67DC6AD2a5117a691f9951eA14d6f15", // Glacier + ], + fantom: [ + "0xf874d4957861e193aec9937223062679c14f9aca", // Spiritswap + ], + mantle: [ + "0x683292172E2175bd08e3927a5e72FC301b161300", // FusionX + ], }; /* List of bad addresses added to registries that need to be excluded manually */ @@ -160,4 +170,13 @@ module.exports = { celo: { tvl: tvlWrapper, }, + avax: { + tvl: tvlWrapper, + }, + fantom: { + tvl: tvlWrapper, + }, + mantle: { + tvl: tvlWrapper, + }, }; From f91d2db9c974622a27974ef96fde2f436a8e2050 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:59:16 +0200 Subject: [PATCH 1192/1354] balancer: track base --- package-lock.json | 12 ++++++------ projects/balancer/onchain.js | 1 + projects/helper/chains.json | 1 + projects/wombat-exchange/index.js | 17 ++++------------- 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 463ef7a6ba..47af3ebb4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.35", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.35.tgz", - "integrity": "sha512-v9v8Ang7xfDOqT93uxzR6jtpICRMGS+AI6/3dbKDk/WVfT1nq9I3Hz2uXcs1q4vIwK8WSpoeT5qlRXgadyJ95g==", + "version": "4.0.38", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.38.tgz", + "integrity": "sha512-eZUQwJqR5VNR0BgSL2Z/kmjf7VBd+Ggazs5KSbfDM4xcUm3pyEHcnkia6VlSikyzMk2OsbuKIrJGX47Ys/EZkA==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.35", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.35.tgz", - "integrity": "sha512-v9v8Ang7xfDOqT93uxzR6jtpICRMGS+AI6/3dbKDk/WVfT1nq9I3Hz2uXcs1q4vIwK8WSpoeT5qlRXgadyJ95g==", + "version": "4.0.38", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.38.tgz", + "integrity": "sha512-eZUQwJqR5VNR0BgSL2Z/kmjf7VBd+Ggazs5KSbfDM4xcUm3pyEHcnkia6VlSikyzMk2OsbuKIrJGX47Ys/EZkA==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/balancer/onchain.js b/projects/balancer/onchain.js index dd04ca028d..057f1a0649 100644 --- a/projects/balancer/onchain.js +++ b/projects/balancer/onchain.js @@ -21,6 +21,7 @@ const config = { arbitrum: { fromBlock: 222832, }, xdai: { fromBlock: 24821598, }, polygon_zkevm: { fromBlock: 203079, }, + base: { fromBlock: 1196036, }, } module.exports = {}; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 2b85f5f476..dcbb5a21f9 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -7,6 +7,7 @@ "astar", "aurora", "avax", + "base", "bifrost", "binance", "bitcoin", diff --git a/projects/wombat-exchange/index.js b/projects/wombat-exchange/index.js index e959a2d88c..ab4f03a3f8 100644 --- a/projects/wombat-exchange/index.js +++ b/projects/wombat-exchange/index.js @@ -8,10 +8,7 @@ Object.keys(config).forEach((chain) => { tvl: async (_, _b, { [chain]: block }, { api }) => { const pools = Object.values(arg["pools"]); - let allUnderlying = await api.multiCall({ - abi: "address[]:getTokens", - calls: pools, - }); + let allUnderlying = await api.multiCall({ abi: "address[]:getTokens", calls: pools, }); const tokens = []; const calls = []; @@ -21,16 +18,10 @@ Object.keys(config).forEach((chain) => { calls.push({ target: v, params: t }); }); }); - const wTokens = await api.multiCall({ - abi: "function addressOfAsset(address) view returns (address)", - calls, - }); - return sumTokens2({ - api, - tokensAndOwners: tokens.map((v, i) => [v, wTokens[i]]), - }); + const wTokens = await api.multiCall({ abi: "function addressOfAsset(address) view returns (address)", calls, }); + return sumTokens2({ api, tokensAndOwners2: [tokens, wTokens], }); }, - staking: staking(arg["veWom"], arg["wom"], chain), + staking: staking(arg["veWom"], arg["wom"],), }; }); From 5a9c13b4df1da49d66e8570af06de9bea2dae44e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 17:57:54 +0200 Subject: [PATCH 1193/1354] track venus isolated pools --- projects/compound-v3/index.js | 1 - projects/helper/tokenMapping.js | 4 ++++ projects/venus-isolated-pools/index.js | 32 ++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 projects/venus-isolated-pools/index.js diff --git a/projects/compound-v3/index.js b/projects/compound-v3/index.js index 9968555102..137669d1c2 100644 --- a/projects/compound-v3/index.js +++ b/projects/compound-v3/index.js @@ -1,4 +1,3 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { compoundV3Exports } = require('../helper/compoundV3') const markets = [ "0xc3d688B66703497DAA19211EEdff47f25384cdc3", // USDC Market diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 5150ee20ac..6893140944 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -54,6 +54,10 @@ const fixBalancesTokens = { tenet: { '0xd6cb8a253e12893b0cf39ca78f7d858652cca1fe': { coingeckoId: "tenet-1b000f7b-59cb-4e06-89ce-d62b32d362b9", decimals: 18 }, }, + bsc: { + '0x352cb5e19b12fc216548a2677bd0fce83bae434b': { coingeckoId: 'bittorrent', decimals: 18, }, + '0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3': { coingeckoId: 'tron', decimals: 6, }, + }, ultron: { '0xb1183357745d3fd7d291e42a2c4b478cdb5710c6': { coingeckoId: "ultron", decimals: 18 }, }, diff --git a/projects/venus-isolated-pools/index.js b/projects/venus-isolated-pools/index.js new file mode 100644 index 0000000000..7b51fbceb9 --- /dev/null +++ b/projects/venus-isolated-pools/index.js @@ -0,0 +1,32 @@ +const { cachedGraphQuery } = require('../helper/cache') +const sdk = require('@defillama/sdk') +const { compoundExports2 } = require('../helper/compound') +const config = { + bsc: { + endpoint: 'https://api.thegraph.com/subgraphs/name/venusprotocol/venus-isolated-pools', + } +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl, borrowed, } +}) + +async function getPools(api) { + const { endpoint } = config[api.chain] + const { pools } = await cachedGraphQuery('venus-v4', endpoint, `{ pools { id }}`) + return pools.map(i => i.id) +} + +async function tvl(...args) { + const [_, _b, _cb, { api, }] = args + const pools = await getPools(api) + const tvls = pools.map(i => compoundExports2({ comptroller: i, fetchBalances: true, })) + return sdk.util.sumChainTvls(tvls.map(i => i.tvl))(...args) +} + +async function borrowed(...args) { + const [_, _b, _cb, { api, }] = args + const pools = await getPools(api) + const tvls = pools.map(i => compoundExports2({ comptroller: i, fetchBalances: true, })) + return sdk.util.sumChainTvls(tvls.map(i => i.borrowed))(...args) +} \ No newline at end of file From e094dc001169602f4d61012f5b1f5cd0bf5dc2f6 Mon Sep 17 00:00:00 2001 From: yashvik <39464729+waverune@users.noreply.github.com> Date: Tue, 18 Jul 2023 21:56:06 +0530 Subject: [PATCH 1194/1354] timeswap: adds mantle chain (#6834) --- projects/timeswap-v2/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index 82d1ff0f47..ba1328dcc7 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -78,6 +78,10 @@ const config = { newFactory: "0x406d3Dfcbe20b642c2262b29b960822975371502", fromBlock: 70785970, }, + mantle: { + factory: "0xf8F5e4B7825d484FBDFDC36fc915E79f30b02f9E", + fromBlock: 3563, + } }; module.exports = {}; From 68a085603e0805b117c6327ebb910498ea55f907 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 20:48:31 +0200 Subject: [PATCH 1195/1354] raydium: add staking --- projects/raydium.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/raydium.js b/projects/raydium.js index 3cddebde1a..972f9f94e7 100644 --- a/projects/raydium.js +++ b/projects/raydium.js @@ -1,4 +1,4 @@ -const { getConnection, sumTokens2, decodeAccount, getValidGeckoSolTokens, } = require("./helper/solana"); +const { getConnection, sumTokens2, decodeAccount, getValidGeckoSolTokens, sumTokens, } = require("./helper/solana"); const { PublicKey, } = require("@solana/web3.js"); const sdk = require('@defillama/sdk') @@ -43,12 +43,11 @@ async function ammV4Tvl() { ]}) } - - module.exports = { timetravel: false, hallmarks: [[1667865600, "FTX collapse"]], solana: { tvl: sdk.util.sumChainTvls([tvlCLMM, ammStableTvl, ammV4Tvl]), + staking: () => sumTokens2({ tokenAccounts: ['8tnpAECxAT9nHBqR1Ba494Ar5dQMPGhL31MmPJz1zZvY']}) }, }; \ No newline at end of file From 47787500acbef1033270dfbb21664591cf60f662 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 18 Jul 2023 22:17:46 +0200 Subject: [PATCH 1196/1354] ondo: track polygon --- projects/ondofinance/index.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/projects/ondofinance/index.js b/projects/ondofinance/index.js index cfaf0c09cd..8c8279512b 100644 --- a/projects/ondofinance/index.js +++ b/projects/ondofinance/index.js @@ -1,18 +1,26 @@ -const sdk = require("@defillama/sdk"); -const funds = [ - "0x1B19C19393e2d034D8Ff31ff34c81252FcBbee92", // OUSG -]; module.exports = { methodology: "Sums Ondo's fund supplies.", misrepresentedTokens: true, doublecounted: true, +}; + +const config = { ethereum: { - tvl: async (_, __, ___, { api }) => { + OUSG: '0x1B19C19393e2d034D8Ff31ff34c81252FcBbee92', + }, + polygon: { + OUSG: '0xbA11C5effA33c4D6F8f593CFA394241CfE925811', + } +} + +Object.keys(config).forEach(chain => { + let funds = config[chain] + funds = Object.values(funds) + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: funds }) - const balances = {} - supplies.forEach((v, i) => sdk.util.sumSingleBalance(balances, funds[i], v, api.chain)) - return balances + api.addTokens(funds, supplies) } - }, -}; + } +}) \ No newline at end of file From 9e4899cecfbc69b3b799bdc6d3b6e8bfcaaff673 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 18 Jul 2023 22:10:32 +0100 Subject: [PATCH 1197/1354] update gains treasury --- projects/treasury/gains.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/projects/treasury/gains.js b/projects/treasury/gains.js index 2783aaf851..c9ebbce7dd 100644 --- a/projects/treasury/gains.js +++ b/projects/treasury/gains.js @@ -1,11 +1,34 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json'); + +const GNS = "0x18c11FD286C5EC11c3b683Caa813B77f5163A122" +const multisig = "0xf8e93a7d954f7d31d5fa54bc0eb0e384412a158d" +const treasury = "0x80fd0accC8Da81b0852d2Dca17b5DDab68f22253" +const gnspolygon = "0xE5417Af564e4bFDA1c483642db72007871397896" module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDC_CIRCLE, + ADDRESSES.arbitrum.DAI, + "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", + "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" //UNI V3 + ], + owners: [multisig, treasury], + ownTokens: [GNS], + resolveUniV3: true, + }, + polygon: { + tokens: [ + nullAddress, + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDT, + "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" //UNI V3 ], - owners: ['0xf8e93a7d954f7d31d5fa54bc0eb0e384412a158d'], - ownTokens: [], + owners: [treasury], + ownTokens: [gnspolygon], + resolveUniV3: true, }, }) \ No newline at end of file From ef2cdf94d7aea33cf86a320b5ff81179634d5bd1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 05:52:33 +0200 Subject: [PATCH 1198/1354] update ondo --- projects/helper/coreAssets.json | 15 ++++++++++++++- projects/helper/tokenMapping.js | 25 ------------------------- projects/ondofinance/index.js | 7 ++++++- 3 files changed, 20 insertions(+), 27 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 4becd95c5e..a839b81b1c 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -670,6 +670,7 @@ }, "ultron": { "wULX": "0x3a4f06431457de873b588846d139ec0d86275d54", + "wULX_1": "0xb1183357745d3fd7d291e42a2c4b478cdb5710c6", "wETH": "0x2318bf5809a72aabadd15a3453a18e50bbd651cd", "wBTC": "0xd2b86a80a8f30b83843e247a50ecdc8d843d87dd", "BUSD": "0xc7cac85c1779d2b8ada94effff49a4754865e2e4", @@ -1235,7 +1236,8 @@ "WLOOP": "0x3936D20a39eD4b0d44EaBfC91757B182f14A38d5" }, "rpg": { - "WRPG": "0x71d9cfd1b7adb1e8eb4c193ce6ffbe19b4aee0db" + "WRPG": "0x71d9cfd1b7adb1e8eb4c193ce6ffbe19b4aee0db", + "USDT": "0x8e8816a1747fddc5f8b45d2e140a425d3788f659" }, "map": { "BUSD": "0x35bf4004c3fc9f509259d4942da6bae3669e1db1", @@ -1323,5 +1325,16 @@ "stacks": { "WSTX": "SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.wstx-token-v4a", "WBTC": "SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin::wrapped-bitcoin" + }, + "neon_evm": { + "WNEON": "0xb14760c064a1b9eaf9ec5a8a421971e40a51b59c" + }, + "tenet": { + "WTENET": "0xd6cb8a253e12893b0cf39ca78f7d858652cca1fe" + }, + "mantle": { + "WMNT": "0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8", + "WETH": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111", + "USDT": "0x201eba5cc46d216ce6dc03f6a759e8e766e956ae" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 6893140944..7da1b881fe 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -45,34 +45,9 @@ const ibcMappings = { const fixBalancesTokens = { // Sample Code - neon_evm: { - '0xb14760c064a1b9eaf9ec5a8a421971e40a51b59c': { coingeckoId: 'neon', decimals:18}, - }, - rpg: { - '0x8e8816a1747fddc5f8b45d2e140a425d3788f659': { coingeckoId: "tether", decimals: 18 }, - }, - tenet: { - '0xd6cb8a253e12893b0cf39ca78f7d858652cca1fe': { coingeckoId: "tenet-1b000f7b-59cb-4e06-89ce-d62b32d362b9", decimals: 18 }, - }, - bsc: { - '0x352cb5e19b12fc216548a2677bd0fce83bae434b': { coingeckoId: 'bittorrent', decimals: 18, }, - '0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3': { coingeckoId: 'tron', decimals: 6, }, - }, - ultron: { - '0xb1183357745d3fd7d291e42a2c4b478cdb5710c6': { coingeckoId: "ultron", decimals: 18 }, - }, - avax: { - '0x8fdcf51d1aaeb9f031838ebeb15884a0d5efcda3': { coingeckoId: "wrapped-bitcoin", decimals: 18 }, - '0xaa44678304cc1a848bfc31dc013afcc6c9feae11': { coingeckoId: "benqi", decimals: 18 }, - }, ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, - mantle: { - '0x201eba5cc46d216ce6dc03f6a759e8e766e956ae': { coingeckoId: "tether", decimals: 6 }, - '0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8': { coingeckoId: "mantle", decimals: 18 }, - '0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111': { coingeckoId: "ethereum", decimals: 18 }, - } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/ondofinance/index.js b/projects/ondofinance/index.js index 8c8279512b..8574f516e6 100644 --- a/projects/ondofinance/index.js +++ b/projects/ondofinance/index.js @@ -1,4 +1,7 @@ +const { toUSDTBalances } = require('../helper/balances') +const sdk = require('@defillama/sdk') + module.exports = { methodology: "Sums Ondo's fund supplies.", misrepresentedTokens: true, @@ -19,8 +22,10 @@ Object.keys(config).forEach(chain => { funds = Object.values(funds) module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { + const ethApi = new sdk.ChainApi({ chain: 'ethereum', block: _b}) const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: funds }) - api.addTokens(funds, supplies) + const tokenPrice = (await ethApi.call({ abi: 'uint256:rwaPrice', target: '0xc53e6824480d976180A65415c19A6931D17265BA'})) / 1e18 + return toUSDTBalances(supplies.reduce((a, i) => a +i/1e18, 0) * tokenPrice) } } }) \ No newline at end of file From 3a1cef48310151b2c62b8cc23df5b4888ee1cc67 Mon Sep 17 00:00:00 2001 From: bryansniyve <134277602+bryansniyve@users.noreply.github.com> Date: Wed, 19 Jul 2023 12:43:57 +0800 Subject: [PATCH 1199/1354] feat: ApolloX support more ALP Token: BTCB/HAY/WBNB (#6838) Co-authored-by: bryan.y --- projects/apollox/index.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/projects/apollox/index.js b/projects/apollox/index.js index 1090f5c169..2f80e92f3d 100644 --- a/projects/apollox/index.js +++ b/projects/apollox/index.js @@ -24,6 +24,9 @@ const TOKEN_BANANA = "0x603c7f932ED1fc6575303D8Fb018fDCBb0f39a95"; const TOKEN_MDX = "0x9c65ab58d8d978db963e63f2bfb7121627e3a739"; const TOKEN_HAY = "0x0782b6d8c4551B9760e74c0545a9bCD90bdc41E5"; +const TOKEN_BTC = "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c"; +const TOKEN_BNB = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; + const TreasureTokens = [ // TOKEN_APX, nullAddress, @@ -39,11 +42,21 @@ const TreasureTokens = [ TOKEN_HAY, ]; +const ALPTokens = [ + nullAddress, + TOKEN_BSC_USD, + TOKEN_BUSD, + TOKEN_USDC, + TOKEN_BTC, + TOKEN_BNB, + TOKEN_HAY, +] + async function tvl(timestamp, _block, { bsc: block }) { - const toa = TreasureTokens.map((t) => [t, treasureContract]); - toa.push([TOKEN_BSC_USD, ALPContract]); - toa.push([TOKEN_BUSD, ALPContract]); - toa.push([TOKEN_USDC, ALPContract]); + const toa = [ + ...TreasureTokens.map((t) => [t, treasureContract]), + ...ALPTokens.map((t) => [t, ALPContract]), + ] return sumTokens({}, toa, block, "bsc"); } From 8c526fbee97a15c268acf98399e8e237a7e45271 Mon Sep 17 00:00:00 2001 From: Joeh <32411671+joehquak@users.noreply.github.com> Date: Wed, 19 Jul 2023 06:50:23 +0100 Subject: [PATCH 1200/1354] Add TVL trackers for Sobal DEX on Neon EVM (#6837) * feat: add sobal TVL trackers for neon-evm * add token mappings for neon evm * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sobal/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/sobal/index.js diff --git a/projects/sobal/index.js b/projects/sobal/index.js new file mode 100644 index 0000000000..0f52626b48 --- /dev/null +++ b/projects/sobal/index.js @@ -0,0 +1,14 @@ +const { onChainTvl } = require('../helper/balancer') + +const V2_ADDRESS = '0x7122e35ceC2eED4A989D9b0A71998534A203972C'; // Vault + +const config = { + neon_evm: { fromBlock: 206166057, }, +} + +Object.keys(config).forEach(chain => { + const { fromBlock } = config[chain] + module.exports[chain] = { + tvl: onChainTvl(V2_ADDRESS, fromBlock) + } +}) From d18f7707115d2015e3269ba6a51e118e53c109c4 Mon Sep 17 00:00:00 2001 From: Amilcar Rey Date: Wed, 19 Jul 2023 04:32:16 -0300 Subject: [PATCH 1201/1354] feat: Add Hatom Protocol (#6811) * Hatom protocol init Co-authored-by: Daniela Pena * Clean code * Conver cash and borrows from string to number * Adding bignumber.js * Adding to usdc balances * To usdc manual * Getting token prices from api and format code. * Change API_URL to mainnet * minor refactor and code formatting * fix: :bug: attempt to fix graphql query error on test * chore: :coffin: remove unused import * add back * Split adapter in two * Adding helpers and dependencies * Lending tvl and borrowed * Adding liquid staking * Finish lending * Handle timeout * Delete trasury for now * hatom: code refactor --------- Co-authored-by: Daniela Pena Co-authored-by: Daniela Pena Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hatom-lending/index.js | 42 ++++++++++++ projects/hatom-liquid-staking/index.js | 14 ++++ projects/helper/chain/elrond.js | 42 ++++++++++-- projects/helper/env.js | 19 +++--- projects/quantumx-network/farms.abi.json | 83 ------------------------ 5 files changed, 101 insertions(+), 99 deletions(-) create mode 100644 projects/hatom-lending/index.js create mode 100644 projects/hatom-liquid-staking/index.js delete mode 100644 projects/quantumx-network/farms.abi.json diff --git a/projects/hatom-lending/index.js b/projects/hatom-lending/index.js new file mode 100644 index 0000000000..adb9a9cb6d --- /dev/null +++ b/projects/hatom-lending/index.js @@ -0,0 +1,42 @@ +const { sumTokens, call, } = require('../helper/chain/elrond') +const { cachedGraphQuery } = require('../helper/cache') +const { nullAddress } = require('../helper/tokenMapping') + +async function getMoneyMarkets() { + const { queryMoneyMarket: res } = await cachedGraphQuery('hatom-TVLLendingProtocolQuery', 'https://mainnet-api.hatom.com/graphql', ` + query QueryMoneyMarket { + queryMoneyMarket { + address + underlying { + name + decimals + id + } + } + } + `) + res.forEach(i => { + if (i.underlying.id === 'EGLD') i.underlying.id = nullAddress + }) + return res +} + +const tvl = async () => { + const moneyMarkets = await getMoneyMarkets() + return sumTokens({ owners: moneyMarkets.map(i => i.address), }) +}; + +const borrowed = async (_, _1, _2, { api }) => { + const moneyMarkets = await getMoneyMarkets() + const tokens = moneyMarkets.map(i => i.underlying.id) + const bals = await Promise.all(moneyMarkets.map(i => call({ target: i.address, abi: 'getTotalBorrows', responseTypes: ['number'] }))) + api.addTokens(tokens, bals) +}; + +module.exports = { + timetravel: false, + elrond: { + tvl, + borrowed, + }, +}; diff --git a/projects/hatom-liquid-staking/index.js b/projects/hatom-liquid-staking/index.js new file mode 100644 index 0000000000..db9ff8b7bc --- /dev/null +++ b/projects/hatom-liquid-staking/index.js @@ -0,0 +1,14 @@ +const { call, } = require("../helper/chain/elrond"); + +const ADDRESSES = require('../helper/coreAssets.json'); + +const tvl = async () => { + return { ['elrond:' + ADDRESSES.null]: await call({ target: 'erd1qqqqqqqqqqqqqpgq4gzfcw7kmkjy8zsf04ce6dl0auhtzjx078sslvrf4e', abi: 'getCashReserve', responseTypes: ['number'] }) } +}; + +module.exports = { + timetravel: false, + elrond: { + tvl, + }, +}; diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index 20f63d880a..07f0c60db1 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -1,20 +1,49 @@ const ADDRESSES = require('../coreAssets.json') const { get } = require('../http') -const { getCoreAssets, } = require('../tokenMapping') const { transformBalances } = require('../portedTokens') const sdk = require('@defillama/sdk') -const chain = 'elrond' +const { post } = require('../http') +const { getEnv } = require('../env') + +const call = async ({ target, abi, params = [], responseTypes = [] }) => { + const data = await post(getEnv('MULTIVERSX_RPC') + '/query', { scAddress: target, funcName: abi, args: params, }) + + const response = data.returnData.map(parseResponses) + return responseTypes.length === 1 ? response[0] : response + + // https://github.com/multiversx/mx-sdk-js-core/blob/main/src/smartcontracts/resultsParser.ts + function parseResponses(item, idx) { + const buffer = Buffer.from(item || "", "base64") + switch (responseTypes[idx]) { + case 'number': return parseNumber(buffer) + default: throw new Error('Unknown/unsupported data type') + } + } -const API_HOST = 'https://api.multiversx.com' + function parseNumber(buffer) { + // https://github.com/juanelas/bigint-conversion/blob/master/src/ts/index.ts#L63 + buffer = new Uint8Array(buffer) + let bits = 8n + + let ret = 0n + for (const i of buffer.values()) { + const bi = BigInt(i) + ret = (ret << bits) + bi + } + return ret.toString() + } +}; + +const chain = 'elrond' async function getElrondBalance(address) { - const { data: { account: { balance } } } = await get(`${API_HOST}/address/${address}`) + const { data: { account: { balance } } } = await get(`${getEnv('MULTIVERSX_RPC')}/address/${address}`) return balance } const nullAddress = ADDRESSES.null async function getTokens({ address, balances = {}, tokens = [], blacklistedTokens = [], whitelistedTokens = [], }) { - const res = await get(`${API_HOST}/accounts/${address}/tokens?size=1000`) + const res = await get(`${getEnv('MULTIVERSX_RPC')}/accounts/${address}/tokens?size=1000`) res.filter(i => i.type === 'FungibleESDT') .forEach(i => { const token = i.identifier @@ -26,7 +55,7 @@ async function getTokens({ address, balances = {}, tokens = [], blacklistedToken return balances } -async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = [], whitelistedTokens = []}) { +async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedTokens = [], tokensAndOwners = [], whitelistedTokens = [] }) { if (tokensAndOwners.length) { await Promise.all(tokensAndOwners.map(([token, owner]) => sumTokens({ owners: [owner], tokens: [token], balances, blacklistedTokens, whitelistedTokens, }))) return balances @@ -43,4 +72,5 @@ async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedT module.exports = { sumTokens, + call, } \ No newline at end of file diff --git a/projects/helper/env.js b/projects/helper/env.js index fe0419c141..1517ef24cf 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -3,23 +3,22 @@ const BOOL_KEYS = [ 'LLAMA_DEBUG_MODE', ] +const DEFAULTS = { + COVALENT_KEY: 'ckey_72cd3b74b4a048c9bc671f7c5a6', + SOLANA_RPC: 'https://try-rpc.mainnet.solana.blockdaemon.tech', + APTOS_RPC: 'https://aptos-mainnet.pontem.network', + SUI_RPC: 'https://fullnode.mainnet.sui.io/', + MULTIVERSX_RPC: 'https://api.multiversx.com', +} + const ENV_KEYS = [ ...BOOL_KEYS, + ...Object.keys(DEFAULTS), 'GETBLOCK_KEY', - 'SOLANA_RPC', - 'APTOS_RPC', - 'SUI_RPC', 'LOFTY_API', - 'COVALENT_KEY', 'OLYMPUS_GRAPH_API_KEY', ] -const DEFAULTS = { - COVALENT_KEY: 'ckey_72cd3b74b4a048c9bc671f7c5a6', - SOLANA_RPC: 'https://try-rpc.mainnet.solana.blockdaemon.tech', - APTOS_RPC: 'https://aptos-mainnet.pontem.network', - SUI_RPC: 'https://fullnode.mainnet.sui.io/', -} function getEnv(key) { if (!ENV_KEYS.includes(key)) throw new Error(`Unknown env key: ${key}`) diff --git a/projects/quantumx-network/farms.abi.json b/projects/quantumx-network/farms.abi.json deleted file mode 100644 index b53e4b0e1b..0000000000 --- a/projects/quantumx-network/farms.abi.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "buildInfo": { - "rustc": { - "version": "1.67.0-nightly", - "commitHash": "b7bc90fea3b441234a84b49fdafeb75815eebbab", - "commitDate": "2022-11-21", - "channel": "Nightly", - "short": "rustc 1.67.0-nightly (b7bc90fea 2022-11-21)" - }, - "contractCrate": { - "name": "farms", - "version": "0.0.0" - }, - "framework": { - "name": "elrond-wasm", - "version": "0.38.0" - } - }, - "name": "Farms", - "constructor": { - "inputs": [], - "outputs": [] - }, - "endpoints": [ - { - "name": "getAllFarms", - "mutability": "readonly", - "inputs": [], - "outputs": [ - { - "type": "variadic>", - "multi_result": true - } - ] - } - ], - "events": [], - "hasCallback": false, - "types": { - "EsdtTokenPayment": { - "type": "struct", - "fields": [ - { - "name": "token_identifier", - "type": "TokenIdentifier" - }, - { - "name": "token_nonce", - "type": "u64" - }, - { - "name": "amount", - "type": "BigUint" - } - ] - }, - "Farm": { - "type": "struct", - "fields": [ - { - "name": "id", - "type": "BigUint" - }, - { - "name": "creator", - "type": "Address" - }, - { - "name": "creation_epoch", - "type": "u64" - }, - { - "name": "staked_token", - "type": "EgldOrEsdtTokenIdentifier" - }, - { - "name": "reward_token", - "type": "EgldOrEsdtTokenIdentifier" - } - ] - } - } -} From 95eb959e4fa20f07a8d0e010da928a53214804e8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 10:04:32 +0200 Subject: [PATCH 1202/1354] minor fix --- projects/treasury/gains.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/projects/treasury/gains.js b/projects/treasury/gains.js index c9ebbce7dd..f77c9ccd0a 100644 --- a/projects/treasury/gains.js +++ b/projects/treasury/gains.js @@ -14,7 +14,6 @@ module.exports = treasuryExports({ ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.DAI, "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", - "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" //UNI V3 ], owners: [multisig, treasury], ownTokens: [GNS], @@ -25,7 +24,6 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.polygon.DAI, ADDRESSES.polygon.USDT, - "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" //UNI V3 ], owners: [treasury], ownTokens: [gnspolygon], From c38760c13fd983b02066bb9214cbdb4b90fd65c8 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 19 Jul 2023 09:10:00 +0100 Subject: [PATCH 1203/1354] update gains treasury (#6835) * update gains treasury * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/treasury/gains.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/projects/treasury/gains.js b/projects/treasury/gains.js index 2783aaf851..f77c9ccd0a 100644 --- a/projects/treasury/gains.js +++ b/projects/treasury/gains.js @@ -1,11 +1,32 @@ const { nullAddress,treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json'); + +const GNS = "0x18c11FD286C5EC11c3b683Caa813B77f5163A122" +const multisig = "0xf8e93a7d954f7d31d5fa54bc0eb0e384412a158d" +const treasury = "0x80fd0accC8Da81b0852d2Dca17b5DDab68f22253" +const gnspolygon = "0xE5417Af564e4bFDA1c483642db72007871397896" module.exports = treasuryExports({ arbitrum: { tokens: [ nullAddress, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDC_CIRCLE, + ADDRESSES.arbitrum.DAI, + "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", + ], + owners: [multisig, treasury], + ownTokens: [GNS], + resolveUniV3: true, + }, + polygon: { + tokens: [ + nullAddress, + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.USDT, ], - owners: ['0xf8e93a7d954f7d31d5fa54bc0eb0e384412a158d'], - ownTokens: [], + owners: [treasury], + ownTokens: [gnspolygon], + resolveUniV3: true, }, }) \ No newline at end of file From 0321e059cabc16d6800c316a17833ae9ce4c232e Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:10:35 +0800 Subject: [PATCH 1204/1354] [izumi-iziswap]update poolHelpers contracts (#6839) * update poolHelpers contracts * remove console --- projects/izumi-iziswap/index.js | 88 ++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 39 deletions(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 95e75d5580..90a5de8fd4 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -5,19 +5,22 @@ const { sumTokens2, } = require('../helper/unwrapLPs') const nullAddress = ADDRESSES.null const poolHelpers = { - 'bsc': '0x93C22Fbeff4448F2fb6e432579b0638838Ff9581', - 'arbitrum': '0x611575eE1fbd4F7915D0eABCC518eD396fF78F0c', - 'era': '0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F', - 'meter': '0x07aBf894D5C25E626bb30f75eFC728a1d86BEeDC', - 'aurora': '0xE78e7447223aaED59301b44513D1d3A892ECF212', + 'bsc': ['0x93C22Fbeff4448F2fb6e432579b0638838Ff9581', + '0xBF55ef05412f1528DbD96ED9E7181f87d8C9F453'], + 'arbitrum': ['0xAD1F11FBB288Cd13819cCB9397E59FAAB4Cdc16F'], + 'era': ['0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F', + '0x483FDE31bcE3DCc168E23a870831b50Ce2cCd1F1'], + 'meter': ['0x07aBf894D5C25E626bb30f75eFC728a1d86BEeDC'], + 'aurora': ['0x61A41182CD6e94f2A026aE3c0D1b73B1AA579aEa', + '0xE78e7447223aaED59301b44513D1d3A892ECF212'], // 'ethereumclassic': '0x1D377311b342633A970e71a787C50F83858BFC1B', - 'cronos': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', - 'polygon': '0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF', + 'cronos': ['0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF'], + 'polygon': ['0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF'], // 'conflux': '0x1502d025BfA624469892289D45C0352997251728', - 'mantle': '0x1502d025BfA624469892289D45C0352997251728', - 'ethereum': '0x19b683A2F45012318d9B2aE1280d68d3eC54D663', - 'ontology_evm': '0x110dE362cc436D7f54210f96b8C7652C2617887D', - 'ultron' : '0xcA7e21764CD8f7c1Ec40e651E25Da68AeD096037' + 'mantle': ['0x611575eE1fbd4F7915D0eABCC518eD396fF78F0c'], + 'ethereum': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], + 'ontology_evm': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], + 'ultron' : ['0xcA7e21764CD8f7c1Ec40e651E25Da68AeD096037'] } const blacklistedTokens = [ @@ -27,40 +30,47 @@ const blacklistedTokens = [ const tvl = async (_, _1, _2, { api }) => { const chain = api.chain - const toa = [] - let i = 1 - let foundLastPool = false + const toa = [] const chunkSize = 10 - const poolMetaData = [] const bTokens = [...blacklistedTokens] + const allPools = [] + const allPoolMetas = [] - do { - const calls = [] - for (let j = i; j < i + chunkSize; j++) - calls.push(j) - i += chunkSize - const poolMetas = await api.multiCall({ - target: poolHelpers[chain], - abi: abi.poolMetas, - calls, - }) - for (const output of poolMetas) { - if (output.tokenX === nullAddress && output.fee === '0') { - foundLastPool = true - break; + for(const manager of poolHelpers[chain]) { + let i = 1 + let foundLastPool = false + const poolMetaData = [] + do { + const calls = [] + for (let j = i; j < i + chunkSize; j++) + calls.push(j) + i += chunkSize + const poolMetas = await api.multiCall({ + target: manager, + abi: abi.poolMetas, + calls, + }) + for (const output of poolMetas) { + if (output.tokenX === nullAddress && output.fee === '0') { + foundLastPool = true + break; + } + poolMetaData.push(output) } - poolMetaData.push(output) - } - } while (!foundLastPool) + } while (!foundLastPool) + + const poolCalls = poolMetaData.map(i => ({ params: [i.tokenX, i.tokenY, i.fee] })) + const pools = await api.multiCall({ + target: manager, + abi: abi.pool, + calls: poolCalls, + }) - const poolCalls = poolMetaData.map(i => ({ params: [i.tokenX, i.tokenY, i.fee] })) - const pools = await api.multiCall({ - target: poolHelpers[chain], - abi: abi.pool, - calls: poolCalls, - }) + allPools.push(...pools) + allPoolMetas.push(...poolMetaData) + } - pools.forEach((output, i) => toa.push([poolMetaData[i].tokenX, output], [poolMetaData[i].tokenY, output],)) + allPools.forEach((output, i) => toa.push([allPoolMetas[i].tokenX, output], [allPoolMetas[i].tokenY, output],)) // if (chain === 'era') bTokens.push(ADDRESSES.arbitrum.WETH) return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, permitFailure: true}) } From 1a2c38a4e20fd3ebb9cdf30a9724e07e543a5d73 Mon Sep 17 00:00:00 2001 From: 69ren <111715700+69ren@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:42:27 +0800 Subject: [PATCH 1205/1354] Add ennead (#6833) * Add ennead * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ennead/index.js | 51 +++++++++++++++++++++++++++++++++ projects/ennead/ramsesLens.json | 7 +++++ projects/helper/unwrapLPs.js | 5 ++-- 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 projects/ennead/index.js create mode 100644 projects/ennead/ramsesLens.json diff --git a/projects/ennead/index.js b/projects/ennead/index.js new file mode 100644 index 0000000000..b98b11c2df --- /dev/null +++ b/projects/ennead/index.js @@ -0,0 +1,51 @@ +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { sumTokensExport } = require('../helper/unknownTokens') +const { staking, } = require("../helper/staking"); +const lensAbi = require("./ramsesLens.json"); + +// Ramses contracts +const ramsesLens = '0xAAA68f40515bCcd8e407EBB4dBdF5046D105621e'; +const nfpManager = '0xAA277CB7914b7e5514946Da92cb9De332Ce610EF'; + +// Ennead contracts +// arbi +const neadRam = '0x40301951Af3f80b8C1744ca77E55111dd3c1dba1'; +const neadStake = '0x7D07A61b8c18cb614B99aF7B90cBBc8cD8C72680'; +const lpDepositor = '0x1863736c768f232189F95428b5ed9A51B0eCcAe5'; +const neadNfpDepositor = '0xe99ead648Fb2893d1CFA4e8Fe8B67B35572d2581'; +// avax +const neadStake_avax = '0xe99ead39204bd394e56502A3ad56d7061EE6B1c7'; +const neadSnek = '0xe99ead9519239F3eAad9339292d8A399739Cd55d'; +const neadSnekLp = '0x82360748aC3D7045812c6783f355b41193d3492E'; +const snekView = '0xe99eadc22747c95c658f41a02F1c6C2CcAefA757'; +const booster = '0xe99ead683Dcf1eF0C7F6612be5098BC5fDF4998d'; + +async function arbiTvl(timestamp, block, chainBlocks, { api }) { + let poolsAddresses = await api.call({ target: ramsesLens, abi: lensAbi.allPools, }) + let gauges = await api.multiCall({ target: ramsesLens, calls: poolsAddresses, abi: lensAbi.gaugeForPool, }) + poolsAddresses = poolsAddresses.filter((_, i) => gauges[i] !== nullAddress) + gauges = gauges.filter(gauge => gauge !== nullAddress) + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(i => ({ target: i, params: lpDepositor}))}) + api.addTokens(poolsAddresses, bals) + await sumTokens2({ api, uniV3nftsAndOwners: [[nfpManager, neadNfpDepositor],], resolveLP: true, }) +} + +async function avaxTvl(timestamp, block, chainBlocks, { api }) { + const poolsAddresses = await api.call({ target: snekView, abi: lensAbi.allActivePools, }) + const gauges = await api.call({ target: snekView, abi: lensAbi.allGauges, }) + const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: gauges.map(i => ({ target: i, params: booster}))}) + api.addTokens(poolsAddresses, bals) + return sumTokens2({ api, resolveLP: true, }) +} + +module.exports = { + misrepresentedTokens: true, + arbitrum: { + staking: staking(neadStake, neadRam), + tvl: arbiTvl, + }, + avax: { + staking: sumTokensExport({ owner: neadStake_avax, tokens: [neadSnek], lps: [neadSnekLp], useDefaultCoreAssets: true, }), + tvl: avaxTvl + } +}; \ No newline at end of file diff --git a/projects/ennead/ramsesLens.json b/projects/ennead/ramsesLens.json new file mode 100644 index 0000000000..2686073867 --- /dev/null +++ b/projects/ennead/ramsesLens.json @@ -0,0 +1,7 @@ +{ + "allPools": "function allPools() view returns (address[])", + "gaugeForPool": "function gaugeForPool(address) view returns (address)", + "allActivePools": "function allActivePools() view returns (address[])", + "allGauges": "function allGauges() view returns (address[])", + "allStakingPositionsOf": "function allStakingPositionsOf(address) view returns (tuple(address gauge, uint256 balance, uint256 derivedBalance, tuple(address token, uint256 earned)[] userRewards)[] rewardsData)" +} \ No newline at end of file diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index e16d54476b..e862a01ad9 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -671,6 +671,7 @@ async function sumTokens2({ api, resolveUniV3 = false, uniV3WhitelistedTokens = [], + uniV3nftsAndOwners = [], resolveArtBlocks = false, resolveNFTs = false, permitFailure = false, @@ -713,8 +714,8 @@ async function sumTokens2({ } } - if (resolveUniV3) - await unwrapUniswapV3NFTs({ balances, chain, block, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, }) + if (resolveUniV3 || uniV3nftsAndOwners.length) + await unwrapUniswapV3NFTs({ balances, chain, block, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, nftsAndOwners: uniV3nftsAndOwners, }) blacklistedTokens = blacklistedTokens.map(t => normalizeAddress(t, chain)) tokensAndOwners = tokensAndOwners.map(([t, o]) => [normalizeAddress(t, chain), o]).filter(([token]) => !blacklistedTokens.includes(token)) From d856f275dbdd467aa71ba8f7ee285ba810ba9fb4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 11:11:36 +0200 Subject: [PATCH 1206/1354] hop: track arbitrum_nova --- projects/hop/index.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/projects/hop/index.js b/projects/hop/index.js index 9ee18e17d8..cf62bfc65d 100644 --- a/projects/hop/index.js +++ b/projects/hop/index.js @@ -1,14 +1,21 @@ const { chainExports } = require('../helper/exports') const { default: axios } = require('axios') const { sumTokens2 } = require('../helper/unwrapLPs') +const { getConfig } = require('../helper/cache') + +const chainMapping = { + xdai: 'gnosis', + arbitrum_nova: 'nova' +} +const getChainKey = chain => chainMapping[chain] ?? chain // node test.js projects/hop/index.js function chainTvl(chain) { return async (_, _b, {[chain]: block}) => { const toa = [] - const tokens = await axios('https://raw.githubusercontent.com/hop-protocol/hop/develop/packages/core/build/addresses/mainnet.json') - for (const tokenConstants of Object.values(tokens.data.bridges)) { - const chainConstants = (chain == 'xdai' ? tokenConstants['gnosis'] : tokenConstants[chain]) + const { bridges, bonders } = await getConfig('hop-protocol', 'https://raw.githubusercontent.com/hop-protocol/hop/develop/packages/core/build/addresses/mainnet.json') + for (const tokenConstants of Object.values(bridges)) { + const chainConstants = tokenConstants[getChainKey(chain)] if (chainConstants === undefined) continue @@ -17,7 +24,7 @@ function chainTvl(chain) { toa.push([token, bridge]) } if (chain === "ethereum") { - for (const bonder of Object.entries(tokens.data.bonders)) { + for (const bonder of Object.entries(bonders)) { const tokenName = bonder[0] let contractList = [] for (let i of Object.values(bonder[1])) { @@ -30,7 +37,7 @@ function chainTvl(chain) { } } for (const contract of contractList) { - const token = tokens.data.bridges[tokenName].ethereum.l1CanonicalToken + const token = bridges[tokenName].ethereum.l1CanonicalToken toa.push([token, contract]) } } @@ -39,4 +46,4 @@ function chainTvl(chain) { } } -module.exports = chainExports(chainTvl, ['ethereum', 'xdai', 'polygon', 'optimism', 'arbitrum']) \ No newline at end of file +module.exports = chainExports(chainTvl, ['ethereum', 'polygon', 'optimism', 'arbitrum', ...Object.keys(chainMapping)]) \ No newline at end of file From 5882a9635d78fb0333dbcde9ef30b8f82562941e Mon Sep 17 00:00:00 2001 From: lineabank <135123153+lineabank@users.noreply.github.com> Date: Wed, 19 Jul 2023 18:24:38 +0900 Subject: [PATCH 1207/1354] Add Lineabank (#6840) * Add Lineabank * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/env.js | 5 +++++ projects/lineabank/index.js | 11 +++++++++++ 3 files changed, 17 insertions(+) create mode 100644 projects/lineabank/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index dcbb5a21f9..7c655105ba 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -107,6 +107,7 @@ "lamden", "lbry", "libre", + "linea", "liquidchain", "litecoin", "loop", diff --git a/projects/helper/env.js b/projects/helper/env.js index 1517ef24cf..9b13bdebfa 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -9,6 +9,7 @@ const DEFAULTS = { APTOS_RPC: 'https://aptos-mainnet.pontem.network', SUI_RPC: 'https://fullnode.mainnet.sui.io/', MULTIVERSX_RPC: 'https://api.multiversx.com', + LINEA_RPC: 'https://linea.rpc.thirdweb.com', } const ENV_KEYS = [ @@ -19,6 +20,10 @@ const ENV_KEYS = [ 'OLYMPUS_GRAPH_API_KEY', ] +Object.keys(DEFAULTS).forEach(i => { + if (!process.env[i]) process.env[i] = DEFAULTS[i] // this is done to set the chain RPC details in @defillama/sdk +}) + function getEnv(key) { if (!ENV_KEYS.includes(key)) throw new Error(`Unknown env key: ${key}`) diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js new file mode 100644 index 0000000000..07b1a9be0e --- /dev/null +++ b/projects/lineabank/index.js @@ -0,0 +1,11 @@ +const { compoundExports2 } = require("../helper/compound"); + +module.exports = { + linea: compoundExports2({ + comptroller: "0x009a0b7C38B542208936F1179151CD08E2943833", + abis: { + getAllMarkets: "address[]:allMarkets", + totalBorrows: "uint256:totalBorrow", + }, + }), +}; From 64131d7b807bc37bcea6faed7ac2121491c728b9 Mon Sep 17 00:00:00 2001 From: "3.141592653589793238462643383279" Date: Wed, 19 Jul 2023 17:17:15 +0700 Subject: [PATCH 1208/1354] fix: update market id and add borrow info (#6842) --- projects/scallop/index.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/projects/scallop/index.js b/projects/scallop/index.js index eb67fce757..5d7ad92a46 100644 --- a/projects/scallop/index.js +++ b/projects/scallop/index.js @@ -12,7 +12,7 @@ const SCALLOP_PROGRAM_ID = new PublicKey("SCPv1LabixHirZbX6s7Zj3oiBogadWZvGUKRvX const COUPON_SEED = "coupon_seed"; const POOL_AUTHORITY = "pool_authority_seed"; -const SCALLOP_SUI_MARKET_ID = "0xcdd65d04519aea065fdbd15315ab75ff41a65a4a39fd71e107dffc4a06c02f32" +const SCALLOP_SUI_MARKET_ID = "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9" function getTokenGeckoId(mintAuthority) { for (let i = 0; i < activePoolBases.length; i++) { @@ -58,19 +58,36 @@ async function solanaTvl() { return balances; } +async function suiBorrowed() { + const { api } = arguments[3] + const object = await sui.getObject(SCALLOP_SUI_MARKET_ID) + + const balanceSheetsFields = await sui.getDynamicFieldObjects({ + parent: object.fields.vault.fields.balance_sheets.fields.table.fields.id.id, + }); + + const balanceSheets = await sui.getObjects(balanceSheetsFields.map((e) => e.fields.id.id)) + + balanceSheets.forEach((e) => { + const coinType = '0x' + e.fields.name.fields.name + const amount = new BigNumber(e.fields.value.fields.debt).toString() + api.add(coinType, amount) + }) +} + async function suiTvl() { const { api } = arguments[3] const object = await sui.getObject(SCALLOP_SUI_MARKET_ID) const balanceSheetsFields = await sui.getDynamicFieldObjects({ - parent: object.fields.vault.fields.balance_sheets.fields.table.fields.id.id, - }); + parent: object.fields.vault.fields.balance_sheets.fields.table.fields.id.id, + }); const balanceSheets = await sui.getObjects(balanceSheetsFields.map((e) => e.fields.id.id)) - + balanceSheets.forEach((e) => { const coinType = '0x' + e.fields.name.fields.name - const amount = new BigNumber(e.fields.value.fields.cash).plus(new BigNumber(e.fields.value.fields.debt)).toString() + const amount = new BigNumber(e.fields.value.fields.cash).toString() api.add(coinType, amount) }) @@ -93,5 +110,6 @@ module.exports = { }, sui: { tvl: suiTvl, + borrowed: suiBorrowed, }, } \ No newline at end of file From 3579276f6ee49fa9d862527bc12224f19c6c6d56 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 19 Jul 2023 13:27:35 +0100 Subject: [PATCH 1209/1354] beamex adapter --- projects/beamex/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/beamex/index.js diff --git a/projects/beamex/index.js b/projects/beamex/index.js new file mode 100644 index 0000000000..5fa70476e3 --- /dev/null +++ b/projects/beamex/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + moonbeam: { + tvl: gmxExports({ vault: '0x73197B461eA369b36d5ee96A1C9f090Ef512be21', }) + }, +} \ No newline at end of file From ba595dae68e67af6f2e9fc4e1439bd040d8014d6 Mon Sep 17 00:00:00 2001 From: vladjito <95035799+vladjito@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:00:39 +0300 Subject: [PATCH 1210/1354] Update index.js (#6843) We have switched our fiat equivalents from EUR to USD in our dApp, so previous modifications are obsolete now. Returned index.js to its initial state. --- projects/concordex-io/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/projects/concordex-io/index.js b/projects/concordex-io/index.js index 7ae0fc91ee..39ab729a2a 100644 --- a/projects/concordex-io/index.js +++ b/projects/concordex-io/index.js @@ -1,11 +1,10 @@ -const { post, get } = require('../helper/http') +const { post } = require('../helper/http') async function tvl(_, _b, _cb, { api, }) { const body = {"jsonrpc":"2.0","method":"liquidity_pools_list","params":{"filter":{"sort":"EFFECTIVE_TVL","page":1,"is_desc":true,"search":"","limit":999}},"id":0} const { result: { pools }} = await post('https://cdex-liquidity-pool.concordex.io/v1/rpc', body) - const { rates } = await get('https://open.er-api.com/v6/latest/EUR'); return { - tether: pools.reduce((acc, i) => acc + +i.tvl, 0) * rates['USD'] + tether: pools.reduce((acc, i) => acc + +i.tvl, 0) } } @@ -13,4 +12,4 @@ module.exports = { misrepresentedTokens: true, timetravel: false, concordium: { tvl }, -} \ No newline at end of file +} From f42b5e5aefa3f2c40eefa2ad3dfee0c5b54a02e7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 18:31:34 +0530 Subject: [PATCH 1211/1354] Revert "Update index.js (#6843)" (#6848) This reverts commit ba595dae68e67af6f2e9fc4e1439bd040d8014d6. --- projects/concordex-io/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/concordex-io/index.js b/projects/concordex-io/index.js index 39ab729a2a..7ae0fc91ee 100644 --- a/projects/concordex-io/index.js +++ b/projects/concordex-io/index.js @@ -1,10 +1,11 @@ -const { post } = require('../helper/http') +const { post, get } = require('../helper/http') async function tvl(_, _b, _cb, { api, }) { const body = {"jsonrpc":"2.0","method":"liquidity_pools_list","params":{"filter":{"sort":"EFFECTIVE_TVL","page":1,"is_desc":true,"search":"","limit":999}},"id":0} const { result: { pools }} = await post('https://cdex-liquidity-pool.concordex.io/v1/rpc', body) + const { rates } = await get('https://open.er-api.com/v6/latest/EUR'); return { - tether: pools.reduce((acc, i) => acc + +i.tvl, 0) + tether: pools.reduce((acc, i) => acc + +i.tvl, 0) * rates['USD'] } } @@ -12,4 +13,4 @@ module.exports = { misrepresentedTokens: true, timetravel: false, concordium: { tvl }, -} +} \ No newline at end of file From af8d97280ca1431736b3d57f8e68442e26231d00 Mon Sep 17 00:00:00 2001 From: ezoia-com <53337996+ezoia-com@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:04:48 +0800 Subject: [PATCH 1212/1354] Added stMatic vault on Polygon_zkEVM chain (#6850) --- projects/thetanuts/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js index e5104acef5..0e32d6ffc4 100644 --- a/projects/thetanuts/index.js +++ b/projects/thetanuts/index.js @@ -70,6 +70,9 @@ const bobaPutVault = '0xff5fe7909fc4d0d6643f1e8be8cba72610d0b485' //Arbitrum Vaults const arbCallVault = '0x0833EC3262Dcc417D88f85Ed5E1EBAf768080f41' +//zkEVM vaults +const stMaticCallVault = '0x7bF3c7C23501EA3E09B237D6F8AdcB7Ea3CeF41C' + // Ethereum Assets const weth = ADDRESSES.ethereum.WETH const usdc = ADDRESSES.ethereum.USDC @@ -110,6 +113,9 @@ const bobaUSDC = ADDRESSES.boba.USDC // Arbitrum assets let arb = '0x912ce59144191c1204e64559fe8253a0e49e6548' +// zkEVM assets +const stMatic = '0x83b874c1e09D316059d929da402dcB1A98e92082'; + module.exports = { methodology: `Only the funds deposited by the users into our vaults are calculated as TVL.`, hallmarks: [ @@ -199,6 +205,11 @@ const config = { [near, nearCallVault,], ] }, + polygon_zkevm: { + tokensAndOwners: [ + [stMatic, stMaticCallVault,], + ] + } } Object.keys(config).forEach(chain => { From 1db949b1662bfd0adbf69bde20c37ee1e45c034d Mon Sep 17 00:00:00 2001 From: Michael Semin Date: Wed, 19 Jul 2023 21:09:05 +0800 Subject: [PATCH 1213/1354] Add ReHold V2 (#6846) * added avax to rehold * try to fix covalent * added arbitrum & fantom to rehold * added optimism to rehold * removed fantom from rehold * added rehold v2 * rehold: re-add fantom --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/rehold-v2/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/rehold-v2/index.js diff --git a/projects/rehold-v2/index.js b/projects/rehold-v2/index.js new file mode 100644 index 0000000000..8b5fb1aa28 --- /dev/null +++ b/projects/rehold-v2/index.js @@ -0,0 +1,23 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { covalentGetTokens } = require('../helper/http') + +const VAULT_V2 = '0xde6b4964c4384bcdfa150a4a8be9865c5b91e29c'; + +async function tvl(_, _b, _cb, { api, }) { + const tokens = await covalentGetTokens(VAULT_V2, api.chain) + + return sumTokens2({ + api, + owner: VAULT_V2, + tokens, + blacklistedTokens: ['0x594f9274e08ba6c5760bacfba795b1879af17255'], + }); +} + +module.exports = { + bsc: { tvl }, + polygon: { tvl }, + avax: { tvl }, + arbitrum: { tvl }, + optimism: { tvl }, +}; From 365c8939c648a0624d5cec65a75dc8647e7b0035 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 18:47:00 +0530 Subject: [PATCH 1214/1354] Symbiosis (#6851) * feat: symbiosis adds mantle and linea chains * minor fix --------- Co-authored-by: allush --- projects/helper/coreAssets.json | 6 +++++- projects/symbiosis-finance/config.js | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a839b81b1c..c4a13c6d18 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1335,6 +1335,10 @@ "mantle": { "WMNT": "0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8", "WETH": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111", - "USDT": "0x201eba5cc46d216ce6dc03f6a759e8e766e956ae" + "USDT": "0x201eba5cc46d216ce6dc03f6a759e8e766e956ae", + "USDC": "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9" + }, + "linea": { + "WETH": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f" } } diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index c04f4108f1..d344a09f57 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -165,5 +165,23 @@ module.exports = { '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, + { + name: 'mantle', + tokens: [ + ADDRESSES.mantle.USDC, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, + { + name: 'linea', + tokens: [ + ADDRESSES.linea.WETH, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From 204f5019a94ef34d30d14cb0cb7df6e919b2c9f1 Mon Sep 17 00:00:00 2001 From: barbat0x Date: Wed, 19 Jul 2023 16:01:34 +0200 Subject: [PATCH 1215/1354] add Antfarm finance DAO treasury --- projects/treasury/antfarm_finance.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/treasury/antfarm_finance.js diff --git a/projects/treasury/antfarm_finance.js b/projects/treasury/antfarm_finance.js new file mode 100644 index 0000000000..451b4119fe --- /dev/null +++ b/projects/treasury/antfarm_finance.js @@ -0,0 +1,13 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const daoTreasury = "0x529C78Ee582e4293a20Ab60c848506eADd8723D8"; +const ATF = "0x518b63Da813D46556FEa041A88b52e3CAa8C16a8"; +const AGT = "0x0BF43350076F95e0d16120b4D6bdfA1C9D50BDBD"; + +module.exports = treasuryExports({ + ethereum: { + tokens: [nullAddress, ATF, AGT], + owners: [daoTreasury], + ownTokens: [ATF, AGT], + }, +}); From 43a1d312aacbf7864382a318ace9741899a73296 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:18:50 +0200 Subject: [PATCH 1216/1354] fix bitgert issue --- package-lock.json | 12 ++++++------ projects/helper/env.js | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47af3ebb4b..95a6310852 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.38", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.38.tgz", - "integrity": "sha512-eZUQwJqR5VNR0BgSL2Z/kmjf7VBd+Ggazs5KSbfDM4xcUm3pyEHcnkia6VlSikyzMk2OsbuKIrJGX47Ys/EZkA==", + "version": "4.0.40", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.40.tgz", + "integrity": "sha512-HlAR2LjWINdTkn2mg9hTTFgWoCnmY2Z5tTjZG4urMwJO1OA/BbBqzv7Cz9oSLnlgNUOalAp1oQNDeS0/abSKPg==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.38", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.38.tgz", - "integrity": "sha512-eZUQwJqR5VNR0BgSL2Z/kmjf7VBd+Ggazs5KSbfDM4xcUm3pyEHcnkia6VlSikyzMk2OsbuKIrJGX47Ys/EZkA==", + "version": "4.0.40", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.40.tgz", + "integrity": "sha512-HlAR2LjWINdTkn2mg9hTTFgWoCnmY2Z5tTjZG4urMwJO1OA/BbBqzv7Cz9oSLnlgNUOalAp1oQNDeS0/abSKPg==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/helper/env.js b/projects/helper/env.js index 9b13bdebfa..e51ee55fad 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -9,6 +9,7 @@ const DEFAULTS = { APTOS_RPC: 'https://aptos-mainnet.pontem.network', SUI_RPC: 'https://fullnode.mainnet.sui.io/', MULTIVERSX_RPC: 'https://api.multiversx.com', + BITGERT_RPC: 'https://rpc.icecreamswap.com', LINEA_RPC: 'https://linea.rpc.thirdweb.com', } From 0ba516933f15995d8fa2d987d9ef1ee3ecab794b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:23:53 +0200 Subject: [PATCH 1217/1354] revert change --- projects/helper/env.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/env.js b/projects/helper/env.js index e51ee55fad..9b13bdebfa 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -9,7 +9,6 @@ const DEFAULTS = { APTOS_RPC: 'https://aptos-mainnet.pontem.network', SUI_RPC: 'https://fullnode.mainnet.sui.io/', MULTIVERSX_RPC: 'https://api.multiversx.com', - BITGERT_RPC: 'https://rpc.icecreamswap.com', LINEA_RPC: 'https://linea.rpc.thirdweb.com', } From 0c6468e7144b807fe191dc5c6a16fd319eff8459 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:40:28 +0200 Subject: [PATCH 1218/1354] pancakeswap: track linea --- projects/pancake-swap/index.js | 7 +++++-- projects/pancakeswap-v3/index.js | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/pancake-swap/index.js b/projects/pancake-swap/index.js index 1ce33bfabd..86432fa075 100644 --- a/projects/pancake-swap/index.js +++ b/projects/pancake-swap/index.js @@ -80,10 +80,13 @@ module.exports = { }, ethereum: { staking: stakings(["0x556B9306565093C855AEA9AE92A594704c2Cd59e"], "0x152649ea73beab28c5b49b26eb48f7ead6d4c898", "ethereum"), - tvl: getUniTVL({ chain: 'ethereum', factory: '0x1097053Fd2ea711dad45caCcc45EfF7548fCB362', useDefaultCoreAssets: true, }) + tvl: getUniTVL({ factory: '0x1097053Fd2ea711dad45caCcc45EfF7548fCB362', useDefaultCoreAssets: true, }) }, polygon_zkevm: { - tvl: getUniTVL({ chain: 'polygon_zkevm', factory: '0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E', useDefaultCoreAssets: true, }) + tvl: getUniTVL({ factory: '0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E', useDefaultCoreAssets: true, }) + }, + linea: { + tvl: getUniTVL({ factory: '0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E', useDefaultCoreAssets: true, }) }, aptos: dexExport({ account: '0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa', diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index 91906c7488..b266175edf 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -11,4 +11,5 @@ module.exports = uniV3Export({ ] }, ethereum: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 16950685, }, polygon_zkevm: { factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865', fromBlock: 750148, }, + linea: { factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865', fromBlock: 1444, }, }) From 8ff47659d731070f4e68d062629c96492e1fc5da Mon Sep 17 00:00:00 2001 From: SwirlLend <139681025+SwirlLend@users.noreply.github.com> Date: Thu, 20 Jul 2023 02:29:51 +0800 Subject: [PATCH 1219/1354] Add Swirllend on Linea (#6854) * Add Swirllend on Linea * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lineabank/index.js | 1 + projects/swirllend/index.js | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 projects/swirllend/index.js diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js index 07b1a9be0e..90636a7dda 100644 --- a/projects/lineabank/index.js +++ b/projects/lineabank/index.js @@ -3,6 +3,7 @@ const { compoundExports2 } = require("../helper/compound"); module.exports = { linea: compoundExports2({ comptroller: "0x009a0b7C38B542208936F1179151CD08E2943833", + fetchBalances: true, abis: { getAllMarkets: "address[]:allMarkets", totalBorrows: "uint256:totalBorrow", diff --git a/projects/swirllend/index.js b/projects/swirllend/index.js new file mode 100644 index 0000000000..bb0102d318 --- /dev/null +++ b/projects/swirllend/index.js @@ -0,0 +1,9 @@ +const { compoundExports2 } = require("../helper/compound"); + +module.exports = { + linea: compoundExports2({ + comptroller: "0xcAABf6Ffb76634183254B0a4a3D5fb36180FdAE4", + fetchBalances: true, + cether: '0x91067b912f89dfca50c3f5529dbeb78b63c6a2e5', + }), +}; From 39ae030e55a8e906a01e27ea8ed1ef1888a2e07a Mon Sep 17 00:00:00 2001 From: kev1n-peters <96065607+kev1n-peters@users.noreply.github.com> Date: Wed, 19 Jul 2023 13:30:16 -0500 Subject: [PATCH 1220/1354] Updated wormhole.js (#6855) --- projects/wormhole.js | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/projects/wormhole.js b/projects/wormhole.js index dec8e7aee4..803081be60 100644 --- a/projects/wormhole.js +++ b/projects/wormhole.js @@ -1,6 +1,6 @@ const { get } = require('./helper/http') const BigNumber = require("bignumber.js"); -const url = 'https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet-notionaltvl' +const url = 'https://europe-west3-wormhole-message-db-mainnet.cloudfunctions.net/tvl' let _response function fetch(chainId) { @@ -25,9 +25,6 @@ module.exports = { ethereum: { fetch: fetch("2") }, - aptos: { - fetch: fetch("22") - }, terra: { fetch: fetch("3") }, @@ -56,7 +53,7 @@ module.exports = { fetch: fetch("11") }, acala: { - fetch: fetch("12") + fetch: fetch("12") }, klaytn: { fetch: fetch("13") @@ -73,9 +70,30 @@ module.exports = { terra2: { fetch: fetch("18") }, + injective: { + fetch: fetch("19") + }, + sui: { + fetch: fetch("21") + }, + aptos: { + fetch: fetch("22") + }, + arbitrum: { + fetch: fetch("23") + }, + optimism: { + fetch: fetch("24") + }, + xpla: { + fetch: fetch("28") + }, + base: { + fetch: fetch("30") + }, fetch: fetch("*"), - hallmarks:[ + hallmarks: [ [1652008803, "UST depeg"], - [Math.floor(new Date('2022-02-02')/1e3), 'Hacked: Signature Exploit'], + [Math.floor(new Date('2022-02-02') / 1e3), 'Hacked: Signature Exploit'], ], } From 14e9ab393a5c298591e279946830442a82c6a2d6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:00:57 +0200 Subject: [PATCH 1221/1354] track mantleswap.org --- projects/mantleswap/index.js | 30 ++++++++++++++++++++++++++++++ projects/timeswap-v2/index.js | 1 - 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 projects/mantleswap/index.js diff --git a/projects/mantleswap/index.js b/projects/mantleswap/index.js new file mode 100644 index 0000000000..587f2f200a --- /dev/null +++ b/projects/mantleswap/index.js @@ -0,0 +1,30 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { transformDexBalances } = require('../helper/portedTokens') + + +module.exports = { + misrepresentedTokens: true, + mantle: { + tvl + } +} + +async function tvl(_, _b, _cb, { api, }) { + const logs = await getLogs({ + api, + target: '0x5c84e5d27fc7575D002fe98c5A1791Ac3ce6fD2f', + topics: ['0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9'], + eventAbi: 'event PairCreated(address indexed token0, address indexed token1, address pair, uint256 )', + onlyArgs: true, + fromBlock: 5964, + }) + const tok0Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: logs.map(i => ({ target: i.token0, params: i.pair}))}) + const tok1Bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: logs.map(i => ({ target: i.token1, params: i.pair}))}) + return transformDexBalances({ chain: api.chain, data: logs.map((log, i) => ({ + token0: log.token0, + token0Bal: tok0Bals[i], + token1: log.token1, + token1Bal: tok1Bals[i], + }))}) + +} \ No newline at end of file diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index ba1328dcc7..3ec474d73d 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -12,7 +12,6 @@ async function tvl(_, _b, _cb, { api }) { ], fromBlock, }); - const block = await api.getBlock(); let ownerTokens = logs.map((i) => { return [ From 99c980626838a44d76a87eaf115a085670e3ee68 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:18:05 +0200 Subject: [PATCH 1222/1354] syncswap: track linea --- projects/syncswap/index.js | 40 ++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/projects/syncswap/index.js b/projects/syncswap/index.js index 214956024e..8b76cdcb78 100644 --- a/projects/syncswap/index.js +++ b/projects/syncswap/index.js @@ -1,22 +1,11 @@ const { getLogs } = require('../helper/cache/getLogs') const { transformDexBalances } = require('../helper/portedTokens') const sdk = require('@defillama/sdk') -const vault = '0x621425a1Ef6abE91058E9712575dcc4258F8d091' - -async function getFactoryLogs(api, factory) { - return getLogs({ - api, - target: factory, - fromBlock: 9775, - topic: 'PoolCreated(address,address,address)', - eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, address pool)', - onlyArgs: true, - }) -} async function tvl(timestamp, ethBlock, chainBlocks, { api }) { - const stableLogs = await getFactoryLogs(api, '0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3') - const classicLogs = await getFactoryLogs(api, '0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb') + const { fromBlock, stableFactory, classicFactory, } = config[api.chain] + const stableLogs = await getFactoryLogs(api, stableFactory) + const classicLogs = await getFactoryLogs(api, classicFactory) const balances = {} const data = [] const stableReserves = await api.multiCall({ abi: 'function getReserves() external view returns (uint, uint)', calls: stableLogs.map(i => i.pool) }) @@ -28,10 +17,27 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) { classicReserves.forEach(([token0Bal, token1Bal], i) => { data.push({ token0Bal, token1Bal, token0: classicLogs[i].token0, token1: classicLogs[i].token1, }) }) - return transformDexBalances({ balances, data, chain: 'era' }) + return transformDexBalances({ balances, data, chain: api.chain }) + + async function getFactoryLogs(api, factory) { + return getLogs({ + api, + target: factory, + fromBlock, + topic: 'PoolCreated(address,address,address)', + eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, address pool)', + onlyArgs: true, + }) + } +} + +const config = { + era: { fromBlock: 9775, stableFactory: '0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3', classicFactory: '0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb', }, + linea: { fromBlock: 716, stableFactory: '0xE4CF807E351b56720B17A59094179e7Ed9dD3727', classicFactory: '0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d', }, } module.exports = { misrepresentedTokens: true, - era: { tvl, } -} \ No newline at end of file +} + +Object.keys(config).forEach(chain => { module.exports[chain] = { tvl } }) From 1079814b6735e012988799da251eb50bdc86716a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:27:51 +0200 Subject: [PATCH 1223/1354] track https://app.horizondex.io/pool/ --- projects/horizondex/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/horizondex/index.js diff --git a/projects/horizondex/index.js b/projects/horizondex/index.js new file mode 100644 index 0000000000..1b26ea1d43 --- /dev/null +++ b/projects/horizondex/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + linea: { + factory: "0x9Fe607e5dCd0Ea318dBB4D8a7B04fa553d6cB2c5", + fromBlock: 1150, + }, +}); \ No newline at end of file From 72811e183128a3e3c34dc8f889833f569fcb0913 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:34:12 +0200 Subject: [PATCH 1224/1354] leetswap: track linea --- projects/leetswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/leetswap/index.js b/projects/leetswap/index.js index 3eecf3a37a..9a89cb1dcd 100644 --- a/projects/leetswap/index.js +++ b/projects/leetswap/index.js @@ -4,4 +4,5 @@ module.exports = { misrepresentedTokens: true, polygon_zkevm: { tvl: getUniTVL({ factory: '0xcE87E0960f4e2702f4bFFE277655E993Ae720e84', useDefaultCoreAssets: true, }), }, canto: { tvl: getUniTVL({ factory: '0x116e8a41E8B0A5A87058AF110C0Ddd55a0ed82B7', useDefaultCoreAssets: true, }), }, + linea: { tvl: getUniTVL({ factory: '0x4DDf0fa98B5f9Bd7Cb0645c25bA89A574fe9Be8c', useDefaultCoreAssets: true, }), }, } From 2674751a1d7b8eadec62f3c0162fd69ca8aa43d5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:50:11 +0200 Subject: [PATCH 1225/1354] track https://www.echodex.io --- projects/echodex/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/echodex/index.js diff --git a/projects/echodex/index.js b/projects/echodex/index.js new file mode 100644 index 0000000000..47eec9b7c3 --- /dev/null +++ b/projects/echodex/index.js @@ -0,0 +1,6 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + linea: { tvl: getUniTVL({ factory: '0x6D1063F2187442Cc9adbFAD2f55A96B846FCB399', useDefaultCoreAssets: true, fetchBalances: true }), }, +} From 11ba5066a1d6e7ed4170beb51a2ef806bb1ee0c1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 19 Jul 2023 22:21:13 +0200 Subject: [PATCH 1226/1354] track icpswap.com --- projects/icpswap/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/icpswap/index.js diff --git a/projects/icpswap/index.js b/projects/icpswap/index.js new file mode 100644 index 0000000000..245162d3f0 --- /dev/null +++ b/projects/icpswap/index.js @@ -0,0 +1,27 @@ + +const { get } = require('../helper/http') +const { toUSDTBalances } = require('../helper/balances') +const { PromisePool } = require('@supercharge/promise-pool') + +module.exports = { + misrepresentedTokens: true, + icp: { tvl }, +} + +async function tvl() { + let tvl = 0 + const pairs = await get('https://uvevg-iyaaa-aaaak-ac27q-cai.raw.ic0.app/pairs') + + const { errors } = await PromisePool.withConcurrency(15) + .for(pairs) + .process(async ({ pool_id }) => { + const res = await get(`https://uvevg-iyaaa-aaaak-ac27q-cai.raw.ic0.app/pool_tvl?poolId=${pool_id}&limit=1`) + if (res.length > 0) + tvl += +res[0].tvlUSD + }) + + if (errors && errors.length) + throw errors[0] + + return toUSDTBalances(tvl) +} From 9f0be9baa4ebdbb95d0893e542c513c3553f9b76 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 20 Jul 2023 07:10:16 +0100 Subject: [PATCH 1227/1354] set borrowed to 0 --- projects/agora/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/agora/index.js b/projects/agora/index.js index 79f5f2d85b..540a04f77c 100644 --- a/projects/agora/index.js +++ b/projects/agora/index.js @@ -61,6 +61,6 @@ module.exports = { methodology: `As in Compound Finance, TVL counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are counted as "Borrowed" TVL and can be toggled towards the regular TVL.`, metis: { tvl: sdk.util.sumChainTvls([chainTvl, agoraTvl, agoraPlusTvl, agoraFarmTvl, agoraStakeTvl]), - borrowed: sdk.util.sumChainTvls([agoraBorrowed, agoraPlusBorrowed, agoraFarmBorrowed, agoraStakeBorrowed]), + borrowed: ()=>({}), }, }; From 1585fc4ba6baaf02f74caa5f479125f4ecbbfea5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 09:10:22 +0200 Subject: [PATCH 1228/1354] cryptex: remove treasury --- projects/cryptex-finance/index.js | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/projects/cryptex-finance/index.js b/projects/cryptex-finance/index.js index ee8c6bf88c..d427f3d248 100755 --- a/projects/cryptex-finance/index.js +++ b/projects/cryptex-finance/index.js @@ -1,6 +1,5 @@ const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const { sumTokensSharedOwners, sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require('../helper/staking') @@ -61,40 +60,18 @@ async function optTvl(timestamp, block, chainBlocks) { return balances; } -const treasuryAddress = "0xa54074b2cc0e96a43048d4a68472F7F046aC0DA8"; -const treasuryContents = [ - ADDRESSES.ethereum.USDC -] -const optTreasury = "0x271901c3268D0959bbc9543DE4f073D3708C88F7"; - -async function treasury(timestamp, block) { - let balances = {}; - const ethBal = (await sdk.api.eth.getBalance({ - target: treasuryAddress, - block, - })).output; - sdk.util.sumSingleBalance(balances, ADDRESSES.ethereum.WETH, ethBal); - await sumTokensSharedOwners(balances, treasuryContents, [treasuryAddress], block); - return balances; -} - - module.exports = { methodology: "TVL includes collateral in vaults", ethereum: { tvl: ethTvl, pool2: staking(ethStakingContracts, ethPool2s), staking: staking_, - treasury }, optimism: { tvl: optTvl } }; - - - async function staking_(_, _b, _cb, { api, }) { const logs = await getLogs({ api, From 0761831b4b4b52d59cac934198fcf352455ba099 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 09:14:20 +0200 Subject: [PATCH 1229/1354] cryptex: refactor --- projects/cryptex-finance/index.js | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/projects/cryptex-finance/index.js b/projects/cryptex-finance/index.js index d427f3d248..6b64a2ac24 100755 --- a/projects/cryptex-finance/index.js +++ b/projects/cryptex-finance/index.js @@ -1,7 +1,8 @@ const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensSharedOwners, sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokens2, sumTokensExport, } = require("../helper/unwrapLPs"); const { staking } = require('../helper/staking') +const { pool2 } = require('../helper/pool2') const ctxToken = "0x321c2fe4446c7c963dc41dd58879af648838f98d"; const factory = "0x70236b36f86AB4bd557Fe9934E1246537B472918"; @@ -48,27 +49,15 @@ const optCollaterals = [ "0x6fd9d7AD17242c41f7131d257212c54A0e816691" // UNI ] -async function ethTvl(timestamp, block) { - let balances = {}; - await sumTokensSharedOwners(balances, ethCollaterals, ethVaults, block); - return balances; -} - -async function optTvl(timestamp, block, chainBlocks) { - let balances = {}; - await sumTokensSharedOwners(balances, optCollaterals, optVaults, chainBlocks.optimism, "optimism"); - return balances; -} - module.exports = { methodology: "TVL includes collateral in vaults", ethereum: { - tvl: ethTvl, - pool2: staking(ethStakingContracts, ethPool2s), + tvl: sumTokensExport({ tokens: ethCollaterals, owners: ethVaults,}), + pool2: pool2(ethStakingContracts, ethPool2s), staking: staking_, }, optimism: { - tvl: optTvl + tvl: sumTokensExport({ tokens: optCollaterals, owners: optVaults,}) } }; From be4eb9cab164817b6776212bb26268ea9e4d6554 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 12:33:49 +0200 Subject: [PATCH 1230/1354] fix broken adapters --- projects/atlantisloans/index.js | 13 ++++++++----- projects/xWeowns/index.js | 3 +-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js index e1d5b18169..59bdac93ff 100644 --- a/projects/atlantisloans/index.js +++ b/projects/atlantisloans/index.js @@ -28,11 +28,14 @@ module.exports = { // ), tvl: async () => ({}), }, - polygon: compoundExports(polygonComptroller, - "polygon", - "0xa65722af4957cef481edb4cb255f804dd36e8adc", - ADDRESSES.polygon.WMATIC_2 - ), + // polygon: compoundExports(polygonComptroller, + // "polygon", + // "0xa65722af4957cef481edb4cb255f804dd36e8adc", + // ADDRESSES.polygon.WMATIC_2 + // ), + polygon: { + tvl: async () => ({}), + }, avax: compoundExports(avaxComptroller, "avax", "0x6bd2154fbc086cb43411966e0e72584196ccd065", diff --git a/projects/xWeowns/index.js b/projects/xWeowns/index.js index f65baa5499..a1a4736db2 100644 --- a/projects/xWeowns/index.js +++ b/projects/xWeowns/index.js @@ -21,8 +21,7 @@ async function tvl(timestamp, block, chainBlocks) { } module.exports = { - doublecounted: false, lachain: { - tvl + tvl: () => 0, } }; \ No newline at end of file From 306d0cf0c33c3554d56a479dc1366d8296bfe2a8 Mon Sep 17 00:00:00 2001 From: box25 Date: Thu, 20 Jul 2023 13:14:47 +0200 Subject: [PATCH 1231/1354] added Telos to IceCreamSwap (#6863) * added Telos to IceCreamSwap * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 3 +++ projects/icecreamswap/index.js | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7da1b881fe..7f42e5e9bc 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -48,6 +48,9 @@ const fixBalancesTokens = { ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, + telos: { + '0xdc2393dc10734bf153153038943a5deb42b209cd': { coingeckoId: "telos", decimals: 18 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/icecreamswap/index.js b/projects/icecreamswap/index.js index 21d724c552..17f13c17f2 100644 --- a/projects/icecreamswap/index.js +++ b/projects/icecreamswap/index.js @@ -32,4 +32,10 @@ module.exports = { useDefaultCoreAssets: true, }) }, + telos: { + tvl: getUniTVL({ + factory: '0x9E6d21E759A7A288b80eef94E4737D313D31c13f', + useDefaultCoreAssets: true, + }) + }, }; From 1231a34251b51c4095ac0431e7f1530eed9830dd Mon Sep 17 00:00:00 2001 From: Coco <120009255+Coaetlicanth@users.noreply.github.com> Date: Thu, 20 Jul 2023 19:15:59 +0800 Subject: [PATCH 1232/1354] add narwhal.finance trading vault tvl (#6862) --- projects/narwhal-finance/index.js | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 projects/narwhal-finance/index.js diff --git a/projects/narwhal-finance/index.js b/projects/narwhal-finance/index.js new file mode 100644 index 0000000000..5bd8982721 --- /dev/null +++ b/projects/narwhal-finance/index.js @@ -0,0 +1,46 @@ +const coreAssets = require('../helper/coreAssets.json'); +const { sumTokens2 } = require('../helper/unwrapLPs'); + +const tokens = { + arbitrum: { + USDT: coreAssets.arbitrum.USDT, + }, + bsc: { + USDT: coreAssets.bsc.USDT, + }, +}; + +const narwhal = { + arbitrum: { + NarwhalTradingVault: '0x14559479DC1041Ef6565f44028D454F423d2b9E6', + }, + bsc: { + NarwhalTradingVault: '0x71AF984f825C7BEf79cAEE5De14565ca8A29Fe93', + }, +}; + +async function arbTvl() { + const tokensAndOwners = [ + [tokens.arbitrum.USDT, narwhal.arbitrum.NarwhalTradingVault], + ]; + return sumTokens2({ chain: "arbitrum", tokensAndOwners }); +} + +async function bscTvl() { + const tokensAndOwners = [ + [tokens.bsc.USDT, narwhal.bsc.NarwhalTradingVault], + ]; + return sumTokens2({ chain: "bsc", tokensAndOwners }); +} + +module.exports = { + hallmarks: [ + [1689034511, "Launch on Arbitrum & BSC"], + ], + arbitrum: { + tvl: arbTvl, + }, + bsc: { + tvl: bscTvl, + }, +}; From 84626716a9e48907f10ffa68a8b862510f0637e5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 13:18:35 +0200 Subject: [PATCH 1233/1354] code refactor --- projects/narwhal-finance/index.js | 53 ++++++++----------------------- 1 file changed, 13 insertions(+), 40 deletions(-) diff --git a/projects/narwhal-finance/index.js b/projects/narwhal-finance/index.js index 5bd8982721..20365454b9 100644 --- a/projects/narwhal-finance/index.js +++ b/projects/narwhal-finance/index.js @@ -1,46 +1,19 @@ -const coreAssets = require('../helper/coreAssets.json'); -const { sumTokens2 } = require('../helper/unwrapLPs'); - -const tokens = { - arbitrum: { - USDT: coreAssets.arbitrum.USDT, - }, - bsc: { - USDT: coreAssets.bsc.USDT, - }, -}; - -const narwhal = { - arbitrum: { - NarwhalTradingVault: '0x14559479DC1041Ef6565f44028D454F423d2b9E6', - }, - bsc: { - NarwhalTradingVault: '0x71AF984f825C7BEf79cAEE5De14565ca8A29Fe93', - }, -}; - -async function arbTvl() { - const tokensAndOwners = [ - [tokens.arbitrum.USDT, narwhal.arbitrum.NarwhalTradingVault], - ]; - return sumTokens2({ chain: "arbitrum", tokensAndOwners }); -} - -async function bscTvl() { - const tokensAndOwners = [ - [tokens.bsc.USDT, narwhal.bsc.NarwhalTradingVault], - ]; - return sumTokens2({ chain: "bsc", tokensAndOwners }); -} +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json'); module.exports = { hallmarks: [ [1689034511, "Launch on Arbitrum & BSC"], ], - arbitrum: { - tvl: arbTvl, - }, - bsc: { - tvl: bscTvl, - }, }; + +const config = { + bsc: { owner: '0x71AF984f825C7BEf79cAEE5De14565ca8A29Fe93', tokens: [ADDRESSES.bsc.USDT,]}, + arbitrum: { owner: '0x14559479DC1041Ef6565f44028D454F423d2b9E6', tokens: [ADDRESSES.arbitrum.USDT,]}, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: sumTokensExport(config[chain]) + } +}) From 9ba84817a8db3a39a74c9f79ac609afd6efacbb2 Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Thu, 20 Jul 2023 19:19:07 +0800 Subject: [PATCH 1234/1354] add linea config on izumi-iziswap (#6861) --- projects/izumi-iziswap/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 90a5de8fd4..538de53bfd 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -20,7 +20,8 @@ const poolHelpers = { 'mantle': ['0x611575eE1fbd4F7915D0eABCC518eD396fF78F0c'], 'ethereum': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], 'ontology_evm': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], - 'ultron' : ['0xcA7e21764CD8f7c1Ec40e651E25Da68AeD096037'] + 'ultron' : ['0xcA7e21764CD8f7c1Ec40e651E25Da68AeD096037'], + 'linea': ['0x1CB60033F61e4fc171c963f0d2d3F63Ece24319c'], } const blacklistedTokens = [ From 42145038a13813e08a46718ada226aaa75ad856a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 15:51:35 +0200 Subject: [PATCH 1235/1354] track https://aftermath.finance --- projects/aftermath-fi/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/aftermath-fi/index.js diff --git a/projects/aftermath-fi/index.js b/projects/aftermath-fi/index.js new file mode 100644 index 0000000000..e2b4bbb4dc --- /dev/null +++ b/projects/aftermath-fi/index.js @@ -0,0 +1,23 @@ +const sui = require("../helper/chain/sui"); + +const MAINNET_PROTOCOL_ID = + "0x0625dc2cd40aee3998a1d6620de8892964c15066e0a285d8b573910ed4c75d50"; + +async function tvl(_, _1, _2, { api }) { + const pools = await sui.queryEvents({ eventType: '0xefe170ec0be4d762196bedecd7a065816576198a6527c99282a2551aaa7da38c::events::CreatedPoolEvent', transform: i => i.pool_id}) + const poolData = await sui.getObjects(pools) + + for (const { fields: { type_names: tokens, normalized_balances: bals, decimal_scalars } } of poolData) { + bals.forEach((v, i) => { + if (/af_lp::AF_LP/.test(tokens[i])) return; + api.add('0x' + tokens[i], v / decimal_scalars[i]) + }) + } +} + +module.exports = { + timetravel: false, + sui: { + tvl, + }, +}; From ec5376097fd0849084392a46a65719a235dc962b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 19:39:14 +0530 Subject: [PATCH 1236/1354] Bella (#6866) * feat: Add Bella-LP-Farm tvl * code refactor --------- Co-authored-by: shjie047 --- projects/bella.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/projects/bella.js b/projects/bella.js index 7f5ee4b0d9..fb5e74d9e5 100644 --- a/projects/bella.js +++ b/projects/bella.js @@ -47,5 +47,22 @@ module.exports = { tvl, pool2, }, + era: { + pool2: async (_, _1, _2, { api }) => { + const pool2s = [ + '0x9FB6Ca27D20E569E5c8FeC359C9d33D468d2803C', + '0x3bd7a1D8c760d8be1bC57A3205cbFfBaDFB74D94' + ] + const infoABI = "function getMiningContractInfo() external view returns (address tokenX, address tokenY, uint24 fee_, address iziTokenAddr, uint256 lastTouchTime_, uint256 totalVLiquidity_, uint256 bal0, uint256 bal1, uint256 balIzi, uint256 startTime_, uint256 endTime_)" + + const data = await api.multiCall({ abi: infoABI, calls: pool2s }) + const transform = i => i.toLowerCase() === '0xb83cfb285fc8d936e8647fa9b1cc641dbaae92d9' ? 'ethereum:0xa91ac63d040deb1b7a5e4d4134ad23eb0ba07e14': 'era:'+i + for (const { tokenX, tokenY, iziTokenAddr, bal0, bal1, balIzi } of data) { + api.add(transform(tokenX), bal0, { skipChain: true}) + api.add(transform(tokenY), bal1, { skipChain: true}) + api.add(iziTokenAddr, balIzi) + } + }, + }, } From 70dcbd00df0ef146d1f543fe59265183fe5670d2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 17:33:52 +0200 Subject: [PATCH 1237/1354] track reax.one --- projects/reax-one-dex/index.js | 13 +++++++++++++ projects/reax-one-synth/index.js | 14 ++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 projects/reax-one-dex/index.js create mode 100644 projects/reax-one-synth/index.js diff --git a/projects/reax-one-dex/index.js b/projects/reax-one-dex/index.js new file mode 100644 index 0000000000..16bd3a0be4 --- /dev/null +++ b/projects/reax-one-dex/index.js @@ -0,0 +1,13 @@ +const { onChainTvl } = require('../helper/balancer') + +module.exports = { + mantle: { + tvl: onChainTvl('0x1AA7f1f5b51fe22478e683466232B5C8fc49407f', 10790, { + blacklistedTokens: [ + '0xf7dfe223e19701a514e78f3ce7ba98f2c5fbb5b2', + '0xa84bdecd44e6cee1c588a3c97fcc4482831fde05', + '0x62959ad021402f48d0d8067bc5c4c03f63fceaa4', + ] + }), + } +} diff --git a/projects/reax-one-synth/index.js b/projects/reax-one-synth/index.js new file mode 100644 index 0000000000..b2738990b2 --- /dev/null +++ b/projects/reax-one-synth/index.js @@ -0,0 +1,14 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + mantle: { + tvl: sumTokensExport({ + owner: '0x78B2fa94A94bF3E96fcF9CE965bed55bE49FA9E7', + tokens: [ + '0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111', + '0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE', + '0xCAbAE6f6Ea1ecaB08Ad02fE02ce9A44F09aebfA2', + ] + }), + } +} From f8959229cca440ca16efae89115fe4858b8d5d05 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 18:14:09 +0200 Subject: [PATCH 1238/1354] minor fix --- projects/helper/coreAssets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index c4a13c6d18..d382f539a7 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1216,7 +1216,8 @@ "USDT": "USDT" }, "elrond": { - "WEGLD": "WEGLD-bd4d79" + "WEGLD": "WEGLD-bd4d79", + "USDC": "USDC-c76f1f" }, "bitindi": { "WBNI": "0x15E162205421dc3A47b15A1A740FbF5EAbB77921" From 3bd09d4b8241d46648934b7b55d7b268d9c71537 Mon Sep 17 00:00:00 2001 From: Ryan Holloway <110117008+raho11@users.noreply.github.com> Date: Thu, 20 Jul 2023 11:38:22 -0500 Subject: [PATCH 1239/1354] Update index.js (#6867) Add 'OP Rewards Start' for OP Governance Fund rewards on PoolTogether cc: https://pooltogether.mirror.xyz/aq9EttzDCwZ5iXp4MSQtdszzdrjnnIMQgr_qrR8To3Q --- projects/pooltogether/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/pooltogether/index.js b/projects/pooltogether/index.js index fc879665c7..1392e6e813 100644 --- a/projects/pooltogether/index.js +++ b/projects/pooltogether/index.js @@ -147,6 +147,7 @@ module.exports = { }, hallmarks:[ [1658872800, "OP Rewards Start"], + [1669615200, "OP Rewards Start"], ], methodology: `TVL is the total quantity of tokens locked in PoolTogether pools on Ethereum, Polygon, Avalanche, Optimism, Celo, and BSC` } From ff299bc84abeb2da14b4243453421494261a44bf Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Thu, 20 Jul 2023 18:02:21 +0100 Subject: [PATCH 1240/1354] Add ATOM mare Pool (#6868) * New LPs 14/07 Scrub Invest * New Pool on Scrub Invest * add atom pool --------- Co-authored-by: theg --- projects/scrubinvest/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index 9ffe54bb09..b2eea9d54f 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -36,6 +36,7 @@ async function tvl(_, _b, _cb, { api, }) { ['0x0B6c2a9d4d739778dF6cD1cf815754BD1438063c', '0x3CcA2C0d433E00433082ba16e968CA11dA6Dc156'], ['0x2f9e61D4E9A9A3694CcDc287c790EA5cc3302E88', '0x1504B9EDdD57Ed8252b3b3b407DdE27B72A80790'], ['0x350c4A0aC240755Bb6432FeB907eCAFbbBc75770', '0xC05021F3b3601BF33aB59dc75577B85985ACaab7'], + ['0x8E00102d96b34BEF29F3E1e0e5DBd0a611Cac312', '0x6d81FcA3abD89Bd89D400281aE5f1Ee0D62Cd16f'], // also count base assets if available ['0xfA9343C3897324496A05fC75abeD6bAC29f8A40f', '0xcd017B495DF1dE2DC8069b274e2ddfBB78561176'], ['0xB44a9B6905aF7c801311e8F4E76932ee959c663C', '0x88555c4d8e53ffB223aB5baDe0B5e6B2Cd3966c4'], From f622b9d50aef2e2d552b91a33ba25de77b053802 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:14:24 +0200 Subject: [PATCH 1241/1354] helio: update vaults --- projects/helio-money/index.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/projects/helio-money/index.js b/projects/helio-money/index.js index accb969050..2a5f63479f 100644 --- a/projects/helio-money/index.js +++ b/projects/helio-money/index.js @@ -8,9 +8,19 @@ module.exports = { //[1670544000,"aBNBc to AnkrBNB swap & HAY buyback"] ], bsc: { - tvl: sumTokensExport({ owner: '0x25b21472c073095bebC681001Cbf165f849eEe5E', tokens: [ - '0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827', // ankrBNB - ADDRESSES.null, - ] }), + tvl: + sumTokensExport({ + tokensAndOwners: [ + //ankrBNB + ['0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827', '0x25b21472c073095bebC681001Cbf165f849eEe5E'], + [ADDRESSES.null, '0x25b21472c073095bebC681001Cbf165f849eEe5E'], + //stkBNB + ['0xc2E9d07F66A89c44062459A47a0D2Dc038E4fb16', '0x98CB81d921B8F5020983A46e96595471Ad4E60Be'], + //snBNB + ['0xB0b84D294e0C75A6abe60171b70edEb2EFd14A1B', '0x6F28FeC449dbd2056b76ac666350Af8773E03873'], + //BNBx + ['0x1bdd3Cf7F79cfB8EdbB955f20ad99211551BA275', '0x6ae7073d801a74eE753F19323DF320C8F5Fe2DbC'] + ] + }) } } From 4c2897539b8b8b677188348dc64d00045bf4f608 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 21 Jul 2023 01:09:12 +0530 Subject: [PATCH 1242/1354] Revert "Revert "Update index.js (#6843)" (#6848)" (#6849) This reverts commit f42b5e5aefa3f2c40eefa2ad3dfee0c5b54a02e7. --- projects/concordex-io/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/projects/concordex-io/index.js b/projects/concordex-io/index.js index 7ae0fc91ee..39ab729a2a 100644 --- a/projects/concordex-io/index.js +++ b/projects/concordex-io/index.js @@ -1,11 +1,10 @@ -const { post, get } = require('../helper/http') +const { post } = require('../helper/http') async function tvl(_, _b, _cb, { api, }) { const body = {"jsonrpc":"2.0","method":"liquidity_pools_list","params":{"filter":{"sort":"EFFECTIVE_TVL","page":1,"is_desc":true,"search":"","limit":999}},"id":0} const { result: { pools }} = await post('https://cdex-liquidity-pool.concordex.io/v1/rpc', body) - const { rates } = await get('https://open.er-api.com/v6/latest/EUR'); return { - tether: pools.reduce((acc, i) => acc + +i.tvl, 0) * rates['USD'] + tether: pools.reduce((acc, i) => acc + +i.tvl, 0) } } @@ -13,4 +12,4 @@ module.exports = { misrepresentedTokens: true, timetravel: false, concordium: { tvl }, -} \ No newline at end of file +} From ea2315b9fea1e1022862673e5cd23d54ee6d2d22 Mon Sep 17 00:00:00 2001 From: Zilch Capital <137987236+ZilchCapital@users.noreply.github.com> Date: Fri, 21 Jul 2023 05:27:54 +0800 Subject: [PATCH 1243/1354] Add Zilch Capital on zkSync (#6847) * Add Zilch Capital on zkSync * refactor code --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zilch/abi.js | 90 +++++++++++++++++++++++++++++++++++++++++ projects/zilch/index.js | 22 ++++++++++ 2 files changed, 112 insertions(+) create mode 100644 projects/zilch/abi.js create mode 100644 projects/zilch/index.js diff --git a/projects/zilch/abi.js b/projects/zilch/abi.js new file mode 100644 index 0000000000..2f98db614d --- /dev/null +++ b/projects/zilch/abi.js @@ -0,0 +1,90 @@ +module.exports = { + poolLength: { + "inputs": [], + "name": "poolLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + poolInfo: { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poolInfo", + "outputs": [ + { + "internalType": "contract IAsset", + "name": "lpToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseAllocPoint", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accZilchPerShare", + "type": "uint256" + }, + { + "internalType": "contract IRewarder", + "name": "rewarder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "sumOfFactors", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accZilchPerFactorShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "adjustedAllocPoint", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, + underlyingToken: { + "inputs": [], + "name": "underlyingToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, +} \ No newline at end of file diff --git a/projects/zilch/index.js b/projects/zilch/index.js new file mode 100644 index 0000000000..8a8e5e957c --- /dev/null +++ b/projects/zilch/index.js @@ -0,0 +1,22 @@ +const abi = require('./abi') +const { sumTokens2 } = require('../helper/unwrapLPs') +const farm = "0xa65D04f79633BeBdC4Dd785498269e8ABD6A1476" + +async function tvl(_, _b, _cb, { api }) { + const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: farm }) + let pools = poolInfos.map(i => i.lpToken) + const stakingPools = pools.slice(0, 3) + pools = pools.slice(3) + const stakingTokens = await api.multiCall({ abi: abi.underlyingToken, calls: stakingPools }) + const tokens = await api.multiCall({ abi: 'address:want', calls: pools }) + const bals = await api.multiCall({ abi: 'uint256:balanceOf', calls: pools }) + api.addTokens(tokens, bals) + return sumTokens2({ api, tokensAndOwners2: [stakingTokens, stakingPools] }) +} + +module.exports = { + era: { + tvl, + } +} + From 5e5289eea1f7423b3141d10321bf6d80b5f1fdb8 Mon Sep 17 00:00:00 2001 From: LPX Date: Fri, 21 Jul 2023 06:31:59 +0900 Subject: [PATCH 1244/1354] add(revert-evmos) (#6872) --- projects/helper/coreAssets.json | 2 +- projects/helper/unwrapLPs.js | 1 + projects/revert-v3-staker/index.js | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index d382f539a7..185647d0f8 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -257,7 +257,7 @@ "evmos": { "WEVMOS": "0xd4949664cd82660aae99bedc034a0dea8a0bd517", "STEVMOS": "0x2c68d1d6ab986ff4640b51e1f14c716a076e44c4", - "STATIM": "0xb5124fa2b2cf92b2d469b249433ba1c96bdf536d", + "STATOM": "0xb5124fa2b2cf92b2d469b249433ba1c96bdf536d", "ATOM": "0xc5e00d3b04563950941f7137b5afa3a534f0d6d6", "STRIDE": "0x8fa78ceb7f04118ec6d06aac37ca854691d8e963", "axlRETH": "0xe60ce2dfa6d4ad37ade1dcb7ac4d6c3a093b3a7e", diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index e862a01ad9..9437f3a08e 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -200,6 +200,7 @@ async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, c case 'optimism': case 'arbitrum': nftAddress = '0xC36442b4a4522E871399CD717aBDD847Ab11FE88'; break; case 'bsc': nftAddress = [PANCAKE_NFT_ADDRESS, '0x7b8a01b39d58278b5de7e48c8449c9f4f5170613']; break; + case 'evmos': nftAddress = '0x5fe5daaa011673289847da4f76d63246ddb2965d'; break; default: throw new Error('missing default uniswap nft address') } diff --git a/projects/revert-v3-staker/index.js b/projects/revert-v3-staker/index.js index ac1fca1137..9a0b4d58b5 100644 --- a/projects/revert-v3-staker/index.js +++ b/projects/revert-v3-staker/index.js @@ -3,6 +3,9 @@ const { unwrapUniswapV3NFTs } = require('../helper/unwrapLPs') const config = { polygon: { owners: ['0x8c696deF6Db3104DF72F7843730784460795659a'] + }, + evmos: { + owners: ['0x3eb0fffa1470cdd3725b9eb29aded2736144b078'] } } From f4f957d791ffcc4b2edddfe16c335b275d55ebed Mon Sep 17 00:00:00 2001 From: LaazyPotaato <97098805+LaazyPotaato@users.noreply.github.com> Date: Fri, 21 Jul 2023 03:03:08 +0530 Subject: [PATCH 1245/1354] Added crust-finance (#6871) --- projects/crust-finance/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/crust-finance/index.js diff --git a/projects/crust-finance/index.js b/projects/crust-finance/index.js new file mode 100644 index 0000000000..0436be8a00 --- /dev/null +++ b/projects/crust-finance/index.js @@ -0,0 +1,13 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + methodology: `Uses factory(0x62DbCa39067f99C9D788a253cB325c6BA50e51cE) address and whitelisted tokens address to find and price liquidity pool pairs`, + mantle: { + tvl: getUniTVL({ + factory: "0x62DbCa39067f99C9D788a253cB325c6BA50e51cE", + hasStablePools: true, + useDefaultCoreAssets: true, + }), + }, +}; From 60c681d5b912144db39bea68e3afa7c95c9d9167 Mon Sep 17 00:00:00 2001 From: "0x0.ai" <128368554+0x0ai@users.noreply.github.com> Date: Fri, 21 Jul 2023 05:40:52 +0800 Subject: [PATCH 1246/1354] Added 0x0dex tvl (#6870) * Added 0x0dex tvl * refactor code --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/0x0dex/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/0x0dex/index.js diff --git a/projects/0x0dex/index.js b/projects/0x0dex/index.js new file mode 100644 index 0000000000..54d77d54b0 --- /dev/null +++ b/projects/0x0dex/index.js @@ -0,0 +1,7 @@ +const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs'); +const ETH_POOL_ADDRESS = "0x3d18AD735f949fEbD59BBfcB5864ee0157607616"; + +module.exports = { + start: 1685386800, // 19/05/2023 @ 07:00pm UTC + ethereum: { tvl: sumTokensExport({ owner: ETH_POOL_ADDRESS, tokens: [nullAddress]}) }, +}; \ No newline at end of file From 595f01d8a2886c6d57421b56010e4b2d19c3c42c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 21 Jul 2023 09:01:29 +0200 Subject: [PATCH 1247/1354] track https://agni.finance --- projects/agni-fi/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/agni-fi/index.js diff --git a/projects/agni-fi/index.js b/projects/agni-fi/index.js new file mode 100644 index 0000000000..87d0a8982e --- /dev/null +++ b/projects/agni-fi/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + mantle: { factory: "0xae411e11D9fA2773CEaC200cC2C73F17324Fc93B", fromBlock: 35714, }, +}); \ No newline at end of file From 86d4ac33a5561e2e479287c1c3a9890fce693ea2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 21 Jul 2023 12:52:03 +0530 Subject: [PATCH 1248/1354] Smardex (#6876) * feat(smardex): update multichain tvl * code refactor --------- Co-authored-by: Esteban --- projects/SmarDex/index.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/projects/SmarDex/index.js b/projects/SmarDex/index.js index b357f3895f..e7b845dd07 100644 --- a/projects/SmarDex/index.js +++ b/projects/SmarDex/index.js @@ -1,9 +1,18 @@ -const { getUniTVL, } = require('../helper/unknownTokens'); -const { staking } = require('../helper/staking') +const { getUniTVL } = require("../helper/unknownTokens"); +const { stakings } = require("../helper/staking"); -module.exports = { - ethereum: { - tvl: getUniTVL({ factory: '0x7753F36E711B66a0350a753aba9F5651BAE76A1D', abis: { getReserves: 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)'} }), - staking: staking('0xB940D63c2deD1184BbdE059AcC7fEE93654F02bf', '0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef') - }, +const config = { + ethereum: '0x7753F36E711B66a0350a753aba9F5651BAE76A1D', + bsc: '0xA8EF6FEa013034E62E2C4A9Ec1CDb059fE23Af33', + polygon: '0x9A1e1681f6D59Ca051776410465AfAda6384398f', + arbitrum: '0x41A00e3FbE7F479A99bA6822704d9c5dEB611F22', } + +Object.keys(config).forEach(chain => { + const factory = config[chain] + module.exports[chain] = { + tvl: getUniTVL({ factory, fetchBalances: true, }) + } +}) + +module.exports.ethereum.staking = stakings(["0xB940D63c2deD1184BbdE059AcC7fEE93654F02bf", "0x80497049b005Fd236591c3CD431DBD6E06eB1A31",], "0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef") \ No newline at end of file From b93d4622c029de13a743d055808e734cc7652eb5 Mon Sep 17 00:00:00 2001 From: Muzammil Siddiqui <66691754+Webners1@users.noreply.github.com> Date: Fri, 21 Jul 2023 12:45:47 +0500 Subject: [PATCH 1249/1354] adding Shibshift project (#6877) * adding Shibshift project * minor fix --------- Co-authored-by: unknown Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/shibshift/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/shibshift/index.js diff --git a/projects/shibshift/index.js b/projects/shibshift/index.js new file mode 100644 index 0000000000..2b850ab197 --- /dev/null +++ b/projects/shibshift/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + pulse: { + tvl: getUniTVL({ factory: '0xD56B9f53A1CAf0a6b66B209a54DAE5C5D40dE622', useDefaultCoreAssets: true, fetchBalances: true, }), + }, +}; \ No newline at end of file From 227eb566c9ae9247f8b85a392e1270149db6a37d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:40:29 +0200 Subject: [PATCH 1250/1354] track sui deepbook --- projects/deepbook-sui/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/deepbook-sui/index.js diff --git a/projects/deepbook-sui/index.js b/projects/deepbook-sui/index.js new file mode 100644 index 0000000000..b344219467 --- /dev/null +++ b/projects/deepbook-sui/index.js @@ -0,0 +1,23 @@ +const { toUSDTBalances } = require('../helper/balances') +const { get } = require('../helper/http') + +async function tvl(ts) { + const {data} = await get('https://49490zsfv2.execute-api.us-east-1.amazonaws.com/sui/deepbook?interval=hour&timeFrame=1&dataType=tvl') + return toUSDTBalances(findClosestTvl(data, ts)) +} + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + sui: { + tvl + } +} + +function findClosestTvl(data, ts) { + ts = ts * 1000 + data.forEach(i => i.ts = new Date(i.timestamp)) + data = data.filter(i => i.ts < ts && (ts -i.ts) < 86400000) // filter for recent tvl but less than day old + data.sort((a, b) => b.ts - a.ts) + return data[0].tvl +} \ No newline at end of file From 620f8d12f44d87dcc7c26b9f6a633e98658f9911 Mon Sep 17 00:00:00 2001 From: Andrei Stefan Date: Fri, 21 Jul 2023 12:07:49 +0300 Subject: [PATCH 1251/1354] add SolidWorld polygon (#6856) --- projects/solid-world/abi.json | 7 ++++ projects/solid-world/config.js | 15 ++++++++ projects/solid-world/index.js | 65 ++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 projects/solid-world/abi.json create mode 100644 projects/solid-world/config.js create mode 100644 projects/solid-world/index.js diff --git a/projects/solid-world/abi.json b/projects/solid-world/abi.json new file mode 100644 index 0000000000..5b52c1fc79 --- /dev/null +++ b/projects/solid-world/abi.json @@ -0,0 +1,7 @@ +{ + "getTotalAmounts": "function getTotalAmounts() external view returns (uint256 total0, uint256 total1)", + "totalSupply": "uint256:totalSupply", + "balanceOf": "erc20:balanceOf", + "token0": "address:token0", + "token1": "address:token1" +} diff --git a/projects/solid-world/config.js b/projects/solid-world/config.js new file mode 100644 index 0000000000..f1b5182f65 --- /dev/null +++ b/projects/solid-world/config.js @@ -0,0 +1,15 @@ +const config = { + polygon: { + pools: [ + { + crispToken: "0xEF6Ab48ef8dFe984FAB0d5c4cD6AFF2E54dfdA14", + hypervisor: "0x4a39cBb8198376AB08c24e596fF5E668c3ca269E", + stakingContract: "0xaD7Ce5Cf8E594e1EFC6922Ab2c9F81d7a0E14337" + } + ] + } +}; + +module.exports = { + config +}; diff --git a/projects/solid-world/index.js b/projects/solid-world/index.js new file mode 100644 index 0000000000..7694ec1fb4 --- /dev/null +++ b/projects/solid-world/index.js @@ -0,0 +1,65 @@ +const sdk = require("@defillama/sdk"); +const BigNumber = require("bignumber.js"); +const { config } = require("./config"); +const abi = require("./abi.json"); + +async function tvl(timestamp, ethBlock, _, { api }) { + const chainConfig = config[api.chain]; + const crispSupplies = await api.multiCall({ + calls: chainConfig.pools.map(pool => pool.crispToken), + abi: abi.totalSupply + }); + + const TVL = {}; + chainConfig.pools.forEach(({ crispToken }, i) => { + sdk.util.sumSingleBalance(TVL, crispToken, crispSupplies[i], api.chain); + }); + + return TVL; +} + +async function pool2(timestamp, ethBlock, _, { api }) { + const chainConfig = config[api.chain]; + const [token0s, token1s, totalAmounts, totalSupplies, stakedAmounts] = await Promise.all([ + api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.token0 }), + api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.token1 }), + api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.getTotalAmounts }), + api.multiCall({ calls: chainConfig.pools.map(pool => pool.hypervisor), abi: abi.totalSupply }), + api.multiCall({ + calls: chainConfig.pools.map(pool => ({ + target: pool.hypervisor, + params: [pool.stakingContract] + })), abi: abi.balanceOf + }) + ]); + + // zip the results + const poolStats = chainConfig.pools.map((_, i) => ({ + token0: token0s[i], + token1: token1s[i], + totalAmount: totalAmounts[i], + totalSupply: totalSupplies[i], + stakedAmount: stakedAmounts[i] + })); + + const TVL = {}; + poolStats.forEach((e) => { + sdk.util.sumSingleBalance(TVL, e.token0, adjustAmount(e.totalAmount.total0, e.stakedAmount, e.totalSupply), api.chain); + sdk.util.sumSingleBalance(TVL, e.token1, adjustAmount(e.totalAmount.total1, e.stakedAmount, e.totalSupply), api.chain); + }); + + return TVL; +} + +function adjustAmount(amount, numerator, denominator) { + return BigNumber(amount).times(numerator).div(denominator).toFixed(0); +} + +module.exports = { + start: 1684477800, // Fri May 19 2023 06:30:00 GMT+0000 + methodology: "TVL is a measure of the health of the Solid World ecosystem. It's the total amount of value that is locked up in our staking contract, and it's calculated by adding up the value of all the LP tokens that are staked. The LP tokens represent the amount of liquidity that has been provided to the Solid World platform.", + polygon: { + tvl, + pool2 + } +}; From 4b73bb4dcb5bdb92ce11a9e3b832806d9108d628 Mon Sep 17 00:00:00 2001 From: codehans <94654388+codehans@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:55:03 +0100 Subject: [PATCH 1252/1354] fetch contracts from canonical source (#6878) --- projects/bow/index.js | 12 +++++------- projects/fin/index.js | 5 ++--- projects/ghost/index.js | 6 ++++-- projects/kujira/index.js | 6 ++++-- projects/orca-kujira/index.js | 7 ++++--- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/projects/bow/index.js b/projects/bow/index.js index e7507e9b29..7c1f8895d3 100644 --- a/projects/bow/index.js +++ b/projects/bow/index.js @@ -1,13 +1,11 @@ -const { get } = require("../helper/http"); -const { sumTokens, endPoints } = require('../helper/chain/cosmos') + +const { getConfig } = require("../helper/cache"); +const { sumTokens } = require('../helper/chain/cosmos') async function tvl() { - const bowPoolCodes = [46, 54, 36]; - const bowPools = (await Promise.all(bowPoolCodes.map(async (code) => { - const result = await get(endPoints.kujira + `/cosmwasm/wasm/v1/code/${code}/contracts?pagination.limit=100`); - return result.contracts; - }))).flat(); + const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); + const bowPools = contracts["kaiyo-1"].bow.map(x => x.address) const owners = [ ...bowPools ] diff --git a/projects/fin/index.js b/projects/fin/index.js index 8438ecfe8c..61e7ca3a45 100644 --- a/projects/fin/index.js +++ b/projects/fin/index.js @@ -1,15 +1,14 @@ -const { get } = require("../helper/http"); const { getConfig } = require("../helper/cache"); const { sumTokens, } = require('../helper/chain/cosmos'); async function tvl() { - const { pairs } = await getConfig("kujira/fin", "https://api.kujira.app/api/coingecko/pairs"); + const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); const blacklist = [ 'kujira1hs95lgvuy0p6jn4v7js5x8plfdqw867lsuh5xv6d2ua20jprkgesw2pujt', 'kujira1gl8js9zn7h9u2h37fx7qg8xy65jrk9t4zpa6s7j5hdlanud2uwxshqq67m' ] let owners = [ - ...pairs.map((pair) => pair.pool_id), + ...contracts["kaiyo-1"].fin.map(x => x.address), ] owners = owners.filter(item => { diff --git a/projects/ghost/index.js b/projects/ghost/index.js index 00c5ad52e2..e1cd7484fc 100644 --- a/projects/ghost/index.js +++ b/projects/ghost/index.js @@ -2,11 +2,13 @@ const { queryContracts, queryContract, } = require("../helper/chain/cosmos"); +const { getConfig } = require("../helper/cache"); async function tvl(_, _1, _2, { api }) { const chain = api.chain - const vaultContracts = await queryContracts({ chain, codeId: 106 }); - const marketContracts = await queryContracts({ chain, codeId: 113 }); + const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); + const vaultContracts = contracts["kaiyo-1"].ghostVault.map(x => x.address) + const marketContracts = contracts["kaiyo-1"].ghostMarket.map(x => x.address) for (const contract of vaultContracts) { const { deposited, borrowed } = await queryContract({ contract, chain, data: { status: {} } }) const { denom } = await queryContract({ contract, chain, data: { config: {} } }) diff --git a/projects/kujira/index.js b/projects/kujira/index.js index 51a3a34a99..193ad071e4 100644 --- a/projects/kujira/index.js +++ b/projects/kujira/index.js @@ -1,9 +1,11 @@ -const { sumTokens, queryContracts } = require('../helper/chain/cosmos') +const { sumTokens } = require('../helper/chain/cosmos') +const { getConfig } = require("../helper/cache"); const chain = "kujira"; async function tvl() { - const uskContracts = await queryContracts({ chain, codeId: 73 }); + const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); + const uskContracts = contracts["kaiyo-1"].uskMarket.map(x => x.address) return sumTokens({ owners: uskContracts, chain }) } diff --git a/projects/orca-kujira/index.js b/projects/orca-kujira/index.js index 586ad767ba..0bd465e0ba 100644 --- a/projects/orca-kujira/index.js +++ b/projects/orca-kujira/index.js @@ -1,9 +1,10 @@ -const { get } = require("../helper/http"); -const { sumTokens, endPoints } = require('../helper/chain/cosmos') +const { sumTokens } = require('../helper/chain/cosmos') +const { getConfig } = require("../helper/cache"); async function tvl() { - const { contracts: orcaPools } = await get(endPoints.kujira + "/cosmwasm/wasm/v1/code/59/contracts?pagination.limit=100"); + const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); + const orcaPools = contracts["kaiyo-1"].orca.map(x => x.address) const owners = [ ...orcaPools, ] From a5e01659cc7f738fe4e4d0d0ca3d9e5a91a9fec6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 21 Jul 2023 14:06:05 +0200 Subject: [PATCH 1253/1354] track reax-one lending --- projects/helper/aave.js | 4 ++-- projects/reax-one-lending/index.js | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 projects/reax-one-lending/index.js diff --git a/projects/helper/aave.js b/projects/helper/aave.js index 4d22ccd1df..74ef546ab0 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -187,7 +187,7 @@ const oracleAbis = { getAssetsPrices: "function getAssetsPrices(address[] assets) view returns (uint256[])", } -function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, } = {}) { +function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, abis = {}} = {}) { async function tvl(_, _b, _c, { api }) { const data = await getReservesData(api) @@ -226,7 +226,7 @@ function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyU async function getReservesData(api) { const tokens = await api.call({ abi: abiv2.getReservesList, target: registry }) - const data = await api.multiCall({ abi: abiv2.getReserveData, calls: tokens, target: registry, }) + const data = await api.multiCall({ abi: abis.getReserveData ?? abiv2.getReserveData, calls: tokens, target: registry, }) data.forEach((v, i) => v.underlying = tokens[i]) if (useOracle) { let currency = baseCurrency diff --git a/projects/reax-one-lending/index.js b/projects/reax-one-lending/index.js new file mode 100644 index 0000000000..0ed1782c2f --- /dev/null +++ b/projects/reax-one-lending/index.js @@ -0,0 +1,7 @@ +const { aaveV2Export } = require('../helper/aave.js'); + +module.exports = { + mantle: aaveV2Export('0x4bbea708f4e48eb0bb15e0041611d27c3c8638cf', { abis: { + "getReserveData": "function getReserveData(address asset) view returns (tuple(tuple(uint256 data) configuration, uint128 liquidityIndex, uint128 currentLiquidityRate, uint128 variableBorrowIndex, uint128 currentVariableBorrowRate, uint128 currentStableBorrowRate, uint40 lastUpdateTimestamp, uint16 id, address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, uint128 accruedToTreasury, uint128 unbacked, uint128 isolationModeTotalDebt))" + } }) +} From aad15d00c89c761a282597e8c96a3b7a04c08de1 Mon Sep 17 00:00:00 2001 From: Dozer <71271486+dev-dozer@users.noreply.github.com> Date: Fri, 21 Jul 2023 15:31:40 +0300 Subject: [PATCH 1254/1354] added new chain polygon_zkevm (#6879) --- projects/interport-finance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js index b66f85da9f..def75747fb 100644 --- a/projects/interport-finance/index.js +++ b/projects/interport-finance/index.js @@ -12,7 +12,7 @@ module.exports = { methodology: 'Interport TVL is calculated by summing the USDT and USDC balance of the vaults contracts, ITP token balance in the ITP Revenue Share contract and LP token balance in the LP Revenue Share contract.', }; -['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'era'].forEach(chain => { +['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'polygon_zkevm', 'era'].forEach(chain => { module.exports[chain] = { tvl: async (_, _1, _2, { api }) => { const vaults = config[chain]?.vaults || defaultVaults From 444637da1184a619c8cc0c003f63a71c44146a4c Mon Sep 17 00:00:00 2001 From: define Date: Fri, 21 Jul 2023 14:44:28 +0100 Subject: [PATCH 1255/1354] add hallmark to conic --- projects/conic-omnipool/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/conic-omnipool/index.js b/projects/conic-omnipool/index.js index a4c290cab4..c473908b1b 100644 --- a/projects/conic-omnipool/index.js +++ b/projects/conic-omnipool/index.js @@ -2,6 +2,9 @@ const sdk = require('@defillama/sdk') module.exports = { doublecounted: true, + hallmarks: [ + [1689937200,"ETH Omnipool Hacked"] + ], ethereum: { tvl: async (_, _b, _cb, { api, }) => { const balances = {} From 8a19df875ca1c90ac4b911a04872d1f436eb1ada Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 21 Jul 2023 16:00:44 +0200 Subject: [PATCH 1256/1354] update unicrypt-v3 --- projects/unicrypt-v3/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js index 2f840ee983..ef338a99b7 100644 --- a/projects/unicrypt-v3/index.js +++ b/projects/unicrypt-v3/index.js @@ -6,6 +6,7 @@ const config = { ethereum: { reserves: ['0x231278edd38b00b07fbd52120cef685b9baebcc1'] }, arbitrum: { reserves: ['0xfa104eb3925a27e6263e05acc88f2e983a890637'] }, bsc: { reserves: ['0x0D29598EC01fa03665feEAD91d4Fb423F393886c'] }, + polygon: { reserves: ['0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84'] }, } module.exports = { From 56fa82ce5f0897ac8a4e4cafaa5a087da200f1cf Mon Sep 17 00:00:00 2001 From: Mubashir Zebi <102967755+mubashirzebi@users.noreply.github.com> Date: Fri, 21 Jul 2023 19:52:10 +0530 Subject: [PATCH 1257/1354] add WMNT token (#6880) --- projects/reax-one-dex/index.js | 1 + projects/reax-one-synth/index.js | 1 + 2 files changed, 2 insertions(+) diff --git a/projects/reax-one-dex/index.js b/projects/reax-one-dex/index.js index 16bd3a0be4..43fd2f353a 100644 --- a/projects/reax-one-dex/index.js +++ b/projects/reax-one-dex/index.js @@ -7,6 +7,7 @@ module.exports = { '0xf7dfe223e19701a514e78f3ce7ba98f2c5fbb5b2', '0xa84bdecd44e6cee1c588a3c97fcc4482831fde05', '0x62959ad021402f48d0d8067bc5c4c03f63fceaa4', + '0x8348b81b9ed72f29e52027c349f30703b42c0110' ] }), } diff --git a/projects/reax-one-synth/index.js b/projects/reax-one-synth/index.js index b2738990b2..ed44820be5 100644 --- a/projects/reax-one-synth/index.js +++ b/projects/reax-one-synth/index.js @@ -8,6 +8,7 @@ module.exports = { '0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111', '0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE', '0xCAbAE6f6Ea1ecaB08Ad02fE02ce9A44F09aebfA2', + '0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8' ] }), } From 56dd199a1965661797c604ee07593a6e01910b87 Mon Sep 17 00:00:00 2001 From: "Guillermo M. Narvaja" Date: Sat, 22 Jul 2023 05:15:35 -0300 Subject: [PATCH 1258/1354] Ensuro: new pools and Premiums accounts (#6882) Adds new eTokens (liquidity pool) and Premiums Accounts for recently onboarded risks. --- projects/ensuro/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/ensuro/index.js b/projects/ensuro/index.js index e31bae3714..3eb3881ec3 100644 --- a/projects/ensuro/index.js +++ b/projects/ensuro/index.js @@ -13,10 +13,16 @@ const addressBook = { {name: "eToken Innov Zone", address: "0x1C48Accaf6f8106883AA1973A45F02525652DEfC"}, {name: "eToken Junior Koala BMA", address: "0xBC33c283A37d46ABA17BC5F8C27b27242688DeC6"}, {name: "eToken Senior BMA", address: "0xF383eF2D31E1d4a19B3e04ca2937DB6A8DA9f229"}, + {name: "eToken Junior Spot", address: "0x6229D78658305a301E177f9dAEa3a0799fd1528C"}, + {name: "eToken Junior Revo", address: "0x6A0e61C757e384eB1E4A2b94F7E02E68e4b4515e"}, + {name: "eToken Junior StormStrong", address: "0xE36D6585F0c200195b196C66644C519e7674b476"}, // PremiumsAccounts {name: "PremiumsAccount Koala", address: "0xCCf5C404d32eB6E777088AB13837a1b8dCBA9328"}, {name: "PremiumsAccount Innov Zone", address: "0x4f43B8F252887F814ED689346fdb5Bd266394520"}, {name: "PremiumsAccount Koala BMA", address: "0xc1A74eaC52a195E54E0cd672A9dAB023292C6100"}, + {name: "PremiumsAccount StormStrong", address: "0x06347eA3dA6a5B44eEAe3B8F4a65992Ae073e6F4"}, + {name: "PremiumsAccount Revo", address: "0x47f35B4876138b5d96FfDed1e46aE6b58E6e7B31"}, + {name: "PremiumsAccount Spot", address: "0x42118Df6EBb18346ca425f1c67AC739E95aD9358"}, ], v1: { pool: "0xF7ED72430bEA07D8dB6eC264603811381F5af8e0", From 241f1b3dca916d7000aff52291ad43c0036a9d5e Mon Sep 17 00:00:00 2001 From: bryansniyve <134277602+bryansniyve@users.noreply.github.com> Date: Sat, 22 Jul 2023 20:51:22 +0800 Subject: [PATCH 1259/1354] feat: add zksync tvl (#6873) * feat: add zksync tvl * code fix --------- Co-authored-by: bryan.y Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/apollox/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/apollox/index.js b/projects/apollox/index.js index 2f80e92f3d..85e0e24846 100644 --- a/projects/apollox/index.js +++ b/projects/apollox/index.js @@ -83,4 +83,10 @@ module.exports = { ADDRESSES.arbitrum.USDT, ]}) }, + era: { + tvl: sumTokensExport({ owner: '0xD6f4e33063C881cE9a98e07E13673B92a637D908', tokens: [ + nullAddress, + ADDRESSES.era.USDC, + ]}) + }, }; From 6333f91bda226216dda87a07c3714657ed758570 Mon Sep 17 00:00:00 2001 From: LPX Date: Sat, 22 Jul 2023 21:53:29 +0900 Subject: [PATCH 1260/1354] add: Evmos Community Treasury (#6883) * add(revert-evmos) * add(basic-treasury) * add(forge-contract-owner) --- projects/helper/coreAssets.json | 3 ++- projects/treasury/evmos-dao.js | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 projects/treasury/evmos-dao.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 185647d0f8..c704a5472e 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -273,7 +273,8 @@ "WETH": "0x5842c5532b61acf3227679a8b1bd0242a41752f2", "WBTC": "0xf80699dc594e00ae7ba200c7533a07c1604a106d", "FRAX": "0xe03494d0033687543a80c9b1ca7d6237f2ea8bd8", - "DIFF": "0x3f75ceabcdfed1aca03257dc6bdc0408e2b4b026" + "DIFF": "0x3f75ceabcdfed1aca03257dc6bdc0408e2b4b026", + "AXL_USDC": "0x15c3eb3b621d1bff62cba1c9536b7c1ae9149b57" }, "oasis": { "WETH": "0x3223f17957ba502cbe71401d55a0db26e5f7c68f", diff --git a/projects/treasury/evmos-dao.js b/projects/treasury/evmos-dao.js new file mode 100644 index 0000000000..ecc78b0113 --- /dev/null +++ b/projects/treasury/evmos-dao.js @@ -0,0 +1,23 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const community_pool = "0x93354845030274cd4bf1686abd60ab28ec52e1a7"; +const treasury = "0xc3c5156911bf53f12913b68e0532096536b30600"; +const forge_liquidity = "0x4c3c271ca2e841c0051c0402021ddaef3ce666d0"; +const forge_owner = "0x2A72df162bD5B9Ba4cBB4F28bCE590c20db7aEC1"; + +const tokens = [ + nullAddress, + ADDRESSES.evmos.WEVMOS, + ADDRESSES.evmos.STEVMOS, + ADDRESSES.evmos.STRIDE, + ADDRESSES.evmos.AXL_USDC +] + + +module.exports = treasuryExports({ + evmos: { + tokens: tokens, + owners: [community_pool, treasury, forge_liquidity, forge_owner], + }, +}) \ No newline at end of file From 59680e7eac850cf1e8451dc209a437d0c57dba8e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 22 Jul 2023 20:35:13 +0100 Subject: [PATCH 1261/1354] add dracula --- projects/dracula.js | 2 +- projects/dracula/index.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 projects/dracula/index.js diff --git a/projects/dracula.js b/projects/dracula.js index ef1a264b98..d1fce2a21b 100644 --- a/projects/dracula.js +++ b/projects/dracula.js @@ -4,7 +4,7 @@ module.exports = { hallmarks: [ [Math.floor(new Date('2022-03-17')/1e3), 'DRACULA is for now fully focused on it\'s Metaverse product'], ], - methodology: 'DRACULA is for now fully focused on it\'s Metaverse product', + methodology: 'Tokens staked on 0xC8DFD57E82657f1e7EdEc5A9aA4906230C29A62A', ethereum: { tvl: () => ({}), staking: staking('0xC8DFD57E82657f1e7EdEc5A9aA4906230C29A62A', '0xb78b3320493a4efaa1028130c5ba26f0b6085ef8'), diff --git a/projects/dracula/index.js b/projects/dracula/index.js new file mode 100644 index 0000000000..bd5f0612eb --- /dev/null +++ b/projects/dracula/index.js @@ -0,0 +1,7 @@ +const { uniTvlExport } = require("../helper/calculateUniTvl.js"); + +module.exports = { + era: { + tvl: uniTvlExport("0x68e03D7B8B3F9669750C1282AD6d36988f4FE18e", "era", undefined, undefined, { hasStablePools: true, useDefaultCoreAssets: false, }), + }, +}; From 1d9d9c3f786eb225de1918d5bd6a3ef5af76dec2 Mon Sep 17 00:00:00 2001 From: Slok contributors <138642329+gitslok@users.noreply.github.com> Date: Sun, 23 Jul 2023 16:18:55 +0800 Subject: [PATCH 1262/1354] sharelock (#6884) * sharelock * Update index.js --------- Co-authored-by: zliwei-git <745096434@qq.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sharelock/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/sharelock/index.js diff --git a/projects/sharelock/index.js b/projects/sharelock/index.js new file mode 100644 index 0000000000..d3810ed4ab --- /dev/null +++ b/projects/sharelock/index.js @@ -0,0 +1,7 @@ +const { getUniTVL} = require("../helper/unknownTokens") + +module.exports = { + era: { + tvl: getUniTVL({ factory: '0xea51CE8A1f9C1Cbbf5B89D9B1dA4A94fB1557866', fetchBalances: true, }) + }, +} From 4373701529a6155dcb165d9a45492c075b902a1f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 23 Jul 2023 18:38:32 +0100 Subject: [PATCH 1263/1354] add dyad --- projects/dyad/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/dyad/index.js diff --git a/projects/dyad/index.js b/projects/dyad/index.js new file mode 100644 index 0000000000..e3fd585415 --- /dev/null +++ b/projects/dyad/index.js @@ -0,0 +1,23 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const sdk = require("@defillama/sdk"); + + +async function tvl(_timestamp, block) { + return { + [ADDRESSES.null]: ( + await sdk.api.eth.getBalance({ + target: "0xdc400bbe0b8b79c07a962ea99a642f5819e3b712", + block, + }) + ).output, + }; +} + +module.exports = { + ethereum: { + tvl, + }, +}; + + + From 5b9084d1d21b4ee0817d259729762cad8f7bef4c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 06:45:38 +0200 Subject: [PATCH 1264/1354] track https://dbx.finance/ --- projects/amaterasu.js | 1 - projects/astroswap.js | 2 +- projects/clever-protocol/index.js | 1 - projects/complus/index.js | 8 ++++---- projects/dbx-finance/index.js | 8 ++++++++ projects/ethwswap/index.js | 1 - projects/syncdex-finance/index.js | 22 ---------------------- 7 files changed, 13 insertions(+), 30 deletions(-) create mode 100644 projects/dbx-finance/index.js diff --git a/projects/amaterasu.js b/projects/amaterasu.js index 6309cd74f2..da23a1807c 100644 --- a/projects/amaterasu.js +++ b/projects/amaterasu.js @@ -5,7 +5,6 @@ module.exports = { aurora: { tvl: getUniTVL({ factory: "0x34696b6cE48051048f07f4cAfa39e3381242c3eD", - chain: 'aurora', useDefaultCoreAssets: true, }) } diff --git a/projects/astroswap.js b/projects/astroswap.js index a2b605a6d0..d892c95850 100644 --- a/projects/astroswap.js +++ b/projects/astroswap.js @@ -4,7 +4,7 @@ module.exports = { misrepresentedTokens: true, velas: { tvl: getUniTVL({ - factory: '0xe82d721A6CdeC2f86e9Fca074Ff671c8621F8459', chain: 'velas', useDefaultCoreAssets: true, + factory: '0xe82d721A6CdeC2f86e9Fca074Ff671c8621F8459', useDefaultCoreAssets: true, blacklist: ['0xcd7509b76281223f5b7d3ad5d47f8d7aa5c2b9bf', '0xd12f7a98c0d740e7ec82e8caf94eb79c56d1b623',], }) }, diff --git a/projects/clever-protocol/index.js b/projects/clever-protocol/index.js index 98dea1f674..7d38e6c112 100644 --- a/projects/clever-protocol/index.js +++ b/projects/clever-protocol/index.js @@ -6,7 +6,6 @@ module.exports = { misrepresentedTokens: true, dogechain: { tvl: getUniTVL({ - chain: 'dogechain', factory: FACTORY, useDefaultCoreAssets: true, }), diff --git a/projects/complus/index.js b/projects/complus/index.js index fdca047b02..85c0aa6cad 100644 --- a/projects/complus/index.js +++ b/projects/complus/index.js @@ -3,15 +3,15 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, polygon: { - tvl: getUniTVL({ chain: 'polygon', useDefaultCoreAssets: true, factory: '0x973c934137dd687eca67bdd1c5a8b74286964ac6', }), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x973c934137dd687eca67bdd1c5a8b74286964ac6', }), }, heco: { - tvl: getUniTVL({ chain: 'heco', useDefaultCoreAssets: true, factory: '0xc32cccf795940ca8491cd4f31161509db28ab719', }), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xc32cccf795940ca8491cd4f31161509db28ab719', }), }, bsc: { - tvl: getUniTVL({ chain: 'bsc', useDefaultCoreAssets: true, factory: '0xdf97982bf70be91df4acd3d511c551f06a0d19ec', }), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xdf97982bf70be91df4acd3d511c551f06a0d19ec', }), }, avax:{ - tvl: getUniTVL({ chain: 'avax', useDefaultCoreAssets: true, factory: '0x5c02e78a3969d0e64aa2cfa765acc1d671914ac0', }), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x5c02e78a3969d0e64aa2cfa765acc1d671914ac0', }), }, } \ No newline at end of file diff --git a/projects/dbx-finance/index.js b/projects/dbx-finance/index.js new file mode 100644 index 0000000000..9de7567c70 --- /dev/null +++ b/projects/dbx-finance/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + arbitrum: { + tvl: getUniTVL({ factory: '0x41755a88d4ab443d5d8ef73ec64dd3df71fb5559', useDefaultCoreAssets: true, }), + } +} diff --git a/projects/ethwswap/index.js b/projects/ethwswap/index.js index b57a7727b7..e840b9fcdd 100644 --- a/projects/ethwswap/index.js +++ b/projects/ethwswap/index.js @@ -4,7 +4,6 @@ module.exports = { misrepresentedTokens: true, ethpow: { tvl: getUniTVL({ - chain: 'ethpow', useDefaultCoreAssets: true, factory: '0x78376072F4945b2A5450B1A6B41a85ff20034527', }) diff --git a/projects/syncdex-finance/index.js b/projects/syncdex-finance/index.js index dda3a87a1f..e84840811e 100644 --- a/projects/syncdex-finance/index.js +++ b/projects/syncdex-finance/index.js @@ -1,30 +1,8 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); - -const native_staking_contract = "0x9212456Da7804245BDF02e7294E4f36D27f9c2B1"; -const usdc_staking_contract = "0xa8CD01322Ad632c9656879e99Fd7FbC11ca8E3BB"; -const sydx_staking_contract = "0xB2bD1427b04d84eA14214582C59CB16D4F1d676E"; -const native_usdc_farming_contract = "0x3F90A802B5D6E984A6f296F697AB847C5fE23F31"; -const native_sydx_farming_contract = "0xDA24F9528102A5A126Cd7eeE8c6e22A786cAE844"; -const sydx_usdc_farming_contract = "0x75aC887df149076b7DF4deAA0267711475b71572"; -const usdc_usdplus_farming_contract = "0xF0B42d393eAB886bd9310AaF0A2B1eDbaaD31fdE" - -const assets = [ - ADDRESSES.era.USDC, - ADDRESSES.era.WETH, - ADDRESSES.null, // This is address of native token (ETH), you can check native_staking_contract - "0x8E86e46278518EFc1C5CEd245cBA2C7e3ef11557" -]; -const SYNC_DEX = '0x3a34FA9a1288597Ad6C1Da709f001D37FeF8b19e' - -const owners = [native_staking_contract, usdc_staking_contract, sydx_staking_contract, native_usdc_farming_contract, native_sydx_farming_contract, sydx_usdc_farming_contract, usdc_usdplus_farming_contract] - module.exports = { era: { hallmarks: [ [1681340401,"Rug Pull"] ], tvl: () => 0, - staking: () => 0, }, }; \ No newline at end of file From 7c83ded753658b7336825d9f00c78e1368434bb6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 06:47:46 +0200 Subject: [PATCH 1265/1354] split pika into 2 --- projects/pika-v4/index.js | 10 ++++++++++ projects/pika.js | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 projects/pika-v4/index.js diff --git a/projects/pika-v4/index.js b/projects/pika-v4/index.js new file mode 100644 index 0000000000..e3d3705a97 --- /dev/null +++ b/projects/pika-v4/index.js @@ -0,0 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + optimism: { + tvl: sumTokensExport({ owners: [ + '0x9b86B2Be8eDB2958089E522Fe0eB7dD5935975AB', + ], tokens: [ADDRESSES.optimism.USDC]}) + } +} \ No newline at end of file diff --git a/projects/pika.js b/projects/pika.js index 5a404a89f3..9744d4fae3 100644 --- a/projects/pika.js +++ b/projects/pika.js @@ -6,7 +6,6 @@ module.exports = { tvl: sumTokensExport({ owners: [ '0x2FaE8C7Edd26213cA1A88fC57B65352dbe353698', '0xD5A8f233CBdDb40368D55C3320644Fb36e597002', - '0x9b86B2Be8eDB2958089E522Fe0eB7dD5935975AB', ], tokens: [ADDRESSES.optimism.USDC]}) } } \ No newline at end of file From deb0d2001af045b4a722b765797f176a74ea4256 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 07:11:50 +0200 Subject: [PATCH 1266/1354] track https://app.dexfinance.com/swap --- projects/dexswap-arbi/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/dexswap-arbi/index.js diff --git a/projects/dexswap-arbi/index.js b/projects/dexswap-arbi/index.js new file mode 100644 index 0000000000..8b46b8d8fe --- /dev/null +++ b/projects/dexswap-arbi/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + arbitrum: { + tvl: getUniTVL({ factory: '0x3E40739d8478c58f9B973266974C58998D4F9e8b', useDefaultCoreAssets: true, }), + } +} From 107121e4945ff44ba87bd31c3a90fcbef4bb07a7 Mon Sep 17 00:00:00 2001 From: Centipede5 Date: Mon, 24 Jul 2023 01:24:35 -0400 Subject: [PATCH 1267/1354] Add DogeDollar (#6885) * add dogedollar * Update index.js --- projects/dogedollar/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/dogedollar/index.js diff --git a/projects/dogedollar/index.js b/projects/dogedollar/index.js new file mode 100644 index 0000000000..2cebc693c7 --- /dev/null +++ b/projects/dogedollar/index.js @@ -0,0 +1,15 @@ +const { sumTokensExport, nullAddress, } = require("../helper/unwrapLPs"); + +const DJED_ADDR = '0xA99ef299CdA10AC4Ec974370778fbd27Cfb5CF61' + +module.exports = { + methodology: 'finds the DOGE balance of the DJED instance backing the stablecoin, aswell as the fallback stablecoin balance', + start: 14576300, + dogechain: { + tvl: sumTokensExport({ + tokensAndOwners: [ + [nullAddress, DJED_ADDR], + ] + }), + } +}; From 1b305f35292ce959f28808d7775b09098f51c908 Mon Sep 17 00:00:00 2001 From: brightiron <95196612+brightiron@users.noreply.github.com> Date: Mon, 24 Jul 2023 00:41:12 -0500 Subject: [PATCH 1268/1354] Add Whale Game (#6889) * add tvl calcs for whalegame contracts * remove unused abis * vesting contract * update description * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/whalegame/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/whalegame/index.js diff --git a/projects/whalegame/index.js b/projects/whalegame/index.js new file mode 100644 index 0000000000..e3922dded6 --- /dev/null +++ b/projects/whalegame/index.js @@ -0,0 +1,26 @@ + +const ADDRESSES = require("../helper/coreAssets.json"); + +const GAME_CONTRACT_ADDRESS = "0xF1baf16Db25405856f5379246Beba2B694e1449D"; + +async function tvl(_, _1, _2, { api }) { + const whaleTokenAddress = await api.call({ abi: abi.whaleToken, target: GAME_CONTRACT_ADDRESS, }); + const owners = [GAME_CONTRACT_ADDRESS, whaleTokenAddress] + + owners.push(...await api.fetchList({ itemAbi: abi.vestingContractforRound, lengthAbi: abi.round, target: GAME_CONTRACT_ADDRESS, })) + return api.sumTokens({ tokens: [ADDRESSES.null], owners, blacklistedOwners: [ADDRESSES.null] }) +} + +module.exports = { + methodology: + "Counts the amount of ETH in the Game Pot, WHALE Rewards Contract and unclaimed ETH in vesting contracts", + ethereum: { + tvl, + }, +}; + +const abi = { + "vestingContractforRound": "function vestingContractForRound(uint256) view returns (address)", + "round": "uint256:round", + "whaleToken": "address:whaleToken" +} \ No newline at end of file From 09ce378e1f5e898211f356db61a2191f11ac4fcb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 11:15:50 +0530 Subject: [PATCH 1269/1354] Palmswap (#6890) * tvl working staking is not working * code refactor --------- Co-authored-by: Eren Boyraz --- projects/palmswap/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/palmswap/index.js diff --git a/projects/palmswap/index.js b/projects/palmswap/index.js new file mode 100644 index 0000000000..6c61b803a9 --- /dev/null +++ b/projects/palmswap/index.js @@ -0,0 +1,14 @@ +const { gmxExports } = require("../helper/gmx"); +const { staking } = require("../helper/staking"); + +const palmswapVault = "0x806f709558CDBBa39699FBf323C8fDA4e364Ac7A"; //Vault + +const palmTokenStakingContract = "0x95fc6f7df412040a815494cf27fbc82be6c7585c"; //RewardTracker +const palmToken = "0x29745314B4D294B7C77cDB411B8AAa95923aae38"; //PALM token address + +module.exports = { + bsc: { + tvl: gmxExports({ vault: palmswapVault }), + staking: staking(palmTokenStakingContract, palmToken), + }, +}; From 2d5cd4c3e1977d2fcc66e9ab5ce1d1b84c4e0355 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 08:49:52 +0200 Subject: [PATCH 1270/1354] refactor popsicle --- projects/popsicle/index.js | 80 ++++++++++++-------------------------- 1 file changed, 24 insertions(+), 56 deletions(-) diff --git a/projects/popsicle/index.js b/projects/popsicle/index.js index 9da49e89c3..90e98b628b 100644 --- a/projects/popsicle/index.js +++ b/projects/popsicle/index.js @@ -1,14 +1,8 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const poolInfoAbi = require("../helper/abis/masterchef.json"); -const { sumTokensAndLPsSharedOwners, sumTokens2 } = require('../helper/unwrapLPs'); +const { sumTokens2 } = require('../helper/unwrapLPs'); const { addFundsInMasterChef } = require("../helper/masterchef"); -const { - transformBscAddress, - transformFantomAddress, -} = require("../helper/portedTokens"); -const { fetchURL } = require("../helper/utils"); -const { toUSDTBalances } = require("../helper/balances"); +const { getConfig } = require('../helper/cache') const MasterChefContract = "0xbf513aCe2AbDc69D38eE847EFFDaa1901808c31c"; const ice = "0xf16e81dce15B08F326220742020379B855B87DF9"; @@ -16,77 +10,51 @@ const ice = "0xf16e81dce15B08F326220742020379B855B87DF9"; function pool2(chain) { return async (timestamp, ethBlock, chainBlocks) => { const balances = {}; - await addFundsInMasterChef( - balances, - MasterChefContract, - chainBlocks[chain], - chain, - undefined, - poolInfoAbi.poolInfo, - [ice] - ); + await addFundsInMasterChef(balances, MasterChefContract, chainBlocks[chain], chain, undefined, poolInfoAbi.poolInfo, [ice]); return balances; }; } -async function optimizerV3(time, block) { - const data = await fetchURL( - "https://analytics.back.popsicle.finance/api/v1/FragolaApy" - ); - return toUSDTBalances(data.data.reduce((total, pool) => total + pool.tvl, 0)); +const config = { + ethereum: 'https://analytics.back.popsicle.finance/api/v1/FragolaApy', + polygon: 'https://analytics.back.popsicle.finance/api/v1/polygon/FragolaApy', } -async function fantomTvl(timestamp, block, chainBlocks) { - const transform = await transformFantomAddress(); - const balances = {}; - await sumTokensAndLPsSharedOwners( - balances, - [ - ["0xddc0385169797937066bbd8ef409b5b3c0dfeb52", false], - ], - [ - "0xFDB988aF9ef9D0C430176f972bA82B98b476F3ee", - ], - chainBlocks.fantom, "fantom", transform - ); - - //wMEMO - const memo = ( - await sdk.api.abi.call({ - target: "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b", - params: [ - balances["fantom:0xddc0385169797937066bbd8ef409b5b3c0dfeb52"], - ], - abi: 'function wMEMOToMEMO(uint256 _amount) view returns (uint256)', - block: chainBlocks.avax, - chain: "avax", - }) - ).output; - balances["avax:0xb54f16fb19478766a268f172c9480f8da1a7c9c3"] = memo; - delete balances["fantom:0xddc0385169797937066bbd8ef409b5b3c0dfeb52"]; - - return balances; +async function optimizerV3(time, block, _, {api}) { + const data = await getConfig('popsicle/'+api.chain, config[api.chain]) + const pools = data.map(i => i.fragolaAddress) + const token0s = await api.multiCall({ abi: 'address:token0', calls: pools}) + const token1s = await api.multiCall({ abi: 'address:token1', calls: pools}) + const bals = await api.multiCall({ abi: 'function usersAmounts() returns (uint256,uint256)', calls: pools}) + bals.forEach(([bal0, bal1], i) => { + api.add(token0s[i], bal0) + api.add(token1s[i], bal1) + }) +} +async function fantomTvl(timestamp, block, chainBlocks, {api}) { + return api.sumTokens({ owner: '0xFDB988aF9ef9D0C430176f972bA82B98b476F3ee', tokens: ['0xddc0385169797937066bbd8ef409b5b3c0dfeb52']}) } -async function fantomStaking(timestamp, block, chainBlocks) { +async function fantomStaking(timestamp, block, chainBlocks, { api }) { return sumTokens2({ + api, tokensAndOwners: [ ['0xf16e81dce15b08f326220742020379b855b87df9', '0xaE2e07276A77DAdE3378046eEd92FfDE3995b0D5'], // ICE [ADDRESSES.fantom.nICE, '0xBC8d95Ab498502242b41fdaD30bDFfC841f436e2'], // nICE ], - chain: 'fantom', - block: chainBlocks.fantom, }) } // node test.js projects/popsicle/index.js module.exports = { doublecounted: true, - misrepresentedTokens: true, ethereum: { pool2: pool2("ethereum"), tvl: optimizerV3, }, + polygon: { + tvl: optimizerV3, + }, bsc: { pool2: pool2("bsc"), }, From 855a5c99ab35b1fa579a60f4cc06cbecf9185e88 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 09:08:53 +0200 Subject: [PATCH 1271/1354] pulsar: track mantle --- projects/pulsarswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/pulsarswap/index.js b/projects/pulsarswap/index.js index cee0ea4ba7..eca81a5832 100644 --- a/projects/pulsarswap/index.js +++ b/projects/pulsarswap/index.js @@ -2,6 +2,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const config = { arbitrum: '0x336a2f76d2be24e7cb6f468665a4277d4d617d00', ethereum: '0x408f66057163d829a30d4d466092c6b0eebb692f', + mantle: '0xB5B03706C24c79D3F7a368b30562a1711d74F688', } module.exports = {}; From b1b7510b7c6e10e9ca6eb363da0a6f54f2c1f402 Mon Sep 17 00:00:00 2001 From: Autoearn-Finance <129837237+Autoearn-Finance@users.noreply.github.com> Date: Mon, 24 Jul 2023 07:38:28 +0000 Subject: [PATCH 1272/1354] Uptade ATE on both Arbitrum and zkSync chains (#6891) * Uptade ATE on both Arbitrum and zkSync chains * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ate/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/ate/index.js diff --git a/projects/ate/index.js b/projects/ate/index.js new file mode 100644 index 0000000000..2ee6b6969a --- /dev/null +++ b/projects/ate/index.js @@ -0,0 +1,29 @@ +const { mergeExports } = require("../helper/utils") +const { yieldHelper, } = require("../helper/yieldHelper") + +const farm_arbi = '0x9373da81F82Aba62605a8A03950B9Aa188a02bF7' +const ate_arbi = '0xd5DA32Ad4C7510457C0e46Fa4332F75f6C4C4dC0' +const abis ={ + poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare, uint256 accAQUAPerShare, uint256 depositFee, uint256 withdrawFee, uint256 amount, uint256 reserve, address strat, address strat1)', +} + +const arbi_helper = yieldHelper({ + project: 'autoearn-finance', + chain: 'arbitrum', + masterchef: farm_arbi, + nativeToken: ate_arbi, + abis, +}) + +const farm_zk = '0x6d90D891A03C32d4082126D0CEe145f3bE62444A' +const ate_zk = '0x8E6D4473031f4B81E19B13C632933a913d4B4F8e' + +const zk_helper = yieldHelper({ + project: 'autoearn-finance-era', + chain: 'era', + masterchef: farm_zk, + nativeToken: ate_zk, + abis, +}) + +module.exports = mergeExports([arbi_helper, zk_helper]) \ No newline at end of file From 235def42d7358f22519ef30a3eda73ecd7b88b8d Mon Sep 17 00:00:00 2001 From: deadline <89900222+web3deadline@users.noreply.github.com> Date: Mon, 24 Jul 2023 15:38:51 +0800 Subject: [PATCH 1273/1354] add zkswap(zksync) (#6892) * add zkswap(zksync) * minor fix --------- Co-authored-by: deadline Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkswap-2/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/zkswap-2/index.js diff --git a/projects/zkswap-2/index.js b/projects/zkswap-2/index.js new file mode 100644 index 0000000000..98b210d6cb --- /dev/null +++ b/projects/zkswap-2/index.js @@ -0,0 +1,9 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +const factory = "0xeeE1Af1CE68D280e9cAfD861B7d4af776798F18d"; +const zks = ""; + +module.exports = { + misrepresentedTokens: true, + era: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, fetchBalances: true }) }, +}; \ No newline at end of file From 74ae65b035bc1be4b635a359af99a3a36d5109dc Mon Sep 17 00:00:00 2001 From: define Date: Mon, 24 Jul 2023 11:33:32 +0100 Subject: [PATCH 1274/1354] add zk era to autoearn --- projects/autoearn/index.js | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/projects/autoearn/index.js b/projects/autoearn/index.js index 58a3e35c75..2ee6b6969a 100644 --- a/projects/autoearn/index.js +++ b/projects/autoearn/index.js @@ -1,14 +1,29 @@ +const { mergeExports } = require("../helper/utils") const { yieldHelper, } = require("../helper/yieldHelper") -const farm = '0x9373da81F82Aba62605a8A03950B9Aa188a02bF7' -const ate = '0xd5DA32Ad4C7510457C0e46Fa4332F75f6C4C4dC0' +const farm_arbi = '0x9373da81F82Aba62605a8A03950B9Aa188a02bF7' +const ate_arbi = '0xd5DA32Ad4C7510457C0e46Fa4332F75f6C4C4dC0' +const abis ={ + poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare, uint256 accAQUAPerShare, uint256 depositFee, uint256 withdrawFee, uint256 amount, uint256 reserve, address strat, address strat1)', +} -module.exports = yieldHelper({ +const arbi_helper = yieldHelper({ project: 'autoearn-finance', chain: 'arbitrum', - masterchef: farm, - nativeToken: ate, - abis: { - poolInfo: 'function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare, uint256 accAQUAPerShare, uint256 depositFee, uint256 withdrawFee, uint256 amount, uint256 reserve, address strat, address strat1)', - } + masterchef: farm_arbi, + nativeToken: ate_arbi, + abis, }) + +const farm_zk = '0x6d90D891A03C32d4082126D0CEe145f3bE62444A' +const ate_zk = '0x8E6D4473031f4B81E19B13C632933a913d4B4F8e' + +const zk_helper = yieldHelper({ + project: 'autoearn-finance-era', + chain: 'era', + masterchef: farm_zk, + nativeToken: ate_zk, + abis, +}) + +module.exports = mergeExports([arbi_helper, zk_helper]) \ No newline at end of file From 48df77615cf5ad1c467edb6d5945a78a18100b7e Mon Sep 17 00:00:00 2001 From: define Date: Mon, 24 Jul 2023 14:13:03 +0100 Subject: [PATCH 1275/1354] update kyberswap treasury --- projects/treasury/kyber.js | 48 ++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/projects/treasury/kyber.js b/projects/treasury/kyber.js index eca7c7b625..57722bfb52 100644 --- a/projects/treasury/kyber.js +++ b/projects/treasury/kyber.js @@ -1,9 +1,49 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') +const { treasuryExports } = require("../helper/treasury"); + +const treasury = "0xe6a7338cba0a1070adfb22c07115299605454713" +const treasury2 = "0x91c9d4373b077ef8082f468c7c97f2c499e36f5b" +const knc = "0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202" +const kncarb = "0xe4DDDfe67E7164b0FE14E218d80dC4C08eDC01cB" +const kncop = "0xa00E3A3511aAC35cA78530c85007AFCd31753819" +const kncbsc= "0xfe56d5892BDffC7BF58f2E84BE1b2C32D21C308b" module.exports = treasuryExports({ + ethereum: { + tokens: [ + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.USDT + + ], + owners: [treasury, treasury2], + ownTokens: [knc], + }, arbitrum: { - tokens: ['0x3F56e0c36d275367b8C502090EDF38289b3dEa0d'], - owners: ['0x91c9d4373b077ef8082f468c7c97f2c499e36f5b'], - ownTokens: ['0xe4dddfe67e7164b0fe14e218d80dc4c08edc01cb'], + tokens: [ + ADDRESSES.arbitrum.ARB, + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDC_CIRCLE, + "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d" //MAI + ], + owners: [treasury2], + ownTokens: [kncarb], + }, + optimism: { + tokens: [ + ADDRESSES.optimism.OP, + ADDRESSES.optimism.WETH, + "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4" + ], + owners: [treasury2], + ownTokens: [kncop], + }, + bsc: { + tokens: [ + ADDRESSES.bsc.WBNB + ], + owners: [treasury2], + ownTokens: [kncbsc], }, }) \ No newline at end of file From f0e8c76bae189fc9a0b4eb48efc712d440af2a1b Mon Sep 17 00:00:00 2001 From: yashvik <39464729+waverune@users.noreply.github.com> Date: Mon, 24 Jul 2023 19:40:52 +0530 Subject: [PATCH 1276/1354] Timeswap: zkevm chain added (#6893) * timeswap: adds mantle chain * update: polygon_zkevm chain added --- projects/timeswap-v2/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index 3ec474d73d..d07b58ca7a 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -80,6 +80,10 @@ const config = { mantle: { factory: "0xf8F5e4B7825d484FBDFDC36fc915E79f30b02f9E", fromBlock: 3563, + }, + polygon_zkevm: { + factory: "0x406d3Dfcbe20b642c2262b29b960822975371502", + fromBlock: 1787343, } }; From a3b645723c1a587650b99c79f449be4704e1a5c6 Mon Sep 17 00:00:00 2001 From: ajak1124 <107387535+ajak1124@users.noreply.github.com> Date: Mon, 24 Jul 2023 22:11:13 +0800 Subject: [PATCH 1277/1354] feat: add tvl of teahouse protocol and teahouse-v3 (#6895) * add tvl of teahouse and teahouse-v3 * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/teahouse-v3/abi.json | 4 +++ projects/teahouse-v3/index.js | 40 ++++++++++++++++++++++++++++ projects/teahouse/abi.json | 6 +++++ projects/teahouse/index.js | 49 +++++++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 projects/teahouse-v3/abi.json create mode 100644 projects/teahouse-v3/index.js create mode 100644 projects/teahouse/abi.json create mode 100644 projects/teahouse/index.js diff --git a/projects/teahouse-v3/abi.json b/projects/teahouse-v3/abi.json new file mode 100644 index 0000000000..b6e21cbcbb --- /dev/null +++ b/projects/teahouse-v3/abi.json @@ -0,0 +1,4 @@ +{ + "assetToken1": "function assetToken1() view returns (address)", + "estimatedValueIntoken1": "function estimatedValueInToken1() view returns (uint256 value1)" +} diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js new file mode 100644 index 0000000000..25f35be4e0 --- /dev/null +++ b/projects/teahouse-v3/index.js @@ -0,0 +1,40 @@ +const abi = require("./abi.json"); +const { getConfig } = require("../helper/cache"); + +// teahouse public api for vault +const teahouseVaultAPI = "https://vault-content-api.teahouse.finance/vaults"; + +// get vault contract addresses from teahouse api +async function getVaultContractsAddress(chain) { + let plAddress = []; + const { vaults } = await getConfig("teahouse", teahouseVaultAPI); + vaults.forEach((element) => { + // v3 vaults + if (element.isDeFi == true && element.isActive == true) { + if (element.chain === chain) plAddress.push(element.share.address); + } + }); + return plAddress; +} + +const chains = ["ethereum", "optimism", "arbitrum"]; + +chains.forEach((chain) => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { api }) => { + const vaults = await getVaultContractsAddress(chain); + const tokens = await api.multiCall({ + abi: abi.assetToken1, + calls: vaults, + }); + const bals = await api.multiCall({ + abi: abi.estimatedValueIntoken1, + calls: vaults, + }); + api.addTokens(tokens, bals); + return api.getBalances(); + }, + }; +}); + +module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/teahouse/abi.json b/projects/teahouse/abi.json new file mode 100644 index 0000000000..4ec981ae73 --- /dev/null +++ b/projects/teahouse/abi.json @@ -0,0 +1,6 @@ +{ + "globalState": "function globalState() view returns (uint128 depositLimit, uint128 lockedAssets, uint32 cycleIndex, uint64 cycleStartTimestamp, uint64 fundingLockTimestamp, bool fundClosed)", + "cycleState": "function cycleState(uint32) view returns (uint128 totalFundValue, uint128 fundValueAfterRequests, uint128 requestedDeposits, uint128 convertedDeposits, uint128 requestedWithdrawals, uint128 convertedWithdrawals)", + "asset": "function asset() view returns (address assetTokenAddress)", + "latestAnswer": "function latestAnswer() view returns (int256)" +} diff --git a/projects/teahouse/index.js b/projects/teahouse/index.js new file mode 100644 index 0000000000..62853ef81d --- /dev/null +++ b/projects/teahouse/index.js @@ -0,0 +1,49 @@ +const abi = require("./abi.json"); +const { getConfig } = require("../helper/cache"); + +// teahouse public api for vault +const teahouseVaultAPI = "https://vault-content-api.teahouse.finance/vaults"; + +// get vault contract addresses from teahouse api +async function getVaultContractsAddress(chain) { + let htAddress = []; + const { vaults } = await getConfig("teahouse", teahouseVaultAPI); + vaults.forEach((element) => { + // v2 vaults + if (element.isDeFi == false && element.isActive == true) { + if (element.chain === chain) htAddress.push(element.share.address); + } + }); + return htAddress; +} + + +const chains = ["ethereum", "optimism", "arbitrum"]; + +chains.forEach((chain) => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { api }) => { + const vaults = await getVaultContractsAddress(chain); + const tokens = await api.multiCall({ + abi: "address:asset", + calls: vaults, + }); + const cycleIndices = ( + await api.multiCall({ abi: abi.globalState, calls: vaults }) + ).map((i) => i.cycleIndex); + const bals = ( + await api.multiCall({ + abi: abi.cycleState, + calls: vaults.map((vault, i) => ({ + target: vault, + params: cycleIndices[i] - 1, + })), + }) + ).map((i) => i.fundValueAfterRequests); + api.addTokens(tokens, bals); + return api.getBalances(); + }, + }; +}); + +module.exports.misrepresentedTokens = true \ No newline at end of file From ab891e2c8e2f73211cf70ce5b2373b2301e26066 Mon Sep 17 00:00:00 2001 From: Curbis Norris <130688524+curbisn@users.noreply.github.com> Date: Mon, 24 Jul 2023 07:12:29 -0700 Subject: [PATCH 1278/1354] Dexilla: Add Arbitrum contracts (#6894) * add Dexilla project * Update contract * update timestamp * add optimism chain * add V.4 contracts * add zk contracts * add arbitrum contracts --- projects/dexilla/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js index 000dd94ee1..51d677ed50 100644 --- a/projects/dexilla/index.js +++ b/projects/dexilla/index.js @@ -22,6 +22,14 @@ const config = { '0x44F1C33ED3bf77A5883cBEce1c1b34E71425CE84', ], }, + arbitrum: { + exchanges: [ + '0x8ea13d1a455e5c5b425a6fc7260a01265d4c4673', + '0x8C9DBB80f12D0425eAf127FCC1D92FB21Cb4CE4C', + '0x66A724fa0CEB8adfa064afEf5102A2e04E4264c6', + '0x5dD2a1C1Fb25E30928C901a28Ceaf53E59B606dD', + ], + }, } module.exports = { From 140a37bf5e32cc57cf7065d3ac2f1bdd0f5c6ff6 Mon Sep 17 00:00:00 2001 From: define Date: Mon, 24 Jul 2023 15:25:12 +0100 Subject: [PATCH 1279/1354] treasury geth and l2beat --- projects/treasury/geth.js | 15 +++++++++++++++ projects/treasury/l2beat.js | 15 +++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 projects/treasury/geth.js create mode 100644 projects/treasury/l2beat.js diff --git a/projects/treasury/geth.js b/projects/treasury/geth.js new file mode 100644 index 0000000000..f8df403693 --- /dev/null +++ b/projects/treasury/geth.js @@ -0,0 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { treasuryExports } = require("../helper/treasury"); + +const treasury = "0x21539334f45Ac41Bd10789942b744a18a4775d6d" // + +module.exports = treasuryExports({ + optimism: { + tokens: [ + ADDRESSES.optimism.OP, + ADDRESSES.optimism.WETH + ], + owners: [treasury], + }, + +}) \ No newline at end of file diff --git a/projects/treasury/l2beat.js b/projects/treasury/l2beat.js new file mode 100644 index 0000000000..4b9b5bac73 --- /dev/null +++ b/projects/treasury/l2beat.js @@ -0,0 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { treasuryExports } = require("../helper/treasury"); + +const treasury = "0xea78912803be5e356eac2b8e127d4ba87230a48e" // + +module.exports = treasuryExports({ + optimism: { + tokens: [ + ADDRESSES.optimism.OP, + ADDRESSES.optimism.WETH + ], + owners: [treasury], + }, + +}) \ No newline at end of file From 749416937a71f51ec58e1ef2f19d39f4184b9f26 Mon Sep 17 00:00:00 2001 From: Marcin Ciarka Date: Mon, 24 Jul 2023 16:32:25 +0200 Subject: [PATCH 1280/1354] =?UTF-8?q?=E2=98=80=EF=B8=8F=20Summer.fi=20TVL?= =?UTF-8?q?=20adapter=20(#6820)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * automation adapter work * modularize * better events / cdp list handling * rm fs * dpm adapter * rearrange the files * disable regular maker vaults TVL * ajna borrowish positions * maker tvl with confirmed vaults * ajna earn positions * include block height in automation and maker vaults * add block param to the dpm handler * minor fix --------- Co-authored-by: Piotr Konowrocki Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/env.js | 3 + projects/summer-fi/constants/abi.js | 17 +++ projects/summer-fi/constants/contracts.js | 6 + .../summer-fi/constants/creation-blocks.js | 5 + projects/summer-fi/constants/endpoints.js | 11 ++ projects/summer-fi/constants/index.js | 11 ++ projects/summer-fi/constants/logs-topic.js | 8 ++ projects/summer-fi/handlers/automation-v1.js | 30 +++++ projects/summer-fi/handlers/dpm-positions.js | 108 ++++++++++++++++++ projects/summer-fi/handlers/index.js | 9 ++ projects/summer-fi/handlers/maker-vaults.js | 45 ++++++++ projects/summer-fi/helpers/calls.js | 29 +++++ .../helpers/get-automation-cdp-ids.js | 53 +++++++++ projects/summer-fi/helpers/index.js | 13 +++ projects/summer-fi/index.js | 25 ++++ 15 files changed, 373 insertions(+) create mode 100644 projects/summer-fi/constants/abi.js create mode 100644 projects/summer-fi/constants/contracts.js create mode 100644 projects/summer-fi/constants/creation-blocks.js create mode 100644 projects/summer-fi/constants/endpoints.js create mode 100644 projects/summer-fi/constants/index.js create mode 100644 projects/summer-fi/constants/logs-topic.js create mode 100644 projects/summer-fi/handlers/automation-v1.js create mode 100644 projects/summer-fi/handlers/dpm-positions.js create mode 100644 projects/summer-fi/handlers/index.js create mode 100644 projects/summer-fi/handlers/maker-vaults.js create mode 100644 projects/summer-fi/helpers/calls.js create mode 100644 projects/summer-fi/helpers/get-automation-cdp-ids.js create mode 100644 projects/summer-fi/helpers/index.js create mode 100644 projects/summer-fi/index.js diff --git a/projects/helper/env.js b/projects/helper/env.js index 9b13bdebfa..4982ec6c8d 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -18,6 +18,9 @@ const ENV_KEYS = [ 'GETBLOCK_KEY', 'LOFTY_API', 'OLYMPUS_GRAPH_API_KEY', + 'SUMMER_HISTORY_ENDPOINT', + 'SUMMER_AJNA_ENDPOINT', + 'SUMMER_CONFIRMED_VAULTS_ENDPOINT', ] Object.keys(DEFAULTS).forEach(i => { diff --git a/projects/summer-fi/constants/abi.js b/projects/summer-fi/constants/abi.js new file mode 100644 index 0000000000..aa69665e9b --- /dev/null +++ b/projects/summer-fi/constants/abi.js @@ -0,0 +1,17 @@ +module.exports = { + TriggerAdded: + "event TriggerAdded(uint256 indexed triggerId, address indexed commandAddress, uint256 indexed cdpId, bytes triggerData)", + TriggerExecuted: + "event TriggerExecuted(uint256 indexed triggerId, uint256 indexed cdpId, bytes executionData)", + TriggerRemoved: + "event TriggerRemoved(uint256 indexed cdpId, uint256 indexed triggerId)", + activeTriggers: + "function activeTriggers(uint256) view returns (bytes32 triggerHash, uint256 cdpId)", + self: "address:self", + serviceRegistry: "address:serviceRegistry", + triggersCounter: "uint256:triggersCounter", + getVaultInfo: + "function getVaultInfo(uint256 vaultId) view returns (uint256 collateralLocked, uint256)", + ilks: "function ilks(uint256) view returns (bytes32)", + info: "function info(bytes32 ilk) view returns (string name, string symbol, uint256 class, uint256 dec, address gem, address pip, address join, address xlip)", +}; diff --git a/projects/summer-fi/constants/contracts.js b/projects/summer-fi/constants/contracts.js new file mode 100644 index 0000000000..1e71a703ee --- /dev/null +++ b/projects/summer-fi/constants/contracts.js @@ -0,0 +1,6 @@ +module.exports = { + AutomationV1Contract: "0x6E87a7A0A03E51A741075fDf4D1FCce39a4Df01b", + McdView: "0x6FBef01dd5B8e85b19733AB2A8e243FA3870623B", + CdpManager: "0x5ef30b9986345249bc32d8928b7ee64de9435e39", + IlkRegistry: "0x5a464c28d19848f44199d003bef5ecc87d090f87", +}; diff --git a/projects/summer-fi/constants/creation-blocks.js b/projects/summer-fi/constants/creation-blocks.js new file mode 100644 index 0000000000..be10d07edc --- /dev/null +++ b/projects/summer-fi/constants/creation-blocks.js @@ -0,0 +1,5 @@ +const creationBlocks = { + AutomationV1Contract: 14583413, +}; + +module.exports = creationBlocks; diff --git a/projects/summer-fi/constants/endpoints.js b/projects/summer-fi/constants/endpoints.js new file mode 100644 index 0000000000..fade9273d9 --- /dev/null +++ b/projects/summer-fi/constants/endpoints.js @@ -0,0 +1,11 @@ +const { getEnv } = require("../../helper/env"); + +const endpoints = { + aave: getEnv("SUMMER_HISTORY_ENDPOINT"), + ajna: getEnv("SUMMER_AJNA_ENDPOINT"), + makerVaults: getEnv("SUMMER_CONFIRMED_VAULTS_ENDPOINT"), +}; + +module.exports = { + endpoints, +}; diff --git a/projects/summer-fi/constants/index.js b/projects/summer-fi/constants/index.js new file mode 100644 index 0000000000..382d964231 --- /dev/null +++ b/projects/summer-fi/constants/index.js @@ -0,0 +1,11 @@ +const creationBlocks = require("./creation-blocks"); +const abi = require("./abi"); +const contracts = require("./contracts"); +const logsTopic = require("./logs-topic"); + +module.exports = { + creationBlocks, + abi, + contracts, + logsTopic, +}; diff --git a/projects/summer-fi/constants/logs-topic.js b/projects/summer-fi/constants/logs-topic.js new file mode 100644 index 0000000000..46580cecb3 --- /dev/null +++ b/projects/summer-fi/constants/logs-topic.js @@ -0,0 +1,8 @@ +module.exports = { + TriggerAdded: + "0xcb616360dd177f28577e33576c8ac7ffcc1008cba7ac2323e0b2f170faf60bd2", + TriggerExecuted: + "0xc10f224f2f1ceab5e36f97effaa05c4b75eccbecd77b65bfb20c484de9096cdd", + TriggerRemoved: + "0xb4a1fc324bd863f8cd42582bebf2ce7f2d309c6a84bf371f28e069f95a4fa9e1", +}; diff --git a/projects/summer-fi/handlers/automation-v1.js b/projects/summer-fi/handlers/automation-v1.js new file mode 100644 index 0000000000..6b20fbb903 --- /dev/null +++ b/projects/summer-fi/handlers/automation-v1.js @@ -0,0 +1,30 @@ +const { + getCdpData, + getCdpManagerData, + getIlkRegistryData, +} = require("../helpers"); + +const automationTvl = async ({ api, cdpIdList }) => { + let positionsWithTriggersAndCollateral = 0; + + const cdpIds = [...cdpIdList]; + const ilkNames = await getCdpManagerData(cdpIds, api); + const ilkIds = [...new Set(ilkNames)]; + const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i.gem); + const decimals = await api.multiCall({ + abi: "erc20:decimals", + calls: tokens, + }); + const collData = await getCdpData(cdpIds, api); + collData.forEach(({ collateralLocked }, i) => { + if (collateralLocked > 0) { + positionsWithTriggersAndCollateral++; + } + const idx = ilkIds.indexOf(ilkNames[i]); + api.add(tokens[idx], collateralLocked / 10 ** (18 - decimals[idx])); + }); +}; + +module.exports = { + automationTvl, +}; diff --git a/projects/summer-fi/handlers/dpm-positions.js b/projects/summer-fi/handlers/dpm-positions.js new file mode 100644 index 0000000000..09d35a81a0 --- /dev/null +++ b/projects/summer-fi/handlers/dpm-positions.js @@ -0,0 +1,108 @@ +const BigNumber = require("bignumber.js"); +const { blockQuery } = require("../../helper/http"); +const { endpoints } = require("../constants/endpoints"); + +const NEGATIVE_WAD_PRECISION = -18; +const WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; + +const aaveQuery = (block) => ` +query { + positions(first: 10000, where: { + and: [ + { collateral_gt: 0 }, + { or: [{ protocol: "AAVE" }, { protocol: "AAVE_V3" }] } + ] + }, block: { number: ${block} }) { + collateral + collateralAddress + } +}`; + +const ajnaQuery = (block) => ` +query { + accounts(first: 10000, where: { + and: [ + { isDPM: true }, + { protocol: "Ajna" }, + ] + }, block: { number: ${block} }) { + collateralToken + borrowPositions { + collateral + } + pool { + address + } + } + pools(block: { number: ${block} }) { + address + depositSize + debt + quoteTokenAddress + } +}`; + +const dpmPositions = async ({ api, block }) => { + const aave = await blockQuery(endpoints.aave, aaveQuery(block), { api }); + const ajna = await blockQuery(endpoints.ajna, ajnaQuery(block), { api }); + + const supportedAjnaPools = [ + ...new Set(ajna.accounts.map(({ pool: { address } }) => address)), + ]; + + const aaveBorrowishPositions = aave.positions.map( + ({ collateral, collateralAddress }) => ({ + collateral: new BigNumber(collateral), + collateralAddress, + }) + ); + const ajnaBorrowishPositions = ajna.accounts + .filter(({ borrowPositions }) => borrowPositions.length) + .map(({ borrowPositions: [{ collateral }], collateralToken }) => ({ + collateral: new BigNumber(collateral).shiftedBy(NEGATIVE_WAD_PRECISION), + collateralAddress: collateralToken, + })); + const ajnaEarnPositions = ajna.pools + .filter(({ address }) => supportedAjnaPools.includes(address)) + .map(({ debt, depositSize, quoteTokenAddress }) => ({ + collateral: new BigNumber(depositSize) + .minus(new BigNumber(debt)) + .shiftedBy(NEGATIVE_WAD_PRECISION), + collateralAddress: quoteTokenAddress, + })); + + const tokensWithAmounts = [ + ...aaveBorrowishPositions, + ...ajnaBorrowishPositions, + ...ajnaEarnPositions, + ].reduce( + (total, { collateral, collateralAddress }) => ({ + ...total, + [collateralAddress]: total[collateralAddress] + ? total[collateralAddress].plus(collateral) + : collateral, + }), + {} + ); + + const fallbackDecimal = await api.call({ + abi: "erc20:decimals", + target: WETH_ADDRESS, + }); + const decimals = await api.multiCall({ + abi: "erc20:decimals", + calls: Object.keys(tokensWithAmounts), + }); + + Object.keys(tokensWithAmounts).forEach((collateralAddress, i) => { + api.add( + collateralAddress, + tokensWithAmounts[collateralAddress].toNumber() * + 10 ** (decimals[i] || fallbackDecimal) + ); + }); +}; + +module.exports = { + dpmPositions, +}; diff --git a/projects/summer-fi/handlers/index.js b/projects/summer-fi/handlers/index.js new file mode 100644 index 0000000000..d0ebe456ac --- /dev/null +++ b/projects/summer-fi/handlers/index.js @@ -0,0 +1,9 @@ +const { automationTvl } = require("./automation-v1"); +const { dpmPositions } = require("./dpm-positions"); +const { makerTvl } = require("./maker-vaults"); + +module.exports = { + automationTvl, + dpmPositions, + makerTvl, +}; diff --git a/projects/summer-fi/handlers/maker-vaults.js b/projects/summer-fi/handlers/maker-vaults.js new file mode 100644 index 0000000000..c122469087 --- /dev/null +++ b/projects/summer-fi/handlers/maker-vaults.js @@ -0,0 +1,45 @@ +const { + getCdpData, + getCdpManagerData, + getIlkRegistryData, +} = require("../helpers"); +const { get } = require("../../helper/http"); +const { endpoints } = require("../constants/endpoints"); + +const makerTvl = async ({ api, cdpIdList, block }) => { + const confirmedSummerFiMakerVaults = await get(endpoints.makerVaults); + const confirmedSummerFiMakerVaultsArray = [ + ...Object.keys(confirmedSummerFiMakerVaults), + ]; + const confirmedSummerFiMakerVaultsSet = new Set( + confirmedSummerFiMakerVaultsArray + ); + cdpIdList.forEach((cdpId) => { + confirmedSummerFiMakerVaultsSet.delete(cdpId); + }); + const filteredVaultsList = [...confirmedSummerFiMakerVaultsSet].filter( + (i) => block >= confirmedSummerFiMakerVaults[i] + ); + const ilkNames = await getCdpManagerData( + [...new Set(filteredVaultsList)], + api + ); + const ilkIds = [...new Set(ilkNames)]; + const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i.gem); + const decimals = await api.multiCall({ + abi: "erc20:decimals", + calls: tokens, + }); + const collData = await getCdpData(filteredVaultsList, api); + collData.forEach(({ collateralLocked }, i) => { + const idx = ilkIds.indexOf(ilkNames[i]); + if (idx === -1) { + return; + } + api.add(tokens[idx], collateralLocked / 10 ** (18 - decimals[idx])); + }); +}; + +module.exports = { + makerTvl, +}; diff --git a/projects/summer-fi/helpers/calls.js b/projects/summer-fi/helpers/calls.js new file mode 100644 index 0000000000..0b4bd0ac86 --- /dev/null +++ b/projects/summer-fi/helpers/calls.js @@ -0,0 +1,29 @@ +const abi = require("../constants/abi.js"); +const contracts = require("../constants/contracts.js"); + +const getCdpData = async (cdpIds, api) => + api.multiCall({ + abi: abi.getVaultInfo, + target: contracts.McdView, + calls: cdpIds, + }); + +const getCdpManagerData = async (cdpIds, api) => + api.multiCall({ + abi: abi.ilks, + target: contracts.CdpManager, + calls: cdpIds, + }); + +const getIlkRegistryData = async (ilks, api) => + api.multiCall({ + abi: abi.info, + target: contracts.IlkRegistry, + calls: ilks, + }); + +module.exports = { + getCdpData, + getCdpManagerData, + getIlkRegistryData, +}; diff --git a/projects/summer-fi/helpers/get-automation-cdp-ids.js b/projects/summer-fi/helpers/get-automation-cdp-ids.js new file mode 100644 index 0000000000..07dad771e1 --- /dev/null +++ b/projects/summer-fi/helpers/get-automation-cdp-ids.js @@ -0,0 +1,53 @@ +const { getLogs } = require("../../helper/cache/getLogs"); + +const { abi, contracts, logsTopic, creationBlocks } = require("../constants"); + +const getAutomationCdpIdList = async ({ api, block }) => { + const cdpIdList = new Set(); + const [triggerAddedEvents, triggerRemovedEvents, triggerExecutedEvents] = + await Promise.all( + Object.keys(logsTopic).map((key) => + getLogs({ + api, + fromBlock: creationBlocks.AutomationV1Contract, + toBlock: block, + target: contracts.AutomationV1Contract, + topics: [logsTopic[key]], + eventAbi: abi[key], + extraKey: key, + onlyArgs: true, + }) + ) + ); + const triggerEvents = [ + ...triggerAddedEvents.map((event) => ({ + cdp: event.cdpId.toString(), + trigger: event.triggerId.toString(), + action: "triggerAdded", + })), + ...triggerRemovedEvents.map((event) => ({ + cdp: event.cdpId.toString(), + trigger: event.triggerId.toString(), + action: "triggerRemoved", + })), + ...triggerExecutedEvents.map((event) => ({ + cdp: event.cdpId.toString(), + trigger: event.triggerId.toString(), + action: "triggerExecuted", + })), + ].sort((a, b) => a.trigger - b.trigger); + + triggerEvents.forEach((event) => { + const { cdp, action } = event; + if (action === "triggerAdded") { + cdpIdList.add(cdp); + } else if (action === "triggerRemoved" || action === "triggerExecuted") { + cdpIdList.delete(cdp); + } + }); + return cdpIdList; +}; + +module.exports = { + getAutomationCdpIdList, +}; diff --git a/projects/summer-fi/helpers/index.js b/projects/summer-fi/helpers/index.js new file mode 100644 index 0000000000..0a8157d5c8 --- /dev/null +++ b/projects/summer-fi/helpers/index.js @@ -0,0 +1,13 @@ +const { getAutomationCdpIdList } = require("./get-automation-cdp-ids"); +const { + getCdpData, + getCdpManagerData, + getIlkRegistryData, +} = require("./calls"); + +module.exports = { + getAutomationCdpIdList, + getCdpData, + getCdpManagerData, + getIlkRegistryData, +}; diff --git a/projects/summer-fi/index.js b/projects/summer-fi/index.js new file mode 100644 index 0000000000..b100ac3b50 --- /dev/null +++ b/projects/summer-fi/index.js @@ -0,0 +1,25 @@ +const { automationTvl, dpmPositions, makerTvl } = require("./handlers"); +const { getAutomationCdpIdList } = require("./helpers"); + +module.exports = { + doublecounted: true, + ethereum: { + tvl, + }, +}; + +async function tvl( + timestamp, + block, + { ethereum: ethereumBlockHeight }, // not used, but included for clarity + { api } +) { + const executionStart = Date.now() / 1000; + const cdpIdList = await getAutomationCdpIdList({ api, block }); + await Promise.all([ + dpmPositions({ api, block }), + automationTvl({ api, cdpIdList }), + makerTvl({ api, cdpIdList, block }), + ]); + console.log("Execution time", Date.now() / 1000 - executionStart, "seconds"); +} From 73cdd26d6f54370dc28f4907f64306d665a17608 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:03:19 +0200 Subject: [PATCH 1281/1354] summer-fi: code refactor --- projects/summer-fi/handlers/dpm-positions.js | 6 +++--- projects/summer-fi/handlers/maker-vaults.js | 7 ++----- projects/summer-fi/helpers/calls.js | 21 +++++++++++++------ .../helpers/get-automation-cdp-ids.js | 3 +-- projects/summer-fi/index.js | 17 +++++++++++---- 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/projects/summer-fi/handlers/dpm-positions.js b/projects/summer-fi/handlers/dpm-positions.js index 09d35a81a0..a77cf2423f 100644 --- a/projects/summer-fi/handlers/dpm-positions.js +++ b/projects/summer-fi/handlers/dpm-positions.js @@ -42,9 +42,9 @@ query { } }`; -const dpmPositions = async ({ api, block }) => { - const aave = await blockQuery(endpoints.aave, aaveQuery(block), { api }); - const ajna = await blockQuery(endpoints.ajna, ajnaQuery(block), { api }); +const dpmPositions = async ({ api, }) => { + const aave = await blockQuery(endpoints.aave, aaveQuery(api.block), { api }); + const ajna = await blockQuery(endpoints.ajna, ajnaQuery(api.block), { api }); const supportedAjnaPools = [ ...new Set(ajna.accounts.map(({ pool: { address } }) => address)), diff --git a/projects/summer-fi/handlers/maker-vaults.js b/projects/summer-fi/handlers/maker-vaults.js index c122469087..a34c83ab13 100644 --- a/projects/summer-fi/handlers/maker-vaults.js +++ b/projects/summer-fi/handlers/maker-vaults.js @@ -3,11 +3,8 @@ const { getCdpManagerData, getIlkRegistryData, } = require("../helpers"); -const { get } = require("../../helper/http"); -const { endpoints } = require("../constants/endpoints"); -const makerTvl = async ({ api, cdpIdList, block }) => { - const confirmedSummerFiMakerVaults = await get(endpoints.makerVaults); +const makerTvl = async ({ api, cdpIdList, confirmedSummerFiMakerVaults }) => { const confirmedSummerFiMakerVaultsArray = [ ...Object.keys(confirmedSummerFiMakerVaults), ]; @@ -18,7 +15,7 @@ const makerTvl = async ({ api, cdpIdList, block }) => { confirmedSummerFiMakerVaultsSet.delete(cdpId); }); const filteredVaultsList = [...confirmedSummerFiMakerVaultsSet].filter( - (i) => block >= confirmedSummerFiMakerVaults[i] + (i) => api.block >= confirmedSummerFiMakerVaults[i] ); const ilkNames = await getCdpManagerData( [...new Set(filteredVaultsList)], diff --git a/projects/summer-fi/helpers/calls.js b/projects/summer-fi/helpers/calls.js index 0b4bd0ac86..4bf6b0bf30 100644 --- a/projects/summer-fi/helpers/calls.js +++ b/projects/summer-fi/helpers/calls.js @@ -1,12 +1,21 @@ +const { sliceIntoChunks } = require("@defillama/sdk/build/util/index.js"); const abi = require("../constants/abi.js"); const contracts = require("../constants/contracts.js"); -const getCdpData = async (cdpIds, api) => - api.multiCall({ - abi: abi.getVaultInfo, - target: contracts.McdView, - calls: cdpIds, - }); +const getCdpData = async (cdpIds, api) => { + sdk.log(cdpIds.length, 'cdpIds') + const res = [] + const chunks = sliceIntoChunks(cdpIds, 25) + for (const chunk of chunks) + res.push(...await api.multiCall({ + abi: abi.getVaultInfo, + target: contracts.McdView, + calls: chunk, + })) + ; + + return res +} const getCdpManagerData = async (cdpIds, api) => api.multiCall({ diff --git a/projects/summer-fi/helpers/get-automation-cdp-ids.js b/projects/summer-fi/helpers/get-automation-cdp-ids.js index 07dad771e1..6df1731a7f 100644 --- a/projects/summer-fi/helpers/get-automation-cdp-ids.js +++ b/projects/summer-fi/helpers/get-automation-cdp-ids.js @@ -2,7 +2,7 @@ const { getLogs } = require("../../helper/cache/getLogs"); const { abi, contracts, logsTopic, creationBlocks } = require("../constants"); -const getAutomationCdpIdList = async ({ api, block }) => { +const getAutomationCdpIdList = async ({ api }) => { const cdpIdList = new Set(); const [triggerAddedEvents, triggerRemovedEvents, triggerExecutedEvents] = await Promise.all( @@ -10,7 +10,6 @@ const getAutomationCdpIdList = async ({ api, block }) => { getLogs({ api, fromBlock: creationBlocks.AutomationV1Contract, - toBlock: block, target: contracts.AutomationV1Contract, topics: [logsTopic[key]], eventAbi: abi[key], diff --git a/projects/summer-fi/index.js b/projects/summer-fi/index.js index b100ac3b50..7d129dd29a 100644 --- a/projects/summer-fi/index.js +++ b/projects/summer-fi/index.js @@ -1,5 +1,8 @@ const { automationTvl, dpmPositions, makerTvl } = require("./handlers"); const { getAutomationCdpIdList } = require("./helpers"); +const sdk = require('@defillama/sdk') +const { getConfig } = require("../helper/cache"); +const { endpoints } = require("./constants/endpoints"); module.exports = { doublecounted: true, @@ -14,12 +17,18 @@ async function tvl( { ethereum: ethereumBlockHeight }, // not used, but included for clarity { api } ) { + await api.getBlock() const executionStart = Date.now() / 1000; - const cdpIdList = await getAutomationCdpIdList({ api, block }); + const confirmedSummerFiMakerVaults = await getConfig('summer-fi/maker-vaults', endpoints.makerVaults) + const cdpIdList = await getAutomationCdpIdList({ api }); + + sdk.log([...cdpIdList].length, 'cdpIdList') + await Promise.all([ - dpmPositions({ api, block }), + dpmPositions({ api }), automationTvl({ api, cdpIdList }), - makerTvl({ api, cdpIdList, block }), + makerTvl({ api, cdpIdList, confirmedSummerFiMakerVaults, }), ]); - console.log("Execution time", Date.now() / 1000 - executionStart, "seconds"); + + sdk.log("Execution time", Date.now() / 1000 - executionStart, "seconds"); } From 5e057c801c96f437587f7a59d9f7d1d423ba76d5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 24 Jul 2023 20:59:46 +0200 Subject: [PATCH 1282/1354] bugfix --- projects/summer-fi/helpers/calls.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/summer-fi/helpers/calls.js b/projects/summer-fi/helpers/calls.js index 4bf6b0bf30..19d997ae26 100644 --- a/projects/summer-fi/helpers/calls.js +++ b/projects/summer-fi/helpers/calls.js @@ -1,6 +1,7 @@ const { sliceIntoChunks } = require("@defillama/sdk/build/util/index.js"); const abi = require("../constants/abi.js"); const contracts = require("../constants/contracts.js"); +const sdk = require('@defillama/sdk') const getCdpData = async (cdpIds, api) => { sdk.log(cdpIds.length, 'cdpIds') From 7b1e461442177ca025622c33f49d4d480114487d Mon Sep 17 00:00:00 2001 From: Rubydex <118339704+Rubydex@users.noreply.github.com> Date: Tue, 25 Jul 2023 03:27:55 +0800 Subject: [PATCH 1283/1354] add two chains (#6902) * add bsc chain * add 2 chains --------- Co-authored-by: robert --- projects/rubydex/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/rubydex/index.js b/projects/rubydex/index.js index bc06531bbe..59164aa6d8 100644 --- a/projects/rubydex/index.js +++ b/projects/rubydex/index.js @@ -2,6 +2,8 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); const VAULT_ARBITRUM = '0x4a7c10780afdba628332e31c9e7d1675cfad594c'; const VAULT_BSC = '0xedB6CD4fdd2F465d2234f978276F9Ed2EE02102c'; +const VAULT_ZKSYNC_ERA = '0x211ac72f3ee4a35523B41aA8D67644E1eF860059'; +const VAULT_ETHEREUM = '0x1DE35eB48f92Fb38dee51041AAE86FFf18029E90'; module.exports = { methodology: 'USDT tokens held by the RubyDex Vault contract.', @@ -10,5 +12,11 @@ module.exports = { }, bsc: { tvl: sumTokensExport({ owner: VAULT_BSC, tokens: [ADDRESSES.bsc.USDT] }), - } + }, + era: { + tvl: sumTokensExport({ owner: VAULT_ZKSYNC_ERA, tokens: [ADDRESSES.era.USDT] }), + }, + ethereum: { + tvl: sumTokensExport({ owner: VAULT_ETHEREUM, tokens: [ADDRESSES.ethereum.USDT] }), + }, }; From 3827882796de0d850e0399aac0fc0d73013c5b38 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 25 Jul 2023 10:25:20 +0100 Subject: [PATCH 1284/1354] fix ethereum chain davos protocol --- projects/davos-protocol/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js index f4f6b47fe8..9b077e3ad9 100644 --- a/projects/davos-protocol/index.js +++ b/projects/davos-protocol/index.js @@ -9,11 +9,12 @@ module.exports = { ] }), }, ethereum: { - tvl: sumTokensExport({ chain: 'ethereum', owner: '0x819d1Daa794c1c46B841981b61cC978d95A17b8e', tokens: [ + tvl: sumTokensExport({ chain: 'ethereum', owners: ['0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0xb396b31599333739A97951b74652c117BE86eE1D', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d'], tokens: [ ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.RETH, '0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599', //stmatic ADDRESSES.ethereum.sfrxETH, + ADDRESSES.ethereum.MATIC ] }), } } From f3b0050d44c70e18364823b3962da742ae276823 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:28:38 +0200 Subject: [PATCH 1285/1354] summer-fi: cache responses --- projects/summer-fi/constants/contracts.js | 2 +- projects/summer-fi/handlers/automation-v1.js | 8 +- projects/summer-fi/handlers/maker-vaults.js | 5 +- projects/summer-fi/helpers/calls.js | 82 ++++++++++++++++---- projects/summer-fi/helpers/index.js | 4 + projects/summer-fi/index.js | 27 ++++--- 6 files changed, 90 insertions(+), 38 deletions(-) diff --git a/projects/summer-fi/constants/contracts.js b/projects/summer-fi/constants/contracts.js index 1e71a703ee..52c475bf9b 100644 --- a/projects/summer-fi/constants/contracts.js +++ b/projects/summer-fi/constants/contracts.js @@ -1,6 +1,6 @@ module.exports = { AutomationV1Contract: "0x6E87a7A0A03E51A741075fDf4D1FCce39a4Df01b", - McdView: "0x6FBef01dd5B8e85b19733AB2A8e243FA3870623B", + McdView: "0x55Dc2Be8020bCa72E58e665dC931E03B749ea5E0", CdpManager: "0x5ef30b9986345249bc32d8928b7ee64de9435e39", IlkRegistry: "0x5a464c28d19848f44199d003bef5ecc87d090f87", }; diff --git a/projects/summer-fi/handlers/automation-v1.js b/projects/summer-fi/handlers/automation-v1.js index 6b20fbb903..65d401ac90 100644 --- a/projects/summer-fi/handlers/automation-v1.js +++ b/projects/summer-fi/handlers/automation-v1.js @@ -2,6 +2,7 @@ const { getCdpData, getCdpManagerData, getIlkRegistryData, + getDecimalsData, } = require("../helpers"); const automationTvl = async ({ api, cdpIdList }) => { @@ -10,11 +11,8 @@ const automationTvl = async ({ api, cdpIdList }) => { const cdpIds = [...cdpIdList]; const ilkNames = await getCdpManagerData(cdpIds, api); const ilkIds = [...new Set(ilkNames)]; - const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i.gem); - const decimals = await api.multiCall({ - abi: "erc20:decimals", - calls: tokens, - }); + const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i[4]); + const decimals = await getDecimalsData(tokens, api); const collData = await getCdpData(cdpIds, api); collData.forEach(({ collateralLocked }, i) => { if (collateralLocked > 0) { diff --git a/projects/summer-fi/handlers/maker-vaults.js b/projects/summer-fi/handlers/maker-vaults.js index a34c83ab13..1884441984 100644 --- a/projects/summer-fi/handlers/maker-vaults.js +++ b/projects/summer-fi/handlers/maker-vaults.js @@ -11,9 +11,10 @@ const makerTvl = async ({ api, cdpIdList, confirmedSummerFiMakerVaults }) => { const confirmedSummerFiMakerVaultsSet = new Set( confirmedSummerFiMakerVaultsArray ); - cdpIdList.forEach((cdpId) => { + ([...cdpIdList]).forEach((cdpId) => { confirmedSummerFiMakerVaultsSet.delete(cdpId); }); + const filteredVaultsList = [...confirmedSummerFiMakerVaultsSet].filter( (i) => api.block >= confirmedSummerFiMakerVaults[i] ); @@ -22,7 +23,7 @@ const makerTvl = async ({ api, cdpIdList, confirmedSummerFiMakerVaults }) => { api ); const ilkIds = [...new Set(ilkNames)]; - const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i.gem); + const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i[4]); const decimals = await api.multiCall({ abi: "erc20:decimals", calls: tokens, diff --git a/projects/summer-fi/helpers/calls.js b/projects/summer-fi/helpers/calls.js index 19d997ae26..58f22f7ae2 100644 --- a/projects/summer-fi/helpers/calls.js +++ b/projects/summer-fi/helpers/calls.js @@ -4,36 +4,86 @@ const contracts = require("../constants/contracts.js"); const sdk = require('@defillama/sdk') const getCdpData = async (cdpIds, api) => { - sdk.log(cdpIds.length, 'cdpIds') const res = [] - const chunks = sliceIntoChunks(cdpIds, 25) - for (const chunk of chunks) + const chunks = sliceIntoChunks(cdpIds, 100) + for (const chunk of chunks) res.push(...await api.multiCall({ abi: abi.getVaultInfo, target: contracts.McdView, calls: chunk, })) - ; return res } -const getCdpManagerData = async (cdpIds, api) => - api.multiCall({ - abi: abi.ilks, - target: contracts.CdpManager, - calls: cdpIds, - }); +const getCdpManagerData = async (cdpIds, api) => { + return cachedCalls({ + items: cdpIds, + multiCall: async calls => api.multiCall({ + abi: abi.ilks, + target: contracts.CdpManager, + calls, + }), + key: 'getCdpManagerData', + }) +} + +const getIlkRegistryData = async (ilks, api) => { + return cachedCalls({ + items: ilks, + multiCall: async calls => api.multiCall({ + abi: abi.info, + target: contracts.IlkRegistry, + calls, + }), + key: 'getIlkRegistryData', + }) +} -const getIlkRegistryData = async (ilks, api) => - api.multiCall({ - abi: abi.info, - target: contracts.IlkRegistry, - calls: ilks, - }); +const getDecimalsData = async (tokens, api) => { + return cachedCalls({ + items: tokens, + multiCall: async calls => api.multiCall({ + abi: 'erc20:decimals', + calls, + }), + key: 'getDecimalsData', + }) +} + +let cache = {} +function setCallCache(_cache) { + cache = _cache +} + +async function cachedCalls({ items, multiCall, key }) { + if (!cache[key]) cache[key] = {} + const res = [] + const missingIds = [] + const missingIndices = [] + items.forEach((id, i) => { + if (cache[key][id]) res[i] = cache[key][id] + else { + missingIds.push(id) + missingIndices.push(i) + } + }) + + if (missingIds.length) { + sdk.log('Missing ids', missingIds.length, 'key', key) + const tempRes = await multiCall(missingIds); + missingIds.forEach((id, i) => { + res[missingIndices[i]] = tempRes[i] + cache[key][id] = tempRes[i] + }) + } + return res +} module.exports = { getCdpData, getCdpManagerData, getIlkRegistryData, + getDecimalsData, + setCallCache, }; diff --git a/projects/summer-fi/helpers/index.js b/projects/summer-fi/helpers/index.js index 0a8157d5c8..ccad34a095 100644 --- a/projects/summer-fi/helpers/index.js +++ b/projects/summer-fi/helpers/index.js @@ -3,11 +3,15 @@ const { getCdpData, getCdpManagerData, getIlkRegistryData, + getDecimalsData, + setCallCache, } = require("./calls"); module.exports = { + setCallCache, getAutomationCdpIdList, getCdpData, getCdpManagerData, getIlkRegistryData, + getDecimalsData, }; diff --git a/projects/summer-fi/index.js b/projects/summer-fi/index.js index 7d129dd29a..4a26e05a67 100644 --- a/projects/summer-fi/index.js +++ b/projects/summer-fi/index.js @@ -1,34 +1,33 @@ const { automationTvl, dpmPositions, makerTvl } = require("./handlers"); -const { getAutomationCdpIdList } = require("./helpers"); +const { getAutomationCdpIdList, setCallCache } = require("./helpers"); const sdk = require('@defillama/sdk') -const { getConfig } = require("../helper/cache"); +const { getConfig, getCache, setCache } = require("../helper/cache"); const { endpoints } = require("./constants/endpoints"); module.exports = { doublecounted: true, - ethereum: { - tvl, - }, + ethereum: { tvl, }, }; -async function tvl( - timestamp, - block, - { ethereum: ethereumBlockHeight }, // not used, but included for clarity - { api } -) { +async function tvl(_, _1, _2, { api }) { await api.getBlock() const executionStart = Date.now() / 1000; - const confirmedSummerFiMakerVaults = await getConfig('summer-fi/maker-vaults', endpoints.makerVaults) - const cdpIdList = await getAutomationCdpIdList({ api }); + const [ confirmedSummerFiMakerVaults, cdpIdList, cache ] = await Promise.all([ + getConfig('summer-fi/maker-vaults', endpoints.makerVaults), + getAutomationCdpIdList({ api }), + getCache('summer-fi/cache', api.chain), + ]); + + setCallCache(cache) sdk.log([...cdpIdList].length, 'cdpIdList') - + await Promise.all([ dpmPositions({ api }), automationTvl({ api, cdpIdList }), makerTvl({ api, cdpIdList, confirmedSummerFiMakerVaults, }), ]); + await setCache('summer-fi/cache', api.chain, cache); sdk.log("Execution time", Date.now() / 1000 - executionStart, "seconds"); } From 6d64b5102fa772ca3cc8bc646ef90ba0813cf41d Mon Sep 17 00:00:00 2001 From: Kosiso Date: Tue, 25 Jul 2023 12:03:15 +0100 Subject: [PATCH 1286/1354] feat: adds support for base (#6906) --- projects/good-ghosting/index.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/projects/good-ghosting/index.js b/projects/good-ghosting/index.js index dddce3197a..62d1d315f1 100644 --- a/projects/good-ghosting/index.js +++ b/projects/good-ghosting/index.js @@ -7,24 +7,23 @@ const chainIdMap = { ethereum: 1, polygon: 137, celo: 42220, + base: 8453, }; const contractVersions = { - v200: ["2.0.0", "2.0.1", "2.0.2", "2.0.3", "2.0.4", "2.0.5"], + v200: ["2.0"], v001: "0.0.1", v002: "0.0.2", v003: "0.0.3", }; const isV2Game = (contractVersion) => { - if (contractVersions.v200.includes(contractVersion)) { - return true; - } - const [derivedContractVersion] = contractVersion.split("-"); - if (contractVersions.v200.includes(derivedContractVersion)) { - return true; - } - return false; + const baseContractVersion = contractVersion.slice(0, 3); + + if (contractVersions.v200.indexOf(baseContractVersion) !== -1) { + return true; + } + return false; } async function tvl(_, _b, _cb, { api, }) { @@ -46,4 +45,5 @@ module.exports = { methodology: "counts the amount of interest bearing tokens owned by the smart game contract", polygon: { tvl }, celo: { tvl }, + base: {tvl} }; From 7f4ace644a17558fd13d1caa58db23363a2c3960 Mon Sep 17 00:00:00 2001 From: Krunal Amin Date: Tue, 25 Jul 2023 05:05:06 -0600 Subject: [PATCH 1287/1354] Add arbitrum and all its pools (#6904) * add zksync era * add arbitrum --- projects/unidex/index.js | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/projects/unidex/index.js b/projects/unidex/index.js index 8ba83dba56..55bc1ec7ab 100644 --- a/projects/unidex/index.js +++ b/projects/unidex/index.js @@ -15,6 +15,45 @@ async function FantomTvl(_time, _ethBlock, { fantom: block }) { return sumTokens2({ chain, block, tokens, owners, }) } +async function ArbitrumTvl(_time, _ethBlock, { arbitrum: block }) { + const contracts = { + "ethPool": "0xdAF7D157F5c6E0F1d7917Ca02a7C185cEF81e6d0", + "usdcPool": "0x09E122453A079bc2Be621769ae7799e53dA0054E", + "daiPool": "0xb764729C6bEbd6E60E151F2c46aFce7D6Ff513fD", + "usdtPool": "0x9f6B9e253De52C5fD6c65283ff472b15520a7070", + "wbtcPool": "0xe736742Eb62F271c48F4a26168FD8F356AeE68db", + "arbPool": "0xF1Cb521C753e41906073eBEd30FE34BCB00845f8", + "mimPool": "0x266B30394da3D99a846dD30A2F7C50bb523c5dE1", + "gdaiPool": "0x7638Db20715c5AC09f52bE1E3a4DBb220680BdFd", + "ramPool": "0x914172b52262E867D8f2959D884e0ea73795B2c6", + "maiPool": "0xEfD0B28810dC3cdD88763f40DCc44462bb85Cf32", + "gmxPool": "0xDaa78E776D3788F9FBABDAc02aa6De45f7BC50C6", + "wstethPool": "0x53C6c525a635eF56Bce43d4523D90aACE551D81b", + "gnsPool": "0x13ff1aB07540b1681173003E361D046530506c11", + "capPool": "0x99DDb3E66A592579B9D46a47824042F62D690a9e", + "unshethPool": "0x5372Af9b4E9d4b9C016574Dad0f2406Dfe023D5F", + }; + const usdc = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8"; + const dai = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1"; + const usdt = "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"; + const wbtc = "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"; + const arb = "0x912ce59144191c1204e64559fe8253a0e49e6548"; + const mim = "0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a"; + const gdai = "0xd85e038593d7a098614721eae955ec2022b9b91b"; + const ram = "0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418"; + const mai = "0x5979D7b546E38E414F7E9822514be443A4800529"; + const gmx = "0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a"; + const wsteth = "0x5979D7b546E38E414F7E9822514be443A4800529"; + const gns = "0x18c11FD286C5EC11c3b683Caa813B77f5163A122"; + const cap = "0x031d35296154279dc1984dcd93e392b1f946737b"; + const unsheth = "0x0Ae38f7E10A43B5b2fB064B42a2f4514cbA909ef"; + + const chain = 'arbitrum' + const tokens = [usdc, dai, nullAddress, usdt, wbtc, arb, mim, gdai, ram, mai, gmx, wsteth, gns, cap, unsheth] + const owners = Object.values(contracts) + return sumTokens2({ chain, block, tokens, owners, }) +} + async function BobaTvl(_time, _ethBlock, { boba: block }) { const contracts = { "ethpool": "0x9673B0E0F07e4a6da712F6847aE93C3F157DD509", @@ -75,6 +114,9 @@ module.exports = { fantom: { tvl: FantomTvl }, + arbitrum: { + tvl: ArbitrumTvl + }, boba: { tvl: BobaTvl }, From 317b8810fcd383fd72bbc74f0c00f9f657be1991 Mon Sep 17 00:00:00 2001 From: Marcin Ciarka Date: Tue, 25 Jul 2023 14:49:31 +0200 Subject: [PATCH 1288/1354] =?UTF-8?q?=E2=98=80=EF=B8=8F=20Summer.fi=20-=20?= =?UTF-8?q?adapter=20fixes=20(#6907)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * new confirmedSummerFiMakerVaults handling, change the MCDView contract * sync --- projects/summer-fi/constants/contracts.js | 2 +- projects/summer-fi/handlers/maker-vaults.js | 8 +- projects/summer-fi/helpers/calls.js | 102 +++++++++++--------- projects/summer-fi/index.js | 20 ++-- 4 files changed, 72 insertions(+), 60 deletions(-) diff --git a/projects/summer-fi/constants/contracts.js b/projects/summer-fi/constants/contracts.js index 52c475bf9b..d33ef54c98 100644 --- a/projects/summer-fi/constants/contracts.js +++ b/projects/summer-fi/constants/contracts.js @@ -1,6 +1,6 @@ module.exports = { AutomationV1Contract: "0x6E87a7A0A03E51A741075fDf4D1FCce39a4Df01b", - McdView: "0x55Dc2Be8020bCa72E58e665dC931E03B749ea5E0", + McdMonitorV2: "0xa59d5E94BFE605A9a4aC7e02f5380e02061c8dd2", CdpManager: "0x5ef30b9986345249bc32d8928b7ee64de9435e39", IlkRegistry: "0x5a464c28d19848f44199d003bef5ecc87d090f87", }; diff --git a/projects/summer-fi/handlers/maker-vaults.js b/projects/summer-fi/handlers/maker-vaults.js index 1884441984..9d7eae5c93 100644 --- a/projects/summer-fi/handlers/maker-vaults.js +++ b/projects/summer-fi/handlers/maker-vaults.js @@ -16,7 +16,13 @@ const makerTvl = async ({ api, cdpIdList, confirmedSummerFiMakerVaults }) => { }); const filteredVaultsList = [...confirmedSummerFiMakerVaultsSet].filter( - (i) => api.block >= confirmedSummerFiMakerVaults[i] + (i) => { + const [startBlock, endBlock] = confirmedSummerFiMakerVaults[i]; + if (!endBlock) { + return api.block > startBlock; + } + return api.block > startBlock && api.block <= endBlock; + } ); const ilkNames = await getCdpManagerData( [...new Set(filteredVaultsList)], diff --git a/projects/summer-fi/helpers/calls.js b/projects/summer-fi/helpers/calls.js index 58f22f7ae2..0befab017e 100644 --- a/projects/summer-fi/helpers/calls.js +++ b/projects/summer-fi/helpers/calls.js @@ -1,83 +1,89 @@ const { sliceIntoChunks } = require("@defillama/sdk/build/util/index.js"); const abi = require("../constants/abi.js"); const contracts = require("../constants/contracts.js"); -const sdk = require('@defillama/sdk') +const sdk = require("@defillama/sdk"); const getCdpData = async (cdpIds, api) => { - const res = [] - const chunks = sliceIntoChunks(cdpIds, 100) + sdk.log(cdpIds.length, "cdpIds"); + const res = []; + const chunks = sliceIntoChunks(cdpIds, 25); for (const chunk of chunks) - res.push(...await api.multiCall({ - abi: abi.getVaultInfo, - target: contracts.McdView, - calls: chunk, - })) + res.push( + ...(await api.multiCall({ + abi: abi.getVaultInfo, + target: contracts.McdMonitorV2, + calls: chunk, + })) + ); - return res -} + return res; +}; const getCdpManagerData = async (cdpIds, api) => { return cachedCalls({ items: cdpIds, - multiCall: async calls => api.multiCall({ - abi: abi.ilks, - target: contracts.CdpManager, - calls, - }), - key: 'getCdpManagerData', - }) -} + multiCall: async (calls) => + api.multiCall({ + abi: abi.ilks, + target: contracts.CdpManager, + calls, + }), + key: "getCdpManagerData", + }); +}; const getIlkRegistryData = async (ilks, api) => { return cachedCalls({ items: ilks, - multiCall: async calls => api.multiCall({ - abi: abi.info, - target: contracts.IlkRegistry, - calls, - }), - key: 'getIlkRegistryData', - }) -} + multiCall: async (calls) => + api.multiCall({ + abi: abi.info, + target: contracts.IlkRegistry, + calls, + }), + key: "getIlkRegistryData", + }); +}; const getDecimalsData = async (tokens, api) => { return cachedCalls({ items: tokens, - multiCall: async calls => api.multiCall({ - abi: 'erc20:decimals', - calls, - }), - key: 'getDecimalsData', - }) -} + multiCall: async (calls) => + api.multiCall({ + abi: "erc20:decimals", + calls, + }), + key: "getDecimalsData", + }); +}; -let cache = {} +let cache = {}; function setCallCache(_cache) { - cache = _cache + cache = _cache; } async function cachedCalls({ items, multiCall, key }) { - if (!cache[key]) cache[key] = {} - const res = [] - const missingIds = [] - const missingIndices = [] + if (!cache[key]) cache[key] = {}; + const res = []; + const missingIds = []; + const missingIndices = []; items.forEach((id, i) => { - if (cache[key][id]) res[i] = cache[key][id] + if (cache[key][id]) res[i] = cache[key][id]; else { - missingIds.push(id) - missingIndices.push(i) + missingIds.push(id); + missingIndices.push(i); } - }) + }); if (missingIds.length) { - sdk.log('Missing ids', missingIds.length, 'key', key) + sdk.log("Missing ids", missingIds.length, "key", key); const tempRes = await multiCall(missingIds); missingIds.forEach((id, i) => { - res[missingIndices[i]] = tempRes[i] - cache[key][id] = tempRes[i] - }) + res[missingIndices[i]] = tempRes[i]; + cache[key][id] = tempRes[i]; + }); } - return res + return res; } module.exports = { diff --git a/projects/summer-fi/index.js b/projects/summer-fi/index.js index 4a26e05a67..8ac5635c8e 100644 --- a/projects/summer-fi/index.js +++ b/projects/summer-fi/index.js @@ -1,33 +1,33 @@ const { automationTvl, dpmPositions, makerTvl } = require("./handlers"); const { getAutomationCdpIdList, setCallCache } = require("./helpers"); -const sdk = require('@defillama/sdk') +const sdk = require("@defillama/sdk"); const { getConfig, getCache, setCache } = require("../helper/cache"); const { endpoints } = require("./constants/endpoints"); module.exports = { doublecounted: true, - ethereum: { tvl, }, + ethereum: { tvl }, }; async function tvl(_, _1, _2, { api }) { - await api.getBlock() + await api.getBlock(); const executionStart = Date.now() / 1000; - const [ confirmedSummerFiMakerVaults, cdpIdList, cache ] = await Promise.all([ - getConfig('summer-fi/maker-vaults', endpoints.makerVaults), + const [confirmedSummerFiMakerVaults, cdpIdList, cache] = await Promise.all([ + await getConfig("summer-fi/maker-vaults", endpoints.makerVaults), getAutomationCdpIdList({ api }), - getCache('summer-fi/cache', api.chain), + getCache("summer-fi/cache", api.chain), ]); - setCallCache(cache) + setCallCache(cache); - sdk.log([...cdpIdList].length, 'cdpIdList') + sdk.log([...cdpIdList].length, "cdpIdList"); await Promise.all([ dpmPositions({ api }), automationTvl({ api, cdpIdList }), - makerTvl({ api, cdpIdList, confirmedSummerFiMakerVaults, }), + makerTvl({ api, cdpIdList, confirmedSummerFiMakerVaults }), ]); - await setCache('summer-fi/cache', api.chain, cache); + await setCache("summer-fi/cache", api.chain, cache); sdk.log("Execution time", Date.now() / 1000 - executionStart, "seconds"); } From 5f97453310517fdb32fd6c6fe9152aa6b6ce7e1f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Jul 2023 15:29:10 +0200 Subject: [PATCH 1289/1354] update summer.fi --- projects/summer-fi/constants/abi.js | 2 +- projects/summer-fi/handlers/automation-v1.js | 4 +++- projects/summer-fi/handlers/maker-vaults.js | 16 +++++++--------- projects/summer-fi/helpers/calls.js | 5 ++--- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/projects/summer-fi/constants/abi.js b/projects/summer-fi/constants/abi.js index aa69665e9b..5dc735e42b 100644 --- a/projects/summer-fi/constants/abi.js +++ b/projects/summer-fi/constants/abi.js @@ -11,7 +11,7 @@ module.exports = { serviceRegistry: "address:serviceRegistry", triggersCounter: "uint256:triggersCounter", getVaultInfo: - "function getVaultInfo(uint256 vaultId) view returns (uint256 collateralLocked, uint256)", + "function getCdpInfo(uint256 vaultId,bytes32) view returns (uint256 collateralLocked, uint256)", ilks: "function ilks(uint256) view returns (bytes32)", info: "function info(bytes32 ilk) view returns (string name, string symbol, uint256 class, uint256 dec, address gem, address pip, address join, address xlip)", }; diff --git a/projects/summer-fi/handlers/automation-v1.js b/projects/summer-fi/handlers/automation-v1.js index 65d401ac90..7458782616 100644 --- a/projects/summer-fi/handlers/automation-v1.js +++ b/projects/summer-fi/handlers/automation-v1.js @@ -10,10 +10,12 @@ const automationTvl = async ({ api, cdpIdList }) => { const cdpIds = [...cdpIdList]; const ilkNames = await getCdpManagerData(cdpIds, api); + const cdpIlkIds = {} + ilkNames.forEach((val, idx) => cdpIlkIds[cdpIds[idx]] = val) const ilkIds = [...new Set(ilkNames)]; const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i[4]); const decimals = await getDecimalsData(tokens, api); - const collData = await getCdpData(cdpIds, api); + const collData = await getCdpData(cdpIds.map(i => [i, cdpIlkIds[i]]), api); collData.forEach(({ collateralLocked }, i) => { if (collateralLocked > 0) { positionsWithTriggersAndCollateral++; diff --git a/projects/summer-fi/handlers/maker-vaults.js b/projects/summer-fi/handlers/maker-vaults.js index 9d7eae5c93..74a6bde966 100644 --- a/projects/summer-fi/handlers/maker-vaults.js +++ b/projects/summer-fi/handlers/maker-vaults.js @@ -2,6 +2,7 @@ const { getCdpData, getCdpManagerData, getIlkRegistryData, + getDecimalsData, } = require("../helpers"); const makerTvl = async ({ api, cdpIdList, confirmedSummerFiMakerVaults }) => { @@ -24,17 +25,14 @@ const makerTvl = async ({ api, cdpIdList, confirmedSummerFiMakerVaults }) => { return api.block > startBlock && api.block <= endBlock; } ); - const ilkNames = await getCdpManagerData( - [...new Set(filteredVaultsList)], - api - ); + const cdpIds = [...new Set(filteredVaultsList)] + const ilkNames = await getCdpManagerData(cdpIds, api); + const cdpIlkIds = {} + ilkNames.forEach((val, idx) => cdpIlkIds[cdpIds[idx]] = val) const ilkIds = [...new Set(ilkNames)]; const tokens = (await getIlkRegistryData(ilkIds, api)).map((i) => i[4]); - const decimals = await api.multiCall({ - abi: "erc20:decimals", - calls: tokens, - }); - const collData = await getCdpData(filteredVaultsList, api); + const decimals = await getDecimalsData(tokens, api); + const collData = await getCdpData(filteredVaultsList.map(i => [i, cdpIlkIds[i]]), api); collData.forEach(({ collateralLocked }, i) => { const idx = ilkIds.indexOf(ilkNames[i]); if (idx === -1) { diff --git a/projects/summer-fi/helpers/calls.js b/projects/summer-fi/helpers/calls.js index 0befab017e..cf2c8223d9 100644 --- a/projects/summer-fi/helpers/calls.js +++ b/projects/summer-fi/helpers/calls.js @@ -4,15 +4,14 @@ const contracts = require("../constants/contracts.js"); const sdk = require("@defillama/sdk"); const getCdpData = async (cdpIds, api) => { - sdk.log(cdpIds.length, "cdpIds"); const res = []; - const chunks = sliceIntoChunks(cdpIds, 25); + const chunks = sliceIntoChunks(cdpIds, 100); for (const chunk of chunks) res.push( ...(await api.multiCall({ abi: abi.getVaultInfo, target: contracts.McdMonitorV2, - calls: chunk, + calls: chunk.map(i => ({ params: i})), })) ); From b5fb9ead930e015367e64488676412e6cf9e2fe0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Jul 2023 15:56:28 +0200 Subject: [PATCH 1290/1354] fix broken adapters --- projects/ABCDEFX/index.js | 1 + projects/Lockless/index.js | 12 ++++++------ projects/defyswap/index.js | 2 +- projects/echswap/index.js | 2 +- projects/helper/chain/litecoin.js | 7 +++++-- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/projects/ABCDEFX/index.js b/projects/ABCDEFX/index.js index 1623b148fa..6e31454c9d 100644 --- a/projects/ABCDEFX/index.js +++ b/projects/ABCDEFX/index.js @@ -9,3 +9,4 @@ module.exports = { chains.forEach(chain => { module.exports[chain] = { tvl: getUniTVL({ factory: '0x01F43D2A7F4554468f77e06757e707150e39130c', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'ABcDeFx.LP' }) } }) +module.exports.echelon.tvl = () => ({}) \ No newline at end of file diff --git a/projects/Lockless/index.js b/projects/Lockless/index.js index 1fccefa0b2..1640ef60f0 100644 --- a/projects/Lockless/index.js +++ b/projects/Lockless/index.js @@ -1,19 +1,19 @@ -const swkava = '0x9d9682577CA889c882412056669bd936894663fd' -const swech = '0x86e4D91800c03e803d4c8FA3293d1C7d612A7300' +const swkava = '0x9d9682577CA889c882412056669bd936894663fd' +const swech = '0x86e4D91800c03e803d4c8FA3293d1C7d612A7300' -async function tvl(timestamp, ethBlock, {kava: block}, { api }) { +async function tvl(timestamp, ethBlock, { kava: block }, { api }) { const pooledCoin = await api.call({ - target: api.chain === 'kava' ? swkava: swech, + target: api.chain === 'kava' ? swkava : swech, abi: "uint256:totalSupply", }) return { - [api.chain === 'kava' ? 'kava' : 'echelon']: pooledCoin/1e18, + [api.chain === 'kava' ? 'kava' : 'echelon']: pooledCoin / 1e18, } } module.exports = { kava: { tvl }, - echelon: { tvl }, + echelon: { tvl: () => ({}), }, methodology: "Any & Each 1 SW-Token can only ever be minted by permanent locking of 1 Native token. Hence, the totalSupply() method is used to aggregate the amounts of underlying assets, with their prices fed by the DefiLlama SDK.", } diff --git a/projects/defyswap/index.js b/projects/defyswap/index.js index 2889e5e648..b1457bad44 100644 --- a/projects/defyswap/index.js +++ b/projects/defyswap/index.js @@ -15,7 +15,7 @@ const whitelist = [ module.exports = { misrepresentedTokens: true, echelon: { - tvl: getUniTVL({ chain: 'echelon', useDefaultCoreAssets: true, factory: '0xdBE4CC36D0C19858d8cc7c5030593E9922aC680D' }) + tvl: () => ({}), }, fantom: { tvl: getUniTVL({ factory, chain: 'fantom', useDefaultCoreAssets: true }), diff --git a/projects/echswap/index.js b/projects/echswap/index.js index d694c736ce..751dcffd94 100644 --- a/projects/echswap/index.js +++ b/projects/echswap/index.js @@ -6,6 +6,6 @@ module.exports = { [1671062400, "Rug Pull"] ], echelon: { - tvl: getUniTVL({ chain: 'echelon', useDefaultCoreAssets: true, factory: '0xaFd37A86044528010d0E70cDc58d0A9B5Eb03206' }) + tvl: () => ({}), } } \ No newline at end of file diff --git a/projects/helper/chain/litecoin.js b/projects/helper/chain/litecoin.js index 092c830d88..f24b942d5b 100644 --- a/projects/helper/chain/litecoin.js +++ b/projects/helper/chain/litecoin.js @@ -1,10 +1,13 @@ const sdk = require('@defillama/sdk') const { get } = require('../http') -const url = addr => 'https://chainz.cryptoid.info/ltc/api.dws?q=getbalance&a=' + addr +// const url = addr => 'https://chainz.cryptoid.info/ltc/api.dws?q=getbalance&a=' + addr +const url = addr => 'https://ltc.tokenview.io/api/address/balancetrend/ltc/' + addr async function getBalance(addr) { - return get(url(addr)) + // return get(url(addr)) + const {data} = await get(url(addr)) + return +Object.values(data[0])[0] } async function sumTokens({ balances = {}, owners = [] }) { From d0881734931adeb27a1d594b79559d7d3a34019a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Jul 2023 16:43:24 +0200 Subject: [PATCH 1291/1354] trufin: liquid staking --- projects/trufin-trustake/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/trufin-trustake/index.js diff --git a/projects/trufin-trustake/index.js b/projects/trufin-trustake/index.js new file mode 100644 index 0000000000..e218d2f7b6 --- /dev/null +++ b/projects/trufin-trustake/index.js @@ -0,0 +1,24 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const abi = { + "totalShares": "uint256:totalShares", + "sharePrice": "function sharePrice() external view returns (uint256, uint256)", + "getDust": "uint256:getDust" +} + +const TRUSTAKE_CONTRACT_ADDR = "0xa43a7c62d56df036c187e1966c03e2799d8987ed" +const MATIC_TOKEN_ADDR = ADDRESSES.ethereum.MATIC + +async function tvl(timestamp, block, chainBlocks, { api }) { + const totalSupply = (await api.call({ abi: 'erc20:totalSupply', target: TRUSTAKE_CONTRACT_ADDR, })) + const sharePriceArray = (await api.call({ abi: abi.sharePrice, target: TRUSTAKE_CONTRACT_ADDR, })) + const dust = (await api.call({ abi: abi.getDust, target: TRUSTAKE_CONTRACT_ADDR, })) + const sharePrice = sharePriceArray[0] / sharePriceArray[1] / 1e18 + api.add(MATIC_TOKEN_ADDR, (totalSupply * sharePrice) + +dust) +} + +module.exports = { + methodology: `Counts the TVL of MATIC tokens in TruFin's TruStake vault.`, + ethereum: { + tvl + } +} From 5579d90cb41712cc755c5f5cf4f846637a647cc8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Jul 2023 17:16:32 +0200 Subject: [PATCH 1292/1354] update summer.fi --- projects/summer-fi/handlers/maker-vaults.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/projects/summer-fi/handlers/maker-vaults.js b/projects/summer-fi/handlers/maker-vaults.js index 74a6bde966..9c2e810ded 100644 --- a/projects/summer-fi/handlers/maker-vaults.js +++ b/projects/summer-fi/handlers/maker-vaults.js @@ -18,11 +18,8 @@ const makerTvl = async ({ api, cdpIdList, confirmedSummerFiMakerVaults }) => { const filteredVaultsList = [...confirmedSummerFiMakerVaultsSet].filter( (i) => { - const [startBlock, endBlock] = confirmedSummerFiMakerVaults[i]; - if (!endBlock) { - return api.block > startBlock; - } - return api.block > startBlock && api.block <= endBlock; + const [startBlock] = confirmedSummerFiMakerVaults[i]; + return api.block > startBlock; } ); const cdpIds = [...new Set(filteredVaultsList)] From 65cc4549c70b8c8ead70188974069715a987b1f5 Mon Sep 17 00:00:00 2001 From: define Date: Tue, 25 Jul 2023 16:43:08 +0100 Subject: [PATCH 1293/1354] new factory address agni fi --- projects/agni-fi/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/agni-fi/index.js b/projects/agni-fi/index.js index 87d0a8982e..8a4a44049a 100644 --- a/projects/agni-fi/index.js +++ b/projects/agni-fi/index.js @@ -1,5 +1,5 @@ const { uniV3Export } = require("../helper/uniswapV3"); module.exports = uniV3Export({ - mantle: { factory: "0xae411e11D9fA2773CEaC200cC2C73F17324Fc93B", fromBlock: 35714, }, + mantle: { factory: "0x25780dc8Fc3cfBD75F33bFDAB65e969b603b2035", fromBlock: 35714, }, }); \ No newline at end of file From bd2e7feb5456759a85fa0b3e56bc4898025da4b1 Mon Sep 17 00:00:00 2001 From: Viktor <99098789+combased-dev@users.noreply.github.com> Date: Tue, 25 Jul 2023 19:49:03 +0300 Subject: [PATCH 1294/1354] Jewelswap update (#6887) * jewelswap init * jewelswap: coide refactor * updated for others * pool2 * lint * update * revert * misrepresentedTokens * WIP: jewelswap * completed nfts/lyf * lint update * added guard * swapped to gateway * lev-farming-to-gateway * jewelswap: code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chain/elrond.js | 6 + projects/jewelswap-lev-farming/api.js | 6 + projects/jewelswap-lev-farming/index.js | 96 +++++++++ .../jewel-onedex-farm.abi.json | 115 +++++++++++ projects/jewelswap-nft/api.js | 6 + projects/jewelswap-nft/index.js | 79 ++++++++ .../jewelswap-nft/jewel-nft-lending.abi.json | 183 ++++++++++++++++++ 7 files changed, 491 insertions(+) create mode 100644 projects/jewelswap-lev-farming/api.js create mode 100644 projects/jewelswap-lev-farming/index.js create mode 100644 projects/jewelswap-lev-farming/jewel-onedex-farm.abi.json create mode 100644 projects/jewelswap-nft/api.js create mode 100644 projects/jewelswap-nft/index.js create mode 100644 projects/jewelswap-nft/jewel-nft-lending.abi.json diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index 07f0c60db1..c65e43a3a5 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -70,7 +70,13 @@ async function sumTokens({ owners = [], tokens = [], balances = {}, blacklistedT return transformBalances(chain, balances) } +async function getNFTs(address) { + const res = await get(`${getEnv('MULTIVERSX_RPC')}/accounts/${address}/nfts?size=1000`) + return res +} + module.exports = { sumTokens, call, + getNFTs, } \ No newline at end of file diff --git a/projects/jewelswap-lev-farming/api.js b/projects/jewelswap-lev-farming/api.js new file mode 100644 index 0000000000..8e562c21b0 --- /dev/null +++ b/projects/jewelswap-lev-farming/api.js @@ -0,0 +1,6 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + ...getExports("jewelswap-lev-farming", ['elrond']), +} diff --git a/projects/jewelswap-lev-farming/index.js b/projects/jewelswap-lev-farming/index.js new file mode 100644 index 0000000000..4d78f06a9d --- /dev/null +++ b/projects/jewelswap-lev-farming/index.js @@ -0,0 +1,96 @@ +const { getNFTs, sumTokens } = require("../helper/chain/elrond"); +const { ResultsParser, AbiRegistry, SmartContract, Address, } = require("@multiversx/sdk-core/out"); +const { ProxyNetworkProvider } = require("@multiversx/sdk-network-providers/out"); +const JEWEL_ONEDEX_FARM_SC_ABI = require("./jewel-onedex-farm.abi.json"); + + +const JEWEL_ONEDEX_FARM_SC_ADDRESS = "erd1qqqqqqqqqqqqqpgqm7exdla3rzshywy99pvlxzkr45wt9kjsdfys7qqpn0"; +const LENDING_POOL_FARMS = "erd1qqqqqqqqqqqqqpgq96n4gxvmw8nxgxud8nv8qmms5namspc5vmusg930sh"; + +const FARMS = "erd1qqqqqqqqqqqqqpgqlnxy2hmvs8qxr6ezq2wmggn7ev62cjp6vmusvdral4"; + +const jewelOnedexFarmAbiRegistry = AbiRegistry.create(JEWEL_ONEDEX_FARM_SC_ABI); +const jewelOnedexFarmSmartContract = new SmartContract({ + address: new Address(JEWEL_ONEDEX_FARM_SC_ADDRESS), + abi: jewelOnedexFarmAbiRegistry +}); + + +const networkConfigs = { + mainnet: { + id: "mainnet", + chainId: "1", + apiUrl: "https://api.multiversx.com", + gatewayUrl: "https://gateway.multiversx.com", + explorerUrl: "https://explorer.multiversx.com", + apiTimeout: 10000 + } +}; + + +const ELROND_NETWORK = "mainnet"; +const networkConfig = networkConfigs[ELROND_NETWORK]; + +const proxyProvider = new ProxyNetworkProvider(networkConfig.gatewayUrl, { + timeout: networkConfig.apiTimeout +}); + + +async function tvl() { + const { api } = arguments[3] + + const nfts = await getNFTs(FARMS) + nfts.forEach(nft => { + let lpToken + switch (nft.collection) { + case "FARM-e5ffde": lpToken = "ALP-2d0cf8"; break; + case "FARM-9ed1f9": lpToken = "ALP-5f9191"; break; + case "FARM-ccefc2": lpToken = "ALP-0fe50a"; break; + case "FARM-795466": lpToken = "ALP-afc922"; break; + default: lpToken = null; + } + if (lpToken) api.add(lpToken, nft.balance) + }) + await oneDexFarm(api) + return sumTokens({ owners: [LENDING_POOL_FARMS], balances: api.getBalances() }) +} + +async function oneDexFarm(api) { + const interaction = + jewelOnedexFarmSmartContract.methodsExplicit.viewFarms(); + const query = interaction.check().buildQuery(); + const queryResponse = + await proxyProvider.queryContract(query); + const endpointDefinition = interaction.getEndpoint(); + const { firstValue, returnCode, returnMessage } = + new ResultsParser().parseQueryResponse( + queryResponse, + endpointDefinition + ); + + if (!firstValue || !returnCode.isSuccess()) { + throw Error(returnMessage); + } + + const values = firstValue.valueOf(); + const decoded = values.map((value) => ({ + token0: value.first_token_id.toString(), + token1: value.second_token_id.toString(), + lpAmount: value.lp_token_amount.toFixed(0), + lpSupply: value.lp_token_supply.toFixed(0), + token0Supply: value.first_token_reserve.toFixed(0), + token1Supply: value.second_token_reserve.toFixed(0) + })); + decoded.forEach(({ token0, token1, lpAmount, lpSupply, token0Supply, token1Supply}) => { + const ratio = lpAmount / lpSupply + api.add(token0, token0Supply * ratio) + api.add(token1, token1Supply * ratio) + }) +} + +module.exports = { + timetravel: false, + elrond: { + tvl + } +}; diff --git a/projects/jewelswap-lev-farming/jewel-onedex-farm.abi.json b/projects/jewelswap-lev-farming/jewel-onedex-farm.abi.json new file mode 100644 index 0000000000..8af49b3471 --- /dev/null +++ b/projects/jewelswap-lev-farming/jewel-onedex-farm.abi.json @@ -0,0 +1,115 @@ +{ + "buildInfo": { + }, + "name": "JewelOnedexFarm", + "constructor": { + "inputs": [], + "outputs": [] + }, + "endpoints": [ + { + "name": "viewFarms", + "mutability": "readonly", + "inputs": [], + "outputs": [ + { + "type": "List" + } + ] + } + ], + "events": [], + "hasCallback": false, + "types": { + "FarmContext": { + "type": "struct", + "fields": [ + { + "name": "farm_id", + "type": "u32" + }, + { + "name": "dex_swap_pool_id", + "type": "u32" + }, + { + "name": "dex_farm_pool_id", + "type": "u32" + }, + { + "name": "min_deposit_base_token", + "type": "TokenIdentifier" + }, + { + "name": "min_deposit_base_amount", + "type": "BigUint" + }, + { + "name": "min_compound_rewards_amount", + "type": "BigUint" + }, + { + "name": "fee_percent", + "type": "u64" + }, + { + "name": "first_token_id", + "type": "TokenIdentifier" + }, + { + "name": "second_token_id", + "type": "TokenIdentifier" + }, + { + "name": "lp_token_id", + "type": "TokenIdentifier" + }, + { + "name": "rewards_token_id", + "type": "TokenIdentifier" + }, + { + "name": "pending_first_token_amount", + "type": "BigUint" + }, + { + "name": "pending_second_token_amount", + "type": "BigUint" + }, + { + "name": "farm_share", + "type": "BigUint" + }, + { + "name": "lp_token_amount", + "type": "BigUint" + }, + { + "name": "current_rewards_amount", + "type": "BigUint" + }, + { + "name": "farm_yearly_reward_amount", + "type": "BigUint" + }, + { + "name": "lp_token_supply", + "type": "BigUint" + }, + { + "name": "first_token_reserve", + "type": "BigUint" + }, + { + "name": "second_token_reserve", + "type": "BigUint" + }, + { + "name": "opened_position_count", + "type": "u32" + } + ] + } + + } +} diff --git a/projects/jewelswap-nft/api.js b/projects/jewelswap-nft/api.js new file mode 100644 index 0000000000..a3af2c0031 --- /dev/null +++ b/projects/jewelswap-nft/api.js @@ -0,0 +1,6 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + ...getExports("jewelswap-nft", ['elrond'], ['borrowed']), +} diff --git a/projects/jewelswap-nft/index.js b/projects/jewelswap-nft/index.js new file mode 100644 index 0000000000..fd0502fa3e --- /dev/null +++ b/projects/jewelswap-nft/index.js @@ -0,0 +1,79 @@ +const { ResultsParser, AbiRegistry, SmartContract, Address, OptionalValue } = require("@multiversx/sdk-core/out"); +const { ProxyNetworkProvider } = require("@multiversx/sdk-network-providers/out"); +const NFT_LENDING_SC_ABI_JSON = require("./jewel-nft-lending.abi.json"); +const { sumTokens } = require("../helper/chain/elrond"); +const { nullAddress } = require("../helper/tokenMapping"); + + +const LENDING_POOL = "erd1qqqqqqqqqqqqqpgqhpauarfmx75nf4pwxh2fuy520ym03p8e8jcqt466up"; + +const abi = AbiRegistry.create(NFT_LENDING_SC_ABI_JSON); +const nftLendingSmartContract = new SmartContract({ + address: new Address(LENDING_POOL), + abi: abi +}); + +const networkConfigs = { + mainnet: { + id: "mainnet", + chainId: "1", + apiUrl: "https://api.multiversx.com", + gatewayUrl: "https://gateway.multiversx.com", + explorerUrl: "https://explorer.multiversx.com", + apiTimeout: 10000 + } +}; + + +const ELROND_NETWORK = "mainnet"; +const networkConfig = networkConfigs[ELROND_NETWORK]; + +const proxyProvider = new ProxyNetworkProvider(networkConfig.gatewayUrl, { + timeout: networkConfig.apiTimeout +}); + + +module.exports = { + misrepresentedTokens: true, + timetravel: false, + elrond: { + tvl: () => sumTokens({ owners: [LENDING_POOL] }), + borrowed, + } +}; + +async function borrowed() { + const { api } = arguments[3] + const commonSettings = await queryNFTDataFromSc(); + api.add(nullAddress, commonSettings.total_loan_amount) + + return api.getBalances() +} + +async function queryNFTDataFromSc() { + const args = [ + OptionalValue.newMissing() + ]; + const interaction = nftLendingSmartContract.methodsExplicit.viewCommonSettings(args); + const query = interaction.check().buildQuery(); + const queryResponse = await proxyProvider.queryContract(query); + const endpointDefinition = interaction.getEndpoint(); + const { + firstValue, + returnCode, + returnMessage + } = new ResultsParser().parseQueryResponse(queryResponse, endpointDefinition); + + if (!firstValue || !returnCode.isSuccess()) { + console.error(returnMessage); + return undefined; + } + + const value = firstValue.valueOf(); + const decoded = { + total_lending_amount: value.total_lending_amount.toFixed(), + total_collateral_amount: value.total_collateral_amount.toFixed(), + total_loan_amount: value.total_loan_amount.toFixed(), + }; + return decoded; +} diff --git a/projects/jewelswap-nft/jewel-nft-lending.abi.json b/projects/jewelswap-nft/jewel-nft-lending.abi.json new file mode 100644 index 0000000000..6c12f761ed --- /dev/null +++ b/projects/jewelswap-nft/jewel-nft-lending.abi.json @@ -0,0 +1,183 @@ +{ + "buildInfo": { + }, + "name": "EpunksNftLending", + "constructor": { + "inputs": [], + "outputs": [] + }, + "endpoints": [ + { + "name": "viewCommonSettings", + "mutability": "readonly", + "inputs": [ + { + "name": "opt_user_address", + "type": "optional
", + "multi_arg": true + } + ], + "outputs": [ + { + "type": "CommonSettings" + } + ] + } + ], + "hasCallback": true, + "types": { + "CommonSettings": { + "type": "struct", + "fields": [ + { + "name": "rewards_pool_rate", + "type": "u64" + }, + { + "name": "epunks_buyback_rate", + "type": "u64" + }, + { + "name": "team_rate", + "type": "u64" + }, + { + "name": "epunks_buyback_wallet", + "type": "Address" + }, + { + "name": "team_wallet", + "type": "Address" + }, + { + "name": "liquidation_wallet", + "type": "Address" + }, + { + "name": "lend_epoch_length", + "type": "u64" + }, + { + "name": "lend_lock_period", + "type": "u64" + }, + { + "name": "liquidation_threshold", + "type": "u64" + }, + { + "name": "lend_grace_period", + "type": "u64" + }, + { + "name": "liquidation_fee", + "type": "u64" + }, + { + "name": "total_lending_amount", + "type": "BigUint" + }, + { + "name": "lend_users", + "type": "u32" + }, + { + "name": "current_lend_epoch_id", + "type": "u32" + }, + { + "name": "lend_epoch_start_timestamp", + "type": "u64" + }, + { + "name": "lend_rewards_pool_amount", + "type": "BigUint" + }, + { + "name": "global_liquidation_rate", + "type": "u64" + }, + { + "name": "global_max_borrow_amount", + "type": "BigUint" + }, + { + "name": "global_collection_max_lend_cap_percent", + "type": "u64" + }, + { + "name": "global_max_borrower_cap_percent", + "type": "u64" + }, + { + "name": "borrow_plan_count", + "type": "u32" + }, + { + "name": "max_borrow_periods", + "type": "List" + }, + { + "name": "borrow_rates", + "type": "List" + }, + { + "name": "accumulated_loan_amount", + "type": "BigUint" + }, + { + "name": "total_loan_amount", + "type": "BigUint" + }, + { + "name": "total_collateral_amount", + "type": "BigUint" + }, + { + "name": "opened_loan_count", + "type": "u32" + }, + { + "name": "loan_owners", + "type": "u32" + }, + { + "name": "last_loan_id", + "type": "u32" + }, + { + "name": "collection_ids", + "type": "List" + }, + { + "name": "collection_collateral_rates", + "type": "List" + }, + { + "name": "collection_trait_counts", + "type": "List" + }, + { + "name": "collection_supplies", + "type": "List" + }, + { + "name": "collection_max_borrow_amounts", + "type": "List" + }, + { + "name": "collection_borrow_amounts", + "type": "List" + }, + { + "name": "collection_max_lend_cap_percents", + "type": "List" + }, + { + "name": "user_borrow_status", + "type": "bool" + } + ] + } + } +} From 5e82668ac9cc9cc84fb4894034cad11e8cff2f70 Mon Sep 17 00:00:00 2001 From: Jadeswap <136394034+Jadeswap@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:19:31 +0500 Subject: [PATCH 1295/1354] add JadeSwap (#6908) * added jadeswap * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/jadeswap/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/jadeswap/index.js diff --git a/projects/jadeswap/index.js b/projects/jadeswap/index.js new file mode 100644 index 0000000000..913d7a16b8 --- /dev/null +++ b/projects/jadeswap/index.js @@ -0,0 +1,28 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const { getUniTVL, staking } = require("../helper/unknownTokens"); +const sdk = require("@defillama/sdk"); +const uniTvl = getUniTVL({ + factory: "0x210D0c3d885C5D296e8F32Ad4B7a9a2Fe39E983b", + useDefaultCoreAssets: true, + fetchBalances: true, +}); +const masterchef = "0xcC507803A4b832684154C4E395D92A6EDbEAfE52"; +const jade = "0x7c70229F108D3d506Cff8Ea243FFA57344Fc4cE1"; +const wmnt = ADDRESSES.mantle.WMNT; + +module.exports = { + misrepresentedTokens: true, + mantle: { + tvl: sdk.util.sumChainTvls([ + uniTvl, + staking({ + owners: [masterchef], + tokens: [wmnt], + }), + ]), + staking: staking({ + owners: [masterchef], + tokens: [jade], + }), + }, +}; From 1d4e3f34802f2e14813b480def3536b6707fc5fc Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 25 Jul 2023 20:07:28 +0100 Subject: [PATCH 1296/1354] separate fvm --- projects/fvm/index.js | 12 ++++++++++++ projects/velocimeter-v2/index.js | 7 ------- 2 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 projects/fvm/index.js diff --git a/projects/fvm/index.js b/projects/fvm/index.js new file mode 100644 index 0000000000..3dfbc9e99f --- /dev/null +++ b/projects/fvm/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + fantom: { + tvl: getUniTVL({ + factory: '0x472f3C3c9608fe0aE8d702f3f8A2d12c410C881A', + useDefaultCoreAssets: true, + hasStablePools: true, + }) + } +} diff --git a/projects/velocimeter-v2/index.js b/projects/velocimeter-v2/index.js index 39a4d0fe24..7732e6d89c 100644 --- a/projects/velocimeter-v2/index.js +++ b/projects/velocimeter-v2/index.js @@ -16,11 +16,4 @@ module.exports = { hasStablePools: true, }) }, - fantom: { - tvl: getUniTVL({ - factory: '0x472f3C3c9608fe0aE8d702f3f8A2d12c410C881A', - useDefaultCoreAssets: true, - hasStablePools: true, - }) - } } From 0ce0d3c39b0a8a6e0923446e91374e0760d29d59 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Jul 2023 21:55:16 +0200 Subject: [PATCH 1297/1354] add jewelswap liquid staking --- projects/helper/chain/elrond.js | 11 +++++++++++ projects/jewelswap-liq-staking/index.js | 12 ++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 projects/jewelswap-liq-staking/index.js diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index c65e43a3a5..c489ccff68 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -75,8 +75,19 @@ async function getNFTs(address) { return res } +async function getTokenData(token) { + const data = await get(`https://api.multiversx.com/tokens/${token}`) + return data +} + +async function sumTokensExport(...args) { + return () => sumTokens(...args) +} + module.exports = { sumTokens, call, getNFTs, + getTokenData, + sumTokensExport, } \ No newline at end of file diff --git a/projects/jewelswap-liq-staking/index.js b/projects/jewelswap-liq-staking/index.js new file mode 100644 index 0000000000..d6d82bb220 --- /dev/null +++ b/projects/jewelswap-liq-staking/index.js @@ -0,0 +1,12 @@ +const { getTokenData } = require('../helper/chain/elrond') +const { nullAddress } = require('../helper/tokenMapping') + +module.exports = { + elrond: { tvl} +} + +async function tvl(_, _b, _cb, { api, }) { + const data = await getTokenData('JWLEGLD-023462') + api.add(nullAddress, data.minted - data.burnt) +} + From 6fd74b8bbc5112123b2e8f7962f54b9c99dfb742 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 25 Jul 2023 22:33:43 +0200 Subject: [PATCH 1298/1354] update jewelswap liquid staking --- projects/jewelswap-liq-staking/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/jewelswap-liq-staking/index.js b/projects/jewelswap-liq-staking/index.js index d6d82bb220..18faf36c92 100644 --- a/projects/jewelswap-liq-staking/index.js +++ b/projects/jewelswap-liq-staking/index.js @@ -1,4 +1,4 @@ -const { getTokenData } = require('../helper/chain/elrond') +const { getTokenData, sumTokens, } = require('../helper/chain/elrond') const { nullAddress } = require('../helper/tokenMapping') module.exports = { @@ -7,6 +7,8 @@ module.exports = { async function tvl(_, _b, _cb, { api, }) { const data = await getTokenData('JWLEGLD-023462') + const data2 = await getTokenData('JWLASH-f362b9') api.add(nullAddress, data.minted - data.burnt) + api.add('JWLASH-f362b9', data2.minted - data2.burnt) } From f50c30809b3573d16d41023a2d94e4e95eb17343 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 26 Jul 2023 00:16:51 +0100 Subject: [PATCH 1299/1354] add hallmark --- projects/nexon/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/nexon/index.js b/projects/nexon/index.js index aa8d221b21..dd0d3c3cbf 100644 --- a/projects/nexon/index.js +++ b/projects/nexon/index.js @@ -2,6 +2,9 @@ const { compoundExports } = require('../helper/compound'); const { nullAddress } = require('../helper/tokenMapping'); module.exports = { + hallmarks: [ + [1690243200, "read-only Reentrancy Attack"] + ], era: compoundExports('0x0171cA5b372eb510245F5FA214F5582911934b3D', 'era', '0x1BbD33384869b30A323e15868Ce46013C82B86FB', nullAddress, undefined, undefined, { resolveLPs: true, abis: { From c681a9a76d150998cc2a47e58ce4bc5b1437c6b2 Mon Sep 17 00:00:00 2001 From: happywomwom-wombat <129473631+happywomwom-wombat@users.noreply.github.com> Date: Wed, 26 Jul 2023 14:14:29 +0800 Subject: [PATCH 1300/1354] feat/rbnb (#6913) * add rbnb pool address * add snbnb address (#1) --- projects/wombat-exchange/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 12b5007dfa..e11f0b7b3f 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -24,6 +24,7 @@ module.exports = { smartHAY: "0xa61dccC6c6E34C8Fbf14527386cA35589e9b8C27", wBETH: "0x8b892b6Ea1d0e5B29b719d6Bd6eb9354f1cDE060", ankrETH: "0x1b507b97c89eDE3E40d1b2Ed92972197c6276D35", + rbnb: "0x0592083B285aa75B9c8BaD2485C6cCCF93cCC348", SnBNB: "0xF1e604e9A31c3b575f91CF008445B7ce06BF3fef", }, }, From e49276addaa0e9bd5efc94aa586f93d13678adb5 Mon Sep 17 00:00:00 2001 From: ftm1337 <84405345+ftm1337@users.noreply.github.com> Date: Wed, 26 Jul 2023 02:29:39 -0400 Subject: [PATCH 1301/1354] Equity - Add new pool (#6914) --- projects/equity/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/equity/index.js b/projects/equity/index.js index cf3c77cb8b..ac9a5fa967 100644 --- a/projects/equity/index.js +++ b/projects/equity/index.js @@ -3,6 +3,7 @@ const { gmxExports } = require("../helper/gmx"); module.exports = { fantom: { - tvl: gmxExports({ vault: '0x9e4105f9e2284532474f69e65680e440f4c91cb8' }), // Vault 01 + //tvl: gmxExports({ vault: '0x9e4105f9e2284532474f69e65680e440f4c91cb8' }), // Vault #1 - Disabled + tvl: gmxExports({ vault: '0x0Fb84ADB9c16D28b92c09c382CaadbDdD8e354c4' }), // Vault #2 }, }; From 7fe6246921308000af6e7cbf419c45bd416fb974 Mon Sep 17 00:00:00 2001 From: Jadeswap <136394034+Jadeswap@users.noreply.github.com> Date: Wed, 26 Jul 2023 12:54:22 +0500 Subject: [PATCH 1302/1354] updated the factory address (#6915) * added jadeswap * minor fix * Update index.js just updated the factory --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/jadeswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/jadeswap/index.js b/projects/jadeswap/index.js index 913d7a16b8..a1dde66f40 100644 --- a/projects/jadeswap/index.js +++ b/projects/jadeswap/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { getUniTVL, staking } = require("../helper/unknownTokens"); const sdk = require("@defillama/sdk"); const uniTvl = getUniTVL({ - factory: "0x210D0c3d885C5D296e8F32Ad4B7a9a2Fe39E983b", + factory: "0xb20a6389cA872d094f3c7A8180fE5BAb431BD794", useDefaultCoreAssets: true, fetchBalances: true, }); From 60e780c52f8548f6722b794ceb8f5f1dbff755b0 Mon Sep 17 00:00:00 2001 From: Joseph Chalabi <100090645+chalabi2@users.noreply.github.com> Date: Wed, 26 Jul 2023 01:04:25 -0700 Subject: [PATCH 1303/1354] gravity bridge (#6869) * Add Gravity Bridge * Add All Tokens * track https://agni.finance * Delete index.js * Add gravity bridge query * gravity-bridge: code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gravity-bridge/index.js | 79 ++++++++++++++++++++++++++++++++ projects/helper/chain/cosmos.js | 1 + projects/helper/chains.json | 1 + projects/helper/unwrapLPs.js | 13 +++++- 4 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 projects/gravity-bridge/index.js diff --git a/projects/gravity-bridge/index.js b/projects/gravity-bridge/index.js new file mode 100644 index 0000000000..7854d1719a --- /dev/null +++ b/projects/gravity-bridge/index.js @@ -0,0 +1,79 @@ +const { getBalance2 } = require("../helper/chain/cosmos.js"); +const { sumTokensExport } = require('../helper/unwrapLPs') + +const erc20Contracts = [ + + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC + "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // WBTC + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", // wstETH + "0xEa5A82B35244d9e5E48781F00b11B14E627D2951", // ATOM + "0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9", // WLUNC + "0xfB5c6815cA3AC72Ce9F5006869AE67f18bF77006", // pSTAKE + "0x45804880De22913dAFE09f4980848ECE6EcbAf78", // PAXG + "0xc0a4Df35568F116C370E6a6A6022Ceb908eedDaC", // UMEE + "0x44017598f2AF1bD733F9D87b5017b4E7c1B28DDE", // stkATOM + "0x817bbDbC3e8A1204f3691d14bB44992841e3dB35", // CUDOS + "0x467719aD09025FcC6cF6F8311755809d45a5E5f3", // AXL + "0x77E06c9eCCf2E797fd462A92B6D7642EF85b0A44", // WTAO + "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", // SHIB + "0x35a532d376FFd9a705d0Bb319532837337A398E7", // WDOGE + "0x93581991f68DBaE1eA105233b67f7FA0D6BDeE7b", // WEVMOS + "0x514910771AF9Ca656af840dff83E8264EcF986CA", // LINK + "0xa670d7237398238DE01267472C6f13e5B8010FD1", // SOMM + "0xd3E4Ba569045546D09CF021ECC5dFe42b1d7f6E4", // MNW + "0xd23Ed8cA350CE2631F7EcDC5E6bf80D0A1DeBB7B", // PLQ + "0x07baC35846e5eD502aA91AdF6A9e7aA210F2DcbE", // EROWAN + "0xA0b73E1Ff0B80914AB6fe0444E65848C4C34450b", // CRO + "0xe28b3B32B6c345A34Ff64674606124Dd5Aceca30", // INJ + "0x4c11249814f11b9346808179Cf06e71ac328c1b5", // ORAI + "0x4Fabb145d64652a948d72533023f6E7A623C7C53", // BUSD + "0x147faF8De9d8D8DAAE129B187F0D02D819126750", // GEO + "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH + "0xD8912C10681D8B21Fd3742244f44658dBA12264E", // PLU + "0x4f6103BAd230295baCF30f914FDa7D4273B7F585", // KI + "0xed0d5747A9AB03a75fBfEC3228cd55848245B75d", // NGM + "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", // MATIC + "0x892A6f9dF0147e5f079b0993F486F9acA3c87881", //xFUND + "0x853d955aCEf822Db058eb8505911ED77F175b99e", //FRAX + "0xaea46A60368A7bD060eec7DF8CBa43b7EF41Ad85", //FET + "0x467719aD09025FcC6cF6F8311755809d45a5E5f3", //AXL + "0x2B89bF8ba858cd2FCee1faDa378D5cd6936968Be", //WSCRT + "0x4Fabb145d64652a948d72533023f6E7A623C7C53", //BUSD + "0x4c11249814f11b9346808179Cf06e71ac328c1b5", //ORAI + "0xa693B19d2931d498c5B318dF961919BB4aee87a5", //WUST + "0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55", //BAND + "0x4547254E6E3195cE57Bc50352193A25c2F4B8FCf", //STARS + "0x7bE48633D86AA9821284B01030b8a3F9B06eA876", //HUAHUA + "0x6982508145454Ce325dDbE47a25d4ec3d2311933", //PEPE + "0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9", //WLUNC + "0x43373AE537945085Ee1001928E96204034bF55e6", //USDC2 + "0x76C4A2B59523eaE19594c630aAb43288dBB1463f", //IRIS + +]; + +const GRAVITY_BRIDGE_CONTRACT = "0xa4108aa1ec4967f8b52220a4f7e94a8201f2d906"; + +module.exports = { + methodology: 'Counts the tokens locked in the Gravity Bridge contract on Ethereum chain.', + start: 13798211, + ethereum: { + tvl: sumTokensExport({ owner: GRAVITY_BRIDGE_CONTRACT, tokens: erc20Contracts, }), + }, + gravitybridge: { + tvl, + } +}; + +async function tvl(_, _b, _cb, { api, }) { + const bals = await getBalance2({ chain: 'gravitybridge', owner: 'gravity16n3lc7cywa68mg50qhp847034w88pntqzx3ksm'}) + Object.entries(bals).forEach(([key, val]) => { + if (key.startsWith('gravity0x')) { + // these tokens are already counted on ethereum side + // api.add(key.replace('gravity', ''), val, { skipChain: true}) + } else { + api.add(key, val) + } + }) +} \ No newline at end of file diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index eeb1f554bf..65de317ef8 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -29,6 +29,7 @@ const endPoints = { kava: "https://api2.kava.io", neutron: "https://rest-kralum.neutron-1.neutron.org", quasar: "https://quasar-api.polkachu.com", + gravitybridge: "https://rest.cosmos.directory/gravitybridge", }; const chainSubpaths = { diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 7c655105ba..7e40cf02e0 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -79,6 +79,7 @@ "godwoken", "godwoken_v1", "goerli", + "gravitybridge", "grove", "harmony", "heco", diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 9437f3a08e..ffe169255a 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -676,6 +676,7 @@ async function sumTokens2({ resolveArtBlocks = false, resolveNFTs = false, permitFailure = false, + fetchCoValentTokens = false, }) { if (api) { chain = api.chain ?? chain @@ -690,6 +691,14 @@ async function sumTokens2({ await sumArtBlocks({ balances, api, owner, owners, }) } + if (fetchCoValentTokens) { + if (!api) throw new Error('Missing arg: api') + if (!owners || !owners.length) owners = [owner] + const cTokens = (await Promise.all(owners.map(i => covalentGetTokens(i, api.chain)))).flat() + tokens = [...cTokens, ...tokens] + console.log('cTokens', cTokens.length) + } + if (resolveNFTs) { if (!api) throw new Error('Missing arg: api') if (!owners || !owners.length) owners = [owner] @@ -745,8 +754,8 @@ async function sumTokens2({ } } -function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) { - return async (_, _b, _cb, { api }) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, }) +function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, ...args }) { + return async (_, _b, _cb, { api }) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, ...args,}) } async function unwrapBalancerToken({ api, chain, block, balancerToken, owner, balances = {}, isBPool = false, isV2 = true }) { From 069aef5d0c067cfbc225e23ede59887f3a09622b Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Jul 2023 10:33:51 +0100 Subject: [PATCH 1304/1354] add treasury --- projects/treasury/ether.js | 26 ++++++++++++++++++ projects/treasury/ethglobal.js | 16 +++++++++++ projects/treasury/rotki.js | 42 +++++++++++++++++++++++++++++ projects/treasury/wagmi.js | 18 +++++++++++++ projects/treasury/zachxtb-theman.js | 41 ++++++++++++++++++++++++++++ 5 files changed, 143 insertions(+) create mode 100644 projects/treasury/ether.js create mode 100644 projects/treasury/ethglobal.js create mode 100644 projects/treasury/rotki.js create mode 100644 projects/treasury/wagmi.js create mode 100644 projects/treasury/zachxtb-theman.js diff --git a/projects/treasury/ether.js b/projects/treasury/ether.js new file mode 100644 index 0000000000..b4acc5affc --- /dev/null +++ b/projects/treasury/ether.js @@ -0,0 +1,26 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasuryOP = "0x8ba1f109551bD432803012645Ac136ddd64DBA72"; +const treasuryETH = "0x8ba1f109551bD432803012645Ac136ddd64DBA72" + +module.exports = treasuryExports({ + optimism: { + tokens: [ + nullAddress, + ADDRESSES.optimism.USDC, // USDC + ADDRESSES.optimism.OP + ], + owners: [treasuryOP], + }, + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.TUSD, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDT + ], + owners: [treasuryETH], + }, +}); \ No newline at end of file diff --git a/projects/treasury/ethglobal.js b/projects/treasury/ethglobal.js new file mode 100644 index 0000000000..1fb3aaa9b1 --- /dev/null +++ b/projects/treasury/ethglobal.js @@ -0,0 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x336DEe4022d6CC2F95cfe9e0949B9E0EDDAC457D"; + +module.exports = treasuryExports({ + optimism: { + tokens: [ + nullAddress, + ADDRESSES.optimism.USDC, // USDC + ADDRESSES.optimism.OP + ], + owners: [treasury], + ownTokens: [], + }, +}); diff --git a/projects/treasury/rotki.js b/projects/treasury/rotki.js new file mode 100644 index 0000000000..3420dd3cda --- /dev/null +++ b/projects/treasury/rotki.js @@ -0,0 +1,42 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0x9531C059098e3d194fF87FebB587aB07B30B1306"; + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.DAI, + "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72", + "0x8290333ceF9e6D528dD5618Fb97a76f268f3EDD4", + "0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC", + ADDRESSES.ethereum.sUSD, + ADDRESSES.ethereum.MKR + ], + owners: [treasury], + ownTokens: [], + }, + optimism: { + tokens: [ + nullAddress, + ADDRESSES.optimism.USDC, + ADDRESSES.optimism.USDT, + ADDRESSES.optimism.OP + ], + owners: [treasury] + }, + arbitrum: { + tokens: [ + nullAddress, + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.ARB, + ADDRESSES.arbitrum.DAI, + ADDRESSES.arbitrum.WETH + ], + owners: [treasury] + }, +}); \ No newline at end of file diff --git a/projects/treasury/wagmi.js b/projects/treasury/wagmi.js new file mode 100644 index 0000000000..4d21dca03b --- /dev/null +++ b/projects/treasury/wagmi.js @@ -0,0 +1,18 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasury = "0xd2135CfB216b74109775236E36d4b433F1DF507B"; + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.DAI, + "0x8290333ceF9e6D528dD5618Fb97a76f268f3EDD4" + ], + owners: [treasury], + ownTokens: [], + }, +}); \ No newline at end of file diff --git a/projects/treasury/zachxtb-theman.js b/projects/treasury/zachxtb-theman.js new file mode 100644 index 0000000000..bb7338de54 --- /dev/null +++ b/projects/treasury/zachxtb-theman.js @@ -0,0 +1,41 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const treasuryOP = "0x9D727911B54C455B0071A7B682FcF4Bc444B5596"; +const treasuryETH = "0x9D727911B54C455B0071A7B682FcF4Bc444B5596" +const treasuryARB = "0x9D727911B54C455B0071A7B682FcF4Bc444B5596" + +module.exports = treasuryExports({ + optimism: { + tokens: [ + nullAddress, + ADDRESSES.optimism.USDC, // USDC + ADDRESSES.optimism.OP + ], + owners: [treasuryOP], + }, + ethereum: { + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, // USDC + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.TUSD, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDT, + "0xE80C0cd204D654CEbe8dd64A4857cAb6Be8345a3", + ADDRESSES.ethereum.WBTC, + "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", //AURA + "0xB6eD7644C69416d67B522e20bC294A9a9B405B31", //0XBTC + ], + owners: [treasuryETH], + }, + arbitrum: { + tokens: [ + nullAddress, + ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDC_CIRCLE, + ADDRESSES.arbitrum.WETH + ], + owners: [treasuryARB], + }, +}); \ No newline at end of file From fc001d93a8a3417b007454bc87fc8637574bc479 Mon Sep 17 00:00:00 2001 From: define Date: Wed, 26 Jul 2023 11:15:57 +0100 Subject: [PATCH 1305/1354] add factories pancake era --- projects/pancake-swap/index.js | 3 +++ projects/pancakeswap-v3/index.js | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/pancake-swap/index.js b/projects/pancake-swap/index.js index 86432fa075..6de8621a3d 100644 --- a/projects/pancake-swap/index.js +++ b/projects/pancake-swap/index.js @@ -94,4 +94,7 @@ module.exports = { token0Reserve: i => i.data.reserve_x, token1Reserve: i => i.data.reserve_y, }).aptos, + era: { + tvl: getUniTVL({ factory: '0xd03D8D566183F0086d8D09A84E1e30b58Dd5619d', useDefaultCoreAssets: true, }) + }, } diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index b266175edf..2e2afab981 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -11,5 +11,6 @@ module.exports = uniV3Export({ ] }, ethereum: { factory: '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865', fromBlock: 16950685, }, polygon_zkevm: { factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865', fromBlock: 750148, }, - linea: { factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865', fromBlock: 1444, }, + linea: { factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865', fromBlock: 1445, }, + era: { factory: '0x1BB72E0CbbEA93c08f535fc7856E0338D7F7a8aB', fromBlock: 9413438, } }) From e7abf1a039bed35dd0a6d9391262e806aa750091 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Jul 2023 16:13:27 +0200 Subject: [PATCH 1306/1354] track factor v2 --- projects/factor-v2/index.js | 26 ++++++++++++++++++++++++++ projects/factor/index.js | 7 ++++--- projects/helper/chains.json | 2 ++ projects/helper/env.js | 1 + 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 projects/factor-v2/index.js diff --git a/projects/factor-v2/index.js b/projects/factor-v2/index.js new file mode 100644 index 0000000000..dc4521416f --- /dev/null +++ b/projects/factor-v2/index.js @@ -0,0 +1,26 @@ +const { getLogs } = require('../helper/cache/getLogs') + +const config = { + arbitrum: { factory: '0x6b3e693b436510c430ffbb6b5ca6c8248022f1cd', fromBlock: 112324705 }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ + api, + target: factory, + topics: ['0xc66cfbda93c132fbda8600e8032ce13d18d0db1d139e72d677d5556e0acf9484'], + eventAbi: 'event VaultCreated (address indexed vault, address strategy, string name, string symbol, uint256 approval)', + onlyArgs: true, + fromBlock, + }) + const vaults = logs.map(log => log.vault) + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) + const bals = await api.multiCall({ abi: 'uint256:assetBalance', calls: vaults }) + // console.table(vaults.map((v, i) => ({ vault: v, token: tokens[i], bal: bals[i] }))) + api.addTokens(tokens, bals) + } + } +}) \ No newline at end of file diff --git a/projects/factor/index.js b/projects/factor/index.js index 59df2118a6..4bbc739b2d 100644 --- a/projects/factor/index.js +++ b/projects/factor/index.js @@ -1,13 +1,14 @@ const { staking } = require("../helper/staking"); const { sumTokens2 } = require('../helper/unwrapLPs'); +const { cachedGraphQuery } = require('../helper/cache'); const FCTR = "0x6dD963C510c2D2f09d5eDdB48Ede45FeD063Eb36" const veFCTR = "0xA032082B08B2EF5A6C3Ea80DaEac58300F68FB73" -const FCTR_RNDTX = "0x95C34a4efFc5eEF480c65E2865C63EE28F2f9C7e" // Factor Roundtable Index - -const indices = [FCTR_RNDTX] async function tvl(timestamp, block, chainBlocks, { api }) { + const endpoint = 'https://api.thegraph.com/subgraphs/name/yanuar-ar/factor-arbitrum' + const res = await cachedGraphQuery('factor-v1', endpoint, `{vaultGeneses { id }}`) + const indices = res.vaultGeneses.map(v => v.id) const uBalances = await api.multiCall({ abi: 'uint256[]:underlyingAssetsBalance', calls: indices }) const calls = [] uBalances.forEach((v, i) => { diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 7e40cf02e0..9cbc34087b 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -112,6 +112,7 @@ "liquidchain", "litecoin", "loop", + "lukso", "lung", "mantle", "map", @@ -151,6 +152,7 @@ "palm", "parallel", "persistence", + "pgn", "pokt", "polis", "polkadot", diff --git a/projects/helper/env.js b/projects/helper/env.js index 4982ec6c8d..629da7076d 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -10,6 +10,7 @@ const DEFAULTS = { SUI_RPC: 'https://fullnode.mainnet.sui.io/', MULTIVERSX_RPC: 'https://api.multiversx.com', LINEA_RPC: 'https://linea.rpc.thirdweb.com', + PGN_RPC: 'https://rpc.publicgoods.network', } const ENV_KEYS = [ From 9ae97dc9ddc5bb65b3036d58e018598b0198d16d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Jul 2023 16:44:42 +0200 Subject: [PATCH 1307/1354] update drift.js --- projects/drift.js | 59 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/projects/drift.js b/projects/drift.js index f5c1c48e61..97d5c67811 100644 --- a/projects/drift.js +++ b/projects/drift.js @@ -1,25 +1,48 @@ -const { sumTokens2 } = require('./helper/solana') - -async function tvl() { - // token account authority: JCNCMFXo5M5qwUPg2Utu1u6YWp3MbygxqBsBeXXJfrw - return sumTokens2({ - tokenAccounts: [ - '6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S', // legacy usdc vault - 'Bzjkrm1bFwVXUaV9HTnwxFrPtNso7dnwPQamhqSxtuhZ', // usdc insurance fund - 'GXWqPpjQpdz7KZw9p7f5PX2eGxHAhvpNXiviFkAB8zXg', // usdc vault - 'DfYCNezifxAEsQbAJ1b3j6PX3JVBe8fu11KBhxsbw5d2', // sol vault - '4vwQWa4RjmPkn1WrmyEE3t912yWsBf9JNkASH36AQL3F', // sol insurance fund - '5p8B6KhJjesV212heBu1o86W2vUSnW1P83ZNnMLtCAAx', // msol vault - 'iBM2BTsrXXDfwm4P4ssbzBAquaj7gGgNNhBVaq8ryiY', // msol insurance fund - '2CqkQvYxp9Mq4PqLvAQ1eryYxebUh4Liyn5YMDtXsYci', // legacy usdc insurance fund - ] - }) -} +const { PublicKey } = require("@solana/web3.js"); +const anchor = require("@project-serum/anchor"); +const { sumTokens2, } = require("./helper/solana"); +const DRIFT_PROGRAM_ID = new PublicKey('dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH') +const { getConfig } = require('./helper/cache') module.exports = { timetravel: false, methodology: "Calculate sum across all program token accounts", solana: { - tvl + tvl, + }, +}; + +async function tvl(_, _b, _cb, { api, }) { + + const legacyVaults = [ + '6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S', // legacy usdc vault + '2CqkQvYxp9Mq4PqLvAQ1eryYxebUh4Liyn5YMDtXsYci', // legacy usdc insurance fund + ]; + const getSpotMarketVaultPublicKey = marketIndex => getVaultPublicKey('spot_market_vault', marketIndex) + const getInsuranceFundVaultPublicKey = marketIndex => getVaultPublicKey('insurance_fund_vault', marketIndex) + let configFile = await getConfig('drift-config', 'https://raw.githubusercontent.com/drift-labs/protocol-v2/master/sdk/src/constants/spotMarkets.ts') + const marketIndices = []; + configFile = configFile.slice(configFile.indexOf('MainnetSpotMarkets:')) + + const regex = /marketIndex:\s*(\d+),/g + let match; + while ((match = regex.exec(configFile))) { + marketIndices.push(parseInt(match[1])); } + + const vaults = [ + ...legacyVaults, + ...marketIndices.map(getSpotMarketVaultPublicKey), + ...marketIndices.map(getInsuranceFundVaultPublicKey), + ] + + return sumTokens2({ tokenAccounts: vaults }) +} + +function getVaultPublicKey(seed, marketIndex) { + return PublicKey.findProgramAddressSync( + [ + Buffer.from(anchor.utils.bytes.utf8.encode(seed)), + new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2), + ], DRIFT_PROGRAM_ID)[0]; } From 70c2fa3f454b3840e0e47fd3f0d69851dad1df59 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 26 Jul 2023 17:38:06 +0200 Subject: [PATCH 1308/1354] aura: track polygon --- projects/aura-finance/index.js | 1 + projects/hawksight/index.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index 4fd9a113b2..fca63047ec 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -63,6 +63,7 @@ async function tvl(_, block, _1, { api }) { const config = { arbitrum: { factory: '0x6817149cb753bf529565b4d023d7507ed2ff4bc0', fromBlock: 72942741, voterProxy: '0xc181edc719480bd089b94647c2dc504e2700a2b0'}, optimism: { factory: '0xa523f47A933D5020b23629dDf689695AA94612Dc', fromBlock: 83239534, voterProxy: '0xc181edc719480bd089b94647c2dc504e2700a2b0'}, + polygon: { factory: '0x22625eedd92c81a219a83e1dc48f88d54786b017', fromBlock: 40687417, voterProxy: '0xC181Edc719480bd089b94647c2Dc504e2700a2B0'}, } module.exports = { diff --git a/projects/hawksight/index.js b/projects/hawksight/index.js index b87e0570e9..d7b253f4e6 100644 --- a/projects/hawksight/index.js +++ b/projects/hawksight/index.js @@ -1,4 +1,5 @@ const { fetchURL } = require('../helper/utils') +const { sumTokens2 } = require('../helper/solana') async function tvl() { @@ -11,5 +12,6 @@ module.exports = { methodology: 'Sums the total value locked of all strategies in Hawksight', solana: { tvl, + staking: () => sumTokens2({ tokenAccounts: ['2eFeetCpZJprr67F2dToT52BbSkdeqKZT6hmVdVG14eU']}) } } \ No newline at end of file From 69088d5b4048f4a5f66f619b27daa939db9834a4 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 26 Jul 2023 19:51:49 +0100 Subject: [PATCH 1309/1354] fix olympus --- projects/olympus/index.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/projects/olympus/index.js b/projects/olympus/index.js index da2f70e583..157d96f2ed 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -63,15 +63,6 @@ query { } }`; -const subgraphUrls = { - ethereum: `https://gateway.thegraph.com/api/${getEnv('OLYMPUS_GRAPH_API_KEY')}/subgraphs/id/DTcDcUSBRJjz9NeoK5VbXCVzYbRTyuBwdPUqMi8x32pY`, - arbitrum: - "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-arbitrum", - fantom: - "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-fantom", - polygon: - "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-polygon", -}; //Subgraph returns balances in tokenAddress / allocator pairs. Need to return based on balance. function sumBalancesByTokenAddress(arr) { @@ -98,6 +89,15 @@ function sumBalancesByTokenAddress(arr) { * #3. Sum values returned ***/ async function tvl(timestamp, block, _, { api }, isOwnTokensMode = false) { +const subgraphUrls = { + ethereum: `https://gateway.thegraph.com/api/${getEnv('OLYMPUS_GRAPH_API_KEY')}/subgraphs/id/DTcDcUSBRJjz9NeoK5VbXCVzYbRTyuBwdPUqMi8x32pY`, + arbitrum: + "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-arbitrum", + fantom: + "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-fantom", + polygon: + "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-polygon", +}; const indexedBlockForEndpoint = await blockQuery( subgraphUrls[api.chain], getLatestBlockIndexed, From 7e6e371bb3e3453f33b0a650d41721b7a861e693 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Jul 2023 09:33:10 +0200 Subject: [PATCH 1310/1354] update zkbob --- projects/zkbob/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/zkbob/index.js b/projects/zkbob/index.js index cca35262c4..e3983c16ca 100644 --- a/projects/zkbob/index.js +++ b/projects/zkbob/index.js @@ -1,10 +1,12 @@ const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') module.exports = { polygon: { tvl: sumTokensExport({ tokens: [ '0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B', // BOB + ADDRESSES.polygon.USDC, ], owner: '0x72e6b59d4a90ab232e55d4bb7ed2dd17494d62fb' }), @@ -13,8 +15,9 @@ module.exports = { tvl: sumTokensExport({ tokens: [ '0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b', // BOB + ADDRESSES.optimism.WETH_1, ], - owner: '0x1ca8c2b9b20e18e86d5b9a72370fc6c91814c97c' + owners: ['0x1ca8c2b9b20e18e86d5b9a72370fc6c91814c97c', '0x58320A55bbc5F89E5D0c92108F762Ac0172C5992'] }), }, } \ No newline at end of file From 9620e089b89d7e281b419772faf3be59e3985116 Mon Sep 17 00:00:00 2001 From: Jon Date: Thu, 27 Jul 2023 00:37:29 -0700 Subject: [PATCH 1311/1354] Fix tvl double subtract bug (#6921) --- projects/glif/index.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/projects/glif/index.js b/projects/glif/index.js index 2744e17f6a..195fead9a6 100644 --- a/projects/glif/index.js +++ b/projects/glif/index.js @@ -11,9 +11,8 @@ module.exports = { "The GLIF Pools protocol is a liquid staking protocol for Filecoin that requires borrowers to collateralize FIL in order to borrow for their storage providing operation. This TVL calculation adds the total amount of FIL staked into the protocol, and the total amount of locked FIL collateral by borrowers, to arrive at TVL.", filecoin: { tvl: async (_, _1, _2, { api }) => { - const [totalAssets, totalIssued, totalLockedByMiners] = await Promise.all([ + const [totalAssets, totalLockedByMiners] = await Promise.all([ api.call({ abi: totalAssetsABI, target: INFINITY_POOL_CONTRACT }), - api.call({ abi: totalBorrowedABI, target: INFINITY_POOL_CONTRACT }), // this call is too costly to perform on chain in this environment, // we wrapped the locked miners collateral in a server that derives the information directly on-chain // but serves it in a more efficient manner to not overload defillama frontend @@ -21,17 +20,15 @@ module.exports = { get("https://pools-metrics.vercel.app/api/v0/miner-collaterals"), ]); - const totalAssetsBN = BigNumber.from(totalAssets) - const totalIssuedBN = BigNumber.from(totalIssued) - const totalLockedByMinersBN = BigNumber.from(totalLockedByMiners.totalMinerCollaterals) - - // first we remove the totalIssued by the Pool from its totalAssets, to avoid double counting in the next step - const totalAssetsMinusIssued = totalAssetsBN.sub(totalIssuedBN); + const totalAssetsBN = BigNumber.from(totalAssets); + const totalLockedByMinersBN = BigNumber.from( + totalLockedByMiners.totalMinerCollaterals + ); // then we add the totalLockedByMiners to the totalAssets, to account for the FIL locked by miners as borrow collateral // this gets our tvl in attoFIL (wei denominated) without double counting - const tvl = totalAssetsMinusIssued.add(totalLockedByMinersBN).toString(); + const tvl = totalAssetsBN.add(totalLockedByMinersBN).toString(); - api.add(nullAddress, tvl) + api.add(nullAddress, tvl); }, }, }; From 06fd0aa795ba709012cfebd1a956895ebf15cd06 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Jul 2023 13:50:28 +0200 Subject: [PATCH 1312/1354] track https://fcondex.com --- projects/fcondex/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/fcondex/index.js diff --git a/projects/fcondex/index.js b/projects/fcondex/index.js new file mode 100644 index 0000000000..73c66369ff --- /dev/null +++ b/projects/fcondex/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + mantle: { + tvl: getUniTVL({ + factory: "0x3eF942017d51BA257c4B61BE2f8f641209C8b341", + useDefaultCoreAssets: true, + fetchBalanes: true, + }), + }, +}; From 0072826cc7ac43c8736c54bfd0b747329f710150 Mon Sep 17 00:00:00 2001 From: Zyberswap-Arbitrum <121235717+Zyberswap-Arbitrum@users.noreply.github.com> Date: Thu, 27 Jul 2023 13:56:07 +0200 Subject: [PATCH 1313/1354] add optimism v3 algebra (#6927) --- projects/zyberswap-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/zyberswap-v3/index.js b/projects/zyberswap-v3/index.js index 1cd8e80e44..1cace364a1 100644 --- a/projects/zyberswap-v3/index.js +++ b/projects/zyberswap-v3/index.js @@ -5,5 +5,10 @@ module.exports = uniV3Export({ factory: '0x9c2abd632771b433e5e7507bcaa41ca3b25d8544', fromBlock: 62714800, isAlgebra: true, + }, + optimism: { + factory: '0x0c8f7b0cb986b31c67d994fb5c224592a03a4afd', + fromBlock: 105900073, + isAlgebra: true, } }) From d3b5df8f2bb782344a5a73fe61f22e965e451103 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Jul 2023 14:22:09 +0200 Subject: [PATCH 1314/1354] update tegisto --- projects/tegisto/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/tegisto/index.js b/projects/tegisto/index.js index 11032fd500..699f072594 100644 --- a/projects/tegisto/index.js +++ b/projects/tegisto/index.js @@ -1,9 +1,16 @@ const { staking } = require("../helper/staking") const { getUniTVL } = require("../helper/unknownTokens") +const sdk = require('@defillama/sdk') module.exports = { kava: { - tvl: getUniTVL({ chain: 'kava', factory: '0x07fA706528c0bb721327798B5686B620BCcf5b99', useDefaultCoreAssets: true, fetchBalances: true }), + tvl: sdk.util.sumChainTvls([ + getUniTVL({ factory: '0x07fA706528c0bb721327798B5686B620BCcf5b99', useDefaultCoreAssets: true, fetchBalances: true }), + getUniTVL({ factory: '0xfdF832fe60a5145909e7b24Cff225830c1850917', useDefaultCoreAssets: true, fetchBalances: true }), + ]), staking: staking('0x744Dd9f79b80437a9e5eb0292128045F51C48b6d', '0x87F1E00d6bcD3712031e5edD26DFcdB0FEd35D20', undefined, 'tegisto', 18), + }, + celo: { + tvl: getUniTVL({ factory: '0x1FA136Ba715889B691305a687A0fbD82e6287A67', useDefaultCoreAssets: true, fetchBalances: true }), } } \ No newline at end of file From 7526087c448ed3822aeb28ffdefcaeb4d7f4bd19 Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 27 Jul 2023 22:25:35 +1000 Subject: [PATCH 1315/1354] Patched incorrect legacy USDC insurance fund address being used (#6925) * Patched incorrect legacy USDC insurance fund address being used * Fixed typo in address --- projects/drift.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/drift.js b/projects/drift.js index 97d5c67811..54e11d9f39 100644 --- a/projects/drift.js +++ b/projects/drift.js @@ -16,7 +16,7 @@ async function tvl(_, _b, _cb, { api, }) { const legacyVaults = [ '6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S', // legacy usdc vault - '2CqkQvYxp9Mq4PqLvAQ1eryYxebUh4Liyn5YMDtXsYci', // legacy usdc insurance fund + 'Bzjkrm1bFwVXUaV9HTnwxFrPtNso7dnwPQamhqSxtuhZ', // legacy usdc insurance fund ]; const getSpotMarketVaultPublicKey = marketIndex => getVaultPublicKey('spot_market_vault', marketIndex) const getInsuranceFundVaultPublicKey = marketIndex => getVaultPublicKey('insurance_fund_vault', marketIndex) From 538a79ef9cce02ff5e41addaf54225969eebe18c Mon Sep 17 00:00:00 2001 From: Michael Semin Date: Thu, 27 Jul 2023 20:27:04 +0800 Subject: [PATCH 1316/1354] added ethereum to rehold-v2 (#6922) --- projects/rehold-v2/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/rehold-v2/index.js b/projects/rehold-v2/index.js index 8b5fb1aa28..d42de3b034 100644 --- a/projects/rehold-v2/index.js +++ b/projects/rehold-v2/index.js @@ -15,6 +15,7 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { + ethereum: { tvl }, bsc: { tvl }, polygon: { tvl }, avax: { tvl }, From 4e8bc76650fec7535ef293c9c4e9f8a2df484bf0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Jul 2023 15:10:08 +0200 Subject: [PATCH 1317/1354] track https://www.lendle.xyz --- package-lock.json | 12 ++++---- projects/drift.js | 2 +- projects/helper/aave.js | 16 +++++++++- projects/lendle/index.js | 5 +++ projects/umee/index.js | 66 ++-------------------------------------- 5 files changed, 30 insertions(+), 71 deletions(-) create mode 100644 projects/lendle/index.js diff --git a/package-lock.json b/package-lock.json index 95a6310852..155721c37f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,9 +63,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.40", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.40.tgz", - "integrity": "sha512-HlAR2LjWINdTkn2mg9hTTFgWoCnmY2Z5tTjZG4urMwJO1OA/BbBqzv7Cz9oSLnlgNUOalAp1oQNDeS0/abSKPg==", + "version": "4.0.42", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.42.tgz", + "integrity": "sha512-eP9eo82vmWUqnw6Xjz9rvoNDH/5QTQp7cXdZyQa6cYV/JGRZ4Yq05BuHtnIt0ngH7BJJ4UsjDN66nMFA3uN2vA==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -4194,9 +4194,9 @@ } }, "@defillama/sdk": { - "version": "4.0.40", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.40.tgz", - "integrity": "sha512-HlAR2LjWINdTkn2mg9hTTFgWoCnmY2Z5tTjZG4urMwJO1OA/BbBqzv7Cz9oSLnlgNUOalAp1oQNDeS0/abSKPg==", + "version": "4.0.42", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.42.tgz", + "integrity": "sha512-eP9eo82vmWUqnw6Xjz9rvoNDH/5QTQp7cXdZyQa6cYV/JGRZ4Yq05BuHtnIt0ngH7BJJ4UsjDN66nMFA3uN2vA==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/projects/drift.js b/projects/drift.js index 54e11d9f39..bc0d8dc90d 100644 --- a/projects/drift.js +++ b/projects/drift.js @@ -44,5 +44,5 @@ function getVaultPublicKey(seed, marketIndex) { [ Buffer.from(anchor.utils.bytes.utf8.encode(seed)), new anchor.BN(marketIndex).toArrayLike(Buffer, 'le', 2), - ], DRIFT_PROGRAM_ID)[0]; + ], DRIFT_PROGRAM_ID)[0].toBase58() } diff --git a/projects/helper/aave.js b/projects/helper/aave.js index 74ef546ab0..744a360af3 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -1,3 +1,4 @@ +const { getLogs } = require('./cache/getLogs') const ADDRESSES = require('./coreAssets.json') const sdk = require('@defillama/sdk'); const { default: BigNumber } = require('bignumber.js'); @@ -187,7 +188,7 @@ const oracleAbis = { getAssetsPrices: "function getAssetsPrices(address[] assets) view returns (uint256[])", } -function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, abis = {}} = {}) { +function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, abis = {}, fromBlock, } = {}) { async function tvl(_, _b, _c, { api }) { const data = await getReservesData(api) @@ -225,6 +226,7 @@ function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyU } async function getReservesData(api) { + if (fromBlock) return getReservesDataFromBlock(api) const tokens = await api.call({ abi: abiv2.getReservesList, target: registry }) const data = await api.multiCall({ abi: abis.getReserveData ?? abiv2.getReserveData, calls: tokens, target: registry, }) data.forEach((v, i) => v.underlying = tokens[i]) @@ -250,6 +252,18 @@ function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyU return data } + async function getReservesDataFromBlock(api) { + const logs = await getLogs({ + api, + target: registry, + topics: ['0x3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f'], + fromBlock, + eventAbi: 'event ReserveInitialized (address indexed underlying, address indexed aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress)', + onlyArgs: true, + }) + return logs + } + const abiv2 = { getReservesList: "address[]:getReservesList", getAddressesProvider: "address:getAddressesProvider", diff --git a/projects/lendle/index.js b/projects/lendle/index.js new file mode 100644 index 0000000000..7397de943a --- /dev/null +++ b/projects/lendle/index.js @@ -0,0 +1,5 @@ +const { aaveV2Export } = require("../helper/aave"); + +module.exports = { + mantle: aaveV2Export('0x30D990834539E1CE8Be816631b73a534e5044856', { fromBlock: 56556, }) +}; \ No newline at end of file diff --git a/projects/umee/index.js b/projects/umee/index.js index 496c68b98c..1fc6c6de6f 100644 --- a/projects/umee/index.js +++ b/projects/umee/index.js @@ -1,9 +1,8 @@ const sdk = require("@defillama/sdk"); const { transformBalances } = require("../helper/portedTokens"); -const { getLogs, } = require("../helper/cache/getLogs"); - -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { aaveV2Export } = require("../helper/aave"); const { queryV1Beta1 } = require("../helper/chain/cosmos"); + let data; async function getData() { @@ -41,62 +40,6 @@ async function borrowed() { return transformBalances("umee", balances); } -async function ethTvl(_, _b, _cb, { api }) { - const logs = await getLogs({ - api, - target: "0xe296db0a0e9a225202717e9812bf29ca4f333ba6", - topics: [ - "0x3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f", - ], - fromBlock: 14216544, - eventAbi: - "event ReserveInitialized (address indexed asset, address indexed aToken, address stableDebtToken, address variableDebtToken, address interestRateStrategyAddress)", - onlyArgs: true, - }); - const tokensAndOwners = logs.map((i) => [i.asset, i.aToken]); - return sumTokens2({ api, tokensAndOwners }); -} - -async function ethBorrowed(_, _b, _cb, { api }) { - const balances = {}; - const logs = await getLogs({ - api, - target: "0xe296db0a0e9a225202717e9812bf29ca4f333ba6", - topics: [ - "0x3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f", - ], - fromBlock: 14216544, - eventAbi: - "event ReserveInitialized (address indexed asset, address indexed aToken, address stableDebtToken, address variableDebtToken, address interestRateStrategyAddress)", - onlyArgs: true, - }); - const [stableDebtSupplies, variableDebtSupplies] = await Promise.all([ - api.multiCall({ - abi: "uint256:totalSupply", - calls: logs.map((i) => i.stableDebtToken), - }), - api.multiCall({ - abi: "uint256:totalSupply", - calls: logs.map((i) => i.variableDebtToken), - }), - ]); - logs.forEach((v, i) => { - sdk.util.sumSingleBalance( - balances, - v.asset, - stableDebtSupplies[i], - api.chain - ); - sdk.util.sumSingleBalance( - balances, - v.asset, - variableDebtSupplies[i], - api.chain - ); - }); - return balances; -} - module.exports = { timetravel: false, methodology: "Total supplied assets - total borrowed assets", @@ -104,8 +47,5 @@ module.exports = { tvl, borrowed, }, - ethereum: { - tvl: ethTvl, - borrowed: ethBorrowed, - }, + ethereum: aaveV2Export('0xe296db0a0e9a225202717e9812bf29ca4f333ba6', { fromBlock: 14216544, }), }; From 320824beb452a488e1bba625ebba66d322ac9b70 Mon Sep 17 00:00:00 2001 From: rogsta-dev <126240529+rogsta-dev@users.noreply.github.com> Date: Thu, 27 Jul 2023 15:23:20 +0200 Subject: [PATCH 1318/1354] add grizzly trade (#6928) --- projects/grizzly-trade/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/grizzly-trade/index.js diff --git a/projects/grizzly-trade/index.js b/projects/grizzly-trade/index.js new file mode 100644 index 0000000000..e2f16a31bf --- /dev/null +++ b/projects/grizzly-trade/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + bsc: { + tvl: gmxExports({ vault: '0x606E4922b259fe28c10e6731e8317705AA1e253B', }) + }, +} \ No newline at end of file From 62f8fcedccaf988b2fd095dfba22c1514d05c479 Mon Sep 17 00:00:00 2001 From: Staking Agency Date: Thu, 27 Jul 2023 16:28:49 +0300 Subject: [PATCH 1319/1354] add SALSA from MultiversX (#6929) * add SALSA from MultiversX * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/salsa/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/salsa/index.js diff --git a/projects/salsa/index.js b/projects/salsa/index.js new file mode 100644 index 0000000000..2f689343e7 --- /dev/null +++ b/projects/salsa/index.js @@ -0,0 +1,16 @@ +const { call } = require("../helper/chain/elrond"); + +const ADDRESSES = require('../helper/coreAssets.json'); + +const tvl = async (_, _1, _2, { api }) => { + const tokenPrice = await call({ target: 'erd1qqqqqqqqqqqqqpgqaqxztq0y764dnet95jwtse5u5zkg92sfacts6h9su3', abi: 'getTokenPrice', responseTypes: ['number'] }); + const lsTokenSupply = await call({ target: 'erd1qqqqqqqqqqqqqpgqaqxztq0y764dnet95jwtse5u5zkg92sfacts6h9su3', abi: 'getLiquidTokenSupply', responseTypes: ['number'] }); + api.add(ADDRESSES.null, tokenPrice * lsTokenSupply / 1e18) +}; + +module.exports = { + timetravel: false, + elrond: { + tvl, + }, +}; From 998c128338b23ba93c8e0818d85c399780596ee0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Jul 2023 15:45:37 +0200 Subject: [PATCH 1320/1354] update bhavish --- projects/bhavish/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/bhavish/index.js b/projects/bhavish/index.js index 3c04e59316..5e361a69dd 100644 --- a/projects/bhavish/index.js +++ b/projects/bhavish/index.js @@ -13,4 +13,11 @@ module.exports = { ] }), }, + mantle: { + tvl: sumTokensExport({ + tokensAndOwners: [ + [nullAddress, '0xca0112597B795728d0aFC33dB2E3eD56D95F624d'], + ] + }), + } } \ No newline at end of file From 635c89d947ebfb89e0f680363803ba805daac8d6 Mon Sep 17 00:00:00 2001 From: lulzBoB Date: Thu, 27 Jul 2023 17:07:19 +0200 Subject: [PATCH 1321/1354] added adapter for weave (#6920) --- projects/weave/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/weave/index.js diff --git a/projects/weave/index.js b/projects/weave/index.js new file mode 100644 index 0000000000..1e9a03a6eb --- /dev/null +++ b/projects/weave/index.js @@ -0,0 +1,23 @@ + +const WKAVA = '0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b'; +const STRATEGY_CONTRACT = '0x9633a42E4f73F465DD421b22C09E2787493DaAdA' + +async function tvl(_, _1, _2, { api }) { + const strategyBalance = await api.call({ + abi: 'erc20:balanceOf', + target: WKAVA, + params: [STRATEGY_CONTRACT], + }); + + api.add(WKAVA, strategyBalance) +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: 'gets the balance of the strategy contract', + start: 5793963, + kava: { + tvl, + } +}; \ No newline at end of file From 2aea80a671f8cc9dc6daeeb1557f75ff5c7fbfa4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Jul 2023 17:12:18 +0200 Subject: [PATCH 1322/1354] split velodrome --- projects/velodrome-v2/index.js | 13 +++++++++++++ projects/velodrome/index.js | 10 +--------- 2 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 projects/velodrome-v2/index.js diff --git a/projects/velodrome-v2/index.js b/projects/velodrome-v2/index.js new file mode 100644 index 0000000000..e7bde1cf71 --- /dev/null +++ b/projects/velodrome-v2/index.js @@ -0,0 +1,13 @@ +const { uniTvlExport } = require('../helper/calculateUniTvl.js') + +module.exports = { + optimism: { + tvl: uniTvlExport("0xF1046053aa5682b4F9a81b5481394DA16BE5FF5a", undefined, undefined, { + allPairsLength: 'uint256:allPoolsLength', + allPairs: 'function allPools(uint256) view returns (address)', + }, { fetchBalances: true, }), + }, + hallmarks: [ + [1687465883, "v2 Migration on OP Mainnet"], // https://twitter.com/VelodromeFi/status/1671979216039202816 + ] +} diff --git a/projects/velodrome/index.js b/projects/velodrome/index.js index fa388d3afb..ebd864d507 100644 --- a/projects/velodrome/index.js +++ b/projects/velodrome/index.js @@ -1,20 +1,12 @@ -const sdk = require('@defillama/sdk') const {uniTvlExport} = require('../helper/calculateUniTvl.js') module.exports = { misrepresentedTokens: true, - doublecounted: false, - timetravel: true, - incentivized: true, optimism: { - tvl: sdk.util.sumChainTvls([uniTvlExport("0x25CbdDb98b35ab1FF77413456B31EC81A6B6B746"), uniTvlExport("0xF1046053aa5682b4F9a81b5481394DA16BE5FF5a", undefined, undefined, { - allPairsLength: 'uint256:allPoolsLength', - allPairs: 'function allPools(uint256) view returns (address)', - }, { fetchBalances: true,})]), + tvl: uniTvlExport("0x25CbdDb98b35ab1FF77413456B31EC81A6B6B746"), }, hallmarks:[ [1657760400, "First OP grant awarded"], [1659618000, "Loss $350k Operational Funds"], - [1687465883, "v2 Migration on OP Mainnet"], // https://twitter.com/VelodromeFi/status/1671979216039202816 ] } From 14c7f2478450fa7d3813c815f57b560afb835251 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 27 Jul 2023 17:18:59 +0200 Subject: [PATCH 1323/1354] track https://app.ammos.fi --- projects/ammos-fi/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/ammos-fi/index.js diff --git a/projects/ammos-fi/index.js b/projects/ammos-fi/index.js new file mode 100644 index 0000000000..82f5938c37 --- /dev/null +++ b/projects/ammos-fi/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + mantle: { factory: "0x636eA278699A300d3A849aB2cE36c891C4eE3Da0", fromBlock: 20634, }, +}); \ No newline at end of file From 7d8bf1bdeb7bdc9f0db67930fb1a06484febe0be Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 27 Jul 2023 17:58:06 +0100 Subject: [PATCH 1324/1354] add cardano tvl --- projects/ergodex.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/projects/ergodex.js b/projects/ergodex.js index 4cbf22d73a..46776b2495 100644 --- a/projects/ergodex.js +++ b/projects/ergodex.js @@ -1,8 +1,24 @@ const { sumTokensExport } = require('./helper/chain/ergo') +const utils = require('./helper/utils'); + +async function cardanoTVL() { + let response = await utils.fetchURL('https://analytics.spectrum.fi/cardano/pools/overview?after=0') + let data = response.data; + + let totalTvl = 0; + for(let i=0; i Date: Thu, 27 Jul 2023 20:07:23 +0300 Subject: [PATCH 1325/1354] PepeTeam Bridge | Add USDT/USDC on Tron (#6932) * fix swop.fi TVL * add USDT/USDC/BTCB for BSC TVL * add CRV token * add polygon MATIC * add USDT+USDC [polygon] + TRX [tron] * Add USDT/USDC Tron --- projects/pepe-bridge/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index b690b874cf..2314078ac0 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -36,7 +36,14 @@ const config = { ] ], tron: [ - [[nullAddress], 'TMsm33cUm8HuxyRqwG7xhV46cmx5NVPPGB'] + [[nullAddress], 'TMsm33cUm8HuxyRqwG7xhV46cmx5NVPPGB'], + [ + [ + ADDRESSES.tron.USDT, + ADDRESSES.tron.USDC + ], + 'TNN42f7dXYksBsh8hjVo8XD8aYSKcSEhJF' + ] ] } module.exports = {}; From 4669ea46f58794f0eff90b8823c668bcce7a0ff3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 12:16:53 +0530 Subject: [PATCH 1326/1354] track https://app.tangent.art/ (#6933) --- projects/tangent-protocol/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/tangent-protocol/index.js diff --git a/projects/tangent-protocol/index.js b/projects/tangent-protocol/index.js new file mode 100644 index 0000000000..235771d647 --- /dev/null +++ b/projects/tangent-protocol/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/chain/cardano') + +module.exports = { + cardano: { + tvl: () => 0, + staking: sumTokensExport({ owner: 'addr1q92f5qddkudgq6sna3qfsqrwnk9253gv4qwmfw735xvluhrsqycc2x23z60333ktgjrrufgv8xh2gnxr4m6av63jkassawurfj'}), + }, +}; \ No newline at end of file From a62b6d1d1899c5e11a00919a2678f29ffff14141 Mon Sep 17 00:00:00 2001 From: Roch Date: Fri, 28 Jul 2023 08:53:36 +0200 Subject: [PATCH 1327/1354] Count owna offers + fix missing borrowed tvl (#6934) * Fix Owna protocol tvl by calling contract * count borrows as borrows * remove repaid borrows * Owna: include offers + interests * Count owna offers + fix missing borrowed tvl --- projects/owna/index.js | 92 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 80 insertions(+), 12 deletions(-) diff --git a/projects/owna/index.js b/projects/owna/index.js index 84a4aece5a..4bb4f8a0a4 100644 --- a/projects/owna/index.js +++ b/projects/owna/index.js @@ -1,4 +1,6 @@ +const { get } = require('../helper/http') const config = require("./config"); +const sdk = require("@defillama/sdk"); const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { @@ -6,21 +8,87 @@ module.exports = { }; config.chains.forEach(async chainInfo => { - const { name: chain, tokens, lendingContract, nftContract } = chainInfo + const {name: chain, tokens, lendingContract, nftContract} = chainInfo - async function borrowed(_, _1, _2, { api }) { - const count = await api.call({ abi: 'uint256:noOfTokenId', target: nftContract }) - let calls = [] - for (let i = 0; i < count; i++) calls.push(i) - const borrows = await api.multiCall({ calls, abi: 'function borrow(uint256) view returns (bool nft, bool isEntryFeePaid, bool isSold, uint256 nftId, uint256 offerType, uint256 loanAmount, uint256 debtPaid, uint256 lastUpdate, uint256 borrowedStartTime)', target: lendingContract }) - borrows.forEach(borrow => { - if (!borrow.isEntryFeePaid) - api.add(tokens[0], borrow.loanAmount - borrow.debtPaid) - }) + async function currentTokenId() { + return (await sdk.api.abi.call({ + abi: "uint256:noOfTokenId", + target: nftContract, + chain + })).output + } + + async function getBorrow(tokenId) { + return (await sdk.api.abi.call({ + abi: "function borrow(uint256) view returns (bool nft, bool isEntryFeePaid, bool isSold, uint256 nftId, uint256 offerType, uint256 loanAmount, uint256 debtPaid, uint256 lastUpdate, uint256 borrowedStartTime)", + target: lendingContract, + chain, + params: [tokenId] + })).output + } + + async function requestAgainstNft(tokenId, offerID) { + return (await sdk.api.abi.call({ + abi: "function requestAgainstNft(uint256,uint256) view returns (uint256 offerID, uint256 offerType, uint256 nftId, uint256 durations, uint256 offerStartTime, uint256 apr, uint256 minLoan, uint256 maxLoan, uint256 loan, uint256 acceptable_debt, address lender, address borrower, string status)", + target: lendingContract, + chain, + params: [tokenId, offerID] + })).output + } + + async function readDynamicInterest(tokenId, offerID) { + return (await sdk.api.abi.call({ + abi: "function readDynamicInterest(uint256,uint256) view returns (uint256)", + target: lendingContract, + chain, + params: [tokenId, offerID] + })).output + } + + async function getOffersCount(tokenId) { + return parseInt(await get('https://backend.owna.io/offer/getOffersCount?mintId=' + tokenId)); + } + + async function totalOffers() { + let total = 0; + for (let i = 0; i < await currentTokenId(); i++) { + const borrow = await getBorrow(i); + if (parseInt(borrow.offerType) === 0) { + var offerCount = await getOffersCount(i); + if (offerCount > 0) { + for (let j = 0; j < offerCount; j++) { + var offer = await requestAgainstNft(i, j); + if (offer.status == "Pending") { + total += parseInt(offer.maxLoan); + } + } + } + } + } + return { + usd: total / 10 ** 6, + }; + } + + async function totalBorrowed() { + let total = 0; + let totalInterest = 0; + for (let i = 0; i <= await currentTokenId(); i++) { + const borrow = await getBorrow(i); + if (!borrow.isEntryFeePaid) { + total += parseInt(borrow.loanAmount); + if (parseInt(borrow.offerType) > 0) { + totalInterest += parseInt(await readDynamicInterest(i, 0)); + } + }} + return { + usd: (total / 10 ** 6) + (totalInterest / 10 ** 6), + }; } module.exports[chain] = { - tvl: sumTokensExport({ tokens, owners: [lendingContract] }), - borrowed, + tvl: sumTokensExport({ chain, tokens, owners: [lendingContract] }), + borrowed: totalBorrowed, + offers: totalOffers, } }) From 7af3d2a07dbd347740cdbd9af491ba78baef3fe2 Mon Sep 17 00:00:00 2001 From: Noah Bayindirli Date: Thu, 27 Jul 2023 23:54:46 -0700 Subject: [PATCH 1328/1354] Add BSC & Polygon PoS to Prime Protocol (#6935) --- projects/prime-protocol/index.js | 128 ++++++++++++++++++++++++------- 1 file changed, 100 insertions(+), 28 deletions(-) diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js index a5e835dbe3..3c770ad99c 100644 --- a/projects/prime-protocol/index.js +++ b/projects/prime-protocol/index.js @@ -3,7 +3,7 @@ const sdk = require('@defillama/sdk'); const { sumTokens2, } = require('../helper/unwrapLPs') const MASTER_VIEW_CONTRACT = { - v146: { + v1_4_6: { address: '0x47ecFB57deD0160d66103A6A201C5f30f7CC7d13', abi: { calculateAssetTVL: 'function calculateRawAssetTVL(uint256 chainId, address pToken) view returns (uint256)' @@ -12,113 +12,179 @@ const MASTER_VIEW_CONTRACT = { }; const MOONBEAM_MARKETS = { - GLMR_v146: { + xcDOT_v0_v1_2_0: { + pTokenMarketAddress: '0x156F5c70a157A381610F1DbaAE4f336a2DB70E7E', + pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080' + }, + GLMR_v1_v1_4_6: { pTokenMarketAddress: '0x53d5a47bb874eE688acb479676aD133d47CB9B25', pTokenUnderlyingAddress: ADDRESSES.null, }, - whUSDC_v146: { + whUSDC_v1_v1_4_6: { pTokenMarketAddress: '0x5f8d500ec32dB09aa3115a852f30e9C756867d5A', pTokenUnderlyingAddress: '0x931715FEE2d06333043d11F658C8CE934aC61D0c', }, - xcUSDT_v146: { + xcUSDT_v1_v1_4_6: { pTokenMarketAddress: '0x1D5CC7840a05BA39Db0AAd21e14dF1ff09b599ED', pTokenUnderlyingAddress: ADDRESSES.moonbeam.xcUSDT, }, - xcDOT_v146: { + xcDOT_v1_v1_4_6: { pTokenMarketAddress: '0x8f7F208F38A4362e6Fe6112b720630f93bb608aA', pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', }, - GLMR_v160: { + GLMR_v2_v1_6_0: { pTokenMarketAddress: '0xdC427cDB81E1532747BEDeB8077a4AEcDbfB585e', pTokenUnderlyingAddress: ADDRESSES.null, }, - whUSDC_v160: { + whUSDC_v2_v1_6_0: { pTokenMarketAddress: '0x227EEB717a3Ec78025bE51c87b3A7160192613D2', pTokenUnderlyingAddress: '0x931715FEE2d06333043d11F658C8CE934aC61D0c', }, - xcUSDT_v160: { + xcUSDT_v2_v1_6_0: { pTokenMarketAddress: '0x8ef25FAC30DeD9A210151C1d27e58F71f2142e2f', pTokenUnderlyingAddress: ADDRESSES.moonbeam.xcUSDT, }, - xcDOT_v160: { + xcDOT_v2_v1_6_0: { pTokenMarketAddress: '0x525c6B3D27B6b1Fc28bca7dc04964247c1a942B1', pTokenUnderlyingAddress: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', + }, + whWBTC_v2_v1_10_2: { + pTokenMarketAddress: '0x2A104E502480b4e3C1D13EA2EC657C08f4578a7a', + pTokenUnderlyingAddress: '0xE57eBd2d67B462E9926e04a8e33f01cD0D64346D', } }; const AVALANCHE_MARKETS = { - ETH_v146: { + ETH_v1_v1_4_6: { pTokenMarketAddress: '0x94ebF80b33120a1AbE370E56192db39f4944b6ca', pTokenUnderlyingAddress: ADDRESSES.avax.WETH_e, }, - USDC_v146: { + USDC_v1_v1_4_6: { pTokenMarketAddress: '0x6Cce9601CA44a9049A761C22b70D5849662c2C0a', pTokenUnderlyingAddress: ADDRESSES.avax.USDC, }, - USDT_v146: { + USDT_v1_v1_4_6: { pTokenMarketAddress: '0xe06F55FB6c6C62b74AAD7eb77f00b06920FB176e', pTokenUnderlyingAddress: ADDRESSES.avax.USDt, }, - ETH_v160: { + ETH_v2_v1_6_0: { pTokenMarketAddress: '0x4Ebba16380fEb2083938c008aEDD4b5EBeA80f72', pTokenUnderlyingAddress: ADDRESSES.avax.WETH_e, }, - USDC_v160: { + USDC_v2_v1_6_0: { pTokenMarketAddress: '0x73c5c93E78cB8CA4939307e0D95e032631fB9eEe', pTokenUnderlyingAddress: ADDRESSES.avax.USDC, }, - USDT_v160: { + USDT_v2_v1_6_0: { pTokenMarketAddress: '0x1BF6752282039ee82C06DE64D094C9E35578A1a0', pTokenUnderlyingAddress: ADDRESSES.avax.USDt, }, + DAI_v2_v1_10_2: { + pTokenMarketAddress: '0x05f2B8EAc42c9Cc771B8ECF6448481A3802e08c6', + pTokenUnderlyingAddress: '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', + }, + bBTC_v2_v1_10_2: { + pTokenMarketAddress: '0xA5c74A10B60f276F806468c6E2f83D490dCfA89A', + pTokenUnderlyingAddress: '0x152b9d0FdC40C096757F570A51E494bd4b943E50', + }, }; const ARBITRUM_MARKETS = { - ETH_v146: { + ETH_v1_v1_4_6: { pTokenMarketAddress: '0x2E9F73aA3F16748C9c1E8243D204d60F87dEC872', pTokenUnderlyingAddress: ADDRESSES.null, }, - USDC_v146: { + USDC_v1_v1_4_6: { pTokenMarketAddress: '0x1b0509D8CC044805F54D132ccDa7b4A4ED88261A', pTokenUnderlyingAddress: ADDRESSES.arbitrum.USDC, }, - ETH_v160: { + ETH_v2_v1_6_0: { pTokenMarketAddress: '0xc01683398fFCc86264ba17bC36977f51A1d25e06', pTokenUnderlyingAddress: ADDRESSES.null, }, - USDC_v160: { + USDC_v2_v1_6_0: { pTokenMarketAddress: '0xddC6Df52F9749ED80966Fb6a9D4C87264cC1e6C1', pTokenUnderlyingAddress: ADDRESSES.arbitrum.USDC, }, + DAI_v2_v1_10_2: { + pTokenMarketAddress: '0x3e1C8203B8D36E8E427Ee181A65549fd86AE3907', + pTokenUnderlyingAddress: '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', + }, + WBTC_v2_v1_10_2: { + pTokenMarketAddress: '0x51Ff97d92683992AD091E04470069bB942219D71', + pTokenUnderlyingAddress: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', + }, + nativeUSDC_v1_v1_10_2: { + pTokenMarketAddress: '0xA44C28Bd4Fd4fc307f23B2E6e9cC07BC03571798', + pTokenUnderlyingAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', + }, }; const ETHEREUM_MARKETS = { - ETH_v146: { + ETH_v1_v1_4_6: { pTokenMarketAddress: '0xD15a15C0b6d79D9E59F4fcC0D17912219f6b470C', pTokenUnderlyingAddress: ADDRESSES.null, }, - USDC_v146: { + USDC_v1_v1_4_6: { pTokenMarketAddress: '0x8F0Ba37DAC51a8102b1203C9D9ac26724DC684Ac', pTokenUnderlyingAddress: ADDRESSES.ethereum.USDC, }, - USDT_v146: { + USDT_v1_v1_4_6: { pTokenMarketAddress: '0x373bb8bE40Ee6f704576CDC815372ff71d6825c5', pTokenUnderlyingAddress: ADDRESSES.ethereum.USDT, }, - ETH_v160: { + ETH_v2_v1_6_0: { pTokenMarketAddress: '0xd833F882ca07F69C4C5a069675B6B65C235325C3', pTokenUnderlyingAddress: ADDRESSES.null, }, - USDC_v160: { + USDC_v2_v1_6_0: { pTokenMarketAddress: '0x67CeC45eB8d9f059D4c974a4BdEA357b68Ad80Ef', pTokenUnderlyingAddress: ADDRESSES.ethereum.USDC, }, - USDT_v160: { + USDT_v2_v1_6_0: { pTokenMarketAddress: '0xDC313B592949E8F4bB91A22c6DC9f7BE11b74Ea7', pTokenUnderlyingAddress: ADDRESSES.ethereum.USDT, }, }; +const BSC_MARKETS = { + USDC_v2_v1_10_2: { + pTokenMarketAddress: '0xc01683398fFCc86264ba17bC36977f51A1d25e06', + pTokenUnderlyingAddress: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', + }, + USDT_v2_v1_10_2: { + pTokenMarketAddress: '0xddC6Df52F9749ED80966Fb6a9D4C87264cC1e6C1', + pTokenUnderlyingAddress: '0x55d398326f99059fF775485246999027B3197955', + }, + BNB_v2_v1_10_2: { + pTokenMarketAddress: '0xaCD7a2991f3514E215034Ace732Bafe005185C94', + pTokenUnderlyingAddress: ADDRESSES.null, + }, + BTCB_v2_v1_10_2: { + pTokenMarketAddress: '0xA7BCF4433e044e454c43fe596C9eE8DDAF5776aC', + pTokenUnderlyingAddress: '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', + }, + ETH_v2_v1_10_2: { + pTokenMarketAddress: '0xBdDc67911C63f63e6720A8EEfCAF08a573Fd9AE4', + pTokenUnderlyingAddress: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', + }, +}; + +const POLYGON_POS_MARKETS = { + USDC_v1_v1_10_2: { + pTokenMarketAddress: '0x45913B2088E2910C3Dd168c2f08eaf2274D7bf6c', + pTokenUnderlyingAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', + }, + USDT_v1_v1_10_2: { + pTokenMarketAddress: '0x2ce0Ac2FD666a93b70fbE731C9Fe6581f410F73B', + pTokenUnderlyingAddress: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', + }, + WBTC_v1_v1_10_2: { + pTokenMarketAddress: '0x786D8B5d16171f441BC5F2047bDf0Ea54268a735', + pTokenUnderlyingAddress: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', + }, +}; + const PRIME_MARKETS = { moonbeam: { networkMarkets: MOONBEAM_MARKETS @@ -132,7 +198,13 @@ const PRIME_MARKETS = { ethereum: { networkMarkets: ETHEREUM_MARKETS }, -} + bsc: { + networkMarkets: BSC_MARKETS + }, + polygon: { + networkMarkets: POLYGON_POS_MARKETS + }, +}; async function borrowed(_, _1, _2, { api }) { const moonbeamApi = new sdk.ChainApi({ chain: 'moonbeam' }); @@ -141,8 +213,8 @@ async function borrowed(_, _1, _2, { api }) { let uDecimals = await api.multiCall({ abi: 'erc20:decimals', calls: markets.map(i => i.pTokenUnderlyingAddress), permitFailure: true, }) uDecimals = uDecimals.map(i => i ?? 18) let rawTvls = await moonbeamApi.multiCall({ - abi: MASTER_VIEW_CONTRACT.v146.abi.calculateAssetTVL, - target: MASTER_VIEW_CONTRACT.v146.address, + abi: MASTER_VIEW_CONTRACT.v1_4_6.abi.calculateAssetTVL, + target: MASTER_VIEW_CONTRACT.v1_4_6.address, calls: markets.map(i => ({ params: [api.getChainId(), i.pTokenMarketAddress] })), }) rawTvls.forEach((v, i) => api.add(markets[i].pTokenUnderlyingAddress, v * (10 ** uDecimals[i] / 1e18))) From 16cc5698c958c565cf5f485be9624a72a7ac5184 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 12:32:01 +0530 Subject: [PATCH 1329/1354] Paraspace (#6942) * feat: support polygon and zksync * minor fix --------- Co-authored-by: jfzhou5 <1241330802@qq.com> --- .../paraspace/helper/abis/UiPoolDataProvider.json | 4 ++-- projects/paraspace/helper/address.js | 11 ++++++++++- projects/paraspace/index.js | 8 ++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/projects/paraspace/helper/abis/UiPoolDataProvider.json b/projects/paraspace/helper/abis/UiPoolDataProvider.json index 29f6c69487..5172ed1153 100644 --- a/projects/paraspace/helper/abis/UiPoolDataProvider.json +++ b/projects/paraspace/helper/abis/UiPoolDataProvider.json @@ -1,4 +1,4 @@ { - "getReservesData": "function getReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold, uint256 reserveLiquidationBonus, uint256 reserveFactor, bool usageAsCollateralEnabled, bool borrowingEnabled, bool auctionEnabled, bool isActive, bool isFrozen, bool isPaused, bool isAtomicPricing, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address xTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, address auctionStrategyAddress, uint256 availableLiquidity, uint256 totalScaledVariableDebt, uint256 priceInMarketReferenceCurrency, address priceOracle, uint256 variableRateSlope1, uint256 variableRateSlope2, uint256 baseVariableBorrowRate, uint256 optimalUsageRatio, uint128 accruedToTreasury, uint256 borrowCap, uint256 supplyCap, uint8 assetType)[], tuple(uint256 marketReferenceCurrencyUnit, int256 marketReferenceCurrencyPriceInUsd, int256 networkBaseTokenPriceInUsd, uint8 networkBaseTokenPriceDecimals))", + "getReservesData": "function getReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold, uint256 reserveLiquidationBonus, uint256 reserveFactor, bool usageAsCollateralEnabled, bool borrowingEnabled, bool auctionEnabled, bool isActive, bool isFrozen, bool isPaused, bool isAtomicPricing, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address xTokenAddress, address variableDebtTokenAddress, address interestRateStrategyAddress, address auctionStrategyAddress, address timeLockStrategyAddress, uint256 availableLiquidity, uint256 totalScaledVariableDebt, uint256 priceInMarketReferenceCurrency, address priceOracle, uint256 variableRateSlope1, uint256 variableRateSlope2, uint256 baseVariableBorrowRate, uint256 optimalUsageRatio, uint128 accruedToTreasury, uint256 borrowCap, uint256 supplyCap, uint8 assetType, tuple(uint256 minThreshold, uint256 midThreshold, uint48 minWaitTime, uint48 midWaitTime, uint48 maxWaitTime, uint48 poolPeriodWaitTime, uint256 poolPeriodLimit, uint256 period, uint128 totalAmountInCurrentPeriod, uint48 lastResetTimestamp) timeLockStrategyData)[], tuple(uint256 marketReferenceCurrencyUnit, int256 marketReferenceCurrencyPriceInUsd, int256 networkBaseTokenPriceInUsd, uint8 networkBaseTokenPriceDecimals))", "getUniswapV3LpTokenData": "function getUniswapV3LpTokenData(address provider, address lpTokenAddress, uint256 tokenId) view returns (tuple(address token0, address token1, uint24 feeRate, int24 positionTickLower, int24 positionTickUpper, int24 currentTick, uint128 liquidity, uint256 liquidityToken0Amount, uint256 liquidityToken1Amount, uint256 lpFeeToken0Amount, uint256 lpFeeToken1Amount, uint256 tokenPrice, uint256 baseLTVasCollateral, uint256 reserveLiquidationThreshold))" -} \ No newline at end of file +} diff --git a/projects/paraspace/helper/address.js b/projects/paraspace/helper/address.js index f9e91b5887..5d313c7071 100644 --- a/projects/paraspace/helper/address.js +++ b/projects/paraspace/helper/address.js @@ -1,6 +1,6 @@ module.exports = { ethereum: { - UiPoolDataProvider: "0xcFcca0A2531069f16634beeD1C74d28ac1F7d271", + UiPoolDataProvider: "0x30E6C173Ff3958a6629258C71Bd161e70BEe0e6D", PoolAddressProvider: "0x6cD30e716ADbE47dADf7319f6F2FB83d507c857d", UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", P2PPairStaking: "0xf090Eb4c2B63e7B26E8Bb09e6Fc0cC3A7586263B", @@ -16,4 +16,13 @@ module.exports = { PoolAddressProvider: "0x45a35124749B061a29f91cc8ddf85606586dcf24", UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", }, + polygon: { + UiPoolDataProvider: "0xa2a9dD7079f05d17BE291D99048e671129DdDc83", + PoolAddressProvider: "0x42b0C49130162F949e82ba855C4eFF0C3Fd4C5cC", + UniV3Pos: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", + }, + era: { + UiPoolDataProvider: "0x451E3288a2dcD91b001cd831dD75109D524578b6", + PoolAddressProvider: "0xc11B2F53E119634c8755855e56D323C4F6dfd23d", + }, }; diff --git a/projects/paraspace/index.js b/projects/paraspace/index.js index 353aec961e..83dfe18991 100644 --- a/projects/paraspace/index.js +++ b/projects/paraspace/index.js @@ -13,5 +13,13 @@ module.exports = { arbitrum: { tvl, borrowed, + }, + polygon: { + tvl, + borrowed, + }, + era: { + tvl, + borrowed, } }; From 51b0a5ee5f587ca7a6431039201e66b86199f950 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 09:39:43 +0200 Subject: [PATCH 1330/1354] track lodestar-v1 --- projects/lodestar-v1/index.js | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 projects/lodestar-v1/index.js diff --git a/projects/lodestar-v1/index.js b/projects/lodestar-v1/index.js new file mode 100644 index 0000000000..ca0bb507b1 --- /dev/null +++ b/projects/lodestar-v1/index.js @@ -0,0 +1,52 @@ +const sdk = require('@defillama/sdk') +const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { transformBalances } = require('../helper/portedTokens') +const chain = 'arbitrum' +const controller = '0xa86dd95c210dd186fa7639f93e4177e97d057576' +const cETHER = '0x2193c45244AF12C280941281c8aa67dD08be0a64'.toLowerCase() + +async function getMarkets(block) { + let markets = await sdk.api2.abi.call({ target: controller, abi: abis.getAllMarkets, chain, block }) + markets = markets.filter(i => i.toLowerCase() !== cETHER) + + const tokens = await sdk.api2.abi.multiCall({ + abi: abis.underlying, + calls: markets, + chain, block, + }) + + markets.push(cETHER) + tokens.push(nullAddress) + return { markets, tokens } +} + +async function tvl(_, _b, { arbitrum: block }) { + const { markets, tokens } = await getMarkets(block) + const tokensAndOwners = tokens.map((t, i) => ([t, markets[i]])) + return sumTokens2({ tokensAndOwners, chain, block, }) +} + +async function borrowed(_, _b, { arbitrum: block }) { + const { markets, tokens } = await getMarkets(block) + const balances = {} + const borrows = await sdk.api2.abi.multiCall({ + abi: abis.totalBorrows, + calls: markets, + chain, block, + }) + borrows.forEach((a, i) => sdk.util.sumSingleBalance(balances, tokens[i], a)) + return transformBalances(chain, balances) +} + +module.exports = { + arbitrum: { + tvl, + borrowed, + } +}; + +const abis = { + getAllMarkets: "address[]:getAllMarkets", + underlying: "address:underlying", + totalBorrows: "uint256:totalBorrows", +} \ No newline at end of file From 48cc0362891985ee659d21470c0aa1bd07e1c9b8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 12:08:36 +0200 Subject: [PATCH 1331/1354] update fluidity --- projects/fluidity-money/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/fluidity-money/index.js b/projects/fluidity-money/index.js index 4e30bdc9ac..bc6b358e3c 100644 --- a/projects/fluidity-money/index.js +++ b/projects/fluidity-money/index.js @@ -1,8 +1,8 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const ATOKENS_ETHEREUM = ['0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x101cc05f4A51C0319f570d5E146a8C625198e636', '0xd4937682df3C8aEF4FE912A96A74121C0829E664']; const APOOL_ETHEREUM = ['0xFC66c25dbDb0606e7F9cA1d2754Eb0A0f8306dA9', '0x5E88f6dc0aa126FA28A137B24d0B4d7231352a0B', '0xB7a2930e66D84Da74CdcFE4f97FaE9fC8f1114e8']; -const ATOKENS_ARBITRUM = ['0x6ab707Aca953eDAeFBc4fD23bA73294241490620', '0x625E7708f30cA75bfd92586e17077590C60eb4cD', '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE']; -const APOOL_ARBITRUM = ['0xad7e2165FEa1d29030dF806cE4d530fa7a44511B', '0x23E7f09Fae0933db01420173726d18Dae809022C', '0xB7D37C5b15CDF29265C20668c20cD78586c423A8']; +const ATOKENS_ARBITRUM = ['0x6ab707Aca953eDAeFBc4fD23bA73294241490620', '0x625E7708f30cA75bfd92586e17077590C60eb4cD', '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', '0x724dc807b04555b71ed48a6896b6f41593b8c637']; +const APOOL_ARBITRUM = ['0xad7e2165FEa1d29030dF806cE4d530fa7a44511B', '0x23E7f09Fae0933db01420173726d18Dae809022C', '0xB7D37C5b15CDF29265C20668c20cD78586c423A8', '0x91beB5C41dF001175b588C9510327D53f278972A']; const COMPOUND_ETHEREUM = [ ['0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9', '0x372025203D25589eC3aDAd82652De78eC76fFabC'], ['0x39AA39c021dfbaE8faC545936693aC917d5E7563', '0xE87Adc9D382Eee54C1eDE017D6E5C1324D59F457'], From 3ce2de1eec2dbf54025ab257cce7e75d979ede85 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 13:25:47 +0200 Subject: [PATCH 1332/1354] fix izumi --- projects/izumi/utils.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/izumi/utils.js b/projects/izumi/utils.js index b672f0012f..786fb7d6df 100644 --- a/projects/izumi/utils.js +++ b/projects/izumi/utils.js @@ -3,7 +3,8 @@ const { unwrapUniswapV3NFTs } = require('../helper/unwrapLPs') const sdk = require("@defillama/sdk"); const abi = require('./abi.json'); const BigNumber = require('bignumber.js'); -const { get } = require('../helper/http') +const { get } = require('../helper/http'); +const { nullAddress } = require('../helper/tokenMapping'); function point2PoolPriceUndecimalSqrt(point) { return (1.0001 ** point) ** 0.5; @@ -155,6 +156,7 @@ async function unwrapiZiswapFixNFT({ balances, owner, nftAddress, block, chain = const poolInfo = (await sdk.api.abi.call({ target: factory, abi: abi.pool, block, chain, params: [miningInfo.tokenX_, miningInfo.tokenY_, miningInfo.fee_] })).output + if (poolInfo == nullAddress) return balances const state = (await sdk.api.abi.call({ target: poolInfo, abi: abi.state, block, chain })).output let params = { From 02c2493c3571e40262155db237f768c915ae83a8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 13:36:04 +0200 Subject: [PATCH 1333/1354] fix sunswap --- projects/sunswap-v2/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/sunswap-v2/index.js b/projects/sunswap-v2/index.js index 90b64aa698..8d96bbac22 100644 --- a/projects/sunswap-v2/index.js +++ b/projects/sunswap-v2/index.js @@ -4,6 +4,6 @@ module.exports = { timetravel: false, misrepresentedTokens: true, tron: { - tvl: getUniTVL({ factory: 'TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: 'TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY', useDefaultCoreAssets: true, queryBatched: 21 }), } } From d7eeaf9d7d6bfd804f4e51fe85b8eeaea64c1af2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 15:02:49 +0200 Subject: [PATCH 1334/1354] fix sft --- projects/sft-protocol/index.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/projects/sft-protocol/index.js b/projects/sft-protocol/index.js index 283f4db2a8..2a3c6bab71 100644 --- a/projects/sft-protocol/index.js +++ b/projects/sft-protocol/index.js @@ -1,26 +1,30 @@ const ADDRESSES = require('../helper/coreAssets.json') -const {sumTokens2} = require('../helper/unwrapLPs'); -const {utils} = require("ethers"); -const {get} = require('../helper/http'); +const { sumTokens2 } = require('../helper/unwrapLPs'); +const { utils } = require("ethers"); +const { getConfig } = require('../helper/cache'); const tokens = [ ADDRESSES.null, // FIL ] const getActiveMinersFromRPC = async () => { - const resp = await get('https://api.sftproject.io/api/v1/public/dashboard/info') + const resp = await getConfig('sft-protocol', 'https://api.sftproject.io/api/v1/public/dashboard/info') let nodes = [] let node_i = [] - nodes = resp.data.combined.map(({ miner }) => { + nodes = resp.data.combined + .filter(i => i.miner && i.miner !== '') + .map(({ miner }) => { let node = parseInt(miner.slice(2,)) let bytes = Buffer.alloc(20); bytes.writeUint8(0xff, 0); bytes.writeBigUint64BE(BigInt(node), 12); return utils.getAddress('0x' + bytes.toString('hex')); }); - + if (resp.data.independent !== null) { - node_i = resp.data.independent.map(({ miner }) => { + node_i = resp.data.independent + .filter(i => i.miner && i.miner !== '') + .map(({ miner }) => { let node = parseInt(miner.slice(2,)) let bytes = Buffer.alloc(20); bytes.writeUint8(0xff, 0); @@ -34,12 +38,12 @@ const getActiveMinersFromRPC = async () => { module.exports = { filecoin: { - tvl: async (_, _1, _2, {api}) => { + tvl: async (_, _1, _2, { api }) => { let balances = {}; let minerAddrs = await getActiveMinersFromRPC(); - await sumTokens2({balances, owners: minerAddrs, tokens, api, }); + await sumTokens2({ balances, owners: minerAddrs, tokens, api, }); return balances; } From f7667afd473bf53664980576b8e1d7c6eba3c3bb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 28 Jul 2023 16:52:17 +0200 Subject: [PATCH 1335/1354] fix broken adapters --- projects/helper/env.js | 1 - projects/helper/http.js | 4 +-- projects/hydradex/getHydraV3SubgraphTvl.js | 4 +-- projects/sudoswap/index.js | 33 ++++++++++++++++++++++ projects/unipilot/index.js | 27 ++++++++++++++++-- 5 files changed, 61 insertions(+), 8 deletions(-) diff --git a/projects/helper/env.js b/projects/helper/env.js index 629da7076d..d1cd406d5c 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -9,7 +9,6 @@ const DEFAULTS = { APTOS_RPC: 'https://aptos-mainnet.pontem.network', SUI_RPC: 'https://fullnode.mainnet.sui.io/', MULTIVERSX_RPC: 'https://api.multiversx.com', - LINEA_RPC: 'https://linea.rpc.thirdweb.com', PGN_RPC: 'https://rpc.publicgoods.network', } diff --git a/projects/helper/http.js b/projects/helper/http.js index cdae512f94..09a9bb3eb2 100644 --- a/projects/helper/http.js +++ b/projects/helper/http.js @@ -104,9 +104,9 @@ async function blockQuery(endpoint, query, { api, blockCatchupLimit = 500, }) { } } -async function graphFetchById({ endpoint, query, params = {}, api, options: { useBlock = false } = {} }) { +async function graphFetchById({ endpoint, query, params = {}, api, options: { useBlock = false, safeBlockLimit = 100 } = {} }) { if (useBlock && !params.block) - params.block = await api.getBlock() - 100 + params.block = await api.getBlock() - safeBlockLimit let data = [] let lastId = "" diff --git a/projects/hydradex/getHydraV3SubgraphTvl.js b/projects/hydradex/getHydraV3SubgraphTvl.js index e0fd25b396..2f0373bde2 100644 --- a/projects/hydradex/getHydraV3SubgraphTvl.js +++ b/projects/hydradex/getHydraV3SubgraphTvl.js @@ -4,8 +4,8 @@ const HOURS_12 = 12 * 3600 async function getBlock(endpoint, timestamp) { const params = { - timestamp_from: timestamp - HOURS_12, - timestamp_to: timestamp + HOURS_12, + timestamp_from: timestamp - HOURS_12 * 2, + timestamp_to: timestamp + HOURS_12 * 2, } const query = `query ($timestamp_to: Int, $timestamp_from: Int){ blocks (orderBy: "timestamp" first:1 orderDirection: "desc" where: { timestamp_lte: $timestamp_to timestamp_gte: $timestamp_from}) { diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js index c06bc71200..c65d403495 100644 --- a/projects/sudoswap/index.js +++ b/projects/sudoswap/index.js @@ -39,6 +39,7 @@ module.exports = { api, options: { useBlock: true, + safeBlockLimit: 500, } }) const balances = {} @@ -60,3 +61,35 @@ module.exports = { } } } + +/* +const { getLogs } = require('../helper/cache/getLogs') +const { getCache, setCache } = require('../helper/cache') +const { nullAddress, } = require('../helper/unwrapLPs') + +module.exports = { + methodology: 'Sum up all the ETH & nfts in pools', + ethereum: { + tvl: async (_, block, _1, { api }) => { + const PairFactory = '0xb16c1342E617A5B6E4b631EB114483FDB289c0A4' + const logs = await getLogs({ + api, + target: PairFactory, + topics: ['0xf5bdc103c3e68a20d5f97d2d46792d3fdddfa4efeb6761f8141e6a7b936ca66c'], + eventAbi: 'event NewPair(address pool)', + onlyArgs: true, + fromBlock: 14645816, + }) + const pools = logs.map(i => i.pool) + const cache = await getCache('sudoswap-v1', api.chain) + if (!cache.pools) cache.nfts = [] + const missingPools = pools.slice(cache.nfts.length) + const missingNfts = await api.multiCall({ abi: 'address:nft', calls: missingPools}) + cache.nfts.push(...missingNfts) + + if (missingPools.length > 0) await setCache('sudoswap-v1', api.chain, cache) + await api.sumTokens({ owners: pools, tokens: [nullAddress]}) + return api.sumTokens({ tokensAndOwners2: [cache.nfts, pools], blacklistedTokens: ['0x08142348e6bbf233002b81047bc2f27026af10a5']}) + } + } +} \ No newline at end of file diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js index 9ff6ea60d9..6a2f2b6338 100644 --- a/projects/unipilot/index.js +++ b/projects/unipilot/index.js @@ -1,4 +1,4 @@ -const sdk = require("@defillama/sdk"); +const { cachedGraphQuery } = require('../helper/cache') const { getLogs } = require("../helper/cache/getLogs"); const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); @@ -99,8 +99,29 @@ async function getVaultLogs(vaults, factoryType, api) { async function tvl(timestamp, block, chainBlocks, { api }) { let vaults = {}; - for (const label of Object.keys(START_BLOCKS[api.chain])) - await getVaultLogs(vaults, label, api) + if (api.chain === "dogechain") { + const res = await cachedGraphQuery('unipilot/'+api.chain, 'https://apis.unipilot.io:5000/subgraphs/name/hamzabhatti125/stats-dogechain', `{ + vaults { + token0 { + id + } + token1 { + id + } + id + } + }`) + res.vaults.forEach(({ token0, token1, id }) => { + vaults[id] = { + token0Address: token0.id, + token1Address: token1.id, + } + }) + } else { + for (const label of Object.keys(START_BLOCKS[api.chain])) + await getVaultLogs(vaults, label, api) + + } const ownerTokens = Object.entries(vaults).map(([v, i]) => [[i.token0Address, i.token1Address], v]) const vaultKeys = Object.keys(vaults) From fef3ba9a73401a5d6d1024d915454f5f0cb83589 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 29 Jul 2023 11:43:39 +0200 Subject: [PATCH 1336/1354] track sablier-v2 --- projects/flashstake-old/index.js | 32 ++++++++---------- projects/sablier-v2/index.js | 57 ++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 19 deletions(-) create mode 100644 projects/sablier-v2/index.js diff --git a/projects/flashstake-old/index.js b/projects/flashstake-old/index.js index c9cac47aa6..25dfe37017 100644 --- a/projects/flashstake-old/index.js +++ b/projects/flashstake-old/index.js @@ -1,24 +1,18 @@ -const { request, gql } = require("graphql-request"); -const { toUSDTBalances } = require("../helper/balances"); -const graphUrl = - "https://api.thegraph.com/subgraphs/name/blockzerohello/flash-stake-stats-v2-subgraph"; -const graphQuery = gql` - query get_tvl($block: Int) { - flashFactories(block: { number: $block }) { - totalVolumeUSD - totalLiquidityUSD - } - } -`; -async function tvl(timestamp, block) { - const { flashFactories } = await request(graphUrl, graphQuery, { - block, - }); - const usdTvl = Number(flashFactories[0].totalLiquidityUSD); - return toUSDTBalances(usdTvl); +const { getLogs } = require('../helper/cache/getLogs') + +async function tvl(timestamp, block, _, { api }) { + const logs = await getLogs({ + api, + target: '0xb0aeae6e204bd95911ead25263d7078954fb7fb0', + topics: ['0x4f2ce4e40f623ca765fc0167a25cb7842ceaafb8d82d3dec26ca0d0e0d2d4896'], + eventAbi: 'event PoolCreated (address pool, address token)', + onlyArgs: true, + fromBlock: 12030855, + }) + return api.sumTokens({ tokensAndOwners: logs.map(log => [log.token, log.pool]) }) } + module.exports = { - misrepresentedTokens: true, ethereum: { tvl, }, diff --git a/projects/sablier-v2/index.js b/projects/sablier-v2/index.js new file mode 100644 index 0000000000..7f056a6c56 --- /dev/null +++ b/projects/sablier-v2/index.js @@ -0,0 +1,57 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') +const { covalentGetTokens } = require('../helper/http') +const { isWhitelistedToken } = require('../helper/streamingHelper') +const { getUniqueAddresses } = require('../helper/utils') +const { cachedGraphQuery } = require('../helper/cache') + +const blacklistedTokens = [ + ADDRESSES.ethereum.sUSD_OLD, + // TODO: We shouldn't need to lowercase here + ADDRESSES.ethereum.SAI.toLowerCase(), + ADDRESSES.ethereum.MKR, +] + +async function getTokensConfig(api, isVesting) { + const ownerTokens = [] + const { endpoints } = config[api.chain] + let i = 0 + for (const endpoint of endpoints) { + i++ + const { contracts, assets } = await cachedGraphQuery('sablier-v2/' + api.chain + '-' + i, endpoint, `{ + contracts { id address category } + assets { id chainId symbol } + }`) + const owners = contracts.map(i => i.address) + let tokens = assets.map(i => i.id) + const symbols = assets.map(i => i.symbol) + tokens = tokens.filter((v, i) => isWhitelistedToken(symbols[i], v, isVesting)) + owners.forEach(owner => ownerTokens.push([tokens, owner])) + } + + return { ownerTokens } +} + +async function tvl(_, block, _1, { api }) { + const { owners } = config[api.chain] + return api.sumTokens(await getTokensConfig(api, false)) +} + +async function vesting(_, block, _1, { api }) { + const { owners } = config[api.chain] + return api.sumTokens(await getTokensConfig(api, true)) +} + +const config = { + ethereum: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2'], }, + arbitrum: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-arbitrum'], }, + bsc: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-bsc'], }, + xdai: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-gnosis'], }, + optimism: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-optimism'], }, + polygon: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-polygon'], }, + avax: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-avalanche'], }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl, vesting } +}) \ No newline at end of file From 6f049079d8d60dbbc46aad763a76cbbf01de3fb7 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 29 Jul 2023 13:24:01 +0100 Subject: [PATCH 1337/1354] fix synatx --- projects/sudoswap/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js index c65d403495..5b1235cf79 100644 --- a/projects/sudoswap/index.js +++ b/projects/sudoswap/index.js @@ -92,4 +92,5 @@ module.exports = { return api.sumTokens({ tokensAndOwners2: [cache.nfts, pools], blacklistedTokens: ['0x08142348e6bbf233002b81047bc2f27026af10a5']}) } } -} \ No newline at end of file +} +*/ \ No newline at end of file From d38445960b37af973116bb056ad19020d5a9361c Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 29 Jul 2023 20:02:51 +0100 Subject: [PATCH 1338/1354] add new pool --- projects/gyroscope/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/gyroscope/index.js b/projects/gyroscope/index.js index 2651b62456..89f84e6832 100644 --- a/projects/gyroscope/index.js +++ b/projects/gyroscope/index.js @@ -6,7 +6,8 @@ const GYRO_POOL_ADDRESSES = [ "0x97469e6236bd467cd147065f77752b00efadce8a", "0xdac42eeb17758daa38caf9a3540c808247527ae3", "0xf0ad209e2e969eaaa8c882aac71f02d8a047d5c2", - "0xfa9ee04a5545d8e0a26b30f5ca5cbecd75ea645f" + "0xfa9ee04a5545d8e0a26b30f5ca5cbecd75ea645f", + "0xee278d943584dd8640eaf4cc6c7a5c80c0073e85" ] async function tvl(_, _b, _cb, { api, }) { From c36641bdbeaf30fb9e7b126d010c3d9c7c95e7e6 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Sun, 30 Jul 2023 01:12:07 +0100 Subject: [PATCH 1339/1354] add rug event --- projects/kannagi-finance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/kannagi-finance/index.js b/projects/kannagi-finance/index.js index 6c8c5f085e..f46bb61a46 100644 --- a/projects/kannagi-finance/index.js +++ b/projects/kannagi-finance/index.js @@ -34,4 +34,4 @@ helperReturn.era.tvl = tvlFunWrapper return helperReturn; } -module.exports = yieldHelperWrapper() +module.exports = {...yieldHelperWrapper(), hallmarks:[[1690589340, "Rug"]]} From 8d1d92197b21d6a545f24eedd63738b1f9fde793 Mon Sep 17 00:00:00 2001 From: deboguer-jng <71242057+deboguer-jng@users.noreply.github.com> Date: Sun, 30 Jul 2023 02:55:00 -0700 Subject: [PATCH 1340/1354] arbitrove tvl (#6951) * implemented tvl function for arbitrove or APL token * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/arbitrove/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/arbitrove/index.js diff --git a/projects/arbitrove/index.js b/projects/arbitrove/index.js new file mode 100644 index 0000000000..08ae691e02 --- /dev/null +++ b/projects/arbitrove/index.js @@ -0,0 +1,21 @@ +const { getLogs } = require('../helper/cache/getLogs'); +const { nullAddress, } = require('../helper/unwrapLPs'); +const ALP_TOKEN = '0xb49B6A3Fd1F4bB510Ef776de7A88A9e65904478A'; + +async function tvl(_, _b, _cb, { api }) { + const logs = await getLogs({ + api, + target: ALP_TOKEN, + topic: 'SetCoinCap(address,uint256)', + eventAbi: 'event SetCoinCap(address indexed coin, uint256 indexed cap)', + onlyArgs: true, + fromBlock: 67635825, + }) + return api.sumTokens({ owners: [ALP_TOKEN], tokens: [nullAddress, ...logs.map(l => l.coin)]}) +} + +module.exports = { + arbitrum: { + tvl, + } +} \ No newline at end of file From 344dacc2d1758f12c32860d76b0016d0b5f0dd45 Mon Sep 17 00:00:00 2001 From: devsceth <139822274+devsceth@users.noreply.github.com> Date: Sun, 30 Jul 2023 14:00:29 +0200 Subject: [PATCH 1341/1354] add yogurtfinance (#6950) --- projects/YogurtFinance/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/YogurtFinance/index.js diff --git a/projects/YogurtFinance/index.js b/projects/YogurtFinance/index.js new file mode 100644 index 0000000000..6f2b74dba3 --- /dev/null +++ b/projects/YogurtFinance/index.js @@ -0,0 +1,10 @@ +const { masterchefExports } = require("../helper/unknownTokens"); + +module.exports = masterchefExports({ + chain: "pulse", + masterchef: "0xca3E704Bd09B979170D76d34880c7A72fda51B63", + nativeTokens: ["0xece11C704F38FF38520667AeCDd7f53eA82F60F5"], + useDefaultCoreAssets: true, + poolInfoABI: "function poolInfo(uint256) view returns (address)", + getToken: (i) => i, +}); From 0e0099282792b8afc75ab836f60e552fc5d1cb79 Mon Sep 17 00:00:00 2001 From: Christian Holman Date: Sun, 30 Jul 2023 13:00:57 +0100 Subject: [PATCH 1342/1354] retro adapter (#6949) --- projects/retro/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/retro/index.js diff --git a/projects/retro/index.js b/projects/retro/index.js new file mode 100644 index 0000000000..990098bbd7 --- /dev/null +++ b/projects/retro/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + polygon: { + factory: "0x91e1B99072f238352f59e58de875691e20Dc19c1", + fromBlock: 43939793, + }, +}); From fb183fd5b99585501a243bca47e70c1139896d7c Mon Sep 17 00:00:00 2001 From: LendleM <138593011+LendleM@users.noreply.github.com> Date: Sun, 30 Jul 2023 15:07:51 +0300 Subject: [PATCH 1343/1354] update Lendle adapter (#6948) --- projects/lendle/index.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/projects/lendle/index.js b/projects/lendle/index.js index 7397de943a..d332dc1e49 100644 --- a/projects/lendle/index.js +++ b/projects/lendle/index.js @@ -1,5 +1,15 @@ const { aaveV2Export } = require("../helper/aave"); +const { staking } = require("../helper/staking"); + +const LPConfiguratorContract = "0x30D990834539E1CE8Be816631b73a534e5044856"; +const StakingContract = "0x5C75A733656c3E42E44AFFf1aCa1913611F49230"; +const TokenContract = "0x25356aeca4210eF7553140edb9b8026089E49396"; module.exports = { - mantle: aaveV2Export('0x30D990834539E1CE8Be816631b73a534e5044856', { fromBlock: 56556, }) -}; \ No newline at end of file + mantle: { + ...aaveV2Export(LPConfiguratorContract, { + fromBlock: 56556, + }), + staking: staking(StakingContract, TokenContract), + }, +}; From 948d64a66342f3050ee9d118b8656b167f984d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gilgame=C5=A1?= <22778436+Gilgames000@users.noreply.github.com> Date: Sun, 30 Jul 2023 14:28:31 +0200 Subject: [PATCH 1344/1354] leetswap: track base (#6945) * leetswap: track base * minor fix * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 5 ++++- projects/helper/utils.js | 3 ++- projects/leetswap/index.js | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7f42e5e9bc..4689c04b1c 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -50,7 +50,10 @@ const fixBalancesTokens = { }, telos: { '0xdc2393dc10734bf153153038943a5deb42b209cd': { coingeckoId: "telos", decimals: 18 }, - } + }, + base: { + '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/helper/utils.js b/projects/helper/utils.js index 787dfae90a..b97c5129d2 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -250,7 +250,8 @@ async function debugBalances({ balances = {}, chain, log = false, tableLabel = ' const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: tokens, permitFailure: true, }) const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens, permitFailure: true, }) - const name = await api.multiCall({ abi: erc20.name, calls: tokens, permitFailure: true, }) + let name = await api.multiCall({ abi: erc20.name, calls: tokens, permitFailure: true, }) + name = name.map(i => i && i.length > 50 ? i.slice(0, 50) + '...' : i) let symbolsETH, nameETH diff --git a/projects/leetswap/index.js b/projects/leetswap/index.js index 9a89cb1dcd..fb9ab444a6 100644 --- a/projects/leetswap/index.js +++ b/projects/leetswap/index.js @@ -5,4 +5,5 @@ module.exports = { polygon_zkevm: { tvl: getUniTVL({ factory: '0xcE87E0960f4e2702f4bFFE277655E993Ae720e84', useDefaultCoreAssets: true, }), }, canto: { tvl: getUniTVL({ factory: '0x116e8a41E8B0A5A87058AF110C0Ddd55a0ed82B7', useDefaultCoreAssets: true, }), }, linea: { tvl: getUniTVL({ factory: '0x4DDf0fa98B5f9Bd7Cb0645c25bA89A574fe9Be8c', useDefaultCoreAssets: true, }), }, + base: { tvl: getUniTVL({ factory: '0x169C06b4cfB09bFD73A81e6f2Bb1eB514D75bB19', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'sLS2', fetchBalances: true, }), }, } From 014edf5d5353398a56c4bc94287c93bcccd7d74d Mon Sep 17 00:00:00 2001 From: Peter Volnov <41264338+pvolnov@users.noreply.github.com> Date: Sun, 30 Jul 2023 05:28:41 -0700 Subject: [PATCH 1345/1354] here wallet support (#6946) * here wallet support * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chain/near.js | 1 + projects/here-staking/index.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 projects/here-staking/index.js diff --git a/projects/helper/chain/near.js b/projects/helper/chain/near.js index d7b8810079..4076476ac8 100644 --- a/projects/helper/chain/near.js +++ b/projects/helper/chain/near.js @@ -18,6 +18,7 @@ const tokenMapping = { 'wrap.near': { name: 'near', decimals: 24, }, 'meta-pool.near': { name: 'staked-near', decimals: 24, }, [ADDRESSES.near.LINA]: { name: 'linear-protocol', decimals: 24, }, + "storage.herewallet.near": { name: 'here-staking', decimals: 24, }, 'usn': { name: 'usn', decimals: 18, }, 'aurora': { name: 'ethereum', decimals: 18, }, 'token.skyward.near': { name: 'skyward-finance', decimals: 18, }, diff --git a/projects/here-staking/index.js b/projects/here-staking/index.js new file mode 100644 index 0000000000..e0d77de715 --- /dev/null +++ b/projects/here-staking/index.js @@ -0,0 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { call } = require('../helper/chain/near') + +async function tvl() { + const here_balance = await call("storage.herewallet.near", 'ft_total_supply', {}); + return { + near: (here_balance / 1e24) + }; +} + +module.exports = { + near: { + tvl + }, + timetravel: false, +}; \ No newline at end of file From 2f4feb85d0bf5cde5e31478462fad6209f543937 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Jul 2023 16:17:43 +0200 Subject: [PATCH 1346/1354] track openworld.vision --- projects/openworld/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/openworld/index.js diff --git a/projects/openworld/index.js b/projects/openworld/index.js new file mode 100644 index 0000000000..d5580cf708 --- /dev/null +++ b/projects/openworld/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + arbitrum: { + tvl: gmxExports({ vault: '0xec45801399EB38B75A3bf793051b00bb64fF3eF8', }) + }, +} \ No newline at end of file From d5384216ef44b68b4802145275072ccb800342e8 Mon Sep 17 00:00:00 2001 From: gpt dev Date: Mon, 31 Jul 2023 04:09:51 +0800 Subject: [PATCH 1347/1354] sft v2 upgrade to new api url (#6947) --- projects/sft-protocol/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/sft-protocol/index.js b/projects/sft-protocol/index.js index 2a3c6bab71..aa3b06591d 100644 --- a/projects/sft-protocol/index.js +++ b/projects/sft-protocol/index.js @@ -8,7 +8,7 @@ const tokens = [ ] const getActiveMinersFromRPC = async () => { - const resp = await getConfig('sft-protocol', 'https://api.sftproject.io/api/v1/public/dashboard/info') + const resp = await getConfig('sft-protocol', 'https://ww8.sftproject.io/api/c/api/v1/public/dashboard/info') let nodes = [] let node_i = [] nodes = resp.data.combined From 68ba80666fbcc0df7fa0df1378ad4f80a6895b20 Mon Sep 17 00:00:00 2001 From: oxSaturn Date: Mon, 31 Jul 2023 04:10:56 +0800 Subject: [PATCH 1348/1354] add base chain for velocimeter (#6952) --- projects/velocimeter-v2/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/velocimeter-v2/index.js b/projects/velocimeter-v2/index.js index 7732e6d89c..180101696e 100644 --- a/projects/velocimeter-v2/index.js +++ b/projects/velocimeter-v2/index.js @@ -16,4 +16,11 @@ module.exports = { hasStablePools: true, }) }, + base: { + tvl: getUniTVL({ + factory: '0xe21Aac7F113Bd5DC2389e4d8a8db854a87fD6951', + useDefaultCoreAssets: true, + hasStablePools: true, + }) + }, } From 9f8436b50ba1f8c57f2026cfc3cd16912f1f3e46 Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Sun, 30 Jul 2023 22:11:20 +0200 Subject: [PATCH 1349/1354] Track pETH-ETH liquidity drain (#6953) --- projects/jpeg-d/index.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/projects/jpeg-d/index.js b/projects/jpeg-d/index.js index 48431faa55..0637c36923 100644 --- a/projects/jpeg-d/index.js +++ b/projects/jpeg-d/index.js @@ -12,13 +12,7 @@ module.exports = { hallmarks: [ [1666003500, "pETH borrows"], [1669551000, "JPEG LTV boost"], - // [1670518800, "APE staking"], not that much impact on TVL - //[1674669600, "Autoglyphs & Fidenza support"], not that much impact on TVL - //[1675166400, "Ringers & Chromie Squiggle support"], not that much impact on TVL - //[1675598400, "70% LTV for CryptoPunks & BAYC"], not that much impact on TVL - //[1678665600, "Otherdeeds & Meebits support"], - // [1679529600, "BAKC support"], not that much impact on TVL [1683662400, "P2P Ape Staking"], - //[1684108800, "Milady support"], + [1690730000, "pETH-ETH Curve pool drained"], ], }; From e3abe437095053d653b2bb17024257b592c190d6 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sun, 30 Jul 2023 21:24:00 +0100 Subject: [PATCH 1350/1354] add distressed asset check --- projects/beefy/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index 2556850b16..45d036bf39 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -2,6 +2,8 @@ const utils = require('../helper/utils'); const { toUSDTBalances } = require('../helper/balances'); let _response +const distressedAssets = ['aleth']; // Add any distressed asset names here + function fetchChain(chainId, staking) { return async () => { if (!_response) _response = utils.fetchURL('https://api.beefy.finance/tvl') @@ -10,6 +12,11 @@ function fetchChain(chainId, staking) { let tvl = 0; const chain = response.data[chainId]; for (const vault in chain) { + // Skip distressed assets + if (distressedAssets.some(asset => vault.includes(asset))) { + continue; + } + const isBIFI = vault.includes("bifi") if ((isBIFI && staking) || (!isBIFI && !staking)) { tvl += Number(chain[vault]); From 5ad3e06c6a41f1e72c8880e744fcda93532cb81e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 30 Jul 2023 23:12:13 +0200 Subject: [PATCH 1351/1354] move bulky adapters --- projects/summer-fi/api.js | 7 +++++++ projects/sunswap-v2/api.js | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 projects/summer-fi/api.js create mode 100644 projects/sunswap-v2/api.js diff --git a/projects/summer-fi/api.js b/projects/summer-fi/api.js new file mode 100644 index 0000000000..702709855f --- /dev/null +++ b/projects/summer-fi/api.js @@ -0,0 +1,7 @@ +const {getExports} = require('../helper/heroku-api') +const chains = ['ethereum'] + +module.exports = { + timetravel: false, + ...getExports("summer-fi", chains) +} diff --git a/projects/sunswap-v2/api.js b/projects/sunswap-v2/api.js new file mode 100644 index 0000000000..4d82220cd4 --- /dev/null +++ b/projects/sunswap-v2/api.js @@ -0,0 +1,7 @@ +const {getExports} = require('../helper/heroku-api') +const chains = ['tron'] + +module.exports = { + timetravel: false, + ...getExports("sunswap-v2", chains) +} From d099ca97b3ccf0c35055ea41f7b1e3930bd0f36a Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 31 Jul 2023 01:14:05 +0100 Subject: [PATCH 1352/1354] fix harvest pump from hack --- projects/harvest.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/harvest.js b/projects/harvest.js index 57adeb1043..1b837eb852 100644 --- a/projects/harvest.js +++ b/projects/harvest.js @@ -19,7 +19,10 @@ Object.keys(chains).forEach(chain => { if (!_response) _response = get(endpoint) const response = await _response var tvl = 0; - Object.values(response[chain]).map(async item => { + Object.values(response[chain]).map(item => { + if(item.id === "convex_pETH"){ + return + } const poolTvl = parseFloat(item.totalValueLocked ?? 0) tvl += poolTvl }) From 605730381727898911a5e63d7e12d781ca12dc92 Mon Sep 17 00:00:00 2001 From: Sooyoung Lee Date: Mon, 31 Jul 2023 13:18:52 +0900 Subject: [PATCH 1353/1354] vivaleva --- projects/vivaleva/index.js | 96 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 projects/vivaleva/index.js diff --git a/projects/vivaleva/index.js b/projects/vivaleva/index.js new file mode 100644 index 0000000000..220e38b51a --- /dev/null +++ b/projects/vivaleva/index.js @@ -0,0 +1,96 @@ +const { formatUnits } = require("ethers/lib/utils"); +const { get } = require("../helper/http"); + +const vaults = [ + { + symbol: "ibETH", + decimals: 18, + baseTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", + address: "0x23FDd6487a17abB8360E8Da8b1B370C94ee94Cc2", + }, + { + symbol: "ibUSDC", + decimals: 6, + baseTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + address: "0x0755DA5D9e9A722A9e5cc4bb83742387ae2990a5", + }, +]; +const syncswapWorkers = [ + { + name: "ETH-USDC Syncswap Farm", + address: "0x39356ed5dC2F7Ea897296e07E97b59Af9C8153Ec", + farmingTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", + baseTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + lpToken: "0x80115c708E12eDd42E504c1cD52Aea96C547c05c", + }, + { + name: "USDC-ETH Syncswap Farm", + address: "0x3A613EFAe4a6A6447A9D784E398730811a57af6e", + farmingTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + baseTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", + lpToken: "0x80115c708E12eDd42E504c1cD52Aea96C547c05c", + }, + { + name: "USDT-ETH Syncswap Farm", + address: "0x95C78e21Beb54314fe5A4571E7361f6c6A144B2f", + farmingTokenAddress: "0x493257fd37edb34451f62edf8d2a0c418852ba4c", + baseTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", + lpToken: "0xd3D91634Cf4C04aD1B76cE2c06F7385A897F54D3", + }, + { + name: "USDT-USDC Syncswap Farm", + address: "0xfbF4BcD3266Af20B72dc484F6D7Dc13855885ba0", + farmingTokenAddress: "0x493257fd37edb34451f62edf8d2a0c418852ba4c", + baseTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + lpToken: "0x0E595bfcAfb552F83E25d24e8a383F88c1Ab48A4", + }, +]; + +module.exports = { + timetravel: false, + era: { + async tvl(_, _1, _2, { api }) { + const vaultBalances = await api.multiCall({ + abi: "uint256:vaultBalance", + calls: vaults.map((v) => v.address), + }); + + vaults.forEach((v, i) => { + api.add(v.baseTokenAddress, vaultBalances[i]); + }); + + const [ + syncswapWorkerBalances, + syncswapReserves, + syncswapLpTotalSupplies, + ] = await Promise.all([ + api.multiCall({ + abi: "uint256:totalStakedLpBalance", + calls: syncswapWorkers.map((v) => v.address), + }), + api.multiCall({ + abi: "function getReserves() view returns (uint256, uint256)", + calls: syncswapWorkers.map((v) => v.lpToken), + }), + api.multiCall({ + abi: "uint256:totalSupply", + calls: syncswapWorkers.map((v) => v.lpToken), + }), + ]); + + syncswapWorkers.forEach((w, i) => { + const [token0, token1] = + w.baseTokenAddress.toLowerCase() < w.farmingTokenAddress.toLowerCase() + ? [w.baseTokenAddress, w.farmingTokenAddress] + : [w.farmingTokenAddress, w.baseTokenAddress]; + const lpBalance = BigInt(syncswapWorkerBalances[i]) + const totalSupply = BigInt(syncswapLpTotalSupplies[i]) + const [r0, r1] = syncswapReserves[i].map(BigInt); + const underlying0 = String(lpBalance * r0 / totalSupply); + const underlying1 = String(lpBalance * r1 / totalSupply); + api.add(token0, underlying0); + api.add(token1, underlying1); + }); + }, + }, +}; From 2d9f097675e9554fd6bca91b770f2397bca2c953 Mon Sep 17 00:00:00 2001 From: "Geunwoo Baek (Richard)" <39114544+geunwoobaek@users.noreply.github.com> Date: Wed, 9 Aug 2023 23:08:15 +0900 Subject: [PATCH 1354/1354] Update index.js --- projects/vivaleva/index.js | 55 +++++++------------------------------- 1 file changed, 10 insertions(+), 45 deletions(-) diff --git a/projects/vivaleva/index.js b/projects/vivaleva/index.js index 220e38b51a..716d28472c 100644 --- a/projects/vivaleva/index.js +++ b/projects/vivaleva/index.js @@ -1,55 +1,20 @@ const { formatUnits } = require("ethers/lib/utils"); -const { get } = require("../helper/http"); +const axios = require('axios'); -const vaults = [ - { - symbol: "ibETH", - decimals: 18, - baseTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", - address: "0x23FDd6487a17abB8360E8Da8b1B370C94ee94Cc2", - }, - { - symbol: "ibUSDC", - decimals: 6, - baseTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", - address: "0x0755DA5D9e9A722A9e5cc4bb83742387ae2990a5", - }, -]; -const syncswapWorkers = [ - { - name: "ETH-USDC Syncswap Farm", - address: "0x39356ed5dC2F7Ea897296e07E97b59Af9C8153Ec", - farmingTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", - baseTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", - lpToken: "0x80115c708E12eDd42E504c1cD52Aea96C547c05c", - }, - { - name: "USDC-ETH Syncswap Farm", - address: "0x3A613EFAe4a6A6447A9D784E398730811a57af6e", - farmingTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", - baseTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", - lpToken: "0x80115c708E12eDd42E504c1cD52Aea96C547c05c", - }, - { - name: "USDT-ETH Syncswap Farm", - address: "0x95C78e21Beb54314fe5A4571E7361f6c6A144B2f", - farmingTokenAddress: "0x493257fd37edb34451f62edf8d2a0c418852ba4c", - baseTokenAddress: "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91", - lpToken: "0xd3D91634Cf4C04aD1B76cE2c06F7385A897F54D3", - }, - { - name: "USDT-USDC Syncswap Farm", - address: "0xfbF4BcD3266Af20B72dc484F6D7Dc13855885ba0", - farmingTokenAddress: "0x493257fd37edb34451f62edf8d2a0c418852ba4c", - baseTokenAddress: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", - lpToken: "0x0E595bfcAfb552F83E25d24e8a383F88c1Ab48A4", - }, -]; + +async function fetch() { + const url = "https://sbb.sooho.io/api/v1/external/vivaleva/defiLlama"; + var response = (await axios.get(url)).data; + return response; +} module.exports = { timetravel: false, era: { async tvl(_, _1, _2, { api }) { + const data = await fetch(); + const vaults = data.vaults; + const syncswapWorkers = data.syncswapWorkers; const vaultBalances = await api.multiCall({ abi: "uint256:vaultBalance", calls: vaults.map((v) => v.address),