Seed Phrase คืออะไร ทำไมถึงสำคัญ

Seed Phrase คืออะไร ทำไมถึงสำคัญ

หลาย ๆ คนยังไม่เข้าใจการทำงานของ Seed phrase ทำให้มีคำถามมากมายว่า ทำแบบโน้นแบบนี้ได้ไหม และไม่ได้ตระหนักถึงความสำคัญของ Seed phrase เพราะความเข้าใจผิดคิดว่ามันเหมือนกับ Password ทำให้คิดว่าถ้าลืม หรือสูญหายก็คงมีวิธีกู้กลับมาได้ ความเข้าใจเดิม ๆ เอามาใช้กับในโลกคริปโทฯ ไม่ได้เลย ความเข้าใจผิด ๆ หลาย ๆ อย่างทำให้คนสูญเสียเหรียญไปแล้วมากมาย หนึ่งในนั้นก็มีผู้เขียนด้วย นั่นจึงเป็นเหตุให้ผมเข้าใจเรื่องพวกนี้เป็นอย่างดีและต้องคอยย้ำเตือนกันตลอด


Seed กับ Seed Phrase (บางทีเราก็ใช้คำว่า Seed Word) ไม่เหมือนกัน


คำว่า Phrase มันหมายถึงวลี ดังนั้นบางทีก็เรียกเป็น Word ที่แปลว่าคำซึ่งให้ความหมายไม่ได้ต่างกัน Seed Phrase จึงหมายถึงชุดของวลี หรือคำที่ประกอบรวมกันแล้วได้เป็น Seed นั่นเอง ดังนั้นถ้าแปลง่ายๆ

“Seed เป็นผลลัพท์ของ Seed Phrase นั่นเอง” 


Seed ไม่ใช่ Private Key แต่มันเป็น Master Private Key


Seed ความหมายของมันคือเมล็ดพันธุ์ ผมชอบในความหมายที่คนคิดออกแบบมามาก เพราะมันหมายถึงเรามีเมล็ดพันธุ์ที่เราเอาลงไปปลูกเมื่อไหร่ก็ออกมาได้ผลเหมือนเดิม Seed ถูกใช้เป็นหัวเชื้อในการสร้าง Private Key ถูกนำเสนอขึ้นมาใน BIP32 (Bitcoin improvement proposal no 32) ทำให้เราสามารถสร้าง Wallet Address ได้แบบเรียกได้ว่าไม่จำกัด โดยมีโครงสร้างที่สามารถนำไปใช้กับหลาย ๆ Chain ได้ นั่นคือสาเหตุว่าทำไมกระเป๋า หรือ Hardware Wallet สามารถเก็บได้หลาย ๆ เหรียญ หลาย ๆ Chain ใน Seed Phrase ชุดเดียว

ถ้าดูจากรูปจะเห็นได้ว่า จะเห็นได้ว่าเราสามารถกำหนด  Path สำหรับเหรียญแต่ละ Chain ได้ ต้องเรียกได้ว่ามาตรฐานนี้ทำให้ Software ที่จัดการเรื่องกระเป๋าหรือ Wallet ใช้เป็นพื้นฐานเลยทีเดียว เป็นการยกระดับการเก็บบิทคอยน์และเหรียญอื่น ๆ ในยุคนั้น


การสร้าง Entropy​ 128 bits ใน Master Seed ทำยังไง


เอาจริง ๆ แค่คำว่า Entropy ก็ปวดหัวแล้วป่ะ มันเป็นคำที่ใช้ในควอนตัมฟิสิกส์ ที่อธิบายได้ยากมาก แล้วมนุษย์ธรรมดา ๆ อย่างเราจะทำยังไงล่ะ คนใช้ไม่ควรต้องมาปวดหัวครับ และผมขออธิบายเรื่อง Entropy ใน VDO นะครับ ขี้เกียจพิมพ์ ตามไปดูได้ที่ช่อง Bitcast ได้ครับ เพื่อไม่ให้คนใช้ปวดหัวเค้าจึงคิดมาตรฐานเพิ่มขึ้นมาใน BIP39 (Bitcoin improvement proposal no.39) ให้คุณ ซึ่งสามารถสร้าง Entropy 128 bits จากการสุ่มคำมา 12 คำ ซึ่งก็เพียงพอกับความปลอดภัยแล้ว แต่กระเป๋าส่วนใหญ่จะใช้ 24 คำ ซึ่งจะทำให้เราได้ Entropy 256 bits ใน Master seed


กระบวนการแปลงคำ 24 คำเป้น Entropy 256 bits ใน Master seed


ใน BIP39 จะมีคำทั้งหมด 2048 คำเราสามารถเข้าไปดูได้ที่นี่ ในการแปลงคำจากรายการที่เราสุ่มได้เราจำเป็นจะต้องรู้อีกสองเรื่องด้วยกันก็คือ 

1) การแปลงคำเป็นลำดับ(Decimal) 

ซึ่งลำดับทีได้จะเป็นตัวเลขในเชิงของคอมพิวเตอร์เรียกว่า Decimal ซึ่งวิธีการแปลงมันไม่ได้ยากเพราะว่าเรามีทะเบียนคำอยู่แล้ว เช่น คำว่า abadon เราไปดูในทะเบียนจะพบว่ามันเป็นลำดับที่ 1 หรือคำว่า charge อยู่ลำดับที่ 309 คำว่า undo อยู่ลำดับที่ 1896 คำว่า Zoo อยู่ลำดับสุดท้ายคือ  2048 ในกระบวนการนี้ยังถือได้ว่าคุยกันเป็นภาษามนุษย์อยู่ ยังไม่ได้ยากอะไร แล้วผมก็คิดว่าคนออกแบบเค้าก็ออกแบบมาดี คือให้คนรู้อยู่แค่นี้ ที่เหลือกให้ซอฟท์แวร์หรืออุปกรณ์ที่เรียกว่า Hardware Wallet จัดการ เพราะถ้าให้คุณจำคำ หรือจดคำยังไงก็ง่ายกว่าจด Entropy หรือ Master Private Key เองแน่นอน นั่นคือที่มาที่ไปของ BIP39

No

Seed Phrase

Index

1

differ

495

2

luxury

1067

3

chase

310

4

spawn

1670

5

february

675

6

phrase

1311

7

light

1037

8

hotel

882

9

since

1610

10

woman

2024

11

change

306

12

purchase

1394

13

addict

27

14

member

1111

15

song

1658

16

joy

965

17

drill

536

18

jungle

969

19

basic

153

20

usage

1917

21

dinner

499

22

program

1376

23

situate

1614

24

regret

1446



2) การแปลงลำดับเป็นเลขฐานสอง (Binary)

ในขั้นตอนของการแปลง Binary นั้น ถ้าเข้าใจ ในขั้นตอนนี้มันเริ่มเป็นภาษาคอมพิวเตอร์แล้ว คนจะเริ่มงง ๆ เพราะเรากำลังจะสื่อสารกับคอมพิวเตอร์เราต้องทำให้มันเป็น Binary ซึ่งจะมี 0 กับ 1 เท่านั้น โดยแต่ละตำแหน่งจะแปลงเป็น Binary ได้ 11 bits ถ้าเราจะให้ได้ Entropy 256 bits 11 bits x 24 = 264 ซึ่งจะเกิน 256 มา 8 bits ซึ่ง 8 bits สุดท้ายนี้แหละที่มันจะเอามาเป็น  Check Sum ในคำสุดท้าย นั่นคือสาเหตุที่มีหลาย ๆ คนถามผมว่า เราเลือกคำเองได้ไหม คำตอบคือ ได้นะ แต่คุณต้องมาคำนวน Check Sum คำสุดท้ายเอง ซึ่งมันต้องเข้าใจระดับนึงเลยถึงจะทำได้ ส่วนใหญ่ผมจึงตอบว่าทำไม่ได้ไป แต่จริง ๆ แล้วทำได้นะ เดี๋ยวผมจะเขียนบทความเกี่ยวกับวิธีการ Random คำเองโดยใช้ลูกเต่าในการสุ่มคำมาให้พร้อมกับวิธีการคำนวน Check Sum แต่วันนี้เข้าใจเรื่องการทำงานของ Seed Phrase ก่อนว่า ที่มาที่ไปมันเป็นยังไง ผมจะทำเปรียบเทียบให้ดูว่าในกรณีที่ผมแปลง Seed Phrase เป็น Binanry นั้นต้องทำอย่างไร

No

Seed Phrase

Index

Index -1

Binary

1

differ

495

494

00111101110

2

luxury

1067

1066

10000101010

3

chase

310

309

00100110101

4

spawn

1670

1669

11010000101

5

february

675

674

01010100010

6

phrase

1311

1310

10100011110

7

light

1037

1036

10000001100

8

hotel

882

881

01101110001

9

since

1610

1609

11001001001

10

woman

2024

2023

11111100111

11

change

306

305

00100110001

12

purchase

1394

1393

10101110001

13

addict

27

26

00000011010

14

member

1111

1110

10001010110

15

song

1658

1657

11001111001

16

joy

965

964

01111000100

17

drill

536

535

01000010111

18

jungle

969

968

01111001000

19

basic

153

152

00010011000

20

usage

1917

1916

11101111100

21

dinner

499

498

00111110010

22

program

1376

1375

10101011111

23

situate

1614

1613

11001001101

24

regret

1446

1445

10110100101

 

Index ต้องปรับให้เข้ากับฐานของ Binary

เราจำเป็นต้องเอา Index - 1 สาเหตุเพราะว่า ค่าที่เป็น Binary ที่เริ่มต้นในภาษาคอมพิวเตอร์คือ  00000000000 ดังน้นใน Index 1 หมายถึง 0 ใน Binary จึงทำให้เราต้องลบ 1 แล้วค่อยเอาค้านั้นไปแปลงเป็น Binary ซึ่งเราสามารถใช้ เครื่องมือออนไลน์ทั่วๆ ไปได้ หรือจะใช้ตารางนี้ในการเทียบ Binary ก็ได้เหมือนกัน


ถ้าเราแปลงถูกหมดรูปร่างหน้าตาของ Raw Binary Code เที่เป็น Entropy 256 bits หน้าตาจะประมาณนี้
00111101110 10000101010 00100110101 11010000101 01010100010 10100011110 10000001100 01101110001 11001001001 11111100111 00100110001 10101110001 00000011010 10001010110 11001111001 01111000100 01000010111 01111001000 00010011000 11101111100 00111110010 10101011111 11001001101 101


จะมีทั้งหมด 256 ตำแหน่งซึ่งตัวสุดท้ายใช้แค่สามตำแหน่งอีก 8 ตำแหน่งเป็น Check Sum หน้าตา Check Sum ก็จะประมาณนี้


Binary Check Sum: 10100101


หน้าตาของ BIP39 Seed  หน้าจะประมาณนี้ครับ 


384c3bf4ffd10ca423e4f25aeb8a69be90c5297f8f822676f85deef402c35eea0b712cdf51bdbd7d86f952c48acc5014a3fab133e749e78d2022ed01aa03c2b9


ซึ่งเราะจะได้ Seed ที่ทำหน้าที่เหมือน Master Private Key ที่ทำให้เราสามารถสร้างกระเป๋าได้เรียกว่าไม่จำกัดภายใต้ Seed นี้

บทสรุป

หวังว่าบทความนี้จะทำให้ทุกท่านเข้าใจเรื่องของหน้าที่ Seed Phrase มากขึ้น จากคำถามว่าเราสามารถเลือก คำเองเลยได้ไหม คำตอบก็คือ ได้แต่เราต้องรู้วิธีคำนวน Check Sum ในคำสุดท้ายซึ่งต้องใช้ความเข้าใจ แต่ถ้าทุกท่านสนใจจริง ๆ เดี๋ยวรอบทความที่  2 ที่เราจะใช้ลูกเต๋าในการสุ่มคำขึ้นมาเพื่อสร้าง Seed ครับ



Ref: 

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

https://trezor.io/learn/a/what-is-bip32

https://armantheparman.com/dicev1/

https://drive.google.com/file/d/1lzrMrCkEq6ylfWh1p-CT7i4EpqZEU_g9/view

กลับไปยังบล็อก

แสดงความคิดเห็น

โปรดทราบว่าความคิดเห็นจะต้องได้รับการอนุมัติก่อนที่จะได้รับการเผยแพร่