From quicknode-pack
Builds EVM transaction workflows using QuickNode and ethers.js: send ETH, call smart contracts, listen for events via WebSocket, estimate gas.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin quicknode-packThis skill is limited to using the following tools:
Build EVM transaction workflows: send ETH, interact with contracts, listen for events, and handle gas estimation.
Queries Ethereum via QuickNode RPC with ethers.js: fetches block numbers, ETH balances, ERC-20 token balances, and transaction receipts for blockchain starters.
Queries EVM blockchains for balances, blocks, transactions, token transfers, smart contracts, ENS, and chain health. Use with Ethereum, Polygon, Arbitrum, Optimism, Base, BSC, Avalanche.
Guides QuickNode setup for blockchain RPC (80+ chains), Streams/Webhooks, IPFS, Solana DAS/gRPC streaming, KV store, SQL queries on indexed data, and add-ons.
Share bugs, ideas, or general feedback.
Build EVM transaction workflows: send ETH, interact with contracts, listen for events, and handle gas estimation.
quicknode-hello-worldimport { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider(process.env.QUICKNODE_ENDPOINT);
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);
const tx = await wallet.sendTransaction({
to: '0xRecipientAddress',
value: ethers.parseEther('0.01'),
});
console.log(`TX sent: ${tx.hash}`);
const receipt = await tx.wait();
console.log(`Confirmed in block ${receipt!.blockNumber}, gas used: ${receipt!.gasUsed}`);
const contractAddress = '0xYourContract';
const abi = ['function transfer(address to, uint256 amount) returns (bool)'];
const contract = new ethers.Contract(contractAddress, abi, wallet);
const tx = await contract.transfer('0xRecipient', ethers.parseUnits('100', 18));
const receipt = await tx.wait();
console.log(`Transfer confirmed: ${receipt!.hash}`);
const wsProvider = new ethers.WebSocketProvider(process.env.QUICKNODE_WSS);
const contract = new ethers.Contract(contractAddress, ['event Transfer(address indexed from, address indexed to, uint256 value)'], wsProvider);
contract.on('Transfer', (from, to, value, event) => {
console.log(`Transfer: ${from} -> ${to}: ${ethers.formatUnits(value, 18)}`);
});
const gasEstimate = await contract.transfer.estimateGas('0xRecipient', ethers.parseUnits('100', 18));
const feeData = await provider.getFeeData();
const totalCost = gasEstimate * (feeData.gasPrice || 0n);
console.log(`Estimated gas: ${gasEstimate}, cost: ${ethers.formatEther(totalCost)} ETH`);
| Error | Cause | Solution |
|---|---|---|
insufficient funds | Wallet balance too low | Fund wallet or reduce amount |
nonce too low | Nonce conflict | Get latest nonce: provider.getTransactionCount(address) |
gas required exceeds allowance | Contract revert | Check contract requirements |
NFT and token APIs: quicknode-core-workflow-b