Skip to main content

DerivationStyle

Enum DerivationStyle 

Source
#[non_exhaustive]
pub enum DerivationStyle { Standard, Trust, LedgerLive, Legacy, }
Expand description

Solana derivation path styles for different wallet software.

Different hardware and software wallets use different derivation paths even though they all follow BIP-44 principles. This enum provides the most common styles for maximum compatibility.

§Path Specifications (as of 2026)

  • Standard (Phantom/Backpack): m/44'/501'/{index}'/0'
  • Trust: m/44'/501'/{index}'
  • Ledger Live: m/44'/501'/{index}'/0'/0'
  • Legacy: m/501'/{index}'/0/0 (deprecated)

§Example

use kobe_sol::DerivationStyle;

let style = DerivationStyle::Standard;
assert_eq!(style.path(0), "m/44'/501'/0'/0'");
assert_eq!(style.path(1), "m/44'/501'/1'/0'");

let trust = DerivationStyle::Trust;
assert_eq!(trust.path(0), "m/44'/501'/0'");

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Standard

Standard BIP44-Change path used by Phantom and Backpack.

Path format: m/44'/501'/{index}'/0'

This is the most widely adopted standard where:

  • Purpose: 44’ (BIP-44)
  • Coin type: 501’ (Solana)
  • Account: variable (hardened)
  • Change: 0’ (hardened, fixed)

Used by: Phantom, Backpack, Solflare, Trezor, Exodus, Magic Eden

§

Trust

Trust Wallet / Ledger native derivation path.

Path format: m/44'/501'/{index}'

BIP-44 path without change component:

  • Purpose: 44’ (BIP-44)
  • Coin type: 501’ (Solana)
  • Account: variable (hardened)

Used by: Trust Wallet, Ledger (native), Keystone

§

LedgerLive

Ledger Live derivation path (account-based).

Path format: m/44'/501'/{index}'/0'/0'

Used by Ledger Live application:

  • Purpose: 44’ (BIP-44)
  • Coin type: 501’ (Solana)
  • Account: variable (hardened)
  • Change: 0’ (hardened, fixed)
  • Address index: 0’ (hardened, fixed)
§

Legacy

👎Deprecated: Use Standard style for new wallets. Legacy is only for recovering old Phantom/Sollet wallets.

Legacy derivation path (deprecated).

Path format: m/501'/{index}'/0/0

Used by older versions of Phantom and Sollet. Only use for recovering old wallets.

Implementations§

Source§

impl DerivationStyle

Source

pub fn path(self, index: u32) -> String

Generate the derivation path string for a given index.

§Arguments
  • index - The account index to derive
§Returns

A BIP-32 derivation path string.

Source

pub const fn name(self) -> &'static str

Get the human-readable name of this derivation style.

Source

pub const fn id(self) -> &'static str

Get a short identifier for CLI usage.

Source

pub const fn all() -> &'static [Self]

Get all available derivation styles.

Trait Implementations§

Source§

impl Clone for DerivationStyle

Source§

fn clone(&self) -> DerivationStyle

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DerivationStyle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DerivationStyle

Source§

fn default() -> DerivationStyle

Returns the “default value” for a type. Read more
Source§

impl Display for DerivationStyle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromStr for DerivationStyle

Source§

type Err = ParseDerivationStyleError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for DerivationStyle

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for DerivationStyle

Source§

fn eq(&self, other: &DerivationStyle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for DerivationStyle

Source§

impl Eq for DerivationStyle

Source§

impl StructuralPartialEq for DerivationStyle

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.