نحوه کار با Geth

Geth

بررسی Geth

Geth (Go Ethereum) یک رابط خط فرمان برای اجرای گره اتریوم است که در زبان Go پیاده سازی شده است. با استفاده از Geth می‌ توانید به شبکه اتریوم بپیوندید، اتر را بین حساب‌ ها یا حتی اترهای ماین را انتقال دهید.

می توانید Go Ethereum (Geth) را مستقیماً از صفحه Geth دانلود و نصب کنید.

نصب Geth از طریق ترمینال در اوبونتو

می توانید geth را از ترمینال اوبونتو با دستورات زیر نصب کنید:

sudo apt-get install software-properties-common

sudo add-apt-repository -y ppa:ethereum/Ethereum

sudo apt-get update

sudo apt-get install Ethereum

یک پوشه جداگانه برای ذخیره داده های شبکه اتریوم ایجاد کنید. برای راه اندازی گره اتریوم با استفاده از کنسول Geth، باید دستور زیر را تایپ کنید:

khodadadi@ubuntu:~/Gethtut$ geth

دستور بالا به شبکه اصلی اتریوم متصل می شود و سعی می کند بلوک ها را دانلود کند. این کار مقدار زیادی از فضای حافظه در هارد دیسک شما را در حد گیگابایت مصرف می کند.

اگر فکر می کنید فضای دیسک زیادی مصرف می کند، می توانید اتریوم را در حالت light با استفاده از دستور geth --light اجرا کنید. با این کار فقط سرایندهای بلوک بدون داده تراکنش دانلود می شود.

با تایپ دستور بالا داخل کنسول geth می توانید وضعیت همگام سازی با شبکه اصلی را بررسی کنید.

> eth.syncing
{
currentBlock: 3165668,
highestBlock: 5157070,
knownStates: 3180,
pulledStates: 214,
startingBlock: 3165125
}

اجرای گره اتریوم در شبکه بلاکچین خصوصی

می توانید خودتان با استفاده از geth یک شبکه خصوصی اتریوم ایجاد کنید. یک شبکه اتریوم با بلاکچین، خود با یک بلوک ریشه به نام بلوک genesis شروع می شود. بلوک Genesis حاوی تراکنشی نیست.

می توانید بلوک Genesis را ایجاد کرده و داده های json را در یک فایل ذخیره و دستور را اجرا کنید.

geth --datadir ./data init genesis.json

Genesis.json file:

{
"config": {
"chainId": 2018,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc"      : {},
"coinbase"   : "0x0000000000000000000000000000000000000000",
"difficulty" : "10",
"extraData"  : "",
"gasLimit"   : "0x2fefd8",
"nonce"      : "0x0000000000000042",
"mixhash"    : 
"0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" :
"0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp"  : "0x00"
}

ChainId شناسۀ شبکه اتریوم است. شما می توانید هر مقدار بالاتر از 4 را به عنوان chainid انتخاب کنید؛ زیرا اعداد 1-4 پیش فرض برای شبکه های اصلی و آزمایشی هستند.

ایجاد حساب کاربری در شبکه اتریوم

geth --datadir ./data account new

باید رمز عبور را وارد کنید و مطمئن شوید که آن را فراموش نکرده اید.

با این کار یک فایل کلیدی در مسیر data/keystore ایجاد می شود که حاوی آدرس های عمومی و خصوصی شما است. مطمئن شوید که آن را در مکانی امن ذخیره می کنید.

برای لیست کردن تمام حساب های ایجاد شده دستور زیر را تایپ کنید:

geth --datadir ./data account list

می توانید گره اتریوم را با وارد شدن به کنسول راه اندازی کنید.

geth --datadir ./data console

اجرای دو نمونه از سرور گره اتریوم منجر به خراب شدن داده ها در پایگاه داده اتریوم می شود. بنابراین می توانید از geth attach برای اتصال به همان گره استفاده کنید.

به عنوان مثال:

C:\> geth attach ipc:/home/Gethtut/data/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.1-stable-1e67410e/windows-386/go1.9.2
modules: admin:1.0 debug:1.0 eth:1.0 net:1.0 personal:1.0 
rpc:1.0
txpool:1.0 web3:1.0

با این کار کنسول جاوا اسکریپت باز می شود که در آن می توانید از دستور جاوا اسکریپت برای تعامل با شبکه اتریوم استفاده کنید.

برای بیرون آمدن از کنسول geth می توانید از دستور exit استفاده کنید. این دستور گره اتریوم را متوقف می کند.

همچنین می توانید یک حساب کاربری جدید در داخل کنسول geth با دستور زیر ایجاد کنید:

personal.newAccount()

اکنون دارای حساب اتریوم هستیم؛ اما در حساب ها موجودی نداریم. برای به دست آوردن مقداری اتر باید ماینینگ انجام دهیم. ماینینگ یک جزء کلیدی در شبکه اتریوم است که در آن چندین ماینر برای ایجاد یک بلوک جدید با هم رقابت می کنند. ماینر مربوطه با مقداری اتر پاداش خواهد گرفت.

استخراج را با 1 رشته شروع می کنیم. miner.start(1)

اگر چنین خطایی دریافت کردید، “Error: etherbase missing: Etherbase must be explicitly specified” باید Etherbase را تنظیم کنید. Etherbase که coinbase نیز نامیده می شود، کلید عمومی یک حساب اتر است که برای دریافت پاداش استخراج پول اتر مورد نیاز ماینر است.

شما می توانید Etherbase را با دستورات زیر تنظیم کنید:

> base = eth.accounts[0]
"0x05d4e1a499775ce9d681abd50bda655c7b5ccb90"
> miner.setEtherbase(base)
true
> miner.start(1)
null

اجرای ماینر «geth» با 1 رشته برای تولید بلوک‌ های جدید بسیار کند است. بنابراین می توانید geth miner را با 4 رشته اجرا کنید تا روند استخراج سریعتر انجام شود. همچنین اگر به فرایند استخراج سریع‌ تر نیاز دارید و اتر بیشتری دریافت می‌ کنید، سطح دشواری را کاهش دهید.

موجودی حساب را دریافت کنید. eth.getBalance(eth.accounts[0])

این دستور منجر به محاسبه مانده حساب بر حسب Wei می شود. برای بدست آوردن مانده حساب در اتر دستور زیر را تایپ کنید:

web3.fromWei(eth.getBalance(eth.accounts[0]), “ether”)

برای ارسال اتر از یک حساب به حساب دیگر، یک حساب دوم ایجاد کنید که می‌ خواهید با استفاده از ()personal.newAccount به آن اتر ارسال کنید. اتر را با استفاده از دستور sendTransaction ارسال کنید.

eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value: web3.toWei(4, “ether”)})

با این دستور 4 اتر به حساب دوم ارسال می شود. این تراکنش تا زمانی که ماینر اتر را تحویل بگیرد، در استخر تراکنش باقی خواهد ماند. اگر چنین خطایی دریافت کردید:

Error: authentication needed: password or unlock

at web3.js:3143:20

at web3.js:6347:15

at web3.js:5081:36

at <anonymous>:1:1

می توانید قفل حساب را با استفاده از دستور زیر باز کنید.

personal.unlockAccount(eth.accounts[0], ***password***)

سپس فرایند استخراج را با استفاده از ()miner.start شروع کنید. موجودی حساب دوم را بررسی کنید تا ببینید آیا تراکنش انتقال 4 اتر انجام شده است یا خیر. eth.getBalance(eth.accounts[1])

coblocks-admin
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *