คำตอบโดยตรง
ค่าธรรมเนียม Bitcoin ขึ้นอยู่กับขนาดเสมือนของธุรกรรม อัตราค่าธรรมเนียม และความต้องการพื้นที่ในบล็อกที่เปลี่ยนแปลงไป—ไม่ใช่เพียงแค่จำนวนเงินที่ส่งเท่านั้น.
การชำระเงิน Bitcoin สองรายการสามารถส่งจำนวนเงินเท่ากันและจ่ายค่าธรรมเนียมเครือข่ายที่แตกต่างกันมาก ความแตกต่างไม่ใช่มูลค่าที่โอน แต่เป็นธุรกรรมที่กระเป๋าเงินต้องสร้าง: เอาต์พุตที่ยังไม่ได้ใช้ใดกลายเป็นอินพุต สร้างเอาต์พุตใหม่กี่รายการ ประเภทสคริปต์ใดที่เกี่ยวข้อง ข้อมูลที่ถูกทำให้เป็นอนุกรมในธุรกรรมที่ลงนามมีขนาดเท่าใด และอัตราค่าธรรมเนียมที่กระเป๋าเงินใช้กับขนาดเสมือนนั้น.
นี่คือเหตุผลที่กระเป๋าเงินสามารถแสดงค่าธรรมเนียมหนึ่งก่อนการเลือกเหรียญ และอีกค่าหนึ่งหลังจากเลือกอินพุตสุดท้ายแล้ว นอกจากนี้ยังเป็นเหตุผลที่การส่ง 0.01 BTC อาจมีค่าใช้จ่ายมากกว่าการส่ง 1 BTC Bitcoin ไม่คิดค่าธรรมเนียมเป็นเปอร์เซ็นต์ของการชำระเงิน แต่คิดราคาพื้นที่บล็อก.
การคำนวณเป็นไปตามเส้นทางต่อเนื่องหนึ่งเส้นทาง:
Inputs and outputs
→ serialized transaction data
→ transaction Weight
→ virtual size in vB
→ fee rate in sat/vB
→ total fee in sats
การเข้าใจเส้นทางนั้นช่วยให้คุณอ่านตัวอย่างค่าธรรมเนียมในกระเป๋าเงินได้โดยไม่สับสนระหว่างจำนวนเงินที่ชำระ อัตราค่าธรรมเนียม และค่าธรรมเนียมสุดท้าย.
ค่าธรรมเนียมไม่ใช่เปอร์เซ็นต์
ค่าธรรมเนียมธุรกรรม Bitcoin คือความแตกต่างระหว่างมูลค่ารวมของอินพุตและมูลค่ารวมที่กำหนดให้กับเอาต์พุต:
ค่าธรรมเนียมธุรกรรม
=
มูลค่าอินพุตรวม
−
มูลค่าเอาต์พุตรวม
สมมติว่ากระเป๋าเงินใช้จ่ายหนึ่งอินพุตมูลค่า 120,000 sats สร้างเอาต์พุตการชำระเงิน 100,000 sats และเอาต์พุตเงินทอน 18,500 sats ส่วนที่เหลือ 1,500 sats คือค่าธรรมเนียมธุรกรรม:
120,000 sats
− 100,000 sats
− 18,500 sats
= ค่าธรรมเนียม 1,500 sats
เครือข่ายไม่ได้หักค่าธรรมเนียมนั้นจากบัญชีแยกต่างหาก ค่าธรรมเนียมคือมูลค่าอินพุตที่ธุรกรรมไม่ได้กำหนดให้กับเอาต์พุตใหม่.
กระเป๋าเงินสามารถแสดงตัวเลขที่เกี่ยวข้องหลายตัวบนหน้าจอเดียวกัน ตัวเลขเหล่านี้อธิบายส่วนต่างๆ ของธุรกรรมและไม่ควรนำมาเปรียบเทียบโดยไม่มีหน่วย.
| ค่าที่แสดง | ความหมาย | ตัวอย่าง |
|---|---|---|
| จำนวนผู้รับ | Bitcoin ที่กำหนดให้กับเอาต์พุตของผู้รับที่ตั้งใจไว้ | 100,000 sats |
| ค่าธรรมเนียมรวม | มูลค่าอินพุตที่ไม่ถูกกำหนดให้กับเอาต์พุตใดๆ | 1,500 sats |
| อัตราค่าธรรมเนียม | ราคาที่ใช้ต่อไบต์เสมือน | 10 sat/vB |
| ขนาดเสมือน | Weighted ขนาดธุรกรรมที่ใช้สำหรับการเปรียบเทียบค่าธรรมเนียม | 150 vB |
| ยอดเดบิตกระเป๋าเงินรวม | จำนวนผู้รับบวกค่าธรรมเนียมเมื่อผู้ส่งชำระแยกต่างหาก | 101,500 sats |
จำนวนเงินที่ชำระและค่าธรรมเนียมรวมวัดเป็น sats หรือ BTC อัตราค่าธรรมเนียมวัดเป็น sat/vB ขนาดเสมือนวัดเป็น vB หากป้ายกำกับเหล่านี้ไม่คุ้นเคย โปรดอ่านก่อน satoshi หมายถึงอะไรในกระเป๋าเงินและการแสดงค่าธรรมเนียม.
อินพุตและเอาต์พุตกำหนดขนาด
อินพุตใช้จ่าย UTXO ที่มีอยู่
กระเป๋าเงิน Bitcoin ไม่ได้ใช้จ่ายจากยอดคงเหลือในบัญชีเดียว พวกเขาใช้จ่ายเอาต์พุตธุรกรรมที่ยังไม่ได้ใช้ซึ่งมีอยู่ ซึ่งเรียกกันทั่วไปว่า UTXO ทุก UTXO ที่เลือกจะกลายเป็นอินพุตในธุรกรรมใหม่.
อินพุตจะระบุเอาต์พุตก่อนหน้าและจัดหาข้อมูลที่จำเป็นเพื่อตอบสนองเงื่อนไขการใช้จ่ายของเอาต์พุตนั้น ขึ้นอยู่กับประเภทสคริปต์ ข้อมูลการอนุญาตบางส่วนปรากฏในซีเรียลไลซ์ของธุรกรรมฐาน และบางส่วนปรากฏใน witness.
ยอดคงเหลือที่แสดงอาจซ่อนโครงสร้างที่สำคัญต่อค่าธรรมเนียม กระเป๋าเงินที่แสดง 500,000 sats อาจควบคุม:
- UTXO หนึ่งรายการมูลค่า 500,000 sats;
- UTXO ห้ารายการมูลค่ารายการละ 100,000 sats;
- หรือ UTXO ห้าสิบรายการมูลค่ารายการละ 10,000 sats.
กระเป๋าเงินทั้งสามแสดงยอดคงเหลือรวมเท่ากัน การใช้จ่ายจากกระเป๋าเหล่านี้ไม่ได้สร้างธุรกรรมเดียวกัน UTXO ที่ถูกเลือกมากขึ้นโดยทั่วไปหมายถึงอินพุตมากขึ้น และอินพุตเพิ่มเติมทุกอันนำ outpoint, ฟิลด์ sequence, สคริปต์หรือข้อมูล witness และคำนำหน้าความยาวเข้ามาในธุรกรรมที่ถูกซีเรียลไลซ์.
การชำระเงิน 50,000-sat ที่ได้รับเงินทุนจาก UTXO ที่เหมาะสมหนึ่งรายการจึงสามารถมีขนาดเล็กกว่าการชำระเงินเดียวกันที่ได้รับเงินทุนจาก UTXO เล็กแปดรายการ การเลือกเหรียญยังเปลี่ยนความเป็นส่วนตัวและชุด UTXO ในอนาคตของกระเป๋าเงิน เพื่อเปรียบเทียบต้นทุนของการรวม UTXO ตอนนี้กับการใช้จ่ายแยกกันในภายหลัง ใช้ เครื่องคำนวณการรวม UTXO ของ Bitcoin.
เอาต์พุตผู้รับและเงินทอน
เอาต์พุตธุรกรรมประกอบด้วยค่าจำนวนเต็มในหน่วย satoshis และสคริปต์ล็อก การชำระเงินผู้รับคือหนึ่งเอาต์พุต เงินทอนที่ส่งกลับไปยังผู้ส่งมักจะเป็นอีกหนึ่งเอาต์พุต.
หากกระเป๋าเงินเลือก UTXO มูลค่า 120,000-sat เพื่อทำการชำระเงิน 100,000-sat โดยปกติแล้วไม่สามารถใช้จ่ายเพียงบางส่วนของ UTXO นั้นได้ ธุรกรรมใหม่ใช้เอาต์พุตทั้งหมด หลังจากหักค่าธรรมเนียมแล้ว มูลค่าที่ไม่ได้ใช้จะกลับไปยังเอาต์พุตเงินทอนที่ควบคุมโดยกระเป๋าเงิน.
การชำระเงินทั่วไปจึงสามารถมีอินพุตหนึ่งรายการขึ้นไป เอาต์พุตสำหรับผู้รับ เอาต์พุตสำหรับเงินทอน และฟิลด์คงที่ เช่น เวอร์ชันและ locktime นอกจากนี้ยังมีจำนวนอินพุตและเอาต์พุต และอินพุตแต่ละรายการมีค่า sequence ของตัวเอง.
การเพิ่มผู้รับอีกคนจะเพิ่มเอาต์พุตหนึ่งรายการ การเพิ่มเงินทอนก็เพิ่มอีกหนึ่งรายการเช่นกัน เอาต์พุตแต่ละรายการจะเพิ่มขนาดธุรกรรม แม้ว่าอินพุตแบบลายเซ็นเดียวธรรมดามักจะเพิ่มขนาดเสมือนมากกว่าเอาต์พุตธรรมดา.
กระเป๋าเงินสามารถหลีกเลี่ยงเงินทอนได้เมื่อมูลค่าอินพุตที่เลือกใกล้เคียงกับการชำระเงินบวกค่าธรรมเนียม นอกจากนี้ยังสามารถเพิ่มเศษเล็กน้อยให้กับค่าธรรมเนียมแทนการสร้างเอาต์พุตเงินทอนที่ไม่คุ้มค่า การตัดสินใจนั้นขึ้นอยู่กับการเลือกเหรียญและกฎนโยบายของกระเป๋าเงิน ซึ่งเป็นเหตุผลว่าทำไมข้อมูล “การชำระเงินหนึ่งครั้ง” จึงไม่เพียงพอที่จะสร้างค่าธรรมเนียมขึ้นมาใหม่ได้.
ไบต์, Weight และ vSize
ธุรกรรม Bitcoin ถูกซีเรียลไลซ์เป็นไบต์ โครงสร้างดิบประกอบด้วยเวอร์ชัน จำนวนอินพุต อินพุต จำนวนเอาต์พุต เอาต์พุต และ locktime ธุรกรรม SegWit ยังรวมถึง marker, flag และฟิลด์ witness.
ก่อน SegWit การเปรียบเทียบค่าธรรมเนียมมักอ้างอิงถึงไบต์ธุรกรรมโดยตรง BIP 141 แนะนำ Weight ของธุรกรรม เพื่อให้ข้อมูล witness มีส่วนร่วมแตกต่างจากข้อมูลที่ไม่ใช่ witness.
BIP 141 นิยาม Weight ว่า:
Transaction Weight
=
ขนาดธุรกรรมฐาน × 3
+
ขนาดธุรกรรมทั้งหมด
ความสัมพันธ์เดียวกันสามารถเขียนได้เป็น:
Transaction Weight
=
ไบต์ที่ไม่ใช่ witness × 4
+
ไบต์ witness
ไบต์ที่ไม่ใช่ witness มีส่วนร่วมสี่หน่วยน้ำหนัก ไบต์ witness มีส่วนร่วมหนึ่งหน่วย การถ่วงน้ำหนักที่ต่ำกว่าไม่ได้ทำให้ข้อมูล witness ฟรี มันยังคงใช้ Weight ของบล็อกและยังคงเพิ่มขนาดที่เกี่ยวข้องกับค่าธรรมเนียม.
กระเป๋าเงินและตลาดค่าธรรมเนียมมักแสดงผลลัพธ์เป็นไบต์เสมือน ย่อว่า vB:
vSize
=
ceil(Transaction Weight ÷ 4)
การหารปัดขึ้นเป็นไบต์เสมือนทั้งหมด ขนาดฐาน ขนาดซีเรียลไลซ์ทั้งหมด Weight และ vSize เป็นการวัดที่เกี่ยวข้องกัน แต่ไม่สามารถใช้แทนกันได้ ขนาดฐานไม่รวมข้อมูลที่เกี่ยวข้องกับ witness ขนาดทั้งหมดรวมซีเรียลไลเซชันที่สมบูรณ์ Weight ใช้กฎสี่ต่อหนึ่ง vSize เปลี่ยน Weight นั้นเป็นขนาดจำนวนเต็มที่ใช้สำหรับการคำนวณอัตราค่าธรรมเนียมทั่วไป.
sat/vB กำหนดราคาธุรกรรม
หน่วยอัตราค่าธรรมเนียม Bitcoin ทั่วไปคือ satoshis ต่อไบต์เสมือน เขียนว่า sat/vB เมื่อโครงสร้างธุรกรรมสร้าง vSize แล้ว การคำนวณค่าธรรมเนียมอย่างง่ายคือ:
ค่าธรรมเนียมโดยประมาณในหน่วย sats
=
vSize ของธุรกรรม
×
อัตราค่าธรรมเนียมในหน่วย sat/vB
หน่วยต่างๆ ตัดกันอย่างเรียบร้อย: ไบต์เสมือนคูณด้วย satoshis ต่อไบต์เสมือน จะได้จำนวน satoshis ทั้งหมด.
อัตราค่าธรรมเนียมและค่าธรรมเนียมรวมตอบคำถามที่แตกต่างกัน:
- อัตราค่าธรรมเนียม: จำนวนที่ธุรกรรมจ่ายสำหรับแต่ละหน่วยของขนาดเสมือน.
- ค่าธรรมเนียมรวม: จำนวน satoshis ที่ธุรกรรมทั้งหมดจ่าย.
ธุรกรรมขนาดใหญ่สามารถจ่ายค่าธรรมเนียมรวมสูงในอัตราปานกลาง ธุรกรรมขนาดกะทัดรัดสามารถจ่ายรวมน้อยกว่าแม้ในอัตราที่สูงกว่า การเปรียบเทียบเฉพาะค่าธรรมเนียมรวมซ่อนความแตกต่างระหว่างขนาดธุรกรรมและความเร่งด่วนของตลาดค่าธรรมเนียม.
เมื่อทราบธุรกรรมที่ลงนามขั้นสุดท้ายแล้ว อัตราค่าธรรมเนียมที่แท้จริงสามารถคำนวณได้จากค่าธรรมเนียมจริงและ vSize จริง:
อัตราค่าธรรมเนียมที่แท้จริง
=
ค่าธรรมเนียมจริงใน sats
÷
vSize จริงใน vB
อัตราที่แท้จริงสามารถมีทศนิยมได้แม้ว่าค่าธรรมเนียมธุรกรรมเองจะเป็นจำนวนเต็มของ satoshis.
กระเป๋าเงินหรือเครื่องคิดเลขสามารถยอมรับเป้าหมายอัตราค่าธรรมเนียมทศนิยมได้ ค่าธรรมเนียมธุรกรรมเองยังคงเป็นจำนวนเต็มของ sats เนื่องจากค่าอินพุตและเอาต์พุตเป็นจำนวนเต็ม เมื่อการคูณให้ผลลัพธ์เป็นเศษส่วนของ satoshi การนำไปใช้ต้องเลือกค่าธรรมเนียมเป็น satoshi เต็ม การปัดขึ้นหลีกเลี่ยงการต่ำกว่าเป้าหมายอัตราที่ร้องขอ ซึ่งอาจทำให้อัตราที่แท้จริงสุดท้ายสูงกว่าค่าที่ป้อนเล็กน้อย.
การคำนวณค่าธรรมเนียมที่ทำซ้ำได้
ตัวอย่างต่อไปนี้จำลองโครงสร้างธุรกรรมที่ลงนามทั่วไปหนึ่งแบบ:
- อินพุต Native SegWit P2WPKH 2 รายการ;
- เอาต์พุตผู้รับ P2WPKH 1 รายการ;
- เอาต์พุตเงินทอน P2WPKH 1 รายการ;
- จำนวน CompactSize ที่แต่ละรายการพอดีในหนึ่งไบต์;
- ลายเซ็น ECDSA ที่ทำให้เป็นอนุกรมขนาด 72 ไบต์ใน witness;
- และอัตราค่าธรรมเนียมที่เลือก 12 sat/vB.
นี่คือแบบจำลองทางเทคนิคสำหรับการอธิบาย ไม่ใช่บันทึกธุรกรรมของผู้ใช้หรือการอ้างสิทธิ์เกี่ยวกับกระเป๋าเงินเฉพาะ ความยาวลายเซ็น ECDSA สุดท้ายอาจแตกต่างกัน ดังนั้นกระเป๋าเงินสามารถสำรอง Weight อินพุตสูงสุดที่แตกต่างกันเล็กน้อยก่อนการลงนาม.
จากซีเรียลไลเซชันจนถึงค่าธรรมเนียมสุดท้าย
อินพุต P2WPKH สองตัวมีส่วนร่วม 41 ไบต์ฐานต่อตัว เอาต์พุต P2WPKH สองตัวมีส่วนร่วม 31 ไบต์ต่อตัว ฟิลด์คงที่และจำนวนอินพุตและเอาต์พุตหนึ่งไบต์มีส่วนร่วมอีก 10 ไบต์ฐาน อินพุตที่จำลองแต่ละตัวมี 108 ไบต์ witness: หนึ่งไบต์สำหรับจำนวนรายการสแต็ก หนึ่งไบต์สำหรับความยาวลายเซ็น ลายเซ็นซีเรียลไลซ์ขนาด 72 ไบต์ หนึ่งไบต์สำหรับความยาวคีย์สาธารณะ และคีย์สาธารณะแบบบีบอัดขนาด 33 ไบต์.
| ส่วนประกอบ | ไบต์ฐาน | ไบต์ witness | การมีส่วนร่วมของ Weight |
|---|---|---|---|
| เวอร์ชัน จำนวน และ locktime | 10 | 0 | 40 WU |
| อินพุต P2WPKH สองตัว | 82 | 216 | 544 WU |
| เอาต์พุต P2WPKH สองรายการ | 62 | 0 | 248 WU |
| เครื่องหมายและธง SegWit | 0 | 2 | 2 WU |
| รวม | 154 | 218 | 834 WU |
Weight
= (154 ไบต์พื้นฐาน × 4) + 218 ไบต์ witness
= 834 WU
vSize
= ceil(834 ÷ 4)
= 209 vB
ค่าธรรมเนียม
= 209 vB × 12 sat/vB
= 2,508 sats
ทุกสมมติฐานมองเห็นได้ เปลี่ยนจำนวนอินพุต จำนวนเอาต์พุต ประเภทสคริปต์ ขนาด witness หรืออัตราค่าธรรมเนียม แล้วผลลัพธ์จะเปลี่ยนไป หากต้องการจำลองประเภทอินพุตและเอาต์พุตแบบผสม เปิด เครื่องคำนวณค่าธรรมเนียมธุรกรรม Bitcoin, ป้อนโครงสร้างที่แสดงโดยกระเป๋าเงิน และเปรียบเทียบการประมาณกับตัวอย่างธุรกรรมสุดท้าย.
การชำระเงินเดียวกัน ค่าธรรมเนียมต่างกัน
พิจารณากระเป๋าเงินสองใบที่แต่ละใบส่งการชำระเงิน 100,000-sat สร้างเอาต์พุต P2WPKH หนึ่งรายการ และใช้อัตราค่าธรรมเนียม 12 sat/vB ความแตกต่างเพียงอย่างเดียวคือจำนวนอินพุต P2WPKH.
ใช้แบบจำลองลายเซ็น 72 ไบต์เดียวกันกับตัวอย่างที่คำนวณ:
| ธุรกรรมที่จำลอง | อินพุต | เอาต์พุต | น้ำหนัก | vSize | ค่าธรรมเนียมที่ 12 sat/vB |
|---|---|---|---|---|---|
| กระเป๋าเงิน A | 1 P2WPKH | 2 P2WPKH | 562 WU | 141 vB | 1,692 sats |
| กระเป๋าเงิน B | 8 P2WPKH | 2 P2WPKH | 2,466 WU | 617 vB | 7,404 sats |
ผู้รับได้รับจำนวนเงินเท่ากัน อัตราค่าธรรมเนียมเท่ากัน กระเป๋าเงิน B จ่ายมากขึ้นเพราะใช้จ่ายอินพุตมากขึ้นและสร้างธุรกรรมที่ใหญ่ขึ้น.
จำนวนเงินสามารถไม่เปลี่ยนแปลง โครงสร้างธุรกรรมไม่ใช่.
การประมาณค่าธรรมเนียมที่ไม่ทราบ UTXOs จริงของกระเป๋าเงินจึงเป็นสถานการณ์จำลอง ไม่ใช่ธุรกรรมสุดท้าย กระเป๋าเงินต้องเลือกอินพุตจริงก่อนจึงจะกำหนดขนาดและค่าธรรมเนียมที่เป็นไปได้.
ประเภทอินพุตเปลี่ยนต้นทุน
จำนวนอินพุตไม่ใช่ตัวแปรโครงสร้างเพียงอย่างเดียว เงื่อนไขการใช้จ่ายของเอาต์พุตที่เลือกกำหนดสิ่งที่แต่ละอินพุตต้องซีเรียลไลซ์.
โปรไฟล์ลายเซ็นเดียวทั่วไปรวมถึง Legacy P2PKH, nested SegWit P2SH-P2WPKH, Native SegWit P2WPKH และ Taproot key-path P2TR พวกมันไม่ได้เพิ่ม Weight เท่ากัน.
| โปรไฟล์อินพุตทั่วไป | ตำแหน่งที่ข้อมูลการอนุญาตปรากฏ | ขนาดส่วนเพิ่มสำหรับการอธิบาย | ขอบเขตสำคัญ |
|---|---|---|---|
| P2PKH | scriptSig ธุรกรรมฐาน | ประมาณ 148 vB | ความยาวลายเซ็น ECDSA อาจแตกต่างกัน |
| P2SH-P2WPKH | โปรแกรมไถ่ถอนใน scriptSig บวก witness | ประมาณ 91 vB | nested SegWit รวมข้อมูล wrapper |
| P2WPKH | Witness | ประมาณ 68 vB | ความยาวลายเซ็น ECDSA อาจแตกต่างกัน |
| เส้นทางคีย์ P2TR | ลายเซ็น Schnorr เดี่ยวใน witness | ประมาณ 58 vB | ไบต์ sighash ที่ไม่ใช่ค่าเริ่มต้นเพิ่มหนึ่งไบต์ |
ตัวเลขเหล่านี้อธิบายเส้นทางการใช้จ่ายลายเซ็นเดี่ยวทั่วไป ไม่ใช่ทุกธุรกรรมที่เป็นไปได้ Multisig, P2WSH, เส้นทางสคริปต์ Taproot, จารึก, สคริปต์ที่ซับซ้อน และโครงสร้างที่ไม่ได้มาตรฐานสามารถมีข้อมูล witness ที่แตกต่างกันมาก.
ประเภทเอาต์พุตก็สำคัญเช่นกัน แม้ว่าที่อยู่รับจะไม่เปิดเผยต้นทุนอินพุตในอนาคตที่แน่นอนในทุกกรณี สำหรับการเปรียบเทียบที่เน้นการเข้ารหัสที่อยู่ ความเข้ากันได้ และตระกูลสคริปต์ทั่วไป โปรดอ่าน ประเภทที่อยู่ Bitcoin และผลกระทบต่อกระเป๋าเงิน.
ทำไมการประมาณค่าของกระเป๋าเงินจึงเปลี่ยนแปลง
การประมาณค่าธรรมเนียมของกระเป๋าเงินสามารถเปลี่ยนแปลงได้ระหว่างแบบฟอร์มการชำระเงินและหน้าจอการลงนาม แม้ว่าจำนวนเงินผู้รับจะเท่าเดิมก็ตาม การตัดสินใจสร้างธุรกรรมหลายอย่างอาจยังไม่ได้รับการแก้ไขเมื่อการประมาณค่าแรกปรากฏขึ้น.
การเลือกเหรียญและเงินทอนเป็นเพียงชั่วคราว
กระเป๋าเงินสามารถจำลองจำนวนอินพุตหนึ่งรายการในตอนแรก จากนั้นเลือกชุดอื่นหลังจากพิจารณาสถานะการยืนยัน การตั้งค่าการควบคุมเหรียญ กฎความเป็นส่วนตัว การหลีกเลี่ยงเงินทอน หรือความจำเป็นในการครอบคลุมค่าธรรมเนียม เมื่อทราบอินพุตแล้ว ก็สามารถเพิ่ม ลบ หรือเปลี่ยนประเภทของเอาต์พุตเงินทอนได้.
Bitcoin Core's fundrawtransaction เอกสารสะท้อนถึงตัวเลือกเหล่านี้: กระเป๋าเงินสามารถเพิ่มอินพุต สร้างเอาต์พุตการเปลี่ยนแปลงได้สูงสุดหนึ่งรายการ เลือกประเภทการเปลี่ยนแปลง ใช้อัตราค่าธรรมเนียมใน sat/vB หรือหักค่าธรรมเนียมจากเอาต์พุตที่ระบุ การเพิ่มอินพุตจะเพิ่ม Weight การเพิ่มการเปลี่ยนแปลงจะเพิ่มขนาดเอาต์พุต การหักค่าธรรมเนียมจะเปลี่ยนจำนวนเงินผู้รับ การหลีกเลี่ยงเอาต์พุตการเปลี่ยนแปลงเล็กน้อยสามารถย้ายส่วนที่เหลือไปเป็นค่าธรรมเนียมได้.
ลายเซ็นและอัตราค่าธรรมเนียมถูกประมาณการ
ลายเซ็น ECDSA ไม่รับประกันว่าจะมีความยาวแบบอนุกรมที่เหมือนกัน เอกสารการจัดหาเงินทุนสำหรับธุรกรรมของ Bitcoin Core แนะนำให้ใช้ขนาดลายเซ็น DER แบบอนุกรมสูงสุดเมื่อมีการระบุค่าประมาณ Weight ของอินพุตภายนอก กระเป๋าเงินจึงสามารถสำรองค่าสูงสุดที่ปลอดภัยก่อนที่ลายเซ็นจริงจะเกิดขึ้น.
อัตราค่าธรรมเนียมสามารถรีเฟรชก่อนการลงนามได้ หากกระเป๋าเงินได้รับค่าประมาณที่ใหม่กว่าหรือผู้ใช้เปลี่ยนเป้าหมายการยืนยัน อัตรา sat/vB ที่เลือกจะเปลี่ยนแม้ว่าโครงสร้างธุรกรรมจะไม่เปลี่ยนก็ตาม.
สิ่งเหล่านี้ไม่ใช่ความคลาดเคลื่อนแบบสุ่ม ค่าธรรมเนียมที่เปลี่ยนแปลงควรสอดคล้องกับชุดอินพุต โครงสร้างเอาต์พุต สมมติฐานขนาดลายเซ็น ค่าประมาณอัตราค่าธรรมเนียม หรือการรวมกันของสิ่งเหล่านี้ที่เปลี่ยนแปลง.
ความต้องการของเครือข่ายกำหนดอัตรา
โครงสร้างธุรกรรมกำหนด vSize สภาพเครือข่ายมีอิทธิพลต่ออัตราที่กระเป๋าเงินเลือกสำหรับเป้าหมายการยืนยัน.
พื้นที่บล็อก Bitcoin มีจำกัด ธุรกรรมที่ไม่ได้รับการยืนยันแข่งขันกันเพื่อรวมอยู่ในบล็อก และอัตราค่าธรรมเนียมเป็นหนึ่งในสัญญาณหลักที่ใช้เปรียบเทียบว่าธุรกรรมแต่ละรายการจ่ายเท่าใดเมื่อเทียบกับขนาดเสมือน กระเป๋าเงินสามารถเลือกอัตราที่สูงขึ้นสำหรับเป้าหมายที่ aggressive มากขึ้น หรืออัตราที่ต่ำลงเมื่อผู้ใช้ยอมรับความล่าช้ามากขึ้น.
Bitcoin Core's estimatesmartfee RPC ส่งคืนอัตราค่าธรรมเนียมโดยประมาณสำหรับธุรกรรมที่จะเริ่มการยืนยันภายในจำนวนบล็อกที่ร้องขอเมื่อมีข้อมูลเพียงพอ โดยใช้ขนาดธุรกรรมเสมือนและให้โหมดการประมาณสองโหมด:
- ประหยัด ตอบสนองได้เร็วกว่าต่ออัตราค่าธรรมเนียมที่ลดลงในระยะสั้น และสามารถคืนค่าประมาณที่ต่ำกว่าได้.
- อนุรักษ์นิยม ใช้ประวัติที่ยาวนานกว่า ตอบสนองต่อการลดลงในระยะสั้นได้ช้ากว่า และสามารถคืนค่าประมาณที่สูงกว่าได้.
ทั้งสองโหมดไม่ได้สำรองพื้นที่บล็อก การประมาณค่าขึ้นอยู่กับพฤติกรรมที่สังเกตได้ ไม่ใช่คำสัญญาว่านักขุดจะรวมธุรกรรมในบล็อกใดบล็อกหนึ่ง.
กระเป๋าเงิน นักสำรวจ และบริการต่างๆ สามารถใช้กรอบเวลา มุมมอง mempool ส่วนต่างความปลอดภัย และป้ายกำกับเป้าหมายที่แตกต่างกัน ดังนั้นอินเทอร์เฟซสองแบบจึงสามารถแนะนำอัตราที่แตกต่างกันในเวลาเดียวกันได้โดยไม่ต้องใช้กฎฉันทามติ Bitcoin ที่แตกต่างกัน.
ไม่มีคิว mempool ทั่วโลกเพียงคิวเดียวที่ทุกโหนดเห็นในลำดับเดียวกันทุกประการ โหนดได้รับธุรกรรมในเวลาที่ต่างกันและใช้การตั้งค่านโยบายของตนเอง การประมาณค่าของกระเป๋าเงินอธิบายข้อมูลที่มีให้กับแหล่งที่มาของค่าธรรมเนียม นักขุดจะเลือกจากธุรกรรมและนโยบายที่มีให้กับการดำเนินการขุดนั้นในที่สุด.
ธุรกรรมที่ลงนามขั้นสุดท้าย
ก่อนลงนาม กระเป๋าเงินจะประมาณข้อมูลการอนุญาตที่จำเป็นสำหรับแต่ละอินพุต หลังจากลงนาม ธุรกรรมจะประกอบด้วยลายเซ็นจริงและสแตก witness การทำให้เป็นอนุกรมขั้นสุดท้ายเผยให้เห็น Weight, vSize, ค่าธรรมเนียมรวม และอัตราค่าธรรมเนียมที่มีผลจริง.
ดังนั้นหน้าจอการลงนามควรถือว่ามีความน่าเชื่อถือมากกว่าการประมาณค่าในช่วงแรกที่ป้อนจำนวนเงิน โดยสามารถเปิดเผยได้ว่ากระเป๋าเงินเลือกอินพุตมากกว่าที่คาดไว้ เพิ่มเงินทอน ใช้ประเภทเอาต์พุตที่แตกต่างกัน สร้างขนาดลายเซ็นที่แตกต่างกัน หรือรีเฟรชอัตราค่าธรรมเนียมก่อนการอนุญาต.
รายละเอียดการชำระเงินอาจถูกต้องในขณะที่โครงสร้างธุรกรรมยังคงควรค่าแก่การตรวจสอบอีกครั้ง ตรวจสอบทั้งสองอย่างก่อนการออกอากาศ.
การเปลี่ยนแปลงค่าธรรมเนียมหลังการออกอากาศ
การออกอากาศจะส่งธุรกรรมไปยังโหนดเพื่อนบ้าน ไม่ได้รับประกันว่าทุกโหนดจะยอมรับและเก็บรักษาไว้ หรือจะปรากฏในบล็อกถัดไป ธุรกรรมใหม่สามารถเข้าสู่ตลาดค่าธรรมเนียมหลังจากของคุณ ทำให้อัตราเดิมมีการแข่งขันน้อยลง.
กระเป๋าเงินบางใบสามารถสร้างธุรกรรมทดแทนที่มีค่าธรรมเนียมสูงกว่าได้เมื่อธุรกรรมที่ยังไม่ได้รับการยืนยันมีสิทธิ์ในการเพิ่มค่าธรรมเนียม เวิร์กโฟลว์ของ Bitcoin Core bumpfee สามารถลดเงินทอนหรือเพิ่มอินพุตเมื่อจำเป็น ซึ่งหมายความว่าขนาดและค่าธรรมเนียมรวมของธุรกรรมทดแทนอาจแตกต่างจากต้นฉบับ.
อ่านตัวอย่างกระเป๋าเงินขั้นสุดท้าย
ก่อนลงนาม ให้ตรวจสอบตัวเลขที่กำหนดค่าธรรมเนียมแทนที่จะพึ่งพาบรรทัด “ค่าธรรมเนียมเครือข่าย” เพียงบรรทัดเดียว.
- จำนวนผู้รับ: ยืนยันจำนวนเงินที่กำหนดให้กับผู้รับที่ตั้งใจไว้ และว่าค่าธรรมเนียมถูกหักจากเอาต์พุตนั้นหรือไม่.
- อินพุตที่เลือก: จำนวนอินพุตที่มากกว่าที่คาดไว้อธิบายค่าธรรมเนียมที่เพิ่มขึ้นหลายรายการ.
- ผลลัพธ์และการทอนเงิน: ยืนยันผลลัพธ์ของผู้รับ ผลลัพธ์การทอนเงิน และปลายทางการทอนเงิน.
- ขนาดเสมือน: ตรวจสอบตัวเลข vB เมื่อกระเป๋าเงินแสดงให้เห็น.
- อัตราค่าธรรมเนียม: แยกแยะอัตราใน sat/vB จากค่าธรรมเนียมสัมบูรณ์ใน sats.
- ค่าธรรมเนียมรวม: ยืนยันจำนวน satoshis ทั้งหมดที่ธุรกรรมจ่าย.
- เป้าหมายการยืนยัน: ถือว่าเป็นการประมาณการและสังเกตว่ากระเป๋าเงินสามารถเพิ่มค่าธรรมเนียมในภายหลังได้หรือไม่.
การตรวจสอบข้ามที่มีประโยชน์ที่สุดคือเลขคณิต:
ค่าธรรมเนียมที่แสดง vSize × sat/vB ที่แสดง
ตรงกับค่าธรรมเนียมที่แสดงในหน่วย sats โดยประมาณหรือไม่?
ความแตกต่างเล็กน้อยอาจมาจากอัตราค่าธรรมเนียมทศนิยม การปัดเศษ satoshi ทั้งหมด หรือค่าที่แสดงแบบปัดเศษ ความแตกต่างใหญ่ที่ไม่สามารถอธิบายได้ควรได้รับการตรวจสอบอีกครั้งก่อนลงนาม.
สำหรับบริบทที่กว้างขึ้นเกี่ยวกับ UTXOs การยืนยัน นักขุด และการตรวจสอบ ให้ดำเนินการต่อที่ Bitcoin เครือข่ายและการอ้างอิงธุรกรรม.
สิ่งที่การประมาณการไม่สามารถรับประกันได้
การประมาณค่าธรรมเนียมที่สมบูรณ์สามารถอธิบายธุรกรรมและอัตราที่เลือกได้ ไม่สามารถรับประกัน:
- การยืนยันในบล็อกถัดไปหรือในเวลาที่แน่นอน;
- การยอมรับและการเก็บรักษาอย่างต่อเนื่องโดยทุกโหนด;
- ความต้องการเครือข่ายที่ไม่เปลี่ยนแปลงหลังจากลงนามธุรกรรม;
- หรือว่ากระเป๋าเงินเลือกอินพุตที่เป็นส่วนตัวและประหยัดที่สุดหรือจะไม่ต้องเพิ่มค่าธรรมเนียม.
คำถามที่ทำซ้ำได้นั้นแคบกว่า: ด้วยโครงสร้างธุรกรรมนี้และอัตราค่าธรรมเนียมนี้ ธุรกรรมจ่าย satoshis กี่ตัว? เวลาการยืนยันยังคงเป็นความน่าจะเป็น.
Bitcoin คำถามที่พบบ่อยเกี่ยวกับค่าธรรมเนียมธุรกรรม
ค่าธรรมเนียมธุรกรรม Bitcoin ขึ้นอยู่กับจำนวนเงินที่ส่งหรือไม่?
ไม่ ค่าธรรมเนียมธุรกรรม Bitcoin ขึ้นอยู่กับขนาดเสมือนของธุรกรรมและอัตราค่าธรรมเนียมที่เลือกเป็นหลัก จำนวนเงินที่ส่งอาจส่งผลต่อ UTXOs ที่กระเป๋าเงินต้องการ แต่การชำระเงินที่ใหญ่ขึ้นไม่ได้สร้างค่าธรรมเนียมที่ใหญ่ขึ้นโดยอัตโนมัติ.
sat/vB หมายถึงอะไร?
Sat/vB หมายถึง satoshis ต่อไบต์เสมือน เป็นอัตราค่าธรรมเนียมที่ใช้กับขนาดเสมือนของธุรกรรม การคูณ vSize ด้วยอัตราค่าธรรมเนียมจะให้ค่าธรรมเนียมรวมที่จำลองใน satoshis.
ทำไมค่าธรรมเนียมกระเป๋าเงิน Bitcoin ของฉันจึงเปลี่ยนแปลงก่อนที่ฉันจะลงนาม?
กระเป๋าเงินสามารถเลือกอินพุตที่แตกต่างกัน เพิ่มหรือลบการทอนเงิน อัปเดตประเภทการทอนเงิน สำรองขนาดลายเซ็นที่แตกต่างกัน หรือรีเฟรชอัตราค่าธรรมเนียม การเปลี่ยนแปลงใดๆ เหล่านี้สามารถเปลี่ยนแปลงค่าธรรมเนียมสุดท้ายได้.
ทำไมกระเป๋าเงินสองใบจึงเรียกเก็บค่าธรรมเนียมที่แตกต่างกันสำหรับการชำระเงินเดียวกัน?
กระเป๋าเงินสามารถควบคุม UTXOs ที่แตกต่างกัน เลือกอินพุตที่แตกต่างกัน สร้างผลลัพธ์การทอนเงินที่แตกต่างกัน ใช้การประมาณอัตราค่าธรรมเนียมที่แตกต่างกัน หรือใช้ส่วนต่างความปลอดภัยที่แตกต่างกัน จำนวนเงินที่ผู้รับได้รับอาจเท่ากันในขณะที่โครงสร้างธุรกรรมแตกต่างกัน.
ค่าธรรมเนียม Bitcoin ที่สูงขึ้นรับประกันการยืนยันที่เร็วขึ้นหรือไม่?
ไม่ อัตราค่าธรรมเนียมที่สูงขึ้นสามารถปรับปรุงลำดับความสำคัญสัมพัทธ์ของธุรกรรม แต่ไม่สามารถรับประกันบล็อกเฉพาะได้ ความต้องการในอนาคต การเลือกของนักขุด นโยบาย mempool และการค้นพบบล็อกยังคงอยู่นอกเหนือการควบคุมของกระเป๋าเงิน.
ค่าธรรมเนียม Bitcoin สามารถเพิ่มได้หลังจากการออกอากาศหรือไม่?
กระเป๋าเงินบางใบสามารถสร้างการแทนที่ด้วยค่าธรรมเนียมที่สูงขึ้นเมื่อธุรกรรมเดิมมีสิทธิ์ในการเพิ่มค่าธรรมเนียม การแทนที่สามารถลดการทอนเงินหรือเพิ่มอินพุต ดังนั้นขนาดธุรกรรมและค่าธรรมเนียมทั้งหมดจึงสามารถเปลี่ยนแปลงได้.
แหล่งข้อมูลทางเทคนิค
สูตรและขอบเขตการสร้างธุรกรรมในคู่มือนี้อ้างอิงจากข้อกำหนดหลักของ Bitcoin และเอกสาร Bitcoin Core.
- BIP 141: วิทเนสแบบแยก — กำหนด Weight ของธุรกรรม ขนาดฐาน ขนาดทั้งหมด และขนาดธุรกรรมเสมือน.
- Bitcoin เอกสารอ้างอิงธุรกรรมสำหรับนักพัฒนา — บันทึกอินพุตและเอาต์พุตที่ซีเรียลไลซ์และอธิบายว่าค่าเอาต์พุตถูกบันทึกใน satoshis.
- Bitcoin Core 31.0 estimatesmartfee RPC — เอกสารอัตราค่าธรรมเนียมการยืนยันเป้าหมาย การประมาณขนาดเสมือน และโหมดประหยัดและอนุรักษ์นิยม.
- Bitcoin Core 31.0 fundrawtransaction RPC — เอกสารการเลือกอินพุตอัตโนมัติ การสร้างเงินทอน การตั้งค่าอัตราค่าธรรมเนียม การหักค่าธรรมเนียม และสมมติฐานอินพุต-Weight.
- Bitcoin Core 31.0 bumpfee RPC — เอกสารการแทนที่ค่าธรรมเนียมของกระเป๋าเงิน และวิธีที่ธุรกรรมที่มีค่าธรรมเนียมสูงกว่าสามารถลดเงินทอนหรือเพิ่มอินพุตได้.
- BIP 341: Taproot — กำหนดลายเซ็นคีย์พาธ Taproot และพฤติกรรม witness ที่ใช้ในโมเดลขนาดอินพุต P2TR ทั่วไป.
แหล่งข้อมูล
พบข้อผิดพลาด? รายงานปัญหาด้านเนื้อหา หรืออ่าน นโยบายการแก้ไข.