Skip to content

Instantly share code, notes, and snippets.

@f1lander
Created October 23, 2025 20:02
Show Gist options
  • Save f1lander/0f2755c5c3edb855b96f17f0dd8399f2 to your computer and use it in GitHub Desktop.
Save f1lander/0f2755c5c3edb855b96f17f0dd8399f2 to your computer and use it in GitHub Desktop.

Rhinestone SDK sendTransaction Intermittent Failure Issue

🚨 Core Problem: sendTransaction Returns Null Intermittently

The Issue

The sendTransaction() method in Rhinestone SDK exhibits intermittent failures where it returns null results randomly, making it unreliable for production use. This affects wallet integrations that don't use the proper native wallet SDKs.

πŸ”§ Working Para Wallet Integration

βœ… Correct Para + Rhinestone Integration

import { RhinestoneSDK, wrapParaAccount } from '@rhinestone/sdk';
import { walletClientToAccount } from 'viem/accounts';
import { useParaWallet } from '@getpara/react-sdk';

// Para wallet setup using native SDK
const { walletClient, walletId } = useParaWallet();
const viemAccount = walletClientToAccount(walletClient);

// Rhinestone SDK initialization with Plimlico bundler
const rhinestone = new RhinestoneSDK({
  apiKey: import.meta.env.VITE_RHINESTONE_API_KEY!,
  bundler: {
    type: 'pimlico',
    apiKey: import.meta.env.VITE_PIMLICO_API_KEY,
  },
});

// Create wrapped Para account
const wrappedAccount = wrapParaAccount(viemAccount, walletId);

// Create Rhinestone account with proper owners structure
const rhinestoneAccount = await rhinestone.createAccount({
  owners: {
    type: "ecdsa" as const,
    accounts: [wrappedAccount as Account],
  },
});

// βœ… WORKS PERFECTLY with sendUserOperation
const result = await rhinestoneAccount.sendUserOperation({
  chain: customSepolia,
  calls: [...],
});

// ⚠️ INTERMITTENT with sendTransaction (sometimes returns null)
const result = await rhinestoneAccount.sendTransaction({
  chain: customSepolia,
  calls: [...],
});

Key Requirements for Working Integration:

  • Native Wallet SDK: Must use @getpara/react-sdk + @getpara/viem-v2-integration
  • Plimlico Bundler: Required for sendUserOperation to work - configure with type: 'pimlico' and API key
  • Proper Account Structure: Use owners with type: "ecdsa" and accounts array
  • Account Wrapping: Use wrapParaAccount with native Para account

πŸ” The Issue: sendTransaction Intermittent Failures

  • sendTransaction: Returns null randomly (~30-40% failure rate)
  • sendUserOperation: Works consistently (100% success rate)
  • Wagmi Integration: walletClientToAccount doesn't work with either method

πŸ›  Solution: Use sendUserOperation with Plimlico Bundler

  1. Fix sendTransaction Reliability: Investigate why sendTransaction returns null intermittently

  2. Wagmi Compatibility: Fix walletClientToAccount integration issues

πŸ“Š Test Results

Working:

  • Para Wallet + @getpara/react-sdk + sendUserOperation + Plimlico bundler (100% success)
  • Privy Wallet + native Privy integration + sendTransaction (100% success)
  • Para Wallet + @getpara/react-sdk + sendTransaction (intermittent failures)

Not Working:

  • Wagmi-based wallets + walletClientToAccount + either method (0% success)

πŸ“ Summary

Issue: sendTransaction returns null intermittently, walletClientToAccount doesn't work with Rhinestone SDK.

Working Solutions:

  • Para Wallet + @getpara/react-sdk + sendUserOperation + Plimlico bundler
  • Privy Wallet + native Privy integration + sendTransaction
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment