Loading...
Loading...
Bootstrap dApps, generate smart contracts, manage wallets, test RPCs, deploy contracts, and monitor on-chain activity for EVM and Solana blockchains.
npx skill4agent add aradotso/devtools-skills web3-devkit-cliSkill by ara.so — Devtools Skills collection.
npm install -g web3-devkit-cligit clone https://github.com/jazzband/web3-devkit-cli.git
cd web3-devkit-cli
npm install
npm run build
npm link # Makes 'web3' command available globallynpm run web3 -- <command># Interactive mode
web3 init
# Specify chain type
web3 init evm # EVM templates (Foundry, Hardhat)
web3 init solana # Solana templates (Anchor)
web3 init fullstack # Full-stack with frontend + backendevm-foundryevm-hardhatsolana-anchornextjs-wagminextjs-solana-walletfullstack-evmfullstack-solana# Generate ERC20 token
web3 generate token -c evm -v erc20 -n MyToken -y
# Generate ERC721 NFT
web3 generate nft -c evm -v erc721 -n MyNFT -o ./contracts -y
# Generate Solana escrow program
web3 generate vault -c solana -v escrow-anchor -n MyEscrow -ytokennftstakingvaultprediction-market-c, --chainevmsolana-v, --varianterc20erc721-n, --name-o, --output./contracts-y, --yes# Create new wallet
web3 wallet create --chain evm
web3 wallet create --chain solana
# Check native balance
web3 wallet balance -n base -a 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb
# List token balances
web3 wallet tokens -n ethereum -a 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb# Test RPC endpoint
web3 rpc test -n base
web3 rpc test -n arbitrum
web3 rpc test -n solana
# Check network health
web3 network check -n ethereum# Estimate deployment gas (EVM)
web3 deploy evm -n base --estimate
# Deploy to network (EVM)
web3 deploy evm -n base -y
# Deploy Solana program
web3 deploy solana -n devnet -y
# View deployment history
web3 deploy history
# Verify contract on explorer
web3 verify -n base -a 0xContractAddress -c MyToken.web3-devkit/deployments/# Monitor contract events
web3 monitor contract -a 0xContractAddress -e Transfer -n base
# Monitor wallet transactions
web3 monitor wallet -a 0xYourWallet -n ethereum
# Monitor specific token for wallet
web3 monitor token -a 0xTokenAddress -w 0xWalletAddress -n base# Add wagmi (EVM)
web3 add wagmi -y
# Add RainbowKit
web3 add rainbowkit -y
# Add WalletConnect
web3 add wallet-connect -y
# Add Viem
web3 add viem -y
# Add Solana wallet adapter
web3 add solana-wallet -y# Initialize config
web3 config init
# Get configuration value
web3 config get defaultChain
# Set configuration value
web3 config set rpc.base https://mainnet.base.org
web3 config set defaultChain evm
web3 config set framework foundry.web3-devkit/config.json{
"defaultChain": "evm",
"framework": "foundry",
"rpc": {
"base": "https://mainnet.base.org",
"ethereum": "https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}"
},
"walletType": "local"
}# Initialize project
web3 init evm-foundry
# Generate ERC20 token
cd my-project
web3 generate token -c evm -v erc20 -n MyToken -y
# Set default network
web3 config set defaultChain evm
web3 config set rpc.base ${BASE_RPC_URL}
# Check RPC connectivity
web3 rpc test -n base
# Deploy contract
web3 deploy evm -n base -y
# Monitor token transfers
web3 monitor contract -a 0xDeployedTokenAddress -e Transfer -n base# Initialize Anchor project
web3 init solana-anchor
# Generate escrow program
cd my-solana-project
web3 generate vault -c solana -v escrow-anchor -n MyEscrow -y
# Create Solana wallet
web3 wallet create --chain solana
# Check wallet balance
web3 wallet balance -n devnet -a <SOLANA_WALLET_ADDRESS>
# Deploy program
web3 deploy solana -n devnet -y# Initialize full-stack project
web3 init fullstack-evm
# Generate NFT contract
cd my-fullstack-dapp
web3 generate nft -c evm -v erc721 -n MyNFT -y
# Add wagmi integration to frontend
cd frontend
web3 add wagmi -y
web3 add rainbowkit -y
# Configure network
cd ..
web3 config set rpc.base ${BASE_RPC_URL}
# Deploy and verify
web3 deploy evm -n base -y
web3 verify -n base -a 0xContractAddress -c MyNFT# .env file
PRIVATE_KEY=${PRIVATE_KEY}
ALCHEMY_API_KEY=${ALCHEMY_API_KEY}
ETHERSCAN_API_KEY=${ETHERSCAN_API_KEY}
BASE_RPC_URL=https://mainnet.base.org
SOLANA_RPC_URL=https://api.devnet.solana.comsource .env
web3 deploy evm -n base -yBASE_RPC_URL=${BASE_RPC_URL} web3 rpc test -n baseweb3 generate token -c evm -v erc20 -n MyToken -y// contracts/MyToken.sol is generated
// Example interaction script
import { createPublicClient, createWalletClient, http } from 'viem';
import { base } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';
const account = privateKeyToAccount(`0x${process.env.PRIVATE_KEY}`);
const publicClient = createPublicClient({
chain: base,
transport: http(process.env.BASE_RPC_URL),
});
const walletClient = createWalletClient({
chain: base,
transport: http(process.env.BASE_RPC_URL),
account,
});
// Read token balance
const balance = await publicClient.readContract({
address: '0xTokenAddress',
abi: MyTokenABI,
functionName: 'balanceOf',
args: [account.address],
});
console.log('Balance:', balance);
// Transfer tokens
const hash = await walletClient.writeContract({
address: '0xTokenAddress',
abi: MyTokenABI,
functionName: 'transfer',
args: ['0xRecipient', 1000000000000000000n],
});
console.log('Transaction hash:', hash);import { createPublicClient, http, parseAbiItem } from 'viem';
import { base } from 'viem/chains';
const client = createPublicClient({
chain: base,
transport: http(process.env.BASE_RPC_URL),
});
// Watch for Transfer events
const unwatch = client.watchEvent({
address: '0xTokenAddress',
event: parseAbiItem('event Transfer(address indexed from, address indexed to, uint256 value)'),
onLogs: (logs) => {
logs.forEach((log) => {
console.log('Transfer detected:', {
from: log.args.from,
to: log.args.to,
value: log.args.value,
});
});
},
});
// Stop watching after 1 hour
setTimeout(() => unwatch(), 3600000);import { execSync } from 'child_process';
import fs from 'fs';
import path from 'path';
interface DeploymentRecord {
network: string;
address: string;
timestamp: string;
deployer: string;
}
async function deployContract(network: string): Promise<void> {
console.log(`Deploying to ${network}...`);
// Run web3-devkit deploy
const output = execSync(`web3 deploy evm -n ${network} -y`, {
encoding: 'utf-8',
});
console.log(output);
// Parse deployment address from output
const addressMatch = output.match(/Deployed at: (0x[a-fA-F0-9]{40})/);
if (!addressMatch) {
throw new Error('Failed to parse deployment address');
}
const address = addressMatch[1];
// Save deployment record
const deploymentDir = path.join('.web3-devkit', 'deployments');
const record: DeploymentRecord = {
network,
address,
timestamp: new Date().toISOString(),
deployer: process.env.DEPLOYER_ADDRESS || 'unknown',
};
fs.writeFileSync(
path.join(deploymentDir, `${network}-latest.json`),
JSON.stringify(record, null, 2)
);
console.log(`Deployment saved: ${address}`);
}
deployContract('base').catch(console.error);web3 init evm-foundrymy-project/
├── contracts/ # Solidity contracts
│ └── Counter.sol
├── script/ # Deployment scripts
│ └── Counter.s.sol
├── test/ # Forge tests
│ └── Counter.t.sol
├── .env.example
├── foundry.toml
├── README.md
└── .web3-devkit/ # DevKit metadata
├── config.json
└── deployments/web3 init fullstack-evmmy-fullstack-dapp/
├── contracts/ # Smart contracts
├── frontend/ # Next.js dApp
│ ├── components/
│ ├── pages/
│ └── public/
├── backend/
│ └── api/ # API routes
├── .env.example
└── README.mdweb3 rpc test -n baseweb3 config get rpc.baseweb3 config set rpc.base https://mainnet.base.orgcurl -X POST ${BASE_RPC_URL} -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'BASE_RPC_URL=${ALCHEMY_BASE_URL} web3 rpc test -n baseweb3 deploy evm -n base --estimateweb3 wallet balance -n base -a ${YOUR_ADDRESS}echo $PRIVATE_KEYweb3 generate token -c evm -v erc20 -n MyToken -yforge --versionnpx hardhat --versionforge installnpm installfoundry.tomlhardhat.config.tsweb3 monitor wallet -a 0x... -n ethereumweb3 config get defaultChainweb3 rpc test -n ethereumweb3 monitor contract -a 0x... -e Transfer -n ethereumweb3 add wagmi -ynpm install wagmi viem @tanstack/react-queryWagmiConfig_app.tsxweb3npm linknpm run web3 -- <command>npm config get prefixnpm install -g web3-devkit-cliweb3 wallet create --chain evmls -la .web3-devkit/mkdir -p .web3-devkit/wallets# Set custom RPC URLs
web3 config set rpc.ethereum https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}
web3 config set rpc.base https://base-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}
web3 config set rpc.arbitrum https://arb-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}
web3 config set rpc.solana https://api.mainnet-beta.solana.com# Deploy to multiple networks sequentially
for network in base arbitrum polygon; do
echo "Deploying to $network..."
web3 deploy evm -n $network -y
web3 verify -n $network -a $(web3 deploy history | grep $network | awk '{print $2}') -c MyToken
done# Monitor multiple contracts in parallel
web3 monitor contract -a 0xToken1 -e Transfer -n base &
web3 monitor contract -a 0xToken2 -e Transfer -n base &
web3 monitor wallet -a 0xMyWallet -n base &
waitdocs/templates/generators/integrations/