FEESIM هو برنامج تقدير رسوم البيتكوين. على عكس تقدير الرسوم في Bitcoin Core ، يستخدم Feresim معدل وصول Mempool الحالي ومعاملات المعاملات ، مما يسمح له بالاستجابة لارتفاع حركة المرور. يمكن رؤية تقديرات الرسوم هنا.
تقدير الرسوم في FEESIM يعتمد على النموذج ؛ يتم الحصول على تقديرات من محاكاة مونت كارلو لنموذج قائمة الانتظار لشبكة Bitcoin. في جوهرها ، نجد الحل للسؤال: "إذا افترضنا أن عمال المناجم يعطيون الأولوية للمعاملات حسب معدل الرسوم ، وفقًا لحجم كتلة الحد الأقصى ومعدل الرسوم ، وأن المعاملات تصل إلى نفس المعدل الذي تمثله الساعة الماضية ، ثم بالنظر إلى حجم ميمبول الحالي ، ما هو معدل الرسوم المطلوب لتأكيد المعاملة ضمن كتل X (مع احتمال النجاح P)؟ "
هذا يسمح لخوارزمية التقدير باستيعاب الاختلافات في ظروف الشبكة. على سبيل المثال ، إذا لم يتم العثور على كتلة في ساعة واحدة وكان هناك تراكم كبير في Mempool ، فيجب أن تدرك الخوارزمية ذلك ورفع تقديرات الرسوم. بالتناوب ، إذا كان هناك هدوء يوميًا عند معدل وصول المعاملات ، فيجب أن تعكس تقديرات الرسوم ذلك أيضًا ، مما يتيح للمستخدم دفع رسوم أقل خلال فترات الهدوء.
يجمع FEESIM بيانات شبكة Bitcoin من خلال API Bitcoin Core JSON-RPC ، ويحسب تقديرات:
(txFeerate, txSize)*انظر الالتزام D895E64
جنبا إلى جنب مع حالة mempool الحالية ، يتم استخدامها لأداء المحاكاة والحصول على تقديرات الرسوم. يمكن رؤية تقديرات سياسة التعدين هنا ، ويمكن رؤية معدلات وصول المعاملات كدالة لمعدل الرسوم هنا.
أثناء التشغيل العادي ، سوف تتنبأ FEESIM بوقت تأكيد كل معاملة ويحتفظ بنسبة نسبة المعاملات التي تفي بالتنبؤ. يجب أن تكون هذه النسبة قريبة من احتمال النجاح (الافتراضي 90 ٪) ، إذا كان النموذج دقيقًا. يمكن رؤية هذه الدرجات هنا.
التثبيت من المصدر باستخدام ما لا يقل عن 1.6:
$ go get github.com/bitcoinfees/feesim يستخدم FEESIM تجربة PONDOR GO 1.5 ، لذلك يمكنك التثبيت باستخدام GO 1.5 عن طريق تعيين متغير البيئة GO15VENDOREXPERIMENT=1 .
يتطلب FEESIM وصول 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يوضح هذا الحد الأدنى لمعدل الرسوم لتأكيد المعاملة في كتلة واحدة ، مع احتمال 90 ٪ (قابل للتكوين).
على عكس bitcoin-cli ، إذا كانت وسيطة الإدخال غير معروضة أو 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 API JSON-RPC API متوافق مع Bitcoin Core's ، لذلك يمكن استخدام FEESIM كبديل للاستبدال في API estimatefee :
$ bitcoin-cli -rpcport=8350 estimatefee 1
0.00030138يفترض Feresim حاليًا أن عمال المناجم لديهم نفس minrelaytxfee مثل العقدة الخاصة بك ، لذلك لا تضعها منخفضة للغاية ، أو أن تقديرات وقت الانتظار الأخرى للحصول على رسوم منخفضة ستكون غير دقيقة. يجب أن يكون البقاء مع الإعدادات الافتراضية على ما يرام. انظر الالتزام D895E64 للحصول على التفاصيل.
قد ترغب في تكوين maxmempool من Bitcoin Core لتكون أقل من الافتراضي ، لأن هذا سيجعل المحاكاة أسرع ويتطلب ذاكرة أقل. maxmempool=100 جيد إذا التزمت بإعدادات الرسوم الافتراضية (على وجه التحديد MaxBlockConfirms). الجانب السلبي لديه بيانات mempool أقل شمولية.
المحاكاة مكثفة في وحدة المعالجة المركزية ، في حين أن جمع البيانات ليس كذلك ، لذلك قد لا ترغب في تشغيل SIM طوال الوقت ، مع استمرار جمع البيانات. للقيام بذلك ، استخدم feesim pause لإيقاف المحاكاة ، و feesim unpause لاستئناف.
بشكل افتراضي ، يتم تحديث تقديرات الرسوم كل دقيقة. ومع ذلك ، من الممكن أن يستغرق تشغيل محاكاة واحدة أطول من دقيقة ، بسبب عدم كفاية موارد وحدة المعالجة المركزية أو حركة مرور معاملات عالية بشكل استثنائي. بشكل عام ، لن يسبب هذا أي مشاكل كبيرة ؛ يؤدي فقط إلى تحديث تقديرات الرسوم بانتظام. من الممكن ، مع ذلك ، تقليل وقت تشغيل المحاكاة عن طريق خفض maxblocksconfirms أو numiters في التكوين.
يمكنك مراقبة وقت تشغيل المحاكاة باستخدام feesim metrics ؛ sim.X هي إحصائيات وقت التشغيل ، في النانو ثانية ، لآخر محاكاة X
يرجى الاطلاع على config.yml في هذا المستودع للحصول على مثال على ملف التكوين.
كما ذكرنا سابقًا ، يتطلب FEESIM ، افتراضيًا ، بيانات من 1008 من كتل 2016 الماضية (يجب أن تكون عبر الإنترنت عند اكتشاف الكتل من أجل تسجيل البيانات). هذا حوالي أسبوع واحد ؛ إذا كنت لا ترغب في الانتظار لفترة طويلة ، فيمكنك الاتصال بي للحصول على نسخة من بيانات الكتلة.