پہلے سے معلوم کریش کے علاوہ CVE-2018-17144 ورژن 0.15.X تا 0.16.2 میں مائنر کو ایک ٹرانزیکشن کے اندر آؤٹ پٹ دو بار خرچ کر کے بٹ کوائن کی سپلائی بڑھانے کا موقع بھی دیتی تھی۔ ڈویلپرز نے یہ پہلو چھپائے رکھا تاکہ سسٹمز کو 0.16.3 یا 0.17.0rc4 پر جانے کا وقت ملے۔ خیال ہے کہ آدھے سے زیادہ ہیش ریٹ پیچ ہو چکا ہے، استحصال کی کوئی کوشش معلوم نہیں، اور متاثرہ صارفین سے اپ گریڈ کرنے کو کہا گیا ہے۔
CVE-2018-17144 کی وجہ سے Bitcoin Core 0.14.0 تا 0.16.2 ایسے بلاک پر کریش ہو جاتے ہیں جس کی کوئی ٹرانزیکشن ایک ان پٹ کو دو بار خرچ کرے، اور صارفین سے فوراً 0.16.3 پر جانے کو کہا گیا ہے۔ ایسا بلاک صرف وہی مائنر بنا سکتا ہے جو کم از کم 12.5 BTC کی جائز آمدنی چھوڑنے کو تیار ہو۔
verifytxoutproof RPC اب Bitcoin Core 0.16.2 میں SPV پروفس پر اس مہنگے حملے کی زد میں نہیں آتا جس کا انکشاف جون کے شروع میں ہوا تھا، اگرچہ اصل SPV کلائنٹس بدستور خطرے میں ہیں۔ الگ درستی کے بعد abandontransaction ٹرانزیکشن کے براہِ راست children پر رکنے کے بجائے اس کے تمام descendants ہٹا دیتا ہے۔
legacy دستخطی اسکرپٹس میں OP_CODESEPARATOR والی ٹرانزیکشنز اب Bitcoin Core 0.16.1 ریلے نہیں کرتا، یہ پالیسی تبدیلی سست ویلیڈیشن والے بلاکس کی آئندہ اصلاحات آسان بناتی ہے۔ مائنرز سے -blockmaxsize آپشن چھن گیا اور اس کی جگہ -blockmaxweight ہے؛ ساتھ ہی وہ بگ بھی ٹھیک ہوا جو لگاتار دو بلاک بنانے پر ان کی آمدنی کم کر سکتا تھا۔
Segwit اب Bitcoin Core 0.16.0 میں والٹ کا ڈیفالٹ ہے: نئے ایڈریس p2sh-segwit ہوتے ہیں جب تک -addresstype کچھ اور نہ کہے، اور BIP173 کے نیٹو bc1 ایڈریس بنائے اور ان پر ادائیگی کی جا سکتی ہے۔ نئے والٹ صرف HD ہیں اور پرانے ورژن انہیں قبول نہیں کرتے، جبکہ GUI کی ارسال اسکرین پر BIP125 RBF ڈیفالٹ طور پر فعال ہے۔
مستقبل کے نیٹ ورک فورکس کے خلاف احتیاط کے طور پر Bitcoin Core 0.15.1 ابتدائی سنک میں minimum-chain-work سے کم چین پیش کرنے والے پیئرز کو چھوڑ دیتا ہے، اور ساتھ ہی معلوم غلط ہیڈرز دینے والے outbound پیئرز کو بھی۔ ٹپ 30 منٹ اٹکی رہے تو ایک اضافی outbound کنکشن بنتا ہے۔ مائنرز اب blockmaxsize براہِ راست استعمال نہیں کر سکتے: یہ متروک ہے اور صرف ویٹ کی ایک حد کی طرف اشارہ کرتا ہے۔
GUI میں اسٹارٹ اپ کریش کی وجہ سے Bitcoin Core 0.15.0.1 لانا پڑا: 0.15.0 پر جانے والے کچھ کلائنٹس ایسی کسٹم فیس سیٹنگ پر گر جاتے تھے جو انٹرفیس میں اب موجود نہیں۔ مختصر سا پیچ #11332 اس غلط قدر کو سنبھال لیتا ہے۔
فیس کے تخمینے Bitcoin Core 0.15.0 میں 25 کے بجائے 1,008 بلاک آگے تک جاتے ہیں، اور GUI صارفین Replace-By-Fee سے غیر مصدقہ ٹرانزیکشن کی فیس بڑھا سکتے ہیں۔ فی آؤٹ پٹ chainstate ڈیٹابیس سے ابتدائی بلاک ڈاؤن لوڈ 30-40% تیز ہوا ہے۔ پہلی بار چلانے پر تبدیلی خود بخود ہوتی ہے اور تقریباً 5 سے 30 منٹ لیتی ہے۔
Bitcoin Core کے باقاعدہ معاونین کا Segwit2x کے نفاذ btc1 سے کوئی تعلق نہیں، اور پروجیکٹ اسے ضروری اپ ڈیٹ قرار دینے کے دعوے مسترد کرتا ہے؛ اس کے نزدیک یہ نیٹ ورک رولز سے متنازع انحراف ہے۔ چند دن میں آنے والا سافٹ فورک Segwit اس ہارڈ فورک سے الگ ہے اور زیادہ تر صارفین سے کچھ نہیں مانگتا۔ بیان خبردار کرتا ہے کہ Segwit2x میں مضبوط replay protection کا بھی کوئی منصوبہ نہیں۔
جن صارفین نے UPnP فعال کیا ہے، ان سے کہا گیا ہے کہ Bitcoin Core 0.14.2 فوراً انسٹال کریں: ساتھ آنے والی miniupnpc میں integer signedness کی غلطی، CVE-2017-8798، مقامی نیٹ ورک کے حملہ آوروں کو ڈینائل آف سروس یا ممکنہ طور پر دوسرے نقصان کا موقع دیتی ہے۔ UPnP ڈیفالٹ طور پر بند رہتا ہے، اس لیے جن نوڈز پر یہ کبھی فعال نہیں ہوا وہ متاثر نہیں۔
ایکٹیویشن کے بعد بھی غیر segwit مائنرز getblocktemplate چلا سکیں گے، کیونکہ Bitcoin Core 0.14.1 ٹیمپلیٹ سے segwit ٹرانزیکشنز نکال دیتا ہے۔ -dbcache کا ڈیفالٹ 450MiB ہو گیا اور حد اب فلش کے عروج پر بھی برقرار رہتی ہے۔ createrawtransaction اور disconnectnode میں آرگومنٹس کے نئے نام 0.14.0 کے named arguments استعمال کرنے والوں کا کوڈ توڑ دیتے ہیں۔
Bitcoin Core کے روڈ میپ میں شامل ہائبرڈ full block SPV موڈ میں نئے نوڈ کا والٹ سنک ختم ہونے سے پہلے ہی بھیج اور وصول کر سکے گا: بلاکس والٹ کی سب سے پرانی کلید کے حساب سے پہلے آتے ہیں اور مکمل توثیق پس منظر میں چلتی رہتی ہے۔ Bloom فلٹر کی پرائیویسی لیکس ختم ہو جاتی ہیں مگر بینڈوڈتھ زیادہ لگتی ہے، اور ادائیگیوں پر 6 یا اس سے زیادہ کنفرمیشنز کا انتظار کرنا چاہیے۔
ECDSA کی جگہ Schnorr دستخط آئیں تو 50-of-50 ملٹی سگ سکڑ کر ایک کلید والے خرچ کے برابر رہ جائے گا اور اس کی پالیسی بھی دیکھنے والوں سے چھپی رہے گی۔ Bitcoin Core کا روڈ میپ سب سے بڑی رکاوٹ cancellation کو بتاتا ہے، جس میں بدنیت دستخط کنندہ دوسرے صارف کی کلید منہا کر دیتا ہے۔ delinearization اس حملے کا جواب ہے، اگرچہ اس کا سکیورٹی پروف ابھی ہم مرتبہ جائزے میں ہے۔
ریفرنس سافٹ ویئر کی رفتار بڑھانے والی تبدیلیوں کے جائزے کے پہلے حصے میں Bitcoin-Qt 0.7.0 کی signature caching، 0.8.0 کا LevelDB کے ساتھ Ultraprune اور Bitcoin Core 0.10 کی headers-first سنک شامل ہیں۔ ڈویلپرز کے بینچ مارکس میں صرف parallel script verification سے 35% سے 100% تک فائدہ ہوا۔
Amazon EC2 پر ڈیفالٹ سیٹنگز کے ٹیسٹ میں نئے نوڈز نے ابتدائی بلاک ڈاؤن لوڈ Bitcoin Core 0.14.0 پر 0.13.2 کے مقابلے میں 5.7 گنا تیز مکمل کیا: 6 گھنٹے 24 منٹ، بمقابلہ 1 دن 12 گھنٹے 40 منٹ۔ اس کی وجہ assumed valid بلاکس اور میم پول اور UTXO کیش کے درمیان مشترکہ میموری ہے۔ والٹ میں فیس بڑھانے کا اختیاری فیچر بھی آیا ہے، جو ڈیفالٹ طور پر بند ہے۔
غیر مصدقہ چینز کی حد سے ٹکرانے والی والٹ ادائیگیاں Bitcoin Core 0.13.2 میں اب RPC ایرر نہیں لوٹاتیں۔ جواب میں کامیابی ملتی ہے، اور میم پول میں اندراج کی کوشش ری اسٹارٹ کے بغیر ری براڈکاسٹ پر دہرائی جاتی ہے۔ 1 بلاک ہدف کے فیس تخمینے بند کر دیے گئے ہیں، اور غلط compact blocks کی ہینڈلنگ ٹھیک ہوئی۔
Bitcoin Core کے حساب سے BIP141 کی سب سے زیادہ بائٹس لاگت segwit کو P2SH میں لپیٹنے پر آتی ہے: 180 بائٹ ٹرانزیکشن پر P2WSH/P2SH میں 19% اور P2WPKH/P2SH میں 11% اضافہ۔ ویلیڈیشن میں فی ٹرانزیکشن تقریباً پانچ مزید SHA256 ہیش لگتے ہیں۔ خطرات کے طور پر بگز، بڑے بلاکس اور کم فیس کا جائزہ لیا گیا ہے، اور مصنفین ایکٹیویشن پر کوئی موقف نہیں لیتے۔
segwit سافٹ فورک کا سگنل دینے کا کوڈ مائنرز کو Bitcoin Core 0.13.1 میں مل گیا، اور سگنلنگ 15 نومبر 2016 سے اگلے retarget پیریڈ کے آغاز پر کھلے گی۔ لاک ان کے لیے 2,016 بلاکس کے پیریڈ میں 95% بلاک درکار ہیں، اور ایکٹیویشن ایک پیریڈ بعد ہوگی۔ والٹ مطابقت رکھتے ہیں، اس لیے شاید مائنرز کے سوا کسی کو کچھ نہ کرنا پڑے۔
Segwit کو دو گروہوں کی شمولیت چاہیے: مائنرز جو retarget پیریڈ کے 95% بلاکس میں bit 1 کا سگنل دیں، اور Bitcoin Core 0.13.1 یا مطابقت رکھنے والا نفاذ چلانے والے کافی فل نوڈز۔ سگنلنگ 15 نومبر 2016 کو یا اس کے بعد پڑنے والے پہلے retarget پر کھلتی ہے۔ مائنرز، نوڈ آپریٹرز، والٹ صارفین اور ڈویلپرز کے لیے الگ الگ اقدامات دیے گئے ہیں، اپ گریڈ نہ کرنے والوں سمیت۔
Segwit کا کوڈ Bitcoin Core 0.13.0 میں شامل ہے مگر مین نیٹ پر غیر فعال؛ وہاں استعمال کے لیے بعد کا ورژن درکار ہوگا، غالباً 0.13.1۔ compact block ریلے (BIP152) بینڈوڈتھ کے اچانک اضافے کو گھٹاتا ہے، اور نئے والٹ BIP32 HD keys استعمال کرتے ہیں، یعنی ایک بیک اپ آئندہ کی تمام پرائیویٹ کیز کے لیے کافی ہے۔ سرکاری ڈاؤن لوڈز میں Linux ARM بلڈز بھی آ گئی ہیں۔