كيفية إعداد blockchain Ethereum testnet خاص باستخدام Geth و Homebrew

برنامج تعليمي للدخول لبدء طموحات برمجة Solidity الخاصة بك!

صورة من https://themerkle.com

عني

مرحبا! اسمي لاندر. أنا مهندس برمجيات مستقل وباني منتج من بلجيكا. عندما لا أمارس لعبة Solidity ، فأنا أعمل على TeamHut ، وهي SaaS لمساعدة المستقلين والفرق الرقمية على تنظيم ومشاركة المحتوى الرقمي الخاص بهم.

حول هذا البرنامج التعليمي

هذا البرنامج التعليمي عبارة عن تفسير للموارد المختلفة التي ساعدتني في إعداد وتشغيل أول كتلة بيانات خاصة بـ Ethereum testnet باستخدام Geth و Homebrew. إنه بمثابة مرجع مستقبلي لنفسي وكمساعدة لعشاق التشفير الآخرين. حاولت سرد معظم مواردي في أسفل هذه المقالة. واسمحوا لي أن أعرف إذا كنت تشعر بأي شيء مفقود.

Ethereum الخاصة testnet blockchain

يُمكن برنامج Ethereum المستخدم من إعداد سلسلة Ethereum "خاصة" أو "testnet" منفصلة عن سلسلة Ethereum الرئيسية. يعد هذا مفيدًا لاختبار التطبيقات الموزعة المبنية على Ethereum دون الحاجة إلى تعريض تطبيقاتك إلى شبكة Ethereum الحقيقية باستخدام Ether الحقيقي. أنت إما تقوم بتوليد أو استخراج Ether بنفسك على سلسلة Ethereum الخاصة بك ، لذلك فهي وسيلة أكثر فعالية من حيث التكلفة لتجربة Ethereum. هل قلت Ethereum بما فيه الكفاية؟

هيا بنا

ماذا تحتاج لهذا البرنامج التعليمي؟

بعض الافتراضات

  • أنت تستخدم نظام MacOS
  • أنت متحمس للتشفير و / أو تطوير البرمجيات ويرغب في اتخاذ خطواته الأولى لكتابة العقود الذكية.
  • أنت تعرف ماهية Ethereum وتفهم أنه الاستخدام الأساسي.
  • لديك فهم أساسي لاستخدام MacOS Terminal.

ماذا ستحقق؟

بعد الانتهاء من هذا البرنامج التعليمي بنجاح ، سيكون لديك blockchain Ethnetum testnet الخاص بكامل طاقته ويعمل على جهاز الكمبيوتر المحلي.

سيسمح لك testnet الخاص هذا بتطوير واختبار Dapps الحالي (تطبيقات غير مركزية) بمعزل عن سلسلة Ethereum blockchain الحقيقية.

قاموس

ما هو البيرة؟

يقوم Homebrew بتثبيت الأشياء التي لا تحتاج إليها Apple. أنا لا أمزح ، هذا ما يقوله موقع الويب الخاص بهم. اذهب وتحقق منه ، إنه رائع.

ما هو Ethereum؟

Ethereum هي عبارة عن منصة حوسبة موزعة قائمة على أساس blockchain ، وتتميز بوظائف العقد الذكية. يوفر الجهاز الظاهري اللامركزي ، Ethereum Virtual Machine (EVM) ، والذي يمكنه تنفيذ عقود نظير إلى نظير باستخدام وقود تشفير يسمى Ether.

اقرأ الورقة البيضاء هنا.

ما هي غيث؟

geth هي واجهة سطر الأوامر لتشغيل عقدة ethereum كاملة مطبقة في Go. هذا هو الإنجاز الرئيسي للإصدار الحدودي.

من خلال تثبيت geth وتشغيله ، يمكنك المشاركة في ethereum live network ، و ether ether على blockchain ، ونقل الأموال بين العناوين ، وإنشاء العقود ، وإرسال المعاملات.

تحذير
قبل استخدام geth أو التفاعل مع الشبكة المباشرة etierum Frontier ، تأكد من قراءة الوثائق وفهم المحاذير والمخاطر تمامًا.

الدورة التعليمية

كيفية تثبيت البيرة

إذا لم تكن قد فعلت ذلك بعد ، فاشتغل الجهاز الطرفي وابدأ من خلال تثبيت Homebrew:

/ usr / bin / ruby ​​-e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

إذا كنت قد قمت بالفعل بتثبيت Homebrew مسبقًا ، فتأكد من تحديثه:

الشراب التحديث
الشراب الترقية

كيفية تثبيت Geth

تتمثل أسهل طريقة لتثبيت Geth (go-ethereum) في استخدام صنبور Homebrew

الشراب الصنبور ethereum / ethereum
الشراب تثبيت ethereum

اختبار ما إذا كان التثبيت ناجحًا عن طريق التشغيل

نسخة geth

يجب أن يعرض هذا الإصدار Geth المثبت حاليًا:

Geth
الإصدار: 1.6.7-مستقرة
Git Commit: ab5646c532292b51e319f290afccf6a44f874372
العمارة: amd64
إصدارات البروتوكول: [63 62]
معرف الشبكة: 1
الذهاب الإصدار: go1.8.3
نظام التشغيل: داروين
GOPATH =
GOROOT = / البيرة / المحلية / قبو / ذهاب / 1.8.3 / libexec

كما ترون ، نحن نعمل حاليًا على تشغيل إصدار Geth 1.6.7.
تأكد من مراجعة الخيارات والأوامر المختلفة باستخدام geth - help أيضًا!

هيا بنا خطير

يتيح الحصول على خطورة - https://giphy.com/gifs/oadZJB3hwMFjy

الاتصال بشبكة الاختبار

دعنا نبدأ من خلال إنشاء كتلة سفر التكوين لسلسلة المفاتيح الخاصة بك testnet. كتلة التكوين هي بداية سلسلة المفاتيح - الكتلة الأولى ، الكتلة 0 ، والكتلة الوحيدة التي لا تشير إلى كتلة سابقة. يضمن البروتوكول عدم موافقة أي عقدة أخرى على الإصدار الخاص بك من blockchain ما لم يكن لديهم نفس كتلة التكوين ، بحيث يمكنك إنشاء أكبر عدد ممكن من سلاسل blocknet الخاصة testnet التي تريدها! (انظر الوثائق)

قم بإنشاء وحفظ ملف * .json يسمى CustomGenesis.json ووضع هذه المحتويات فيه:

ملاحظة جانبية
كما هو مذكور في منشور المدونة هذا ، هناك أداة Python متوفرة لإنشاء ملف Genesis المخصص الخاص بك. من أجل البساطة ، يمكنك فقط نسخ لصق هذا المثال:
{
    "config": {
        "السلسلة": 15 ،
        "homesteadBlock": 0 ،
        "eip155Block": 0 ،
        "eip158Block": 0
    }،
    "الصعوبة": "0x400" ،
    "gasLimit": "0x2100000" ،
    "تخصيص": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"balance": "0x1337000000000000000000"}
    }
}

الملف بمثابة "بذرة" ل testnet الخاص بك.

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

لاحظ أننا أضفنا عنوان حسابنا 93f932b3b87e08cdaf0877994e44feb4c93e81aa إلى كائن "تخصيص" ، وأننا قدمنا ​​له رصيدًا قدره 1337000000000000000000 wei (1337 ETH):

"تخصيص": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"balance": "0x1337000000000000000000"}
    }

يمكنك استخدام هذه التقنية للتمويل المسبق لحسابك. يمكنك تحديد حسابات متعددة لتضمينها في البذرة. لاحظ أن هذه الخطوة اختيارية ، حيث يمكنك بسهولة التخلص من الأثير بنفسك ، حيث أنك تتحكم في الصعوبة (المنخفضة)!

ستشير إلى هذا الملف (CustomGenesis.json) عند تهيئة كتلة التكوين الخاصة بك باستخدام الأمر التالي:

geth - الهوية "MyTestNetNode" - اكتشاف - الشبكة 1999 - قاعدة بيانات / مسار / إلى / اختبار net-blockchain init /path/to/CustomGenesis.json
نصيحة برو
أنا أستخدم علامة "datadir" مخصصة لفصل سلسلة المفاتيح testnet عن العلامة الحقيقية. أقترح عليك أن تفعل كذلك. هذا يمكن أن يكون أي مجلد تريده.
لمعرفة المزيد عن الأعلام الأخرى المستخدمة ، يرجى الانتقال إلى الوثائق.

إنشاء حساب على tesnet الخاص

قم بإنشاء دليل أو العثور عليه حيث تريد تخزين بيانات testnet الخاصة المحلية. في هذا المثال ، سنستخدم

/ الطريق / / اختبار صافي blockchain

بعد تشغيل الأمر geth --version السابق بنجاح ، قم بتشغيل

geth account new --datadir / path / to / test-net-blockchain

سيطلب منك هذا الأمر عبارة مرور (= كلمة المرور). لا تنسى هذا.

نصيحة برو
أنا أستخدم علامة "datadir" مخصصة للإشارة إلى أنني أرغب في استخدام testnet المحلي الخاص بي. هذا يبقيها منفصلة عن testnet الحقيقي.
افتراضيًا ، ستستخدم geth نفس الدليل للملفات المرتبطة بالشبكة كما في الشبكة الرئيسية العامة. وبالتالي ننصحك بتعيين العرف - datadir للحفاظ على إعادة تعيين chaindata الشبكة العامة.
لمعرفة المزيد حول هذا ، راجع الوثائق.

سيؤدي هذا إلى إنشاء حساب على عقدة testnet الجديدة ، وسيُرجع عنوان testnet الخاص مثل ذلك:

العنوان: {93f932b3b87e08cdaf0877994e44feb4c93e81aa}

احفظ هذا العنوان وكلمة مرورك لاستخدامهما لاحقًا.

قبل تمويل حسابك

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

ابدأ بإزالة قاعدة بيانات blockchain التي قمت بإنشائها مسبقًا:

geth removeb - dadadir / path / to / test-net-blockchain

قم بتحديث ملف "CustomGenesis.json" الخاص بك:

{
    "config": {
        "السلسلة": 15 ،
        "homesteadBlock": 0 ،
        "eip155Block": 0 ،
        "eip158Block": 0
    }،
    "الصعوبة": "0x400" ،
    "gasLimit": "0x2100000" ،
    "تخصيص": {
        "93f932b3b87e08cdaf0877994e44feb4c93e81aa":
         {"balance": "0x1337000000000000000000"}
    }
}

لاحظ أننا أضفنا عنوان حسابنا 93f932b3b87e08cdaf0877994e44feb4c93e81aa إلى كائن "تخصيص" ، وأننا قدمنا ​​له رصيدًا قدره 1337000000000000000000 wei (1337 ETH):

يمكنك تحديد حسابات متعددة لتضمينها في البذرة.

قم بتشغيل الأمر Genesis block initialisation مرة أخرى

geth - الهوية "MyTestNetNode" - اكتشاف - الشبكة 1999 - قاعدة بيانات / مسار / إلى / اختبار net-blockchain init /path/to/CustomGenesis.json

إذا لم تكن قد قمت بعملية التمويل المسبق

استخدم هذا الأمر بعد بدء تشغيل JavaScript Console (انظر الخطوة التالية: "التفاعل مع Geth console"):

geth - الهوية "MyTestNetNode" --dadadir / path / to / test-net-blockchain - nodiscover - 1999 network console

التفاعل مع وحدة التحكم Geth

للتفاعل مع Geth من خلال وحدة التحكم ، تسمى Geth JavaScript Console استخدم:

geth - الهوية "MyTestNetNode" --dadadir / path / to / test-net-blockchain - nodiscover - 1999 network console

إذا تم تشغيله بنجاح ، سترى تأكيدًا:

إذا رأيت هذه الرسالة ، يمكنك بدء تشغيل أوامر Geth JavaScript.
حاول استخدام هذا الحساب للتحقق من رصيد حسابك الأساسي

web3.fromWei (eth.getBalance (eth.accounts [0]) ، "ether")
نصيحة برو
قم بتخزين أوامر Geth الطويلة هذه في ملفات منفصلة * .sh حتى تتمكن من إعادة استخدام التكوين (والأعلام المخصصة) في وقت لاحق. ستحتاج إلى ذلك في كل مرة تريد فيها استخدام testnet الخاص (المخصص).

هيكل المجلد

إعلامية بحتة ، هذا هو الشكل الذي تبدو عليه بنية المجلد:

هيكل بلدي مجلد

كما ترون ، لقد أنشأت بعض البرامج النصية * .sh لإعادة استخدامها لاحقًا.

*تحديث*
لقد قمت بإنشاء مستودع يحتوي على تلك التي استخدمتها كمرجع لهذه المقالة: https://github.com/WWWillems/medium-attachments/tree/master/01-private-ethereum-testnet

صورة من https://giphy.com/gifs/hoppip-charlie-chaplin-film-hoppip-S7i2sED2yfDGg

تهانينا!

لديك الآن blockchain Ethereum testnet تعمل بشكل خاص وحساب / محفظة يعمل على الكمبيوتر الشخصي الخاص بك. يمكنك الآن بدء التعدين وإرسال المعاملات وما إلى ذلك. سأكتب بعض المقالات الجديدة المتعلقة بهذه الموضوعات في المستقبل القريب.

أوامر / نصائح مفيدة

  1. geth removeb
    يحذف / يزيل بيانات blockchain المتزامنة محليًا من testnet العامة.
  2. geth removeb - dadadir / path / to / test-net-blockchain
    يحذف / يزيل بيانات testnet blockchain الخاصة بك.
  3. geth - fast - ذاكرة التخزين المؤقت = 1024
    تزامن blockchain بسرعة أكبر. إذا اخترت استخدام - fast flag لإجراء مزامنة Ethereum سريعة ، فلن تحتفظ ببيانات المعاملة السابقة.
  4. عند استخدام geth attach عند تشغيل testnet الخاص ،
    تأكد من تضمين نقطة نهاية IPC.
    تظهر نقطة نهاية IPC عند بدء تشغيل وحدة التحكم Geth JavaScript
    على هذا النحو: تم فتح نقطة نهاية IPC: /path/to/endpoint/geth.ipc
    نعلق الطريق إلى الأمر الخاص بك بحيث يصبح:
    geth attach /path/to/endpoint/geth.ipc

أوامر وحدة التحكم جافا سكريبت

استخدم هذه الأوامر بمجرد تسجيل الدخول إلى وحدة التحكم Geth.

  1. إذا تلقيت رسالة خطأ تقول "خطأ: المصادقة مطلوبة: كلمة المرور أو إلغاء القفل" ، فاستخدم هذا الأمر لإلغاء تأمين حسابك الأساسي في وحدة تحكم Geth JavaScript:
    personal.unlockAccount (eth.coinbase ، "كلمة مرور حسابك في علامات اقتباس" ، 0)
  2. للتحقق من رصيد حسابك الأساسي
web3.fromWei (eth.getBalance (eth.accounts [0]) ، "ether")

3. لرؤية قائمة المعاملات المعلقة

eth.pendingTransactions

روابط مفيدة

  • مستندات Ethereum
  • جافا سكريبت وحدة التحكم ويكي
  • Etherscan - وهو Ethereum Block Explorer ومنصة التحليلات
  • احصائيات شبكة Ethereum رصد
  • https://github.com/WWWillems/medium-attachments/tree/master/01-private-ethereum-testnet

شكرا ل

اشخاص

  • فيتاليك بوتين
  • جوزيف لوبين

مصادر

  • مستندات Ethereum
  • https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Mac

شكرا للقراءة!

أحب أن أسمع منك وأعرف رأيك. واسمحوا لي أن أعرف إذا كنت تعتقد أن أي شيء مفقود. إذا كنت ترغب في البقاء على اتصال ، فعليك الرد على هذا المنشور أدناه ، أو متابعتني على Twitter أو الاشتراك في رسالتي الإخبارية باستخدام النموذج أدناه.