<h1> مثال لخوارزمية منجم Bitcoin </ h1>
الحصول على عبر متجر التطبيقات قراءة هذه المشاركة في التطبيق لدينا!
بسيطة خوارزمية التعدين bitcoin.
أحاول معرفة كيف تعمل خوارزمية تعدين Bitcoin البسيطة في لغة بسيطة بسيطة c أو c # أو بعض اللغات الزائفة. لقد وجدت مثالا في http://pastebin. com/EXDsRbYH ، ولكن للأسف ليس واضحا ما يفعل. لم أتمكن من تشغيلها.
لنفترض أن لديّ إدخالًا واحدًا فقط: محفظة بيتكوين "abc." التي أريد استخدامها لعملة Bitcoins. أحتاج إلى فهم بسيط لخوارزمية من شأنها أن تفعل التعدين bitcoin على جهاز واحد مع مؤشر واحد على وحدة المعالجة المركزية واحد [وأنا أعلم أنه سوف يستغرق الأعمار لإكمال :)]
فائق الغباء وعديم الفائدة ، لكنني فعلت هذا من أجل الأغراض التجريبية مرة واحدة:
<h1> مثال لخوارزمية منجم Bitcoin </ h1>
الحصول على عبر متجر التطبيقات قراءة هذه المشاركة في التطبيق لدينا!
ما هو عمال المناجم bitcoin حل حقا؟
كما هو الحال مع التعدين ، ما هي عمال المناجم بيتكوين حل حقا؟ قرأت أنهم يحلون التجزئة ، ولكن ماذا يعني ذلك حقا. هل يمكننا رؤية ما يحلونه؟ هل يمكن لأي شخص أن يقدم مثالاً لما تراه آلة التعدين بيتكوين في حلها؟
يحاولون العثور على nonce عشوائي (بيانات عشوائية قليلاً) الانتقال إلى كتلة ويجعل كتلة التجزئة (SHA256) التي (في ثنائي) يبدأ مع مقدار معين من 0. كلما زاد عدد الأصفار كلما زادت التجزئة النادرة. لا يمكن التنبؤ بنتيجة هاش جيدة ، ولذلك عليك أن تحاول في كثير من الأحيان العثور على غير جيد.
تعتمد كمية الأصفار على مدى صعوبة تكوين كتلة. في Bitcoin يتم ضبطه ليحصل على كتلة جديدة كل 10 دقائق (في المتوسط ، بالنظر إلى المعدل الذي تم العثور على الكتل السابقة).
مثيرة للاهتمام: لأن التجزئة لا يمكن التنبؤ بها لا يهم كيف يتغير nonce! في معظم الأحيان ، يكون الرقم مجرد رقم من صفر!
هنا هو رسم مبسط للغاية للمشكلة ، ولكن ينبغي أن يعطي فكرة جيدة عن هذه المشكلة.
هذا هو تجزئة الكتلة الأحدث (اختصارها إلى 30 حرفًا):
هذه هي تجزئة عدد قليل من المعاملات الصالحة في انتظار الإدراج (مختصر).
وهذا هو التباين في صفقة خاصة واحدة قمت بصياغتها للتو ، والتي تعطي 25BTC (المكافأة الحالية) لنفسك:
الآن ، دعونا نستخدم تقريبًا إجماليًا لما قد يبدو عليه قالب جديد (يستخدم الشكل الحقيقي تنسيقًا ثنائيًا). يحتوي على تجزئة الكتلة السابقة و التجزئة من تلك المعاملات الثلاثة:
الآن دعونا نفعل التعدين باليد! هدفنا هو إتمام هذه الكتلة بعلامة (قطعة من القمامة) بحيث يبدأ تجزئة الكتلة الجديدة بـ 13 صفراً (مع مراعاة التجزئة السابقة ، يبدو أن الأصفار الثلاثة عشر هي الصعوبة الحالية!).
التعدين (محاولة الانتهاء من هذه المجموعة):
دعونا نحاول مع nonce = 1 ، وحساب تجزئة كتلة (أنا باستخدام خوارزمية التجزئة md5 ، ولكن يستخدم Bitcoin sha256 مزدوج):
لا حظ ، لا يبدأ التجزئة بـ 0 ... دعنا نحاول مع nonce = 2.
إذا تابعنا حتى nonce = 16 ، فإننا نحصل على أول صفر لنا.
ل nonce = 208 ، نحصل على اثنين من الأصفار الرائدة!
تابع مثل هذا ... إذا عثرت أخيرًا على تجزئة تحتوي على 13 من الأصفار الرائدة ... فأنت الفائز! سوف يبني عمال المناجم الآخرين الآن على كتلة الخاص بك ، كنت قد حصلت للتو على 25BTC.
ولكن عليك أن تكون سريعًا!
إذا تمكن شخص ما من بناء كتلة قبل أن تقوم بذلك ، فسيتعين عليك البدء من البداية من خلال تجزئة الكتلة الجديدة (وهو الفائز).
10 دقائق؟ 2) كيف تأتي هذه الصفقة لي على أي حال؟ 3) ماذا أفعل إذا وجدت حلاً لهذه المجموعة ، ومن ثم أتت صفقة جديدة من عقدة أخرى قبلتها للحظر الذي أغلقته للتو؟ وندش]؛ keremispirli Apr 28 '14 at 17:24.
فيما يلي وصف للمقامرة العالمية والإحصائية التي يتم لعبها كل 10 دقائق أو أكثر. يتم التحكم في الفاصل الزمني للعبة بالصعوبة التي تقول كم عدد "التجزئة" مطلوبة لكل فترة.
وبعبارة أخرى ، تحدد الصعوبة والهدف "احتمالات المنزل" ضد فرصتك في الحصول على تجزئة SHA فائزة. و nonce هي منطقة "الصفر".
كل التجزئة تستهلك الكهرباء ، وتطلق الحرارة ، الأمر الذي يتطلب تبريد إضافي.
هذا ما يتم مع كل تجزئة:
على مستوى عالٍ ، يأخذ برنامج التعدين قائمة بالمعاملات النشطة ، ثم يجمعها معاً في شيء يسمى "كتلة".
أو أكثر دقة مذكورة: يقوم برنامج التعدين بتغطية جميع المعاملات في عرض ملخص يسمى "جذر مركل" ، ويجزله ، وهو يمثل المعاملات.
ثم يقوم برنامج التعدين بتحويل هذا إلى تنسيق ثنائي يسمى Block Header ، والذي يشير أيضًا إلى الكتل السابقة (تسمى أيضًا سلسلة).
تقوم أجهزة التعدين بتغيير جزء صغير من هذه الكتلة يسمى "nonce".
يتم تجزئة رأس المجموعة ومقارنتها مع الهدف كما لو كان مجرد عدد كبير مثل 10،000،000> 7،000،000 (الأرقام الحقيقية أكبر بكثير ، وستة عشرية). يتم ضغط الهدف وتخزينه في كل كتلة في حقل يطلق عليه وحدات البت.
يبدو الهدف الموسع كما يلي:
والهدف هو التأكد من أن تجزئة SHA256 للكتلة أقل من هذه القيمة. في المثال أدناه "83ee" أصغر من "83ef"
لتبسيط هذا المفهوم ، يمكنك تقريب الهدف عن طريق حساب الأصفار البادئة (كما توضح الإجابة الأخرى هنا). هنا مثال:
هذا التجزؤ السابق كان من اليوم ولديه 14 صفراً رائداً. دعنا نقارن ذلك بما كان مطلوبًا قبل 3 سنوات مع المجموعة 100 التي تحتوي على 8 أصفار رائدة.
لذا في نهاية اليوم ، كل عامل منجم هو:
خذ رأس كتلة كمدخل قم بتغيير اختبار Nonce إذا كان تجزئة رأس Block أقل من الهدف. إذا كان كذلك ، فستفوز. انتقل إلى الخطوة 2 (أو انتقل إلى الخطوة 1 إذا فاز شخص آخر بالكتلة)
تريد أن ترى ما يفعله بيتكوين-كيو تي عندما يجد كتلة. لقد قمت بنشرها هنا .. سوف تساعدك المعلومات الموجودة في هذه المشاركة في فهم ما حدث.
يوفر التعدين وسيلة للتوصل إلى توافق في الآراء حول ما ينبغي أن يبدو عليه دفتر الحسابات ، ويعرف أنه لا يوجد أحد يخدع.
هذا هو التعريف غير التقني للتعدين.
"السلطة" للإنفاق المزدوج هو blockchain. يتكون blockchain من تاريخ جميع الكتل في blockchain بالإضافة إلى كتلة المعاملات التالية. يبلغ دعم المكافأة حاليًا 25 BTC للحزب الذي يقدم الشريحة التالية. ولكن مهلا . كنت ترغب في أن 25 BTC (تبلغ قيمتها حاليا حوالي 825 $) كما أود أن أي شخص آخر. إذاً كيف يمكنك أن تجعله حتى لا أستطيع الغش وادعي الكتلة بنفسي؟
حسنًا ، أنت تضع نظامًا يجب أن أنت عليه. هذا ما يفعله دليل العمل - فهو يجعل من السهل إثبات أنني قمت بهذا العمل عندما أدعي المكافأة. لذلك بالنسبة لي فرصة 2 ٪ من حل كتلة أحتاج إلى وضع في 2 ٪ من أعمال التعدين. لا توجد طريقة بالنسبة لي لوضع أقل من 2 ٪ من جميع الأعمال وما زالت تحل كتل ما لا يقل عن 2 ٪ من الوقت (في المتوسط).
ونتيجة لذلك ، عندما يتم تقديم مجموعة من المعاملات ، يتحقق جميع الأقران من عدم وجود إنفاق مضاعف ، وبأن المبلغ المناسب للدعم قد تم المطالبة به ، وبأن مقدم البرنامج قد أنفق بالفعل العمل اللازم لذلك الحل. مع هذه القواعد الثلاثة ، فلا داعي لأن تكون هناك سلطة مركزية تدير العملية أو تكون قادرة على التحكم في النتيجة.
مدونة كين شيريف.
زيروكس ألتو الترميم ، والهندسة العكسية جيم ، وأجهزة الشحن ، وأيا كان.
التعدين بيتكوين بالطريقة الصعبة: الخوارزميات والبروتوكولات والبايتات.
الغرض من التعدين.
تتمثل المشكلة الرئيسية في سجل المعاملات الموزعة في كيفية تجنب التناقضات التي قد تسمح لشخص ما بإنفاق bitcoins نفسه مرتين. إن الحل في Bitcoin هو إزالة المعاملات المعلقة إلى كتلة من المعاملات كل 10 دقائق تقريباً ، مما يجعلها رسمية. لا يُسمح بالمعاملات المتضاربة أو غير الصالحة في أي كتلة ، لذلك يتم تجنب مشكلة الإنفاق المزدوج.
على الرغم من أن معاملات التعدين إلى كتل تتجنب الإنفاق المزدوج ، إلا أنها تثير مشكلات جديدة: ما الذي يمنع الناس من استخدام كتل التعدين بشكل عشوائي؟ كيف يمكنك أن تقرر من يحصل على الألغام كتلة؟ كيف توافق الشبكة على الكتل الصحيحة؟ إن حل هذه المشاكل هو الابتكار الرئيسي لبيتكوين: فقد أصبح التعدين أمراً صعباً للغاية ، وهو أسلوب يدعى إثبات العمل. يتطلب الأمر قدراً هائلاً من الجهد الحسابي بجهد لإتلاف كتلة ، ولكن من السهل على الأقران على الشبكة التحقق من أنه تم استخراج كتلة بنجاح. [1]
تشير كل كتلة ملغومة إلى الكتلة السابقة ، لتشكل سلسلة غير منقطعة إلى أول كتلة بيتكوين. يضمن هذا blockchain أن الجميع يتفق على سجل المعاملات. كما يضمن أنه لا يمكن لأحد أن يعبث بالكتل في السلسلة لأن إعادة التعدين سوف تكون جميع الكتل التالية غير مجدية من الناحية الحسابية. [2] وطالما لم يكن لدى أي شخص أكثر من نصف الموارد الحاسوبية ، فإن التعدين يظل منافسًا ، ولا يمكن لأحد التحكم في blockchain.
كأثر جانبي ، يضيف التعدين bitcoins جديدة إلى النظام. في كل كتلة من عمال المناجم ، يحصل عمال المناجم حاليا على 25 بيتكوين جديدة (تبلغ قيمتها حاليا حوالي 15000 دولار) ، مما يشجع عمال المناجم على القيام بالعمل الشاق لمجمعات التعدين. مع إمكانية تلقي 15000 دولار كل 10 دقائق ، هناك الكثير من المال في التعدين.
بمزيد من التفصيل ، لإزالة كتلة ، تقوم أولاً بجمع المعاملات الجديدة في كتلة. ثم يمكنك تجزئة الكتلة لتكوين قيمة تجزئة كتلة 256 بت. إذا كانت التجزئة تبدأ بأصفار كافية [3] ، فإن الكتلة قد تم استخراجها بنجاح وإرسالها إلى شبكة Bitcoin وتصبح التجزئة هي المعرف للفئة. في معظم الأوقات ، لا ينجح التجزئة ، لذا قمت بتعديل الكتلة قليلاً وحاول مرة أخرى ، مرارًا وتكرارًا مليارات المرات. كل 10 دقائق تقريبًا سيعمل أحد على إزالة كتلة ، وتبدأ العملية من جديد.
يوضح الرسم البياني أدناه بنية كتلة معينة ، وكيف يتم تجزئتها. الجزء الأصفر هو رأس كتلة ، وتليها المعاملات التي تذهب إلى الكتلة. الصفقة الأولى هي المعاملة الخاصة في العملة المعدنية التي تمنح مكافأة التعدين لشركة التعدين. المعاملات المتبقية هي معاملات بيتكوين قياسية تتحرك بيتكوينس حولها. إذا بدأ تجزئة رأس الصفحة بأصفار كافية [3] ، يتم استخراج الكتلة بنجاح....بالنسبة للكتلة أدناه ، فإن التجزئة ناجحة: 0000000000000000e067a478024addfecdc93628978aa52d91fabd4292982a50 وأصبحت الكتلة كتلة # 286819 في blockchain.
يحتوي رأس الحظر على مجموعة من الحقول التي تصف الكتلة. الحقل الأول في الكتلة هو إصدار البروتوكول. ويتبع ذلك تجزئة الكتلة السابقة في blockchain ، والتي تضمن جميع الكتل تشكيل تسلسل غير منقط في blockchain. (غير مريح ، يتم عكس التجزئة في الرأس.) الحقل التالي هو جذر Merkle ، [4] تجزئة خاصة لجميع المعاملات في الكتلة. وهذا أيضًا جزء أساسي من أمان Bitcoin ، نظرًا لأنه يضمن عدم إمكانية تغيير المعاملات بعد أن تكون جزءًا من كتلة. [5] التالي هو الطابع الزمني (بدقة معتدلة) للكتلة ، متبوعًا بتقديرات قيمة صعوبة التعدين. [3] أخيرًا ، القيمة غير الحرفية هي قيمة عشوائية تتزايد في كل محاولة محاولة لتوفير قيمة تجزئة جديدة. الجزء الصعب من التعدين هو العثور على ندرة تعمل.
تصوير ميركو توبياس شايفر (CC BY 2.0)
برنامج قصير لإزالة الألغام.
يعرض الجدول التالي التجزئة التي تم الحصول عليها لقيم nonce المحددة. النقطة الأساسية هي أن كل ندرة تولد قيمة تجزئة عشوائية. كل ذلك في كثير من الأحيان سوف تولد nonce "محظوظ" تجزئة تبدأ مع بعض الأصفار. للحصول على الكثير من الأصفار ، يجب أن تجرب عددًا كبيرًا من القيم. بالنسبة لهذه الكتلة ، يكون الحقل "الفائز" هو 856192328.
يجب أن أشير إلى أنني خدعت من خلال البدء بكتلة يمكن استخراجها بنجاح. سوف تفشل معظم محاولات إزالة كتلة بشكل كامل - لن تنجح أي من قيم nonce. في هذه الحالة ، تحتاج إلى تعديل الكتلة قليلاً وإعادة المحاولة. يمكن ضبط الطابع الزمني (وهذا هو السبب في أن الطابع الزمني في الكتل الملغمة غالباً ما يكون خاطئاً). يمكن إضافة المعاملات الجديدة إلى الكتلة ، وتغيير تجزئة Merkle. يمكن تعديل معاملة العملة المعدنية - يتضح أن ذلك مهم جدًا لمجمعات التعدين. أي من هذه التغييرات سيؤدي إلى تجزئات مختلفة تمامًا ، لذلك يمكن إعادة تجربة قيم nonce مرة أخرى.
يعمل برنامج My Python على حوالي 42000 عملية تجزئة في الثانية ، وهو أسرع بعدة ملايين مرة من الأجهزة المستخدمة من قبل عمال المناجم الحقيقيين. سيستغرق برنامجي حوالي 11 مليون سنة في المتوسط لإزالة كتلة من نقطة الصفر.
لاحظ أن العثور على تجزئة ناجحة هو مهمة عشوائية تمامًا لا تحقق أي شيء مفيد في حد ذاته. الغرض الوحيد من العثور على تجزئة صغير هو جعل التعدين صعبًا ، وهو أمر أساسي لأمن Bitcoin. يبدو لي أن الجهد المبذول في تعدين Bitcoin قد توقف عن القضبان مؤخرًا.
يتم تمويل التعدين في الغالب بمكافأة مقدارها 25 بيتكوين لكل كتلة ، وبأجور رسوم المعاملات (حوالي 0.1 بيتكوين لكل كتلة). بما أن المكافأة التعدينية تعمل حالياً على حوالي 15،000 دولار لكل كتلة ، فإن ذلك يدفع ثمن الكثير من الأجهزة. في المعاملة ، يحصل عمال المناجم على حوالي 34 دولار في مكافأة التعدين و 0.10 دولار في الرسوم (احصائيات).
تستخدم أحواض التعدين تقنية مثيرة للاهتمام لمعرفة حجم العمل الذي يقوم به عمال المناجم. يرسلون كتلة ليتم استخراجها ، والحصول على التحديثات من عامل التعدين كلما يحصل عامل منجم على حل جزئي. يثبت كل حل جزئي أن عامل المنجم يعمل بجد على المشكلة ويعطي عامل التعدين حصة في المكافأة النهائية عندما ينجح شخص ما في التعدين.
على سبيل المثال ، إذا تطلب تعدين Bitcoin تجزئة تبدأ بـ 15 صفرًا ، يمكن لمجمّع التعدين أن يطلب تجزئة تبدأ من 10 أصفار ، وهو أسهل مليون مرة. اعتمادا على قوة أجهزتهم ، قد يجد عامل منجم مثل هذا الحل كل بضع ثوان أو بضع مرات في الساعة. في نهاية المطاف سيبدأ واحد من هذه الحلول ليس فقط بـ 10 أصفار ولكن 15 أصفار ، بنجاح في التعدين والفوز بمكافأة التجمع. [7] ثم يتم تقسيم المكافأة على أساس عدد كل سهم من شركات التعدين كجزء من الإجمالي ، ويأخذ مشغل المجمع نسبة مئوية صغيرة من النفقات العامة. [8]
في معظم الأوقات ، يقوم شخص ما خارج المجمع باختراق قطعة أرض أولاً. في هذه الحالة ، يرسل مشغل حمام السباحة بيانات جديدة ، ويبدأ عمال المناجم في التعدين. يمكن للناس في بركة الحصول على منفعل إذا ذهب لفترة طويلة دون دفع تعويضات بسبب سوء الحظ في التعدين.
الطبقة: التواصل بين تجمع عمال المناجم.
قضية مهمة لمجمعات التعدين هي كيفية دعم عمال المناجم بسرعة. الحقل nonce في الرأس صغير جدًا بالنسبة إلى عمال المناجم السريعة حيث سيتم تشغيلهم من خلال جميع القيم الممكنة بشكل أسرع من المجموعة التي يمكنها إرسال الكتل. الحل هو السماح لعمال المناجم بتحديث المعاملات النقدية حتى يتمكنوا من وضع قيود إضافية هناك. وهذا يجعل التعدين أكثر تعقيدًا لأنه بعد بناء المعاملة النقدية ، يجب على عامل التعدين إعادة حساب شجرة التجزئة Merkle ثم محاولة تعدين الكتلة.
سوف ألقي نظرة على بروتوكول تجمع التعدين Stratum المستخدم من قبل العديد من المسابح. (بعض البروتوكولات البديلة هي بروتوكولات Getwork و Getblocktemplate.) يستخدم برنامج Python التالي بروتوكول Stratum لتقديم طلب التعدين إلى تجمع التعدين GHash. IO ويعرض النتائج....(هذا البرنامج هو الحد الأدنى من مظاهرة ؛ لا تستخدم هذا الرمز للتعدين الحقيقي.)
المعلومات أدناه هي ما يرسله مجمع التعدين عبر الشبكة استجابة للبرنامج المذكور أعلاه. بما أن بروتوكول Stratum يستخدم JSON-RPC فإن النتائج قابلة للقراءة ASCII بدلاً من الحزم الثنائية المستخدمة من قبل معظم Bitcoin. هذا يوفر جميع البيانات اللازمة لبدء التعدين كجزء من التجمع: السطر الأول هو استجابة من خادم التجمع مع تفاصيل الاشتراك. القيم الأولى ليست مهمة جدا. القيمة 4bc6af58 هي القيمة extranonce1 التي يتم استخدامها عند بناء الكتلة. يحصل كل عميل على قيمة فريدة للتأكد من أن جميع عملاء التعدين يولدون كتلًا فريدة ولا يقومون بتكرار العمل. القيمة التالية (4 بايت) هي طول قيمة extranonce2_size التي يضعها عامل المنجم في coinbase أثناء التعدين.
السطر الثاني هو رسالة التعدين. مع صعوبة 16 ، يمكنني الحصول على حصة كل ساعة أو ساعتين على جهاز الكمبيوتر الخاص بي. في المقابل ، فإن صعوبة التعدين في Bitcoin هي 3،129،573،174.52 [3] - وبالتالي فإن الحصول على حصة في هذا المجمع أسهل بنحو 200 مليون مرة من النجاح في استخراج كتلة بشكل مستقل. لهذا السبب ينضم الناس إلى حمامات السباحة.
السطر الثالث هو التنقيب. إخطار العميل. تحدد هذه الرسالة هذا الحظر لنا. هناك الكثير من البيانات التي يتم إرجاعها تحت "params" ، لذا سأشرحها ميدانيًا.
يتم استخدام job_id لتحديد مهمة التعدين هذه إذا أبلغ عامل التعدين عن نجاحه.
يتم استخدام معظم الحقول في رأس كتلة. و prevhash هو تجزئة الكتلة السابقة. ويبدو أن الخلط بين النهاية الكبيرة والقليل من النهايات لا يربك بما فيه الكفاية ، لذا فإن قيمة التجزئة هذه تحتوي أيضًا على كل كتلة من 4 بايت معكوسة. الإصدار هو نسخة بروتوكول الكتلة. تشير nbits إلى صعوبة [3] من الكتلة. لا يكون وقت ntime الزمني دقيقًا بالضرورة.
يسمح الحقلان coinb1 و coinb2 لمستخدِّم التعدين ببناء معاملات coinbase للكتلة. يتم تشكيل هذه الصفقة عن طريق تجميع coinb1 ، القيمة extranonce1 التي تم الحصول عليها في البداية ، extranonce2 التي أنتجتها شركة التعدين ، و coinb2. والنتيجة هي معاملة في بروتوكول Bitcoin. تسمح قائمة التجزئة merkle_branch عامل التعدين recompute بكفاءة التجزئة Merkle مع المعاملة coinbase الجديدة.
يتم استخدام clean_jobs إذا كان عامل منجم يحتاج إلى إعادة تشغيل وظائف التعدين.
بعد تلقي هذه البيانات ، يمكن أن تبدأ شركة التعدين توليد المعاملات coinbase وكتل التعدين.
خلق كتلة لبركة.
يشبه هيكل صفقة coinbase معاملة عادية ، لكن هناك بعض الاختلافات المهمة. تنقل المعاملة العادية bitcoins من المدخلات (عادةً عناوين المصدر) إلى المخرجات (عادةً ما تكون العناوين المقصودة). تقوم إحدى معاملات coinbase بتوليد bitcoins جديدة من الهواء ، بدلاً من إجراء عملية نقل ، وبالتالي فإن المعاملة مختلفة قليلاً. تجزئة الإخراج السابق والمؤشر لا يهمان بالنسبة لمعاملة العملة المعدنية. البرنامج النصي الأول هو scriptSig الذي يوقع المعاملة لإثبات ملكية bitcoins الواردة. في هذه الصفقة ، لا يهم هذا ، لذلك يسمى الحقل "العملة" ، و هو في الغالب بيانات عشوائية. [9] (العديد من عمال المناجم يخفيون الرسائل هناك.) حقل القيمة في المعاملة coinbase هو مكافأة التعدين 25 bitcoin بالإضافة إلى أي bitcoins المتبقية من المعاملات الأخرى (يتم التعامل مع اليسار على bitcoins كرسوم التعدين). وأخيرًا ، تستخدم كل من المعاملات المعتادة ومعاملات العملة المعدنية النص الثاني (scriptPubKey) لتحديد مستلمي البت كوين. [10] للحصول على تفاصيل حول المعاملات ، راجع مقالتي السابقة.
بمجرد أن يتم إنشاء المعاملة coinbase ، يتم دمج التجزئة لهذه المعاملة coinbase مع البيانات merkle_branch من تجمع لإنشاء Merkle التجزئة [4] لمجموعة كاملة من المعاملات. نظرًا لبنية Merkle hash (الموضحة أدناه) ، فإن هذا يسمح بتجزئة مجموعة المعاملات بالكامل بسهولة.
وأخيرًا ، يتم إنشاء رأس المجموعة من تجزئة Merkle الجديدة والبيانات التي يوفرها التجمع ، ويمكن لخوارزمية التجزئة التكرار فوق قيم nonce في الرأس ، تمامًا مثل برنامج Python سابقًا. وبمجرد تجربة كل قيم nonce ، يزيد عامل التعدين من extranonce2 ، ويولد معاملة جديدة لـ coinbase ويستمر.
إبلاغ مجمع التعدين من النجاح.
التعدين من أجل المتعة والربح.
توضح لقطة الشاشة أعلاه كيف يبدو التعدين أثناء حصولك على أسهم وكتل من الألغام. لقد حالفني الحظ واستغرق مني دقيقة واحدة فقط من أجل النجاح في المشاركة. بعد دقيقة واحدة ، نجح شخص ما في التعدين بنجاح ، لذلك يخبر المجمع الجميع البدء من جديد. تم استخراج كتلة أخرى أقل من دقيقة بعد ذلك - على الرغم من أن الكتل هي 10 دقائق في المتوسط في المتوسط ، يمكن أن تختلف الأوقات على نطاق واسع. استغرق الأمر 12 دقيقة ليتم إنشاء مشاركتي المقبلة. بعد الركض لفترة من الوقت ، كسبت 0.00000043 BTC ، وهو جزء صغير من المائة.
التعدين بيتكوين هو "سباق التسلح". في الأصل يمكن للأشخاص التعدين مع وحدة المعالجة المركزية على جهاز كمبيوتر عادي ، ولكن هذا لم يكن عمليًا لفترة من الوقت....تم تفريغ التعدين التالي إلى GPUs. الآن ، يتم التعدين مع الأجهزة ASIC لأغراض خاصة ، والتي تتزايد بسرعة في السرعة. المناجم للربح تنافسية للغاية ، وسوف تحتاج إلى البحث في مكان آخر للحصول على المعلومات.
إذا كنت ترغب في تجربة التعدين لمجرد التسلية ، فقد تفضل إزالة عملة مثل Dogecoin بدلاً من Bitcoin. أولا ، يستخدم Dogecoin خوارزمية هاش مختلفة والتي لا تعمل بشكل جيد مع الأجهزة ASIC ، لذلك كنت غير محروم مقارنة مع عمال المناجم المهنية. ثانيًا ، نظرًا لأن عدد دوغويناتك أقل بكثير من البيتكوين ، فسوف ينتهي بك الأمر بعدد أكبر بكثير من الدوجيكوين ، والذي يبدو أكثر إفادة. من أجل التعدين Dogecoin ، اعتدت تجمع dogepool. pw بشكل تعسفي إلى حد ما. هذه العملية تقريبًا مثل تعدين Bitcoin ، باستثناء استخدام خوارزمية scrypt بدلاً من sha256d. هناك العديد من cryptocurrencies بديلة للاختيار من بينها.
ملاحظات ومراجع.
مع هذه التغييرات ، مشكلة التعدين في NP. السؤال التالي هو إذا كان NP - كاملة. أي ، هل يمكن تحويل مشكلة NP-complete تعسفية إلى مشكلة تعدين؟ أعتقد أن هذا غير معروف حاليًا.
[٢] قد تتسائل عما يحدث إذا نجح اثنان من عمال المناجم في تعدين كتلة في نفس الوقت تقريبًا. هل تم استبدال مشكلة المعاملات المتعارضة بمشكلة الكتل المتضاربة؟) القاعدة هي أنه يتم فقط استخدام أطول سلسلة من الكتل الصالحة ، ويتم تجاهل الفرع الآخر. وهكذا ، عندما يمتد عامل مناجم السلسلة بواحدة من الكتلتين المتوازيتين ، تصبح الكتلة الأخرى كتلة يتيمة ويتم تجاهلها.
الكتل اليتيمة شائعة إلى حد ما ، تقريبًا واحدة في اليوم. ولهذا السبب ، فإن التوصية (إلى حد ما تعسفي) هي انتظار ستة تأكيدات (حوالي ساعة واحدة) قبل النظر في معاملة مؤكدة بصرامة.
[3] لقد وصفت تجزئة ناجحة بأنها تبدأ بأصفار كافية ، ولكن هناك تعريف رسمي للصعوبة. يجب أن تحتوي الفدرة الصحيحة على تجزئة تحت قيمة مستهدفة. (نظرًا لأن الهدف يبدأ بحزمة من الأصفار ، فإن ذلك سيؤدي إلى التجزئة الصحيحة.)
هناك طريقتان مختلفتان يصعب فهمهما لتمثيل الهدف. الأول ، البتات هو تمثيل mantissa / exp للهدف في 32 بت. الثانية ، الصعوبة هي النسبة بين الهدف الأساسي والهدف الحالي. صعوبة N هي N أوقات صعبة مثل هذا الهدف الأساسي. الهدف الأساسي هو 0x00000000FFFF00000000000000000000000000000000000000000000000000000000 ، والتي تقابل ما يقرب من 1 في 2 32 أو 1 في 4.2 مليار التجزئة بنجاح.
يتغير مستوى الصعوبة تقريبًا كل أسبوعين للحفاظ على معدل تجزئة الكتلة حوالي 1 كل 10 دقائق. قيمة صعوبة https://blockchain. info/stats هي 3،129،573،174.52 ، تقابل الهدف من 00000000000000015f53000000000000000000000000000000000000000000000000. إن مضاعفة أداء جهاز الكمبيوتر الخاص بي بسبب الصعوبة الحالية يظهر أن جهاز الكمبيوتر الخاص بي سيستغرق حوالي 35،000 سنة من أجل إزالة كتلة.
تعتبر صعوبة التجمع مهمة عند استخدام تجمع التعدين. يمكن لجهاز الكمبيوتر الخاص بي عمل حوالي 12 مليون عملية تجزئة / تشغيل cpuminer ، لذلك في صعوبة 1 يمكن أن يجد جهاز الكمبيوتر الخاص بي كتلة كل 6 دقائق. يستخدم BTC Guild pool 2 صعوبة ، لذلك أحصل على مشاركة حول كل 12 دقيقة. إن GHash. IO لا يقل عن 16 صعوبة ، لذلك لا أحصل سوى على مشاركة كل ساعة أو ساعتين في المتوسط. (ستكون أرباحي الإجمالية متشابهة في كلتا الحالتين ، نظرًا لأن الأسهم لكل مقياس كتلة تتعارض عكسًا مع الصعوبة).
[4] بدلاً من تجزئة جميع المعاملات إلى الكتلة مباشرة ، يتم تجزئة المعاملات أولاً للحصول على جذر Merkle. جذر Merkle هو جذر شجرة Merkle الثنائية. الفكرة هي أن تبدأ مع جميع تجزئات المعاملة. يتم تجزئة أزواج من التجزئات معاً للحصول على تجزئات جديدة. تتكرر العملية على القائمة الجديدة من التجزئة وتستمر متكررة حتى يتم الحصول على التجزئة واحد. تجزئة الجذر النهائية هذه هي القيمة المستخدمة عند حساب الكتلة. (انظر ويكيبيديا لمزيد من التفاصيل.)
في شجرة Merkle ، يتم تجزئة كل معاملة. ثم يتم تجزئتها أزواج من التجزئة. ثم يتم تجزئة أزواج من التجزئات الجديدة معًا ، وهكذا ، حتى يبقى جزء واحد. يسمح هذا بتجزئة عملية واحدة ليتم التحقق منها بكفاءة دون إعادة حساب كافة التجزئة. مكان واحد يأتي هذا في صالح هو توليد صفقة جديدة من العملة المعدنية لحوض التعدين.
الفكرة (الحاصلة على براءة اختراع) لشجرة Merkle هي إذا كنت تحتاج إلى تعديل أو التحقق من معاملة واحدة ، فأنت لست بحاجة إلى إعادة حساب كل شيء ، ولكن يمكنك فقط إعادة حساب الأزواج المتأثرة. أنا شخصياً أعتقد أن الشجرة Merkle هي تحسين لا معنى له ل Bitcoin ولأرقام المعاملات المعقولة سيكون من الأسرع القيام بتجزئة كبيرة واحدة ، بدلاً من التجزئات المتعددة في شجرة Merkle.
في ما يلي بعض التعليمات البرمجية التوضيحية لحساب جذر Merkle للكتلة التي أناقشها. ترميز المعاملات 99 هي مشفرة لراحة. جذر Merkle الناتج هو 871714dcbae6c8193a2bb9b2a69fe1c0440399f38d94b3a0f1b447275a29978a....[5] هناك عدة طرق يمكن للأطراف الثالثة تعديلها دون إبطال التوقيع على المعاملة. هذا هو المعروف باسم تعامل المعاملة. هذه التعديلات تغيير التجزئة من المعاملة. ونظرًا لأن التجزئة جزء من الكتلة ، فإن المعاملة لها تجزئة ثابتة ولا يمكن تعديلها عن طريق قابلية الطرد بمجرد أن يتم استخراجها إلى كتلة. (ما لم يتم عزل الكتلة بأكملها ، بالطبع.)
[6] من الصعب تقدير تكلفة التعدين لأن الأجهزة تتغير بسرعة كبيرة ، ومن غير الواضح ما هو قيد الاستخدام بالفعل ، ولكن سأقوم بحساب تقريبي. وبالنظر إلى أجهزة التعدين من طراز Bitcoin وصفحات مقارنة أجهزة التعدين ، يبدو HashBlaster الأكثر كفاءة المتاحة حاليًا عند 375 MH / s / $ و 1818 MH / s / W. تبلغ شبكة Bitcoin 25 مليار MH / s ، والتي تصل إلى حوالي 70 مليون دولار تكلفة الأجهزة و 15 MW. (هذا هو إجمالي استهلاك الطاقة في كمبوديا.) عند 0.15 دولار / كيلووات ساعة ، سيكون ذلك حوالي 50000 دولار / يوم على الكهرباء (300 دولار للقطعة الواحدة أو 0.70 دولار لكل معاملة). وبما أن التعدين يولد حوالي 140 ألف دولار في اليوم ، فإن إنفاق 50000 دولار في اليوم على الكهرباء يبدو وكأنه الملعب الصحيح. تقديرات أخرى في Hacker News.
[٧] قد تتساءل لماذا لا يخادع عامل منجم. إذا نجحوا في إزالة كتلة ، فلماذا لا يقدمونها بأنفسهم حتى يتمكنوا من المطالبة بمكافأة التعدين الكاملة ، بدلاً من تقسيمها؟ السبب الرئيسي هو أن المعاملة التي تتم عن طريق العملات المعدنية تحتوي على عنوان المجمع ، وليس عنوان عامل المنجم. إذا قام عامل التعدين بتدفع الكتلة متجاوزًا المجمع ، فستستمر المكافأة إلى التجمع. وإذا قام عامل التعدين بتغيير العنوان ، فإن التجزئة لم تعد صالحة.
[8] هناك العديد من أنظمة المكافآت المختلفة التي تستخدمها أحواض التعدين. على سبيل المثال ، يمكن للمسبح دفع المبلغ المحدد المكتسب من كتلة أو مبلغ متوسط. أو يمكن أن يدفع المجمع مبلغًا ثابتًا لكل سهم. يمكن للمسبح وزن الأسهم حسب الوقت لتجنب عمال المناجم التبديل بين حمامات منتصف كتلة. ويمكن لهذه الأنظمة المختلفة أن توازن بين المخاطر بين عمال المناجم ومشغل البلياردو وتعديل تباين المدفوعات. لمزيد من التفاصيل ، راجع موقع Bitcoin wiki هنا أو هنا.
[٩] لقد توصلت إلى الكثير من بنية النص البرمجي للعملة النقدية أعلاه. أولاً يحتوي على ارتفاع الكتلة (0x046063 أو 286819) ، وهو مطلوب للإصدار 2). التالي هو السلسلة '/ P2SH /' التي تشير إلى أن عامل المناجم يدعم دفع إلى Script Hash). ويتبع ذلك طابع زمني. التالي هو 8 بايت من الاثنتين. ويتبع ذلك بيانات تبدو عشوائية ثم النص "Happy NY! Yours GHash. IO".
[10] تم تغيير تنسيق البرنامج النصي لـ coinbase النموذجي بمرور الوقت. في الأصل ، كانت البرامج النصية الإخراج كلها الدفع إلى pubkey ، مع البرنامج النصي: public_key OP_CHECKSIG. يضع هذا البرنامج النصي المفتاح العام نفسه في البرنامج النصي. ومع ذلك ، تستخدم الآن حوالي 95٪ من معاملات coinbase النص البرمجي القياسي للدفع إلى pubkey-hash: OP_DUP OP_HASH160 addr OP_EQUALVERIFY OP_CHECKSIG. يتضمن هذا النص فقط تجزئة المفتاح العام (العنوان) ويتطلب من الفادي توفير المفتاح العام. لمعرفة الفرق ، قارن بين البرامج النصية للإخراج في هذه المعاملة وهذه المعاملة.
وGT. أنا شخصياً أعتقد أن الشجرة Merkle هي تحسين لا معنى له ل Bitcoin ولأرقام المعاملات المعقولة سيكون من الأسرع القيام بتجزئة كبيرة واحدة ، بدلاً من التجزئات المتعددة في شجرة Merkle.
بالمناسبة ، وهنا اكتمال إلى حد ما و & quot؛ pythonistic & quot؛ مكتبة بيثون للبيتكوين: https://github. com/petertodd/python-bitcoinlib إنها & quot؛ صخرة & quot؛ المكتبة التي تعيد تنفيذ جميع وظائف Satchi bitcoin ، وتركز على جعل كتابة التعليمات البرمجية منخفضة المستوى سهلة الكتابة في Python. رمز الشبكة لا يزال في حالة تغير مستمر ، ولكن توجد وحدة RPC للاستخدام مع عقدة bitcoin محلية. مثال بسيط لهذا النوع من الاستخدام هو في بلدي الغبار ب.
أما فيما يتعلق بالعبء الزائد عن استخدام الشجرة المرقمة إلى تجزئة بعض الآيات التي تحتوي على بعض البيانات ، فيمكنها أن تتضاعف كلفة العمل. من السهل أن ترى لماذا إذا كنت تتذكر مجموع مجموعتك من سلسلة من المدارس الثانوية: إذن ، فإن المسار الأول يستهلك الكتل 64 بايت ، مما يؤدي إلى إنتاج n / 2. يأخذ الثاني تلك n / 2 هضم ، وينتج المستوى التالي ، n / 4 هضم. تلخص أنك تحصل على n + n / 2 + n / 4 +. = 2 * ن.
شكرا على التعليقات التفصيلية ، بيتر. الشيء المضحك هو أنني أدركت عندما نظرت إلى حسابات تجمع التعدين أن تجزئة Merkle كانت مفيدة في الواقع. ظننت أنني قد أزيلت الجزء المتعلق بعدم الجدوى ، ولكن لا أعتقد ذلك :-)
شكرا مجهول - لقد أصلحت ذلك.
ليس هناك أى مشكلة! هناك الكثير من الأشياء في Bitcoin التي تبدو للوهلة الأولى غير مفيدة ، وبعد ذلك فقط في وقت لاحق هل تدرك أهمية ذلك.
وGT. إذا كان تجزئة يفي بصعوبة تجمع ، تحصل على حصة. إذا كان تجزئة يجتمع أيضا صعوبة الكثير ، أصعب بكثير بيتكوين ، تم بنجاح كتلة الملغومة. في هذه الحالة ، يرسل المجمع الكتلة إلى شبكة Bitcoin وسيتم دفع كل شخص لديه أسهم وفقًا لذلك.
شكرا لهذه المادة ، خاصة الحاشية رقم 7....في القراءة عن أشياء تجمع التعدين ، كنت أتساءل دائما لماذا لم يكن الناس فقط الغش وعدم تقديم حصة الفوز إلى مجموعتهم إذا حدث للعثور عليه. بفضل مقالتك أخيراً (دوه) أحسبته.
كين ، هذه أشياء رائعة ، أجد نفسي أتطلع إلى مشاركتك التالية ، وأقوم بقراءة الشفرة ولصقها للعب معها. سؤال واحد: رمز python الخاص بك لجذر merkle يتجاهل المعاملة الأخيرة إذا كانت غريبة. صيح؟ كنت تحت الانطباع بأن الشخص الغريب قد تم تجزئته مع نفسه وتم تضمينه كعنصر. شكرًا لك مرة أخرى. جوامع.
أهه. بمجرد نشرها ، رأيت سطر الشفرة الذي يفعله. ما أغباني. لذلك نعم يمكنك تجزئة الصفقة الغريبة في النهاية لنفسها. شكرا مرة أخرى لمشاركة كبيرة ، مع رمز !!
أنا مرتبك قليلاً إذا أبلغ المجمع العملاء بجميع المعاملات التي تريد تضمينها في كتلة (إذا تم العثور على أحد.
أنت تجزئة رأس بأكمله.
يتضمن الرأس جذر merkle.
جذر merkle هو تجزئة لجميع المعاملات بما في ذلك coinbase.
لازلت مشوش. المعاملة ، مع كل scriptPubKey المنسوخة في scriptSig ، هي تجزئة SHA256 مزدوجة. هو أن التجزئة التي تصبح txid؟ هل هذا هو التجزئة المستخدمة للتوقيع على كل إدخال؟
أعيد كتابة نموذج بيثون لبرامج تجزئة أشجار المِرح في PHP إذا كان أي شخص مهتمًا.
المادة عميقة ممتازة.
مقالة مفصلة للغاية لأولئك الذين يريدون معرفة كيفية عمل التعدين. سوف نشير القراء هنا عندما يسألون كيف نتائج التعدين في BTC. جيد جدا.
أطلب إذنك لنسخ المقالة وترجمتها إلى لغة أخرى.
كين ، كيف هي مقالاتك على Bitcoin هي دائما الوحيدة التي تقدم إجابات على الأسئلة التي لدي في رأسي؟ خارق للطبيعة. شكرا لكم.
يحتاج [2] إلى مزيد من الدقة. يعني الطول "الطول" لسلسلة الكتل بأكملها السلسلة التي لها الصعوبة الأكثر تضافرًا ، وليس تلك التي تحوي معظم الكتل »
ملصق ممتاز. ساعدني على فهم التفاصيل. لقد قمت بتدريب مصنف تعلم الآلة للإجابة على السؤال & quot؛ هل الندرة أكبر من k & quot؛ ، مماثلة ولكن ليست هي نفسها لملاحظاتك ونقطة المراجع 1. تم نشرها هنا. شكرا مجددا للصورة الجيدة.
إن العبارة التي تحمل براءة اختراع فكرة Merkle شجرة لا طائل من ورائها ، لأن براءة الاختراع انتهت منذ أكثر من 10 سنوات (صدرت في عام 1982 وبراءات اختراع لمدة 20 سنة).
كين ، هل يمكنك توضيح المزيد حول & quot؛ إنشاء كتلة لمجموع & quot ؛،
coinb1 و extranonce1 على ما يرام ، ولكن من حيث تحصل - & quot؛ 000017e4 & quot؛ والاستمرار & quot؛ 46522cfa. ومثل. من & quot؛ extranonce2 و coinb2 & quot؛ فرق من الكتلة الأولى؟
ليلة سعيدة ، إسمح لي لغتي الإنجليزية السيئة ، اسمي Gilberto ، أنا مكسيكي وأنا طالب ماجستير ، وأحاول أن أتحقق في شكل جديد للقيام بتعدين Bitcoins ، ولكن لدي الكثير من الأسئلة حول How هو الإجراء اليدوي للقيام التعدين من Bitcoins؟ ، كيف يمكنني استخدام الخوارزميات SHA-256 و RIPEMD160 و Base58 في Bitcoins؟ ، لديك مكتبات حول هذه؟ أريد أن أفعل نظام مضمن في بطاقة 7.E64G401 Ephifany 64-core واستخدام paralell الحوسبة وليس لدي فكرة كيف تبدأ ؟، الرجاء مساعدتي.
جيلبرتو ، أول من يميل كيفية تجزئة SHA1 يدويا من هذا الرجل ثم انتقل من هناك.
هل يبدأ عمال المناجم في العمل من نفس المجال غير اليدوي (nonce = 1 على سبيل المثال) وكل عامل من عمال المناجم يزيد من معدله اعتمادا على سرعة الأجهزة والبرنامج الذي يستخدمه في التعدين؟
على خلاف ذلك يمكن لشخص ما إدخال يدويا nonce0 بداية ، وبالطريقة التي يجد بها الحق في عدم الحصول على تجزئة صالحة لكتلة جديدة؟
جزء من الصفقة المجزية لقاعدة العملات ؛ هل يتلقى عمال المناجم نفس المعاملات في الكتلة؟
نحن نفترض أن 2 من عمال المناجم يجدون كتلة صالحة block1 و block2 في نفس الوقت.
هل يحتوي block1 و block2 على نفس عدد المعاملات؟
benwest: Q1: يبدأ عمال المناجم عادةً بنفس قيمة nonce ومن ثم يتم احتسابها بأسرع ما يمكن. لكن أجزاء أخرى من الكتلة ستكون مختلفة ، لذلك فهي تحاول تكوين كتل مختلفة.
س 4: هل يوجد عامل تعدين وحيد ، ليس جزءًا من مجموعة ، لديه أي تحكم في الكتلة التي يعمل عليها؟
على سبيل المثال: تعمل فقط على كتلة تحتوي فقط على المعاملة مجزية في معاملات العملات المعدنية ومعاملات أخرى؟
benwest: Q4: نعم ، يمكن لعمال منجم واحد أن يختار المعاملات التي تدخل إلى الكتلة التي يعمل بها عامل المنجم. عادة ما تختار شركة التعدين مجموعة من المعاملات (للحصول على المزيد من الرسوم) ولكنها لا تحتاج إلى ذلك. Q5: نعم ، انها مثل لوتو. يمكن لشخص ما لديه جهاز كمبيوتر بطيء أن يحالفه الحظ وأن يستخرج منه كتلة (أو حتى شخص ما يقوم بالتعدين على جهاز كمبيوتر قديم) ، وهو أمر مستبعد للغاية لأن الأجهزة السريعة توفر لك الكثير من الفرص ل & quot؛ الفوز & quot؛
مقال رائع ، وبالنظر إلى أنك مازلت تجيب عن الأسئلة بعد 3 سنوات ، فكرت أن أكرر سؤالًا لم يتم الإجابة عليه من قبل أثار ذكرياتي.
المجهول: هل يمكن لأحد المشاركين في المجموعة سرقة التجزئات الناجحة؟ هذا سؤال جيد ، لكن لا....تحتوي معاملة coinbase على scriptPubKey لمالك المسبح ، بحيث يكون مالك المجمع هو الشخص الوحيد الذي يمكنه الوصول إلى المكافأة. إذا قام عامل المناجم بتغيير scriptPubKey ، لم يعد التجزئة صالحة. هناك هجوم نظري حيث يلقي عامل التعدين بعيدا تجزئة ناجحة تماما لذلك لا أحد يجمع. بعد ذلك ، يحصل عامل المنجم على جزء من رسوم التجزئة الناجحة جزئيًا ، ولكن مالك المجمع لا يحصل على مكافأة المكافأة. هذا هو المعروف باسم الهجوم حجب. بما أنها لا تستفيد من عامل التعدين ، فهي ليست مفيدة جدًا كتهجوم.
وينظر إلى تجمع التعدين من قبل الشبكة بمثابة عقدة واحدة (باعتباره عامل منفردا).
تشغيل nonce من 1 إلى n-1 للبحث عن التجزئة bock جيدة.
كيفية تجنب عمال المناجم عدم القيام بنفس العمل عن طريق اختبار نفس القيم من nonce؟
هل يعطي التجمع كل عامل من عمال المناجم جزءًا من المجموعة التي تحتوي على جميع قيمة nonce الممكنة؟
بينويست: أعتقد أن تجمع التعدين يعطي كل عامل منجم مختلف قيم extranonce1. يمكن أن يعمل عامل منجم من خلال جميع قيم nonce و extranonce2 بدون تكرار العمل. وبسبب القيم المختلفة لـ extranonce1 ، يمكن لكل عامل منجم أن يعمل بنفس المعاملات ولكنه سيظل ينشئ كتلًا فريدة.
ما أؤمن به من التعليق التالي الذي وجدته في مدونة أخرى هو:
يمكننا تغيير يدويا غير مختصر.
على سبيل المثال ، ابدأ بـ nonce = 2677 أو حتى حاول التنبؤ بالنقص غير الصحيح الذي سيعطي تجزئة الحظر الصحيحة.
مرحبا! أنا معجب كبير بمقالاتك. هل يمكنني ترجمة بعضها إلى مدونتي باللغة البرتغالية؟ شكرا لكم مقدما.
أندريه: المضي قدما وترجمة. شكرا على السؤال. إذا أرسلت لي رابطًا لترجمتك ، يمكنني إضافته إلى هذه الصفحة.
(إنه جدول يحتوي على بيانات من صفحتك)
جوناثان: الكتلة في هذا الرقم تختلف عن الكتلة التي تمت مناقشتها في وقت سابق ، لذلك لا يمكن أن تتوقع منهم مطابقة. (يجب أن يذكر النص أعلاه الرقم هذا.)
لا يذكر ذلك.
بناء جذر merkle من تجزئة تكساس quebase وتزويد صفيف فرع merkle، تشكيل رأس كتلة، التجزئة و. أفترض إذا كان الوكيل محظوظًا ، فبإمكانه تقديمه نيابة عن عامل التعدين!
جوناثان ، أنت على حق - هناك رقم إضافي لوقت القفل في الرسم التخطيطي. يمكنك الحصول على نقاط لدراسة الرسم البياني بعناية أكثر من أي شخص آخر ؛ -) حصلت مشاركتك من خلال غرامة ، بالمناسبة (مع الكثير من الرسائل غير المرغوب فيها أنا باستمرار إزالة).
وبعد ذلك كيف يمكننا تقديم الصمت إلى blockchain؟
Pooriya: منفردا التعدين هو نفسه تقريبا إلا لديك خيار ما يذهب في الكتلة. يمكنك اختيار المعاملات الصالحة التي تريد وضعها في المربع. أنت تختار قيمة دقيقة تقريبًا للطابع الزمني. يتكون جذر Merkle من أزواج من المعاملات ثم أزواج من التجزئة حتى تحصل على قيمة واحدة (انظر الحاشية 4 لمزيد من التفاصيل). ثم محاولة تجزئة كتلة الناتج مع أعداد غير مختلفة ، على أمل العثور على كتلة ناجحة.
لا ، لأن عنوان منح المكافأة هو عنوان المسابح. إذا وضعت عنوانًا خاصًا بك ، فلن تحصل على مكافآت للمجموعات. يمكنك التخلص من صعوبة سلسلة كتلة مكافأة باعتباره إنكار المال ولكن ذلك لا أحد جيد.
شكرا لك على المشاركة التفصيلية في التعدين بيتكوين. لدي إعداد BTC العقدة الكاملة. لدي ستة نوى من وحدة المعالجة المركزية وحوالي 16GB. لقد قمت بتثبيت cpuminer لاختبار عملية التعدين. يمكنك مشاركة بعض المعلومات حول كيفية إعداد عملية التعدين فقط لمعاملة خاصة. أريد تسريع معاملات الرسوم الخاصة بي مع خادم التعدين الخاص بي. يمكننا القيام بذلك مع وحدة المعالجة المركزية للتعدين أو نحتاج GPU ، التعدين FRGA والتعدين ASIC.
من فضلك ، هل يمكن أن ترسل لي البرنامج الذي تم تجميعه بالفعل لـ Nonce الحاجز لـ Windows؟ تلك التي لديك في المثال. شكرا لكم.
كيفية إنشاء برامج التعدين.
العملات المعدنية البديل. التي هي على سقف coinmarket. والشفرة المصدر متاحة على جيثب.
لم أر حتى الآن أي مناقشة حول كيف يمكننا التأكد من أنه يمكن استخلاص أي / كل كتلة. أليس من الممكن في يوم من الأيام ، مواجهة كتلة لا تلبي المعايير أبداً ، لا يمكن أن تفي بالمعايير؟
المجهول: تسأل إذا كنا نعرف أنه يمكن استخراج كل كتلة. وبالنظر إلى الصعوبة الحالية ، فمن المحتمل جدًا أنه لا يمكن استخلاص كتلة معينة - لا يوجد هناك نشاط غير مفيد. في هذه الحالة ، يقوم عمال المناجم ببساطة بتغيير الكتلة قليلاً (على سبيل المثال تغيير الوقت ، استخدام معاملات مختلفة) والمحاولة مرة أخرى. في نهاية المطاف سوف تعمل بعض كتلة. وبعبارة أخرى ، لا توجد كتلة محددة واحدة يجب أن تكون الكتلة التالية ، ولكن تحتاج زيليون من الاحتمالات وعمال المناجم فقط للعثور على واحدة تعمل.
من هي الجهة التي تقوم بحماية كود أو بروتوكول أو برنامج بيتكوين الأساسي ضد الهجمات أو الاختراقات؟
آندي: نعم ، يمكن لأجهزة الكمبيوتر الألغام في الوقت نفسه. إن العثور على التجزئة أمر يتطلب تجربة الكثير والكثير من التجزئات حتى تجد واحدة جيدة ، لذلك من السهل أن يكون لديك العديد من الآلات التي تعمل بشكل متواز. الخدعة الوحيدة هي التأكد من أن جميع الأجهزة تقوم بعمل تجزئات مختلفة وليست تكرارًا للعمل ، وهو أمر بسيط....هذا في الأساس ما تفعله مجمعات التعدين ؛ هم أيضا نشر المكاسب عبر جميع المشاركين.
كتلة خوارزمية التجزئة.
التعدين بيتكوين يستخدم الدليل hashcash للدالة العمل ؛ تتطلب الخوارزمية hashcash المعلمات التالية: سلسلة خدمة و nonce و عداد. في bitcoin ، يتم تشفير سلسلة الخدمة في بنية بيانات رأس الحظر ، وتتضمن حقل إصدار ، تجزئة الكتلة السابقة ، تجزئة الجذر لشجرة merkle لجميع المعاملات في الكتلة ، الوقت الحالي ، والصعوبة. بتكوين بتخزين nonce في الحقل extraNonce وهو جزء من المعاملة coinbase ، التي يتم تخزينها كـ اليسار معظم العقدة الورقية في شجرة merkle (the coinbase هو المعاملة الخاصة الأولى في الكتلة). تكون معلمة العداد صغيرة عند 32 بت ، لذلك في كل مرة يتم فيها التفاف حقل extraNonce يجب زيادة (أو تغييره) لتجنب تكرار العمل. أساسيات خوارزمية hashcash سهلة الفهم ، وهي موصوفة بمزيد من التفاصيل هنا. عند تعدين bitcoin ، تقوم خوارزمية hashcash بشكل متكرر بتجميد رأس المجموعة أثناء زيادة العداد & amp؛ حقول extraNonce. يتطلب زيادة الحقل extraNonce إعادة حساب شجرة merkle ، لأن المعاملة coinbase هي عقدة معظم الأوراق اليسرى. يتم أيضًا تحديث الكتلة أحيانًا أثناء العمل عليها.
يحتوي رأس الحظر على هذه الحقول:
يحتوي جسم الكتلة على المعاملات. يتم تجزئتها بشكل غير مباشر فقط من خلال جذر Merkle. نظرًا لأن المعاملات لا يتم تجزئتها بشكل مباشر ، فإن إضافة شريحة بها معاملة واحدة تأخذ بالضبط نفس الجهد مثل تجزئة كتلة تحتوي على 10،000 معاملة.
الشكل المضغوط للهدف هو نوع خاص من التشفير العائم باستخدام 3 وحدات البايتات ، البايت البادئ كأس (حيث يتم استخدام البتات الأقل الخمس فقط) والقاعدة الخاصة به هي 256. معظم هذه الحقول ستكون هي نفسها لجميع المستخدمين. قد يكون هناك بعض الاختلافات الطفيفة في الطوابع الزمنية. عادةً ما يكون الاختصار غير التقليدي مختلفًا ، لكنه يزداد بطريقة خطية تمامًا. يبدأ "Nonce" عند 0 ويتم زيادة كل تجزئة. كلما فائض Nonce (وهو ما يفعل بشكل متكرر) ، يتم زيادة جزء extraNonce من معاملة الجيل ، والذي يغير الجذر ميركل.
علاوة على ذلك ، من غير المحتمل للغاية أن يكون لدى شخصين نفس جذور Merkle لأن أول معاملة في الجزء الخاص بك هو جيل "تم إرساله" إلى أحد عناوين Bitcoin الفريدة الخاصة بك. بما أن البلوك الخاص بك مختلف عن كتل الآخرين ، فأنت (تقريباً) مضمونة لإنتاج تجزئات مختلفة. كل التجزئة التي تحسب لها نفس الفرصة للفوز مثل كل التجزئة الأخرى المحسوبة من قبل الشبكة.
يستخدم Bitcoin: SHA256 (SHA256 (Block_Header)) ولكن يجب عليك توخي الحذر بشأن ترتيب البايت.
على سبيل المثال ، سيحسب رمز python هذا تجزئة الكتلة ذات التجزؤ الأصغر اعتبارًا من يونيو 2011 ، Block 125552. تم إنشاء الرأس من الحقول الستة الموضحة أعلاه ، متصلاً معًا كقيم قليلة النهاية في التدوين السداسي:
لاحظ أن التجزئة ، والتي هي رقم 256 بت ، لديها الكثير من البايتات صفر البادئة عند تخزينها أو طباعتها كدرجة سداسية عشرية نهائية كبيرة ، ولكنها تحتوي على صفر بايت زائدة عند تخزينها أو طباعتها في نهايات صغيرة. على سبيل المثال ، إذا تم تفسيرها كسلسلة وأقل (أو بداية) يحتفظ عنوان السلسلة بأبسط بايت كبير ، فهو قليل endian.
يعرض مخرجات blockexplorer قيم التجزئة كعدد كبير من الأرقام النهائية. تدوين للأرقام هو المعتاد (الأرقام الرئيسية هي الأرقام الأكثر قراءة من اليسار إلى اليمين).
على سبيل المثال ، هنا هو إصدار في عادي C دون أي التحسين ، خيوط أو التحقق من الأخطاء.
هنا هو نفس المثال في سهل PHP دون أي التحسين.
سرعة الهروب.
رؤى مستقبل أكثر حرية.
شرح Bitcoin Mining Like You are Five: Part 2 - Mechanics.
في الجزء الأول ، ألقيت نظرة على الحوافز التي ينطوي عليها تعدين Bitcoin وكيف يتم استخدامها لضمان تاريخ واحد للمعاملة اللازمة لمنع بيع bitcoins مرتين. في هذا المنشور ، سنلقي نظرة تقنية أكثر على التشفير المستخدم وكيفية استخدامه لتأمين الشبكة. كما قلت سابقا ، يمكن الوصول إلى Bitcoin. على الرغم من أننا سنناقش مفاهيم التشفير ، إلا أنه لا ينبغي أن يثنيك عن مواصلة المضي قدمًا.
وظائف تجزئة التشفير.
قبل المضي قدمًا ، يجب أن نتوقف لحظة لمعرفة وظائف هاش حيث يتم استخدامها جميعًا عبر بروتوكول Bitcoin. وببساطة ، فإن دالة هاش هي مجرد خوارزمية رياضية تأخذ مدخلاً وتحولها إلى مخرج. على سبيل المثال ، لنفترض أن لدينا خوارزمية تضيف فقط كل الأرقام في سلسلة الإدخال معًا. إذا كانت مدخلاتنا 1234 ، فسوف نحصل على إنتاج 10.
بسيطا بما فيه الكفاية. ومع ذلك ، هناك خصائص معينة لوظائف تجزئة جيدة بالفعل تجعلها مناسبة للاستخدام في الترميز. الحفاظ على هذه الخصائص في الاعتبار لأنها حيوية لتشغيل بروتوكول Bitcoin....يجب أن يكون من السهل جدًا حساب ناتج لأي مدخلات معينة ، ومع ذلك يجب أن يكون مستحيلاً (نظراً إلى المعرفة الحالية للرياضيات وحالة أجهزة الكمبيوتر) لحساب مدخلات الإخراج المعين حتى أثناء معرفة الخوارزمية الرياضية. خذ بعين الاعتبار ، في المثال أعلاه ، يمكننا حساب ناتج 10 بسهولة ، نظرًا لإدخال 1234 ، إلا أن الرجوع إلى الاتجاه المعاكس ليس سهلاً. في هذه الحالة ، هناك العديد من المدخلات الممكنة التي يمكن أن تضيف ما يصل إلى 10 (55 ، 136 ، 7111 ، إلخ). ومع ذلك ، بالنظر إلى بساطة وظيفتنا ، لا يزال بإمكان المرء معرفة المدخل بسهولة نسبية. من ناحية أخرى ، يقال إن بعض وظائف هاش التشفير غير قابلة للكسر حتى من قبل أجهزة الكم.
بخلاف مثالنا ، يجب أن يتم تعيين كل مخرجات محتملة لمدخلات واحدة فقط. إذا كان هناك مدخلين مختلفين يمكنهما إنتاج نفس المخرج ، فإن هذا يسمى تصادم هاش. خوارزميات تجزئة التشفير جيدة مقاومة لمثل هذه الاصطدامات. يجب أن تكون دالة هاش قادرة على أخذ مدخلات الحجم المتغير وتحويلها إلى مخرجات ذات حجم ثابت. فمثلا:
يجب أن يكون الإخراج بنفس الطول بغض النظر عما إذا كان الإدخال يحتوي على 10 أحرف أو 10 آلاف حرف. يجب أن يؤدي التغيير الصغير في المدخلات إلى إخراج مختلف تمامًا لا يرتبط بأي حال بالمدخل الأصلي. مثال:
Bitcoin يجعل الاستخدام المكثف للوظيفة التجزئة التشفير SHA256 ، والتي تقف على خوارزمية Hash آمنة 256 بت. بالمناسبة ، تم تطوير خوارزميات SHA في الأصل من قبل وكالة الأمن القومي. قد تتساءل كيف يمكننا الوثوق بشيء جاء من NSA. من المؤكد أن هذا الأمر يثير الشكوك ، إلا أن الخوارزميات جزء من النطاق العام وقد تم فحصها وتحليلها من قِبل خبراء التشفير الذين يعرفون ما يفعلون. الإجماع هو أنهم آمنون.
والآن بعد أن أصبح لدينا التصفيات التمهيدية ، يمكننا البدء في التركيز على البروتوكول. إذا قمت بقراءة الجزء الأول ، سوف تتذكر أن جميع معاملات Bitcoin يتم ترحيلها إلى كل من النظراء في الشبكة. يجمع عمال المناجم هذه المعاملات ، ويجرون عددًا من الشيكات للتأكد من صلاحيتها ، ثم يضيفونها إلى مستودع الذاكرة الخاص بهم. في هذه المرحلة ، يبدأون عملية إنشاء كتلة.
الخطوة الأولى في العملية هي تجزئة كل معاملة في تجمع الذاكرة باستخدام SHA256. قد تبدو بيانات المعاملات الأولية على النحو التالي:
وبمجرد تجزئتها سوف تبدو كما يلي:
ثم يتم تنظيم هذه التجزئة في شيء يسمى شجرة Merkle أو شجرة هاش. إذا كنت على دراية بما تبدو عليه قائمة بطولات NCAA ، فستفهم هذا المفهوم. يتم تنظيم تجزئات المعاملات في أزواج من twos ، متسلسلة معًا ، ثم تجزأ مرة أخرى. وينطبق الشيء نفسه على كل مجموعة من المخرجات حتى يتم تكوين شيء مثل شجرة (أو قوس NCAA).
في المثال أعلاه ، توجد أربع معاملات فقط (tx تشير إلى المعاملة). سوف تحتوي كتلة حقيقية على مئات المعاملات بحيث يكون القوس (الشجرة) أكبر من ذلك بكثير. يسمى التجزؤ في أعلى الشجرة بجذور Merkle.
بالمناسبة ، لا تقلق إذا لم تفهم بعد سبب تنظيم المعاملات في شجرة Merkle ، فسنعمل على جمعها معًا قريبًا بما يكفي وبعد ذلك ستنقر جميعًا.
يتم وضع جذر Merkle الخاص بشجرة التجزئة هذه في رأس القطعة إلى جانب تجزئة الكتلة السابقة (سيتم تفسيرها لاحقًا) ورقم عشوائي يسمى nonce (كما سيتم شرحه لاحقًا). سيظهر رأس الحظر على النحو التالي:
ثم يتم تجزئتها رأس كتلة مع SHA256 تنتج مخرجات من شأنها أن تكون بمثابة معرف الكتلة. الآن بعد أن فعل كل هذا يمكننا المضي قدما وتناقل كتلة لبقية الشبكة؟ إذا كنت تذكر آخر مشاركة ، فإن الإجابة هي لا. لا نزال بحاجة إلى تقديم إثبات صالح للعمل.
يعيِّن بروتوكول Bitcoin قيمة مستهدفة لتجزئة رأس الحظر. يجب أن يكون الإخراج أقل من الرقم المحدد. هناك طريقة أخرى لقول ذلك وهي أن تجزئة رأس الفدرة يجب أن يبدأ بعدد محدد من الأصفار. على سبيل المثال ، قد يبدو التجزئة الصحيح كالتالي:
سيتم رفض أي كتلة لا ينتج رأسها تجزئة أقل من القيمة المستهدفة بواسطة الشبكة. يتم ضبط القيمة المستهدفة من قبل البروتوكول كل أسبوعين لمحاولة الحفاظ على متوسط فترة حظر لمدة 10 دقائق.
لذا بعد أن قمت بتجميع كل معاملة ، قم بتجسيد المخرجات في شجرة تجزئة ، ووجدت Merkle Root ، وأضفتها إلى رأس كتلة مع تجزئة الكتلة السابقة ونقص غير متماثل ، وقمت بتجزئة الرأس وأنتجت مخرجًا لا يبدأ مع العدد الصحيح من الأصفار ، ثم ماذا؟
هذا هو المكان الذي يأتي فيه nonce. غير العشوائي هو ببساطة رقم عشوائي تتم إضافته إلى رأس الحظر لأي سبب آخر غير أن يعطينا شيئًا لزيادة في محاولة لإنتاج تجزئة صالحة. إذا كانت المحاولة الأولى في تجزئة الرأس تؤدي إلى تجزئة غير صالحة ، فما عليك سوى إضافة واحدة إلى علامة غير رقمية وإعادة صياغة الرأس ثم تحقق مما إذا كان هذا التصنيف صحيحًا أم لا.
على سبيل المثال ، لنفترض أننا أردنا التجزئة "مرحبا ، العالم!..."بحيث بدأ الإخراج بثلاثة أصفار على الأقل. ستقوم بتسلسلها بعلامة غير مجزأة وتجزئة ، والتحقق من الإخراج لمعرفة ما إذا كان صالحًا. إذا لم يكن الأمر كذلك ، فأضفت واحدًا إلى علامة عدم التكرار وحاول مرة أخرى.
في هذا المثال ، استلزم الأمر 4،251 محاولة العثور على ندرة غير ذلك عندما تكون متسلسلة مع "Hello، world!" أنتجت مخرجات تبدأ بثلاثة أصفار على الأقل.
هذا هو التعدين بيتكوين باختصار. لاحظ أن كتلة المعاملات بالكامل لا تتم إعادة صياغتها مع كل محاولة ، فقط العنوان. هذا هو أساسًا ما يكون التعدين من نوع Bitcoin ، مجرد إعادة توجيه رأس الكتلة ، مرارًا وتكرارًا ، وفوق ، وما فوق ، حتى ينتج أحد عمال المناجم في الشبكة تجزئة صالحة في النهاية. عندما يفعل ، ينقل الكتلة إلى بقية الشبكة. جميع عمال المناجم الآخرين يتفقدون عمله ويتأكدون من صحته. إذا كان الأمر كذلك ، فإنهم يضيفون الحظر إلى نسختهم المحلية من سلسلة الكتلة وينتقلوا إلى إيجاد الكتلة التالية.
في قديم الزمان قام عمال المناجم بحسابات SHA256 فقط على وحدة المعالجة المركزية للكمبيوتر المحمول الخاص بهم. ومع ذلك ، كلما زاد عدد التجزئات التي يمكنك إجراؤها في الثانية ، زادت احتمالية أن تقوم بتعدين كتلة والحصول على المكافأة. أعطى تعدين وحدة المعالجة المركزية (CPU) الطريق إلى تعدين GPU (وحدات معالجة الرسومات) التي أثبتت كفاءة أكبر في حساب وظائف هاش. في عالم اليوم ، يستخدم عمال المناجم ASICs (الدوائر المتكاملة التطبيق محددة) لبيتكوين. أساسا ، هذه رقائق الكمبيوتر بنيت لهذا الغرض التي صممت لتنفيذ حسابات SHA256 ولا تفعل أي شيء آخر. ليس من غير المألوف رؤية عمال المناجم الذين يحسبون أكثر من تريليون رطل في الثانية الواحدة (توراش). في الوقت الحالي ، يبلغ إجمالي القدرة على التشحيم في الشبكة حوالي 700 تيراش في الثانية ويغلق على واحد في الثانية الواحدة.
ربما ينبغي أن أشير أيضًا عند هذه النقطة إلى أن المعاملة الأولى في كل كتلة يشار إليها باسم المعاملة "coinbase". هذه هي الصفقة التي يرسل فيها عامل التنقيب نفسه 25 bitcoins التي تم إنشاؤها للتو "من فراغ". ونظرًا لأن كل عامل من عمال المناجم يرسل 25 بت كيكوين إلى عنوانه الخاص ، فإن المعاملة الأولى في كل كتلة ستختلف من منجم إلى عامل منجم. الآن تذكر خصائص وظيفة تجزئة التشفير؟ إذا تغير المدخلات حتى في أدنى ، يتغير الإخراج بأكمله. وحيث أن التجزئة في معاملات العملة المعدنية عند قاعدة شجرة التجزئة تختلف باختلاف كل عامل من عمال المناجم ، فإن شجرة التجزئة بأكملها بما في ذلك جذر Merkle ستكون مختلفة لكل عامل مناجم. وهذا يعني أن النتاج المطلوب لإنتاج قالب صالح سيكون مختلفًا أيضًا لكل عامل منجم.
هذا هو السبب وراء استخدام شجرة Merkle بعد كل شيء. يتم تمثيل المعاملات في الرأس بواسطة Merkle Root حتى لا يلزم إعادة صياغة كتلة المعاملات بالكامل مع كل محاولة (مما يجعل مقدار الوقت اللازم لتجزئة كتلة يختلف مع عدد المعاملات). سيؤدي أي تغيير في معاملة واحدة إلى حدوث انهيار في شجرة التجزئة التي ستؤدي في النهاية إلى تغيير تجزئة الكتلة. لنرى الآن كيف يحمي هذا الشبكة من الهجوم.
يتم تضمين تجزئة كل كتلة في رأس الكتلة التالية على هذا النحو:
إذا أراد أحد المهاجمين تغيير أو إزالة معاملة موجودة بالفعل في سلسلة الكتل ، فإن التغيير سيؤدي إلى تغيير تجزئة الصفقة وإطلاق التغييرات على طول الطريق حتى شجرة البعثرة إلى جذر ميركل. وبالنظر إلى الاحتمالات ، فمن غير المحتمل أن يؤدي العنوان الجديد لـ Merkle Root إلى إنشاء تجزئة صالحة (دليل العمل). وبالتالي ، سيحتاج المهاجم إلى إعادة توجيه رأس المجموعة بالكامل وقضاء وقت طويل من الزمن في العثور على القيمة الصحيحة غير الصحيحة. ولكن لنفترض أنه يفعل ذلك ، فهل يمكنه فقط نقل حصاره المزور إلى الشبكة ، ويأمل أن يقوم عمال المناجم باستبدال الكتلة القديمة بآخر جديد ، أو بشكل أكثر واقعية ، أن يقوم المستخدمون الجدد بتنزيل كتلته المزورة؟ لا. السبب يرجع إلى تضمين تجزئة كل فدرة في رأس الكتلة التالية. إذا قام المهاجم بإعادة إنشاء الفدرة رقم 100 ، فإن ذلك سيتسبب في تغيير رأس المقطع 101 ، مما يتطلب أن يتم إعادة التجميع أيضًا. سيؤدي التغيير إلى تجزئة كتلة 101 إلى تغيير رأس كتلة 102 وهكذا على طول الطريق عبر سلسلة الكتلة. تتطلب أي محاولة لتغيير معاملة موجودة بالفعل في سلسلة الكتل ، ليس فقط إعادة صياغة الكتلة المحتوية على المعاملة ، ولكن جميع الكتل الأخرى اللاحقة كذلك. واعتمادًا على عمق السلسلة التي تتم بها المعاملة ، قد يستغرق الأمر أسبوعًا أو أشهرًا أو سنوات للمهاجم الواحد لإعادة صياغة باقي سلسلة الكتل. وكما ذكرت في الجزء الأول ، طالما أن المهاجم لا يتحكم في غالبية طاقة المعالجة في الشبكة ، فإن بقية الشبكة ستضيف كتل جديدة إلى السلسلة الرئيسية بشكل أسرع من المهاجم الذي يمكنه إضافة كتل إلى سلسلة احتيالية ، تضمن أن السلسلة الشرعية تبقى هي الأطول ويتم تجاهل سلسلة المهاجم.
الاستثناء الوحيد للقاعدة أعلاه هو إذا كان المهاجم ببساطة محظوظًا. كما لاحظنا ، فإنه يأخذ الشبكة بأكملها في المتوسط 10 دقيقة للعثور على كتلة صالحة. يجب أن تأخذ مهاجمًا واحدًا مع 10٪ من طاقة المعالجة في الشبكة 100 دقيقة للعثور على كتلة صالحة (200 دقيقة عند 5٪ ، وما إلى ذلك) ، ولكن هذه مجرد متوسطات. قد يكون من الممكن نظريًا أن يتمكن أحد المهاجمين من الحصول على الحظ وأن يحصل على كتلة في دقيقة واحدة عندما يُفترض أن يستغرق متوسطه 100 دقيقة. إذا كانت هذه المجموعة تحتوي على إنفاق مضاعف ، فمن المحتمل أن يتم تضمين المعاملة الاحتيالية للمهاجم في سلسلة الحظر وأن معاملته الشرعية مرفوضة (تعتقد بقية الشبكة أن المعاملة المشروعة هي الإنفاق المزدوج). كلما كانت الصفقة أعمق في سلسلة الكتل ، كلما زاد عدد المرات التي يحتاج فيها المهاجم إلى الحصول على الحظ وإعطائه كتلة قبل باقي الشبكة لتمديد سلسلته لفترة أطول من السلسلة الرئيسية. من وجهة نظر الاحتمال ، فإن فرص مثل هذا الهجوم تنخفض بشكل كبير مع كل كتلة لاحقة. إنه مثل الفوز باليانصيب عدة مرات على التوالي. في الورقة البيضاء الأصلية ، قام ساتوشي ناكاموتو بحساب الاحتمالات بأن المهاجم قد يحالفه الحظ وأن ينفق إنفاقًا مضاعفًا. في الجدول التالي هو النسبة المئوية للشبكة التي يسيطر عليها المهاجم ، P هو احتمال حصول المهاجم على الحظ وتجاوز عدد كتل z.
بالنظر إلى الاحتمالات المذكورة أعلاه ، يمكننا أن نرى أن المهاجم الذي يملك 10٪ من طاقة المعالجة في الشبكة سيحصل على فرصة بنسبة 0،24٪ للحصول على الحظ وتجاوز ستة كتل. وهذا هو السبب عادةً في أنه من الموصى به أنه إذا كنت تبيع شيئًا غاليًا ، فيجب عليك الانتظار حتى تصل معاملتك إلى ست كتل عميقة (ست تأكيدات في لغة البيتكوين) قبل تسليم البضائع فعليًا.
حسنا هذا في الوقت الحالي. هذا المنصب حصل في عجلة من امرنا كنت أتحدث قليلاً عن برك التعدين ، ولكن ربما سأحفظ ذلك في الجزء الثالث. آمل أن تكون قد استمتعت بهذه المشاركات وأتمنى أن تكون قد تعلمت شيئًا.
مثله:
بعد الملاحة.
ترك الرد إلغاء الرد.
لقد وجدت تعليقاتك المنشورة أثناء البحث في Google. انها معلومات ذات الصلة جدا. عمل عظيم. بشكل منتظم لا أقوم بإنشاء مشاركات على المدونات ، ولكن يجب أن أقول إن هذا النشر أجبرني فعلاً على فعل ذلك. حقا رهيبة وظيفة. رائع حقًا وسأعود لمزيد من المعلومات على موقعك وإعادة زيارتها! التعدين بيتكوين .
شكراً جزيلاً لك على هذه المشاركة المفيدة ، كريس.
لا يزال لدي سؤال واحد على الرغم من:
- يجب أن تكون وظيفة تجزئة جيدة خالية من التصادم؟
- منطقياً ، ينطبق هذا فقط على المدخلات التي تحتوي على وحدات بت أقل من المخرجات.
- وبخلاف ذلك ، يمكن استخدام أفضل وظيفة ضغط في العالم ، حيث يمكن ضغط 1 أزعاج إلى 256 بت.
- لذلك ، لأن Bitcoin عمومًا يستخدم مدخلات أكبر من المخرجات ، فإنه في حالة عدم وجود تصادم مجاني.
ألن يكون ذلك نقطة يمكن أن يتعرض فيها Bitcoin للهجوم باستخدام كمبيوتر كمومي ، أو إذا تم حل "p vs np"؟
هذه نقطة جيدة حقًا. هناك مفاتيح خاصة متعددة لكل عنوان بيتكوين ، ولكنها تشبه إبرة في كومة قش.
هذا التعليق من reddit يعطي الاحتمالات.
ما زلت أعتقد أنه خارج نطاق خوارزميات البحث الكم.
أنت على صواب ، إنها ليست خالية من التصادم ، لكن من الناحية العملية يمكننا التفكير في الأمر على هذا النحو لأن هناك شيئًا مثل الاحتمالات 2 ^ 130 ، ولذلك فمن غير المحتمل جدًا ، نظرًا لتجزئة الرسالة ، H (m) ، يمكن في أي فترة زمنية معقولة العثور على رسالة أخرى ، m1 مثل H (m) = H (m1).
أيضا ، عندما يتعلق الأمر ب bitcoin ، مع سباق الشبكة بأكمله ، حتى لو كنت قد قضيت الوقت للعثور على m1 ، يجب عليك القيام بذلك عدة مرات ككتل تحتاج إلى إعادة صنعها ، وبحلول ذلك الوقت تكون الشبكة أكثر قبل ذلك ، إلا إذا كان لديك أكثر من 50 ٪ من قوة الحوسبة ، إنها معركة خاسرة.
يرجى الربط بالجزء 3.
بالنسبة إلى تسلسل التجزئة ، هل يعني ذلك أنه إذا كان هناك شخص ما يحصل على تجزئة صالحة ، فأحتاج إلى تحديثه وتنزيله وإعادة حسابه استنادًا إلى حظره؟ أو هل يمكنني إنشاء فرع جديد بناءً على الحظر السابق؟
يرجى ربط الجزء 3.
شكرا لكونك مفصلا. الأمثلة رائعة!
وقد شهدت البيتكوين زيادات سريعة خلال العام الماضي ، وهناك الآن أولئك الذين يدعون أن الفقاعة ستنفجر قريباً وان ينهار البيتكوين. لا يزال هؤلاء منا يؤمنون بفكرة وجود نظام مملوك للمستخدم بعيدًا عن متناول البنوك. لا نعتقد أن العملة قد انتهت. سنبقى مع بيتكوين وأنا واثق تمامًا من أنه سيستمر في الارتفاع بسرعة أكبر من ذي قبل.
ماذا عن عندما يتم استخراج كل bitcoins؟
شكرا كريستيان! نحن سعداء أنك استمتعت بهذه المشاركة!
واو شكراً لكم ، عرضت عليكم مقالاً عظيماً عن كيفية عمل بروتوكول Bitcoin....
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.