/hardhat-plugin

The official ZeroDev hardhat plugin for local development

Primary LanguageTypeScript

ZeroDev Hardhat Plugin

A Hardhat plugin that runs a ZeroDev mock server.

What

Sometimes you want to test you Dapps locally. To do that, ZeroDev provides a mock server to mimick a live paymaster on your local machine. This plugin automatically starts the mock server whenever you run npx hardhat node or hh node without the need for additional setup.

Installation

npm install @zerodevapp/hardhat "@nomiclabs/hardhat-ethers@^2.0.0" "ethers@^5.0.0"

Import the plugin in your hardhat.config.js:

require("@zerodevapp/hardhat");

Or if you are using TypeScript, in your hardhat.config.ts:

import "@zerodevapp/hardhat";

Required plugins

Tasks

This plugin overrides the node task:

$ npx hardhat node

EntryPoint deployed at 0xb81e8725d8Ede34A906Db901ED15cd41944ba6Ae
VerifyingPaymaster deployed at 0x07225f1742C63Df795f9E2B4a5045e05D8D0A727
WalletFactory deployed at 0x7Ce1DA5188067d08a0b4343cF1f97d7cC6097318
ZeroDev mock server listening at http://127.0.0.1:3030
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
...

Environment extensions

This plugin exports a new environment variable under hre.zeroMockUrl which indicates the URL for the mock server. It's usually something like http://127.0.0.1:3030.

Usage

Configure your ZeroDev SDK to use the mock server:

import * as zd from "zerodev-sdk";

const wallet = await zd.getSigner(
  {
    projectId: "zerodev project id here",
    identity: "google",
    token: token,
  },
  {
    // your local ethereum network rpc:
    rpcUrl: "http://127.0.0.1:8545/",
    // the mock server provides the following two:
    backendUrl: "http://127.0.0.1:3030",
    paymasterUrl: "http://127.0.0.1:3030",
    // the same as the backendUrl with /rpc appended:
    bundlerUrl: "http://127.0.0.1:3030/rpc",
    // addresses where your contracts are deployed to:
    contractAddresses: {
      entrypoint: "0xb81e8725d8Ede34A906Db901ED15cd41944ba6Ae",
      paymaster: "0x07225f1742C63Df795f9E2B4a5045e05D8D0A727",
      walletFactory: "0x7Ce1DA5188067d08a0b4343cF1f97d7cC6097318",
    },
  }
);

The values provided above should work for you by default if you haven't changed any configuration.

Note: It's currently not possible to configure rate limites or other project dashboard features. The mock server will simply sign everything it receives.