Solana Wallet Address Format Error Report
Date: January 2, 2026 Status: Open - Critical Component: Wallet Creation / Key Generation Provider: SolanaOASIS (ProviderType: 3)
Executive Summary
Solana wallets are being created successfully, but the generated wallet addresses are in Bitcoin script format (hex) instead of native Solana base58 format. This prevents users from receiving SOL tokens to the generated addresses.
Problem Description
When creating a Solana wallet through the API (/api/Wallet/avatar/{avatarId}/create-wallet with walletProviderType: 3), the wallet is created successfully, but the walletAddress field contains a Bitcoin P2PKH script (hexadecimal) instead of a valid Solana base58 address.
Current Behavior
Generated Wallet Address:
76a914075e11acdb931e47156248e0bfd8f095b5a00fa488acCharacteristics:
Length: 50 characters
Format: Hexadecimal (Bitcoin P2PKH script)
Starts with:
76a914Ends with:
88acResult: Invalid for Solana - cannot receive SOL tokens
Expected Behavior
Expected Wallet Address Format:
Encoding: Base58
Length: 32-44 characters
Format: Native Solana public key address
Example:
7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsUResult: Valid Solana address - can receive SOL tokens
Root Cause Analysis
Issue Location
The wallet creation flow uses KeyHelper.GenerateKeyValuePairAndWalletAddress(), which generates Bitcoin-style keys and addresses. This method does not have provider-specific logic for Solana.
Code Path:
WalletController.CreateWalletForAvatarByIdAsync()β
WalletManager.CreateWalletForAvatarByIdAsync()β
WalletManager.CreateWalletWithoutSaving()β
KeyManager.GenerateKeyPairWithWalletAddress(ProviderType.SolanaOASIS)β
KeyHelper.GenerateKeyValuePairAndWalletAddress()β Returns Bitcoin format
Current Implementation
File: OASIS Architecture/NextGenSoftware.OASIS.API.Core/Managers/KeyManager.cs
Problem: The method activates the Solana provider but still uses the default Bitcoin key generation logic.
Steps to Reproduce
Authenticate:
Create Solana Wallet:
Observe Response:
Verify Address Format:
Address starts with
76a914(Bitcoin P2PKH script prefix)Address is 50 characters (hexadecimal)
Address format is NOT valid Solana base58
Impact
Severity: CRITICAL
User Impact: Users cannot receive SOL tokens to generated wallet addresses
Functionality: Core wallet creation feature is non-functional for Solana
Business Impact: Solana integration is broken for wallet operations
Affected Operations
β Wallet creation (succeeds but with wrong format)
β Receiving SOL tokens (addresses are invalid)
β Sending SOL tokens (cannot use invalid addresses)
β Wallet balance queries (addresses don't exist on Solana network)
Configuration Status
Current Configuration
File: ONODE/NextGenSoftware.OASIS.API.ONODE.WebAPI/OASIS_DNA.json
β SolanaOASIS is configured and in AutoFailOverProviders β Provider configuration includes valid base58 keys
Solution Requirements
Required Changes
Integrate Solnet Library
Use Solnet.Wallet for Solana key generation
Generate Ed25519 keypairs (Solana standard)
Encode addresses in base58 format
Update KeyManager.GenerateKeyPairWithWalletAddress()
Add Solana-specific key generation logic
Use Solnet when
providerType == ProviderType.SolanaOASISMaintain backward compatibility for other providers
Alternative: Provider-Specific Key Generation
Add key generation method to
IOASISBlockchainStorageProviderinterfaceImplement in
SolanaOASISprovider classCall provider-specific method from
KeyManager
Implementation Approach
Recommended: Update KeyManager.GenerateKeyPairWithWalletAddress() to use Solnet for Solana:
Related Documentation
SOLANA_WALLET_CREATION_FIX.md - Previous fix documentation (STAR API)
Solana Documentation: https://docs.solana.com/developing/programming-model/accounts
Solnet.Wallet: https://github.com/bmresearch/Solnet
Test Cases
Test Case 1: Wallet Creation
Action: Create Solana wallet via API
Expected: Wallet address is base58, 32-44 characters
Actual: Wallet address is hex, 50 characters (Bitcoin format)
Status: β FAIL
Test Case 2: Address Validation
Action: Validate generated address format
Expected: Address matches Solana base58 pattern
Actual: Address matches Bitcoin script pattern
Status: β FAIL
Test Case 3: Provider Registration
Action: Check if SolanaOASIS is registered at boot
Expected: Provider registered and available
Actual: Provider configuration present, registration status unclear from logs
Status: β οΈ PARTIAL
Current Status
β Wallet creation endpoint is functional
β Provider type is correctly set (SolanaOASIS = 3)
β Provider configuration is correct (base58 keys in OASIS_DNA.json)
β Provider activation code is in place
β Key generation produces Bitcoin format instead of Solana format
β Generated addresses cannot receive SOL tokens
Next Steps
Immediate: Implement Solana-specific key generation using Solnet
Testing: Verify generated addresses are valid Solana base58 format
Validation: Test receiving SOL tokens to generated addresses
Documentation: Update SOLANA_WALLET_CREATION_FIX.md with solution
Notes
The STAR API implementation has a working Solana wallet creation (see SOLANA_WALLET_CREATION_FIX.md)
This codebase may need similar Solnet integration
The architecture prefers provider activation over architectural changes (per user request)
Provider activation is working, but key generation still uses default Bitcoin logic
Report Generated: January 2, 2026 Last Updated: January 2, 2026
Last updated