In the digital expanse of blockchain, where every byte counts, we aim to parse Solana's transactions, seeking those that exceed 100 SOL. Here's how to do it with Node.js, deploying as a serverless function on Vercel.
Setting Up
First, ensure you have Node.js and npm on your machine. Initialize a project:
npm init -y
npm install @solana/web3.js
Code for Solana Transactions
Create a directory named api
and within it, a file solana-transactions.js
:
// api/solana-transactions.js
import { Connection, PublicKey } from '@solana/web3.js';
export default async function handler(req, res) {
const connection = new Connection('https://api.mainnet-beta.solana.com', 'confirmed');
try {
const latestBlock = await connection.getLatestBlockhashAndContext();
const slot = latestBlock.context.slot;
const blockData = await connection.getBlock(slot, { transactionDetails: "full" });
const largeTransactions = blockData.transactions.filter(tx => {
return tx.transaction.message.instructions.some(instruction => {
if (instruction.parsed) {
const { lamports } = instruction.parsed.info;
return lamports && lamports >= 100 * 1e9; // Over 100 SOL
}
return false;
});
});
const result = largeTransactions.map(tx => ({
signature: tx.transaction.signatures[0],
amount: tx.transaction.message.instructions[0].parsed.info.lamports / 1e9, // SOL conversion
source: tx.transaction.message.instructions[0].parsed.info.source,
destination: tx.transaction.message.instructions[0].parsed.info.destination
}));
res.status(200).json(result);
} catch (error) {
console.error(error);
res.status(500).json({ error: 'Failed to fetch or process transactions' });
}
}
Vercel Deployment
Configure Vercel with vercel.json
in your project root:
{
"version": 2,
"routes": [
{
"src": "/api/(.*)",
"dest": "api/$1"
}
]
}
Add a build
script in package.json
if needed:
{
"scripts": {
"build": "echo 'No build step needed'"
}
}
Deploy using Vercel CLI:
vercel login
vercel
The Result
This function, once deployed on Vercel, will parse Solana's latest block, capturing transactions over 100 SOL. It's a simple yet effective way to monitor high-value transactions without the burden of maintaining a server.
Considerations
- Performance: Cache results to reduce API calls.
- Security: Handle errors gracefully and limit request rates.
- Scalability: Be aware of Vercel's serverless function limitations.
In the vast sea of blockchain data, this tool acts as your sextant, guiding you to significant transactions with the simplicity and efficiency of serverless technology on Vercel.
Top comments (0)