Skip to content

Commit

Permalink
BNB Support added (#927)
Browse files Browse the repository at this point in the history
* BNB Chain Support (#925)

ethereum-contracts, js-sdk, sdk-core, subgraph

Co-authored-by: didi <git@d10r.net>

* bump subgraph version

Co-authored-by: didi <git@d10r.net>
  • Loading branch information
0xdavinchee and d10r authored Jun 29, 2022
1 parent 62b954f commit 79de119
Show file tree
Hide file tree
Showing 20 changed files with 252 additions and 26 deletions.
81 changes: 81 additions & 0 deletions .github/workflows/handler.deploy-to-mainnets.yml
Original file line number Diff line number Diff line change
@@ -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 }}
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
60 changes: 60 additions & 0 deletions .github/workflows/handler.verify-contracts.yml
Original file line number Diff line number Diff line change
@@ -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 }}
13 changes: 12 additions & 1 deletion packages/ethereum-contracts/hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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 || "",
Expand Down
2 changes: 1 addition & 1 deletion packages/ethereum-contracts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/ethereum-contracts/scripts/libs/getConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ module.exports = function getConfig(chainId) {
// misc
disableTestGovernance: true,
data: {
initialBlockNumber: 5000000,
initialBlockNumber: 18800000,
getLogsRange: 5000,
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ case $TRUFFLE_NETWORK in
optimism-mainnet | \
arbitrum-one | \
avalanche-c | \
bsc )
bsc-mainnet )
echo "$TRUFFLE_NETWORK is mainnet"
IS_TESTNET=
;;
Expand Down
4 changes: 2 additions & 2 deletions packages/ethereum-contracts/utils/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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=<chainId>&token=<tokenAddress>&sender=<senderAddress>&receiver=<receiverAddress>
3 changes: 2 additions & 1 deletion packages/ethereum-contracts/utils/stream-closer.html
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ <h3 id="loader" style="text-align: center; display: none;">Loading...</h3>
{ 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
Expand Down
3 changes: 2 additions & 1 deletion packages/ethereum-contracts/utils/supertoken-deployer.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ <h3 id="loader" style="text-align: center; display: none;">Loading...</h3>
{ 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, ...
Expand Down
2 changes: 1 addition & 1 deletion packages/js-sdk/package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
18 changes: 18 additions & 0 deletions packages/js-sdk/src/getConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
//
Expand Down
12 changes: 10 additions & 2 deletions packages/sdk-core/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 5 additions & 0 deletions packages/sdk-core/hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Loading

0 comments on commit 79de119

Please sign in to comment.