Ethereum 69: כיצד להגדיר צומת בלוקצ'יין מסונכרנת לחלוטין תוך 10 דקות

ברוך הבא במאמר הראשון בסדרת ה- go-ethereum החדשה שלנו!

בעשר הדקות הבאות תעשה:

  • למדו את מילון המונחים הראשון של בלוקצ'יין ללא כל ידע מקדים על המערכת האקולוגית
  • הגדר את צומת הבדיקה המסונכרנת שלך ("לקוח / שרת") תוך פחות מ -10 דקות
  • צור את חשבונך וקבל עסקה של 8ETH מקרן את'ריום בחינם

המוטו שלנו הוא להתאמן לפני התיאוריה - אז בואו נקפוץ היישר להתקנה של צומת בדיקת את'ריום מסונכרנת לחלוטין המחוברת לרשת בדיקות Rinkeby!

גת

Geth הוא ממשק שורת פקודה (CLI), בינארי מורכב, תוכנית ולקוח להפעלת צומת Ethereum מלא המיושם ב- Go.

נשתמש בגית ' כדי:

  • להפעיל צומת 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.

הפעלת צומת בלוקצ'יין

ובכן, השטן נמצא בפרטים ... אבל התחלה היא למעשה פשוטה. Kudos למפתחי Ethereum.

בואו נקבע Rinkeby חדש מסונכרן לחלוטין (רשת בדיקות Ethereum באמצעות צומת פרוטוקול Clique) .

יישום ה- Rinkeby PoA הוא הרבה יותר מהיר אך פחות מאובטח באופן משמעותי. זה מרוכז יותר מהקונצנזוס של Mainnet PoW וזה בסדר גמור להיות רשת בדיקות. רינקבי מצליח לאשר חסימה חדשה עם חבורה של עסקאות כל 15.

בסדר, בסדר, בסדר ... מה המשמעות של מילים אלו בעצם?

  • רינקבי: שם רשת הבדיקות הוכחת הרשות
  • צומת: בעצם שרת מסורתי שמבצע לקוח / שרת Ethereum
  • קונצנזוס: אלגוריתם המגדיר כיצד יתבצעו תוקף, הוספה ויימשך העסקאות במסד הנתונים בכל צומת
  • חסום: חבורה של עסקאות במערך מסובך שנשלח סביב החוט בין כל צמתי הרשת כל 15
  • עסקה: אל תחשוב על עסקה בנקאית. עסקת בלוקצ'יין היא שינוי מדינה. לשנות את שם הבעלים של חוזה חכם מאליס לבוב? משנים את היתרה בחשבונך מ- 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
  • מטמון, מעין מאגר, יוגדר ל- 2GB כדי להאיץ את תהליך הסנכרון
  • API נוסף של RPC יושק כדי שנוכל לתקשר עם הצומת שלנו דרך קונסולות, ממשק משתמש נחמד ביציאה 8546, בהמשך

המתן מספר שעות עד לסנכרון הבלוקצ'יין במלואו.

מספר החסימה הנוכחי החל מה- 24 בספטמבר הוא: 3039786. ב- AMD Ryzen 5 2600, 3.4Ghz, תהליך הסינכרון ארך 3 שעות. אה כן, יש לי מחשב גיימינג חדש!

בינתיים תוכלו לעקוב אחר Web3Coach בטוויטר או להכין ארוחת ערב, כנראה גם ארוחת בוקר, ללכת לחדר הכושר ... בואו נגיד, בלוקצ'יין הוא לא המאגר המהיר ביותר :)

בסופו של דבר ההודעה המודפסת תהיה:

  • INFO [] ספירת פלחי שרשרת חדשה מיובאת = 1
  • INFO [] ספירת פלחי שרשרת חדשה מיובאת = 1
  • INFO [] ספירת פלחי שרשרת חדשה מיובאת = 1
  • INFO [] ספירת פלחי שרשרת חדשה מיובאת = 1

מזל טוב, אתה עכשיו חלק ממהפכת הבלוקצ'יין בפחות מ -10 דקות !!!

יצירת חשבון הבלוקצ'יין הראשון שלך

קייסטור

כל חשבונות 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 ..

חֶשְׁבּוֹן

כדי ליצור חשבון חדש, לבצע את הדברים הבאים, כבר מכיר, כנסיית גת cmd.

geth --datadir=~/.gophersland_ethereum_r1 account new

תתבקש להזין משפט סיסמה (זו סיסמת הסופר הסודית שלך). זה נדרש לפענוח המפתח הפרטי החדש שלך המשויך לכתובת Ethereum החדשה שלך, מכיוון שהוא מאפשר לך להשתמש בו בהמשך לחתימת עסקאות בבלוקצ'יין. שים לב אליו איפשהו, מכיוון שנצטרך את זה מאוחר יותר. אבל אל דאגה אם תשכחו מזה, בכל מקרה זו רק רשת בדיקה.

[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

וואו! הכתובת החדשה שלי לאת'רום חיה: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!"