Skip to main content

Dev Environment Setup

Before deploying smart contracts or interacting with the Watr Network, you need to set up a local development environment with the right tools. Since Watr runs on the Avalanche network architecture, you can use standard EVM-compatible tools like Hardhat.

Prerequisites

Make sure you have the following installed:

Install Hardhat

Hardhat is a popular Ethereum development framework that works seamlessly with Avalanche and Watr.

mkdir watr-dev
cd watr-dev
npm init -y
npm install --save-dev hardhat
npx hardhat

Choose “Create a basic sample project” when prompted.

Install Additional Dependencies

For Hardhat projects, install the following plugins:

npm install --save-dev @nomicfoundation/hardhat-toolbox

To support Ethers.js, Solidity testing, and deployment.

Create a .env file to securely store sensitive data like private keys and RPC URLs:

PRIVATE_KEY=your_private_key_here
WATR_RPC_URL=https://rpc.watr.org/ext/bc/EypLFUSzC2wdbFJovYS3Af1E7ch1DJf7KxKoGR5QFPErxQkG1/rpc # Replace with actual Watr RPC

Then install dotenv:

npm install dotenv

And load it in your hardhat.config.js:

require("dotenv").config();

module.exports = {
networks: {
watr: {
url: process.env.WATR_RPC_URL,
accounts: [process.env.PRIVATE_KEY],
},
},
solidity: "0.8.21",
};
watr-dev/
├── contracts/ # Your Solidity smart contracts
├── scripts/ # Deployment & interaction scripts
├── test/ # Contract test cases
├── hardhat.config.js # Hardhat configuration
└── .env # Environment variables (not committed)

Connect via Code

Using ethers.js

import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider(
"https://rpc.watr.org/ext/bc/EypLFUSzC2wdbFJovYS3Af1E7ch1DJf7KxKoGR5QFPErxQkG1/rpc"
);

Using viem

import { createPublicClient, http } from "viem";

const client = createPublicClient({
transport: http(
"https://rpc.watr.org/ext/bc/EypLFUSzC2wdbFJovYS3Af1E7ch1DJf7KxKoGR5QFPErxQkG1/rpc"
),
});

Useful VSCode Extensions

  • Solidity by Juan Blanco
  • Hardhat Runner
  • Prettier & ESLint
  • GitLens