ค่าธรรมเนียมเป็นโปรแกรมการประมาณค่าธรรมเนียม Bitcoin ซึ่งแตกต่างจากการประมาณค่าธรรมเนียมใน Bitcoin Core, ค่าธรรมเนียมใช้ประโยชน์จากสถานะ mempool ปัจจุบันและอัตราการมาถึงการทำธุรกรรมทำให้สามารถตอบสนองต่อการเพิ่มขึ้นของการจราจร การประมาณค่าธรรมเนียมสามารถดูได้ที่นี่
การประมาณค่าธรรมเนียมในค่าธรรมเนียมเป็นแบบจำลอง การประมาณการได้มาจากการจำลอง Monte Carlo ของรูปแบบการเข้าคิวของเครือข่าย Bitcoin ในสาระสำคัญเราพบวิธีแก้ปัญหาสำหรับคำถาม: "ถ้าเราคิดว่าคนงานเหมืองจัดลำดับความสำคัญของการทำธุรกรรมด้วยอัตราค่าธรรมเนียมภายใต้ขนาดของบล็อกสูงสุดและอัตราค่าธรรมเนียมขั้นต่ำและการทำธุรกรรมนั้นมาถึงในอัตราเดียวกับชั่วโมงที่ผ่านมา ขนาด mempool ปัจจุบันอัตราค่าธรรมเนียมใดที่จำเป็นสำหรับการทำธุรกรรมที่จะได้รับการยืนยันภายในบล็อก x (พร้อมความน่าจะเป็นความสำเร็จ p)? "
สิ่งนี้ช่วยให้อัลกอริทึมการประมาณค่าสามารถรองรับการเปลี่ยนแปลงในเงื่อนไขเครือข่าย ตัวอย่างเช่นหากไม่พบบล็อกในหนึ่งชั่วโมงและมีงานในมือ mempool ขนาดใหญ่อัลกอริทึมควรรับรู้และเพิ่มการประมาณค่าธรรมเนียม อีกวิธีหนึ่งหากมีกล่อมทุกวันในอัตราการมาถึงการทำธุรกรรมการประมาณค่าธรรมเนียมควรสะท้อนให้เห็นว่าช่วยให้ผู้ใช้จ่ายค่าธรรมเนียมที่ต่ำกว่าในช่วงระยะเวลาขับไล่
ค่าธรรมเนียมรวบรวมข้อมูลเครือข่าย Bitcoin ผ่าน Bitcoin Core JSON-RPC API และคำนวณการประมาณการสำหรับ:
(txFeerate, txSize)*ดู commit d895e64
เมื่อรวมกับสถานะ mempool ปัจจุบันสิ่งเหล่านี้จะใช้ในการจำลองและได้รับการประมาณค่าธรรมเนียม การประมาณนโยบายการขุดสามารถเห็นได้ที่นี่และอัตราการมาถึงการทำธุรกรรมเป็นฟังก์ชันของอัตราค่าธรรมเนียมสามารถดูได้ที่นี่
ในระหว่างการดำเนินการปกติค่า FEESIM จะทำนายเวลายืนยันของแต่ละธุรกรรมและรักษาสัดส่วนของการทำธุรกรรมที่ตรงกับการทำนาย สัดส่วนนี้ควรใกล้เคียงกับความน่าจะเป็นที่ประสบความสำเร็จ (เริ่มต้น 90%) หากโมเดลมีความแม่นยำ คะแนนเหล่านี้สามารถเห็นได้ที่นี่
ติดตั้งจากแหล่งที่มาโดยใช้อย่างน้อยไป 1.6:
$ go get github.com/bitcoinfees/feesim ค่า FEESIM ใช้การทดสอบผู้ขาย GO 1.5 ดังนั้นคุณสามารถติดตั้งด้วย GO 1.5 โดยการตั้งค่าตัวแปรสภาพแวดล้อม GO15VENDOREXPERIMENT=1
ค่าธรรมเนียมต้องการการเข้าถึง JSON-RPC ไปยังโหนด Bitcoin Core (เวอร์ชัน> 0.13.0 ซึ่งสามารถตัดแต่งได้) ควรระบุการตั้งค่า RPC ใน config.yml เช่น:
bitcoinrpc :
username : myusername
password : mypassword
# host: localhost
# port: 8332ไฟล์กำหนดค่าควรวางไว้ในไดเรกทอรีข้อมูล:
~/.feesim~/Library/Application Support/Feesim%LOCALAPPDATA%Feesim เมื่อเริ่มต้น feesim start โปรแกรมจะเริ่มการรวบรวมข้อมูลแล้วเริ่มเรียกใช้การจำลองเมื่อมีข้อมูลเพียงพอ มันจะต้องออนไลน์ตลอดเวลาเนื่องจากรวบรวมข้อมูล mempool ซึ่งไม่สามารถรับได้โดยการวิเคราะห์ออฟไลน์
feesim status แสดงสถานะโปรแกรม:
$ feesim status
result : Tx estimation window size was 0s, should be at least 600s
txsource : Tx estimation window size was 0s, should be at least 600s
blocksource : Block coverage was only 0/2016, should be at least 1008/2016.
mempool : OK result แสดงให้เห็นว่ามีการประมาณค่าธรรมเนียมหรือไม่ โดยค่าเริ่มต้นการประมาณค่าธรรมเนียมต้องใช้ข้อมูลธุรกรรมอย่างน้อย 10 นาทีและข้อมูลจาก 1008 ของบล็อกปี 2016 ล่าสุด
เมื่อมีข้อมูลเพียงพอการจำลองจะเริ่มทำงานและประมาณการค่าธรรมเนียม อินเทอร์เฟซสะท้อนให้เห็นถึง bitcoin-cli estimatefee :
$ feesim estimatefee 1
0.00030112สิ่งนี้แสดงอัตราค่าธรรมเนียมขั้นต่ำสำหรับการทำธุรกรรมที่จะได้รับการยืนยันใน 1 บล็อกโดยมีความน่าจะเป็น 90% (กำหนดค่าได้)
แตกต่างจาก bitcoin-cli หากอาร์กิวเมนต์อินพุตเป็น ommitted หรือเป็น 0 การประมาณการสำหรับเวลายืนยันทั้งหมดจะถูกส่งคืน:
$ feesim estimatefee
1: 0.00030138
2: 0.00026738
3: 0.00020492
4: 0.00015988
5: 0.00012805
6: 0.00011478
7: 0.00010616
8: 0.00010001
9: 0.00007519
10: 0.00005020
11: 0.00005000
12: 0.00005000 JSON-RPC API พื้นฐานเข้ากันได้กับ Bitcoin Core's ดังนั้นค่าธรรมเนียมสามารถใช้แทนการแทนที่ Drop-in สำหรับ estimatefee API:
$ bitcoin-cli -rpcport=8350 estimatefee 1
0.00030138ปัจจุบันค่าธรรมเนียมสมมติว่าคนงานเหมืองมี minrelaytxfee เหมือนโหนดของคุณดังนั้นอย่าตั้งค่าต่ำเกินไปไม่เช่นนั้นรอการประมาณเวลาสำหรับค่าธรรมเนียมต่ำจะไม่ถูกต้อง การอยู่กับค่าเริ่มต้นควรจะโอเค ดูส่งมอบ D895E64 สำหรับรายละเอียด
คุณอาจต้องการกำหนด maxmempool ของ Bitcoin Core ให้ต่ำกว่าค่าเริ่มต้นเนื่องจากจะทำให้การจำลองเร็วขึ้นและต้องใช้หน่วยความจำน้อยลง maxmempool=100 ไม่เป็นไรถ้าคุณติดกับการตั้งค่าค่าธรรมเนียมเริ่มต้น (โดยเฉพาะ MaxBlockConfirms) ข้อเสียคือการมีข้อมูล mempool ที่ครอบคลุมน้อยกว่า
การจำลองเป็น CPU แบบเข้มข้นในขณะที่การรวบรวมข้อมูลไม่ได้เป็นดังนั้นคุณอาจไม่ต้องการเรียกใช้ซิมตลอดเวลาในขณะที่ยังคงรวบรวมข้อมูล ในการทำเช่นนี้ให้ใช้ feesim pause เพื่อหยุดการจำลองและ feesim unpause มาทำงานต่อ
โดยค่าเริ่มต้นการประมาณค่าธรรมเนียมจะได้รับการอัปเดตทุกนาที อย่างไรก็ตามเป็นไปได้ว่าการจำลองการจำลองครั้งเดียวใช้เวลานานกว่าหนึ่งนาทีเนื่องจากทรัพยากร CPU ไม่เพียงพอหรือการรับส่งข้อมูลการทำธุรกรรมที่สูงเป็นพิเศษ โดยทั่วไปสิ่งนี้จะไม่ทำให้เกิดปัญหาที่สำคัญใด ๆ เป็นสาเหตุให้การประมาณค่าธรรมเนียมได้รับการปรับปรุงน้อยลงอย่างสม่ำเสมอ เป็นไปได้อย่างไรก็ตามเพื่อลดเวลาการจำลองการทำงานโดยการลด maxblocksconfirms หรือ numiters ในการกำหนดค่า
คุณสามารถตรวจสอบเวลาทำงานจำลองด้วย feesim metrics sim.X เป็นสถิติเวลารันในนาโนวินาทีสำหรับการจำลอง X ครั้งสุดท้าย
โปรดดู config.yml ในที่เก็บนี้สำหรับไฟล์กำหนดค่าตัวอย่าง
ดังที่ได้กล่าวไว้ก่อนหน้านี้ค่าธรรมเนียมจะต้องมีข้อมูลจาก 1008 ของบล็อกปี 2016 ที่ผ่านมา (จะต้องเป็นออนไลน์เมื่อค้นพบบล็อกเพื่อให้ข้อมูลถูกบันทึก) นี่คือประมาณ 1 สัปดาห์ หากคุณไม่ต้องการรอนานขนาดนั้นคุณสามารถติดต่อฉันเพื่อขอสำเนาข้อมูลบล็อก