From 05a55641f1a30a9b9bba103797cc44a11dfe6e8c Mon Sep 17 00:00:00 2001 From: Samster91 Date: Mon, 30 Jan 2023 14:48:55 +0100 Subject: [PATCH 001/254] NEW: Idle Finance Euler tranches --- package-lock.json | 2178 +++++++++++++++++++++++++++++++++++++++- projects/idle/index.js | 8 +- 2 files changed, 2157 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index d2fe5319c..298fa3d76 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,6 +1660,137 @@ "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/@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/@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/@stablelib/ed25519": { + "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==" + }, + "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": { + "@stablelib/bytes": "^1.0.1" + } + }, + "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": { + "@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/@stablelib/poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "dependencies": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "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/@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/@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "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/@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/@supercharge/promise-pool": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", @@ -1448,6 +1799,366 @@ "node": ">=8" } }, + "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": { + "xhr2-cookies": "^1.1.0" + }, + "engines": { + "node": ">=6.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==", + "dependencies": { + "@taquito/utils": "^12.1.1", + "bignumber.js": "^9.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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", @@ -1490,6 +2201,14 @@ "@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", @@ -1498,6 +2217,30 @@ "@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", @@ -1509,6 +2252,12 @@ "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", @@ -1517,6 +2266,21 @@ "@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", @@ -1585,7 +2349,6 @@ "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" } @@ -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", @@ -5082,11 +6453,376 @@ } } }, + "@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, + "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/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": { + "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==" + } + } + }, + "@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", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -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 ec69a608e..9e05ff3b5 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 002/254] FIX: updated package-lock.json --- package-lock.json | 2180 +-------------------------------------------- 1 file changed, 29 insertions(+), 2151 deletions(-) diff --git a/package-lock.json b/package-lock.json index 298fa3d76..fc4f64397 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,137 +1440,6 @@ "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/@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/@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/@stablelib/ed25519": { - "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==" - }, - "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": { - "@stablelib/bytes": "^1.0.1" - } - }, - "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": { - "@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/@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", - "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "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/@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/@stablelib/sha512": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", - "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "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/@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/@supercharge/promise-pool": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-2.3.2.tgz", @@ -1799,366 +1448,6 @@ "node": ">=8" } }, - "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": { - "xhr2-cookies": "^1.1.0" - }, - "engines": { - "node": ">=6.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==", - "dependencies": { - "@taquito/utils": "^12.1.1", - "bignumber.js": "^9.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "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", @@ -2201,14 +1490,6 @@ "@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", @@ -2217,30 +1498,6 @@ "@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", @@ -2252,12 +1509,6 @@ "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", @@ -2266,21 +1517,6 @@ "@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", @@ -2349,6 +1585,7 @@ "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", @@ -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", @@ -6453,376 +5082,11 @@ } } }, - "@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, - "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/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": { - "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==" - } - } - }, - "@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", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -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 003/254] 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 fc4f64397..d2fe5319c 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 004/254] 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 9e05ff3b5..761ec2708 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 005/254] 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 761ec2708..915934457 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 006/254] 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 9dc6442b1..04ecc9109 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 007/254] 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 04ecc9109..4f1c7f9f0 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 008/254] 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 4f1c7f9f0..41692fae9 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 009/254] refactor frax --- projects/fraxfinance/abi.json | 5 - projects/fraxfinance/index.js | 277 ++++++++++++++++++++-------------- 2 files changed, 160 insertions(+), 122 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 99c01ca36..000000000 --- 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 1010a770d..0568af47b 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) => { +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) +} + +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] }) +} + + +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) +} + +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 = {}; - // --- 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; + 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 }; - -// Fantom -const contractAddressesFantom = [ - //Spirit/Ola Lending AMO Fantom - "0x8dbc48743a05A6e615D9C39aEBf8C2b157aa31eA", - //Scream Lending AMO Fantom - "0x51E6D09d5A1EcF8BE035BBCa82F77BfeC3c7672A", - //SpiritSwap Liquidity AMO Fantom - "0x48F0856e0E2D06fBCed5FDA10DD69092a500646B", -]; - -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; -} - 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 010/254] 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 0568af47b..cc1d370e5 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 011/254] 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 cc1d370e5..53c72924c 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 012/254] 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 41692fae9..4973d65ea 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 013/254] 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 000000000..855cedd00 --- /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 b2b9b8251..9f2145bcb 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 014/254] 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 9f2145bcb..b2b9b8251 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 015/254] 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 855cedd00..13d0518b1 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 016/254] 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 13d0518b1..621d880b6 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 2884bdbc627d6f3cd3549fe11db5b9249a580060 Mon Sep 17 00:00:00 2001 From: cheng Date: Thu, 20 Apr 2023 15:27:55 +0200 Subject: [PATCH 017/254] 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 65da65fe4..c9738abbd 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 726581b41021d85ff4a98b91f114d2bfd8a837ae Mon Sep 17 00:00:00 2001 From: TJ Date: Tue, 25 Apr 2023 16:52:05 +0200 Subject: [PATCH 018/254] 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 e8b74a653..2ce9d1632 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 24c217e9172b71dea8be700e6dac89fe0b31891b Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 26 Apr 2023 15:07:13 +0800 Subject: [PATCH 019/254] 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 000000000..04b15c69c --- /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 d459e88fa9b5d8d03f14e44378a82adb61c34923 Mon Sep 17 00:00:00 2001 From: Sourabh Date: Thu, 27 Apr 2023 16:24:30 -0400 Subject: [PATCH 020/254] 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 a011f782d..f94d90cd6 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 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 021/254] 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 000000000..606277d15 --- /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 fc8eb1c98..519d5d4e6 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 000000000..606277d15 --- /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 c1dd65a8c..130e2840f 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 6264b6a20..7bf07108c 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 000000000..606277d15 --- /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 509f75ed0..3b91a8590 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 bb619f471..c836e5921 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 000000000..55e19de8f --- /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 617a89235..0495b3576 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 000000000..606277d15 --- /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 5d7bf63ba..9aa52d7fd 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 bc82b6f58..b7ec6e308 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 9db3c32fe..db91632a2 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 000000000..4ae2a1187 --- /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 000000000..2bfb210a8 --- /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 000000000..413c1bdf1 --- /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 000000000..c627ecbf5 --- /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 000000000..606277d15 --- /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 000000000..606277d15 --- /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 595a9131b..98159d151 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 1bc4332cca453553a2406ba37ea2f0b4a90f1667 Mon Sep 17 00:00:00 2001 From: Jeff Wu Date: Fri, 28 Apr 2023 08:28:45 -0700 Subject: [PATCH 022/254] 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 dba2eac56..4c5e817c6 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 9b254b23e..520ab9784 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 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 023/254] 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 9db7d922b..1e89952f3 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 a1a5768f3c2c32510566bc866a5fcaf9d6f7ddf5 Mon Sep 17 00:00:00 2001 From: slsdbuild Date: Sat, 29 Apr 2023 22:39:54 +0800 Subject: [PATCH 024/254] 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 000000000..b5373d24f --- /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 025/254] 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 3f88b0b7f..b773c71d6 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 026/254] 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 000000000..e457a249c --- /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 027/254] 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 e457a249c..4f193bb0b 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 351aa80e586a82c46da2ad29f20f46e05eea1bc1 Mon Sep 17 00:00:00 2001 From: Seagram Date: Sun, 30 Apr 2023 06:18:49 +0900 Subject: [PATCH 028/254] 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 000000000..ac5fffae8 --- /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 000000000..d0495bc07 --- /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 029/254] 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 fc1b129a8..487ba272a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1262,7 +1262,8 @@ "0x7d72b22a74a216af4a002a1095c8c707d6ec1c5f", "0x8e81fcc2d4a3baa0ee9044e0d7e36f59c9bba9c1", "0x461d52769884ca6235b685ef2040f47d30c94eb5", - "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d" + "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", + "0x765277EebeCA2e31912C9946eAe1021199B39C61" ], "tlchain": [ "0x422b6cdf97c750a0edcddc39c88f25379e59e96e" From 89c5a6f9f3cf9fa57b2a274ca7bd5de6ef132a26 Mon Sep 17 00:00:00 2001 From: Seagram Date: Sun, 30 Apr 2023 06:54:02 +0900 Subject: [PATCH 030/254] 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 d0495bc07..e4a5468b8 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 031/254] 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 fe4524512..80fb84661 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 7c1fc116aaac98ff285e28a27b6f1839674e4136 Mon Sep 17 00:00:00 2001 From: Sejal Chaudhari Date: Sun, 30 Apr 2023 11:13:28 +0530 Subject: [PATCH 032/254] 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 000000000..c05adaeec --- /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 033/254] 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 000000000..4645e3381 --- /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 a36cb65a8..9b31da47f 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 034/254] 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 bbb08be11..51a3a34a9 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 035/254] 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 6abbb5eb1..a50296c51 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 3d708e367..cb3db3d5b 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 1f1047fdb..cb3db3d5b 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 d8027e2a1..9bc13975b 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 036/254] 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 65e3b0fb8..334c47c9e 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}`; - } - ); + 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; } -const moonriverTem = "0xD86E3F7B2Ff4e803f90c799D702955003bcA9875"; -const moonriverStaking = "0xa1f61Ca61fe8655d2a204B518f6De964145a9324"; -const moonriverTreasuryContract = "0xd01e8D805BB310F06411e70Fd50eB58cAe2B4C27"; +async function ethVaults(timestamp) { + const balances = {}; -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; -} + // Add tokens UniswapV3LP + await unwrapUniswapV3NFTs({ + balances, + owners: [ethOwner], + }); + await sumTokens2({ + balances, + tokens: [ethTokens.USDC, ethTokens.USDT], + owner: ethOwner, + }); -const harmonyTem = "0xd754ae7bb55feb0c4ba6bc037b4a140f14ebe018"; -const harmonyStaking = "0xd86e3f7b2ff4e803f90c799d702955003bca9875"; -const harmonyTreasury = "0x92ae908d7bcf891ffa47ae10596e6a66cf43a77a"; - -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; + 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 037/254] 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 164e7814a..f55e95c58 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 4e1a28932..109c65f22 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 038/254] 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 e92e05799..e96355c3e 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 039/254] 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 a5fb16a5a..2c0141ea3 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 040/254] 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 e96355c3e..e92e05799 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 041/254] 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 1a33ceb87..0ee349435 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: [TreasuryAVAX], - ownTokens: [TIME], + owners: treasuries, + ownTokens: [TIME, '0x0da67235dd5787d67955420c84ca1cecd4e5bb3b'], }, - arbitrum: { - tokens: [ - nullAddress, - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",//weth - "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a",//gmx - "0xd2D1162512F927a7e282Ef43a362659E4F2a728F",//sbfGMX - ], - owners: [TreasuryArbitrum] - }, - polygon: { - tokens: [ - nullAddress, - "0xb08b3603C5F2629eF83510E6049eDEeFdc3A2D91",//cpool - ], - owners: [TreasuryPolygon] - } + 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: treasuries + }, + 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 042/254] 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 9359ab82d..5ed8f3075 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 000000000..98969bb59 --- /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 000000000..b83e37f25 --- /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 000000000..c96db138d --- /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 000000000..3ff57ec34 --- /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 4f3ef0520..68016dc7c 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 000000000..988beab60 --- /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 000000000..a2a6e489a --- /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 fe36dad80..7d3fa9b58 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 000000000..b83e37f25 --- /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 ceaa35329..878ee94c2 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 000000000..1a05bc80e --- /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 9f056f915..2db22ba5f 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 000000000..469bda32f --- /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 000000000..86cb8cd48 --- /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 000000000..bea9ee862 --- /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 843fc1994..d8ac5f2e5 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 6d948f205..678cfdb47 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 000000000..a869183ff --- /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 000000000..30bcdc67e --- /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 000000000..c895f4893 --- /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 000000000..d9c4e3826 --- /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 000000000..427f26975 --- /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 000000000..54ec1ab41 --- /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 000000000..750746c49 --- /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 000000000..0c7e5cba3 --- /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 000000000..3cf00e272 --- /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 cb0bfc945..85efc449f 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 000000000..18da65124 --- /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 000000000..208896bcf --- /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 000000000..9190d18a5 --- /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 000000000..e29232962 --- /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 000000000..f254a6528 --- /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 000000000..f7b075a2e --- /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 7690efec4..a7eca0699 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 98159d151..ba20144d5 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 043/254] 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 000000000..3d4baf5f4 --- /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 044/254] 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 3d4baf5f4..000000000 --- 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 000000000..e1bfac42b --- /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 045/254] 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 e1bfac42b..000000000 --- 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 046/254] 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 c05adaeec..f0ee99673 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 047/254] 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 04b15c69c..7ce847312 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 048/254] 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 89dffd1fb..6f54de004 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 75fe59eee..adaa03a30 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 b484fd5bd..1091ac54a 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 049/254] 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 adaa03a30..48b610e05 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 050/254] 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 520ab9784..8cf9b46e0 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 051/254] 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 b5373d24f..30fd8b8c9 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 052/254] 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 75fe59eee..70072a4a9 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 053/254] 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 3ba7b6a36..3e812fa8e 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 054/254] 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 000000000..d9a19ed5d --- /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 000000000..659b49ea4 --- /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 18c732cec..1269ed87e 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 000000000..41c93ce36 --- /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 000000000..ad39b2f06 --- /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 000000000..a347f04b2 --- /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 000000000..c5569ad78 --- /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 000000000..9be17cb8c --- /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 000000000..634bfcdb6 --- /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 000000000..a313ffcc4 --- /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 055/254] 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 000000000..89d733328 --- /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 000000000..02c9135dc --- /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 000000000..9f1d5f852 --- /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 62316340b..0650de290 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 000000000..4f3d0603b --- /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 000000000..b783f7529 --- /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 bb6cd9e07..6afee13fc 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 000000000..95de35b1a --- /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 000000000..8ec65d3c2 --- /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 000000000..1bd37185b --- /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 000000000..c2f1e0346 --- /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 056/254] 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 000000000..8f7d5ae3f --- /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 000000000..b157b59a4 --- /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 057/254] 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 000000000..a0c01135b --- /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 058/254] 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 89ddbd7da..787fd1c7b 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 059/254] 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 80f2fe078..f26b62525 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 060/254] 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 000000000..cb3a1cea9 --- /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 061/254] 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 000000000..56243093f --- /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 000000000..dbcde2ece --- /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 000000000..ef62616df --- /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 000000000..6881e6b03 --- /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 000000000..a8cf7a14d --- /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 000000000..8b3ce5c8b --- /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 000000000..09fbde3d4 --- /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 062/254] 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 4f3d0603b..8b9b47ec0 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 063/254] 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 8cf9b46e0..fbff298d4 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 064/254] 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 000000000..0bc033ad3 --- /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 065/254] 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 000000000..061b46c0d --- /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 066/254] 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 000000000..fd649c183 --- /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 000000000..761b56cd8 --- /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 067/254] 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 cceb6d69f..8bfaeab84 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 068/254] 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 000000000..8860c33d7 --- /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 069/254] 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 d3dd617cd..43cc4ac70 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 070/254] 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 000000000..4d0507118 --- /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 071/254] 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 000000000..75c9f3fbd --- /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 072/254] 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 0388b64d0..a25a14797 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 073/254] 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 05605ef6b..003657aa8 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 487ba272a..b8157d768 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 074/254] code refactor --- projects/goodentry/index.js | 110 +++++++++--------------------------- 1 file changed, 28 insertions(+), 82 deletions(-) diff --git a/projects/goodentry/index.js b/projects/goodentry/index.js index 7ce847312..f67837323 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 +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"], }) -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 + 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]) + } }) - ).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; - }) - )).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 075/254] 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 000000000..eddc17011 --- /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 000000000..5da9929ec --- /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 ec0b9e361..f6d5585f1 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 000000000..6c839e639 --- /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 000000000..95ed43b8c --- /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 076/254] 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 000000000..3adb8f922 --- /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 1ce36d2ac..c2c793a6d 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 077/254] 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 000000000..46857bc2e --- /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 078/254] 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 46857bc2e..79c8de660 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 079/254] 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 761b56cd8..88e364acc 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 080/254] 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 000000000..5d2e974a7 --- /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 081/254] 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 334c47c9e..00143bdb8 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 082/254] 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 c58c8445d..f15973256 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 083/254] 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 cda115e58..e14eaa640 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 084/254] 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 5d2e974a7..f3b6a24ca 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 085/254] 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 000000000..0000fd47d --- /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 086/254] 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 69faf7fc6..63887c13d 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 087/254] 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 529cdd403..a21aeb898 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 088/254] 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 000000000..ceea8da76 --- /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 089/254] 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 bc9c1f6bc..3a0343191 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 000000000..c6351dffe --- /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 090/254] 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 000000000..82333b76e --- /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 091/254] 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 70f3ba551..4a860c39c 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 092/254] 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 4a860c39c..27bb7016e 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 093/254] 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 000000000..e0fb42475 --- /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 094/254] 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 e0fb42475..bcd644b98 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 095/254] 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 bcd644b98..6ddaf5ad9 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 096/254] 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 000000000..cb3daf253 --- /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 097/254] 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 82333b76e..c6e79dace 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_)) - return sumTokens2({ api, tokensAndOwners: logs.map(i => [i.collateral, i.amm]) }) + console.log(logs) + return sumTokens2({ api, tokensAndOwners: logs.flat().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 27bb7016e..f90062b63 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 098/254] 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 000000000..7374f695d --- /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 099/254] 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 7374f695d..46f9c8405 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 100/254] 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 000000000..ff4acb748 --- /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 000000000..1a7bfead1 --- /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 101/254] 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 000000000..e848df22c --- /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 102/254] 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 000000000..cff67e675 --- /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 103/254] 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 0938e1130..a5ded157c 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 104/254] 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 c6e79dace..f9ee9c008 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 000000000..d7ab8810f --- /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 1091ac54a..1d3d3f863 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 53850d2f0..9edd93c19 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 a0755b2cd..12ac490f5 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 000000000..460e04375 --- /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 105/254] add stellaswap stablepools --- projects/stellaswap.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/stellaswap.js b/projects/stellaswap.js index 3e8fc3d4e..3606dd179 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 106/254] 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 f90062b63..14c016437 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 107/254] 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 cb3daf253..938164e1a 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 108/254] 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 035981ecc..4f336a5c5 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 109/254] 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 3490ad841..35fe0326c 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 110/254] 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 000000000..35ff1f739 --- /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 111/254] 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 112/254] 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 62b53ea4a..24bb66422 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 113/254] 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 a1b72dfa7..34f404a4d 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 114/254] 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 a63f0d4e1..8303849a4 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 d7ab8810f..372f9d5c1 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 115/254] 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 2c0aaf882..5abf1b50a 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 116/254] 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 fe49f857a..c489a3df5 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 8303849a4..63232ac61 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 372f9d5c1..09ea04024 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 b8157d768..3e4925e6b 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 f71239c23..b39c9cd01 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 117/254] 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 3e4925e6b..ef3c3a827 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 118/254] 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 d53d1891f..d53f57dd1 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 119/254] 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 e1f5f510f..dc552207c 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 120/254] 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 000000000..1022b931e --- /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 121/254] 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 09ea04024..0e36b7fda 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 122/254] 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 374310a1b..fff29c16a 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 47dec6df3..122f058a5 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 123/254] 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 000000000..049665a78 --- /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 124/254] 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 000000000..7c44170b5 --- /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 125/254] 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 7c44170b5..b4a2aefeb 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 126/254] 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 0e36b7fda..842cc675d 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 000000000..6d8d90341 --- /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 127/254] 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 cff67e675..3f71bb8a0 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 128/254] 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 122f058a5..f065fa530 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 129/254] 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 b4a2aefeb..a3bd84d71 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 130/254] 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 000000000..8603817d2 --- /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 842cc675d..048bc738a 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 131/254] 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 3947a3eef..431aee266 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 132/254] 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 0ce0a09f4..5540181ba 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 133/254] 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 000000000..47d3dcee3 --- /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 134/254] 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 000000000..c05f9d474 --- /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 135/254] 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 000000000..6d7674cb8 --- /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 000000000..291deebf1 --- /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 136/254] 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 2ea517f9b..b7e5476c2 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 137/254] 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 000000000..928128ba7 --- /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 138/254] 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 000000000..b02cafca2 --- /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 000000000..2a6c9ecf8 --- /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 139/254] 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 000000000..bca5a39d9 --- /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 140/254] 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 bca5a39d9..35b1a2c78 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 141/254] 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 000000000..832c9ff9c --- /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 7056bbef3..2869fffe4 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 142/254] 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 85c849c00..8bb989317 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 143/254] 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 049665a78..e5a80bd2d 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 144/254] 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 da0a381d3..6d93a72c8 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 145/254] 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 8bb989317..740dbf613 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 928128ba7..4367ef66b 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 1d3d3f863..f176f20d6 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 ef3c3a827..8eb9436cf 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 146/254] 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 b7e5476c2..3c8449bb6 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 147/254] 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 6d93a72c8..b3c050b69 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 148/254] 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 000000000..cb0d9eff5 --- /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 000000000..9ed6119a0 --- /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 149/254] 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 6b85f462b..756fd960c 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 150/254] 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 b02cafca2..b2575606d 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 2a6c9ecf8..3c44d761b 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 151/254] 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 000000000..f89a2a2bb --- /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 152/254] 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 b3abbf37c..7ecdecf16 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 153/254] 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 c0f9c5f27..ec94b29bc 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 154/254] 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 e1b727a71..a7010da1a 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) - - + 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 155/254] 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 7355bcc8b..c5be97358 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 156/254] 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 c5be97358..530cae4e6 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 157/254] 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 530cae4e6..407bd00aa 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 158/254] 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 407bd00aa..1b851b1e9 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 159/254] 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 a7010da1a..4a0695224 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 160/254] 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 8aeb941a0..1122b1918 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 161/254] 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 000000000..6f45d7d48 --- /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 162/254] 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 9ed6119a0..ebfeb702f 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 163/254] 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 8994b94c4..643fa2b8e 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 164/254] 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 000000000..cd51a2c3c --- /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 000000000..fbbea4a11 --- /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 000000000..017c7edeb --- /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 165/254] 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 048bc738a..65856f24f 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 511171def..2d16d11b4 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 166/254] 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 000000000..2c0b8fed4 --- /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 167/254] 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 000000000..71ca99e6b --- /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 168/254] 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 b29d92d13..6edec0a4e 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 b3c050b69..e51d6afb8 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 169/254] 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 756fd960c..dc633f71d 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 170/254] 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 de4ee6efa..e6c233fa8 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 171/254] 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 000000000..90163e31a --- /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 172/254] 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 000000000..8646fb778 --- /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 173/254] 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 90163e31a..e78ce9261 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 174/254] 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 017c7edeb..086cc715c 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 175/254] 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 fbbea4a11..a3a6b9ecd 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 086cc715c..b8ebf5224 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 176/254] 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 8603817d2..4ec28198e 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 65856f24f..9123b4f49 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 6d8d90341..7590c8fb9 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 177/254] 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 245d2ad2d..419223ed1 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 178/254] 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 000000000..587b43b44 --- /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 179/254] 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 09b79f787..83fcf3020 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 180/254] 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 000000000..57be6dcc0 --- /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 181/254] 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 bb1ac6aa4..afcd40b22 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 182/254] 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 5412d2521..6568e3058 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 183/254] 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 6c75ef115..2fd9df1ff 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 184/254] 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 8646fb778..a05aa0b55 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 185/254] 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 000000000..ada4261a8 --- /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 186/254] 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 96a4c60ab..414f4ee01 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 187/254] 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 000000000..40a94881d --- /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 188/254] 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 40a94881d..55d26031f 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 189/254] 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 8b092348f..ce3cb02fe 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 190/254] 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 46f9c8405..7562e8ae5 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 191/254] 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 8b9b47ec0..9b9e11735 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 192/254] 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 7562e8ae5..5df3beb80 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 193/254] 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 000000000..f3a8bc9ec --- /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 194/254] 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 000000000..7e68146cd --- /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 195/254] 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 46bef8d67..017a25e24 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 196/254] 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 37feb88fa..1b9670b23 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 197/254] 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 6b349fd6d..747a2b96c 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 198/254] 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 5df3beb80..fe04fb0fe 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 199/254] 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 | 157 ++++++++++++++++++------------ 5 files changed, 134 insertions(+), 67 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 d4b4ad1a0..93e8eaa05 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 887b4932b..7ce6fc4d5 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 000000000..88400d8ef --- /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 000000000..a7d28aec8 --- /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 bb0e68087..2bd0327c2 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); -}; +async function graphEarn(api) { + const network = api.chain + if (!graphUrlList[network]) return; + const slots = await getSlot(api.timestamp, network); -const bscTVL = async (timestamp, block, chainBlocks) => { - const transform = await getChainTransform('bsc'); - return tvl(timestamp, block, chainBlocks, "bsc", 56, transform); -}; + const concretes = await concrete(slots, api); -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 - ]) - } + 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 200/254] 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 000000000..f7acb5451 --- /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 201/254] 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 c78cc3f25..4a37bbae4 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 f12a6d475..58623067d 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 202/254] 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 000000000..e35772882 --- /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 203/254] 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 8eb9436cf..64368e455 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 20c2adfc8..000000000 --- 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 5c93def62..000000000 --- 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 b2adc114f..2ac19f0ab 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 675ba61ff..000000000 --- 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 204/254] 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 fb56635b1..5c520310c 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 c70b967ff..21ce74b0b 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 c99843f97..c8176af9e 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 0e20e1d20..4a617c692 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 017a25e24..50c4a074f 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 5359828c8..edbda4337 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 205/254] 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 111bd173f..0ae8c60cf 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 206/254] 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 000000000..48aa5410d --- /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 553e782d3..f2624c3dc 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 207/254] 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 4f5d39ede..c8dadeb3f 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 208/254] 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 3a0343191..2019fe451 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 209/254] 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 edf5a21bc..a6bad2bfe 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 210/254] 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 24bb66422..97789d5b6 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 000000000..c21a02c9d --- /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 211/254] 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 0cafc4368..b18c12bf4 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 212/254] 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 a18256ff7..3914ecc75 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 000000000..e2a4fbbf2 --- /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 0d5c77769..6c86efe02 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 0ed6d9bfd..7b6926dd4 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 56d7b0533..5f9681dc5 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 000000000..6d47fa50a --- /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 000000000..7d7c2028d --- /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 1bd37185b..ee1d1c2a4 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 4687d5859..0fba8e567 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 ec89691ef..f7991f1ea 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 000000000..48f9de482 --- /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 311e75a76..956d02141 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 c5f420944..381402c41 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 000000000..1cdad9291 --- /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 000000000..d07d77190 --- /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 213/254] 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 | 67 +++++++++++++++++++++++++----------- 2 files changed, 57 insertions(+), 21 deletions(-) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 75112e364..97e6910c2 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 08c785988..c511367f7 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]) - })) - basketTokens.forEach((tokens, i) => { - ownerTokens.push([tokens, rTokens[i]]) - // ownerTokens.push([tokens, stRsrs[i]]) - ownerTokens.push([tokens, backingManagers[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, }) - return sumTokens2({ api, ownerTokens, blacklistedTokens: [rsr] }) + // 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]) + })) + await unwrapCreamTokens(api.getBalances(), fluxListWithOwner, block) + + 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 214/254] 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 4d0507118..89603cd3a 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 215/254] 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 cda342866..716a5e2ab 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 216/254] 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 cb0d9eff5..4bdfd42b7 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 217/254] 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 2869fffe4..1d9043559 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 218/254] 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 000000000..c40d3eadd --- /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 219/254] 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 97e6910c2..d28ca0bbe 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 eb6e9e6e4..3580c8ca0 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 2bd0327c2..5978e4fb1 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 220/254] 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 b39c9cd01..92ab66b80 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 ea4aae21f..f9784d76c 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 221/254] 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 b96b35276..5b8076cda 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 222/254] 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 000000000..1506eeb30 --- /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 223/254] 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 740dbf613..88c915712 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 46426e888..a738b57db 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 224/254] 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 e29ec5c05..de54e2772 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 225/254] 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 1506eeb30..b1559929b 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 226/254] 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 a738b57db..03c27c7a5 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 227/254] 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 bbb90cd4b..de1112638 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 228/254] 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 000000000..73547c2b1 --- /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 229/254] 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 73547c2b1..258f7c644 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 230/254] 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 000000000..7ae4cfbdf --- /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 000000000..5ba709b9d --- /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 000000000..11f5177a6 --- /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 231/254] 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 000000000..f629f6233 --- /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 57b476655d8c716843388263d52a3de2ad2e8125 Mon Sep 17 00:00:00 2001 From: define Date: Fri, 12 May 2023 13:21:20 +0100 Subject: [PATCH 232/254] 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 000000000..abc4bb0b9 --- /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 68352e66d..e89bf5a17 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 000000000..fc892bb24 --- /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 000000000..81892442c --- /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 000000000..ce58d163d --- /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 233/254] 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 000000000..5625e13fe --- /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 234/254] 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 328404bea..218997bd4 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 235/254] 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 024ba7ac0..3a421b1f2 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 4a37bbae4..7f43db345 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 532476687..70abeeca2 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 b9df0b738..9411fe80b 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 ec56a2a58..f98461d0d 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 6375e3870..2fb7d0afe 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 fc892bb24..1e2247fdc 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 81892442c..d16fb42ae 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 236/254] 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 f235779b6..215dea924 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 237/254] 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 63887c13d..249b5e7ed 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 238/254] 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 e5022a26f..d47064d81 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 239/254] 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 732b986ef..8e7e7d60e 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 240/254] 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 c405a6a39..e9cdbe8ec 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 241/254] 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 b742a6583..8e96cf27a 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 242/254] 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 8e96cf27a..e49d4d275 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 243/254] 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 97198cb0b..ccd3c0e3f 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 244/254] 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 a1c89dc50..51b0fc087 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 245/254] 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 73bc86e28..c482ba231 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 246/254] 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 000000000..8bef68cf2 --- /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 247/254] 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 51b0fc087..8079075d1 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 248/254] 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 000000000..fcbdb2067 --- /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 249/254] 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 5ba709b9d..e0541fe5b 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 250/254] 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 000000000..0122f0f95 --- /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 251/254] 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 e51d6afb8..dd81310e7 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 252/254] 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 5540181ba..b11b861ae 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 253/254] 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 22b0802df..e3c5ac34e 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 254/254] 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 b11b861ae..ecf863c74 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, ])