flashdeploy-v3
v1.0.7
Published
This Node.js repository contains the configuration and deployment scripts for the Flash V3 protocol core and periphery contracts. The repository makes use of `hardhat` and `hardhat-deploy` tools to facilitate the deployment of Flash V3 protocol.
Downloads
3
Readme
Flash V3 Deployments
This Node.js repository contains the configuration and deployment scripts for the Flash V3 protocol core and periphery contracts. The repository makes use of hardhat
and hardhat-deploy
tools to facilitate the deployment of Flash V3 protocol.
Requirements
- Node.js >= 16
- Alchemy key
- If you use a custom RPC node, you can change the default RPC provider URL at ./helpers/hardhat-config-helpers.ts:25.
- Etherscan API key (Optional)
Getting Started
Install Node.JS dependencies:
npm i
Compile contracts before running any other command, to generate Typechain TS typings:
npm run compile
How to deploy Flash V3 in testnet network
To deploy Flash V3 in a Testnet network, copy the .env.example
into a .env
file, and fill the environment variables MNEMONIC
, and ALCHEMY_KEY
.
cp .env.example .env
Edit the .env
file to fill the environment variables MNEMONIC
, ALCHEMY_KEY
and MARKET_NAME
. You can check all possible pool configurations in this file.
nano .env
Run the deployments scripts and specify which network & flash market configs you wish to deploy.
HARDHAT_NETWORK=goerli npx hardhat deploy
How to deploy Flash V3 in fork network
You can use the environment variable FORK
with the network name to deploy into a fork.
FORK=main MARKET_NAME=Flash npx hardhat deploy
How to integrate in your Hardhat project
You can install the flashdeploy-v3
package in your Hardhat project to be able to import deployments with hardhat-deploy
and build on top of Flash in local or testnet network.
To make it work, you must install the following packages in your project:
npm i --save-dev flashdeploy-v3 @aave/core-v3 @aave/periphery-v3
Then, proceed to load the deploy scripts adding the externals
field in your Hardhat config file at hardhat.config.js|ts
.
# Content of hardhat.config.ts file
export default hardhatConfig: HardhatUserConfig = {
{...},
external: {
contracts: [
{
artifacts: 'node_modules/flashdeploy-v3/artifacts',
deploy: 'node_modules/flashdeploy-v3/dist/deploy',
},
],
},
}
After all is configured, you can run npx hardhat deploy
to run the scripts or you can also run it programmatically in your tests using fixtures:
import {getPoolAddressesProvider} from 'flashdeploy-v3';
describe('Tests', () => {
before(async () => {
// Set the MARKET_NAME env var
process.env.MARKET_NAME = "Flash"
// Deploy Flash V3 contracts before running tests
await hre.deployments.fixture(['market', 'periphery-post']);`
})
it('Get Pool address from AddressesProvider', async () => {
const addressesProvider = await getPoolAddressesProvider();
const poolAddress = await addressesProvider.getPool();
console.log('Pool', poolAddress);
})
})
How to verify your contract deployments
npx hardhat --network XYZ etherscan-verify --api-key YZX
Project Structure
| Path | Description | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | deploy/ | Main deployment scripts dir location | | ├─ 00-core/ | Core deployment, only needed to run once per network. | | ├─ 01-periphery_pre/ | Periphery contracts deployment, only need to run once per network. | | ├─ 02-market/ | Market deployment scripts, depends of Core and Periphery deployment. | | ├─ 03-periphery_post/ | Periphery contracts deployment after market is deployed. | | deployments/ | Artifacts location of the deployments, contains the addresses, the abi, solidity input metadata and the constructor parameters. | | markets/ | Directory to configure Flash markets | | tasks/ | Hardhat tasks to setup and review market configs | | helpers/ | Utility helpers to manage configs and deployments |