ข้ามไปยังเนื้อหาหลัก

เส้นทาง Derivation BIP-44: วิธีการสร้างที่อยู่ของ Wallet

เมื่อคุณตั้งค่า cryptocurrency wallet และมันสร้าง seed phrase แล้ว seed ตัวเดียวนั้นจำเป็นต้องสร้างที่อยู่นับพันแห่งจากโครงข่าย blockchain ที่แตกต่างกันหลายสิบแห่ง — แต่ละแห่งมี private key, public key และรูปแบบที่อยู่ของตัวเอง BIP-44 กำหนดโครงสร้างองค์กรที่ทำให้เป็นไปได้: ต้นไม้ลำดับชั้นของคีย์ที่ได้มาจากรากเดียว พร้อมกับสัญกรณ์เส้นทางมาตรฐานที่รับรองว่า wallet ยังคงเข้ากันได้

การทำความเข้าใจเส้นทาง derivation เป็นสิ่งสำคัญสำหรับใครก็ตามที่ต้องการกู้คืนเงินโดยใช้ wallet ที่แตกต่าง จัดการพอร์ตโฟลิโอหลายเหรียญ หรือแก้ไขปัญหาบัญชีที่ "หายไป" หลังจากกู้คืน seed phrase

ลำดับชั้นการหาอนุพันธ์ของคีย์

BIP-32: รากฐาน

BIP-44 สร้างจาก BIP-32 (Hierarchical Deterministic Wallets) ซึ่งกำหนดวิธีการหาคู่คีย์ต้นไม้ไม่จำกัดจากคีย์หลักเดียว BIP-32 แนะนำแนวคิดพื้นฐานสองประการ:

Child key derivation — จากคีย์แบบขยาย (private key หรือ public key รวมกับ chain code) คุณสามารถหา child keys ได้ในดัชนีต่างๆ แต่ละ child สามารถหา children ของตัวเองได้ทำให้เกิดต้นไม้

Hardened vs. normal derivation — Normal derivation อนุญาตให้หา child public keys จาก parent public key (มีประโยชน์สำหรับ watch-only wallets) Hardened derivation ต้องใช้ parent private key และให้การแยกความปลอดภัยที่แข็งแกร่งขึ้นระหว่างสาขา ดัชนี Hardened เขียนตามธรรมเนียมด้วยเครื่องหมายวรรคตอน (เช่น 44')

BIP-43: ฟิลด์ Purpose

BIP-43 กำหนดข้อตกลงของการใช้ระดับแรกของต้นไม้ derivation เพื่อระบุ "purpose" — โดยพื้นฐานแล้วคือมาตรฐาน BIP ที่ตามมา BIP-44 ใช้ purpose 44', BIP-49 ใช้ 49' (สำหรับที่อยู่ P2SH ที่เข้ากันได้กับ SegWit), BIP-84 ใช้ 84' (สำหรับ SegWit แบบเนทีฟ) และ BIP-86 ใช้ 86' (สำหรับ Taproot)

BIP-44: เส้นทางแบบเต็ม

BIP-44 กำหนดเส้นทาง derivation ห้าระดับ:

m / purpose' / coin_type' / account' / change / address_index

แต่ละระดับมีความหมายที่เฉพาะเจาะจง:

ระดับฟิลด์Hardenedคำอธิบาย
1Purposeใช่ (44')ระบุมาตรฐาน derivation
2Coin Typeใช่ระบุ cryptocurrency
3Accountใช่แยกเงินเป็นบัญชีตรรมชาติ
4Changeไม่ (0 หรือ 1)External (0) หรือ internal change (1)
5Address Indexไม่ (0, 1, 2...)หมายเลขที่อยู่ลำดับ

Purpose (44')

ฟิลด์ purpose มักจะเป็น 44' สำหรับ derivation มาตรฐาน BIP-44 ค่าทั่วไปอื่นๆ:

  • 49' — BIP-49 (P2SH-wrapped SegWit)
  • 84' — BIP-84 (Native SegWit / Bech32)
  • 86' — BIP-86 (Taproot / P2TR)

สิ่งเหล่านี้กำหนด ประเภทที่อยู่ ที่แตกต่างกันและอธิบายไว้ใน BIP ตามลำดับ

Coin Type

Coin type ระบุว่า derived keys เป็นของ cryptocurrency ใด ประเภท coin ที่จดทะเบียนรวมถึง:

CoinCoin TypePath Prefix
Bitcoin0'm/44'/0'
Bitcoin Testnet1'm/44'/1'
Litecoin2'm/44'/2'
Dogecoin3'm/44'/3'
Ethereum60'm/44'/60'
Ethereum Classic61'm/44'/61'
Cosmos118'm/44'/118'
Solana501'm/44'/501'
Cardano1815'm/44'/1815'
Polkadot354'm/44'/354'

ทะเบียนประเภท coin ที่สมบูรณ์ได้รับการดูแลใน SLIP-44 และมีรายการมากกว่า 1,000 รายการ

Account

ระดับ account ช่วยให้ผู้ใช้สามารถสร้างบัญชีตรรมชาติแยกต่างหากภายในกระเป๋าเดียวกัน คล้ายกับการมีหลายบัญชีธนาคาร Account 0' เป็นค่าเริ่มต้น:

  • m/44'/0'/0' — Bitcoin Account 0
  • m/44'/0'/1' — Bitcoin Account 1
  • m/44'/60'/0' — Ethereum Account 0

บัญชีใช้ hardened derivation ซึ่งหมายความว่าการรู้ extended public key ของบัญชีหนึ่งไม่เปิดเผยคีย์ของบัญชีอื่น สิ่งนี้ให้ privacy isolation ระหว่างบัญชี

Change

ระดับ change แยกความแตกต่างระหว่าง:

  • 0 (External chain) — ที่อยู่ที่มอบให้ผู้อื่นเพื่อรับการชำระเงิน
  • 1 (Internal chain) — ที่อยู่ที่ใช้โดย wallet ภายในเพื่อคืน change ให้ตัวเอง

ในโมเดล UTXO ของ Bitcoin เมื่อคุณใช้จ่าย transaction output ต้องใช้ output ทั้งหมด หากคุณส่ง 0.5 BTC จาก 1 BTC output เงิน 0.5 BTC ที่เหลือจะถูกส่งไปยังที่อยู่ change ที่ควบคุมโดย wallet ของคุณ Change chain เก็บที่อยู่เหล่านี้แยกจากที่อยู่การรับเพื่อวัตถุประสงค์ในการจัดระเบียบและ privacy

Ethereum และ blockchain อื่นๆ ที่ใช้บัญชี ไม่ใช้ change chain ในลักษณะเดียวกัน เนื่องจากไม่มีโมเดล UTXO Ethereum wallets มักใช้เฉพาะ external chain (change = 0)

Address Index

Address index คือหมายเลขลำดับของที่อยู่ภายใน chain Wallets เพิ่มตัวนับนี้ทุกครั้งที่สร้างที่อยู่ใหม่:

  • m/44'/0'/0'/0/0 — ที่อยู่รับที่หนึ่ง
  • m/44'/0'/0'/0/1 — ที่อยู่รับที่สอง
  • m/44'/0'/0'/0/2 — ที่อยู่รับที่สาม
  • m/44'/0'/0'/1/0 — ที่อยู่ change ที่หนึ่ง
  • m/44'/0'/0'/1/1 — ที่อยู่ change ที่สอง

เส้นทาง Derivation สำหรับ Cryptocurrency หลัก

Bitcoin

Bitcoin ใช้หลายเส้นทาง derivation ที่สอดคล้องกับ ประเภทที่อยู่ ที่แตกต่างกัน:

StandardPathAddress TypePrefixExample
BIP-44m/44'/0'/0'Legacy (P2PKH)1...1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
BIP-49m/49'/0'/0'SegWit-compat (P2SH-P2WPKH)3...3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
BIP-84m/84'/0'/0'Native SegWit (P2WPKH)bc1q...bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
BIP-86m/86'/0'/0'Taproot (P2TR)bc1p...bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297

สำคัญสำหรับการกู้คืน: หากคุณกู้คืน seed phrase ในกระเป๋าใหม่และไม่เห็นบัญชีของคุณ กระเป๋าอาจกำลังสแกนเส้นทาง derivation ต่างจากเส้นทางที่ใช้โดยกระเป๋าเดิมของคุณ ลองสลับระหว่างประเภทที่อยู่ Legacy, SegWit และ Taproot หรือระบุเส้นทาง derivation ด้วยตนเอง

Ethereum

Ethereum มักใช้เส้นทาง derivation ตัวเดียว:

m/44'/60'/0'/0/0   — บัญชีแรก
m/44'/60'/0'/0/1 — บัญชีที่สอง (บาง wallet)

อย่างไรก็ตาม บาง wallet (เช่น Ledger Live) ได้รับ derive บัญชีหลายรายการในระดับบัญชี:

m/44'/60'/0'/0/0   — Account 0
m/44'/60'/1'/0/0 — Account 1
m/44'/60'/2'/0/0 — Account 2

ขณะที่คนอื่นๆ (เช่น MetaMask) เพิ่มดัชนีที่อยู่:

m/44'/60'/0'/0/0   — Account 1
m/44'/60'/0'/0/1 — Account 2
m/44'/60'/0'/0/2 — Account 3

ความไม่สอดคล้องนี้อาจทำให้เกิดความสับสนระหว่างการกู้คืน จดบันทึกซอฟต์แวร์ wallet ใดที่สร้าง seed phrase ของคุณ

Solana

Solana ใช้ Ed25519 (elliptic curve ที่แตกต่างจาก secp256k1) พร้อมเส้นทาง:

m/44'/501'/0'      — Phantom, Solflare
m/44'/501'/0'/0' — การใช้งานบางอย่าง

Cardano

Cardano ใช้โครงการหาอนุพันธ์คีย์ที่แตกต่าง (Ed25519-BIP32 / CIP-1852) พร้อมเส้นทาง:

m/1852'/1815'/0'/0/0  — ที่อยู่ payment แรก
m/1852'/1815'/0'/2/0 — คีย์ staking แรก

สังเกตฟิลด์ purpose 1852' (CIP-1852 ตั้งชื่อตามปีเกิดของ Ada Lovelace) แทน 44'

Hardened vs. Normal Derivation

การทำความเข้าใจความแตกต่างระหว่าง hardened และ normal derivation มีความสำคัญต่อความปลอดภัย

Normal (Non-Hardened) Derivation

  • ใช้ดัชนี 0 ถึง 2^31 - 1
  • Child public keys สามารถหามาจาก parent extended public key ได้โดยไม่ต้องใช้ parent private key
  • ข้อดี: เปิดใช้งาน watch-only wallets (เช่น เซิร์ฟเวอร์สามารถสร้างที่อยู่รับใหม่โดยใช้เพียง xpub โดยไม่ต้องถือ private keys)
  • ความเสี่ยง: หากผู้โจมตีได้ child private key และ parent extended public key ทั้งสองคนพวกเขาสามารถคำนวณ parent private key และ sibling private keys ทั้งหมดได้

Hardened Derivation

  • ใช้ดัชนี 2^31 ถึง 2^32 - 1 (เขียนเป็น 0' ถึง 2^31 - 1')
  • ต้องใช้ parent extended private key เพื่อหา child keys
  • ข้อดี: การหดโขมง child key ไม่ทำให้ parent หรือ siblings ถูกหดโขมง
  • ความเสี่ยง: ไม่สามารถหา child public keys จาก parent extended public key เพียงอย่างเดียว (ไม่มีฟังก์ชัน watch-only ที่ระดับนี้)

ทำไม BIP-44 ใช้ Hardened Derivation สำหรับสามระดับแรก

Purpose, coin type และ account ทั้งหมดเป็น hardened (44'/0'/0') เพราะว่า:

  1. การหดโขมง address private key (ที่ระดับ non-hardened 5) ไม่ควรหดโขมง account
  2. บัญชีควรแยกจากกันและกัน
  3. Coins ต่างๆ ควรแยกจากกันและกัน

ระดับ change และ address index ไม่ได้เป็น hardened (0/0) เพื่ออนุญาตให้ watch-only wallets สร้างที่อยู่รับโดยไม่ต้องใช้ master private key

Gap Limit

Wallets ไม่สแกนจำนวนที่อยู่ไม่จำกัด ข้อกำหนด BIP-44 แนะนำแนวคิดของ "gap limit" — จำนวนที่อยู่ที่ไม่ได้ใช้ต่อเนื่องที่ wallet จะสแกนก่อนหยุด Gap limit มาตรฐานคือ 20

หากคุณสร้างที่อยู่ 0 ถึง 25 แต่มีเพียง 0, 5, 10 และ 25 ที่เคยรับเงินมา wallet จะ:

  1. สแกนที่อยู่ 0 — มีธุรกรรม ดำเนินการต่อ
  2. สแกนที่อยู่ 1–4 — ไม่ได้ใช้ แต่อยู่ในขอบเขต gap limit
  3. สแกนที่อยู่ 5 — มีธุรกรรม รีเซ็ต gap counter
  4. ดำเนินการต่อจนกว่าจะพบ 20 ที่อยู่ต่อเนื่องที่ไม่มีธุรกรรม

ปัญหา: หากคุณสร้างที่อยู่มากมายนอกเหนือ gap limit (ทั่วไปกับ payment processors สำหรับผู้ประกอบการ) การกู้คืน wallet อาจไม่พบเงินทั้งหมดของคุณ คุณอาจต้องเพิ่ม gap limit ในการตั้งค่า wallet ระหว่างการกู้คืน

SafeSeed Tool

ใช้ SafeSeed Key Derivation Tool เพื่อสำรวจเส้นทาง BIP-44 derivation แบบโต้ตอบ ป้อน seed phrase (ใช้วลีทดสอบ ไม่ใช่อันจริงของคุณ) และดูว่าเส้นทาง derivation ที่แตกต่างกันสร้าง address ที่แตกต่างกันอย่างไรสำหรับ coins ที่แตกต่างกัน การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ

Extended Keys: xpub, ypub, zpub

Extended keys เข้ารหัสวัสดุคีย์พร้อมกับข้อมูลเกี่ยวกับเส้นทาง derivation:

PrefixStandardAddress TypeNetwork
xpub / xprvBIP-44Legacy (P2PKH)Mainnet
ypub / yprvBIP-49SegWit-compat (P2SH-P2WPKH)Mainnet
zpub / zprvBIP-84Native SegWit (P2WPKH)Mainnet
tpub / tprvBIP-44Legacy (P2PKH)Testnet

Prefix บอกซอฟต์แวร์ wallet ว่าประเภทที่อยู่ใดที่ต้อง derive หากคุณ export xpub และ import มันลงใน wallet ที่คาดหวัง zpub คุณจะเห็นที่อยู่ที่แตกต่าง (ไม่ถูกต้อง)

Extended Public Key Privacy Warning

การแบ่งปัน xpub (หรือ ypub/zpub) อนุญาตให้ผู้รับสามารถ:

  • Derive ที่อยู่รับที่ผ่านมาและอนาคตทั้งหมด
  • ติดตามประวัติธุรกรรมและบัญชีที่สมบูรณ์ของคุณ
  • เชื่อมโยงที่อยู่ของคุณเข้าด้วยกัน ทำลายประโยชน์ privacy ของการใช้ที่อยู่ใหม่ต่อธุรกรรม

อย่าแบ่งปัน extended public keys ยกเว้นกับบุคคลที่คุณเชื่อใจอย่างเต็มที่ด้วยความเป็นส่วนตัวทางการเงินของคุณ (เช่น บัญชีชำรุด watch-only wallet บนเซิร์ฟเวอร์ของคุณเอง)

Common Derivation Path Problems

"ฉันกู้คืน seed phrase ของฉันแล้ว แต่บัญชีของฉันแสดง 0"

นี่คือปัญหาเส้นทาง derivation ที่พบบ่อยที่สุด สาเหตุที่เป็นไปได้:

  1. ประเภทที่อยู่ผิด — คุณใช้ที่อยู่ SegWit (BIP-84, m/84'/0'/0') แต่ wallet ใหม่กำลังสแกนเส้นทาง Legacy (BIP-44, m/44'/0'/0') สลับประเภทที่อยู่
  2. Coin type ผิด — Wallets บางตัวใช้ coin type 0 สำหรับ coins ทั้งหมดในการใช้งานก่อนหน้า
  3. บัญชีผิด — คุณอาจใช้บัญชี 1 หรือสูงกว่า
  4. Gap limit — ที่อยู่ที่ใช้ของคุณอยู่นอกเหนือ gap limit เริ่มต้นที่ 20
  5. Custom derivation path — Wallets บางตัวใช้เส้นทาง non-standard

"Wallets สอง wallet ของฉันแสดงที่อยู่ที่แตกต่างจาก seed phrase เดียวกัน"

หากกระเป๋าสองใบสร้างที่อยู่ที่แตกต่างจาก seed phrase เดียวกัน พวกเขากำลังใช้เส้นทาง derivation หรือประเภทที่อยู่ที่แตกต่างกัน ตรวจสอบการตั้งค่า derivation ใน wallets ทั้งสอง

Recovery Checklist

เมื่อกู้คืน wallet จาก seed phrase:

  1. ยืนยันว่า wallet รองรับ BIP-39
  2. เลือกประเภทที่อยู่ที่ถูกต้อง (Legacy, SegWit หรือ Taproot)
  3. ตรวจสอบเส้นทาง derivation ตรงกับ wallet เดิม
  4. เพิ่ม gap limit หากคุณใช้ที่อยู่จำนวนมาก
  5. ตรวจสอบบัญชีทั้งหมด (ไม่เพียงแค่บัญชี 0) หากคุณสร้างบัญชีหลายบัญชี

Advanced: Custom Derivation Paths

บางกรณีการใช้งานขั้นสูงต้องการ custom derivation paths:

  • Multi-signature setups — BIP-48 กำหนด derivation paths สำหรับ multisig wallets: m/48'/0'/0'/2' (สำหรับ native SegWit multisig)
  • Lightning Network — Lightning implementations บางตัวใช้ custom derivation paths สำหรับ channel keys
  • Privacy wallets — Wasabi และ wallets อื่นๆ ที่เน้น privacy อาจใช้เส้นทางเฉพาะ

จดบันทึก derivation paths ที่คุณใช้เสมอ หากคุณไม่สามารถสร้างเส้นทาง exact ซ้ำได้ คุณไม่สามารถกู้คืนเงินได้

FAQ

Derivation path ใน cryptocurrency คืออะไร?

Derivation path คือสัญกรณ์ที่มีโครงสร้างที่ระบุวิธีการหา key หรือ address โดยเฉพาะจาก master seed ใน hierarchical deterministic (HD) wallet ปฏิบัติตามรูปแบบ m/purpose'/coin_type'/account'/change/address_index โดยแต่ละระดับจะช่วยลดเหลือคีย์เฉพาะในต้นไม้ derivation

ทำไม cryptocurrencies ที่แตกต่างกันจึงใช้ coin types ที่แตกต่างกัน?

Coin types ที่แตกต่างกันรับรองว่า seed phrase เดียวกันสร้าง keys ที่แยกและไม่เกี่ยวข้องสำหรับ blockchains แต่ละอัน สิ่งนี้ป้องกันการรบกวน cross-chain โดยไม่ตั้งใจและรับรองว่าการหดโขมง keys บน chain หนึ่งไม่ส่งผลกระทบต่อ keys บน chain อื่น

ฉันสามารถใช้ seed phrase เดียวกันสำหรับ Bitcoin และ Ethereum ได้หรือ?

ได้ BIP-39 seed phrase เดียวกันสามารถ derive keys สำหรับ Bitcoin และ Ethereum (และ cryptocurrencies อื่นๆ จำนวนมาก) ได้ พวกเขาใช้เส้นทาง derivation ที่แตกต่างกัน — Bitcoin ที่ m/44'/0'/0' และ Ethereum ที่ m/44'/60'/0' — ดังนั้นคีย์และที่อยู่ที่ได้รับมา จึงเป็นอิสระโดยสิ้นเชิง

เครื่องหมายวรรคตอน (') ในเส้นทาง derivation หมายถึงอะไร?

เครื่