วันอังคาร, กรกฎาคม 17

รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!? (ตอนที่ 3 กำเนิด address)

รู้หรือไม่ Bitcoin Address เกิดขึ้นจากอะไร!?

ตอนที่ 3 กำเนิน address

จาก 2 ตอนแรกที่ผมกล่าวถึงเรื่องของการทำ encryption และ hash แล้วนั้น มาถึงตอนนี้เราจะเอาองค์ความรู้ใน 2   ตอนแรกมาสร้างเป็น address ของ bitcoin แล้วครับ

จริงๆ แล้วกระบวนการสร้าง address ของ bitcoin ไม่ได้ยากเย็นอะไรเลยครับ ซึ่ง step ของการสร้างเป็นดังนี้

  1. ทำการสร้างคู่กุญแจขึ้นมาก่อน ซึ่งการสร้างนี้เราจะได้ public key และ private key ขึ้นมา (เรื่องคู่กุญแจดูได้ในตอนที่ 1)
  2. นำเอา public key ในข้อที่ 1 มาสร้างเป็น hash โดยทำสิ่งที่เรียกว่า double hashing ซึ่ง step ในการสร้าง hash เป็นดังนี้
    • สร้าง hash ของ public key ด้วยวิธีการ SHA256
    • สร้าง hash อีกครั้งจากข้อ 2.1 ด้วยวิธีการ RIPEMD160

โดยผลลัพธ์จากการ hash นี้เราจะได้ข้อมูลที่มีขนาด 20 byte หรือ 160 bit ตามชื่อ hash function เลยครับ

  1. เอา hash จากข้อ 2 มา encode ด้วยวิธีการ Base58 Encoding ซึ่งเป็นการ encode ข้อมูลให้มีหน้าตาในแบบที่สามารถใช้ตัวอักษรภาษาอังกฤษรวมถึงอัขระพิเศษบางตัวในการแสดงผลได้ โดยอักขระที่ใช้แสดงผลได้จะประกอบไปด้วย A-Z, a-z, 1-9 ยกเว้น O (ตัวอักษรโอพิมพ์ใหญ์), l (ตัวอักษรแอลพิมพ์เล็ก), I (ตัวอักษรไอพิมพ์ใหญ่)
    ซึ่งผลลัพธ์จากข้อนี้ก็จะได้ address มาและครับ แต่ตัว address นี้ก็จะนำมาเพิ่มเติมบางอย่างลงไปให้มันมีคุณสมบัติมากขึ้น มีความน่าเชื่อถือมากขึ้น โดยเค้าจะทำเพิ่มดังนี้ครับ
    3.1  เติมสิ่งที่เรียกว่า version prefix ลงไปข้างหน้า address ซึ่งเจ้า version prefix นี้ก็จะสามารถใช้จำแนกได้ว่า address นี้ มีจุดประสงค์เพื่ออะไร

    Type

    Version prefix (Hex)

    ersion prefix (Base58)

    Bitcoin Address

    0x00

    1

    Pay-to-Script-Hash Address

    0x05

    3

    Bitcoin Testnet Address

    0x6F

    m หรือ n

    Private Key WIF

    0x80

    5, K หรือ L

    BIP38 Encrypted Private Key

    0x0142

    6P

    BIP32 Extented Public Key

    0x0488B21E

    xpub

    3.2 ใส่สิ่งที่เรียกว่า Checksum ลงไปที่ท้าย address โดยเจ้า Checksum นี้มีไว้เพื่อไว้ยืนยัน address ว่ามีความถูกต้อง ไม่ได้มีตัวอักษรตัวไหนเปลี่ยนไปหรือหายไป ซึ่งวิธีคิดคือ

    แต่ก็ไม่ได้ใส่ทั้งค่าที่คำนวณได้นะครับ (เพราะมันยาว) เค้าจะใส่แค่ 4 byte แรกของค่า checksum ที่คำนวนได้ลงไปเท่านั้น

 

สรุป flow การสร้าง address ของ bitcoin ก็เป็นไปตามรูปด้านล่างครับ

วิธีการสร้าง address ของ bitcoin นั้นไม่ยากเลยใช่ไหมครับ สำหรับในการสร้าง address ของ coin อื่น ๆ นั้นก็จะไม่ต่างจาก bitcoin มากนัก ส่วนมากก็จะปรับเปลี่ยนวิธีการ hash เสียมากกว่าครับ สำหรับเรื่องของการสร้าง address ก็จบเพียงเท่านี้นะครับ ^__^

Facebook Comments