diff --git a/package-lock.json b/package-lock.json index d8d3a50..c7cfca3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "axios": "^0.27.2", "dom-parser": "^0.1.6", + "ethers": "^5.6.9", "jsdom": "^20.0.0", "lodash": "^4.17.21" }, @@ -20,6 +21,696 @@ "mocha": "^10.0.0" } }, + "node_modules/@ethersproject/abi": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.4.tgz", + "integrity": "sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/properties": "^5.6.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", + "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.6.2" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.2.tgz", + "integrity": "sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.6.3", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", + "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz", + "integrity": "sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", + "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.8.tgz", + "integrity": "sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.1.tgz", + "integrity": "sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.1.tgz", + "integrity": "sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -106,6 +797,11 @@ "node": ">=0.4.0" } }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -211,6 +907,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -220,6 +921,11 @@ "node": ">=8" } }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -241,6 +947,11 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -563,6 +1274,25 @@ "node": ">=12" } }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -650,6 +1380,53 @@ "node": ">=0.10.0" } }, + "node_modules/ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -886,6 +1663,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -895,6 +1681,16 @@ "he": "bin/he" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -955,8 +1751,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ip-regex": { "version": "2.1.0", @@ -1062,6 +1857,11 @@ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1229,6 +2029,16 @@ "node": ">= 0.6" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, "node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -1557,6 +2367,11 @@ "node": ">=v12.22.7" } }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -1956,6 +2771,384 @@ } }, "dependencies": { + "@ethersproject/abi": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.4.tgz", + "integrity": "sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg==", + "requires": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "@ethersproject/base64": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", + "requires": { + "@ethersproject/bytes": "^5.6.1" + } + }, + "@ethersproject/basex": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/properties": "^5.6.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", + "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", + "requires": { + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/constants": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", + "requires": { + "@ethersproject/bignumber": "^5.6.2" + } + }, + "@ethersproject/contracts": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.2.tgz", + "integrity": "sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==", + "requires": { + "@ethersproject/abi": "^5.6.3", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2" + } + }, + "@ethersproject/hash": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/hdnode": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "@ethersproject/json-wallets": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "@ethersproject/keccak256": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", + "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==" + }, + "@ethersproject/networks": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz", + "integrity": "sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==", + "requires": { + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" + } + }, + "@ethersproject/properties": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", + "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", + "requires": { + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/providers": { + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.8.tgz", + "integrity": "sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==", + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1", + "bech32": "1.1.4", + "ws": "7.4.6" + }, + "dependencies": { + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} + } + } + }, + "@ethersproject/random": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/rlp": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/sha2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/solidity": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.1.tgz", + "integrity": "sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==", + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/strings": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/transactions": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", + "requires": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" + } + }, + "@ethersproject/units": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.1.tgz", + "integrity": "sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==", + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/wallet": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "@ethersproject/web": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", + "requires": { + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/wordlists": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -2026,6 +3219,11 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2109,12 +3307,22 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -2133,6 +3341,11 @@ "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -2385,6 +3598,27 @@ "webidl-conversions": "^7.0.0" } }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2435,6 +3669,43 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, + "ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "requires": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2600,12 +3871,31 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -2654,8 +3944,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ip-regex": { "version": "2.1.0", @@ -2731,6 +4020,11 @@ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2853,6 +4147,16 @@ "mime-db": "1.52.0" } }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, "minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -3089,6 +4393,11 @@ "xmlchars": "^2.2.0" } }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", diff --git a/package.json b/package.json index b46e60c..e2cc2e6 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dependencies": { "axios": "^0.27.2", "dom-parser": "^0.1.6", + "ethers": "^5.6.9", "jsdom": "^20.0.0", "lodash": "^4.17.21" }, diff --git a/test/collections.js b/test/collections.js index 5009a9b..c31fc69 100644 --- a/test/collections.js +++ b/test/collections.js @@ -9,278 +9,333 @@ const { expect } = chai; const _ = require("lodash"); const axios = require("axios").default; const jsdom = require("jsdom"); +const { + parseUrl, + fetchCustomURL, + decodeUniswapV2Data, +} = require("./utils/request"); const { JSDOM } = jsdom; const collectionKeysWithType = { - jobIDs: "array", - aggregationMethod: "number", - power: "number", - name: "string", - tolerance: "number", + jobIDs: "array", + aggregationMethod: "number", + power: "number", + name: "string", + tolerance: "number", }; const requiredCollectionKeys = Object.keys(collectionKeysWithType).sort(); describe("Collections test", () => { - const testnetTableData = []; - const mainnetTableData = []; - it("Collections should have required keys", () => { - testnetCollectionsData.map((col, index) => { - expect(Object.keys(col).sort()).to.be.eql( - requiredCollectionKeys, - `Testnet Collection[${index}] does not match with required keys spec` - ); - }); - mainnetCollectionsData.map((col, index) => { - expect(Object.keys(col).sort()).to.be.eql( - requiredCollectionKeys, - `Mainnet Collection[${index}] does not match with required keys spec` - ); - }); + const testnetTableData = []; + const mainnetTableData = []; + it("Collections should have required keys", () => { + testnetCollectionsData.map((col, index) => { + expect(Object.keys(col).sort()).to.be.eql( + requiredCollectionKeys, + `Testnet Collection[${index}] does not match with required keys spec` + ); }); + mainnetCollectionsData.map((col, index) => { + expect(Object.keys(col).sort()).to.be.eql( + requiredCollectionKeys, + `Mainnet Collection[${index}] does not match with required keys spec` + ); + }); + }); - it("Collection keys should match with required datatype", () => { - testnetCollectionsData.map((col, index) => { - Object.keys(col).map((colKey) => { - expect(col[colKey]).to.be.a( - collectionKeysWithType[colKey], - `Testnet Collection[${index}][${colKey}] does match required data type` - ); - }); - }); - mainnetCollectionsData.map((col, index) => { - Object.keys(col).map((colKey) => { - expect(col[colKey]).to.be.a( - collectionKeysWithType[colKey], - `Mainnet Collection[${index}][${colKey}] does match required data type` - ); - }); - }); + it("Collection keys should match with required datatype", () => { + testnetCollectionsData.map((col, index) => { + Object.keys(col).map((colKey) => { + expect(col[colKey]).to.be.a( + collectionKeysWithType[colKey], + `Testnet Collection[${index}][${colKey}] does match required data type` + ); + }); + }); + mainnetCollectionsData.map((col, index) => { + Object.keys(col).map((colKey) => { + expect(col[colKey]).to.be.a( + collectionKeysWithType[colKey], + `Mainnet Collection[${index}][${colKey}] does match required data type` + ); + }); }); + }); - it("Collection jobIDs length should be greater than 0", () => { - testnetCollectionsData.map((col) => { - const { jobIDs } = col; - expect(jobIDs).to.be.instanceof(Array); - expect(jobIDs).to.have.length.above(0); - }); - mainnetCollectionsData.map((col) => { - const { jobIDs } = col; - expect(jobIDs).to.be.instanceof(Array); - expect(jobIDs).to.have.length.above(0); - }); + it("Collection jobIDs length should be greater than 0", () => { + testnetCollectionsData.map((col) => { + const { jobIDs } = col; + expect(jobIDs).to.be.instanceof(Array); + expect(jobIDs).to.have.length.above(0); + }); + mainnetCollectionsData.map((col) => { + const { jobIDs } = col; + expect(jobIDs).to.be.instanceof(Array); + expect(jobIDs).to.have.length.above(0); + }); + }); + it("Collection jobIDs should be number", () => { + testnetCollectionsData.map((col, index) => { + const { jobIDs } = col; + const isValid = jobIDs.every((ele) => typeof ele === "number"); + expect(isValid).to.be.eq( + true, + `Testnet Collection[${index}] jobIDs should be number` + ); }); + mainnetCollectionsData.map((col, index) => { + const { jobIDs } = col; + const isValid = jobIDs.every((ele) => typeof ele === "number"); + expect(isValid).to.be.eq( + true, + `Mainnet Collection[${index}] jobIDs should be number` + ); + }); + }); - it("Collection jobIDs should be number", () => { - testnetCollectionsData.map((col, index) => { - const { jobIDs } = col; - const isValid = jobIDs.every((ele) => typeof ele === "number"); - expect(isValid).to.be.eq( - true, - `Testnet Collection[${index}] jobIDs should be number` + it("Collection jobIDs should send OK response ", async () => { + await Promise.all( + testnetCollectionsData.map(async (col) => { + const { jobIDs } = col; + jobIDs.every(async (ele) => { + let { url, name } = testnetJobsData[ele - 1]; + if (url.startsWith("{")) { + const res = await fetchCustomURL(url, name); + expect(res.status).to.be.equal( + 200, + `Testnet Job(${name}) url should send OK response` + ); + } else { + const res = await chai.request(url).get("").timeout(10000); + expect(res.status).to.be.equal( + 200, + `Testnet Job(${name}) url should send OK response` ); + } }); - mainnetCollectionsData.map((col, index) => { - const { jobIDs } = col; - const isValid = jobIDs.every((ele) => typeof ele === "number"); - expect(isValid).to.be.eq( - true, - `Mainnet Collection[${index}] jobIDs should be number` + }), + mainnetCollectionsData.map(async (col) => { + const { jobIDs } = col; + jobIDs.every(async (ele) => { + const { url, name } = mainnetCollectionsData[ele - 1]; + if (url.startsWith("{")) { + const res = await fetchCustomURL(url, name); + expect(res.status).to.be.equal( + 200, + `Mainnet Job(${name}) url should send OK response` + ); + } else { + const res = await chai.request(url).get("").timeout(10000); + expect(res.status).to.be.equal( + 200, + `Mainnet Job(${name}) url should send OK response` ); + } }); - }); + }) + ); + }).timeout(2 * 60 * 1000); - it("Collection jobIDs should send OK response ", async () => { + it("Collection JSON jobIDs should have required selectors ", async () => { + await Promise.all( + testnetCollectionsData.map(async (col) => { + const { jobIDs } = col; await Promise.all( - testnetCollectionsData.map(async (col) => { - const { jobIDs } = col; - jobIDs.every(async (ele) => { - const { - url, - name - } = testnetJobsData[ele - 1]; - const res = await chai.request(url).get(""); - expect(res.status).to.be.equal( - 200, - `Testnet Job(${name}) url should send OK response` - ); + jobIDs.map(async (ele) => { + const { url, name, selectorType, selector } = + testnetJobsData[ele - 1]; + + if (selectorType === 0) { + if (url.startsWith("{")) { + const { returnType } = parseUrl(url); + const res = await fetchCustomURL(url, name); + const result = decodeUniswapV2Data(res.data.result, returnType); + + expect(isNaN(result)).to.be.eq( + false, + `Job[${name}] does not have required selector` + ); + } else { + const res = await chai.request(url).get("").timeout(10000); + const result = _.get(res.body, selector); + + expect(isNaN(result)).to.be.eq( + false, + `Job[${name}] does not have required selector` + ); + } + } + + //JSON + if (selectorType === 0) { + if (url.startsWith("{")) { + const { returnType } = parseUrl(url); + const res = await fetchCustomURL(url, name); + const result = decodeUniswapV2Data(res.data.result, returnType); + expect(isNaN(result)).to.be.eq( + false, + `Testnet Job[${name}] does not have required selector` + ); + testnetTableData.push({ + job: name, + result, }); - }), - mainnetCollectionsData.map(async (col) => { - const { jobIDs } = col; - jobIDs.every(async (ele) => { - const { - url, - name - } = mainnetCollectionsData[ele - 1]; - const res = await chai.request(url).get(""); - expect(res.status).to.be.equal( - 200, - `Mainnet Job(${name}) url should send OK response` - ); + } else { + const res = await chai.request(url).get("").timeout(10000); + const result = _.get(res.body, selector); + expect(isNaN(result)).to.be.eq( + false, + `Testnet Job[${name}] does not have required selector` + ); + testnetTableData.push({ + job: name, + result, }); - }) + } + } + }) ); - }); - - it("Collection JSON jobIDs should have required selectors ", async () => { + }), + mainnetCollectionsData.map(async (col) => { + const { jobIDs } = col; await Promise.all( - testnetCollectionsData.map(async (col) => { - const { jobIDs } = col; - await Promise.all( - jobIDs.map(async (ele) => { - const { url, name, selectorType, selector } = testnetJobsData[ele - 1]; - //JSON - if (selectorType === 0) { - const res = await chai.request(url).get(""); - const result = _.get(res.body, selector); - expect(isNaN(result)).to.be.eq( - false, - `Testnet Job[${name}] does not have required selector` - ); - testnetTableData.push({ - job: name, - result, - }); - } - }) - ); - }), - mainnetCollectionsData.map(async (col) => { - const { jobIDs } = col; - await Promise.all( - jobIDs.map(async (ele) => { - const { url, name, selectorType, selector } = mainnetJobsData[ele - 1]; - //JSON - if (selectorType === 0) { - const res = await chai.request(url).get(""); - const result = _.get(res.body, selector); - expect(isNaN(result)).to.be.eq( - false, - `Mainnet Job[${name}] does not have required selector` - ); - mainnetTableData.push({ - job: name, - result, - }); - } - }) - ); + jobIDs.map(async (ele) => { + const { url, name, selectorType, selector } = + mainnetJobsData[ele - 1]; + //JSON + if (selectorType === 0) { + if (url.startsWith("{")) { + const { returnType } = parseUrl(url); + const res = await fetchCustomURL(url, name); + const result = decodeUniswapV2Data(res.data.result, returnType); + expect(isNaN(result)).to.be.eq( + false, + `Mainnet Job[${name}] does not have required selector` + ); + mainnetTableData.push({ + job: name, + result, + }); + } else { + const res = await chai.request(url).get("").timeout(10000); + const result = _.get(res.body, selector); + expect(isNaN(result)).to.be.eq( + false, + `Mainnet Job[${name}] does not have required selector` + ); + mainnetTableData.push({ + job: name, + result, + }); + } + } }) ); - }); + }) + ); + }).timeout(2 * 60 * 1000); - it("Collection XHTML jobIDs should have required selectors ", async () => { + it("Collection XHTML jobIDs should have required selectors ", async () => { + await Promise.all( + testnetCollectionsData.map(async (col) => { + const { jobIDs } = col; await Promise.all( - testnetCollectionsData.map(async (col) => { - const { jobIDs } = col; - await Promise.all( - jobIDs.map(async (ele) => { - const { - url, - name, - selectorType, - selector - } = testnetJobsData[ele - 1]; - //XHTML - if (selectorType === 1) { - const res = await axios.get(url, { - headers: { - "Content-Type": "application/xml; charset=utf-8", - }, - }); - - const dom = new JSDOM(res.data); - const parser = new dom.window.DOMParser(); - const doc = parser.parseFromString(res.data, "text/html"); - const result = dom.window.document.evaluate( - selector, - doc, - null, - dom.window.XPathResult.FIRST_ORDERED_NODE_TYPE, - null - ).singleNodeValue; - - expect(result).to.not.equal( - null, - `Job[${name}] result content is null` - ); - - const trimResult = result ? - result.textContent.replace(/[, $]+/g, "") : - undefined; - expect(isNaN(trimResult)).to.be.eq( - false, - `Testnet Job[${name}] does not have numeric result` - ); - testnetTableData.push({ - job: name, - result: trimResult - }); - } - }) - ); - - }), - mainnetCollectionsData.map(async (col) => { - const { jobIDs } = col; - await Promise.all( - jobIDs.map(async (ele) => { - const { - url, - name, - selectorType, - selector - } = mainnetJobsData[ele - 1]; - //XHTML - if (selectorType === 1) { - const res = await axios.get(url, { - headers: { - "Content-Type": "application/xml; charset=utf-8", - }, - }); - - const dom = new JSDOM(res.data); - const parser = new dom.window.DOMParser(); - const doc = parser.parseFromString(res.data, "text/html"); - const result = dom.window.document.evaluate( - selector, - doc, - null, - dom.window.XPathResult.FIRST_ORDERED_NODE_TYPE, - null - ).singleNodeValue; - - expect(result).to.not.equal( - null, - `Job[${name}] result content is null` - ); - - const trimResult = result ? - result.textContent.replace(/[, $]+/g, "") : - undefined; - expect(isNaN(trimResult)).to.be.eq( - false, - `Mainnet Job[${name}] does not have numeric result` - ); - mainnetTableData.push({ - job: name, - result: trimResult - }); - } - }) - ); - - }) + jobIDs.map(async (ele) => { + const { url, name, selectorType, selector } = + testnetJobsData[ele - 1]; + //XHTML + if (selectorType === 1) { + const res = await axios.get(url, { + headers: { + "Content-Type": "application/xml; charset=utf-8", + }, + }); + + const dom = new JSDOM(res.data); + const parser = new dom.window.DOMParser(); + const doc = parser.parseFromString(res.data, "text/html"); + const result = dom.window.document.evaluate( + selector, + doc, + null, + dom.window.XPathResult.FIRST_ORDERED_NODE_TYPE, + null + ).singleNodeValue; + + expect(result).to.not.equal( + null, + `Job[${name}] result content is null` + ); + + const trimResult = result + ? result.textContent.replace(/[, $]+/g, "") + : undefined; + expect(isNaN(trimResult)).to.be.eq( + false, + `Testnet Job[${name}] does not have numeric result` + ); + testnetTableData.push({ + job: name, + result: trimResult, + }); + } + }) ); - }); + }), + mainnetCollectionsData.map(async (col) => { + const { jobIDs } = col; + await Promise.all( + jobIDs.map(async (ele) => { + const { url, name, selectorType, selector } = + mainnetJobsData[ele - 1]; + //XHTML + if (selectorType === 1) { + const res = await axios.get(url, { + headers: { + "Content-Type": "application/xml; charset=utf-8", + }, + }); + const dom = new JSDOM(res.data); + const parser = new dom.window.DOMParser(); + const doc = parser.parseFromString(res.data, "text/html"); + const result = dom.window.document.evaluate( + selector, + doc, + null, + dom.window.XPathResult.FIRST_ORDERED_NODE_TYPE, + null + ).singleNodeValue; - after(() => { - console.log("Testnet Results"); - console.table(testnetTableData); - console.log("Mainnet Results"); - console.table(mainnetTableData); - }); -}); \ No newline at end of file + expect(result).to.not.equal( + null, + `Job[${name}] result content is null` + ); + + const trimResult = result + ? result.textContent.replace(/[, $]+/g, "") + : undefined; + expect(isNaN(trimResult)).to.be.eq( + false, + `Mainnet Job[${name}] does not have numeric result` + ); + mainnetTableData.push({ + job: name, + result: trimResult, + }); + } + }) + ); + }) + ); + }); + + after(() => { + console.log("Testnet Results"); + console.table(testnetTableData); + console.log("Mainnet Results"); + console.table(mainnetTableData); + }); +}); diff --git a/test/utils/request.js b/test/utils/request.js new file mode 100644 index 0000000..e54081b --- /dev/null +++ b/test/utils/request.js @@ -0,0 +1,40 @@ +const axios = require("axios").default; +const { ethers } = require("ethers"); + +const parseUrl = (requestURL) => { + const { type, url, body, header, returnType } = JSON.parse(requestURL); + return { type, url, body, header, returnType }; +}; + +const fetchCustomURL = async (requestURL, name) => { + const { type, url, body, header, returnType } = parseUrl(requestURL); + const opt = { + method: type, + url, + headers: header, + data: body, + }; + const res = await axios.request(opt); + return res; +}; + +const weiToEther = (weiValue) => { + const ether = weiValue / 1e18; + return Number(ether.toFixed(4)); +}; + +const decodeUniswapV2Data = (data, returnType) => { + const match = returnType.match(/\[(\d+)\]/); + const index = match ? parseInt(match[1], 10) : null; + if (index) { + const decodedValue = ethers.utils.defaultAbiCoder.decode( + ["uint256[]"], + data + ); + + return weiToEther(Number(decodedValue[0][index].toString())); + } + return 0; +}; + +module.exports = { fetchCustomURL, decodeUniswapV2Data, parseUrl }; diff --git a/testnet/collections.json b/testnet/collections.json index 66a4564..bcc4a30 100644 --- a/testnet/collections.json +++ b/testnet/collections.json @@ -1,79 +1,79 @@ [ - { - "jobIDs": [1, 2, 3, 5, 6, 8, 9, 24], - "aggregationMethod": 2, - "power": 2, - "name": "ethCollectionMedian", - "tolerance": 500000 - }, - { - "jobIDs": [10, 11, 58], - "aggregationMethod": 2, - "power": 8, - "name": "RAZORUSD", - "tolerance": 500000 - }, - { - "jobIDs": [13, 15, 16], - "aggregationMethod": 2, - "power": 2, - "name": "UFTUSD", - "tolerance": 500000 - }, - { - "jobIDs": [18, 19, 20, 21, 23], - "aggregationMethod": 2, - "power": 2, - "name": "BTCUSD", - "tolerance": 500000 - }, - { - "jobIDs": [25, 26, 27], - "aggregationMethod": 2, - "power": 5, - "name": "USDCUSD", - "tolerance": 500000 - }, - { - "jobIDs": [28, 29, 30], - "aggregationMethod": 2, - "power": 5, - "name": "USDTUSD", - "tolerance": 500000 - }, - { - "jobIDs": [31, 32, 33, 34, 35, 36], - "aggregationMethod": 2, - "power": 4, - "name": "MATICUSD", - "tolerance": 500000 - }, - { - "jobIDs": [38, 39, 40, 41, 42], - "aggregationMethod": 2, - "power": 4, - "name": "GRTUSD", - "tolerance": 500000 - }, - { - "jobIDs": [44, 45, 46], - "aggregationMethod": 2, - "power": 4, - "name": "ARBUSD", - "tolerance": 500000 - }, - { - "jobIDs": [48, 49, 50, 51], - "aggregationMethod": 2, - "power": 4, - "name": "SOLUSD", - "tolerance": 500000 - }, - { - "jobIDs": [52, 53, 54, 57], - "aggregationMethod": 2, - "power": 6, - "name": "SKALEUSD", - "tolerance": 500000 - } - ] \ No newline at end of file + { + "jobIDs": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + "aggregationMethod": 2, + "power": 2, + "name": "ethCollectionMedian", + "tolerance": 500000 + }, + { + "jobIDs": [11, 12, 13, 14, 15], + "aggregationMethod": 2, + "power": 8, + "name": "RAZORUSD", + "tolerance": 500000 + }, + { + "jobIDs": [16, 17, 18], + "aggregationMethod": 2, + "power": 2, + "name": "UFTUSD", + "tolerance": 500000 + }, + { + "jobIDs": [19, 20, 21, 22, 23, 24, 25], + "aggregationMethod": 2, + "power": 2, + "name": "BTCUSD", + "tolerance": 500000 + }, + { + "jobIDs": [26, 27, 28, 29], + "aggregationMethod": 2, + "power": 5, + "name": "USDCUSD", + "tolerance": 500000 + }, + { + "jobIDs": [30, 31, 32, 33], + "aggregationMethod": 2, + "power": 5, + "name": "USDTUSD", + "tolerance": 500000 + }, + { + "jobIDs": [34, 35, 36, 37, 38, 39], + "aggregationMethod": 2, + "power": 4, + "name": "MATICUSD", + "tolerance": 500000 + }, + { + "jobIDs": [40, 41, 42, 43, 44, 45], + "aggregationMethod": 2, + "power": 4, + "name": "GRTUSD", + "tolerance": 500000 + }, + { + "jobIDs": [46, 47, 48, 49], + "aggregationMethod": 2, + "power": 4, + "name": "ARBUSD", + "tolerance": 500000 + }, + { + "jobIDs": [50, 51, 52, 53, 54], + "aggregationMethod": 2, + "power": 4, + "name": "SOLUSD", + "tolerance": 500000 + }, + { + "jobIDs": [55, 56, 57, 58, 59, 60], + "aggregationMethod": 2, + "power": 6, + "name": "SKALEUSD", + "tolerance": 500000 + } +] diff --git a/testnet/jobs.json b/testnet/jobs.json index 55560f4..f63fdda 100644 --- a/testnet/jobs.json +++ b/testnet/jobs.json @@ -1,474 +1,482 @@ [ - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/ethusd" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_kucoin", - "selector": "data.ETH", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=ETH" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_kraken", - "selector": "result.XETHZUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=ETHUSD" - }, - { - "weight": 1, - "power": 2, - "selectorType": 1, - "name": "ethusd_coingecko", - "selector": "/html/body/div[5]/div[5]/div[1]/div/div[1]/div[3]/div/div[1]/span[1]/span", - "url": "https://www.coingecko.com/en/coins/ethereum" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_binance", - "selector": "price", - "url": "https://api.binance.com/api/v3/avgPrice?symbol=ETHBUSD" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/ETH-USD/spot" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_coingecko_api", - "selector": "ethereum.usd", - "url": "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_bitfinex", - "selector": "[0]", - "url": "https://api-pub.bitfinex.com/v2/ticker/tETHUSD" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "ethusd_cryptocompare", - "selector": "[USD]", - "url": "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "razorusd_cryptocompare", - "selector": "[USD]", - "url": "https://min-api.cryptocompare.com/data/price?fsym=RAZOR&tsyms=USD" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "razorusd_mexc", - "selector": "data[0][last]", - "url": "https://www.mexc.com/open/api/v2/market/ticker?symbol=RAZOR_USDT" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "razorusd_gateio", - "selector": "[0].last", - "url": "https://api.gateio.ws/api/v4/spot/tickers?currency_pair=RAZOR_USDT" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "uftusd_mexc", - "selector": "data[0][last]", - "url": "https://www.mexc.com/open/api/v2/market/ticker?symbol=UFT_USDT" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "uftusd_gateio", - "selector": "[0].last", - "url": "https://api.gateio.ws/api/v4/spot/tickers?currency_pair=UFT_USDT" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "uftusd_cryptocompare", - "selector": "[USD]", - "url": "https://min-api.cryptocompare.com/data/price?fsym=UFT&tsyms=USD" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "uftusd_binance", - "selector": "price", - "url": "https://api.binance.com/api/v3/avgPrice?symbol=UFTBUSD" - }, - { - "weight": 1, - "power": -4, - "selectorType": 0, - "name": "ethusd_postJob", - "selector": "result", - "url": "{\"type\": \"POST\",\"url\": \"https://rpc.ankr.com/eth\",\"body\": {\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6\",\"data\":\"0xf7729d43000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000\"}],\"id\":5},\"header\": {\"content-type\": \"application/json\"}, \"returnType\": \"hex\"}" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "btcusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/btcusd" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "btcusd_kucoin", - "selector": "data.BTC", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=BTC" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "btcusd_kraken", - "selector": "result.XXBTZUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=BTCUSD" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "btcusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/BTC-USD/spot" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "btcusd_coingecko_api", - "selector": "bitcoin.usd", - "url": "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "btc_kucoin_common_api", - "selector": "data.BTC", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=ETH,BTC" - }, - { - "weight": 1, - "power": 2, - "selectorType": 0, - "name": "eth_kucoin_common_api", - "selector": "data.ETH", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=ETH,BTC" - }, - { - "weight": 1, - "power": 5, - "selectorType": 0, - "name": "usdcusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/usdcusd" - }, - { - "weight": 1, - "power": 5, - "selectorType": 0, - "name": "usdcusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/USDC-USD/spot" - }, - { - "weight": 1, - "power": 5, - "selectorType": 0, - "name": "usdcusd_kraken", - "selector": "result.USDCUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=USDCUSD" - }, - { - "weight": 1, - "power": 5, - "selectorType": 0, - "name": "usdtusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/usdtusd" - }, - { - "weight": 1, - "power": 5, - "selectorType": 0, - "name": "usdtusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/USDT-USD/spot" - }, - { - "weight": 1, - "power": 5, - "selectorType": 0, - "name": "usdtusd_kraken", - "selector": "result.USDTZUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=USDTZUSD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "maticusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/maticusd" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "maticusd_kucoin", - "selector": "data.MATIC", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=MATIC" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "maticusd_kraken", - "selector": "result.MATICUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=MATICUSD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "maticusd_binance", - "selector": "price", - "url": "https://api.binance.com/api/v3/avgPrice?symbol=MATICBUSD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "maticusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/MATIC-USD/spot" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "maticusd_cryptocompare", - "selector": "USD", - "url": "https://min-api.cryptocompare.com/data/price?fsym=MATIC&tsyms=USD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 1, - "name": "maticusd_coinmarjetcap_xhtml", - "selector": "/html/body/div[1]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[2]/span", - "url": "https://coinmarketcap.com/currencies/polygon/" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "grtusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/grtusd" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "grtusd_kucoin", - "selector": "data.GRT", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=GRT" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "grtusd_kraken", - "selector": "result.GRTUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=GRTUSD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "grtusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/GRT-USD/spot" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "grtusd_cryptocompare", - "selector": "USD", - "url": "https://min-api.cryptocompare.com/data/price?fsym=GRT&tsyms=USD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 1, - "name": "grtusd_blockworks_xhtml", - "selector": "/html/body/div[1]/div/main/div[2]/div[1]/section[2]/div[1]/div/div[1]/div[1]/p", - "url": "https://blockworks.co/price/grt" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "arbusd_kucoin", - "selector": "data.ARB", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=ARB" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "arbusd_kraken", - "selector": "result.ARBUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=ARBUSD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "arbusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/ARB-USD/spot" - }, - { - "weight": 1, - "power": 4, - "selectorType": 1, - "name": "arb_binance_xhtml", - "selector": "/html/body/div[3]/section/div/div[2]/div[4]/div[1]/div[1]", - "url": "https://www.binance.com/en-IN/price/arbitrum" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "solusd_kucoin", - "selector": "data.SOL", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=SOL" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "solusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/SOL-USD/spot" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "solusd_kraken", - "selector": "result.SOLUSD.c[0]", - "url": "https://api.kraken.com/0/public/Ticker?pair=SOLUSD" - }, - { - "weight": 1, - "power": 4, - "selectorType": 0, - "name": "solusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/solusd" - }, - { - "weight": 1, - "power": 6, - "selectorType": 0, - "name": "sklusd_gemini", - "selector": "last", - "url": "https://api.gemini.com/v1/pubticker/sklusd" - }, - { - "weight": 1, - "power": 6, - "selectorType": 0, - "name": "sklusd_kucoin", - "selector": "data.SKL", - "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=SKL" - }, - { - "weight": 1, - "power": 6, - "selectorType": 0, - "name": "sklusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/SKL-USD/spot" - }, - { - "weight": 1, - "power": 6, - "selectorType": 1, - "name": "sklusd_binance_xhtml", - "selector": "/html/body/div[3]/section/div/div[2]/div[4]/div[1]/div[1]", - "url": "https://www.binance.com/en-IN/price/skale-network" - }, - { - "weight": 1, - "power": 6, - "selectorType": 0, - "name": "sklusd_coingecko_api", - "selector": "skale.usd", - "url": "https://api.coingecko.com/api/v3/simple/price?ids=skale&vs_currencies=usd" - }, - { - "weight": 1, - "power": 6, - "selectorType": 0, - "name": "sklusd_cryptocompare", - "selector": "USD", - "url": "https://min-api.cryptocompare.com/data/price?fsym=SKL&tsyms=USD" - }, - { - "weight": 1, - "power": 8, - "selectorType": 0, - "name": "razorusd_coinbase", - "selector": "data.amount", - "url": "https://api.coinbase.com/v2/prices/RAZOR-USD/spot" - }, - { - "weight": 1, - "power": 8, - "selectorType": 0, - "name": "razorusdp_uniswap_v2", - "selector": "result", - "url": "{\"type\": \"POST\",\"url\": \"https://rpc.ankr.com/eth\",\"body\": {\"jsonrpc\":\"2.0\",\"id\":7269270904970082,\"method\":\"eth_call\",\"params\":[{\"from\":\"0x0000000000000000000000000000000000000000\",\"data\":\"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000050de6856358cc35f3a9a57eaaa34bd4cb707d2cd0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1\",\"to\":\"0x7a250d5630b4cf539739df2c5dacb4c659f2488d\"},\"latest\"]},\"header\": {\"content-type\": \"application/json\"}, \"returnType\": \"hexArray[1]\"}" - } - ] \ No newline at end of file + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "ethusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/ethusd" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "ethusd_kucoin", + "selector": "data.ETH", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=ETH" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "ethusd_kraken", + "selector": "result.XETHZUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=ETHUSD" + }, + { + "weight": 1, + "power": 2, + "selectorType": 1, + "name": "ethusd_coingecko", + "selector": "/html/body/div[5]/div[5]/div[1]/div/div[1]/div[3]/div/div[1]/span[1]/span", + "url": "https://www.coingecko.com/en/coins/ethereum" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "ethusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/ETH-USD/spot" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "ethusd_coingecko_api", + "selector": "ethereum.usd", + "url": "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "ethusd_bitfinex", + "selector": "last_price", + "url": "https://api.bitfinex.com/v1/pubticker/ethusd" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "ethusd_cryptocompare", + "selector": "USD", + "url": "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD" + }, + { + "weight": 1, + "power": -4, + "selectorType": 0, + "name": "ethusd_postJob", + "selector": "result", + "url": "{\"type\": \"POST\",\"url\": \"https://rpc.ankr.com/eth\",\"body\": {\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0xb27308f9f90d607463bb33ea1bebb41c27ce5ab6\",\"data\":\"0xf7729d43000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000\"}],\"id\":5},\"header\": {\"content-type\": \"application/json\"}, \"returnType\": \"hex\"}" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "pricefeed_eth", + "selector": "ethCollectionMedian", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 8, + "selectorType": 0, + "name": "razorusd_cryptocompare", + "selector": "USD", + "url": "https://min-api.cryptocompare.com/data/price?fsym=RAZOR&tsyms=USD" + }, + { + "weight": 1, + "power": 8, + "selectorType": 0, + "name": "razorusd_gateio", + "selector": "[0].last", + "url": "https://api.gateio.ws/api/v4/spot/tickers?currency_pair=RAZOR_USDT" + }, + { + "weight": 1, + "power": 8, + "selectorType": 0, + "name": "razorusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/RAZOR-USD/spot" + }, + { + "weight": 1, + "power": 8, + "selectorType": 0, + "name": "razorusdp_uniswap_v2", + "selector": "result", + "url": "{\"type\": \"POST\",\"url\": \"https://rpc.ankr.com/eth\",\"body\": {\"jsonrpc\":\"2.0\",\"id\":7269270904970082,\"method\":\"eth_call\",\"params\":[{\"from\":\"0x0000000000000000000000000000000000000000\",\"data\":\"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000050de6856358cc35f3a9a57eaaa34bd4cb707d2cd0000000000000000000000008e870d67f660d95d5be530380d0ec0bd388289e1\",\"to\":\"0x7a250d5630b4cf539739df2c5dacb4c659f2488d\"},\"latest\"]},\"header\": {\"content-type\": \"application/json\"}, \"returnType\": \"hexArray[1]\"}" + }, + { + "weight": 1, + "power": 8, + "selectorType": 0, + "name": "pricefeed_rzr", + "selector": "RAZORUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "uftusd_gateio", + "selector": "[0].last", + "url": "https://api.gateio.ws/api/v4/spot/tickers?currency_pair=UFT_USDT" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "uftusd_cryptocompare", + "selector": "USD", + "url": "https://min-api.cryptocompare.com/data/price?fsym=UFT&tsyms=USD" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "pricefeed_uft", + "selector": "UFTUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "btcusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/btcusd" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "btcusd_kucoin", + "selector": "data.BTC", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=BTC" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "btcusd_kraken", + "selector": "result.XXBTZUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=BTCUSD" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "btcusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/BTC-USD/spot" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "btcusd_coingecko_api", + "selector": "bitcoin.usd", + "url": "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "btc_kucoin_common_api", + "selector": "data.BTC", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=ETH,BTC" + }, + { + "weight": 1, + "power": 2, + "selectorType": 0, + "name": "pricefeed_btc", + "selector": "BTCUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "usdcusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/usdcusd" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "usdcusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/USDC-USD/spot" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "usdcusd_kraken", + "selector": "result.USDCUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=USDCUSD" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "pricefeed_usdc", + "selector": "USDCUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "usdtusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/usdtusd" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "usdtusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/USDT-USD/spot" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "usdtusd_kraken", + "selector": "result.USDTZUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=USDTZUSD" + }, + { + "weight": 1, + "power": 5, + "selectorType": 0, + "name": "pricefeed_usdt", + "selector": "USDTUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "maticusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/maticusd" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "maticusd_kucoin", + "selector": "data.MATIC", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=MATIC" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "maticusd_kraken", + "selector": "result.MATICUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=MATICUSD" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "maticusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/MATIC-USD/spot" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "maticusd_cryptocompare", + "selector": "USD", + "url": "https://min-api.cryptocompare.com/data/price?fsym=MATIC&tsyms=USD" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "pricefeed_matic", + "selector": "MATICUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "grtusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/grtusd" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "grtusd_kucoin", + "selector": "data.GRT", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=GRT" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "grtusd_kraken", + "selector": "result.GRTUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=GRTUSD" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "grtusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/GRT-USD/spot" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "grtusd_cryptocompare", + "selector": "USD", + "url": "https://min-api.cryptocompare.com/data/price?fsym=GRT&tsyms=USD" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "pricefeed_grt", + "selector": "GRTUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "arbusd_kucoin", + "selector": "data.ARB", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=ARB" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "arbusd_kraken", + "selector": "result.ARBUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=ARBUSD" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "arbusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/ARB-USD/spot" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "pricefeed_arb", + "selector": "ARBUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "solusd_kucoin", + "selector": "data.SOL", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=SOL" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "solusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/SOL-USD/spot" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "solusd_kraken", + "selector": "result.SOLUSD.c[0]", + "url": "https://api.kraken.com/0/public/Ticker?pair=SOLUSD" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "solusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/solusd" + }, + { + "weight": 1, + "power": 4, + "selectorType": 0, + "name": "pricefeed_sol", + "selector": "SOLUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + }, + { + "weight": 1, + "power": 6, + "selectorType": 0, + "name": "sklusd_gemini", + "selector": "last", + "url": "https://api.gemini.com/v1/pubticker/sklusd" + }, + { + "weight": 1, + "power": 6, + "selectorType": 0, + "name": "sklusd_kucoin", + "selector": "data.SKL", + "url": "https://api.kucoin.com/api/v1/prices?base=USD¤cies=SKL" + }, + { + "weight": 1, + "power": 6, + "selectorType": 0, + "name": "sklusd_coinbase", + "selector": "data.amount", + "url": "https://api.coinbase.com/v2/prices/SKL-USD/spot" + }, + { + "weight": 1, + "power": 6, + "selectorType": 0, + "name": "sklusd_coingecko_api", + "selector": "skale.usd", + "url": "https://api.coingecko.com/api/v3/simple/price?ids=skale&vs_currencies=usd" + }, + { + "weight": 1, + "power": 6, + "selectorType": 0, + "name": "sklusd_cryptocompare", + "selector": "USD", + "url": "https://min-api.cryptocompare.com/data/price?fsym=SKL&tsyms=USD" + }, + { + "weight": 1, + "power": 6, + "selectorType": 0, + "name": "pricefeed_skale", + "selector": "SKALEUSD", + "url": "https://datafeeds-staging.razorscan.io/prices" + } +]