Skip to content

rhinestonewtf/sdk

Repository files navigation

Rhinestone SDK

End-to-end chain abstraction and modularity toolkit

Rhinestone is a vertically integrated smart wallet and crosschain liquidity platform. The SDK provides a unified interface for deploying and managing self-custodial smart accounts, powered by an intent-based transaction infrastructure that enables seamless crosschain execution without bridging or gas tokens.

The platform combines modular smart account tooling with an intent engine (Warp) that aggregates settlement layers through a unified relayer market. This handles routing, token liquidity, and crosschain orchestration across all supported chains.

Documentation

Features

  • Crosschain Transactions - Execute transactions on any target chain using assets from any source chain. The orchestrator handles routing and settlement. Learn more

  • Swaps - Token exchanges via solver-based swaps or injected DEX aggregator swaps, integrated into crosschain transaction execution. Learn more

  • Passkeys - WebAuthn-based authentication for smart accounts, replacing seed phrases with device biometrics. Learn more

  • Smart Sessions - Onchain permissions system for scoped transaction automation, enabling one-click UX and server-side execution with granular policies. Learn more

  • Gas Sponsorship - Subsidize gas, bridge, and swap fees for users by depositing USDC on Base. Applies across all supported chains. Learn more

Installation

npm install viem @rhinestone/sdk
bun install viem @rhinestone/sdk

Quickstart

Create a smart account:

import { RhinestoneSDK } from '@rhinestone/sdk'

const rhinestone = new RhinestoneSDK()
const account = await rhinestone.createAccount({
  owners: {
    type: 'ecdsa',
    accounts: [signer],
  },
})

Send a crosschain transaction:

const transaction = await account.sendTransaction({
  sourceChains: [baseSepolia],
  targetChain: arbitrumSepolia,
  calls: [
    {
      to: 'USDC',
      value: 0n,
      data: encodeFunctionData({
        abi: erc20Abi,
        functionName: 'transfer',
        args: [recipient, amount],
      }),
    },
  ],
  tokenRequests: [{ address: 'USDC', amount }],
})

const result = await account.waitForExecution(transaction)

For a complete walkthrough, see the Quickstart guide.

Migrating from Orchestrator SDK

To migrate from the Orchestrator SDK, replace all imports of @rhinestone/orchestrator-sdk with @rhinestone/sdk/orchestrator.

Let us know if you encounter any issues!

Contributing

For feature or change requests, feel free to open a PR, start a discussion or get in touch with us.

About

End-to-end account abstraction and chain abstraction toolkit

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 11