Essential commands for Ethereum development using Geth, web3.js, and Hardhat.
Geth (Go Ethereum)
Installation
# Ubuntu/Debian
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
# macOS
brew tap ethereum/ethereum
brew install ethereum
Node Management
# Start mainnet node
geth
# Start testnet (Sepolia)
geth --sepolia
# Start with HTTP RPC
geth --http --http.addr "0.0.0.0" --http.port 8545
# Start with WebSocket
geth --ws --ws.addr "0.0.0.0" --ws.port 8546
# Start light client
geth --syncmode "light"
# Start with custom data directory
geth --datadir /path/to/data
Account Management
# Create new account
geth account new
# List accounts
geth account list
# Import private key
geth account import /path/to/key
# Update account password
geth account update <address>
Console Operations
# Attach to running node
geth attach
# Attach to IPC
geth attach ipc:/path/to/geth.ipc
# Attach to HTTP RPC
geth attach http://localhost:8545
# Execute JavaScript file
geth js script.js
JavaScript Console Commands
// Check balance
eth.getBalance("0xAddress")
// Get account list
eth.accounts
// Send transaction
eth.sendTransaction({
from: eth.accounts[0],
to: "0xRecipient",
value: web3.toWei(1, "ether")
})
// Get block number
eth.blockNumber
// Get block info
eth.getBlock(12345)
// Get transaction
eth.getTransaction("0xTxHash")
// Unlock account
personal.unlockAccount(eth.accounts[0], "password", 300)
// Create account
personal.newAccount("password")
// Get network ID
net.version
// Get peer count
net.peerCount
// Mining
miner.start()
miner.stop()
Hardhat
Installation & Setup
# Install Hardhat
npm install --save-dev hardhat
# Initialize project
npx hardhat init
# Install plugins
npm install --save-dev @nomicfoundation/hardhat-toolbox
Project Commands
# Compile contracts
npx hardhat compile
# Clean artifacts
npx hardhat clean
# Run tests
npx hardhat test
# Run specific test
npx hardhat test test/MyContract.test.js
# Run tests with gas reporter
REPORT_GAS=true npx hardhat test
# Check contract size
npx hardhat size-contracts
Network & Node
# Start local node
npx hardhat node
# Run script on network
npx hardhat run scripts/deploy.js --network localhost
npx hardhat run scripts/deploy.js --network sepolia
npx hardhat run scripts/deploy.js --network mainnet
# Get accounts
npx hardhat accounts --network localhost
Console
# Start console
npx hardhat console
# Start console on network
npx hardhat console --network localhost
npx hardhat console --network sepolia
Verification
# Verify contract on Etherscan
npx hardhat verify --network mainnet DEPLOYED_CONTRACT_ADDRESS "Constructor arg 1"
# Verify with multiple arguments
npx hardhat verify --network sepolia 0xAddress "arg1" 123 "arg3"
Deployment
# Deploy script
npx hardhat run scripts/deploy.js
# Deploy to specific network
npx hardhat run scripts/deploy.js --network sepolia
# Deploy with specific account
npx hardhat run scripts/deploy.js --network mainnet
Cast (Foundry)
Installation
# Install Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
Query Blockchain
# Get balance
cast balance 0xAddress
# Get balance in ether
cast balance 0xAddress --ether
# Get block number
cast block-number
# Get block
cast block latest
cast block 12345
# Get transaction
cast tx 0xTxHash
# Get transaction receipt
cast receipt 0xTxHash
# Get code at address
cast code 0xAddress
# Get storage slot
cast storage 0xAddress 0
Contract Interaction
# Call contract (read)
cast call 0xContract "balanceOf(address)(uint256)" 0xAddress
# Send transaction (write)
cast send 0xContract "transfer(address,uint256)" 0xRecipient 1000000
# Estimate gas
cast estimate 0xContract "transfer(address,uint256)" 0xRecipient 1000
# Get ABI
cast abi 0xContract
Utilities
# Convert to hex
cast --to-hex 123456
# Convert from hex
cast --to-dec 0x1e240
# Convert to wei
cast --to-wei 1 ether
# Convert from wei
cast --from-wei 1000000000000000000
# Keccak256 hash
cast keccak "Hello World"
# ABI encode
cast abi-encode "transfer(address,uint256)" 0xAddress 1000
# ABI decode
cast abi-decode "transfer(address,uint256)" 0xData
Web3.js CLI
Installation
npm install -g web3-cli
Basic Commands
# Connect to node
web3 --rpc http://localhost:8545
# Get block number
web3 eth blockNumber
# Get balance
web3 eth getBalance 0xAddress
# Get transaction count
web3 eth getTransactionCount 0xAddress
# Get gas price
web3 eth gasPrice
# Send transaction
web3 eth sendTransaction '{"from":"0x...","to":"0x...","value":"1000000000000000000"}'
Common Tasks
Deploy Contract
// Hardhat deployment script
const { ethers } = require("hardhat");
async function main() {
const Contract = await ethers.getContractFactory("MyContract");
const contract = await Contract.deploy();
await contract.deployed();
console.log("Contract deployed to:", contract.address);
}
main();
Interact with Contract
// Hardhat console
const Contract = await ethers.getContractAt("MyContract", "0xAddress");
await Contract.myFunction();
const result = await Contract.myView();
Check Network
# Geth
geth attach --exec "net.version"
# Hardhat
npx hardhat run --network localhost scripts/check.js
# Cast
cast chain-id
Environment Variables
# .env file for Hardhat
INFURA_API_KEY=your_key
ALCHEMY_API_KEY=your_key
PRIVATE_KEY=your_private_key
ETHERSCAN_API_KEY=your_key
Useful Resources
- Geth Docs: https://geth.ethereum.org/docs
- Hardhat Docs: https://hardhat.org/docs
- Foundry Book: https://book.getfoundry.sh/
- Web3.js Docs: https://web3js.readthedocs.io/
- Ethereum.org: https://ethereum.org/developers