Skip to main content

Create Universal Signer

Overview

Wrap any EVM or non-EVM signer (ethers, viem, Solana, etc.) into a UniversalSigner so you can send cross-chain transactions on Push Chain without touching your on-chain code.

Prerequisite
Remember to install and import required libraries. See Quickstart for install steps.

Create Universal Signer

PushChain.utils.signer.toUniversal(signer): Promise<UniversalSigner>

The most common way to create a Universal Signer is by converting an existing signer from supported libraries (Ethers, Viem, Solana).

// Derive Ethers Signer
const provider = new ethers.providers.JsonRpcProvider('<RPC_URL>');
const ethersSigner = new ethers.Wallet('<PRIVATE_KEY>', provider);

// Convert to Universal Signer
const universalSigner = await PushChain.utils.signer.toUniversal(ethersSigner);
Provider determines the chain of the account
  • RPC URL picks the chain – Sepolia RPC → Ethereum Sepolia, Donut RPC → Push Chain Testnet

TheseArgumentsare mandatory

ArgumentsTypeDescription
signerviem.WalletClient | ethers.Wallet | UniversalSignerSkeletonThe signer to convert to Universal Signer format.
Returns `UniversalSigner` <object>
// UniversalSigner object
{
account: {
address: '0x32DE7d63C654d18F1382f5a30Ef69CB86b399ac7',
chain: 'eip155:11155111'
},
signMessage: [Function: signMessage],
signAndSendTransaction: [Function: signAndSendTransaction],
signTypedData: [Function: signTypedData]
}

Ready to dive in? Try the code in live playground 👇.

VIRTUAL NODE IDE

Next Steps