diff --git a/.github/workflows/handler.deploy-to-mainnets.yml b/.github/workflows/handler.deploy-to-mainnets.yml new file mode 100644 index 0000000000..bb2cd86101 --- /dev/null +++ b/.github/workflows/handler.deploy-to-mainnets.yml @@ -0,0 +1,81 @@ +name: Deploy to Mainnets + +on: + workflow_dispatch: + inputs: + release_version: + description: 'Protocol release version (test/master/v1/etc.)' + required: true + default: 'v1' + only_network: + description: 'Only a specific network is to be deployed' + required: false + environments: + description: 'Additional env vars, separated by semicolons' + required: false + +jobs: + + deploy-to-mainnets: + name: Deploy to mainnets + + runs-on: ubuntu-latest + + env: + RELEASE_VERSION: ${{ github.event.inputs.release_version }} + DEFAULT_MNEMONIC: ${{ secrets.BUILD_AGENT_MNEMONIC }} + # network web3 providers + XDAI_MAINNET_PROVIDER_URL: ${{ secrets.XDAI_MAINNET_PROVIDER_URL }} + POLYGON_MAINNET_PROVIDER_URL: ${{ secrets.POLYGON_MAINNET_PROVIDER_URL }} + OPTIMISM_MAINNET_PROVIDER_URL: ${{ secrets.OPTIMISM_MAINNET_PROVIDER_URL }} + ARBITRUM_ONE_PROVIDER_URL: ${{ secrets.ARBITRUM_ONE_PROVIDER_URL }} + AVALANCHE_C_PROVIDER_URL: ${{ secrets.AVALANCHE_C_PROVIDER_URL }} + BSC_MAINNET_PROVIDER_URL: ${{ secrets.BSC_MAINNET_PROVIDER_URL }} + + strategy: + fail-fast: false + matrix: + network: [xdai-mainnet, polygon-mainnet, optimism-mainnet, arbitrum-one, avalanche-c, bsc-mainnet] + + steps: + - uses: actions/checkout@v3 + + # if only_network is set, skip all steps until the value matches one of the entries in matrix.network + - name: Check only_network + if: ${{ github.event.inputs.only_network != '' && github.event.inputs.only_network != matrix.network }} + run: echo "DO_SKIP=1" >> $GITHUB_ENV + + - name: Use Node.js 16.x + if: env.DO_SKIP != 1 + uses: actions/setup-node@v1 + with: + node-version: 16.x + + - name: Build + if: env.DO_SKIP != 1 + run: | + yarn install --frozen-lockfile + yarn build-for-contracts-dev + + - name: Build and deploy to ${{ matrix.network }} + if: env.DO_SKIP != 1 + run: | + cd packages/ethereum-contracts + echo "${{ github.event.inputs.environments }}" | sed 's/;/\n/' > .env + npx truffle exec --network ${{ matrix.network }} scripts/deploy-framework.js + env: + GOVERNANCE_ADMIN_TYPE: MULTISIG + + - name: Etherscan verification of ${{ matrix.network }} deployment + if: env.DO_SKIP != 1 + run: | + cd packages/ethereum-contracts + npx truffle exec --network ${{ matrix.network }} scripts/info-print-contract-addresses.js : addresses.vars + tasks/etherscan-verify-framework.sh ${{ matrix.network }} addresses.vars + env: + ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} + POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }} + SNOWTRACE_API_KEY: ${{ secrets.SNOWTRACE_API_KEY }} + OPTIMISTIC_API_KEY: ${{ secrets.OPTIMISTIC_API_KEY }} + ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }} + BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }} diff --git a/.github/workflows/handler.run-ethereum-contracts-script.yml b/.github/workflows/handler.run-ethereum-contracts-script.yml index bc8662c5cc..8ca4e93bb3 100644 --- a/.github/workflows/handler.run-ethereum-contracts-script.yml +++ b/.github/workflows/handler.run-ethereum-contracts-script.yml @@ -76,3 +76,4 @@ jobs: OPTIMISM_MAINNET_PROVIDER_URL: ${{ secrets.OPTIMISM_MAINNET_PROVIDER_URL }} ARBITRUM_ONE_PROVIDER_URL: ${{ secrets.ARBITRUM_ONE_PROVIDER_URL }} AVALANCHE_C_PROVIDER_URL: ${{ secrets.AVALANCHE_C_PROVIDER_URL }} + BSC_MAINNET_PROVIDER_URL: ${{ secrets.BSC_MAINNET_PROVIDER_URL }} diff --git a/.github/workflows/handler.verify-contracts.yml b/.github/workflows/handler.verify-contracts.yml new file mode 100644 index 0000000000..7319567bd4 --- /dev/null +++ b/.github/workflows/handler.verify-contracts.yml @@ -0,0 +1,60 @@ +name: Verify on Etherscan + +on: + workflow_dispatch: + inputs: + release_version: + description: 'Protocol release version (test/master/v1/etc.)' + required: true + default: 'test' + only_network: + description: 'Only a specific network is to be verified' + required: false + +jobs: + + verify-on-etherscan: + name: Verify on Etherscan + + runs-on: ubuntu-latest + + env: + RELEASE_VERSION: ${{ github.event.inputs.release_version }} + + strategy: + fail-fast: false + matrix: + network: [eth-goerli, eth-rinkeby, eth-ropsten, eth-kovan, polygon-mumbai, optimism-kovan, arbitrum-rinkeby, avalanche-fuji, polygon-mainnet, optimism-mainnet, arbitrum-one, avalanche-c, bsc-mainnet] + + steps: + - uses: actions/checkout@v3 + + - name: Check only_network + if: ${{ github.event.inputs.only_network != '' && github.event.inputs.only_network != matrix.network }} + run: echo "DO_SKIP=1" >> $GITHUB_ENV + + - name: Use Node.js 16.x + if: env.DO_SKIP != 1 + uses: actions/setup-node@v1 + with: + node-version: 16.x + + - name: Build + if: env.DO_SKIP != 1 + run: | + yarn install --frozen-lockfile + yarn build-for-contracts-dev + + - name: Etherscan verification of ${{ matrix.network }} deployment + if: env.DO_SKIP != 1 + run: | + cd packages/ethereum-contracts + npx truffle exec --network ${{ matrix.network }} scripts/info-print-contract-addresses.js : addresses.vars + tasks/etherscan-verify-framework.sh ${{ matrix.network }} addresses.vars + env: + ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} + POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }} + SNOWTRACE_API_KEY: ${{ secrets.SNOWTRACE_API_KEY }} + OPTIMISTIC_API_KEY: ${{ secrets.OPTIMISTIC_API_KEY }} + ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }} + BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }} diff --git a/packages/ethereum-contracts/hardhat.config.ts b/packages/ethereum-contracts/hardhat.config.ts index ba4c66b10b..d23dea6def 100644 --- a/packages/ethereum-contracts/hardhat.config.ts +++ b/packages/ethereum-contracts/hardhat.config.ts @@ -47,17 +47,24 @@ const chainIds = { "avalanche-c": 43114, "avalanche-fuji": 43113, + "bsc-mainnet": 56, + localhost: 1337, hardhat: 31337, }; + function createNetworkConfig( network: keyof typeof chainIds ): NetworkUserConfig { return { - accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], + accounts: + process.env.PRIVATE_KEY !== undefined + ? [process.env.PRIVATE_KEY] + : [], chainId: chainIds[network], }; } + const config: HardhatUserConfig = { solidity: { version: "0.8.13", @@ -81,6 +88,10 @@ const config: HardhatUserConfig = { ...createNetworkConfig("eth-rinkeby"), url: process.env.RINKEBY_PROVIDER_URL || "", }, + "bsc-mainnet": { + ...createNetworkConfig("bsc-mainnet"), + url: process.env.BSC_PROVIDER_URL || "", + }, "eth-goerli": { ...createNetworkConfig("eth-goerli"), url: process.env.GOERLI_PROVIDER_URL || "", diff --git a/packages/ethereum-contracts/package.json b/packages/ethereum-contracts/package.json index cd8da84b81..7cca521d4e 100644 --- a/packages/ethereum-contracts/package.json +++ b/packages/ethereum-contracts/package.json @@ -57,7 +57,7 @@ "dependencies": { "@decentral.ee/web3-helpers": "0.5.3", "@openzeppelin/contracts": "4.5.0", - "@superfluid-finance/js-sdk": "0.6.1", + "@superfluid-finance/js-sdk": "0.6.2", "@truffle/contract": "4.5.5", "ethereumjs-tx": "2.1.2", "ethereumjs-util": "7.1.4", diff --git a/packages/ethereum-contracts/scripts/libs/getConfig.js b/packages/ethereum-contracts/scripts/libs/getConfig.js index c53959607a..f18cbac71c 100644 --- a/packages/ethereum-contracts/scripts/libs/getConfig.js +++ b/packages/ethereum-contracts/scripts/libs/getConfig.js @@ -104,7 +104,7 @@ module.exports = function getConfig(chainId) { // misc disableTestGovernance: true, data: { - initialBlockNumber: 5000000, + initialBlockNumber: 18800000, getLogsRange: 5000, }, }, diff --git a/packages/ethereum-contracts/tasks/etherscan-verify-framework.sh b/packages/ethereum-contracts/tasks/etherscan-verify-framework.sh index 84dcf35803..26879c50d6 100644 --- a/packages/ethereum-contracts/tasks/etherscan-verify-framework.sh +++ b/packages/ethereum-contracts/tasks/etherscan-verify-framework.sh @@ -19,7 +19,7 @@ case $TRUFFLE_NETWORK in optimism-mainnet | \ arbitrum-one | \ avalanche-c | \ - bsc ) + bsc-mainnet ) echo "$TRUFFLE_NETWORK is mainnet" IS_TESTNET= ;; diff --git a/packages/ethereum-contracts/utils/README.md b/packages/ethereum-contracts/utils/README.md index 7f621e680b..60ecea063d 100644 --- a/packages/ethereum-contracts/utils/README.md +++ b/packages/ethereum-contracts/utils/README.md @@ -8,7 +8,7 @@ python -m SimpleHTTPServer 1337 ``` Then navigate to http://localhost:1337/supertoken-deployer.html -Alternatively, you can also find it on IPFS: [QmbjeSLXfmePAnWRBhkhajCpdu58Xsn7BqQwj8pSxRS9d8](http://ipfs.io/ipfs/QmbjeSLXfmePAnWRBhkhajCpdu58Xsn7BqQwj8pSxRS9d8) +Alternatively, you can also find it on IPFS: [QmbjeSLXfmePAnWRBhkhajCpdu58Xsn7BqQwj8pSxRS9d8](https://ipfs.io/ipfs/QmaCBCARcUthLcG1sNYC8SAE7okuDUZqbythvWuYozBpgC) ## Stream Closer @@ -21,7 +21,7 @@ python -m SimpleHTTPServer 1337 Then navigate to http://localhost:1337/stream-closer.html -Alternatively, you can also find it on IPFS: [QmRJmHatYiGgGsXYCsYZdqPMx4dd2qbMskMJvXGWZ53oJJ](http://ipfs.io/ipfs/QmRJmHatYiGgGsXYCsYZdqPMx4dd2qbMskMJvXGWZ53oJJ) +Alternatively, you can also find it on IPFS: [QmRJmHatYiGgGsXYCsYZdqPMx4dd2qbMskMJvXGWZ53oJJ](https://ipfs.io/ipfs/QmVQ4B9MyEpr3i39XiEZ4qefuqMKv5HnfLPPB42r19mhEi) In order to set the parameter in the URL, use this format: stream-closer.html?chainId=&token=&sender=&receiver= diff --git a/packages/ethereum-contracts/utils/stream-closer.html b/packages/ethereum-contracts/utils/stream-closer.html index 2d7af044d9..92c45d1a15 100644 --- a/packages/ethereum-contracts/utils/stream-closer.html +++ b/packages/ethereum-contracts/utils/stream-closer.html @@ -68,7 +68,8 @@ { chainId: 100, hostAddr: "0x2dFe937cD98Ab92e59cF3139138f18c823a4efE7" }, // xdai-mainnet { chainId: 10, hostAddr: "0x567c4B141ED61923967cA25Ef4906C8781069a10" }, // optimism-mainnnet { chainId: 42161, hostAddr: "0xCf8Acb4eF033efF16E8080aed4c7D5B9285D2192" }, // arbitrum-one - { chainId: 43114, hostAddr: "0x60377C7016E4cdB03C87EF474896C11cB560752C" } // avalanche-c + { chainId: 43114, hostAddr: "0x60377C7016E4cdB03C87EF474896C11cB560752C" }, // avalanche-c + { chainId: 56, hostAddr: "0xd1e2cFb6441680002Eb7A44223160aB9B67d7E6E" } // bsc-mainnet ]; // pre-fill input fields from query params if present diff --git a/packages/ethereum-contracts/utils/supertoken-deployer.html b/packages/ethereum-contracts/utils/supertoken-deployer.html index c1a233b7ac..58d637d12c 100644 --- a/packages/ethereum-contracts/utils/supertoken-deployer.html +++ b/packages/ethereum-contracts/utils/supertoken-deployer.html @@ -66,7 +66,8 @@ { chainId: 100, hostAddr: "0x2dFe937cD98Ab92e59cF3139138f18c823a4efE7" }, // xdai-mainnet { chainId: 10, hostAddr: "0x567c4B141ED61923967cA25Ef4906C8781069a10" }, // optimism-mainnnet { chainId: 42161, hostAddr: "0xCf8Acb4eF033efF16E8080aed4c7D5B9285D2192" }, // arbitrum-one - { chainId: 43114, hostAddr: "0x60377C7016E4cdB03C87EF474896C11cB560752C" } // avalanche-c + { chainId: 43114, hostAddr: "0x60377C7016E4cdB03C87EF474896C11cB560752C" }, // avalanche-c + { chainId: 56, hostAddr: "0xd1e2cFb6441680002Eb7A44223160aB9B67d7E6E" } // bsc-mainnet ]; let connData = {}; // chainId, provider, userAddress, ... diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index b0913cea70..63fb720ddf 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@superfluid-finance/js-sdk", - "version": "0.6.1", + "version": "0.6.2", "description": "Javascript SDK for building with Superfluid Protocol", "homepage": "https://github.com/superfluid-finance/protocol-monorepo/tree/dev/packages/js-sdk#readme", "repository": { diff --git a/packages/js-sdk/src/getConfig.js b/packages/js-sdk/src/getConfig.js index 3b4f30d8eb..30bcefdb75 100644 --- a/packages/js-sdk/src/getConfig.js +++ b/packages/js-sdk/src/getConfig.js @@ -199,6 +199,24 @@ Superfluid_getConfig = module.exports = function getConfig(chainId, version) { }, }, + // + // Binance Smart Chain (BSC): https://docs.binance.org/ + // + 56: { + nativeTokenSymbol: "BNB", + resolverAddress: "0x69604aA4e9e8BF44A73C680997205Edb03A92E41", + versions: { + v1: { + subgraphQueryEndpoint: + "https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-v1-bsc-mainnet", + }, + }, + }, + 97: { + // BSC chapel testnet + nativeTokenSymbol: "BNB", + }, + // // Celo: https://github.com/celo-org/celo-monorepo#docs // diff --git a/packages/sdk-core/CHANGELOG.md b/packages/sdk-core/CHANGELOG.md index 6021454309..12e417c317 100644 --- a/packages/sdk-core/CHANGELOG.md +++ b/packages/sdk-core/CHANGELOG.md @@ -5,10 +5,18 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] -## [0.4.3] - 2022-05-31 - ### Breaking - Subgraph Query: `rewardAccount` renamed to `rewardAmountReceiver` on `AgreementLiquidatedV2Event` entity +- `chainId` is a required property for framework initialization +- `networkId` and `dataMode` no longer exist as properties for framework initialization + +## [0.4.3] - 2022-06-29 + +### Added +- BNB Chain support added + +## [0.4.2] - 2022-05-17 + ### Added - `QueryHandler` for transfer events diff --git a/packages/sdk-core/hardhat.config.ts b/packages/sdk-core/hardhat.config.ts index a9ce952d8a..dba5afe646 100644 --- a/packages/sdk-core/hardhat.config.ts +++ b/packages/sdk-core/hardhat.config.ts @@ -31,6 +31,11 @@ const config: HardhatUserConfig = { url: process.env.MATIC_PROVIDER_URL || "", chainId: 137, }, + bsc: { + url: process.env.BSC_PROVIDER_URL || "", + accounts: process.env.TEST_PRIVATE_KEY ? [process.env.TEST_PRIVATE_KEY || ""] : [], + chainId: 56 + } }, mocha: { timeout: 250000, diff --git a/packages/sdk-core/src/constants.ts b/packages/sdk-core/src/constants.ts index d7653a9608..11e5b4cbc7 100644 --- a/packages/sdk-core/src/constants.ts +++ b/packages/sdk-core/src/constants.ts @@ -35,6 +35,8 @@ export const ARBITRUM_RINKEBY = "arbitrum-rinkeby"; export const AVALANCHE_C = "avalanche-c"; export const AVALANCHE_FUJI = "avalanche-fuji"; +export const BSC_MAINNET = "bsc-mainnet"; + export const networkNames: string[] = [ ETH_ROPSTEN, ETH_RINKEBY, @@ -54,6 +56,8 @@ export const networkNames: string[] = [ AVALANCHE_C, AVALANCHE_FUJI, + + BSC_MAINNET, ]; /******* CHAIN IDS *******/ @@ -76,6 +80,8 @@ export const ARBITRUM_RINKEBY_CHAIN_ID = 421611; export const AVALANCHE_FUJI_CHAIN_ID = 43113; export const AVALANCHE_C_CHAIN_ID = 43114; +export const BSC_MAINNET_CHAIN_ID = 56; + export const chainIds = [ ETH_ROPSTEN_CHAIN_ID, // ROPSTEN ETH_RINKEBY_CHAIN_ID, // RINKEBY @@ -95,6 +101,8 @@ export const chainIds = [ AVALANCHE_FUJI_CHAIN_ID, // AVALANCHE FUJI AVALANCHE_C_CHAIN_ID, // AVALANCHE C-CHAIN + + BSC_MAINNET_CHAIN_ID, // BNB MAINNET ]; /******* ACL AUTHORIZATION BIT OPERATIONS *******/ @@ -109,11 +117,13 @@ export const AUTHORIZE_FULL_CONTROL = const subgraphReleaseTag = process.env.SUBGRAPH_RELEASE_TAG || DefaultSubgraphReleaseTag.value; +const baseUrl = `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}`; + export const chainIdToResolverDataMap = new Map([ [ ETH_ROPSTEN_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-ropsten`, + subgraphAPIEndpoint: `${baseUrl}-ropsten`, networkName: ETH_ROPSTEN, resolverAddress: "0x3b44e06D96BcA9412CBc23F80F41B9e30933571a", nativeTokenSymbol: "ETH", @@ -122,7 +132,7 @@ export const chainIdToResolverDataMap = new Map([ [ ETH_RINKEBY_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-rinkeby`, + subgraphAPIEndpoint: `${baseUrl}-rinkeby`, networkName: ETH_RINKEBY, resolverAddress: "0x659635Fab0A0cef1293f7eb3c7934542B6A6B31A", nativeTokenSymbol: "ETH", @@ -131,7 +141,7 @@ export const chainIdToResolverDataMap = new Map([ [ ETH_GOERLI_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-goerli`, + subgraphAPIEndpoint: `${baseUrl}-goerli`, networkName: ETH_GOERLI, resolverAddress: "0x3710AB3fDE2B61736B8BB0CE845D6c61F667a78E", nativeTokenSymbol: "ETH", @@ -140,7 +150,7 @@ export const chainIdToResolverDataMap = new Map([ [ OPTIMISM_MAINNET_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-optimism-mainnet`, + subgraphAPIEndpoint: `${baseUrl}-optimism-mainnet`, networkName: OPTIMISM_MAINNET, resolverAddress: "0x743B5f46BC86caF41bE4956d9275721E0531B186", nativeTokenSymbol: "ETH", @@ -149,7 +159,7 @@ export const chainIdToResolverDataMap = new Map([ [ ETH_KOVAN_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-kovan`, + subgraphAPIEndpoint: `${baseUrl}-kovan`, networkName: ETH_KOVAN, resolverAddress: "0x851d3dd9dc97c1df1DA73467449B3893fc76D85B", nativeTokenSymbol: "ETH", @@ -158,7 +168,7 @@ export const chainIdToResolverDataMap = new Map([ [ OPTIMISM_KOVAN_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-optimism-kovan`, + subgraphAPIEndpoint: `${baseUrl}-optimism-kovan`, networkName: OPTIMISM_KOVAN, resolverAddress: "0x218B65780615Ff134f9Ad810CB98839534D3C0D6", nativeTokenSymbol: "ETH", @@ -167,7 +177,7 @@ export const chainIdToResolverDataMap = new Map([ [ GNOSIS_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-xdai`, + subgraphAPIEndpoint: `${baseUrl}-xdai`, networkName: XDAI_MAINNET, resolverAddress: "0xD2009765189164b495c110D61e4D301729079911", nativeTokenSymbol: "xDAI", @@ -176,7 +186,7 @@ export const chainIdToResolverDataMap = new Map([ [ MATIC_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-matic`, + subgraphAPIEndpoint: `${baseUrl}-matic`, networkName: POLYGON_MAINNET, resolverAddress: "0xE0cc76334405EE8b39213E620587d815967af39C", nativeTokenSymbol: "MATIC", @@ -185,7 +195,7 @@ export const chainIdToResolverDataMap = new Map([ [ ARBITRUM_ONE_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-arbitrum-one`, + subgraphAPIEndpoint: `${baseUrl}-arbitrum-one`, networkName: ARBITRUM_ONE, resolverAddress: "0x609b9d9d6Ee9C3200745A79B9d3398DBd63d509F", nativeTokenSymbol: "ETH", @@ -194,7 +204,7 @@ export const chainIdToResolverDataMap = new Map([ [ AVALANCHE_FUJI_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-avalanche-fuji`, + subgraphAPIEndpoint: `${baseUrl}-avalanche-fuji`, networkName: AVALANCHE_FUJI, resolverAddress: "0x141920741bC45b962B59c833cd849bA617F7ef38", nativeTokenSymbol: "AVAX", @@ -203,16 +213,25 @@ export const chainIdToResolverDataMap = new Map([ [ AVALANCHE_C_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-avalanche-c`, + subgraphAPIEndpoint: `${baseUrl}-avalanche-c`, networkName: AVALANCHE_C, resolverAddress: "0x24a3F04F70B7f07B9673EadD3e146391BcfEa5c1", nativeTokenSymbol: "AVAX", }, ], + [ + BSC_MAINNET_CHAIN_ID, + { + subgraphAPIEndpoint: `${baseUrl}-bsc-mainnet`, + networkName: BSC_MAINNET, + resolverAddress: "0x69604aA4e9e8BF44A73C680997205Edb03A92E41", + nativeTokenSymbol: "BNB", + }, + ], [ MUMBAI_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-mumbai`, + subgraphAPIEndpoint: `${baseUrl}-mumbai`, networkName: POLYGON_MUMBAI, resolverAddress: "0x8C54C83FbDe3C59e59dd6E324531FB93d4F504d3", nativeTokenSymbol: "MATIC", @@ -221,7 +240,7 @@ export const chainIdToResolverDataMap = new Map([ [ ARBITRUM_RINKEBY_CHAIN_ID, { - subgraphAPIEndpoint: `https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-${subgraphReleaseTag}-arbitrum-rinkeby`, + subgraphAPIEndpoint: `${baseUrl}-arbitrum-rinkeby`, networkName: ARBITRUM_RINKEBY, resolverAddress: "0xa2C0C70A1E922f5f060ec20EE3aF002C163b4567", nativeTokenSymbol: "ETH", @@ -248,4 +267,6 @@ export const networkNameToChainIdMap = new Map([ [AVALANCHE_C, AVALANCHE_C_CHAIN_ID], [AVALANCHE_FUJI, AVALANCHE_FUJI_CHAIN_ID], + + [BSC_MAINNET, BSC_MAINNET_CHAIN_ID], ]); diff --git a/packages/subgraph/README.md b/packages/subgraph/README.md index fdfd07f3b4..de0f639c20 100644 --- a/packages/subgraph/README.md +++ b/packages/subgraph/README.md @@ -35,6 +35,7 @@ All subgraphs are available via The Graph's hosted service: | Optimism Mainnet| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-v1-optimism-mainnet | | Arbitrum One| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-v1-arbitrum-one | | Avalanche C-Chain| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-v1-avalanche-c | +| BNB Chain| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-v1-bsc-mainnet | | Goerli| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-v1-goerli | | Ropsten | https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-v1-ropsten | | Kovan | https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-v1-kovan | @@ -52,6 +53,7 @@ All subgraphs are available via The Graph's hosted service: | Optimism Mainnet| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-dev-optimism-mainnet | | Arbitrum One| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-dev-arbitrum-one | | Avalanche C-Chain| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-dev-avalanche-c | +| BNB Chain| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-dev-bsc-mainnet | | Mumbai | https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-dev-mumbai | | Goerli| https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-dev-goerli | | Ropsten | https://thegraph.com/explorer/subgraph/superfluid-finance/protocol-dev-ropsten | diff --git a/packages/subgraph/config/bsc-mainnet.json b/packages/subgraph/config/bsc-mainnet.json new file mode 100644 index 0000000000..c83bd502a2 --- /dev/null +++ b/packages/subgraph/config/bsc-mainnet.json @@ -0,0 +1,10 @@ +{ + "network": "bsc", + "hostStartBlock": 18803461, + "hostAddress": "0xd1e2cFb6441680002Eb7A44223160aB9B67d7E6E", + "cfaAddress": "0x49c38108870e74Cb9420C0991a85D3edd6363F75", + "idaAddress": "0x594ed9Cd773584B645aC1F5B11020d3b32cDF07d", + "superTokenFactoryAddress": "0x8bde47397301F0Cd31b9000032fD517a39c946Eb", + "superfluidGovernanceAddress": "0xee07D9fce4Cf2a891BC979E9d365929506C2982f", + "resolverV1Address": "0x69604aA4e9e8BF44A73C680997205Edb03A92E41" +} \ No newline at end of file diff --git a/packages/subgraph/networks.json b/packages/subgraph/networks.json index 96a76e5a07..ca2ac6c9ff 100644 --- a/packages/subgraph/networks.json +++ b/packages/subgraph/networks.json @@ -11,5 +11,6 @@ "mumbai", "arbitrum-rinkeby", "optimism-kovan", - "avalanche-fuji" + "avalanche-fuji", + "bsc-mainnet" ] diff --git a/packages/subgraph/package.json b/packages/subgraph/package.json index d5f9a9585f..7e614230bd 100644 --- a/packages/subgraph/package.json +++ b/packages/subgraph/package.json @@ -1,6 +1,6 @@ { "name": "@superfluid-finance/subgraph", - "version": "1.4.1", + "version": "1.4.2", "description": "Subgraph for the Superfluid Ethereum contracts.", "homepage": "https://github.com/superfluid-finance/protocol-monorepo/tree/dev/packages/subgraph", "repository": { diff --git a/packages/subgraph/src/addresses.template.ts b/packages/subgraph/src/addresses.template.ts index 183a2fa48f..0f597fdce8 100644 --- a/packages/subgraph/src/addresses.template.ts +++ b/packages/subgraph/src/addresses.template.ts @@ -49,6 +49,9 @@ export function getHostAddress(): Address { if (network == "optimism") { address = "0x567c4B141ED61923967cA25Ef4906C8781069a10"; } + if (network == "bsc") { + address = "0xd1e2cFb6441680002Eb7A44223160aB9B67d7E6E"; + } return Address.fromString(address); } @@ -97,5 +100,8 @@ export function getResolverAddress(): Address { if (network == "optimism") { address = "0x743B5f46BC86caF41bE4956d9275721E0531B186"; } + if (network == "bsc") { + address = "0x69604aA4e9e8BF44A73C680997205Edb03A92E41"; + } return Address.fromString(address); }