Add deployment script

This commit is contained in:
Mubaris NK 2021-03-15 17:56:22 +05:30
parent dfa6f83a82
commit 155a8d6e0e
No known key found for this signature in database
GPG Key ID: 9AC09AD0F8D68561
24 changed files with 1382 additions and 183 deletions

View File

@ -1,4 +1,5 @@
ETHERSCAN_API_KEY=""
PRIVATE_KEY=""
TENDERLY_PROJECT=""
TENDERLY_USERNAME=""
TENDERLY_USERNAME=""
ALCHEMY_ID=""

View File

@ -377,6 +377,6 @@ abstract contract OneInch is OneProto {
}
}
contract ConnectOne is OneInch {
contract ConnectV2OneInch is OneInch {
string public name = "1inch-1proto-v1";
}

View File

@ -86,6 +86,6 @@ abstract contract CompResolver is Events, Helpers {
}
}
contract ConnectCOMP is CompResolver {
contract ConnectV2COMP is CompResolver {
string public name = "COMP-v1";
}

View File

@ -154,6 +154,6 @@ abstract contract AaveResolver is Events, Helpers {
}
}
contract ConnectAave is AaveResolver {
contract ConnectV2AaveV1 is AaveResolver {
string public name = "Aave-v1.1";
}

View File

@ -178,6 +178,6 @@ abstract contract AaveResolver is Events, Helpers {
}
}
contract ConnectAave is AaveResolver {
contract ConnectV2AaveV2 is AaveResolver {
string public name = "AaveV2-v1.1";
}

View File

@ -33,6 +33,6 @@ abstract contract AuthorityResolver is Events, Helpers {
}
}
contract ConnectAuth is AuthorityResolver {
contract ConnectV2Auth is AuthorityResolver {
string public constant name = "Auth-v1";
}

View File

@ -69,6 +69,6 @@ abstract contract BasicResolver is Events, DSMath, Basic {
}
}
contract ConnectBasic is BasicResolver {
contract ConnectV2Basic is BasicResolver {
string public constant name = "Basic-v1.1";
}

View File

@ -24,6 +24,6 @@ abstract contract ChiResolver is Events, Helpers {
chi.free(_amt);
}
}
contract ConnectCHI is ChiResolver {
contract ConnectV2CHI is ChiResolver {
string public name = "CHI-v1";
}

View File

@ -245,6 +245,6 @@ abstract contract CompoundResolver is Events, Helpers {
}
}
contract ConnectCompound is CompoundResolver {
contract ConnectV2Compound is CompoundResolver {
string public name = "Compound-v1.3";
}

View File

@ -155,6 +155,6 @@ abstract contract DyDxResolver is Events, Helpers {
}
contract ConnectDydx is DyDxResolver {
contract ConnectV2Dydx is DyDxResolver {
string public name = "Dydx-v1";
}

View File

@ -33,6 +33,6 @@ abstract contract FlashLoanResolver is DSMath, Basic, Events {
}
}
contract ConnectDydxFlashLoan is FlashLoanResolver {
contract ConnectV2DydxFlashLoan is FlashLoanResolver {
string public constant name = "dydx-flashloan-v1";
}

View File

@ -25,6 +25,6 @@ abstract contract FeeResolver is DSMath, Basic {
}
}
contract ConnectFee is FeeResolver {
contract ConnectV2Fee is FeeResolver {
string public constant name = "Fee-v1";
}

View File

@ -162,6 +162,6 @@ abstract contract GelatoResolver is DSMath, Basic, Events {
}
contract ConnectGelato is GelatoResolver {
contract ConnectV2Gelato is GelatoResolver {
string public name = "Gelato-v1.0";
}

View File

@ -272,6 +272,6 @@ contract LiquidityAccessMulti is LiquidityAccess {
// }
}
contract ConnectInstaPool is LiquidityAccessMulti {
contract ConnectV2InstaPool is LiquidityAccessMulti {
string public name = "InstaPool-v2.1";
}

View File

@ -49,4 +49,8 @@ abstract contract KyberResolver is Helpers, Events {
_eventName = "LogSell(address,address,uint256,uint256,uint256,uint256)";
_eventParam = abi.encode(buyAddr, sellAddr, _buyAmt, _sellAmt, getId, setId);
}
}
contract ConnectV2Kyber is KyberResolver {
string public name = "Kyber-v2.1";
}

View File

@ -483,6 +483,6 @@ abstract contract MakerResolver is Helpers, Events {
}
}
contract ConnectMaker is MakerResolver {
contract ConnectV2Maker is MakerResolver {
string public constant name = "MakerDao-v1.4";
}

View File

@ -117,6 +117,6 @@ contract OasisResolver is DSMath, Basic, Events {
}
}
contract ConnectOasis is OasisResolver {
contract ConnectV2Oasis is OasisResolver {
string public name = "Oasis-v1.1";
}

View File

@ -178,6 +178,6 @@ abstract contract UniswapResolver is Helpers, Events {
}
}
contract ConnectUniswapV2 is UniswapResolver {
contract ConnectV2UniswapV2 is UniswapResolver {
string public name = "UniswapV2-v1";
}

View File

@ -1,7 +1,11 @@
require("@nomiclabs/hardhat-ethers");
require("@tenderly/hardhat-tenderly");
require("@nomiclabs/hardhat-etherscan");
require('dotenv').config();
const PRIVATE_KEY = process.env.PRIVATE_KEY;
const ALCHEMY_ID = process.env.ALCHEMY_ID;
/**
* @type import('hardhat/config').HardhatUserConfig
*/
@ -27,17 +31,22 @@ module.exports = {
url: process.env.ETH_NODE_URL,
chainId: 1,
timeout: 500000,
accounts: [`0x${PRIVATE_KEY}`]
},
kovan: {
url: `https://eth-kovan.alchemyapi.io/v2/${ALCHEMY_ID}`,
accounts: [`0x${PRIVATE_KEY}`]
},
tenderlyMainnet: {
url: 'https://mainnet.tenderly.co',
accounts: [process.env.PRIVATE_KEY],
accounts: [`0x${PRIVATE_KEY}`],
chainId: 1,
gasPrice: 25120000000,
timeout: 500000
},
tenderlyKovan: {
url: 'https://kovan.tenderly.co',
accounts: [process.env.PRIVATE_KEY],
accounts: [`0x${PRIVATE_KEY}`],
chainId: 42,
gasPrice: 40000000000,
timeout: 50000

1417
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -39,10 +39,12 @@
"@nomiclabs/buidler": "^1.3.8",
"@nomiclabs/buidler-truffle5": "^1.3.4",
"@nomiclabs/buidler-web3": "^1.3.4",
"@nomiclabs/hardhat-ethers": "^2.0.2",
"@nomiclabs/hardhat-etherscan": "^2.1.1",
"@openzeppelin/test-helpers": "^0.5.6",
"@studydefi/money-legos": "^2.3.7",
"@tenderly/hardhat-tenderly": "^1.0.6",
"ethers": "^5.0.32",
"ganache-cli": "^6.10.0-beta.2",
"hardhat": "^2.0.8",
"sol-merger": "^2.0.1",

47
scripts/deploy.js Normal file
View File

@ -0,0 +1,47 @@
const hre = require("hardhat");
const { ethers } = hre;
const deployConnector = require("./deployConnector");
async function main() {
const accounts = await hre.ethers.getSigners()
const wallet = accounts[0]
const connectMapping = {
'1inch': 'ConnectV2OneInch',
'aaveV1': 'ConnectV2AaveV1',
// 'aaveV2': 'ConnectV2AaveV2',
// 'auth': 'ConnectV2Auth',
// 'basic': 'ConnectV2Basic',
// 'comp': 'ConnectV2COMP',
// 'compound': 'ConnectV2Compound',
// 'dydx': 'ConnectV2Dydx',
// 'fee': 'ConnectV2Fee',
// 'gelato': 'ConnectV2Gelato',
// 'maker': 'ConnectV2Maker',
// 'uniswap': 'ConnectV2UniswapV2'
}
const addressMapping = {}
for (const key in connectMapping) {
addressMapping[key] = await deployConnector(connectMapping[key])
}
// const connectorsAbi = [
// "function addConnectors(string[] _connectorNames, address[] _connectors)"
// ]
// // Replace the address with correct v2 connectors registry address
// const connectorsContract = new ethers.Contract("0x84b457c6D31025d56449D5A01F0c34bF78636f67", connectorsAbi, wallet)
// await connectorsContract.addConnectors(Object.keys(addressMapping), Object.values(addressMapping))
}
main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});

View File

@ -0,0 +1,24 @@
const hre = require("hardhat");
const { ethers } = hre;
module.exports = async (connectorName) => {
const Connector = await ethers.getContractFactory(connectorName);
const connector = await Connector.deploy();
await connector.deployed();
console.log(`${connectorName} Deployed: ${connector.address}`);
try {
await hre.run("verify:verify", {
address: connector.address,
constructorArguments: []
}
)
} catch (error) {
console.log(`Failed to verify: ${connectorName}@${connector.address}`)
console.log(error)
console.log()
}
return connector.address
}

23
scripts/deploySingle.js Normal file
View File

@ -0,0 +1,23 @@
const hre = require("hardhat");
const { ethers } = hre;
const deployConnector = require("./deployConnector");
async function main() {
const address = await deployConnector("ConnectOne") // Example
const connectorsAbi = [
"function addConnectors(string[] _connectorNames, address[] _connectors)"
]
const connectorsContract = new ethers.Contract("0x84b457c6D31025d56449D5A01F0c34bF78636f67", connectorsAbi, ethers.provider);
await connectorsContract.addConnectors(['1inch'], [address])
}
main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});