4.5.0 • Published 1 year ago

@mahalend/deploy v4.5.0

Weekly downloads
-
License
AGPLv3
Repository
github
Last release
1 year ago

MahaLend Deployments

This Node.js repository contains the configuration and deployment scripts for the MahaLend protocol core and periphery contracts. The repository makes use of hardhat and hardhat-deploy tools to facilitate the deployment of MahaLend protocol.

Requirements

Getting Started

  1. Install Node.JS dependencies:

    npm i
  2. Compile contracts before running any other command, to generate Typechain TS typings:

    npm run compile

How to deploy MahaLend in testnet network

To deploy MahaLend 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.

nano .env

Run the deployments script

HARDHAT_NETWORK=görli npx hardhat deploy

How to deploy MahaLend in fork network

You can use the environment variable FORK with the network name to deploy into a fork.

FORK=main MARKET_NAME=Aave npx hardhat deploy

How to integrate in your Hardhat project

You can install the @mahalend/deploy package in your Hardhat project to be able to import deployments with hardhat-deploy and build on top of Aave in local or testnet network.

To make it work, you must install the following packages in your project:

npm i --save-dev @mahalend/deploy @mahalend/core @mahalend/periphery

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/@mahalend/deploy/artifacts',
        deploy: 'node_modules/@mahalend/deploy/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 '@mahalend/deploy';

describe('Tests', () => {
   before(async () => {
      // Set the MARKET_NAME env var
      process.env.MARKET_NAME = "Aave"

      // Deploy MahaLend 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);
   })
})

Project Structure

PathDescription
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 MahaLend markets
tasks/Hardhat tasks to setup and review market configs
helpers/Utility helpers to manage configs and deployments
4.5.0

1 year ago

4.4.0

1 year ago

4.3.0

1 year ago

4.2.0

1 year ago

4.1.0

1 year ago

4.0.1

1 year ago

4.0.0

1 year ago

2.6.0

1 year ago

2.5.0

1 year ago

2.4.0

1 year ago