An example Keyspace client implemented in TypeScript. This client is the basis for the Keyspace documentation and will eventually become a client library for Keyspace.
Install Dependencies
bun install
Create Private Keys
secp256k1 (Ethereum EOA)
cast wallet new
P256 (secp256r1, Passkeys)
bun run scripts/create-p256-key.ts
Configuration
bun automatically loads environment variables from a .env file. Create a .env file in the root of the project.
touch .env
Environment Variable
Description
RPC_URL
Ethereum RPC URL for general RPC calls
BUNDLER_RPC_URL
Ethereum RPC URL for ERC-4337 calls
KEYSPACE_RPC_URL
Keyspace RPC URL
RECOVERY_RPC_URL
Recovery Service RPC URL
Scripts
Get Keyspace Key
bun run scripts/get-keyspace-key.ts
Argument
Environment Variable
Description
--private-key
PRIVATE_KEY
secp256k1 private key or P256 JWK
--signature-type
secp256k1 (default) or webauthn
Send ETH
bun run scripts/send-eth.ts
Argument
Environment Variable
Description
--keyspace-key
KEYSPACE_KEY
The wallet's Keyspace key
--private-key
PRIVATE_KEY
secp256k1 private key or P256 JWK
--signature-type
secp256k1 (default) or webauthn
Make sure there's ETH in the account you're sending from. You can get the Ethereum address of the smart wallet by running bun run scripts/get-keyspace-key.ts.