Ethereum 69: كيفية إعداد عقدة Blockchain متزامنة بالكامل في 10 دقائق

مرحبًا بكم في المقالة الأولى من سلسلة go-ethereum الجديدة!

في العشر دقائق القادمة سوف:

  • تعلم أول معجم blockchain دون أي معرفة ضرورية مسبقة بالنظام البيئي
  • قم بإعداد عقدة الاختبار المتزامنة بالكامل ("العميل / الخادم") في أقل من 10 دقائق
  • أنشئ حسابك واحصل على معاملة بقيمة 8ETH من مؤسسة Ethereum مجانًا

شعارنا هو ، الممارسة قبل النظرية - لذلك دعونا نقفز مباشرة إلى تثبيت عقدة اختبار Ethereum متزامنة بالكامل متصلة بشبكة اختبار Rinkeby!

جيث

Geth هي واجهة سطر أوامر (CLI) ، وهي عبارة عن برنامج ثنائي مترجم ، وبرنامج وعميل لتشغيل عقدة Ethereum كاملة مطبقة في Go.

سوف نستخدم Geth من أجل:

  • قم بتشغيل عقدة Ethereum متزامنة بالكامل للاتصال بشبكة اختبار تسمى Rinkeby
  • إنشاء حساب جديد لتتمكن من إرسال واستقبال المعاملات
  • لقراءة حالة EVM ، على سبيل المثال التحقق من رصيد أي حساب (تريد أن تعرف مقدار التوازن الذي تتمتع به صديقتك أو صديقك أو زوجتك أو جارك؟ شفافية رائعة!)

تركيب جيث

يمكننا تثبيته مباشرة من المستودعات:

ماك

brew tap ethereum/ethereumbrew install ethereum

لينكس

sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum

شبابيك

Good luck :)

تحقق من التثبيت:

which geth> /usr/local/bin/geth
geth version> Geth> Version: 1.8.20-stable

تأكد من أنك تقوم بتشغيل نفس الإصدار حتى تتمكن من إجراء مزامنة كاملة لشبكة Rinkeby ، كما هو موضح في الخطوات التالية لأن Rinkeby قام بعمل شوكة ثابتة مدعومة بواسطة Geth 1.8.20.

تشغيل عقدة blockchain

حسنًا ، الشيطان يكمن في التفاصيل ... لكن البدء بسيط في الواقع. مجد لمطوري Ethereum.

الإعداد دعونا لمزامن بالكامل جديدة Rinkeby (اختبار شبكة Ethereum باستخدام برنامج العمل بروتوكول زمرة) عقدة .

يعد تنفيذ Rinkeby PoA أسرع بكثير ولكنه أقل أمانًا بشكل ملحوظ. إنها أكثر مركزية من نقاط التوافق الرئيسية للشبكة والتي تعتبر شبكة اختبار جيدة تمامًا. تمكن Rinkeby من الموافقة على كتلة جديدة بمجموعة من المعاملات كل 15 ثانية.

حسنًا ، حسنًا ، حسنًا ... ماذا تعني هذه الكلمات في الواقع؟

  • Rinkeby: اسم شبكة اختبار إثبات السلطة
  • العقدة: خادم تقليدي ينفذ عميل / خادم Ethereum
  • التوافق: خوارزمية تحدد كيفية التحقق من صحة المعاملات وإلحاقها واستمرارها في قاعدة البيانات على كل عقدة
  • الكتلة: مجموعة من المعاملات في مجموعة معقدة يتم إرسالها حول السلك بين جميع عقد الشبكة كل 15 ثانية
  • الصفقة: لا تفكر في معاملة بنكية. معاملة blockchain هي تغيير الحالة. إعادة تسمية مالك العقد الذكي من أليس إلى بوب؟ تغيير رصيد حسابك من 1ETH إلى 5ETH؟ تعيين قيمة متغيرة "foo" إلى "foo_value_123" في عقدك الذكي؟ هذه صفقة.

يمكنك قراءة المزيد عن اقتراح Rinkeby PoA هنا: //github.com/ethereum/EIPs/issues/225

geth --rinkeby --datadir=~/.gophersland_ethereum_r1 --port=30304 --cache=2048 --rpc --rpcport=8546 --rpcapi=eth,web3,net,personal --syncmode=fast

الأمر أعلاه سوف:

  • تهيئة دليل جديد حيث سيتم تخزين جميع البيانات فيه ~/.gophersland_ethereum_r1. سيكون الدليل الافتراضي:~/.ethereum
  • ابدأ في تنزيل سجل Ethereum الضروري لتصبح عقدة جديدة صالحة تمامًا ومزامنة للشبكة
  • سيحدث الاتصال عبر المنفذ 30304
  • سيتم تعيين ذاكرة التخزين المؤقت ، وهي نوع من المخزن المؤقت ، على 2 جيجابايت لتسريع عملية المزامنة
  • سيتم تشغيل واجهة برمجة تطبيقات RPC إضافية حتى نتمكن من التواصل مع عقدتنا من خلال وحدات التحكم ، وواجهة مستخدم رسومية لطيفة على المنفذ 8546 ، لاحقًا

انتظر بضع ساعات حتى تتم مزامنة blockchain بالكامل.

رقم الكتلة الحالي اعتبارًا من 24 سبتمبر هو: 3039786. في AMD Ryzen 5 2600 ، 3.4 جيجا هرتز ، استغرقت عملية المزامنة 3 ساعات. أوه نعم ، لدي كمبيوتر ألعاب جديد!

في غضون ذلك ، يمكنك متابعة Web3Coach على Twitter أو تحضير العشاء ، وربما الإفطار أيضًا ، انتقل إلى صالة الألعاب الرياضية ... دعنا نقول فقط ، blockchain ليس أسرع قاعدة بيانات :)

في النهاية ستكون الرسالة المطبوعة:

  • INFO [] عدد قطع السلسلة الجديدة المستوردة = 1
  • INFO [] عدد قطع السلسلة الجديدة المستوردة = 1
  • INFO [] عدد قطع السلسلة الجديدة المستوردة = 1
  • INFO [] عدد قطع السلسلة الجديدة المستوردة = 1

تهانينا ، أنت الآن جزء من ثورة blockchain في أقل من 10 دقائق !!!

إنشاء حساب blockchain الأول الخاص بك

كيستور

يتم تخزين جميع حسابات Ethereum ومفاتيحها في دليل يسمى " keystore ". الدليل فارغ افتراضيًا لأننا لم ننشئ حسابنا الخاص بعد!

[email protected]:~$ ls -la ~/.gophersland_ethereum_r1/
drwx------ 4 enchanter enchanter 4096 sep 24 15:26 .drwxr-xr-x 18 enchanter enchanter 4096 sep 24 11:51 ..drwx------ 4 enchanter enchanter 4096 sep 24 15:26 gethsrw------- 1 enchanter enchanter 0 sep 24 15:26 geth.ipcdrwx------ 2 enchanter enchanter 4096 sep 23 09:54 keystore
[email protected]:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 23 09:54 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..

الحساب

لإنشاء حساب جديد ، قم بتنفيذ الأمر التالي ، المألوف بالفعل ، geth cmd.

geth --datadir=~/.gophersland_ethereum_r1 account new

سيُطلب منك إدخال عبارة مرور (هذه هي كلمة المرور الخارقة الخاصة بك). هذا مطلوب لفك تشفير المفتاح الخاص الذي تم إنشاؤه حديثًا والمرتبط بعنوان Ethereum الجديد الخاص بك ، حيث يتيح لك استخدامه لاحقًا لتوقيع المعاملات على blockchain. دوّنه في مكان ما لأننا سنحتاجه لاحقًا. لكن لا تقلق إذا نسيت ذلك ، فهذه مجرد شبكة اختبار على أي حال.

[email protected]:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 23 09:54 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..
[email protected]:~$ geth --datadir=~/.gophersland_ethereum_r1 account new
INFO [09-24|15:36:33.566] Maximum peer count ETH=25 LES=0 total=25
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase: Repeat passphrase:
Address: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
[email protected]:~$ ls -la ~/.gophersland_ethereum_r1/keystore/
drwx------ 2 enchanter enchanter 4096 sep 24 15:36 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..-rw------- 1 enchanter enchanter 491 sep 24 15:36 
UTC--2018-09-24T13-36-43.069452577Z--ceee57f2b700c2f37d1476a7974965e149fce2d4

رائع! عنوان Ethereum الجديد الخاص بي على قيد الحياة:ceee57f2b700c2f37d1476a7974965e149fce2d4.

You will normally encounter this address prefixed with “0x” to indicate the address encoding, HEX.

The newest format of the keyfiles is: UTC--- encoding>. The order of accounts when listing is lexicographic, but as a consequence of the timespamp format, it is actually in order of creation.

If you are curious what is inside of the file, feel free to open it! You will see:

  • Address: your new hex address
  • Crypto: bunch of mathematical variables responsible for representing your private key in encrypted form, don’t worry about that magic for now

Interesting note: the account generation happens in offline mode and doesn’t require a synced blockchain node. Curious how is it possible to generate a unique address in an offline mode from the technical perspective? We will check out the go-ethereum source code itself in the next article.

Spoiler: it’s because the address is a hash of your public key which is based on your unique, private key.

Okay I have a new shinny Ethereum account, what’s my balance and how do I deposit some testing Ether?

Speaking of Ether… what is it actually?

Ether

Ether is the cryptocurrency powering the Ethereum network. It’s used as a unit of value and for paying miners for validating, appending, and persisting the transactions to the collective DB. But mainly its a technique for preventing SPAM because miners are rewarded 5 (since last month “just” 3) ETH for each successfully mined block. Yes, that’s $600 at the current price on 24th of September, every 15s. Not a bad business.

How to receive a transaction of 8ETH from the Ethereum foundation for FREE

Checking account balance

Let’s make sure our account balance is 0 first, unless someone already managed to send some Ether out of the goodness of their heart.

Geth provides a JavaScript console that can be attached to the executable binary for interacting with the blockchain conveniently. We can connect to it by specifying a socket file that is exposed once Geth boots up. Socket files are very useful for “inter process communication on the same machine”, aka IPC.

You can locate this file in the the default data directory while the Geth program is running:

[email protected]:~$ ls -la ~/.gophersland_ethereum_r1/
drwx------ 4 enchanter enchanter 4096 Sep 24 15:44 .drwxr-xr-x 18 enchanter enchanter 4096 Sep 24 15:47 ..drwx------ 4 enchanter enchanter 4096 Sep 24 15:44 gethsrw------- 1 enchanter enchanter 0 Sep 24 15:44 geth.ipcdrwx------ 2 enchanter enchanter 4096 Sep 24 15:47 keystore

Let’s interact with the Rinkeby network using the “geth attach” cmd in another terminal while your blockchain node is still running. Make sure to pass the absolute path to the IPC file, otherwise you will get an error.

[email protected]:~$ geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.15-stable-89451f7c/linux-amd64/go1.10.1coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4at block: 3044891 (Mon, 24 Sep 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
> eth.accounts["0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
> eth.syncingfalse
> eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4")0

Query blockchain:

eth.accounts: to check your currently available accounts

eth.syncing: to make sure our state, DB is fully up to date with rest of the network to ensure the getBalance response will be based on the latest state

eth.getBalance(“ gt;”): to query the DB.

Receiving a transaction of 8ETH from the Ethereum foundation for FREE

The Ethereum foundation has a very neat program called “Faucet” available online for assigning Ether to accounts requesting it in real-time.

Requesting Ether:

  1. Publish your account address on one of the public social networks
  2. E.g, post a tweet containing your Ethereum address anywhere in the tweet like this one //twitter.com/EnchanterIO/status/1044238559224483841, make sure you tag @Web3Coach and @freeCodeCamp and let us know if you like the tutorial!
  3. Open //www.rinkeby.io/#faucet and paste the tweet URL
  4. Click on “Give me Ether”, choose between 3, 7.5 or 18.75 Ether
  5. Wait few seconds
  6. Query your account balance again

Voilà

You are rich… in a test network. Congratulation for getting so far.

You can continue expanding your blockchain skills by building one from scratch in Go!"