MoneroSwapper MoneroSwapper
การศึกษา

Payment ID ใน Monero: ทำไมถูกยกเลิกและ Subaddress เข้ามาแทนที่อย่างไร

MoneroSwapper Team · · · 3 min read · 51 views

Payment ID ใน Monero: ทำไมถูกยกเลิกและ Subaddress เข้ามาแทนที่อย่างไร

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

ทำไม Payment ID จึงถูกคิดค้นขึ้น?

ปัญหาพื้นฐานของบริษัทแลกเปลี่ยนคริปโตคือ: จะระบุได้อย่างไรว่าการฝากเงินไหนมาจากลูกค้าคนใด เมื่อลูกค้าหลายล้านคนฝากเงินมายังที่อยู่เดียวกัน? สำหรับ Bitcoin ปัญหานี้แก้ได้ง่ายด้วยการสร้างที่อยู่ใหม่สำหรับลูกค้าแต่ละคน และเนื่องจาก Bitcoin blockchain โปร่งใสทั้งหมด บริษัทสามารถ monitor ที่อยู่นั้นได้โดยตรง

แต่สำหรับ Monero ที่มี Stealth Address ทุกการรับเงินจะสร้างที่อยู่ชั่วคราวบน blockchain ทำให้การ monitor ที่อยู่เฉพาะเจาะจงทำไม่ได้ บริษัทแลกเปลี่ยนจึงต้องการวิธีอื่นในการระบุว่าเงินมาจากลูกค้าคนไหน Payment ID จึงถูกออกแบบมาเพื่อแก้ปัญหานี้

การทำงานของ Payment ID

ระบบทำงานอย่างง่าย: เมื่อลูกค้าสมัครที่ exchange เช่น Binance ระบบจะสร้าง Payment ID ที่ไม่ซ้ำกันให้ลูกค้าแต่ละคน ลูกค้าต้องส่ง Payment ID นั้นพร้อมกับธุรกรรมทุกครั้งที่ฝากเงิน ระบบ backend ของ exchange จะดูแค่ Payment ID เพื่อระบุว่าเงินมาจากลูกค้าใด

Payment ID มีสองรูปแบบ:

  • Long-form (256 bit): ตัวเลขฐานสิบหก 64 หลัก ส่งใน transaction extra field ในรูปแบบ plaintext มองเห็นได้บนบล็อกเชน
  • Short-form / Integrated Address (64 bit): Payment ID 8 ไบต์ที่รวมเข้ากับที่อยู่ Monero สร้างเป็น "Integrated Address" ที่ยาวประมาณ 106 ตัวอักษร Payment ID ถูกเข้ารหัสด้วย ECDH แต่ยังสร้าง metadata ที่ระบุได้

ปัญหาด้านความเป็นส่วนตัวที่ซ่อนอยู่

Long-form Payment ID: ข้อมูลรั่วอย่างชัดเจน

Payment ID รูปแบบแรกส่งผ่านบล็อกเชนโดยไม่มีการเข้ารหัส ผลที่ตามมาคือ:

  • ใครก็ตามที่ scan blockchain สามารถเห็น Payment ID ในธุรกรรมได้
  • ถ้า Payment ID มีรูปแบบที่ระบุได้ว่าเป็นของ exchange ใด (เช่น เริ่มด้วยตัวเลขเฉพาะ) นักวิเคราะห์สามารถรู้ได้ทันทีว่าธุรกรรมนี้ส่งไปยัง exchange นั้น
  • ธุรกรรมหลายรายการที่ใช้ Payment ID เดิมสามารถเชื่อมโยงกันได้ทันที
  • แม้แต่รู้แค่ว่าธุรกรรมมี Payment ID ก็เปิดเผยว่าผู้ส่งกำลังทำธุรกรรมกับบริษัทที่ต้องการ Payment ID ซึ่งมักเป็น exchange

Integrated Address: ดีขึ้น แต่ยังมีปัญหา

Integrated Address แก้ปัญหา plaintext Payment ID แต่สร้างปัญหาใหม่:

  • โครงสร้างของ transaction extra field ของ Integrated Address ต่างจากธุรกรรมปกติ สามารถแยกแยะได้โดยการวิเคราะห์ byte pattern
  • ธุรกรรมที่ใช้ Integrated Address จึงก่อตัวเป็นกลุ่มแยกที่ระบุได้ว่าเป็น "ธุรกรรมที่ส่งหา exchange"
  • แม้จะไม่รู้ว่า Payment ID คืออะไร แต่รู้ว่า "ธุรกรรมนี้มี Payment ID" ก็เป็นข้อมูลที่มีค่าสำหรับการวิเคราะห์
  • Anonymity set ลดลงเพราะธุรกรรมถูกแยกกลุ่มตามประเภท

ปัญหาประสบการณ์ผู้ใช้

นอกจากปัญหาความเป็นส่วนตัว Payment ID ยังสร้างปัญหาเชิงปฏิบัติ:

  • ผู้ใช้ต้องจำและพิมพ์ข้อมูลสองชิ้น (ที่อยู่ + Payment ID) แทนที่จะเป็นชิ้นเดียว
  • หากลืม Payment ID หรือส่ง Payment ID ผิด exchange ไม่สามารถระบุการฝากเงินได้ ต้องติดต่อ support ซึ่งใช้เวลาและยุ่งยาก
  • ผู้ใช้หลายคนเผลอส่งเงินไปยังที่อยู่ที่ถูกต้องโดยไม่มี Payment ID ทำให้เงินถูก "hold" หรือสูญหายชั่วคราว
  • UI ของกระเป๋าเงินหลายตัวแสดง Payment ID ในรูปแบบที่ยากต่อการอ่านและตรวจสอบ

ไทม์ไลน์การยกเลิก Payment ID

การยกเลิก Payment ID ไม่ได้เกิดขึ้นในชั่วข้ามคืน แต่เป็นกระบวนการค่อยเป็นค่อยไปที่ใช้เวลาหลายปี:

  • 2017: Monero Research Lab เผยแพร่รายงานวิเคราะห์ privacy issues ของ Payment ID และเสนอแนวทางแก้ไขด้วย Subaddress
  • 2017 ปลายปี: Monero 0.12 เพิ่มฟีเจอร์ Subaddress เป็นครั้งแรก เริ่มการเปลี่ยนผ่านจาก Payment ID
  • 2018: Monero GUI และ CLI เริ่มแสดงคำเตือนสำหรับ Long-form Payment ID และแนะนำให้ใช้ Integrated Address หรือ Subaddress แทน
  • 2019 กลางปี (Monero 0.14 Boron Butterfly): เพิ่มการเตือนผู้ใช้อย่างแข็งกร้าวและปิด Long-form Payment ID ใน GUI โดยค่าเริ่มต้น
  • 2019 ปลายปี (Monero 0.15 Carbon Chamaeleon): ยกเลิก Long-form Payment ID อย่างเป็นทางการ เครือข่ายปฏิเสธธุรกรรมที่มี unencrypted Payment ID
  • 2020: บริษัทแลกเปลี่ยนหลักๆ เริ่มรองรับ Subaddress อย่างสมบูรณ์ Binance, Kraken, KuCoin เปลี่ยนไปใช้ Subaddress
  • 2021-2022: Integrated Address กลายเป็น "legacy feature" กระเป๋าเงินใหม่ไม่รองรับการสร้างใหม่
  • 2023-2026: Subaddress เป็นมาตรฐานสากลในระบบนิเวศ Monero

Subaddress: โซลูชันที่แก้ทุกปัญหา

หลักการทำงานของ Subaddress

Subaddress ใช้คณิตศาสตร์ Elliptic Curve สร้างที่อยู่ใหม่หลายที่อยู่จาก master key คู่เดียว โดยมีฟังก์ชัน deterministic:

D = B + H(a, i) * G  (Spend Public Key สำหรับ Subaddress)
C = a * D            (View Public Key สำหรับ Subaddress)

โดย:
— B = spend public key หลัก
— a = view private key หลัก
— i = index ของ subaddress (0 = primary, 1, 2, 3... = subaddresses)
— G = generator point บน ed25519 elliptic curve
— H() = Keccak-256 hash function

ผลลัพธ์คือ key pair ใหม่ที่ดูเหมือนอิสระจากกัน แต่สามารถ derive ได้ซ้ำๆ จาก master key เดิม

ทำไม Subaddress จึงดีกว่า Payment ID?

  • ไม่มี fingerprint: Subaddress ใช้ดูเหมือนที่อยู่ Monero ปกติทุกประการ ไม่มี extra field พิเศษ ไม่มี byte pattern ที่ต่างกัน ผู้วิเคราะห์บล็อกเชนไม่สามารถแยกแยะ Subaddress ออกจากที่อยู่ปกติได้
  • Unlinkability: แม้จะมีที่อยู่ Subaddress หลายอัน ไม่มีทางพิสูจน์ได้ว่าทั้งหมดเป็นของกระเป๋าเงินเดียวกัน (เว้นแต่เปิดเผย master view key)
  • Deterministic: Seed phrase เดิมสามารถ derive Subaddress ทั้งหมดได้ซ้ำๆ ไม่ต้อง backup เพิ่ม
  • ไม่จำกัด: สร้าง Subaddress ได้ถึง 2^32 ต่อ account (มากกว่า 4 พันล้าน)
  • ใช้งานง่าย: ผู้ใช้ให้แค่ที่อยู่เดียว ไม่ต้องจำ Payment ID แยก

การใช้ Subaddress ในปัจจุบัน

สำหรับผู้ใช้ทั่วไป

กระเป๋าเงิน Monero ยอดนิยมทั้งหมดรองรับ Subaddress อย่างสมบูรณ์:

  • Feather Wallet (Desktop - Windows/Mac/Linux): ไปที่แท็บ "Accounts" เพื่อดู accounts และ subaddresses กดปุ่ม "New address" สร้าง Subaddress ใหม่ หรือ "New account" สำหรับ account ใหม่ สามารถตั้งชื่อแต่ละ Subaddress เพื่อจำว่าใช้กับอะไร
  • Monero GUI (Official Desktop): ใน "Receive" tab เลือก account จากรายการ กดปุ่ม "Create new address" เพื่อสร้าง Subaddress ใหม่พร้อม QR code
  • Cake Wallet (iOS/Android): เข้าถึง Subaddress ผ่านเมนู Receive สร้าง Subaddress ใหม่ด้วยปุ่ม "+" ระบบสร้าง Subaddress ใหม่อัตโนมัติหลังใช้ไปแล้ว
  • Monerujo (Android): ไปที่ Settings เลือก "Subaddresses" จัดการ Subaddress ทั้งหมด
  • Stack Wallet (iOS/Android): รองรับ Subaddress ตั้งแต่แรก ใช้งานผ่าน Receive tab

สำหรับธุรกิจและนักพัฒนา

ธุรกิจที่รับชำระเงิน XMR สามารถใช้ Monero Wallet RPC เพื่อจัดการ Subaddress:

  • สร้าง Subaddress ใหม่: create_address(account_index, label)
  • รับรายการ Subaddress: get_address(account_index)
  • ตรวจสอบธุรกรรมที่เข้า Subaddress: get_transfers(filter_by_subaddr)
  • ดูยอดเงินแต่ละ account: get_accounts()

บริการ Payment Gateway ที่รองรับ Monero Subaddress:

  • BTCPay Server (ผ่าน Monero plugin)
  • NOWPayments
  • CoinGate
  • Plisio
  • GloBee (Globee)

กรณีศึกษา: Exchange ไทยกับการรองรับ Subaddress

สำหรับบริบทประเทศไทย ก.ล.ต. (สำนักงานคณะกรรมการกำกับหลักทรัพย์และตลาดหลักทรัพย์) และ ธปท. (ธนาคารแห่งประเทศไทย) กำกับดูแลธุรกิจสินทรัพย์ดิจิทัลภายใต้ พ.ร.ก. สินทรัพย์ดิจิทัล พ.ศ. 2561

บริษัทแลกเปลี่ยนที่ได้รับใบอนุญาตในไทยส่วนใหญ่ไม่รองรับ XMR โดยตรงเนื่องจากข้อกังวลด้านกฎระเบียบ อย่างไรก็ตามผู้ใช้สามารถ:

  • ซื้อ Bitcoin หรือ Ethereum จาก exchange ที่ได้รับใบอนุญาต (Bitkub, Satang Pro)
  • แลกเปลี่ยนเป็น XMR ผ่าน DEX อย่าง Haveno หรือ Bisq atomic swap
  • ใช้ P2P exchanges ระหว่างประเทศที่ไม่ต้องการ KYC

สิ่งสำคัญคือ Monero ยังคงอนุญาตให้ผู้ใช้แชร์ view key เพื่อพิสูจน์รายการธุรกรรมแก่หน่วยงานกำกับดูแลหรือนักบัญชีโดยไม่เปิดเผย spend key ซึ่งทำให้การปฏิบัติตามกฎระเบียบยังเป็นไปได้แม้จะใช้ Subaddress

การเปรียบเทียบโดยตรง: Payment ID vs Subaddress

คุณสมบัติLong-form Payment IDIntegrated AddressSubaddress
ความเป็นส่วนตัวบน blockchainต่ำมาก (plaintext)ปานกลาง (ระบุได้)สูงมาก (ไม่แยกแยะ)
Anonymity Setลดลงมากลดลงบางส่วนเต็มประสิทธิภาพ
ประสบการณ์ผู้ใช้แย่ (2 ข้อมูล)ปานกลาง (1 ที่อยู่ยาว)ดีเยี่ยม (1 ที่อยู่ปกติ)
ความเสี่ยงผิดพลาดสูงปานกลางต่ำ
การสนับสนุนปัจจุบันยกเลิกแล้วLegacy/ยกเลิกโดยปริยายมาตรฐาน
Backup เพิ่มเติมต้องการไม่ต้องการไม่ต้องการ
Hardware Walletไม่รองรับไม่รองรับLedger, Trezor
Payment Gatewayไม่รองรับอีกแล้วไม่รองรับอีกแล้วBTCPay, NOWPayments

คำถามที่พบบ่อย

ถ้าฉันยังมี Integrated Address เก่าที่ exchange ต้องทำอะไร?

ติดต่อทีม support ของ exchange และขอ Subaddress ใหม่แทน Exchange ส่วนใหญ่ที่ยังรองรับ XMR ได้อัปเดตระบบเป็น Subaddress แล้ว ถ้ายังไม่มี อาจถึงเวลาย้ายไป exchange อื่นที่ทันสมัยกว่า

ฉันจะรู้ได้อย่างไรว่ากำลังใช้ Subaddress หรือที่อยู่ปกติ?

Subaddress เริ่มต้นด้วยตัวเลข "8" ส่วนที่อยู่หลัก (Primary Address) เริ่มต้นด้วย "4" ทั้งสองประเภทมีความยาวประมาณ 95-106 ตัวอักษร

Seed phrase เดิมสามารถกู้คืน Subaddress ทั้งหมดได้จริงหรือ?

ใช่ เพราะ Subaddress สร้างแบบ deterministic จาก master key เดิม กระเป๋าเงินจะ scan blockchain อัตโนมัติเพื่อหา outputs ที่เกี่ยวข้องกับ Subaddress ทั้งหมด

จะรู้ได้อย่างไรว่ากระเป๋าเงินรองรับ Subaddress แล้ว?

กระเป๋าเงิน Monero ที่ถูก maintain อย่างต่อเนื่องทั้งหมดรองรับ Subaddress ถ้ากระเป๋าเงินยังถามหา Payment ID เมื่อรับเงิน แสดงว่าเป็นซอฟต์แวร์เก่าที่ควร update หรือเปลี่ยนไปใช้ตัวใหม่

อนาคต: Seraphis และ Jamtis

แม้ Subaddress จะเป็นมาตรฐานปัจจุบัน แต่ Monero กำลังพัฒนา Seraphis protocol ที่จะแทนที่ ring signatures และ Jamtis address scheme ใหม่ ซึ่งจะยังคงรองรับ Subaddress แต่ด้วยความสามารถเพิ่มเติม เช่น view tags ที่ทำให้ wallet scan เร็วขึ้นมากโดยไม่ต้องทดสอบทุก output บน blockchain

สรุป: บทเรียนจาก Payment ID สู่ Subaddress

เรื่องราวของ Payment ID และ Subaddress เป็นบทเรียนสำคัญในการออกแบบ privacy system:

  • Privacy by Default ดีกว่า Privacy by Choice: Subaddress ปกป้องทุกคนโดยอัตโนมัติ ในขณะที่ Payment ID ต้องการให้ผู้ใช้รู้และเข้าใจปัญหาก่อน
  • Simplicity ช่วย Security: ระบบที่ใช้งานง่ายกว่า (Subaddress) มีโอกาสผิดพลาดน้อยกว่า
  • Backward Compatibility มีราคา: การสนับสนุน legacy features นานเกินไปอาจทำให้ผู้ใช้ยังคงใช้ระบบที่มีปัญหา
  • Community-driven improvement: การที่ Monero มีชุมชนนักวิจัยที่แข็งแกร่งทำให้สามารถระบุและแก้ไขปัญหาความเป็นส่วนตัวได้เร็ว

สำหรับผู้ใช้ในประเทศไทยที่ต้องการใช้ Monero สำหรับธุรกรรมส่วนตัวที่ถูกกฎหมาย: ใช้กระเป๋าเงินที่ทันสมัย สร้าง Subaddress ใหม่สำหรับแต่ละการรับเงิน และไม่ต้องกังวลเรื่อง Payment ID อีกต่อไป เทคโนโลยีได้พัฒนาก้าวหน้าไปมากและ Subaddress คือมาตรฐานที่ดีที่สุดในปัจจุบัน

แหล่งข้อมูลเพิ่มเติมสำหรับผู้ใช้ไทย

สำหรับผู้ที่ต้องการศึกษา Monero Subaddress ในเชิงลึกเพิ่มเติม แนะนำแหล่งข้อมูลต่อไปนี้:

  • getmonero.org/resources/user-guides: คู่มือทางการจาก Monero Project ครอบคลุมการสร้าง Subaddress การจัดการ Accounts และ best practices
  • monero.stackexchange.com: ชุมชน Q&A ภาษาอังกฤษที่มีคำถามและคำตอบเชิงเทคนิค
  • Feather Wallet documentation: เอกสารประกอบ Feather Wallet อธิบายการใช้ Subaddress อย่างละเอียดพร้อมภาพประกอบ
  • Monero Research Lab (MRL): เอกสารวิจัยต้นฉบับเกี่ยวกับการออกแบบ Stealth Address และ Subaddress

ในประเทศไทย ชุมชน Monero บน Telegram และ Reddit มีสมาชิกที่ยินดีตอบคำถามสำหรับผู้ใช้มือใหม่ การเรียนรู้ระบบ Subaddress อย่างถูกต้องเป็นการลงทุนที่คุ้มค่าสำหรับความเป็นส่วนตัวระยะยาว

แชร์บทความนี้

บทความที่เกี่ยวข้อง

พร้อมที่จะแลกเปลี่ยนหรือยัง?

แลกเปลี่ยน Monero แบบไม่ระบุตัวตน

ไม่ต้อง KYC • ไม่ต้องสมัคร • แลกเปลี่ยนทันที

แลกเปลี่ยนเดี๋ยวนี้