
تم إنشاء Namecoin blockchain كبديل لمسجلين DNS التقليديين ، محميين من الرقابة والاستيلاء على المجال القسري. في السنوات القليلة الماضية ، بدأ مشغلو الروبوتات مثل Dimnie و Shifu و RTM و Gandcrab في استخدامه لإدارة عناوين خوادم C&C.
فمن ناحية ، تمنع اللامركزية والاستقرار في blockchain الباحثين ومقدمي الخدمات من إزالة هذه المجالات أو السيطرة عليها. من ناحية أخرى ، فإن البنية التحتية القائمة على blockchain لديها ميزة معمارية: جميع التغييرات في الشبكة متاحة للجمهور ويمكن استخدامها لدراسة وتتبع تصرفات المهاجمين.
تعرض هذه الورقة النهج المستخدم لرسم خرائط الروبوتات في Namecoin وتتبعها لاستخراج بطاقات IOC جديدة. باستخدام النهج الموضح ، تم تجميع قوائم الأصول (انظر الملحق) المستخدمة من قبل الروبوتات المذكورة أعلاه.
انحدار غنائي
الاختراعات التي تغير الإنترنت غالباً ما لا تحل مشكلة فنية فحسب ، بل مشكلة اجتماعية. هذه التقنيات والخدمات هي بالضبط التي تسمح للمجتمع بأن ينظر من الجانب إلى بعض البديهيات التي بدت غير متزعزعة ، وإعادة التفكير فيها ، وإعادة تكوينها من نقطة الصفر ، ولم يتبق سوى فكرة وإسقاط عبء الاتفاقيات القديمة والقيود المتراكمة على مر السنين. Blockchain و Bitcoin ، Tor ، Wikipedia - وراء نجاح كل واحد منهم هو مجموعة صغيرة من المتحمسين بعيون محترقة ، مؤمنين بإخلاص أنهم يصنعون مجتمعًا أفضل.
للأسف ، غالبًا ما يأتي الآخرون وراءهم - غريبة عن المُثُل الغريبة لرواد الإنترنت ، ولكنها أكثر عملية. وجدوا تطبيقًا
بديلًا للتكنولوجيا ، لم يفكر المبدعون (أو لم يرغبوا في التفكير فيه). كونه على الحدود (وفي كثير من الأحيان ، لإخفاء ، وبصراحة في الخارج) من المسموح به ، وهذا التطبيق البديل ، في كثير من الأحيان ليس من دون مساعدة من وسائل الإعلام ، لأن الأغلبية يتحول إلى
الافتراضي ضمني ، أو حتى
واحد فقط .
يمكن أن يؤدي تكافؤ التكنولوجيا كفكرة وطريقة استخدامها الأكثر مناقشة إلى رفض المجتمع للتكنولوجيا نفسها. نتيجة لتجريم استخدامه ، يمكن تخفيض الخدمة غير الناضجة إلى مستوى ثقافة هامشية أو تدميرها بالكامل. لقد حدث ذلك منذ وقت طويل مع
Napster ، ولم يمض وقت طويل - مع
BitTorrent و Tor ، يحدث هذا الآن مع Bitcoin.
هذا لم يتجاوز بطل هذا العمل - Namecoin. Namecoin هو عبارة عن blockchain مصمم لتخزين أزواج المفاتيح ذات القيمة التعسفية ، وأشهرها نظام تسجيل اسم DNS غير مركزي ومقاوم للرقابة - Dot-Bit.
ازداد اهتمامنا بـ Namecoin بعد أن بدأت مجموعة إدارة الروبوتات RTM في استخدام Dot-Bit لإدارة خوادم C&C الخاصة بهم. في مرحلة ما ، تساءلنا - هل من الممكن اكتشاف خوادم C & C جديدة فور تسجيلها في Dot-Bit؟ وإذا لم تكن هناك مشاكل مع تحديثات المجالات المعروفة ، فإن تطوير نهج يسمح للمرء باكتشاف أدلة قوية على ارتباط المجالات الجديدة بشخص مثير للاهتمام أصبح فجأة مهمة بحثية مثيرة ، وكانت نتيجة هذا العمل.
بشكل عام ، تم إجراء أبحاث Namecoin ومجموعة مؤشرات التسوية في Dot-Bit في وقت سابق. يمكن اعتبار العمل الأكثر تفصيلاً
مقالة بقلم كيفن بيرلو . لقد كان أول من لفت الانتباه إلى الإمكانية الأساسية لاستخراج البيانات من Namecoin ووصف العديد من تقنيات الاستدلال التي تسمح للخبير بإيجاد مجالات مماثلة في خصائص خوادم C&C المعروفة لمجموعة معينة.
يحتوي النهج الموضح في هذه الدراسة على العديد من الاختلافات المهمة عن طريقة فهرسة الخبراء المحورية التي وصفها كيفن. القواعد الإرشادية التي طورناها لتحديد مالكي المجال مستمدة من مبادئ تشغيل blockchain وتشكيل المعاملات فيه ، بالإضافة إلى الوصف العام ، يتم تقديمها في شكل صيغ منطقية صارمة. جنبا إلى جنب مع وصف رسمي لخوارزمية الالتفافية ، يتيح لك ذلك أتمتة البحث عن IOC ، مما يزيد بشكل كبير من فعالية التحقيق. بالإضافة إلى ذلك ، لا تساعد الخوارزمية المطورة في العثور على أسماء أخرى تم استخدامها من قبل من قبل مجموعة الدراسة ، ولكنها تتيح لك أيضًا تتبع إنشاء مجالات جديدة يتحكم فيها نفس الشخص.
كل العمل ينقسم إلى ثلاثة فصول. يصف الفصل الأول أساسيات Bitcoin ، والتي تم استخدام رمزها كمنصة لإنشاء Namecoin. لقد ورثت Namecoin العديد من الكيانات والعلاقات وتطبيقاتها المحددة في Bitcoin. فهمهم أمر حاسم لمزيد من المناقشة.
يتم تخصيص الفصل الثاني مباشرة ل Namecoin وتطبيقه الرئيسي - نقطة بت.
يصف الفصل الثالث النهج المقترح لاستخراج البيانات من Namecoin ، كما يقدم وصفًا رسميًا لخوارزمية تجاوز blockchain والقواعد الإرشادية المستخدمة لإقامة العلاقات بين المجالات.
تحتوي الملاحق على IOCs التي تم جمعها باستخدام الطريقة الموضحة لبعض شبكات الروبوت ، وكذلك قائمة من المراجع والمستودعات التي ستساعد الباحثين الذين يرغبون في مواصلة العمل في هذا الموضوع.
بيتكوين 201
يتم جمع معظم المعلومات الواردة في هذا القسم من مواد سلسلة المقالات التي كتبها سيرجي
بافلوفدوغ بوتيكين "البيتكوين
باختصار ". بالنسبة للقراء الناطقين بالروسية ، هذا المصدر ، في رأينا ، هو الأكثر شمولاً وأعمق المتاح للجمهور ، لكن من السهل قراءته بشكل مدهش. أيها الباحثون المهتمون بجهاز Bitcoin الداخلي ، نحث على عدم قصر أنفسنا على المقتطفات الواردة في هذا القسم ، ولكن التعرف على النص الكامل للمقالات ، والمتاح بالرجوع إليه في التطبيق. ستكون بقية المعلومات الواردة أدناه كافية لفهم وصف الخوارزمية والقواعد الإرشادية للعثور على العلاقة بين العناوين في Namecoin ، الواردة في الفصل الأخير.
على الرغم من أنه من المعتاد أن تبدأ القصة حول blockchain مع الكتل والتشفير الذي يربطها ، إلا أننا سنبدأ بالمعاملات.
صفقة
كما تعلمون ، فإن أقرب ما يكون إلى Bitcoin هو دفتر حساب يتم فيه تسجيل جميع المعاملات باستخدام العملات المعدنية. لكن من الغريب أنه في Bitcoin لا يوجد جدول عام للنموذج
<, >
، تمامًا كما لا يوجد محاسب رئيسي يقوم بتحرير هذا الجدول.
بدلاً من ذلك ، يتم استخدام blockchain سيئة السمعة ، أي ، يتم تخزين كافة المعاملات بشكل عام. للبساطة ، يمكننا أن نفترض أن هذه هي رسائل النموذج:
<address 1> sent <amount> BTC to <address 2>
لذلك ، إذا قمت بالالتفاف على blockchain بأكملها ، يمكنك حساب عدد العملات "تنتمي" إلى عنوان معين.
المدخلات والمخرجات
المعاملات الحقيقية على شبكة Bitcoin أكثر تعقيدًا من تلك الموضحة أعلاه. هذا هو الهيكل الذي المكونات الرئيسية هي المدخلات والمخرجات.
المدخلات هي معاملات "تشير" إليها. تخيل أنه تم إرسال ثلاث معاملات إلى عنوانك X مرة واحدة:
TXN_ID: 123456, VALUE: 40 BTC TXN_ID: 645379, VALUE: 10 BTC TXN_ID: 888888, VALUE: 100 BTC
إذا كنت بحاجة إلى الإنفاق ، على سبيل المثال ،
45 BTC
، فيمكنك الرجوع إلى المعاملة
888888
أو
645379
في آن واحد:
123456
و
645379
.
المخرجات - حرفيًا "المخرجات". يمكننا أن نفترض أن هذه "عناوين" يتم إرسال "العملات" إليها نتيجة للمعاملة. يمكن أن يكون هناك أيضًا العديد من المخارج ؛ لكل منها مقدارها الخاص.
في الصورة أدناه ،
C
معاملة جديدة
C
، والتي تشير إلى ناتجين -
A
و
B
نتيجة لذلك ، تحتوي المعاملة على
0.008 BTC
عند الإدخال ، والتي يتم تقسيمها بعد ذلك إلى نواتج -
0.001 BTC
إرسال
0.001 BTC
إلى العنوان الأول ، و
0.006 BTC
إلى الثانية.

تعد القدرة على تحديد مخرجات متعددة مرة واحدة ميزة مهمة للغاية ، لأنه
يمكن استخدام مخرجات المعاملة كمدخلات مرة واحدة وفقط في مجملها . إذا كان لديك معاملة واردة عند
10 BTC
، وكنت بحاجة إلى إنفاق 8 منها ، يمكنك ببساطة إنشاء معاملة مع إدخال واحد واثنين من المخرجات:
8 BTC
إلى البائع و
2 BTC
مرة أخرى إلى عنوانك. إذا قمت بإنشاء معاملة يكون فيها مجموع المخرجات أقل من مجموع المدخلات (كما في الصورة) ، فسيتم إرسال الفرق إلى عنوان عامل المناجم الذي كتب معاملتك في المربع.
رسوم
هذا هو الفرق بين مجموع المدخلات ومجموع المخرجات التي تسمى "
transaction fee
" ،
transaction fee
. هذا هو ثاني أهم مصدر للدخل للعاملين في المناجم ، والوقت الذي يستغرقه لإدراج المعاملة في blockchain يعتمد عليها. ويرجع ذلك إلى حقيقة أن كل عامل منجم لديه مجموعة معينة من المعاملات التي لم يتم التحقق منها والتي تدعي أنها في الكتلة ، وكقاعدة عامة ، فإن عامل المنجم يقوم ببساطة بفرزها بترتيب تنازلي ، وبالتالي زيادة أرباحهم. لذلك ، كلما ارتفعت العمولة ، كلما كنت في قائمة الانتظار وأسرع دفعتك.
يوصف العرض العام للصفقة في
المواصفات الرسمية للبروتوكول ، وفيما يلي إحدى الحالات الأكثر شيوعًا.

previous output hash
- معرف (تجزئة) المعاملة التي نشير إليها.
previous output index
- بما أننا نحتاج إلى عدم الإشارة إلى المعاملة نفسها ، ولكن إلى أحد مخرجاتها ، فإننا في هذه المعلمة نشير إلى أي ناتج معين يهمنا. يبدأ الترقيم من نقطة الصفر.
value
- مقدار Satoshi (
1/100000000
BTC) المرسلة إلى المخرج. يتم تسجيله في شكل endian قليلاً ، أي
62 64 01 00 00 00 00 00
- هو
0x016462
أو
0.00091234 BTC
.
نادراً ما يتم استخدام
block lock time
ومعلمات
sequence
في الممارسة العملية. نحن لسنا مهتمين بها ، لذلك سنحذف وصف الغرض منها.
ولكن على المعلمات مع كلمة
script
في العنوان نحن بالتفصيل أكثر.
سيناريو
تتمتع شبكة Bitcoin بآلية تعتمد على خوارزميات تشفير باستخدام مفتاح عمومي يسمح لك بإنشاء نظام يستطيع فقط فيه مالك المفتاح استخدام العملات المرتبطة بالعنوان الذي تم الحصول عليه من هذا المفتاح. سنكتشف كيف يتم تنفيذ هذا تحت غطاء محرك السيارة.
بادئ ذي بدء ، يوجد داخل Bitcoin لغة برمجة مكدسة بسيطة تسمى
Script
. هنا هو أبسط برنامج نصي:
2 3 OP_ADD 5 OP_EQUAL
تسمى كل تعليمات
opcode
، وهناك حوالي 80 منها إجمالاً ، توضح الصورة أدناه عملية تنفيذ البرنامج أعلاه.





في Bitcoin
Script
يتم استخدامه لتعيين شرط يمكن بموجبه إنفاق الإخراج ، وللتأكد من استيفاء الشرط. يتم تخزين الشرط (
locking script
) في المعاملة في حقل
scriptPubKey
لكل خروج. التأكيد على استيفاء الشرط (
unlocking script
) هو مكتوب في حقل
scriptSig
لكل إدخال.
للتحقق من الحق في استخدام الإخراج ، تحتاج إلى توصيل
unlocking script
locking script
وتشغيل البرنامج الناتج ككل. إذا بعد
TRUE
، تظل
TRUE
في مقدمة الحزمة ، فإن المعاملة صالحة.
الدفع إلى تجزئة المفتاح العام (P2PKH)
P2PKH
استخدام البرنامج النصي
P2PKH
في معظم المعاملات ، لذلك يجب أن تفهم كيف يعمل. هنا وجهة نظره العامة:

يُعرف هذا البرنامج النصي منذ ظهور Bitcoin ، ويقوم بتنفيذ المهمة المذكورة في بداية الفصل - للتأكد من أن مالك المفتاح فقط هو الذي يمكنه استخدام العملات المرتبطة بالعنوان الذي تم الحصول عليه من هذا المفتاح.
والفكرة هي هذه: دع صديقك
B
يمتلك زوجًا من المفاتيح -
P
(خاص) و
K
(عام). باستخدام وظيفة التجزئة ، يحصل على العنوان
A
من المفتاح العمومي ويخبره بالعنوان. بعد ذلك ، ترسل ، على سبيل المثال ،
1 BTC
لمعالجة
A
وكتابة ما يلي في حقل
locking script
:
فقط شخص يملك المفتاح الخاص للعنوان A
يمكنه أن ينفق هذه المعاملة. كدليل ، اكتب في unlocking script
، أولاً ، المفتاح العمومي K
، وثانياً ، توقيع المعاملة باستخدام المفتاح الخاص P
عندما يقرر
B
استخدام معاملتك كمدخلات ، فسيقوم بإنشائه ، على سبيل المثال ،
0.5 BTC
، وفي حقل
unlocking script
سيضع توقيع
PubK
مع المفتاح الخاص
P
-
sig
والمفتاح العام K -
PubK
.
فيما يلي عملية تنفيذ البرنامج المشترك:







كتل و blockchain
إذا كان blockchain بأكمله عبارة عن كتاب ، فيمكن عندئذٍ تمثيل الكتل الفردية كصفحات يتم تسجيل المعاملات عليها. كل كتلة "تشير" إلى الكتلة السابقة ، وهكذا حتى الكتلة الأولى (
genesis block
). هذا هو ما يخلق مثل هذه الميزة من blockchain كما ثبات. لا يمكنك أن تأخذ وتغيير كتلة
#123
بحيث لا يلاحظ أحد: تم تصميم blockchain بحيث يستتبع تغيير في كتلة
#124
، ثم
#125
وهلم جرا ، إلى الأعلى.
هيكل كتلة يشبه هذا:

المعلمات الستة الأولى (كلها باستثناء
txn_count
و
txns
) تشكل رأس الكتلة. تجزئة الرأس تسمى تجزئة الكتلة ؛ المعاملات نفسها لا تشارك مباشرة في التجزئة. تعد
merkle_root
مسؤولة عن
merkle_root
- إذا تم تبسيطها ، فهذا يمثل تجزئة لجميع المعاملات في الكتلة. يمكنك قراءة المزيد حول الخوارزمية لإنشاء شجرة Merkle هنا على هذا
الرابط .
ترتبط Nonce والبتات مباشرة بعملية ظهور الكتل - التعدين.
تعدين
التعدين هو عملية حاسمة لبيتكوين ، حيث تتكون من إنشاء كتل جديدة ومتابعة هدفين في آن واحد. الأول هو إنتاج عرض النقود. في كل مرة يقوم أحد عمال المناجم بإنشاء كتلة جديدة ، يكافأ على ذلك بعدد Nth من العملات المعدنية التي ينفقها في مكان ما ، وبالتالي إطلاق أموال جديدة في الشبكة.
الهدف الثاني ، والأهم من ذلك بكثير ، هو التحكم في الامتثال للقواعد على الشبكة. هذا هو عمال المناجم الذين يقومون بفحص البرامج النصية وإدخالات المعاملات قبل تضمينها في الكتلة.
أولئك الذين يرغبون في معرفة المزيد عن الأسس المالية لبيتكوين يمكنهم تقديم النصح
لهذه المقالة . لن أبدي الكثير من الاهتمام للجانب الأول من التعدين وأركز على المعاملات الثانية - التحقق من المعاملات وإطلاقها على الشبكة.
دليل على العمل
تتيح لك أن تكون منجم. لديك 10 معاملات تريد تضمينها في الكتلة. يمكنك التحقق من هذه المعاملات للتأكد من صحتها ، وتشكيل كتلة منها ، وتحديد 0 في حقل
nonce
والنظر في تجزئة الكتلة. ثم قم بتغيير
nonce
إلى 1 ، عد التجزئة مرة أخرى.
مهمتك هي العثور على
nonce
بحيث يكون تجزئة الكتلة (رقم 256 بت) أقل من رقم محدد مسبقًا
N
البحث عن مثل هذا التجزئة لا يمكن تحقيقه إلا من خلال القوة الغاشمة. لذلك ، كلما كنت تريد العثور على nonce بشكل أسرع ، زادت الطاقة التي ستحتاج إليها.
الرقم
N
هو بالضبط تلك المعلمة (وتسمى أيضًا
target
) ، والتي تقوم الشبكة بضبطها اعتمادًا على إجمالي طاقة عمال المناجم. إذا بدأت كتل الغد في الظهور ، بشكل نسبي ، كل ثلاث دقائق ، فسيتم تقليل
N
، وسيتطلب الأمر مزيدًا من الوقت للبحث عن nonce وستزيد مرة أخرى إلى 10 دقائق. والعكس صحيح.
هذه هي الطريقة التي تبدو بها خوارزمية إثبات العمل التي تقوم عليها Bitcoin والعديد من أشكال الحظر الأخرى. مع بساطة واضحة ، فإنه يحتوي على عدد من الخصائص المهمة:
- إنشاء كتلة جديدة مهمة صعبة حسابيًا. في الوقت نفسه ، يعد فحص الكتلة للتأكد من صحتها عملية بسيطة وفورية تقريبًا.
- تستغرق الشبكة بالكامل 10 دقائق لحساب كتلة جديدة (في المتوسط). يختلف الوقت المحدد لكل blockchain ، ولكن النقطة الأساسية هي أن متوسط الوقت تم ضبطه مسبقًا. علاوة على ذلك ، هذه المرة لا تعتمد على عدد المشاركين في الشبكة. حتى لو كان هناك يومًا ما سيكون هناك مائة مرة أكثر من عمال المناجم ، فإن الخوارزمية ستغير معالمها بحيث يصبح من الصعب العثور على
block time
مرة أخرى بالقرب من الوقت المحدد.
كما هو موضح أعلاه ، تأتي عملية التعدين للعثور على تجزئة كتلة أقل من رقم يسمى target
. في بنية الكتلة ، تتم كتابة هذا الرقم في حقل البتات. على سبيل المثال ، بالنسبة للكتلة #277316 target
كان #277316 target
1903a30c
.
كما هو موضح أعلاه ، تأتي عملية التعدين للعثور على تجزئة كتلة أقل من رقم يسمى
target
. في بنية الكتلة ، تتم كتابة هذا الرقم في حقل
bits
. على سبيل المثال ، بالنسبة للكتلة
#277316
كان
target
1903a30c
.
$ bitcoin-cli getblock 0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4 { "hash" : "0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4", "confirmations" : 35561, "size" : 218629, "height" : 277316, "version" : 2, "merkleroot" : "c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e", "tx" : ["d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f", ...], "time" : 1388185914, "nonce" : 924591752, "bits" : "1903a30c", // <-- "difficulty" : 1180923195.25802612, "chainwork" : "000000000000000000000000000000000000000000000934695e92aaf53afa1a", "previousblockhash" : "0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569", "nextblockhash" : "000000000000000010236c269dd6ed714dd5db39d36b33959079d78dfd431ba7" }
في
bits
في الحقيقة ، يتم كتابة رقمين في نفس الوقت: البايتة الأولى
0x19
هي الأس ، البايتات الثلاث المتبقية
0x03a30c
هي
0x03a30c
. للحصول على
target
من
bits
، تحتاج إلى استخدام الصيغة التالية:
target = mantissa * 2^(8 * (exponent - 3))
ولكن يتم
bits
في كل سجلات السجلات عبر الإنترنت ، مثل القاعدة ، على سبيل المثال ،
https://namecha.in/ - سجل حظر Namecoin.
ونعم ، نظرية كافية. كل ما تحدثنا عنه أعلاه عند تطبيقه على Bitcoin ينطبق بالتساوي على Namecoin - باستثناء الاختلافات الصغيرة ، والتي سنتحدث عنها في القسم التالي.
Namecoin
Namecoin عبارة عن
blockchain استنادًا إلى الخوارزميات
والكود المصدري لـ Bitcoin ، وتتمثل الفكرة الرئيسية في ذلك في استخدام نظام تسجيل المعاملات الموزع لإدارة نظام اسم المجال ، وهو تناظرية لنظام أسماء النطاقات التقليدي.
تقوم Namecoin بنسخ طرق Bitcoin الرئيسية (إثبات العمل ، وفاصل توليد الكتلة لمدة 10 دقائق) وتنسيقات البيانات ، باستثناء الإضافات الصغيرة ، والتي سنتحدث عنها لاحقًا.
مجالات Namecoin لها لاحقة .bit. لم يتم تخصيص هذه المنطقة بواسطة IANA ولم يتم تخصيصها لقائمة
مجالات الأغراض الخاصة . تستجيب خوادم DNS العادية عادةً لطلبات NXDOMAIN هذه. ولكن هناك بوابات من DNS إلى Namecoin (على سبيل المثال ،
OpenNIC ) ، والوكلاء العامون بدعم Namecoin ،
وملحقات المستعرض ، ومشروع
مفتوح المصدر يسمح لك ببدء تشغيل خادم DNS الخاص بك بدعم Namecoin.
لإدارة مجال بالاسم ، على سبيل المثال ،
facebook.bit
، يكفي تسجيل مفتاح
d/facebook
يتم استخدام البادئة
d/facebook
في Namecoin للنطاقات) وتحديد قيمتها. يستخدم تنسيق JSON لضبط القيم. يبدو أن الإدخال الذي يحدد دقة المجال على عنوان IP
1.2.3.4
كما يلي:
{"ip": ["1.2.3.4"]}
تقوم Namecoin بتخصيص الأسماء على أساس
من يأتي أولاً يخدم أولاً . حتى بالنسبة لمارك زوكربيرج نفسه ، سيكون من المستحيل تشفيرًا أخذ نطاق
facebook.bit
من المالك.
في الواقع ، لا شيء يقيد استخدام Namecoin لإدارة حزم اسم DNS فقط - عنوان IP. يمكن استخدام Namecoin (واستخدامه) كجدول موزع لتعيين مفاتيح عشوائية للقيم. لكننا سنركز بدقة على سيناريو استخدامه والذي يمثل فيه DNS بديلاً على blockchain.
إدارة المجال
يستخدم Namecoin معاملة لتخزين سجل مجال. وهي أن حقل
scriptPubKey
يحتوي على البرنامج هو شرط استخدام خروج المعاملة ، والذي
scriptPubKey
الكثير من الوقت في الفصل السابق. لإدارة السجلات ، قدمت Namecoin ثلاثة مشغلين جدد (بتعبير أدق ، أعادت تعريف المشغلين الحاليين):
- NAME_NEW
- NAME_FIRSTUPDATE
- NAME_UPDATE
يكون معناها واضحًا من الأسماء ، لكن مع ذلك سنحلل الغرض والشكل من استخدام كل منهم.
قد تلاحظ أن مشغل حذف أو إلغاء المجال مفقود. لتنظيف السجل من الأسماء غير المستخدمة ، يتم تضمين آلية في الشبكة تقوم تلقائيًا بإصدار اسم لم يتم تحديثه لـ 36000 قطعة (حوالي 250 يومًا).
NAME_NEW
الخطوة الأولى هي الإعلان عن نية تسجيل اسم جديد على الشبكة. للقيام بذلك ، ما عليك سوى إنشاء عملة خاصة (إخراج) تزن
0.01 NMC
على الأقل ، سيبدو
output script
كما يلي:
OP_NAMENEW <20 byte hash> OP_2DROP <lock script>
للتوضيح ، سأستخدم المعاملات التي أجراها ستيفن مورس
لتوضيح مقالته .
لذا ، إذا أردنا الإعلان عن تسجيل اسم
d/stephenmorse
، فعلينا القيام بما يلي:

بالنظر إلى المعاملة الناتجة ، يمكنك ملاحظة حقيقتين مهمتين. أولاً ، على الرغم من أن
output script
مكتوب بترميز Namecoin ، فإنه لا يزال صالحًا من وجهة نظر Bitcoin الأصلية. لقد اختار مبتكرو Namecoin بنجاح رموزًا لعملياتهم بحيث يتطابقون في Bitcoin مع العمليات المكافئة بشكل أساسي للكتابة إلى المكدس الثابت. يتوافق رمز
NAME_NEW (0x51)
مع
OP_1
، الذي
OP_1
في
OP_1
1. قصة مماثلة مع
NAME_FIRSTUPDATE
(
OP_2
أو
OP_2
، يضع 2) ومع
NAME_UPDATE
(
OP_3
أو
OP_3
، يضع 3). لذا فإن أول خطوتين من البرنامج النصي تضعان فقط قيمتين في الحزمة.
OP_2DROP
العملية التالية
OP_2DROP
إزالتها من المكدس ، بحيث يعمل المزيد من
P2PKH
"من نقطة الصفر". لذلك ، فإن جميع الحيل النصية التي غطينا في الفصل الخاص بـ Bitcoin تنطبق أيضًا على Namecoin ، على الرغم من إعادة تعريف بعض العمليات.
ثانياً ، المفاتيح التي تفتح عملة خاصة وتغيير مختلفة. على الرغم من أنه لا يوجد شيء تقني يمنعك من استخدام المفتاح نفسه بشكل متكرر ، إلا أنه من الممارسات الشائعة إنشاء مفتاح جديد لكل إيصال. يتم ذلك لتجعل من الصعب تحديد الارتباط بين المعاملات وزيادة مستوى إخفاء الهوية في الشبكة.
للوهلة الأولى ، يبدو غريباً أنه على عكس المنطق السليم ، من المستحيل أخذ وتسجيل اسم بالإضافة إلى عنوان IP على الفور. يتم ذلك حتى لا يتمكن أحد من اعتراض الاسم بمجرد رؤيته أنك تريد تسجيله (ثم إعادة بيعه لك).
على سبيل المثال ، يمكن لعمال المناجم ، الذين يقومون بتحليل معاملات غير مؤكدة (لم يتم تضمينها بعد في أي من الكتل) في الشبكة ، إنشاء معاملاتهم الخاصة لتسجيل نفس المجال وإدراجه (وليس معاملاتك) في المجموعة الخاصة بهم. لتنفيذ هذا الهجوم ، ليس من الضروري حتى إزالة الألغام. سيكون كافيا لوضع معاملتك على الشبكة مع رسوم كبيرة. لذلك ، تم تقديم عمليتين منفصلتين
NAME_NEW
و
NAME_FIRSTUPDATE
، ولا يمكن تنفيذ العملية الثانية إلا بواسطة الشخص الذي أجرى العملية الأولى ، وفقط بعد
NAME_NEW
إلى أي كتلة.
في الواقع ، هذا التقييد أكثر صرامة:
NAME_FIRSTUPDATE
ممكن في موعد لا يتجاوز 12
NAME_NEW
بعد
NAME_NEW
(أي حوالي ساعتين). لفهم السبب في أن الكتل الموجودة في هذا التقييد ليست 1 ، وليس 2 ، وليس 3 ، ولكن على وجه التحديد 12 ، سيتعين علينا التراجع قليلاً عن القصة الرئيسية ومعرفة ماهية
51% attack
fork
و
51% attack
.
شوكةتخيل أن عمال المناجم يبحثون عن كتلة
#123456
. وفي الوقت نفسه تقريبًا ، تم العثور عليه بشكل مستقل من قبل اثنين من عمال المناجم ، أحدهما يعيش في أستراليا والآخر في الولايات المتحدة. يبدأ كل واحد منهم بتشتيت نسخته من الكتلة على الشبكة ، ونتيجة لذلك يتبين أن نصف العالم لديه كتلة واحدة ، والآخر لديه آخر.

هل هذا ممكن؟ نعم هذا ممكن. علاوة على ذلك ، يحدث هذا في كثير من الأحيان. في هذه الحالة ، تستمر كل عقدة في الالتزام بالإصدار الخاص بها من blockchain حتى يجد شخص ما الكتلة التالية. افترض أن الكتلة الجديدة تستمر في الفرع الأخضر ، كما في الصورة أدناه. في هذه الحالة ، تتم مزامنة تلك العقد التي تلتزم بالنسخة الحمراء تلقائيًا باللون الأخضر ، لأن القاعدة تعمل في Bitcoin (وبالتالي ، في Namecoin): يعد الإصدار الأطول من blockchain صحيحًا. سيتم نسيان النسخة الحمراء من blockchain ، إلى جانب المكافآت لمن يجدونها.

بطبيعة الحال ، من الناحية النظرية ، في الخطوة الثانية ، يمكن للموقف أن يعيد نفسه وفي نفس الوقت باللون الأرجواني سيجدون حدا آخر سيواصل النسخة الحمراء من blockchain. وعلى الثالث ، وهلم جرا. لكن احتمال أن تكون الشوكة الأولى صغيرة إلى حد ما ، والثانية أقل ، وهكذا. أطول شوكة في تاريخ البيتكوين كانت
أربع كتل فقط. لذلك في مرحلة ما ، سينطلق أحد الفروع مع ذلك ، وستذهب الشبكة بالكامل إليها.
51 ٪ الهجومحقيقة أن السلسلة الأطول في blockchain هي المهيمنة تعتمد على هجوم يحمل الاسم 51٪.
تخيل أنك مخادع وشراء البضائع في
1000 BTC
في متجر. أنت توافق مع البائع وترسل له المال. يقوم البائع بالتحقق من blockchain ، ويرى أن مثل هذه المعاملة كانت بالفعل ، وقام بتمرير جميع الشيكات ، بل وصل إلى بعض المجموعات ، على سبيل المثال
#123
. بعد ذلك ، يذهب البائع إلى البريد ويرسل لك البضاعة.
في هذا الوقت ، تقوم بتشغيل مزرعة التعدين وبدء التعدين ، بدءًا من المربع
#122
. إذا كانت لديك طاقة كافية ، فيمكنك تجاوز باقي الشبكة والاعتماد على الأسرع في حظر
#124
، وبعد ذلك سيتحول العالم كله إلى إصدار blockchain الخاص بك. في الوقت نفسه ، لن تدرج معاملتك مقابل
1000 BTC
في أي من الكتل ، مما يعني أنه سيتم نسيانها إلى الأبد ، كما لو أنها لم تكن أبدًا. .
, . . 11
, , 6 , 0,1% , 10% . , . , Namecoin , 20% .
. , . ,
NAME_NEW
, 12 ,
NAME_FIRSTUPDATE
.
NAME_FIRSTUPDATE
الغرض من العملية NAME_FIRSTUPDATE
هو نشر الاسم الذي أعلنت عنه NAME_NEW
وتحديد قيمة له. للقيام بذلك ، أحتاج إلى بدء معاملة على الشبكة ، مدخلاتها هي العملة المميزة للغاية التي أنشأتها عند الإخراج NAME_NEW
. من أجل تأكيد الحق في استخدامه ، أقدم في نص الإدخال مفتاحي العام وتوقيع المعاملة NAME_NEW
التي أجراها مفتاح الزوج الخاص ، وفقًا تمامًا للنظام الذي درسناه في الفصل المتعلق P2PKH
.ستكون إحدى نتائج الصفقة عملة خاصة جديدة تزن ، مثل العملة السابقة ، وليس أقل من ذلك 0.01 NMC
. يجب أن يكون نص الإخراج الخاص بها كما يلي: OP_NAME_FIRSTUPDATE <Name> <Salt> <Value> OP_2DROP OP_2DROP <lock script>
Salt
هو الرقم العشوائي للغاية 0xd5eeb22ee8117f57
الذي أنشأناه في المرحلة الأولى من إعداد البرنامج النصي NAME_NEW
. Name
- هو d/stephenmorse
في عشري 0x642f7374657068656e6d6f727365
. يجب أن يحتويالحقل Value
على مصفوفة ترابطية تمثل القواعد التي سيتم بها حل الاسم. قائمة كاملة من المفاتيح والقواعد الممكنة لملئها هنا . في التقريب الأول ، هذا هو التماثلية لملف المنطقة. يظهر الرابط أعلاه تعيين كيانات Namecoin لكيانات DNS المألوفة. الأكثر شيوعًا منها هي ip ، مثال كان أعلى منه ، و ns ، الذي نستخدمه الآن.للإشارة إلى ما سيكون عليه خادم NS للمجال ، 1.2.3.4
سنضع قيمة في القيمة {“ns”:[“1.2.3.4”]}
، ولكن بالطبع ، ست عشرية - 0x7b226e73223a5b22312e322e332e34225d7d
.مثل آخر مرة ، أغلق العملة مع P2PKH
. في مثاله ، أنشأ ستيفن عمداً عملة معدنية في الخطوة NAME_NEW بوزن ليس بالضبط 0.01 NMC
، ولكن بهامش ، بحيث يكون هذا الهامش في الخطوة التالية كافياً لتكليف العمّال. في الحالة العامة ، سيكون للمعاملة مدخل إضافي واحد لضمان العمولة - ومخرج آخر للتسليم.نقوم بجمع كل شيء في معاملة ورميها في الشبكة .
عندما تدخل المعاملة في الحظر ، يقوم المضيفون بتحديث قيمة المفتاح d/stephenmorse
في {“ns”:[“1.2.3.4”]}
. جميع المتصفحات بدعم Namecoin ستحل النطاق والمجالات stephenmorse.bit
الفرعية لعناوين IP من خلال خادم DNS الموجود في 1.2.3.4
.NAME_UPDATE
يسمى "الجدول" مع المفاتيح ومعانيها ، والتي ذكرتها في نهاية القسم الأخير ، فعليًا UTXO set (unspent transaction output)
. نظرًا لأنه من الأهمية بمكان أن تمنع الشبكة الإنفاق المتكرر للأموال ، قبل إضافة معاملة إلى الكتلة ، يتحقق عامل التعدين لمعرفة ما إذا كانت المدخلات المحددة مسبقًا في المعاملة قد تم استخدامها. لتسريع هذه العملية ، يتم تخزين جميع المخرجات غير المستخدمة في بنية بيانات منفصلة. هذه البنية غير موجودة على مستوى الشبكة ، ولكن يتم حسابها وتخزينها بواسطة كل عقدة محليًا.بعد أن أكملت المعاملة NAME_FIRSTUPDATE
، بلغ إخراج عملتي ذات الوزن 0.01 NMC
، والذي ترتبط به قيمة المفتاح d/stephenmorse
، الجدولUTXO
. إذا لم يتم إنفاق هذا الإخراج على 36000 قطعة (أي أكثر من 8 أشهر مع 10 دقائق لكل كتلة في المتوسط) ، فسيتم اعتبارها غير صالحة ، ويكون الاسم المقابل مجانيًا. يتم تعريفهذه الفترة من 36000 قطعة (وكذلك الحد الأدنى لقيمة عملة خاصة في 0.01 NMC
) بوضوح في بداية الشبكة ولم يتغير. لتمديد تسجيل الاسم ، وأي تغييرات على السجل أو نقله إلى مالك آخر ، يتم استخدام المعاملة NAME_UPDATE
.قواعد تكوين مثل هذه الصفقة لا تختلف عمليا عن تلك المذكورة أعلاه. يجب أن يكون دخل المعاملة هو إخراج العملة التي تم الحصول عليها في المعاملةNAME_FIRSTUPDATE
. هناك حاجة إلى مساهمة إضافية لضمان العمولة. من نتيجتي المعاملة ، أحدهما عملة جديدة ذات قيمة محدثة للاسم ، والثاني مصمم لنقل التغيير من العمولة. تنسيق إخراج البرنامج النصي للعملة هو: OP_NAME_UPDATE <Name> <Value> OP_2DROP OP_DROP <lock script>
كما في الحالة السابقة ، Name
هذا هو d/stephenmorse
و Value
- JSON بقيمة ، سواء في الست عشري. أغلق المخرج باستخدام P2PKH ورمي المعاملة في الشبكة .
بشكل عام ، هذا هو كل شيء تقريبًا أردت أن أخبره عن إدارة الاسم في Namecoin. كل ما تبقى هو قول بضع كلمات حول تكاليف امتلاك المجال.التكاليف
دعنا نحسب مقدار Dot-Bit
تكاليف محتوى الاسم في (اسم منطقة DNS .bit ، التي تعمل على أساس Namecoin) في العملة المشفرة ، وترجمة الأرقام إلى عملة مميتة ، قابلة للمقارنة بتكلفة مجال DNS "الطبيعي".لذلك ، كما يتضح من القسم السابق ، بالنسبة للمعاملة ، ستكون NAME_NEW
تكاليف مالك النطاق هي 0.01 NMC
إنشاء عملة معدنية يتم إرفاق المنطقة بها ، بالإضافة إلى عمولة عامل المناجم. بالنسبة للمعاملة ، NAME_FIRSTUPDATE
يتم إنشاء عملة جديدة على حساب العملة القديمة ، وبالإضافة إلى ذلك يدفع المالك العمولة فقط. بعد حوالي 8 أشهر ، سيتعين على المالك إكمال المعاملة NAME_UPDATE
للاحتفاظ بالاسم المسجل. وهذا هو حيث التكاليف المطلوبة لنهاية السنة الأولى.معظم المقالات حول Namecoin (بما في ذلك المقال الذي سبق الاستشهاد به من قبل ستيفن مورس)) تستند إلى بيانات من السنوات الأولى لوجود الشبكة وتدعي أن عمولة المنجم هي 0.005 NMC. ولكن منذ ذلك الحين، انخفض متوسط قيمة العمولة تدريجيا، وفي بداية 2019 هو حول 0.0003 NMC. على العكس من ذلك ، عاد سعر صرف NMC مقابل الدولار الأمريكي ، بعد أن خضع لعدة عمليات صعود ، إلى مستوى عام 2015 ويبلغ حوالي 0.7 دولار عن 1 NMC. من السهل حساب أن النطاق في منطقة .bit في السنة الأولى سيكلف المالك من 0.0109 NMC أو 0.00763 دولار. ربما سيكون من الأسهل بالنسبة لشخص ما أن يتذكر تناظرية تقريبية لهذا المبلغ بالعملة الروسية - 50 كوبيل.حسنًا ، هذا هو الحد الأدنى الذي يطابق سيناريو شراء اسم للاستخدام المستقبلي أو السطو الإلكتروني. ماذا عن الحد الأعلى؟ نظرًا لأن الإدخال من كل معاملة تقوم بتحديث المنطقة يجب أن يكون عملة معدنية من إحدى الكتل السابقة ، فإن الحد الأقصى النظري لتردد تحديث الاسم يساوي تكرار ظهور كتل جديدة. مع الإشارة إلى أن متوسط قيمة هذه القيمة قد تم تعيينه في بداية الشبكة وحوالي 10 دقائق ، يمكن تقدير أن الحد الأعلى لتكلفة الحفاظ على المجال سيكون 15.7744 NMC أو ما يزيد قليلاً عن 11 دولارًا.كما ترون ، فإن مثل هذا السيناريو الرائع المتمثل في استخدام اسم في Namecoin بتكلفة يعادل تقريبا السنة الأولى من امتلاك مجال منتظم في منطقة .com الأكثر شعبية. إذا قارنا سيناريو أكثر واقعية بتحديث في المتوسط مرة واحدة يوميًا ، فستكلف الاسم في منطقة .bit حوالي 8 سنتات في العام ، وهو أرخص بكثير من العروض الأكثر فائدة في DNS التقليدي ، والتي لا تقل عن دولار واحد. في سيناريو الاستخدام قصير المدى للمجال (من عدة ساعات إلى شهر) ، سيكون الفرق لصالح Namecoin بالفعل أمرين من حيث الحجم.مع الأخذ في الاعتبار الجاذبية المالية للخدمة ، فضلاً عن عدم الكشف عن هويتك لمالك النطاق ، بما في ذلك عدم وجود "مسار نقدي" تقليدي لنظام أسماء النطاقات العادي ، يصبح من الواضح لماذا أصبحت ناميكوين شبكة شائعة لأصحاب الخدمة مع زيادة خطر قطع الاتصال أو الحظر ، وخاصة شبكات الروبوتات.شبكات في ناميكوين
في الواقع ، حقيقة أن مشغلي الروبوتات بدأوا في استخدام إخفاء الهوية Dot-Bit
لحماية خوادم C&C الخاصة بهم ليست مفاجئة. شيء آخر هو أكثر إثارة للاهتمام - كم من الوقت لا تزال الروبوتات في .bit نشطة.يتم سحب مجالات C&C المسجلة في مناطق DNS "الطبيعية" عاجلاً أو آجلاً من المالك ، مما يفرض على المشغل أن يدفع مقابل تسجيل اسم جديد وإطلاق تجميع بوت جديد على الشبكة مع خادم إدارة جديد. زادت الاستحالة الأساسية لإزالة مجال في منطقة .bit من عمر الروبوتات بأوامر من حيث الحجم.خذ على سبيل المثال pationare.bit
المجال المسجل في ديسمبر 2016. كان يستخدم للسيطرة على الروبوتات Chthronic
(توزيع طروادة المصرفية التي بنيت على أساس ZeuS الشهيرة). حملة التوزيعChthronic
كان مرتبطًا باستخدام حزمة استغلال RIG وقد تم وصفها بالتفصيل من قبل العديد من الباحثين (على سبيل المثال ، البرمجيات الخبيثة- analysis.net ) في نهاية عام 2016 والنصف الأول من عام 2017.يمكن افتراض أن هذا الروبوتات تم تدميره منذ فترة طويلة. ولكن لا - بعد مرور أكثر من عامين على الإطلاق ، لا يزال مجال C&C الخاص بشبكة الروبوتات وشبكتها نشطًا. كما يتبين من لقطة الشاشة أدناه ، تم إجراء التحديث الأخير في ديسمبر 2018.
يبدو مغريا ، أليس كذلك؟ نظرًا لأن اسم DNS لخادم الإدارة لا يزال على حاله ، فليست هناك حاجة إلى تحديث رمز bot بشكل متكرر وإعادة تشغيل حملة التوزيع. لا تزال هناك سوى تكلفة تغيير الاستضافة بعد حظر عنوان IP ، ولكن يمكن أيضًا تخفيض هذه التكاليف باستخدام خوادم الويب التي تم الاستيلاء عليها كوكلاء ، والتي تكلف قذائفها أقل من دولار.من ناحية أخرى ، فإن جميع المعاملات في blockchain متاحة للجمهور لأي مشارك. كما ناقشنا بالتفصيل في الفصول السابقة ، لا تختفي العملات المعدنية في Namecoin بدون أثر ، مما يعني أنه يمكننا تتبع إعادة توزيعها بين العناوين. ومع معرفة القواعد والقيود ، مع الأخذ في الاعتبار المعاملات التي يتم تشكيلها في Namecoin ، يمكننا أن نجد أنماط ذات مغزى تكون فيها الإدارة الموحدة لبعض العناوين المشاركة في المعاملة واضحة. في هذه الحالة ، سيكون للنطاقات المدفوعة بالعملات المعدنية من هذه العناوين مالك مشترك - المجموعة التي نديرها ، والتي تتحكم في الروبوتات.سوف نطور هذه الفكرة أكثر.مخطط مجموعة IOC العامة
دعنا نصف مخطط البحث العام باستخدام مثال الروبوتات الحقيقي لمجموعة RTM. سوف نبني على هذه العينة ، التي تم تحديدها على أنها Win32/Spy.RTM.N
.
كما ترى من لقطة الشاشة أعلاه ، بعد البدء ، تحاول الحصول على عنوان IP الخاص بالاسم stat-counter-4.bit
. نحصل على معلومات حول تاريخ المعاملة لهذا الاسم في Namecoin.
معرف المعاملة التي أنشأت هذا النطاق ، نحصل من خلال النقر على رابط العملية NAME_NEW. من الواضح أن عنوان الإدخال الخاص بهذه المعاملة ، والذي تم إنشاء النطاق منه ، تتم إدارته بواسطة مجموعة الاهتمام لنا. وسيكون مجموعة أولية من البيانات: N3KPt8py24EAsAiKquyFgoKGyTYeR5Tmry
.
استنادًا إلى مجموعة البيانات الأولية ، نلتف بشكل متكرر حول blockchain ، ونتحرك في اتجاه نموها (الحركة الصعودية ، أو حركة المنبع). في بداية كل خطوة ، نحصل على معاملة ، عملة معينة في مدخلاتها تخص الشخص الذي يهمنا. في الخطوة الأولى ، نتحقق من المعاملة من مجموعة البيانات الأولية ، مالك القطع النقدية التي نعرفها مسبقاً.يتم فحص المعاملة للتأكد من امتثالها لقواعد مجريات الأمور (سنقوم بصياغتها أدناه) ، والتي تضمن أن عملة معينة (أو عملات معدنية) عند الخروج من الصفقة تنتمي إلى نفس الشخص مثل عملة الإدخال المعروفة. إذا كانت المعاملة المعنية تفي بواحد أو أكثر من الاستدلال ، فسوف تشير العملات المعدنية الموجهة إلى اتجاه الحركة الإضافية. ستكون المعاملة التي تنفق العملة التوجيهية هي الخطوة التالية في التكرار.في كل خطوة من خطوات التكرار ، نقوم بتجديد قائمة المجالات التي شاركت في المعاملات وقائمة عناوين IP التي تم حل هذه المجالات. هذه هي المعرفات التاريخية للحل الوسط (IOC) ، والتي يمكن استخدامها لأطباء الشرع ، وكذلك لتحديد التكتيكات وأساليب التجميع.تتوقف الحركة إذا كانت المعاملة المعنية لا تفي بأي من الاستدلال. هذا يعني أنه لا يمكننا أن نقول على وجه اليقين أن أي من مخرجات المعاملة المعنية يخضع لسيطرة الشخص الذي يهمنا.الموقف الآخر الذي يوقف الحركة هو عدم وجود معاملات من عنوان المخرجات. سنقوم بحفظ هذه العناوين في قائمة منفصلة من العملات غير المنفقة (UTXO). أنها تمثل أكبر قيمة في الدراسة بأكملها. نظرًا لأننا واثقون من أن هذه العناوين تتم إدارتها بواسطة الشخص الذي يهمنا ، فإن أي معاملة مستقبلية تستخدم هذه العناوين ستنشئ IOC جديدًا لم يكن معروفًا من قبل - اسم المجال أو عنوان IP - الذي لم يستخدمه التجميع بعد. ولكن مع احتمال كبير سيكون قريبا.لتخطى blockchain ، من المريح تصديره إلى قاعدة البيانات. لهذا الغرض ، يمكنك استخدام ، على سبيل المثال ، الأداة المساعدة المعدلة لمصانع الصدأ المعدلة ، والتي قمنا بتحسين الدعم لـ Namecoin عن طريق إضافة التعرف على العمليات NAME_*
، وهياكل البيانات Auxiliary Proof-of-Work
وتوسيع تنسيق التصدير.يرد أدناه رمز Python الزائف للحركة الصعودية. فيما يلي ، من المفترض أن يتم تخزين بيانات المعاملة blockchain في MongoDB. start = "37d40bc2f3ca7415908dc9e276593b50d3120158cd540cb088246f2e2cf88b16" tx = namecoin.transactions.find_one({"id": start}) def upstream_movement(tx): global names global IPs global utxo global known_addresses heuristic_result = upstream_heuristic_test(tx) if heuristic_result and heuristic_result.guiding_outs: if tx.has_name_op(): names.add(tx.name_op.name) for ip_address in tx.name_op.get_ip(): IPs.add(ip_address) for guiding_out in heuristic_result.guiding_outs: known_addresses.add(guiding_out.address) tx = namecoin.transactions.find_one({"in.id": guiding_out.id}) if tx: upstream_movement(tx) else: utxo.add(guiding_out)
الجزء الثاني من تجاوز blockchain هو الحركة ضد نمو blockchain (الحركة الهبوطية ، أو حركة المصب). بشكل عام ، لا تختلف خوارزمية الحركة الهبوطية عن الخوارزمية الصعودية. تبدأ الحركة بمعاملة من مجموعة البيانات الأصلية. في كل خطوة ، يتم التحقق من المعاملة من أجل الامتثال للقواعد الإرشادية (بشكل عام ، تختلف عن قواعد الحركة الصعودية). والفرق الوحيد هو أن العملة ، التي تُعرف عضويتها مسبقًا ، تكون في نهاية المعاملة ، ويضمن الاستدلال أن الشخص نفسه لديه عملة واحدة أو أكثر عند المدخل.تتوقف الحركة الهبوطية أيضًا إذا كانت المعاملة الحالية لا تفي بأي من الاستدلال. على عكس الحركة الصعودية ، لا يمكننا أن نلتقي بالعملات المعدنية غير المنفقة بين الأدلة ، ولن يعمل هذا الخيار للخروج من العودية في الحركة الهبوطية. ولكن ، كما هو الحال مع الحركة الصعودية ، نقوم بتجديد كل من قائمة الأسماء وقائمة عناوين IP.يبدو رمز Python الزائف للحركة الهبوطية كما يلي: start = "37d40bc2f3ca7415908dc9e276593b50d3120158cd540cb088246f2e2cf88b16" tx = namecoin.transactions.find_one({"id": start}) def downstream_movement(tx): global names global IPs global utxo global known_addresses heristic_result = downstream_heuristic_test(tx) if heuristic_result and heuristic_result.guiding_ins: if tx.has_name_op(): names.add(tx.name_op.name) for ip_address in tx.name_op.get_ip(): IPs.add(ip_address) for guiding_in in heuristic_result.guiding_ins: known_addresses.add(guiding_in.address) tx = namecoin.transactions.find_one({"out.id": guiding_in.id}) if tx: downstream_movement(tx)
الآن النظر في القواعد الإرشادية التي سنستخدمها عند التحرك على طول blockchain.قواعد ارشادية
التغيير المشترك
دعنا ننظر مرة أخرى إلى المعاملة ، حيث يتم إعطاء لقطة شاشة أعلاه. يتم إرسال عنوان N3KPt8py24EAsAiKquyFgoKGyTYeR5Tmry
يحتوي على أموال لإنشاء اسم جديد إلى إدخال المعاملة . للمعاملات NAME_FIRSTUPDATE
و NAME_UPDATE
عند مدخل سوف يكون عنوانين - عملة خاصة مع المنطقة من المعاملة السابقة للمجال وأموال إضافية لتغطية عمولة.سألاحظ على الفور أنه في سياق المعاملات ، سنتحدث عن كل من العملات المعدنية والعناوين. على الرغم من حقيقة أن هذه المفاهيم في بعض الأعمال تعتبر متكافئة تقريبًا ، من المهم بالنسبة لنا أن نشير بوضوح إلى الفرق بين هذه المصطلحات ، لأننا خلال الدراسة سوف نستخلص استنتاجات حول كل من العملات المعدنية والعناوين.عندما نقول "عملة" ، فإننا نعني رصيدًا إيجابيًا تم تشكيله كإخراج معاملة. يتم تحديد هذه العملة من خلال رقم المعاملة التي تم إنشاؤها ومؤشر الخروج. على سبيل المثال ، العملة المعدنية عند إدخال المعاملة المذكورة أعلاه لها معرف 5778be8e1901e9931e9b41a128a0b7f963e6e1ae72e461df2cba26e6279d433a:1
، حيث تم تشكيلها كمخرج (مع الفهرس 1) للمعاملة 5778be8e1901e9931e9b41a128a0b7f963e6e1ae72e461df2cba26e6279d433a
.عملة خاصة ، كما كان من قبل ، سوف ندعو عملة ذات قيمة اسمية ب 0.01 NMC
، locking script
والتي تحتوي على العملية مع اسم المجال. درسنا بالتفصيل آلية تشكيل هذه العملات في قسم إدارة المجال. عملة عادية يجب أن نطلق عليها عملة ذات فئة تعسفية ، والتي لا ترتبط بها العملية مع المجال.الخاصية الرئيسية للعملات المعدنية هي ثباتها. يمكن أن تنفق أي عملة مرة واحدة وفقط في مجملها. وبالتالي ، يتم ذكر أي على شبكة Namecoin مرتين كحد أقصى: مرة واحدة عند الإنشاء ، ومرة ثانية في الإنفاق.عندما نقول "العنوان" ، فإننا نعني معرفًا يحدد زوج المفاتيح بشكل فريد يمكنه فتح برنامج قفل بتنسيق P2PKH
يغلق عملة معدنية موجودة عند إدخال أو إخراج معاملة. نظرًا لأن المفتاح المقابل للعنوان هو فقط الذي يمكنه إنفاق عملة معدنية ، فإن أقرب ما يشبه العالم المادي إلى العنوان هو المحفظة التي يتم تخزين العملات بها (والتي يتم إنفاقها منها).على الرغم من حقيقة أنه في Namecoin يستخدم العنوان أيضًا غالبًا مرتين فقط ، فإنه ليس من الضروري استلام واستهلاك عملة واحدة. حقائق إعادة استخدام العناوين ستساعدنا قليلاً في المستقبل.تحدثنا بمزيد من التفاصيل حول المدخلات والمخرجات والعناوين في الفصل الخاص بـ Bitcoin 201.لذلك ، يتم تشكيل عملتين في نهاية المعاملة. N2hgZoWaTKoJ7FPmLuytTow3XrCCfEj2ca
نفس العملة الخاصة ، التي تزن 0.01 NMC ، والتي يرتبط بها المجال ، ذهبت إلى العنوان . تم إرسال NKMMLwyMw4nwGuke6vd3AuDBMP18FWRaF1
عملة عادية مع التغيير إلى العنوان الثاني .هذا هو مخطط المعاملات الأكثر شيوعًا. لا تزال هناك خيارات عندما يكون هناك أكثر من عملة واحدة عند المدخل ، لكن الخاصية المشتركة بينهما هي أن العملة المتغيرة دائمًا هي نفسها تمامًا.يمكنك تخمين أن مثل هذه المعاملة تتوافق مع تحديث بسيط لمعلومات المجال. يتم الدفع مقابل التحديث باستخدام عملة واحدة (أقل عددًا من العملات) تخص شخصًا واحدًا. في الواقع ، نظرًا لأن المعاملة تحتوي دائمًا على مؤلف واحد فقط ، فيجب عليها إدارة جميع عناوين الإدخال. بدون هذا ، لن يكون قادرًا على إنشاء برنامج نصي لإلغاء القفل ، وهو أمر ضروري لاستخدام العملات من هذه المحفظة.حسنًا ، نظرًا لأنه يتم جمع كل التغييرات الناتجة عن هذه العملية بعملة واحدة ، فمن الواضح أن هذه العملة تنتمي إلى نفس شخص القطع النقدية عند المدخل.تم وصف مخطط مشابه لبيتكوين في هذا العمل ، حيث يطلق عليه one-time change
. وهو يعكس الطريقة التي تجري بها تطبيقات Bitcoin الأصلية المعاملات - bitcoind
وbitcoin-qt
. يتم استدعاء التطبيق لمرة واحدة (لمرة واحدة) بسبب ميزة أخرى لهذه التطبيقات. بشكل افتراضي ، يقومون بإنشاء عناوين جديدة للعملات المعدنية عند إخراج المعاملة التي تم إنشاؤها.لقد ورثت Namecoin ، إلى جانب قاعدة كود Bitcoin ، الجزء الأكبر من الشفرة لهذه التطبيقات ، والتي تسمى namecoind
و namecoin-qt
. فيما يتعلق بالعملات العادية ، يمكننا استخدام هذا الكشف عن مجريات الأمور بأمان دون أي تغييرات.تظهر إحصائيات إعادة استخدام العناوين لتخزين العملات الخاصة أن هذه القاعدة يتم مراعاتها أيضًا في معظم الحالات. إعادة استخدام هذه العناوين أمر نادر الحدوث. تستخدم العناوين أكثر من مرة ، حوالي 6 ٪ من المجموع ؛ أكثر من مرتين - حوالي 1 ٪. استنادًا إلى الغرض من Namecoin ، يبدو من المعقول افتراض أن معظم المعاملات مع العملات المعدنية الخاصة على الشبكة هي عمليات إنشاء وتحديث بسيطة ، لا يتغير خلالها مالك المجال. لذلك ، يمكننا القول أن مثل هذه العملية تتوافق مع سحب عملة خاصة لعنوان جديد لم يستخدم من قبل.الآن ، دعونا نلقي نظرة على مثال لمعاملة بعنوان مُعاد استخدامه لعملة إنتاج خاصة. للقيام بذلك ، خذ معاملة أخرى من مجموعة RTM -b3c7ce9ca3a689c6236b9d6df3c257c5fab6c3985187669ccf731ac42a127a11
.
تم استخدام العنوان NDpWDEx1mBkUYywqxDTAZZeGCfUV4GkVE8
الذي ذهبت إليه العملة الخاصة بالفعل في المعاملات السابقة.
كما ذكر سابقًا ، لا تؤدي البرامج النصية الافتراضية في تطبيقات العميل الأصلي لـ Namecoin إلى إعادة استخدام العنوان. لإرسال عملة خاصة إلى عنوان موجود ، سيحتاج المالك إلى بذل جهود منفصلة اختيارية ، ومعرفة وتوضيح عنوان الخروج بشكل صريح في مرحلة تشكيل المعاملة.لماذا قد يكون هذا مطلوبا؟ الإشارة الوحيدة للموقف الذي تم فيه تحديد عنوان الخروج يدويًا ، التقيت فقط في الإرشادات الخاصة بنقل المجال إلى مالك آخر.
يتم تأكيد التخمين إذا أخذنا في الاعتبار المصير الإضافي للعناوين عند الخروج من المعاملة المعنية. في الرسم البياني أدناه ، يتم تمييز هذه الصفقة بمعلم أخضر ساطع. يمكن ملاحظة أن المعاملة التالية 9e16f6be
في مجال stat-counter-4 تمت باستخدام عنوان نقدي NJ8xUePv
ليس له اتصال واضح بالعنوان المستخدم في المعاملة "الأصل". من الواضح ، تم نقل المجال إلى إدارة شخص آخر.
في الحالة العامة ، يمكن أن يكون هذا إما بيع مجال لمالك آخر لا يرتبط بأنشطة الشخص المعني ، أو بنقل مجال بين حسابات شخص واحد. الخيار الثاني هو البساطة والتكلفة المنخفضة لتسجيل نطاق جديد ، فضلاً عن قلة الاهتمام الواضح للمؤسسات وأصحاب العلامات التجارية بتسجيل النطاقات في منطقة .bit. لم نتمكن من التوصل إلى حافز مبرر على الأقل لشراء مجال ما ، لوحظ في نشاط ضار. لذلك ، نعتقد أنه على الرغم من إمكانية نقل النطاق إلى شخص آخر ، فإن المعاملات ذات العناوين القابلة لإعادة الاستخدام لسحب عملة خاصة تمثل إعادة ترتيب للأصول بين عدة حسابات تسيطر عليها مجموعة واحدة.نصوغ الحجج المذكورة أعلاه في شكل قاعدة ارشادية ، والتي سوف نسميها التغيير المشترك:, , , .
, , .
, , .
يظهر مخطط استخدام هذه القاعدة في الشكل. تيارات رمادية - عملات عادية ، خضراء - عملة خاصة. ستكون الأدلة هي جميع العملات من نهاية المعاملة مقابل العملة التي توصلنا إليها من خلال هذه المعاملة: جميع المخرجات للحركة الصعودية ، وجميع المدخلات للحركة الهبوطية.
نلاحظ العديد من ميزات هذا الكشف عن مجريات الأمور. أولاً ، ثنائية الاتجاه: إنها تعمل مع الحركة الصعودية ، عندما نعرف صاحب المدخل ، وللحركة الهابطة ، عندما نعرف صاحب إحدى القطع النقدية عند الخروج.ثانياً ، التوافر الاختياري لعملة خاصة: على الرغم من أن المعاملة في غيابها لا تتعلق بتحديث النطاق ، إلا أن المنطق المنطقي المذكور أعلاه بشأن مالك العملة العادية يظل ساريًا.سيبدو الرمز الزائف لاختبار معاملة من أجل الامتثال لقاعدة التغيير الشائعة كما يلي: def common_change(tx): result = {"guiding_outs": [], "guiding_ins": []} if len(tx.outs.money) != 1: return {} addr = tx.outs.money[0].address first_tx = namecoin.tx.find_one({"out.id": addr}, sort=[("block", 1)]) if first_tx.id != tx.id: return {} else: result["guiding_outs"] = tx.outs.all result["guiding_ins"] = tx.ins.all return result
الإنفاق المشترك
لدى مجريات الأمور المذكورة أعلاه خاصية مهمة أخرى ، بالإضافة إلى ثنائية الاتجاه. التغيير المشترك - مجريات الأمور "بدون ذاكرة" ؛ يتم تحديد نتيجة التحقق فقط بواسطة خصائص المعاملة المعنية ولا تعتمد على نتائج الاستدلال الأخرى والبيانات المتراكمة. لا غنى عن مثل هذا الاستدلال في التكرارات الأولى من اجتياز ، لملء الأولي لمجموعة من البيانات. من ناحية أخرى ، من السهل ملاحظة قيود تطبيقه. على سبيل المثال ، ستركز على معاملة تحتوي على ناتجين نقديين أو أكثر.كمثال على مثل هذه الصفقة ، والنظر في db4ff4082f39d0a501508706e627f26aa92712d27b4f633ded59917d201cfae5
. تتعلق هذه الصفقة بأنشطة المجموعة التي تدير شبكة Dimnie الروبوتات.
ذهبنا هذه الصفقة من خلال العنوانMy7Ap3nH5f4X6Us2KiUWisd77wRpMG1MDY
الذي تم استخدامه في معاملة CC السابقة كعنوان تسجيل الدخول. على الرغم من حقيقة أن موقفه من الشخص الذي تتم دراسته أمر لا شك فيه ، لا يمكننا أن نقول الشيء نفسه (وكذلك العكس) عن أي من المداخل والمخارج الأخرى. قد يكون هذا إعادة توزيع عملات معدنية بين عناوين المجموعة ، وفي هذه الحالة يتم التحكم في جميع العناوين من قبل الشخص الذي يهمنا. أم أنها ، ربما ، إعادة شحن من عناوين أي من البورصات التي تبيع الرموز المميزة لـ Namecoin. أو نقل من عضو آخر في الشبكة لا يرتبط بأنشطة الشخص قيد الدراسة. من المستحيل التوصل إلى استنتاج محدد بشأن سمات هذه الصفقة وحدها.النظر في العنوانN4XtLb7xpC4Zk72T8QcshKhTW17ZCyQ1j1
في مدخلات هذه الصفقة. لقد تم استخدام هذا العنوان من قبل ("سابقًا" للحركة الهبوطية تعني "في المستقبل" ، "في اتجاه نمو blockchain") عند إدخال معاملة CC 6bffc741eb66de074c09a380fb5e6bd13d4bd5205c36a76e3682674dba08461e
، مما يتيح لنا اعتبار هذا العنوان يديره شخص يهمنا. ونظرًا لأنه ، كما تم توضيحه بالفعل ، يتم التحكم في مفاتيح جميع العملات المعدنية عند إدخال المعاملة من قبل شخص واحد (لا يمكن أن يقال عن المخرجات) ، لدينا سبب للاعتقاد بأن جميع المدخلات الأخرى تنتمي أيضًا إلى مجموعة الاهتمام بالنسبة لنا.تبدو الحالة الصارمة للإنفاق المشترك في مجريات الأمور بسيطة للغاية:إذا كان معروفًا أن شخصًا واحدًا على الأقل من العناوين عند إدخال المعاملة يسيطر عليها ، فسيتم التحكم في جميع العناوين الأخرى عند إدخال هذه المعاملة من قبل نفس الشخص. العملات المعدنية في هذه المداخل تنتمي إلى نفس الشخص.
كما ترون ، هذا مجريات الأمور المنطقي فقط للحركة الهبوطية. عندما نتحرك في اتجاه نمو blockchain ، نأتي إلى الصفقة قيد الدراسة من خلال أحد المدخلات. في هذه الحالة ، يتم استيفاء شرط القاعدة تلقائيًا ، لكنه لا يقول أي شيء عن مخرجات المعاملة ولا يسمح لك بمواصلة التحرك في اتجاه المنبع. وبعبارة أخرى ، هذا هو ارشادي أحادي الاتجاه.الميزة الثانية من هذه مجريات الأمور ، والتي تجدر الإشارة إليها ، هي أننا استخدمنا أولاً البيانات المتراكمة نتيجة فحص المعاملات السابقة - قائمة بالعناوين التي يديرها الشخص قيد التحقيق. لهذا السبب ، لا يمكن استخدام هذا الكشف عن مجريات الأمور في حركة مستقلة ، دون أي مجريات الأمور الأساسية التي لا تعتمد على النتائج المتراكمة (مثل التغيير المشترك).سيبدو الرمز الزائف لاختبار معاملة للامتثال لقاعدة الإنفاق المشترك كما يلي: def common_spending(tx): result = { "guiding_ins": [] } for input in tx.get_ins(): if input.address in known_addresses: return {"guiding_ins": tx.ins.all} return {}
عنوان معروف
آخر إرشادي سنبحثه في إطار هذا القسم هو أبسط شيء على الإطلاق. هذا هو مجريات الأمور ثنائية الاتجاه التي يمكن استخدامها (لأنها ثنائية الاتجاه) لكل من الحركة الصعودية والهبوطية. تبدو الصيغة الصارمة لعنوان مجريات الأمور المعروفة للحركة الصعودية كما يلي:إذا كان من المعروف أن العنوان عند الإدخال (الإخراج) للمعاملة يتحكم فيه شخص معين ، فإن القطع النقدية المستلمة على هذا العنوان (التي تنفق من هذا العنوان) تنتمي إلى نفس الشخص.
على الرغم من أن مجريات الأمور تبدو وكأنها حقيقة صريحة ، إلا أن هذه القاعدة تساعد في العثور على الفروع والتقاطعات في تدفقات العملات وتضيف إمكانية الاتصال بشجرة المعاملة. بالإضافة إلى ذلك ، يتيح لك عدم إيقاف الحركة على المعاملات التي لا تندرج تحت عمليات الاستدلال الأخرى. مثال على ذلك هو معاملة شبكة 7a35b9cb0a16b3eba92781be014555eaa4255bd17655bb00f2b3f42c3950ac69
الروبوت Dimnie التي سبق ذكرها.
بعد أن وصلنا إليها في حركة تصاعدية ، لن نكون قادرين على المضي قدمًا في مساعدة التغيير المشترك ، لأن الناتج هو أكثر من عملة عادية واحدة. عند النظر في معاملة ، لا يمكننا تحديد عدد العملات في الإخراج التي تنتمي إلى نفس شخص العملة في الإدخال - سواء ، واحدة أو لا شيء على الإطلاق. استخدام عنوان مجريات الأمور المعروفة يسمح لك للمضي قدما بسبب حقيقة أن العنوانMwMdTb8WQvoRW9jEW5dHn9SkkCJTRn31wQ
كان متورطًا في معاملة CC cf7ac8986f9855246c6cf26df9a24aa5645cb9258bf787e034a33e75101ae1fc
التي أنشأت المجال الذي تحقق في وقت سابق في حركة المنبع d/sectools
.من أجل الاكتمال ، نعطي الكود الكاذب من عنوان مجريات الأمور المعروفة: def known_address(tx): result = { "guiding_outs": [], "guiding_ins": [] } for output in tx.get_outs(): if output.address in known_addresses: result["guiding_outs"].append(output) for input in tx.get_ins(): if input.address in known_addresses: result["guiding_ins"].append(input) return result
لذلك ، لدينا الآن كل من خوارزمية الالتفافية العامة والاستدلاليات اللازمة للتحرك على طول blockchain ، حتى نتمكن من وضعها معا للحصول على IOC قليلا من Namecoin.دعنا نذهب!
سنستعرض معاملات RTM مع الحركة الصعودية والهبوطية ، بدءًا من 37d40bc2f3ca7415908dc9e276593b50d3120158cd540cb088246f2e2cf88b16
. في سياق التقدم في blockchain ، سنجمع ليس فقط IOC ، ولكن أيضًا المعاملات نفسها التي ترضي الاستدلال. تتدفق العملات المعدنية بين المعاملات التي نتصورها باستخدام مخطط سانكي.الرسم التخطيطي الكامل أكبر من أن يتم عرضه بتنسيق هذا المستند ، لذلك سأقدم هنا فقط جزءًا منه ضروريًا للقصة الإضافية.
يتم تمييز مجموعة من العملات العادية باللون الرمادي. الألوان المتبقية تتوافق مع تدفقات العملات الخاصة. يتم تحديد لون منفصل لكل اسم. تتوافق المعالم البيضاء مع المعاملات التي تفي بالشروط الإرشادية. معالم حمراء زاهية على اليمين هي UTXO.يتم تمييز عنصر المخطط الذي أود لفت الانتباه إليه بعلامة زرقاء. هذا إدخال متدلي - عملة نشأت عند إدخال معاملة مرت عليها الخوارزمية على الحركة الصعودية ، لكن المعاملة التي أوجدت هذه العملة لم تلبيها.مدخلات التعلق هي علامات على أن الهيكل قيد الدراسة له فروع جانبية غير متصلة بالجذع الرئيسي الذي تتحرك عليه الخوارزمية. في الحالة الموضحة ، هذا حساب مستقل آخر. كما هو موضح في الرسم التوضيحي ، يبدأ استخدامه لدفع تكاليف التغييرات في المجالات التي نعرفها بالفعل. من هذه الحقيقة يمكننا أن نستنتج أن هذا الحساب يسيطر عليه أيضًا الشخص قيد التحقيق. للحصول على IOC المرتبطة بالعمليات على هذا الحساب حتى تظهر على الرسم البياني ، سنبدأ حركة هبوطية منفصلة ، نبدأ في معاملة مع إدخال متدلي.وبالمثل ، في الحركة الهبوطية ، قد تحدث مخارج متدلية. لكل منهم ، سنطلق حركة صعودية منفصلة تبدأ من المعاملة المقابلة.بالإضافة إلى معاملات المجموعة التي تتحكم في الروبوتات RTM ، درسنا أيضًا معاملات المجموعات التي تتحكم في شبكات الروبوتات Shifu و Dimnie و GandCrab. نتيجةً لذلك ، تم العثور على 164 نطاقًا تم تسجيلها لصالح هذه المجموعات و 277 عنوان IP مرتبطًا بهذه الأسماء. في وقت كتابة هذا التقرير ، من UTXO التي تم جمعها تنتمي إلى هذه المجموعات ، ظلت 39 قطعة نقدية سارية.وترد في الملحق أ قوائم IOC ، وكذلك عناوين Namecoin التي بقيت عليها العملات غير المستخدمة من المجموعات.استنتاج
يمثل اختبار الحياة الواقعية تحديًا لأي تقنية تقريبًا. بحلول منتصف العقد الأول من القرن العشرين ، أصبحت ويكيبيديا مصدرًا موثوقًا وموثوقًا للمعلومات ، بحيث أصبح من الممكن تغيير نصوص المقالات عن طريق تغيير نصوص المقالات ، والبدء في جني الأموال. تشتهر هذه الفترة من تاريخ الخدمة بحروبها المراجعة الهائلة - الاستخدام المكثف لآلية تصحيح المقالات وتراجع التعديلات من قبل العديد من الأطراف المتحاربة من أجل كسب النزاع حول محتوى المقال. تحولت صفحات ويكيبيديا إلى معرض دولي للغرور ، حيث أراد الجميع قول الكلمة الأخيرة حرفيًا.من ناحية ، بدأوا يخوضون حرب التعديلات ، ووضعوا قواعد خاصة تسمح ، في حالة وجود نزاع ، باستبعاد إمكانية تحرير المقالة مؤقتًا - حتى يجد المتحاورون في قسم "مناقشة" صياغة حل وسط. من ناحية أخرى ، أجبرت حرب التحرير ويكيبيديا على إطلاق آلية ديناميكية لإدارة موارد المسؤولين ، والتي سمحت لهم بالمشاركة بسرعة في حل النزاعات في المناطق الأكثر سخونة. علاوة على ذلك ، استفادت الموسوعة من انتباه الجمهور الذي لفتت إليه الاشتباكات حول المقالات الفردية من أجل جذب المزيد من المشاركين إلى تحرير هذه المقالات وتحقيق التغطية الأكثر شمولية وكاملة لموضوع معين.هل تستطيع نامكوين ، مثل ويكيبيديا ، أن تكبر وتواجه التحدي؟ انتظر وانظر.تتوفر جداول PS مع مؤشرات التسوية على GitHub .أرسلت بواسطة أليكسي غونشاروف ، مركز أمن خبراء حزب العمال