อยู่บน MRT ล้าว 🚇

ทีนี้ ในเมื่อสากลโลกเค้าเข้าใจตรงกันว่า “xpub…” ไว้ใช้สำหรับ legacy พอ จขค. ใช้ trezor สแกน “xpub…” แอป trezor ก็เข้าใจว่าต้องการใช้ address แบบ legacy จึงจัดแจงเอา “xpub…” นั้นไป derive ด้วยมาตรฐาน bip44 ได้ผลลัพธ์ออกมาเป็น address ประเภท legacy ทั้งเซ็ท
(ลองกับ Blue Wallet แล้วก็เป็นลักษณะเดียวกัน)
สรุปรวบรัดคือ ตอนนี้ trezor suit lite มันเอา Xpub ที่ได้จาก derivation path m/84’ ไปสร้าง address ด้วยมาตรฐาน bip44
และวิธีแก้คือ เราก็จะต้องบังคับให้ sparrow (ซึ่งเป็นที่ที่มี private key ของเราอยู่) ทำท่าพิสดารท่าเดียวกันนี้ เพื่อให้สามารถเซ็นธุรกรรมโอนเงินออกได้
—
[[[ ปัญหา ]]]
โดยปกติสำหรับ sparrow คุณจะต้องเลือกประเภท address ที่ต้องการจะใช้ (legacy / nested segwit / native segwit / taproot) ก่อนที่จะสร้าง seed, กรอก seed หรือ connect hardware wallet เพราะว่ามันจะไปดึงเอา Xpub ที่สอดคล้องกันมาทำกระเป๋าให้เรา
ถ้าเราบอกมันว่าอยากสร้างแบบ legacy มันจะไปดึง Xpub จาก derivation path m/44’ มา
ถ้าเราบอกมันว่าอยากสร้างแบบ nested segwit มันจะไปดึง Xpub จาก derivation path m/49’ มา
ถ้าเราบอกมันว่าอยากสร้างแบบ native segwit มันจะไปดึง Xpub จาก derivation path m/84’ มา
ถ้าเราบอกมันว่าอยากสร้างแบบ taproot มันจะไปดึง Xpub จาก derivation path m/86’ มา
ในกรณีของ จขค. sparrow ดึง Xpub จาก path m/84’ มาเพื่อเตรียมสร้างกระเป๋า native segwit ตามมาตรฐาน bip84
ถ้าเราพยายามจะเปลี่ยนไปใช้มาตรฐาน bip44 มันจะไล่เราให้ไป import keystore ใหม่ เพราะเอา Xpub อันที่ควรเป็นจาก path m/44’ มาใช้
การเอา Xpub จาก path หนึ่งไปสร้าง address ด้วยอีกมาตรฐานหนึ่งเป็นเรื่องผิดผี ไม่งาม ระบบตรวจสอบใน sparrow ไม่ยอมให้เราทำแบบนั้น (เราจะไม่สามารถกดปุ่ม apply ได้)
แต่เราดันทำแบบนั้นใน trezor ไปแล้วไง!!! เพราะฉะนั้นแกก็ต้องทำด้วย!!! ชั้นจะบีบคอให้แกทำ!!!
—
[[[ วิธีแก้ ]]]
ในการทำแบบนั้น เราจะต้องปิดระบบป้องกันการทำผิดผี (validate derivation) ของ sparrow โดยการเข้าไปที่เมนู file > preference > general แล้วติ๊กปิด toggle หลังคำว่า validate derivation (หลังจากนั้นเราอาจจะต้องปิดโปรแกรม sparrow และเปิดขึ้นมาให้เพื่อให้ setting ใหม่นี้มีผล)
ในตอนนี้เราสามารถแก้ประเภทกระเป๋าจาก native segwit (bip84) เป็น legacy (bip44) ทั้งที่ยังใช้ Xpub เดิมจาก m/84’ ได้แล้ว สามารถกดปุ่ม apply ได้ เราควรจะพบชุด address เดียวกันกับใน trezor suit lite เห็นยอดเงิน และโอนออกได้ตามปกติ (และควรกลับไปเปิด validate derivation กลับมาด้วย เดี๋ยวจะทำพลาดแบบแปลกๆ อีก)

#siamstr