Restore Keypair
Learn how to restore a Solana keypair from existing private key bytes for wallet recovery operations.
Code Example
#!/usr/bin/env python3
"""
Solana Cookbook - How to Restore a Keypair
"""
from solders.keypair import Keypair
def main():
keypair_bytes = bytes(
[
174,
47,
154,
16,
202,
193,
206,
113,
199,
190,
53,
133,
169,
175,
31,
56,
222,
53,
138,
189,
224,
216,
117,
173,
10,
149,
53,
45,
73,
251,
237,
246,
15,
185,
186,
82,
177,
240,
148,
69,
241,
227,
167,
80,
141,
89,
240,
121,
121,
35,
172,
247,
68,
251,
226,
218,
48,
63,
176,
109,
168,
89,
238,
135,
]
)
signer = Keypair.from_bytes(keypair_bytes)
print(signer.pubkey())
if __name__ == "__main__":
main()
Explanation
This example demonstrates how to restore a keypair from existing private key bytes:
- Define Private Key: Create a bytes array containing the 64-byte private key
- Restore Keypair: Use
Keypair.from_bytes()to reconstruct the keypair - Access Public Key: The restored keypair provides access to the public key
- Verify Restoration: Print the public key to verify successful restoration
Key Concepts
- Keypair Restoration: Rebuilding a keypair from stored private key bytes
- Private Key Format: Solana private keys are 64 bytes (32 bytes seed + 32 bytes public key)
- Deterministic Recovery: Same private key bytes always produce the same keypair
- Wallet Recovery: Essential for restoring access to existing accounts
Usage
To run this example:
-
Install required dependencies:
pip install solders -
Run the script:
python restore_keypair.py
The output will show the public key address corresponding to the restored keypair.
Common Use Cases
From File Storage
# Read private key from file
with open("private_key.txt", "rb") as f:
private_key_bytes = f.read()
keypair = Keypair.from_bytes(private_key_bytes)
From Base58 String
import base58
# Convert from base58 string format
private_key_string = "your_base58_private_key_here"
private_key_bytes = base58.b58decode(private_key_string)
keypair = Keypair.from_bytes(private_key_bytes)
From Environment Variable
import os
import base58
# Load from environment variable
private_key_env = os.getenv("SOLANA_PRIVATE_KEY")
if private_key_env:
private_key_bytes = base58.b58decode(private_key_env)
keypair = Keypair.from_bytes(private_key_bytes)
Security Considerations
- Secure Storage: Never store private keys in plain text
- Environment Variables: Use secure environment variables for production
- File Permissions: Ensure private key files have restricted permissions
- Backup Verification: Always verify restored keypairs match expected addresses
Error Handling
try:
keypair = Keypair.from_bytes(keypair_bytes)
print(f"Successfully restored keypair: {keypair.pubkey()}")
except Exception as e:
print(f"Failed to restore keypair: {e}")
Note: The example shows a sample private key for demonstration. Never use this key for actual transactions as it's publicly visible.