الأحد، 6 مايو 2018

توليد عنوان بيتكوين من المفتاح الخاص


<h1> إنشاء عنوان bitcoin من المفتاح الخاص </ h1>


الحصول على عبر متجر التطبيقات قراءة هذه المشاركة في التطبيق لدينا!


إنشاء عنوان Bitcoin من ECDSA Public Key.


أنا أكتب رمز بسيط في C ++ باستخدام OpenSSL لإنشاء عنوان بيتكوين صالح - زوج المفاتيح الخاصة.


إنني أستخدم هذا المقتطف لإنشاء مفتاح عام من مفتاح خاص على هيئة سداسية عشرية:


ما أريده هو تحويل هذا المفتاح العام إلى عنوان بيتكوين - ما هي أسرع طريقة لتحقيق ذلك؟ لا أعرف كيفية إنشاء RIPEMD160 من OpenEML's BIGNUM. أو ربما هناك حل آخر أفضل؟


بافتراض أن ما تفعله يستند إلى هذا التحويل:


سأصف ما يمكنك فعله برمز زائف:


أول استخراج س ، ص من المفتاح العام.


بعد ذلك ، يلزمك إجراء ملخص الرسائل عدة مرات ، بما في ذلك 3 sha256 و 1 ripemd160. في pseudo-code التالية سوف أريك كيف نفعل ripemd160. للقيام sha256 مع EVP_MD ، فقط استبدال EVP_ripemd160 () مع EVP_sha256 () ، وتحديث (إدخال إلى EVP_MD) رسالة الإدخال الخاصة بك مع واحد أو عدة EVP_DigestUpdate ().


أو أسهل طريقة ، استدعاء sha256 () و ripemd160 () مباشرة. ولكن تحتاج إلى إعداد رسالة الإدخال الخاصة بك قبل استدعاء وظائف التجزئة sha256 () أو ripemd160 ().


العنوان الثنائي 25 بايت هو نتيجة ripemd160 ، مع أول 4 بايت من المجموع الاختباري 32 بايت. تحتاج إلى إيجاد طريقة لتحويلها من Base 256 إلى Base 58. لا أعتقد أن OpenSSL يدعم ذلك.


مفتاح سري.


يمثل مفتاح خاص بيتكوين وهناك حاجة لتكون قادرة على إنفاق bitcoin وتوقيع المعاملات. راجع موقع Bitcoin Wiki الرسمي لمزيد من المعلومات حول المفاتيح الخاصة. إن PrivateKey في Bitcore هو كائن غير قابل للتغيير يحتوي على طرق للاستيراد والتصدير إلى مجموعة متنوعة من التنسيقات بما في ذلك تنسيق استيراد المحفظة.


استنبط مفتاح خاص.


فيما يلي كيفية إنشاء مفتاح خاص جديد. سيقوم بإنشاء رقم عشوائي جديد باستخدام window. crypto أو مكتبة التشفير Node. js.


لتصدير واستيراد مفتاح خاص ، يمكنك القيام بما يلي:


ملاحظة: يتضمن WIF (تنسيق استيراد المحفظة) معلومات حول الشبكة وإذا كان المفتاح العام المرتبط مضغوطًا أو غير مضغوط (وبالتالي سيتم إنشاء نفس عنوان بت كوين باستخدام هذا التنسيق).


لإنشاء عنوان أو مفتاح PublicKey من مفتاح خاص:


التحقق من صحة مفتاح خاص.


يبدو رمز تنفيذ عمليات التحقق هذه على النحو التالي:


مفتاح خاص جديد (بيانات ، شبكة)


Instantiate على PrivateKey من BN و Buffer و WIF.


إرجاع: PrivateKey - نسخة صالحة جديدة من مفتاح خاص.


privateKey. toObject ⇒ كائن.


إرجاع: كائن - تمثيل كائن عادي.


privateKey._classifyArguments (البيانات ، الشبكة) ⇒ Object.


مساعد داخلي لإنشاء كائن معلومات داخلي خاص من أنواع مختلفة من الوسائط التي تم تمريرها إلى المُنشئ.


privateKey. toString () ⇒ string.


سوف إخراج PrivateKey ترميز كسلسلة سداسية عشرية.


privateKey. toWIF () ⇒ string.


سيتم إخراج PrivateKey إلى سلسلة WIF.


الإرجاع: string - تمثيل WIP للمفتاح الخاص.


privateKey. toBigNumber () ⇒ BN.


سيعود المفتاح الخاص كمثال BN.


إرجاع: BN - A BN مثيل للمفتاح الخاص.


privateKey. toBuffer () ⇒ Buffer.


سيعود المفتاح الخاص كمخزن مؤقت BN.


الإرجاع: مخزن مؤقت - مخزن مؤقت للمفتاح الخاص.


privateKey. toPublicKey () ⇒ PublicKey.


سيعود المفتاح العام المقابل.


Returns: PublicKey - مفتاح عام يتم إنشاؤه من المفتاح الخاص.


privateKey. toAddress ([الشبكة]) ⇒ العنوان.


سيظهر عنوانًا للمفتاح الخاص.


الإرجاع: العنوان - عنوان تم إنشاؤه من المفتاح الخاص.


privateKey. inspect () ⇒ string.


سيتم إرجاع سلسلة تنسيق لوحدة التحكم.


عائدات: سلسلة - مفتاح خاص.


PrivateKey. fromString ⇒ PrivateKey.


Instantiate على PrivateKey من سلسلة WIF.


إرجاع: PrivateKey - نسخة صالحة جديدة من PrivateKey.


PrivateKey. fromBuffer (arg، network) ⇒ PrivateKey.


Instantiate على PrivateKey من المخزن مؤقت مع تمثيل DER أو WIF.


PrivateKey. fromObject (الكائنات)


Instantiate a PrivateKey من كائن جافا سكريبت عادي.


PrivateKey. fromRandom ([network]) ⇒ PrivateKey.


Instantiate على PrivateKey من وحدات البايت العشوائية.


إرجاع: PrivateKey - نسخة صالحة جديدة من PrivateKey.


PrivateKey. getValidationError (data، [network]) ⇒ null | خطأ.


تحقق مما إذا كان سيكون هناك أي أخطاء عند تهيئة مفتاح خاص.


عوائد: فارغة | خطأ - خطأ إذا كان موجودًا.


PrivateKey. isValid (البيانات ، [الشبكة]) ⇒ Boolean.


تحقق من صحة المعلمات.


الإرجاع: منطقي - إذا كان المفتاح الخاص سيكون صالحًا.


<h1> إنشاء عنوان bitcoin من المفتاح الخاص </ h1>


الحصول على عبر متجر التطبيقات قراءة هذه المشاركة في التطبيق لدينا!


كيف يمكنني الحصول على عنوان Bitcoin العام من مفتاح خاص معين في تنسيق استيراد المحفظة في وضع عدم الاتصال؟


لقد صنعت محافظ ورقية وأرسل باستمرار ما بىتكوينات أحصل عليها. أنا بجنون العظمة التي أرسلتها bitcoins إلى عناوين بيتكوين ورقة حيث بطريقة ما في وقت ما حصلت على مفاتيحي الشخصية المحفوظة فاسدة. لذا من وقت لآخر أريد تشغيل برنامج نصي أو python أو أي شيء آخر ، للتحقق مما إذا كانت المفاتيح الخاصة بي تتوافق مع العنوان العام الذي أرسل إليه bitcoins. أريد حلًا في وضع عدم الاتصال حتى لا تفعل أشياء مثل عميل satoshi. هل هناك نص صغير كتبه شخص ما يمكنه حل هذا؟


بالنسبة إلى بايثون ، numtowif () أدناه ، من مشاركة بواسطة flyfly المستخدم المنتدى ، يفعل ذلك أيضًا:


أيضا ، عميل Armory لديه بعض C ++ التي يمكن تجميعها والوصول إليها بسهولة من Python الذي يوفر هذا.


سأفحص مكتبة Pybitcoin python (https://github. com/blockstack/pybitcoin أو "pip pybitcoin install").


من السهل جدًا الحصول على العنوان من مفتاح WIF الخاص:


يمكنك أيضًا اشتقاق كائن مفتاح خاص من تمثيل hex الخام:


ملاحظة تعمل هذه المكتبة أيضًا مع Litecoin و Namecoin ومجموعة من العملات الأخرى.


الكشف: أنا واحد من المبدعين.


إذا فهمت مشكلتك بشكل صحيح وكنت تريد فقط حساب عنوان مفتاح خاص معين ، فيمكنك استخدام brainwallet. org لذلك. الموقع على أساس جافا سكريبت بحيث يمكنك فقط تحميل الموقع وفصله من الإنترنت. إذا كنت تريده أكثر أمانًا ، يمكنك تنزيل شفرة المصدر وفتح موقع الويب محليًا على جهاز بلا اتصال.


لدى Brainwallet. org أدوات معالجة مفيدة قليلة جدًا.


انه بسيط جدا.


فقط تحميل صفحة bitaddress. org صفحة (للأمن ، والحكمة الأخرى على الإنترنت ستعمل أيضا ، ولكن يمكن أن يكون هناك مخاطر أمنية) وانقر على علامة التبويب تفاصيل المحفظة.


أدخل مفتاحك الخاص وسوف تحصل على مفتاحك العام المقابل.


مرتجلاً ، يبدو أن pycoin أكثر نشاطًا من البيبيت كوين. لذا سأضع رمز Keir Finlow-Bates من تعليق أعلاه في إجابة بحد ذاتها:


الخلفية الفنية لعناوين Bitcoin الإصدار 1.


قد تكون هذه المقالة تقنية للغاية بالنسبة لبعض المستخدمين. قد تكون المقالة الأساسية في عناوين Bitcoin أكثر ملاءمة.


عنوان Bitcoin هو تجزئة 160 بت للجزء العام من مفتاح المفاتيح العام / الخاص ECDSA. باستخدام تشفير المفتاح العام ، يمكنك "تسجيل" البيانات باستخدام مفتاحك الخاص ويمكن لأي شخص يعرف مفتاحك العام التحقق من صحة التوقيع.


يتم إنشاء مفتاح جديد لكل عنوان استقبال (مع أحدث محولات HD ، يتم ذلك بشكل حتمى). يتم تخزين المفتاح العام والمفاتيح الخاصة المقترنة به (أو البذور اللازمة لتوليدها) في ملف بيانات المحفظة. هذا هو الملف الوحيد الذي يحتاجه المستخدمون للنسخ الاحتياطي. تتطلب المعاملة "send" إلى عنوان Bitcoin محدد أن تعرف المحفظة الخاصة المفتاح الخاص بتنفيذها. وهذا يعني ضمناً أنه إذا قمت بإنشاء عنوان واستلمت عملات معدنية إلى هذا العنوان ، فقم باستعادة المحفظة من نسخة احتياطية سابقة ، قبل أن يتم إنشاء العنوان ، ثم يتم فقدان القطع النقدية المستلمة بهذا العنوان ؛ هذه ليست مشكلة لمحافظ HD حيث يتم إنشاء جميع العناوين من بذرة واحدة. تتم إضافة العناوين إلى تجمع مفتاح العنوان قبل استخدامها لتلقي العملات المعدنية. إذا فقدت محفظتك بالكامل ، فستفقد جميع عملاتك ولا يمكن استردادها.


يسمح لك Bitcoin بإنشاء العديد من العناوين كما تريد ، واستخدام عنوان جديد لكل معاملة. لا يوجد "عنوان رئيسي": منطقة "عنوان Bitcoin الخاص بك" في بعض UIs المحفظة ليس له أهمية خاصة. انها فقط هناك لراحتك ، ويجب أن تتغير تلقائيا عند استخدامها.


تحتوي عناوين Bitcoin على رمز تحقق مضمن ، لذا لا يمكن عمومًا إرسال Bitcoins إلى عنوان مكتوب. ومع ذلك ، إذا كان العنوان جيدًا ولكن لم يمتلكه أحد (أو فقد المالك محفظته.) ، فستفقد أي عملات مرسلة إلى ذلك العنوان إلى الأبد.


يتم تحويل قيم التجزئة وبيانات المجموع الاختباري إلى تمثيل أبجدي رقمي باستخدام نظام مخصص: نظام ترميز Base58Check. تحت Base58Check ، يمكن أن تحتوي العناوين على جميع الأحرف الأبجدية الرقمية باستثناء 0 و O و I و l. تبدأ العناوين العادية حاليًا دائمًا بـ 1 (العناوين من تجزئة النص البرمجي تستخدم 3) ، على الرغم من أن هذا قد يتغير في إصدار مستقبلي. تبدأ عناوين Testnet عادةً بـ m أو n. يمكن أن يكون طول العناوين الرئيسية 25-34 حرفًا ، ويمكن أن تكون عناوين testnet 26-34 حرفًا في الطول. معظم العناوين هي 33 أو 34 حرفًا.


اصطدامات (عدم وجودها)


بما أن عناوين البت كوين هي أرقام عشوائية بشكل أساسي ، فمن الممكن ، على الرغم من أنه من غير المحتمل للغاية ، أن يقوم شخصان بتوليد نفس العنوان بشكل مستقل. وهذا ما يسمى الاصطدام. إذا حدث هذا ، فحينئذٍ يمكن للمالك الأصلي للعنوان والمالك المتصادم إنفاق الأموال المرسلة إلى ذلك العنوان. لن يكون من الممكن للشخص المصطدم أن ينفق المحفظة الكاملة للمالك الأصلي (أو العكس). إذا كنت تحاول عمداً إحداث تصادم ، فإن الأمر يستغرق وقتًا أطول بـ 2 ^ 107 لإنشاء عنوان Bitcoin متصادم من إنشاء كتلة. وطالما بقيت خوارزميات التوقيع والتجزئة قوية التشفير ، فمن المرجح دائمًا أن تكون أكثر ربحية لجمع الأجيال ورسوم المعاملات بدلاً من محاولة خلق تصادمات ، كما هو موضح في مشاريع مثل مصادم Bitcoin الكبير الذي يحاول توليد تضارب العناوين....من الأرجح أن تكون الأرض قد دمرت في الثواني الخمس القادمة ، من أن يحدث تصادم في الألفية القادمة.


كيفية إنشاء عنوان بيتكوين.


0 - وجود مفتاح خاص ECDSA.


1 - خذ المفتاح العام المقابل الذي تم إنشاؤه به (65 بايت ، 1 بايت 0x04 ، 32 بايت المقابلة للإحداثي X ، 32 بايت المقابلة للإحداثيات Y)


2 - أداء التجزئة SHA-256 على المفتاح العام.


3 - أداء التجزئة RIPEMD-160 على نتيجة SHA-256.


4 - إضافة بايت الإصدار أمام تجزئة RIPEMD-160 (0x00 للشبكة الرئيسية)


(لاحظ أن الخطوات أدناه هي ترميز Base58Check ، والتي لديها خيارات مكتبة متعددة متاحة لتنفيذها)


5 - أداء التجزئة SHA-256 على النتيجة الممتدة RIPEMD-160.


6 - أداء تجزئة SHA-256 على نتيجة التجزئة السابقة SHA-256.


7 - خذ أول 4 بايت من تجزئة SHA-256 الثاني. هذا هو اختباري العنوان.


8 - إضافة وحدات البايت المجموع الاختباري 4 من المرحلة 7 في نهاية تجزئة موسعة RIPEMD-160 من المرحلة 4. هذا هو عنوان بيتكوين ثنائي 25 بايت.


9 - تحويل النتيجة من سلسلة بايت إلى سلسلة base58 باستخدام ترميز Base58Check. هذا هو تنسيق Bitcoin Address الأكثر شيوعًا.


مفتاح سري.


تحتوي هذه الصفحة على عناوين عينة و / أو مفاتيح خاصة. لا ترسل bitcoins إلى أو استيراد أي مفاتيح عينة؛ سوف تخسر أموالك.


المفتاح الخاص في سياق Bitcoin هو رقم سري يسمح بإنفاق bitcoins. تحتوي كل محفظة من Bitcoin على مفتاح خاص أو أكثر يتم حفظه في ملف المحفظة. ترتبط المفاتيح الخاصة رياضيا بجميع عناوين Bitcoin التي تم إنشاؤها للمحفظة.


لأن المفتاح الخاص هو "التذكرة" التي تسمح لشخص ما بإنفاق bitcoins ، من المهم أن يتم الاحتفاظ بها آمنة. يمكن الاحتفاظ بالمفاتيح الخاصة على ملفات الكمبيوتر ، ولكن في بعض الحالات تكون قصيرة بما فيه الكفاية بحيث يمكن طباعتها على الورق.


تسمح بعض المحافظ باستيراد المفاتيح الخاصة دون توليد أي معاملات في حين تتطلب المحافظ الأخرى أو الخدمات أن يتم تجريف المفتاح الخاص. عندما يتم مسح مفتاح خاص ، يتم بث عملية ترسل الرصيد الذي يسيطر عليه المفتاح الخاص إلى عنوان جديد في المحفظة. كما هو الحال مع أي معاملة أخرى ، هناك خطر من أن تكون المعاملات التي تم اجتنابها مضاعفة.


في المقابل ، توفر bitcoind وسيلة لاستيراد مفتاح خاص دون إنشاء عملية مسح. يعتبر هذا خطيرًا جدًا ، ولا يُقصد استخدامه حتى من قِبل مستخدمي الطاقة أو الخبراء إلا في حالات محددة جدًا. يمكن سرقة Bitcoins بسهولة في أي وقت ، من محفظة استوردت مفتاحًا خاصًا غير موثوق به أو غير آمن - وهذا يمكن أن يتضمن مفاتيح خاصة تم إنشاؤها في وضع عدم الاتصال ولم يرها شخص آخر أبدًا [1] [2].


مثال المفتاح الخاص.


في Bitcoin ، المفتاح الخاص هو رقم 256 بت ، والذي يمكن تمثيله من عدة طرق. هنا مفتاح خاص بالنظام الست عشري - 256 بت بالنظام الست عشري هو 32 بايت ، أو 64 حرفًا في النطاق من 0 إلى 9 أو A-F.


مجموعة من مفاتيح ECDSA الخاصة الصالحة.


يُعد كل رقم 256 بت تقريباً مفتاحًا خاصًا صالحًا لـ ECDSA. على وجه التحديد ، أي رقم 256 بت من 0x1 إلى 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140 مفتاح خاص صالح.


يخضع نطاق المفاتيح الخاصة الصالحة لمعيار secp256k1 ECDSA الذي تستخدمه Bitcoin.


مفاتيح محفظة هرمية مميزة (HD).


قد تستخدم برامج المحفظة بعلية BIP 32 لتوليد العديد من المفاتيح الخاصة والمفاتيح العامة المقابلة من قيمة سرية واحدة. وهذا ما يسمى محفظة تحديدية هرمية ، أو محفظة عالية الدقة قصيرة. تتكون قيمة البذرة ، أو المفتاح الموسع الرئيسي ، من مفتاح خاص 256 بت و رمز سلسلة 256 بت ، 512 بت في الإجمالي. يجب عدم الخلط بين قيمة البذور والمفاتيح الخاصة المستخدمة مباشرة لتوقيع معاملات Bitcoin.


ينصح المستخدمون بشدة باستخدام محافظ الأقراص عالية الدقة ، لأسباب تتعلق بالسلامة: يجب فقط الاحتفاظ بنسخة احتياطية من محفظتك عالية الدقة بمجرد استخدام عبارة ذاكريومية ؛ بعد ذلك في المستقبل ، يمكن للنسخ الاحتياطي الوحيد دائمًا إعادة توليد نفس المفاتيح الخاصة. لذلك ، يمكنه استرداد جميع العناوين بأمان ، وجميع الأموال المرسلة إلى تلك العناوين. تقوم المحافظ غير عالية الدقة بإنشاء مفتاح خاص جديد تم تحديده عشوائيًا لكل عنوان جديد ؛ لذلك ، في حالة فقد ملف المحفظة أو تلفه ، سيفقد المستخدم جميع الأموال التي تم استلامها إلى العناوين التي تم إنشاؤها بعد أحدث نسخة احتياطية.


تنسيق استيراد Wallet58 Base.


عند استيراد مفاتيح خاصة من ECDSA أو مسحها ، يتم استخدام تنسيق أقصر يُعرف بتنسيق استيراد المحفظة ، والذي يقدم مزايا قليلة. يكون تنسيق استيراد المحفظة أقصر ، ويشتمل على رموز التحقق من الأخطاء المضمنة بحيث يمكن اكتشاف الأخطاء الإملائية و / أو تصحيحها (وهو أمر مستحيل بالتنسيق السداسي) وطباعة وحدات بت تشير إلى كيفية استخدامها. يعد تنسيق استيراد المحفظة الطريقة الأكثر شيوعًا لتمثيل المفاتيح الخاصة في Bitcoin. بالنسبة للمفاتيح الخاصة المرتبطة بالمفاتيح العمومية غير المضغوطة ، فهي 51 حرفًا وتبدأ دائمًا بالرقم 5 على mainnet (9 على testnet)....المفاتيح الخاصة المرتبطة بالمفاتيح العامة المضغوطة هي 52 حرفًا وتبدأ برأس مال L أو K على mainnet (c على testnet). هذا هو نفس المفتاح الخاص في تنسيق استيراد محفظة (mainnet):


عندما يتم استيراد مفتاح WIF الخاص ، فإنه يتوافق دائمًا مع عنوان Bitcoin واحد تمامًا. يمكن لأية أداة مساعدة تقوم بإجراء التحويل عرض عنوان Bitcoin المطابق. يعتبر التحويل الرياضي معقد نوعًا ما ويفضل تركه لجهاز الكمبيوتر ، ولكن من الجدير بالذكر أن WIF يضمن أنه سيتوافق دائمًا مع نفس العنوان بغض النظر عن البرنامج المستخدم لتحويله.


عنوان Bitcoin الذي تم تنفيذه باستخدام النموذج أعلاه هو: 1CC3X2gu58d6wXUW _SAMPLE_ADDRESS_DO_NOT_SEND_ MffpuzN9JAfTUWu4Kj.


شكل مفتاح خاص صغير.


تستخدم بعض التطبيقات تنسيق المفتاح الخاص المصغر. ليس لكل مفتاح خاص أو عنوان بيتكوين مفتاح شخصي صغير مناظر - يجب أن يتم إنشاؤه بطريقة معينة لضمان وجود مفتاح خاص صغير لعنوان. يتم استخدام المفتاح الخاص الصغير للتطبيقات حيث تكون المساحة حرجة ، مثل رموز QR وفي bitcoins الفعلية. يحتوي المثال أعلاه على مفتاح صغير ، وهو:


يمكن إرسال أي Bitcoins تم إرسالها إلى العنوان 1CC3X2gu58d6wXUW _SAMPLE_ADDRESS_DO_NOT_SEND_ MffpuzN9JAfTUWu4Kj من قبل أي شخص يعرف المفتاح الخاص الذي يقوم بتطبيقه في أي من التنسيقات الثلاثة ، بغض النظر عن وقت إرسال bitcoins ، إلا إذا كانت المحفظة المتلقية لها قد استخدمت منذ ذلك الوقت عملات معدنية تم إنشاؤها. مطلوب المفتاح الخاص فقط لإنفاق bitcoins ، وليس بالضرورة لرؤية قيمة لهم.


إذا تم اختراق أو سرقة مفتاح خاص يتحكم في بيتكوينات غير منفقة ، فيمكن حماية القيمة فقط إذا تم إنفاقها على الفور على مخرجات مختلفة آمنة. نظرًا لأنه لا يمكن إنفاق bitcoins إلا مرة واحدة ، عندما يتم إنفاقها باستخدام مفتاح خاص ، يصبح المفتاح الخاص عديم القيمة. غالبا ما يكون من الممكن ، ولكن من غير المستحسن وغير آمن ، استخدام العنوان الذي ينفذه المفتاح الخاص مرة أخرى ، وفي هذه الحالة ، يمكن إعادة استخدام نفس المفتاح الخاص.


استخدم Bitcoinjs لإنشاء عنوان Bitcoin جديد ومفتاح خاص.


برنامج تعليمي يشرح كيفية إنشاء عنوان bitcoin جديد ومفتاح خاص باستخدام Nodejs و Bitcoinjs.


تم نشر هذا البرنامج التعليمي لأول مرة في MLG Blockchain.


يجب أن يكون لديك عقدة npm وتنزيلها على جهاز الكمبيوتر الخاص بك. بعد هذا البرنامج التعليمي يجب أن يكون لديك كل من عنوان بيتكوين العام ومفتاح خاص محفوظين كمتغيرات.


npm تثبيت bitcoinjs-lib.


تحميل مكتبة bitcoinjs من محطة العقدة الخاصة بك.


var bitcoin = تتطلب (& quot؛ bitcoinjs-lib & quot؛)


var keyPair = bitcoin. ECPair. makeRandom ()؛


جعل متغير ل keyPair.


عنوان الاختبار عن طريق عنوان تسجيل الدخول إلى وحدة التحكم. يجب إرجاع عنوان bitcoin صالح.


var address = keyPair. getAddress ()؛


حفظ نتيجة عنوان بيتكوين لمتغير.


اختبار المفتاح الخاص عن طريق تسجيل الدخول إلى وحدة التحكم. يجب أن يتم إرجاع مفتاح خاص صالح بت كوين.


var pkey = keyPair. toWIF ()؛


حفظ نتيجة المفتاح الخاص بيتكوين لمتغير.


الآن يجب أن تكون قد نجحت في حفظ عنوان عام صالح ومفتاح خاص كمتغير في وحدة التحكم في العقدة. إرسال بريد إلكتروني إلى michael@blockchainedu. org إذا كان لديك أي أسئلة.


MLG Blockchain هي شركة تطوير واستشارات blockchain مقرها في تورونتو والتي تركز على بناء تطبيقات الجيل القادم باستخدام blockchain وتكنولوجيا العقد الذكية. شاهد المزيد من دروس تطوير برامج blockchain على www. mlgblockchain. com.


عن طريق التصفيق أكثر أو أقل ، يمكنك أن تشر لنا أي القصص تبرز حقا.


كيفية إنشاء عنوان Bitcoin من المفتاح العام؟


كما هو موضح في الأدلة الخاصة بنا إلى تشفير المنحنى البيضاوي وكيفية إنشاء مفتاح Bitcoin خاص - المفتاح العمومي هو في الواقع مجرد إحداثيات على منحنى البيتكوين المحسوب من خلال ضرب نقطة المولد بواسطة رقم المفتاح الخاص.


x coordinate = 7a633d546e723c3f41794549272f63617057382a227b6d393b35303d38.


يتم عرض هذه الأرقام بتنسيق سداسي عشري أو 256 رقمًا ثنائيًا معروضًا كأرقام سداسية عشرية 64. إذا كان الرقم معروضًا بتنسيق عشري ، فسيبلغ طوله 10 77 رقمًا.


إذا كنت تأخذ هذين الإحداثيات وتسلسلها ، أي قم بربطها من طرف إلى آخر لتكوين سلسلة طولها 128 حرفًا بتنسيق سداسي عشري ، ثم تجزئها مع إضافة واجهة 1 (للإشارة إلى عنوان على الشبكة الرئيسية ، إذا كان العنوان كان ل testnet أنه سيبدأ مع م أو ن).


العنوان = (إصدار الشبكة) & amp؛ Ripemd160 (sha256 (x & amp؛ y) & amp؛ checksum.


هناك أيضًا المجموع الاختباري للإضافة والذي هو في الأساس تجزئة لعنوان تجزئة العنوان - هذا هو التحقق من أن العنوان هو ما هو عليه - لوقف الأخطاء المطبعية وآخرون.


المجموع الاختباري = أول أربعة بايت من sha256 (sha256 ((إصدار الشبكة) & أمبير ؛ Ripemd160 (sha256 (x & amp؛ y))


تتمثل الخطوة الأخيرة في تغيير بنية الترميز إلى تنسيق أكثر قابلية للقراءة أو Base58 في حالة Bitcoin. يشبه Base 58 القاعدة 64 ولكن مع إزالة بعض الأحرف. يستخدم Base64 A-Z و a-z و0-9 و + و /.


يستخدم Base 58 نفس الرموز ولكنه يزيل + و / و 0 و O و I و l. تتم إزالة كافة الرموز التي يمكن الخلط لبعضها البعض مما يجعل شكل قابل للقراءة....والنتيجة النهائية هي عنوان بيتكوين من 27 إلى 34 حرفا! مثل أدناه.


لاحظ أن هذا العنوان يبدأ ب 1 وهذا يعني أنه هو عنوان الشبكة الرئيسي بيتكوين وأيضا أن الأحرف الثلاثة الأولى الإملائي كلمة بت - وبعبارة أخرى هذا هو عنوان الغرور.


<h1> إنشاء عنوان bitcoin من المفتاح الخاص </ h1>


الحصول على عبر متجر التطبيقات قراءة هذه المشاركة في التطبيق لدينا!


توليد عنوان من مفتاح خاص في Java؟


أود كتابة وظيفة في Java تأخذ مفتاحًا خاصًا وتولّد العنوان لاستخدامه في رمز الاستجابة السريعة. أود أن أجعل هذا ، لكنني لست جيدًا جدًا مع خوارزميات التجزئة.


لقد راجعت مع https://www. bitaddress. org وما تم إنشاؤه هناك ليس هو نفس ما أتلقى في برنامجي.


يمكن لأي شخص أن يساعدني في ذلك؟ لقد فشلت لي.


لا تقم بإعادة اختراع العجلة ، استخدم مكتبة موجودة. bitcoinj على سبيل المثال يوفر طريقة getPubKeyHash من الطبقة ECKey الذي يفعل ما تبحث عنه.


تحرير: getPubKeyHash لا يُرجع العنوان المقروء بشري مباشرةً ، ولكن يمكن استخدامه لإنشاء مثيل لعنوان الطبقة. هذا (كفئة فرعية من VersionedChecksummedBytes) لديه بدوره أسلوب toString الذي يعرض التجزئة كعنوان bitcoin.


عنوان بيتكوين.


أنت تعرف أن عنوانك في Bitcoin هو ما تشاركه في العالم للحصول على أموال.


لا يتم تخزين المفاتيح على الشبكة ويمكن إنشاؤها بدون الوصول إلى الإنترنت.


هذه هي طريقة إنشاء مفتاح خاص باستخدام NBitcoin:


من المفتاح الخاص ، نستخدم وظيفة تشفير أحادية الاتجاه ، لإنشاء مفتاح عام.


هناك نوعان من شبكات البيتكوين:


TestNet هي شبكة بيتكوين لأغراض التطوير. Bitcoins على هذه الشبكة لا شيء يستحق. MainNet هي شبكة بيتكوين التي يستخدمها الجميع.


ملاحظة: يمكنك الحصول على عملات سترينت بسرعة باستخدام الصنابير ، فقط google & quot؛ get testnet bitcoins & quot ؛.


يمكنك بسهولة الحصول على عنوان بيتكوين من مفتاحك العام والشبكة التي يجب استخدام هذا العنوان عليها.


على وجه الدقة ، يتكون عنوان bitcoin من بايت إصدار (يختلف على كلتا الشبكتين) ومفتاح بايت التجزئة العام الخاص بك. متسلسل كل من هذه البايتات ومن ثم ترميز إلى Base58Check:


حقيقة: يتم إنشاء تجزئة مفتاح عام باستخدام تجزئة SHA256 على المفتاح العام ، ثم تجزئة RIPEMD160 على النتيجة ، باستخدام تدوين Big Endian. يمكن أن تبدو الدالة كما يلي: RIPEMD160 (SHA256 (pubkey))


يحتوي ترميز Base58Check على بعض الميزات الأنيقة ، مثل الاختباري لمنع الأخطاء المطبعية وعدم وجود أحرف غامضة مثل & apos؛ 0 & apos؛ و & apos؛ O & apos ؛.


يوفر ترميز Base58Check أيضًا طريقة ثابتة لتحديد شبكة عنوان معين ؛ منع محفظة من إرسال عملات MainNet إلى عنوان TestNet.


نصيحة: إن ممارسة برمجة Bitcoin على MainNet تجعل الأخطاء أكثر ذكاءً.


<h1> إنشاء عنوان bitcoin من المفتاح الخاص </ h1>


الحصول على عبر متجر التطبيقات قراءة هذه المشاركة في التطبيق لدينا!


قم بإنشاء Bitcoin-Address في PHP.


أود إنشاء عنوان Bitcoin (مفتاح عام / خاص) في PHP. بحثت كثيرا ، ولكن لا يمكن العثور على أي حل يعمل.


هنا على سبيل المثال أنا لا أفهم المعلمات. المثال:


ماذا يحصل هنا؟ هو $ mpk المفتاح الخاص؟ إذا قمت بتغيير char واحد في mpk $ ، أتلقى خطأ.


هل يمكن لشخص مساعدتي؟ هل هناك طريقة عمل لتوليد عنوان Bitcoin في PHP؟


شكرا جزيلا!


عنوان بيتكوين والمفتاح العام / الخاص ليست هي نفسها. العنوان هو في الأساس تمثيل المفتاح العام. في كودك $ mpk هو مفتاح عام رئيسي. أنت تعطي MPK لخوارزمية ويعطيك عنوان مرة أخرى. يمكنك أن ترى كيف يعمل في هذا البرنامج https://en. bitcoin. it/w/images/en/9/9b/PubKeyToAddr. png.


لا أرى أساليب لإنشاء أمر رئيسي في repo الذي قدمته لذلك ربما يتعين عليك استخدام شيء آخر. يجب عليك إنشاء keypair باستخدام أداة أخرى. لقد وجدت بعض PHP code https://github. com/RobKohr/PHP-Bitcoin-Address-Creator ويبدو أنها خلقت keypair بالطريقة الصحيحة.


تعتمد معظم PHP الخاصة بمكتبات bitcoin على مكتبة منحنى الناقص الإقصائي.


أقترح استخدام واحدة من الألغام ، واحدة منها على أساس مايك جوجولسكي. لم يكن هناك الكثير من البيتكوين يحدث في PHP إلى جانب هذا :-( هذا هو bitwasp / bitcoin-lib-php.


هذا مستقر بما فيه الكفاية ، لكنه يأخذ بعض الاختصارات ، ويتوقع أنك تعرف ما تفعله.


ثم هناك bitwasp / bitcoin-php - أحدث ، أسرع ، OOP ، حتى يأتي مع ملحق لتسريع الأمر. لكنني لا أضع علامة على إصدار الملحن حتى يستقر الغبار :)


ومع ذلك ، فأنت لا تحتاج إلى mpk لعمل عنوان بيتكوين. إن MPK هو لمحافظة محددة ، وهي نقطة متسلسلة [س ، ص]. لذلك سوف تحصل على خطأ إذا قمت بتمرير نقطة غير موجودة على المنحنى.


أنصحك بشدة بقراءة المزيد عن بيتكوين والمبادئ الأساسية ، لأنه من الواضح أنك لا تزال جديدًا على هذا .....

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.