Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Early Access #1

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
deploy script
zhoujia6139 committed Jan 8, 2024
commit e19769de8aae11c00f97abc0f9e53119e45a72c7
4 changes: 4 additions & 0 deletions contracts/superbridge/ParallelVault.sol
Original file line number Diff line number Diff line change
@@ -89,6 +89,10 @@ contract ParallelVault is
__Ownable_init(_owner);
__ReentrancyGuard_init();
__ERC4626_init(IERC20(token_));

debtRatio = MAX_BPS;
//4 hours
rebalanceingDelay = 14400;
}

function setDebtRatio(uint256 debtRatio_) external onlyOwner {
88 changes: 88 additions & 0 deletions hardhat-constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import { config as dotenvConfig } from "dotenv";

export const INFURA_KEY = process.env.INFURA_KEY || "";
export const ALCHEMY_KEY = process.env.ALCHEMY_KEY || "";


export const ETHERSCAN_KEY = process.env.ETHERSCAN_KEY || "";
export const GOERLI_ETHERSCAN_KEY =
process.env.GOERLI_ETHERSCAN_KEY || ETHERSCAN_KEY;
export const ARBITRUM_ETHERSCAN_KEY =
process.env.ARBITRUM_ETHERSCAN_KEY || ETHERSCAN_KEY;
export const ARBITRUM_GOERLI_ETHERSCAN_KEY =
process.env.ARBITRUM_GOERLI_ETHERSCAN_KEY || ARBITRUM_ETHERSCAN_KEY;
export const POLYGON_ETHERSCAN_KEY =
process.env.POLYGON_ETHERSCAN_KEY || ETHERSCAN_KEY;
export const POLYGON_MUMBAI_ETHERSCAN_KEY =
process.env.POLYGON_MUMBAI_ETHERSCAN_KEY || POLYGON_ETHERSCAN_KEY;
export const POLYGON_ZKEVM_ETHERSCAN_KEY =
process.env.POLYGON_ZKEVM_ETHERSCAN_KEY || POLYGON_ETHERSCAN_KEY;
export const POLYGON_ZKEVM_GOERLI_ETHERSCAN_KEY =
process.env.POLYGON_ZKEVM_GOERLI_ETHERSCAN_KEY || POLYGON_ZKEVM_ETHERSCAN_KEY;
export const MOONBEAM_ETHERSCAN_KEY =
process.env.MOONBEAM_ETHERSCAN_KEY || ETHERSCAN_KEY;
export const MOONBASE_ETHERSCAN_KEY =
process.env.MOONBASE_ETHERSCAN_KEY || MOONBEAM_ETHERSCAN_KEY;
export const LINEA_ETHERSCAN_KEY =
process.env.LINEA_ETHERSCAN_KEY || ETHERSCAN_KEY;
export const LINEA_GOERLI_ETHERSCAN_KEY =
process.env.LINEA_GOERLI_ETHERSCAN_KEY || LINEA_ETHERSCAN_KEY;

export const CHAIN_ID = {
hardhat: 31337,
mainnet: 1,
sepolia: 11155111,
arbitrum: 42161,
arbitrumSepolia: 421614,
}

export const ETHERSCAN_APIS = {
localhost: "http://localhost:4000/api",
mainnet: "https://api.etherscan.io/api",
goerli: "https://api-goerli.etherscan.io/api",
arbitrum: "https://api.arbiscan.io/api",
arbitrumGoerli: "https://api-goerli.arbiscan.io/api",
polygon: "https://api.polygonscan.com/api",
matic: "https://api.polygonscan.com/api",
polygonMumbai: "https://api-mumbai.polygonscan.com/api",
polygonZkevm: "https://api-zkevm.polygonscan.com/api",
polygonZkevmGoerli: "https://api-testnet-zkevm.polygonscan.com/api",
zksync: "https://zksync2-mainnet-explorer.zksync.io/contract_verification",
zksyncGoerli:
"https://zksync2-testnet-explorer.zksync.dev/contract_verification",
moonbeam: "https://api-moonbeam.moonscan.io/api",
moonbase: "https://api-moonbase.moonscan.io/api",
linea: "http://explorer.linea.build/api",
lineaGoerli: "https://explorer.goerli.linea.build/api",
};
export const BROWSER_URLS = {
localhost: "http://localhost:4000",
mainnet: "https://etherscan.io",
goerli: "https://goerli.etherscan.io",
arbitrum: "https://arbiscan.io",
arbitrumGoerli: "https://goerli.arbiscan.io",
polygonZkevm: "https://zkevm.polygonscan.com",
polygonZkevmGoerli: "https://testnet-zkevm.polygonscan.com",
polygon: "https://polygonscan.com",
matic: "https://polygonscan.com",
polygonMumbai: "https://mumbai.polygonscan.com",
zksync: "https://zksync2-mainnet-explorer.zksync.io",
zksyncGoerli: "https://zksync2-testnet-explorer.zksync.dev",
moonbeam: "https://moonscan.io",
moonbase: "https://moonbase.moonscan.io",
linea: "https://explorer.linea.build",
lineaGoerli: "https://explorer.goerli.linea.build",
};

export const NETWORKS_RPC_URL = {
mainnet:
(ALCHEMY_KEY
? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}`
: `https://mainnet.infura.io/v3/${INFURA_KEY}`),
sepolia:
(ALCHEMY_KEY
? `https://eth-sepolia.alchemyapi.io/v2/${ALCHEMY_KEY}`
: `https://sepolia.infura.io/v3/${INFURA_KEY}`),
arbitrum:`https://arb-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY}`,
arbitrumSepolia:`https://arb-sepolia.g.alchemy.com/v2/${ALCHEMY_KEY}`,
};
102 changes: 36 additions & 66 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
@@ -15,12 +15,17 @@ import type {
import { resolve } from "path";
import fs from "fs";

import {eEthereumNetwork} from "./src";
import {
ChainSlugToId,
HardhatChainName,
hardhatChainNameToSlug,
} from "@socket.tech/dl-core";
import { getJsonRpcUrl } from "./script/helpers/networks";
ARBITRUM_ETHERSCAN_KEY,
ARBITRUM_GOERLI_ETHERSCAN_KEY,
BROWSER_URLS,
CHAIN_ID,
ETHERSCAN_APIS,
ETHERSCAN_KEY,
GOERLI_ETHERSCAN_KEY,
NETWORKS_RPC_URL
} from "./hardhat-constants";

const dotenvConfigPath: string = process.env.DOTENV_CONFIG_PATH || "./.env";
dotenvConfig({ path: resolve(__dirname, dotenvConfigPath) });
@@ -30,11 +35,11 @@ if (!process.env.SOCKET_SIGNER_KEY) throw new Error("No private key found");
const privateKey: HardhatNetworkAccountUserConfig = process.env
.SOCKET_SIGNER_KEY as unknown as HardhatNetworkAccountUserConfig;

function getChainConfig(chain: HardhatChainName): NetworkUserConfig {
function getChainConfig(network: eEthereumNetwork): NetworkUserConfig {
return {
accounts: [`0x${privateKey}`],
chainId: ChainSlugToId[hardhatChainNameToSlug[chain]],
url: getJsonRpcUrl(hardhatChainNameToSlug[chain]),
chainId: CHAIN_ID[network],
url: NETWORKS_RPC_URL[network],
};
}

@@ -46,9 +51,6 @@ function getRemappings() {
.map((line) => line.trim().split("="));
}

let liveNetworks = {};
liveNetworks = {};

const config: HardhatUserConfig = {
defaultNetwork: "hardhat",
abiExporter: {
@@ -57,68 +59,36 @@ const config: HardhatUserConfig = {
},
etherscan: {
apiKey: {
arbitrumOne: process.env.ARBISCAN_API_KEY || "",
arbitrumTestnet: process.env.ARBISCAN_API_KEY || "",
arbitrumSepolia: process.env.ARBISCAN_API_KEY || "",
bsc: process.env.BSCSCAN_API_KEY || "",
bscTestnet: process.env.BSCSCAN_API_KEY || "",
goerli: process.env.ETHERSCAN_API_KEY || "",
mainnet: process.env.ETHERSCAN_API_KEY || "",
sepolia: process.env.ETHERSCAN_API_KEY || "",
optimisticEthereum: process.env.OPTIMISM_API_KEY || "",
optimisticTestnet: process.env.OPTIMISM_API_KEY || "",
optimisticSepolia: process.env.OPTIMISM_API_KEY || "",
polygon: process.env.POLYGONSCAN_API_KEY || "",
polygonMumbai: process.env.POLYGONSCAN_API_KEY || "",
localhost: ETHERSCAN_KEY,
mainnet: ETHERSCAN_KEY,
goerli: GOERLI_ETHERSCAN_KEY,
arbitrum: ARBITRUM_ETHERSCAN_KEY,
arbitrumGoerli: ARBITRUM_GOERLI_ETHERSCAN_KEY,
},
customChains: [
{
network: "optimisticTestnet",
chainId: hardhatChainNameToSlug[HardhatChainName.OPTIMISM_GOERLI],
urls: {
apiURL: "https://api-goerli-optimistic.etherscan.io/api",
browserURL: "https://goerli-optimism.etherscan.io/",
},
},
{
network: "optimisticSepolia",
chainId: hardhatChainNameToSlug[HardhatChainName.OPTIMISM_SEPOLIA],
urls: {
apiURL: "https://api-sepolia-optimistic.etherscan.io/api",
browserURL: "https://sepolia-optimism.etherscan.io/",
},
},
{
network: "arbitrumTestnet",
chainId: hardhatChainNameToSlug[HardhatChainName.ARBITRUM_GOERLI],
urls: {
apiURL: "https://api-goerli.arbiscan.io/api",
browserURL: "https://goerli.arbiscan.io/",
},
},
{
network: "arbitrumSepolia",
chainId: hardhatChainNameToSlug[HardhatChainName.ARBITRUM_SEPOLIA],
urls: {
apiURL: "https://api-sepolia.arbiscan.io/api",
browserURL: "https://sepolia.arbiscan.io/",
},
eEthereumNetwork.mainnet,
eEthereumNetwork.sepolia,
eEthereumNetwork.arbitrum,
eEthereumNetwork.arbitrumSepolia,
].map((network) => ({
network,
chainId: CHAIN_ID[network]!,
urls: {
apiURL: ETHERSCAN_APIS[network],
browserURL: BROWSER_URLS[network],
},
],
})),
},
networks: {
hardhat: {
chainId: hardhatChainNameToSlug.hardhat,
[eEthereumNetwork.hardhat]: {
chainId: CHAIN_ID[eEthereumNetwork.hardhat],
},
[HardhatChainName.ARBITRUM_SEPOLIA]: getChainConfig(
HardhatChainName.ARBITRUM_SEPOLIA
[eEthereumNetwork.mainnet]: getChainConfig(eEthereumNetwork.mainnet),
[eEthereumNetwork.sepolia]: getChainConfig(eEthereumNetwork.sepolia),
[eEthereumNetwork.arbitrum]: getChainConfig(eEthereumNetwork.arbitrum),
[eEthereumNetwork.arbitrumSepolia]: getChainConfig(
eEthereumNetwork.arbitrumSepolia
),
[HardhatChainName.ARBITRUM]: getChainConfig(HardhatChainName.ARBITRUM),
[HardhatChainName.MAINNET]: getChainConfig(HardhatChainName.MAINNET),
[HardhatChainName.SEPOLIA]: getChainConfig(HardhatChainName.SEPOLIA),
// [HardhatChainName.MODE_TESTNET]: getChainConfig(
// HardhatChainName.MODE_TESTNET
// ),
},
paths: {
sources: "./contracts",
Loading