date: 2022-01-16T03:00:00Z
كيف يتم إنشاء محافظ LocalCryptos
4 دقيقة
محافظ LocalCryptos هي محافظ تشفير غير إحتجازية. على عكس التبادلات المركزية ، لا تعرف LocalCryptos المفاتيح الخاصة بالمحفظة ؛ نحن لا نتحمل مسؤولية العملات المشفرة للمستخدمين. يتم الوصول إلى المفاتيح السرية فقط عن طريق أجهزة المستخدم وتستخدم واجهة LocalCryptos واجهة برمجة تطبيقات تشفير الويب لتوقيع المعاملات رقميًا.
توضح هذه المقالة الفنية كيفية إنشاء هذه المفاتيح الخاصة باستخدام عملية اشتقاق مفتاح حتمية وكيفية تشفيرها.
إذا قمت مسبقًا بنسخ محفظة LocalCryptos احتياطيًا وتحتاج إلى استرداد عملتك المشفرة ، فيمكنك استخدام أداة LocalCryptos Wallet Backup Explorer . ما عليك سوى اتباع هذا الرابط وقراءة التعليمات.
المعيار الحالي (non-HD)
يتم تنظيم محافظ LocalCryptos بطريقة تختلف عن المحافظ الأخرى. المحافظ الحالية لا تتبع معيار الحتمية الهرمية hierarchical deterministic (HD) الذي تتوافق معه العديد من المحافظ الأخرى.
يعود قرار عدم تنفيذ تنسيق المحفظة بالـ HD إلى عام 2017 عندما كان LocalCryptos يُعرف باسم LocalEthereum ، وهو تطبيق تداول P2P يعمل على شبكة Ethereum. اخترنا استخدام نوع محفظة "أبسط '' في ذلك الوقت - عملية إنشاء مفاتيح حتمية ولكنها ليست حتمية هرمية HD - لأن المميزات التي توفرها محافظ BIP32-HD لم تكن مفيدة للمستخدمين الأوائل لـ LocalEthereum.
بعد إطلاق تداول Bitcoin P2P على LocalCryptos ، أدركنا أن قرار عدم استخدام تنسيق محفظة HD كان خطأ تصميميًا ، لأنه يعني أن النسخ الاحتياطية لمحفظة LocalCryptos ليست متوافقة بشكل مباشر مع محافظ رئيسية أخرى ، مما يؤدي إلى إجراء أطول للمستخدمين لاستعادة المفاتيح المخزنة في نسخة احتياطية والوصول إليها.
لدينا خطط للانتقال إلى تنسيق محفظة HD قياسي في المستقبل لتحسين قابلية الاستخدام. ومع ذلك ، نظرًا لأن العديد من المحافظ قد تم إنشاؤها بالفعل باستخدام مخططنا دون الإعتماد على الـHD ، فإن الانتقال إلى تنسيق مختلف يعد ترقية صعبة. عندما نجري هذه الترقية ، سنقوم بتحديث هذه المقالة.
يتمثل الاختلاف الأكثر أهمية بين المحفظة الحتمية الهرمية Hd ونظام المحفظة الحتمية غير الهرمي non-Hd الذي تستخدمه LocalCryptos في أن المحافظ الهرمية تستخدم نظام مفتاح عمومي رئيسي. يسمح المفتاح العمومي الرئيسي للمراقبين بحساب عناوين المحفظة الأخرى من خلال النظر إلى مفتاح عمومي واحد. في الحتمية التي تنفذها LocalCryptos ، لا يمكن حساب العناوين الأخرى من مفتاح عام واحد حيث لا توجد علاقة تشفير بين المفاتيح العامة.
في حين أن محافظ LocalCryptos ليست حتمية "هرمية" ، إلا أنها لا تزال حتمية. هذا يعني أن كل محفظة تتضمن عددًا لا نهائيًا تقريبًا من العناوين لأن كل مفتاح مشتق من مصدر واحد. ليست هناك حاجة لعمل نسخة احتياطية من كل عنوان على حدة.
تصعيد توليد المفاتيح
يحتوي كل عنوان في محفظة LocalCryptos على رقم فهرس معين يبدأ من الصفر. يُعرف رقم الفهرس هذا بالعامية باسم n
. لا يمكن تخطي أي مؤشرات.
تبدأ كل محفظة LocalCryptos بمصدر عشوائي مكونة من 32 بايت تُعرف باسم مفتاح سلسلة الفهرس الصفري (
chainKey <sub> 0 </sub> ).
يمكن استخدام المصدر لتحديد المفتاح الخاص للعنوان الأول للمحفظة (
العنوان <sub> 0 </sub> ) وأي عناوين لاحقة ، مما يجعل النظام محددًا محفظة نقود.
يمكن تحديد المفتاح الخاص لـ
العنوان <sub> n </sub> من
chainKey <sub> n </sub>
و
chainKey <sub> n </sub> يمكن تحديدها من
chainKey <sub> n-1 </sub>
. ومن ثم ، إذا كنت تعرف
chainKey <sub> n </sub> فيمكنك تحديد
العنوان <sub> m </sub >
، حيث يمثل m
أي رقم يقع بين n
وما لا نهاية.
بالنسبة لخوارزمية التصعيد البسيطة هذه ، نستخدم دالة تجزئة أحادية الاتجاه تسمى HMAC-SHA256. الحسابات كالتالي لكل مفتاح سلسلة فهرس n
:
n
- المفتاح الخاص لعنوان الفهرسة (
العنوان <sub> n </sub> ) هو
HMAC ‐ SHA256 (chainKey <sub> n </sub>، 0x0001)
.- مفتاح السلسلة التالي (
chainKey <sub> n + 1 </sub> ) هو
HMAC ‐ SHA256 (chainKey <sub> n </sub>، 0x02)
.
نظام التصعيد البسيط هذا موضح في الرسم البياني أدناه. تذكر أن كل سهم يمثل دالة تجزئة أحادية الاتجاه ؛ من المستحيل الرجوع إلى الخلف على طول أي سهم.
كما ترى من الرسم التوضيحي ، فإن الكشف عن المفتاح الخاص لعنوان واحد عن طريق الخطأ لن يؤثر على بقية المحفظة بسبب الطبيعة أحادية الاتجاه لعمليات اشتقاق المفتاح. بالإضافة إلى ذلك ، إذا كان شخص ما قادرًا على وضع يده على مفتاح سلسلة ، فسيكون قادرًا فقط على حساب العناوين "المستقبلية" ؛ لم يتمكنوا من جمع أي معلومات حول العناوين قبل ذلك.
تخزين المفاتيح
يتم تشفير مفاتيح السلسلة باستخدام AES ‐ 256 لمفتاح تشفير جذر الحساب. بمجرد إتمام التشفير، فإن النص المشفر يتم إرساله إلى LocalCryptos API للتوفر على المدى الطويل ، مما يتيح التزامن عبر الأجهزة .
يجب تشفير مفتاح السلسلة الأول فقط (
chainKey <sub> 0 </sub> ) عند إنشاء المحفظة لأول مرة ، ولكن حفظ المزيد من المفاتيح يعني ذلك يمكن محو مفاتيح السلسلة القديمة بأمان في المستقبل.
نظرًا لأنه يتم تشفير المفاتيح من جانب العميل قبل تحميلها ، لا يمكن لـ LocalCryptos الوصول إليها.
النسخ الاحتياطية للمحفظة
النسخ الاحتياطي لمحفظة LocalCryptos يعني ببساطة تصدير أقدم مفتاح سلسلة متاح. قد يبدو أحد الأمثلة على ملف النسخ الاحتياطي كما يلي:
{
"export": {
"version": "1.0",
"created_at": "2018-01-01"
},
"wallet": {
"id": "08ff9422-552e-4803-a808-8ebb054950f6",
"version": "1.0"
},
"first_address": {
"address": "0x153eac21fc4e66ede5fcae1c763e094dd8e96dc6",
"wallet_address_n": 0
},
"chain_private_key": "08ff942248034f6019cc63550f053300871b1f4ea18ef48035c3611cb9b25b4f"
}
الجزء المهم هو chain_private_key
، والذي يمكن استخدامه لحساب كل عنوان في المحفظة.
لاختبار تصعيد المفاتيح وحساب العناوين بشكل صحيح ، يجب أن يكون العنوان الأول في ملف النسخ الاحتياطي هو first_address → address
. رقم first_address → wallet_address_n
هو أقدم فهرس متاح في وقت النسخ الاحتياطي.
كيف يمكنني استعادة نسخة احتياطية لمحفظة LocalCryptos؟
يمكن لأي شخص استخدام أداة LocalCryptos Wallet Backup Explorer لفحص ملف النسخ الاحتياطي للمحفظة واستخراج المفاتيح الخاصة للعناوين الفردية. يمكن بعد ذلك استيراد هذه المفاتيح الخاصة بالعناوين إلى محافظ أخرى.
Author
Michael is the co-founder and technical lead of LocalCryptos, the largest non-custodial peer-to-peer digital currency marketplace. Peer-to-peer traders use LocalCryptos to buy and sell crypto using non-custodial wallets and a secure decentralized escrow system.
Australia