วิธีทำงาน
ที่อยู่ Bitcoin ไม่ใช่ string มั่วๆ — ทุกที่อยู่เข้ารหัสเงื่อนไขการใช้จ่าย รุ่นของรูปแบบ และ checksum ลงในรูปแบบที่อ่านออกได้กะทัดรัด เครื่องมือนี้ decode โครงสร้างนั้นในเบราว์เซอร์ของคุณโดยไม่มี network request ใดๆ ทั้งสิ้น ไม่มีอะไรที่คุณพิมพ์ถูกส่งไปที่ไหน
บน Bitcoin mainnet ทุกวันนี้มี 2 ตระกูลของการเข้ารหัสที่ใช้งาน ตระกูลเก่ากว่าใช้ Base58Check ซึ่งเป็น encoding ของที่อยู่ Legacy (P2PKH) ที่ขึ้นต้นด้วย 1 และ Wrapped SegWit (P2SH) ที่ขึ้นต้นด้วย 3 Base58Check ใช้ชุดตัวอักษร 58 ตัว (ไม่มี 0, O, I, l เพื่อกันสับสนทางสายตา) พร้อม checksum 4 bytes จาก double-SHA256 ต่อท้าย payload เมื่อคุณ paste ที่อยู่ 1… หรือ 3… validator จะ decode ด้วย Base58Check และตรวจว่า byte ของ checksum ตรงกัน ตัวอักษรผิดเพียงตัวเดียว — แม้แค่สลับตำแหน่ง — จะได้ checksum ที่ไม่ตรงและถูกจับได้ทันที
ตระกูลใหม่กว่าใช้ Bech32 (นิยามใน BIP 173) สำหรับ Native SegWit ที่ขึ้นต้นด้วย bc1q Bech32 ใช้ชุดตัวอักษร 32 ตัวและรหัส error-correcting แบบ BCH ที่ไม่เพียงตรวจเจอ error แต่ยังระบุตำแหน่งได้ด้วย ที่อยู่ bc1q มี witness version เป็นศูนย์ตามด้วย hash 20 bytes (P2WPKH) หรือ hash 32 bytes (P2WSH ใช้กับ multisig และ script contract) validator ตรวจทั้ง Bech32 checksum และความยาวของ witness program เพื่อแยก P2WPKH จาก P2WSH
ที่อยู่ Taproot ที่ขึ้นต้นด้วย bc1p ใช้ Bech32m (BIP 350) ซึ่งปรับค่าคงที่ของ Bech32 เล็กน้อยเพื่อปรับปรุงคุณสมบัติการตรวจจับ error สำหรับ witness version 1 ขึ้นไป validator ลอง Bech32 ก่อน ถ้าไม่ผ่านจึงลอง Bech32m และตรวจว่าเป็น witness version 1 พร้อม x-only public key 32 bytes นี่คือรูปแบบที่อยู่ Bitcoin ที่ใหม่ที่สุดและมีประสิทธิภาพสูงที่สุด — Taproot ถูก activate ที่ block 709,632 ในเดือนพฤศจิกายน 2021
logic การ validate ทั้งหมดรันใน pure function แบบ deterministic Bitcoin Core เองก็ใช้ library encoding เดียวกันนี้: bs58check สำหรับ Base58 และ bech32/bech32m สำหรับตระกูล native SegWit ไม่มี private key ไม่มีการ derive กระเป๋า ไม่มีข้อมูล transaction ใดๆ เข้ามาเกี่ยวข้อง — เครื่องมือตรวจเฉพาะ string ของที่อยู่ public ที่คุณให้มาเท่านั้น
คู่มือรูปแบบที่อยู่
Bitcoin สะสมรูปแบบที่อยู่หลายแบบตลอดประวัติศาสตร์ แต่ละแบบสะท้อนการอัปเกรดของ scripting layer:
- P2PKH (Legacy): Pay-to-Public-Key-Hash รูปแบบที่อยู่ Bitcoin ดั้งเดิมตั้งแต่ release แรกของ Satoshi ขึ้นต้นด้วย
1กระเป๋าและ exchange ทุกตัวรองรับ input ที่ใช้จ่ายจาก P2PKH มีขนาดใหญ่กว่า ทำให้ค่าธรรมเนียม on-chain สูงกว่ารูปแบบใหม่ - P2SH (Wrapped SegWit): Pay-to-Script-Hash ขึ้นต้นด้วย
3เปิดตัวใน BIP 16 รูปแบบนี้ห่อ redeem script ใดๆ — รวมถึง SegWit script — ไว้หลัง hash มาตรฐาน เป็นกลไกช่วงเปลี่ยนผ่านที่ทำให้ adopt SegWit ได้ก่อนที่กระเป๋าbc1qจะแพร่หลาย ค่าธรรมเนียมต่ำกว่า P2PKH แต่สูงกว่า native SegWit - P2WPKH (Native SegWit): Pay-to-Witness-Public-Key-Hash ขึ้นต้นด้วย
bc1qยาว 42 ตัวอักษร เปิดตัวโดย BIP 141 (SegWit) activate สิงหาคม 2017 เป็นรูปแบบ default ของกระเป๋าสมัยใหม่ส่วนใหญ่ รวมถึง Bitcoin Core, Blue Wallet และ Sparrow witness discount ทำให้ input เล็กลงประมาณ 60% ใน vbytes เมื่อเทียบกับ P2PKH - P2WSH (Native SegWit Script): Pay-to-Witness-Script-Hash ขึ้นต้นด้วย
bc1qเช่นกันแต่ยาว 62 ตัวอักษรเพราะ hash เป็น 32 bytes ไม่ใช่ 20 ใช้สำหรับ multisignature และเงื่อนไขการใช้จ่ายซับซ้อนอื่นๆ - P2TR (Taproot): Pay-to-Taproot ขึ้นต้นด้วย
bc1pเปิดตัวโดย BIP 341 (Taproot) activate พฤศจิกายน 2021 encode x-only public key 32 bytes การใช้จ่ายแบบ single-key และ multisignature ซับซ้อน ดูเหมือนกันบน on-chain ช่วยเรื่องความเป็นส่วนตัว input vbytes เล็กที่สุดในทุกรูปแบบ — ประมาณ 57.5 vbytes ต่อ input — ค่าธรรมเนียมจึงต่ำที่สุด
หมายเหตุเรื่องความเป็นส่วนตัว
เพราะเครื่องมือนี้รัน client-side ทั้งหมด จึงไม่มีเซิร์ฟเวอร์ที่ log ที่อยู่ที่คุณตรวจ การใช้ validator ออนไลน์ที่ส่งข้อมูลกลับอาจรั่วข้อมูลว่าคุณถือที่อยู่ไหนหรือกำลังจะรับเงินที่ไหน เครื่องมือนี้ไม่มี back-end เลย — JavaScript engine ของเบราว์เซอร์คุณคือ processor เดียว
FAQ
ทำไมที่อยู่ของผมถึงขึ้นว่า invalid?
สาเหตุที่พบบ่อยที่สุดคือตัวอักษรผิดหรือสลับตำแหน่งตัวเดียว ที่อยู่ Bitcoin เป็น case-sensitive (ยกเว้นส่วน bc1 ของ bech32 ซึ่งเป็นพิมพ์เล็กเท่านั้น) ที่อยู่ Base58Check ที่ต่างจากของจริงแม้แค่ตัวเดียวจะไม่ผ่าน checksum 4 bytes ที่อยู่ Bech32 หรือ Bech32m มีรหัส error-correcting ที่แข็งแรงกว่าและจะปฏิเสธข้อมูลที่เพี้ยนใดๆ เช่นกัน
ที่อยู่ testnet ล่ะ?
ที่อยู่ testnet ใช้ version byte และ human-readable part ต่างกัน ที่อยู่ P2PKH ของ testnet ขึ้นต้นด้วย m หรือ n ที่อยู่ bech32 ของ testnet ขึ้นต้นด้วย tb1 validator นี้รองรับเฉพาะรูปแบบ mainnet และจะรายงานที่อยู่ testnet ว่า invalid ตั้งใจให้เป็นแบบนี้ — ถ้าคุณเผลอส่งเหรียญ mainnet จริงไปยัง string ที่อยู่ testnet เหรียญจะหายไปเลย
รองรับ Lightning address (user@domain.com) ไหม?
ไม่ Lightning address (เช่น alice@wallet.satoshi.com) เป็น identifier แบบ HTTP (LNURL-pay) ที่ resolve ไปเป็น Lightning invoice ไม่ใช่ที่อยู่ Bitcoin on-chain ไม่ได้ validate ที่นี่ ใช้ Invoice Decoder สำหรับ Lightning invoice แบบ BOLT 11
ใช้รูปแบบไหนดีตอนสร้างที่อยู่ใหม่?
สำหรับผู้ใช้ส่วนใหญ่ Taproot (P2TR, bc1p…) เป็นตัวเลือกที่ดีที่สุดถ้ากระเป๋าคุณรองรับ — ค่าธรรมเนียมต่ำสุดและความเป็นส่วนตัวดีที่สุด ถ้ากระเป๋าคู่สนทนาสร้างหรือส่งไป Taproot ไม่ได้ Native SegWit P2WPKH (bc1q…) คือตัวเลือกถัดไป ใช้ Legacy หรือ Wrapped SegWit เฉพาะเมื่อจำเป็นต้อง compatible กับ software เก่ามากๆ เท่านั้น
ใช้แบบ offline ได้ไหม?
ได้ หลังจากหน้าโหลดเสร็จ validator ทำงานโดยไม่ต้องต่อเน็ต ไม่มี dependency ภายนอกตอน runtime