วิธีทำงาน
ค่าธรรมเนียม Bitcoin on-chain ไม่ได้คงที่ — ขึ้นกับว่า transaction ของคุณกินพื้นที่ block เท่าไหร่ และ mempool หนาแน่นแค่ไหนตอนคุณ broadcast เครื่องมือนี้ดึง fee rate สดจาก mempool.space รวมกับการคำนวณ vbyte ที่แม่นยำสำหรับรูปทรง transaction ของคุณ และแปลงผลเป็นสกุลเงินท้องถิ่นด้วยราคา Bitcoin สด ทุกอย่างรัน client-side ไม่มีข้อมูล transaction หรือข้อมูลส่วนตัวถูกส่งไปเซิร์ฟเวอร์ใดๆ
vbyte คืออะไร?
“Vbyte” (virtual byte) คือหน่วยที่ Bitcoin ใช้วัดขนาด transaction หลังการอัปเกรด SegWit ที่เปิดตัว witness discount ก่อน SegWit ขนาด transaction วัดเป็น bytes ดิบ SegWit แยก transaction เป็น 2 ส่วน: base data (inputs, outputs, จำนวน, version, locktime) กับ witness data (signature และ script) เพราะ signature เป็นส่วนใหญ่ที่สุดของ transaction ใดๆ และเพราะการย้ายไป witness field ปลอดภัยกว่าในทางคณิตศาสตร์ โปรโตคอลจึงให้รางวัลผู้ใช้ SegWit ด้วย discount 4x บน weight ของ witness data สูตร vbyte คือ:
vbytes = (base_weight + witness_weight / 4) / 4
ในทางปฏิบัติ นี่หมายความว่า Taproot input (P2TR) ประมาณ 57.5 vbytes, Native SegWit input (P2WPKH) ประมาณ 68 vbytes, Wrapped SegWit input (P2SH-P2WPKH) ประมาณ 91 vbytes, และ Legacy input (P2PKH) ประมาณ 148 vbytes outputs ถูกกว่าและใกล้เคียงกันทุกประเภทที่ประมาณ 31 vbytes ต่อ output เพราะ output script ไม่มี signature ทุก transaction ยังมี overhead คงที่ประมาณ 10.5 vbytes สำหรับ field version จำนวน input จำนวน output และ locktime
Inputs และ outputs
Bitcoin transaction บริโภค unspent output (UTXO) เดิมเป็น input และสร้าง UTXO ใหม่เป็น output การจ่ายเงินง่ายๆ ปกติมี 1-2 inputs (ขึ้นกับว่ากระเป๋าคุณต้องรวม UTXO เพื่อ cover จำนวนไหม) และ 2 outputs: output จ่ายเงินและ output ทอนกลับกระเป๋าคุณเอง ถ้าคุณ sweep กระเป๋าหรือรวม UTXO เล็กๆ หลายๆ ตัว คุณอาจมี inputs หลายสิบตัวกับ output 1-2 ตัว ยิ่ง input เยอะ transaction ยิ่งใหญ่ และค่าธรรมเนียมยิ่งสูงที่ fee rate เดียวกัน
ระดับ Fee rate
estimator ดึงคำแนะนำ fee rate 4 ระดับจาก mempool.space:
- Fastest (~10 นาที): fee rate ที่ทำให้ transaction คุณเข้า block ถัดไปด้วยความน่าจะเป็นสูง สำหรับการจ่ายเงินที่เร่งด่วน
- Half hour: คาดยืนยันภายใน 2-3 blocks สมดุลดีสำหรับการจ่ายเงินส่วนใหญ่
- One hour: คาดยืนยันภายใน 6 blocks เหมาะเมื่อคุณไม่รีบ
- Economy (ถูกสุด): fee rate ต่ำสุดที่ node ใน mempool ปัจจุบันจะ forward การยืนยันอาจใช้เวลาหลายชั่วโมงถึงหลายวันถ้า congestion ขึ้น ไม่แนะนำเมื่อคุณต้องการเวลาที่เชื่อถือได้
เหล่านี้เป็นคำแนะนำ ไม่ใช่การรับประกัน mempool เป็นตลาดที่เคลื่อนไหว ถ้า transaction จำนวนมากทะลักเข้า mempool หลังคุณ broadcast transaction ที่มี fee rate ต่ำกว่าอาจตกไปอยู่ท้ายคิวมากขึ้น
SegWit discount ในทางปฏิบัติ
เพื่อให้เห็นว่าทำไม format ถึงสำคัญ ลองดู transaction ง่ายๆ 1 input 2 outputs:
- Legacy (P2PKH): 148 + (2 × 31) + 10.5 = 220.5 vbytes
- Native SegWit (P2WPKH): 68 + (2 × 31) + 10.5 = 140.5 vbytes
- Taproot (P2TR): 57.5 + (2 × 31) + 10.5 = 109.5 vbytes
ที่ 10 sat/vbyte transaction เหล่านั้นเสีย 2,205 sats, 1,405 sats, และ 1,095 sats ตามลำดับ เมื่อทำ transaction หลายๆ ครั้ง savings ทบต้น Taproot inputs ถูกกว่า Legacy inputs ประมาณ 50% ถ้าคุณยังใช้กระเป๋า Legacy อยู่ การย้ายไป Native SegWit หรือ Taproot เป็นการเปลี่ยนที่ให้ผลสูงสุดในการลดภาระค่าธรรมเนียม
RBF: Replace-by-Fee
ถ้าคุณ broadcast transaction ด้วย fee rate ที่กลายเป็นต่ำเกิน — บางทีเพราะ mempool congestion พุ่งขึ้นหลังคุณส่ง — คุณไม่จำเป็นต้องติดอยู่ที่รอเสมอ Replace-by-Fee (RBF, BIP 125) ให้คุณ rebroadcast transaction ทดแทนที่ใช้ input เดียวกันแต่ด้วย fee rate สูงกว่า กระเป๋าสมัยใหม่ส่วนใหญ่ (Bitcoin Core, Sparrow, Blue Wallet, Electrum) รองรับ RBF transaction ทดแทนต้องจ่ายค่าธรรมเนียมอย่างน้อยเท่ากับค่าธรรมเนียมเดิมบวกกับ minimum relay fee increment ซึ่งสนับสนุนให้ miner เลือก version ใหม่
ไม่ใช่ทุก transaction ที่ใช้ RBF ได้ transaction ส่งสัญญาณ RBF ด้วยการตั้ง sequence number ของ input อย่างน้อย 1 ตัวให้ต่ำกว่า 0xFFFFFFFE กระเป๋าที่ไม่ตั้งสัญญาณนี้ถูกทดแทนไม่ได้ อย่างน้อยโดยผู้ส่ง; ผู้รับหรือ miner ยังอาจใช้ Child-Pays-for-Parent เพื่อเร่ง transaction ได้
CPFP: Child-Pays-for-Parent
Child-Pays-for-Parent (CPFP) เป็นกลไกเสริม ถ้าคุณรับ transaction unconfirmed ที่ fee rate ต่ำ คุณสามารถสร้าง transaction ใหม่ที่ใช้ output ของ transaction ที่ยังไม่ confirmed — transaction “ลูก” — ด้วยค่าธรรมเนียมที่สูงพอจนค่าธรรมเนียมรวมของพ่อและลูกดึงดูด miner miner พิจารณา effective fee rate ของทั้งแพ็คเกจ ดังนั้นลูกที่ใจกว้างพอสามารถลากพ่อที่ติดเข้า block ถัดไปได้ CPFP มีประโยชน์เมื่อคุณเป็นผู้รับ (จึงใช้ RBF ไม่ได้) หรือเมื่อคุณต้องการเร่งโดยไม่ invalidate transaction เดิม
FAQ
ทำไมค่าธรรมเนียม Taproot ถึงต่ำกว่า?
Taproot (P2TR) ใช้ Schnorr signature ซึ่งเล็กกว่า ECDSA DER-encoded signature ที่ใช้ใน format เก่าเล็กน้อย ที่สำคัญกว่านั้น Taproot key-path spend วาง signature ไว้ใน witness field ที่ได้ weight discount 4x public key แบบ x-only 32 bytes ที่ encode ใน output script ก็เล็กกว่า compressed public key 33 bytes ที่ใช้ใน P2WPKH ผลรวมคือ Taproot inputs กิน 57.5 vbytes เทียบกับ 68 ของ P2WPKH
ผมจ่ายน้อยเกินแล้วติดค้างได้ไหม?
ได้ ถ้า fee rate ที่คุณเลือกต่ำกว่า minimum relay fee (ปัจจุบัน default 1 sat/vbyte สำหรับ node ส่วนใหญ่) transaction ของคุณอาจไม่ propagate เลยและอาจหมดเวลาโดยไม่เคย broadcast ไปยังเครือข่ายใหญ่ ถ้ามัน propagate แต่ mempool แน่น มันอาจนั่ง unconfirmed หลายวันหรือหลายสัปดาห์ กระเป๋าส่วนใหญ่ในที่สุดจะทิ้ง transaction จาก memory หลัง timeout ที่ตั้งค่าได้ (default 336 ชั่วโมงใน Bitcoin Core) ตอนนั้นเงินจะกลับมาเป็น UTXO ยังไม่ confirmed ในกระเป๋าคุณ ในระหว่างนั้นเงินอยู่ในสภาพคลุมเครือ
replace-by-fee คืออะไร ใช้ยังไง?
RBF ให้คุณเพิ่มค่าธรรมเนียมของ transaction ยังไม่ confirmed ด้วยการ broadcast ตัวทดแทน ในทางปฏิบัติ หาปุ่ม “Boost” หรือ “Replace” ในกระเป๋าคุณ Sparrow Wallet, Bitcoin Core, และ Electrum ทั้งหมดมี feature RBF bump ชัดเจน ตัวทดแทนต้องจ่ายค่าธรรมเนียมสัมบูรณ์สูงกว่าและ fee rate สูงกว่าเดิม ไม่ใช่ทุกกระเป๋าหรือ exchange ที่รับ transaction RBF ที่ยังไม่ confirmed ขาเข้า เช็คกับคู่สนทนาก่อนเชื่อมั่นในมัน
เครื่องมือนี้ต้องต่อเน็ตไหม?
ดึง fee rate สดจาก mempool.space นาทีละครั้ง (cache ใน localStorage) ถ้าคุณ offline จะใช้ rate ที่ cache จากการเข้าล่าสุด การคำนวณ vbyte และเลขค่าธรรมเนียม local ล้วนๆ ทำงานได้โดยไม่ต้องต่อเน็ต
ประมาณการนี้แม่นแค่ไหน?
เป็นการประมาณการจากขนาด input และ output ปกติของแต่ละ address type transaction กระเป๋าจริงอาจต่างเล็กน้อย — เช่น multisig scripts, time-locked outputs, หรือ script type ผิดปกติจะไม่ตรงกับขนาดมาตรฐานที่ใช้ที่นี่ ประมาณการแม่นพอสำหรับการตั้งงบ แต่ไม่ควรถือว่าเป็นตัวเลขแน่นอน กระเป๋าส่วนใหญ่ทำการคำนวณคล้ายกันและได้ผลต่างกับเครื่องมือนี้ไม่กี่เปอร์เซ็นต์