NYC
skills/bankrbot/claude-plugins/Bankr Dev - Arbitrary Transactions

Bankr Dev - Arbitrary Transactions

SKILL.md

Arbitrary Transaction Capability

Submit raw EVM transactions with explicit calldata via the Bankr API.

What You Can Do

Operation Description
Submit calldata Execute pre-built calldata on any supported chain
Custom contract calls Interact with any contract using raw function calls
Value transfers with data Send ETH/MATIC while executing calldata

JSON Schema

{
  "to": "0x...",
  "data": "0x...",
  "value": "0",
  "chainId": 8453
}
Field Type Required Description
to string Yes Contract address (0x + 40 hex chars)
data string Yes Calldata (0x + hex, or "0x" for empty)
value string Yes Wei amount as string
chainId number Yes Target chain (1, 137, or 8453)

Supported Chains

Chain Chain ID
Ethereum 1
Polygon 137
Base 8453
Unichain 130

Usage

import { execute } from "./bankr-client";

// Submit arbitrary transaction
const txJson = {
  to: "0x1234567890abcdef1234567890abcdef12345678",
  data: "0xa9059cbb...",
  value: "0",
  chainId: 8453
};

await execute(`Submit this transaction: ${JSON.stringify(txJson)}`);

Integration Pattern

import { execute } from "./bankr-client";

interface ArbitraryTx {
  to: string;
  data: string;
  value: string;
  chainId: number;
}

async function submitArbitraryTx(tx: ArbitraryTx): Promise<void> {
  // Validate before submission
  if (!tx.to.match(/^0x[a-fA-F0-9]{40}$/)) {
    throw new Error("Invalid address format");
  }
  if (!tx.data.startsWith("0x")) {
    throw new Error("Calldata must start with 0x");
  }
  if (![1, 137, 8453, 130].includes(tx.chainId)) {
    throw new Error("Unsupported chain");
  }

  const prompt = `Submit this transaction: ${JSON.stringify(tx)}`;
  await execute(prompt);
}

// Example: ERC-20 transfer
await submitArbitraryTx({
  to: "0xTokenContractAddress...",
  data: "0xa9059cbb000000000000000000000000...", // transfer(address,uint256)
  value: "0",
  chainId: 8453
});

Error Handling

try {
  await submitArbitraryTx(tx);
} catch (error) {
  if (error.message.includes("reverted")) {
    // Transaction reverted - check calldata encoding
    console.error("Transaction reverted:", error);
  } else if (error.message.includes("insufficient")) {
    // Not enough funds for gas + value
    console.error("Insufficient funds:", error);
  } else if (error.message.includes("unsupported")) {
    // Chain not supported
    console.error("Unsupported chain:", error);
  }
}

Related Skills

  • bankr-client-patterns - Client setup and execute function
  • bankr-api-basics - API fundamentals
  • bankr-token-trading - Higher-level trading operations
Weekly Installs
0
First Seen
Jan 1, 1970