# Quicknode Core Workflow A

> "QuickNode core workflow a \u2014 blockchain RPC and Web3 infrastructure\ \ integration.\nUse when working with QuickNode for blockchain development.\nTrigger\ \ with phrases like \"quicknode core workflow a\", \"quicknode-core-workflow-a\"\ , \"blockchain RPC\".\n"

- Skill: `jeremylongshore/quicknode-core-workflow-a` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jeremylongshore/quicknode-core-workflow-a`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jeremylongshore/quicknode-core-workflow-a/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: jeremylongshore (https://skillmd.com/u/jeremylongshore)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/jeremylongshore/quicknode-core-workflow-a

---


# QuickNode Core Workflow A

## Overview

Build EVM transaction workflows: send ETH, interact with contracts, listen for events, and handle gas estimation.

## Prerequisites

- Completed `quicknode-hello-world`
- A funded wallet (use testnet for development)

## Instructions

### Step 1: Send ETH Transaction

```typescript
import { 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}`);
```

### Step 2: Call Contract Write Function

```typescript
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}`);
```

### Step 3: Listen for Events (WebSocket)

```typescript
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)}`);
});
```

### Step 4: Gas Estimation

```typescript
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`);
```

## Output

- ETH transfer with receipt confirmation
- Smart contract interaction
- Real-time event listening via WebSocket
- Gas estimation before transactions

## Error Handling

| 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 |

## Resources

- [QuickNode Ethereum API](https://www.quicknode.com/docs/ethereum)
- [ethers.js Documentation](https://docs.ethers.org/)

## Next Steps

NFT and token APIs: `quicknode-core-workflow-b`

---

**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `skills/.curated/quicknode-core-workflow-a/SKILL.md`

**Also appears in:** `jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/quicknode-pack/skills/quicknode-core-workflow-a/SKILL.md`

