DEV Community

De Catalyst
De Catalyst

Posted on

Stop Building Wallet Infrastructure From Scratch

Every time I needed to add wallets to an app, the same nightmare started. Wire up RPC nodes. Pick a signing library. Figure out key storage. Handle different chains differently. Repeat for every project.

I got tired of it. So I built Signet — a single API that handles wallet creation, transaction signing, and intent-based operations (swap, stake, bridge) across 12+ chains. Keys are encrypted with AES-256-GCM and never leave the server unencrypted. The core is written in Rust.

Here's how fast you can go from zero to working wallets.

Install the SDK

Python:

pip install vylth-signet
Enter fullscreen mode Exit fullscreen mode

TypeScript:

npm install @vylth/signet
Enter fullscreen mode Exit fullscreen mode

Create a Wallet — 3 Lines

Grab your API key and secret from the Signet Console, then:

Python:

from signet import Client

client = Client(api_key="sk_live_...", secret="ss_live_...")
wallet = client.wallets.create(chain="ethereum", label="my-wallet")

print(wallet.address)  # 0x1a2b3c...
Enter fullscreen mode Exit fullscreen mode

TypeScript:

import { Signet } from '@vylth/signet';

const signet = new Signet({
  apiKey: 'sk_live_...',
  secret: 'ss_live_...',
});

const wallet = await signet.wallets.create({
  chain: 'ethereum',
  label: 'my-wallet',
});

console.log(wallet.address); // 0x1a2b3c...
Enter fullscreen mode Exit fullscreen mode

That's it. One call. The wallet is created, the private key is encrypted and stored, and you get back the address. No RPC node setup, no key management code, no ethers.js boilerplate.

Sign a Transaction

result = client.wallets.sign(wallet.id, tx_data="0x...")
print(result.signature)
Enter fullscreen mode Exit fullscreen mode

Or sign and broadcast in one call:

tx = client.wallets.send(wallet.id, tx_data="0x...")
print(tx.tx_hash)  # Transaction hash on-chain
Enter fullscreen mode Exit fullscreen mode

Intent Actions — Swap, Stake, Bridge

This is where it gets interesting. Instead of wiring up Uniswap routers or Lido contracts yourself, just tell Signet what you want to do:

Swap tokens:

tx = client.wallets.swap(
    wallet.id,
    from_token="ETH",
    to_token="USDC",
    amount="0.5",
    slippage_bps=50,
)
print(tx.tx_hash)
Enter fullscreen mode Exit fullscreen mode

Stake ETH:

tx = client.wallets.stake(wallet.id, protocol="lido", amount="1.0")
Enter fullscreen mode Exit fullscreen mode

Bridge to another chain:

tx = client.wallets.bridge(
    wallet.id,
    to_chain="polygon",
    token="USDC",
    amount="100",
)
Enter fullscreen mode Exit fullscreen mode

Transfer tokens:

tx = client.wallets.transfer(
    wallet.id,
    to="0xRecipientAddress...",
    amount="0.1",
    token="USDC",
)
Enter fullscreen mode Exit fullscreen mode

All of these are single API calls. Signet handles the routing, gas estimation, and broadcasting.

Supported Chains

Signet supports EVM chains and Solana:

  • Ethereum, Polygon, Arbitrum, Optimism, Base, Avalanche, BSC
  • Solana
  • Tron, Fantom, Cronos, Gnosis

Same API, same SDK, regardless of the chain. Create an Ethereum wallet and a Solana wallet the same way — just change the chain parameter.

Check Your Balance

balance = client.wallets.balance(wallet.id)
print(f"{balance.balance} {balance.symbol}")
Enter fullscreen mode Exit fullscreen mode

Audit Log

Every action is logged. Query it programmatically:

logs = client.audit(wallet_id=wallet.id, limit=10)
for entry in logs:
    print(f"{entry.action}{entry.created_at}")
Enter fullscreen mode Exit fullscreen mode

How Keys Are Stored

  • Every private key is encrypted with AES-256-GCM using a unique nonce
  • Keys are decrypted only in memory at the moment of signing, then wiped using Rust's zeroize crate
  • Signet is non-custodial by design — you can export your keys at any time:
exported = client.wallets.export(wallet.id)
print(exported.private_key)  # Your key, your control
Enter fullscreen mode Exit fullscreen mode

Why I Built This

I was building apps that needed wallets — bots, payment flows, DeFi automation — and every time I had to:

  1. Spin up RPC endpoints
  2. Pick and configure a signing library
  3. Build key storage with encryption
  4. Handle gas estimation per chain
  5. Wire up protocol-specific contracts for swaps/stakes

It was the same 2-3 days of setup for every project. Signet collapses all of that into one API.

Get Started

  • Console: signet.vylth.com
  • Free tier: 1,000 requests/month, 5 wallets
  • SDKs: Python, TypeScript, Go
  • Use code LAUNCH for 50% off your first month on any paid plan

If you're building anything that touches wallets — whether it's a trading bot, a payment system, or a full DeFi app — give it a try and let me know what you think.

Top comments (0)