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

เส้นทาง 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 หมายถึงอะไร?​

เครื่