وبلاگ

آموزش نصب و کار با Go Ethereum) GETH)

نصب و کار با GETH
سالیدیتی

آموزش نصب و کار با Go Ethereum) GETH)

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

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

بنابراین می توان گفت geth در فرآیند توسعه اپلیکیشن های غیرمتمرکز معمولا استفاده نمی شود. به دلیل فرآیند پیچیده و زمان بر بودن کار با آن. در واقع geth بیشتر جنبه آموزشی دارد و کار با آن موجب عمیق تر شدن دانش ما نسبت به بلاکچین خواهد شد.

قابلیت های Go Ethereum) GETH)

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

ماشین مجازی اتریوم چیست؟

قابلیت های GETH

با نصب و اجرای geth می توانیم به شبکه اصلی اتریوم متصل شویم، همچنین geth قابلیت های دیگری دارد که با آن می توانیم:

  1. اتر حقیقی ماین کنیم
  2. بین آدرس ها انتقال اتر انجام دهیم
  3. ایجاد قرارداد و ارسال تراکنش انجام دهیم
  4. تاریخچه بلاک ها را مشاهده کنیم
  5. و بسیاری موارد دیگر​

آموزش و مراحل نصب Go Ethereum) GETH)

راه‌های مختلفی برای نصب Geth وجود دارد، از جمله از طریق مدیر بسته (package manager)، دانلود یک بسته از پیش ساخته شده(pre-built bundle)، اجرا به‌عنوان کانتینر داکر یا ساختمان از کد منبع دانلود شده. در این صفحه گزینه های مختلف نصب برای چندین سیستم عامل اصلی توضیح داده شده است. کاربرانی که سهولت نصب را در اولویت قرار می دهند باید از یک مدیر بسته یا بسته از پیش ساخته شده استفاده کنند. کاربرانی که سفارشی سازی را در اولویت قرار می دهند باید از منبع بسازند. اجرای آخرین نسخه Geth بسیار مهم است زیرا هر نسخه شامل رفع اشکالات و بهبودهایی نسبت به نسخه های قبلی است. نسخه های پایدار برای اکثر کاربران توصیه می شود زیرا کاملاً آزمایش شده اند. لیستی از نسخه های پایدار را می توانید در اینجا پیدا کنید.

ابتدا آخرین نسخه geth مخصوص سیستم عامل خود را از وب سایت geth.ethereum.org/downloads دانلود نمایید.سپس جهت نصب geth بر روی سیستم عامل های مختلف از جمله لینوکس، مک و ویندوز می توانید به لینک آموزش Installing Geth مراجعه نموده و مراحل آموزش مربوط به نصب Go Ethereum  مشاهده نمایید.هم چنین دستورالعمل های به روز رسانی نصب های Geth موجود نیز در هر بخش در لینک مربوط به نصب geth ارائه شده است

جهت اطمینان از نصب موفق یک پنجره ترمینال باز کنید و دستور زیر را اجرا کنید:

$ geth

در صورت اجرای دستور بالا، چنین چیزی مشاهده خواهید کرد:

آموزش و مراحل نصب Geth

با اجرای این دستور، درواقع geth شروع به جستجو و اتصال به سایر نودهای اتریوم می کند. زمانی که geth یک نود در همسایگی خود پیدا کند؛ شروع به سینک کردن داده های بلاکچین می کند. برای متوقف کردن این فرآیند، می توان از کلید Ctrl+C استفاده کرد.
با اجرای دستور geth به صورت پیش فرض یک نود mainnet اتریوم ایجاد می شود. محل ذخیره سازی داده های مربوط به این زنجیره به صورت پیش فرض با توجه به نوع سیستم عامل متفاوت است.

محل ذخیره سازی داده ها در Windows

C:\Users\[USERNAME]\AppData\Local\Ethereum
or
%APPDATA%\Ethereum

محل ذخیره سازی داده ها در Linux

~/.ethereum

محل ذخیره سازی داده ها در Mac

~/Library/ethereum

در مسیر مشخص شده دو پوشه با نام های geth و keystore وجود دارد. پوشه geth اطلاعات مربوط به وضعیت زنجیره و بلاک ها را ذخیره می کند؛ و پوشه keystore محل نگه داری اکانت های مربوط به بلاکچین است.هچنین geth از طریق ایجاد یک بستر IPC امکان اتصال به نود مشخصی را فراهم می کند.

$ geth attach [path to the ipc endpoint]

به طور مثال برای اتصال به نود ایجاد شده برروی سیستم خود دستور زیر استفاده می شود:

geth attach geth.ipc

مسیر فایل تنظیمات برای اتصال به نود ایجاد شده، بر روی سیستم عامل های مختلف متفاوت است. به عنوان مثل مسیر پیشفرض برای فایل سوکت geth در سیستم عامل های لینوکس و مک در اینجا قرار دارد:

~/.ethereum/geth.ipc

و در ویندوز از این طریق در دسترس است:

\\.\pipe\geth.ipc

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

$ geth console

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

debug.verbosity(0)

همچنین برای خروج از کنسول جاوااسکریپت در کنسول دستور exit را اجرا کنید.
هنگامی که دستور geth را اجرا می کنیم، به طور پیش فرض با شبکه اصلی اتریوم ارتباط برقرار می شود ولی به کمک ابزار geth می توان به هر شبکه دلخواهی وصل شد.

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

حال قصد داریم به کمک geth یک بلاکچین خصوصی ایجاد کنیم، بلاک های آن را ماین کنیم و در نهایت یک تراکنش روی این شبکه انجام دهیم.

ایجاد اکانت اتریوم در GETH

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

$ geth account new

با اجرای این دستور، چنین تصویری مشاهده خواهید کرد. توجه داشته باشید که رمز عبور را به خاطر بسپارید.

آموزش ساخت اکانت GETH

همان طور که در تصویر مشاهده می کنید در قسمت path of the secret key file آدرس محل ذخیره سازی کلید خصوصی مربوط به آدرس ایجاد شده به صورت رمزنگاری شده مشخص شده است. محل ذخیره سازی این کلید در پوشه keystore  مربوط به نود شبکه اصلی است.

ساخت بلاکچین خصوصی

قبل از هر چیز یک پوشه برای بلاکچین خصوصی خود بر روی سیستم ایجاد کنید.
ساخت هر بلاکچین با یک بلاک آغازین یا بلاک genesis آغاز می شود. برای این کار می بایست یک فایل با فرمت json ایجاد کنیم و تنظیمات بلاک آغازین را در آن قرار دهیم. یک فایل با نام genesis.json داخل پوشه بلاکچین خود ایجاد کنید و محتویات زیر را داخل آن کپی کنید.

{
  "config": {
        "chainId": 4568,
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "difficulty" : "400",
  "extraData"  : "",
  "gasLimit"   : "15000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

در ادامه بخش های مختلف فایل genesis توضیح داده می شود:

config: تنظیمات مربوط به بلاکچین خصوصی در این بخش تعریف می شود:

  • 1.1 chainId: مشخص کننده بلاکچین است. زنجیره اصلی اتریوم با شماره 1 مشخص می شود؛ شبکه تست
    Ropsten با شماره زنجیره 3 مشخص می شود؛ Rinkeby شماره 4 و Kovan شماره 42 است. شبکه خصوصی ای که ما ایجاد می کنیم دارای شماره زنجیره 4568 است. این عدد می تواند هر شماره دلخواهی که قبلا استفاده نشده است؛ باشد. با یک کلاینت مشترک می توان به انواع شبکه های اتریوم متصل شد.
    1.2 homesteadBlock: این فیلد و سه فیلد بعدی مشخص کننده این است که از کدام شماره بلاک تغییرات مربوط به هارد فورک ها آغاز می شود. در اینجا ما بلاکچین خود را داریم و از بلاک آغازین شروع می کنیم، بنابراین تمام فیلدها را صفر قرار ی دهیم.

alloc: در این بخش می توانیم به محض ایجاد بلاکچین، آدرس ایجاد کنیم و آن ها را شارژ کنیم. ما با این قسمت کاری نداریم. برای شارژ اکانت ها از ماین کردن کمک می گیریم.

difficulty: میزان سختی برای یافتن یک هش بلاک معتبر را مشخص می کند. و یا به عبارت دیگر هدف ماینینگ را شخص می کند. این مقدار در حال نوسان است تا زمان تولید یک بلاک را تقریبا در 15 ثانیه نگه دارد. در اینجا برای اینکه سریع به جواب برسیم میزان سختی را پایین درنظر می گیریم.

extraData: یک مقدار اختیاری به اندازه 32 بایت است که هر عبارت دلخواهی می تواند باشد.

gasLimit: حداکثر مقدار مجاز gas برای هر بلاک را مشخص می کند. عدد 15,000,000 مقدار در حال حاضر بر روی شبکه اصلی است.

parentHash: مقدار هش هدر بلاک قبلی یا والد را مشخص می کند. درواقع همین اشاره گر به بلاک قبلی، زنجیره بلاک ها را ایجاد می کند.

timestamp: زمان به فرمت یونیکس در هنگام ساخت بلاک را مشخص می کند. این پارامتر به ما کمک می کند چه زمانی سطح سختی می بایست تغییر کند تا میانگین زمان تولید یک بلاک ثابت بماند. همچنین به کمک این پارامتر می توان صحت ترتیب بلاک ها را داخل یک زنجیره تایید کرد.

سپس زنجیره خصوصی خود را با استفاده از فایل genesis ساخته شده، ایجاد می کنیم. دستور زیر را در پوشه مربوط به بلاکچین خصوصی که ساخته اید، اجرا کنید.

$ geth --datadir . init genesis.json

پیش از آنکه سراغ اجرای نود برویم با استفاده از دستور geth دو اکانت ایجاد می کنیم. اکانت اول به عنوان اکانت اصلی یا آدرس ماینر و اکانت دوم برای انجام تراکنش استفاده می شود. در پوشه مربوط به شبکه خصوصی دستور زیر را اجرا کنید، فراموش نکنید که رمز عبور را به خاطر بسپارید و همچنین آدرس های تولید شده را در جایی نگه دارید

geth --datadir . account new

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

$  geth --allow-insecure-unlock --datadir . --keystore keystore --networkid 4568 --http --http.corsdomain "*" --http.port 8502 --http.api personal,eth,net,web3,txpool,miner --mine --miner.etherbase=0xD04E55037Cab53E4d711BBC81f275e9d37629C9c

با اجرای دستور، چنین چیزی می بایست مشاهده کنید:

مشاهده  آرایه ها در زبان برنامه نویسی سالیدیتی

اجرای نود خصوصی در GETH

حالا می توانیم به زنجیره خصوصی خود متصل شویم. با توجه به اینکه نود مورد نظر بر روی سیستم خودمان است می توانیم از پروتکل IPC استفاده کنیم. پیش از آن در هنگام اجرای دستور قبل عبارت IPC endpoint opened را می توان مشاهده کرد. این آدرس بر روی سیستم عامل های مختلف ممکن است متفاوت باشد. به عنوان مثال بر روی سیستم عامل ویندوز به شکل زیر وجود دارد:

پروتکل IPC

همانطور که در بالا گفته شد می توانیم یک ترمینال جدید باز کنیم و از طریق ایجاد یک بستر IPC به نود مورد نظر متصل شویم.پس از اتصال به نود می بایست چنین چیزی مشاهده کنیم:

 اتصال به نود GETH

به پارامترهای datadir و coinbase دقت کنید که به ترتیب آدرس محل ذخیره سازی بلاکچین خصوصی و آدرس اتریوم معرفی شده توسط شما به عنوان ماینر یا همان آدرس اصلی هستند.
در کنسول باز شده می توانید دستورات مورد نظر را برای ارتباط با نود خصوصی، اجرا کنید.

بررسی اکانت

شما می توانید به تمام اکانت های geth از طریق eth.accounts دسترسی داشته باشید.

> eth.accounts
["0x1c29b7832ad2e4731d816e60f767777cbf374e15", "0x01058d7d56a216b3f1ff8f41c20ad58888424de7"]

همچنین می توانید موجودی هر حساب را با استفاده از متد ()eth.getBalance مشاهده کنید.

> eth.getBalance(eth.accounts[0])
0

اولین حساب ایجاد شده یا حساب اصلی از طریق eth.coinbase نیز در دسترس است.

ماینینگ

از آنجایی که شبکه خصوصی ایجاد شده همانند شبکه اتریوم از مکانیزم اجماع اثبات کار استفاده می کند، برای اجرای تراکنش ها می بایست بلاک ها را ماین کنیم.
برای شروع ماینینگ کافیست دستور ()miner.start را اجرا کنیم. می توانید فرآیند ماینینگ را بر روی ترمینال نود مشاهده کنید. بعد از آنکه تعدادی بلاک ماین شد با دستور ()miner.stop می توانید فرآیند را متوقف کنید. حالا می توانید موجودی حساب اصلی خود را مجددا چک کنید که باید شامل مقداری اتر باشد.

ارسال تراکنش

باتوجه به اینکه مقداری اتر در حساب خود داریم می توانیم یک تراکنش انجام دهیم و به یک حساب دیگر اتر واریز کنیم. برای انجام تراکنش در کنسول geth از متد ()eth.sendTransaction استفاده می کنیم. ولی پش از آن ی بایست بدانیم یک تراکنش اتریوم شامل چه داده های است:

  • from: از نوع String، آدرس ارسال کننده را مشخص می کند.
  • to: از نوع String، آدرس گیرنده یا مقصد را شخص می کند.
  • value: فیلد اختیاری، از نوع NumberString و یا BigNumber می تواند باشد. مبلغی که در تراکنش منتقل می شود بر حسب wei.
  • gas: فیلد اختیاری، از نوع NumberString و یا BigNumber می تواند باشد. میزان gas ای که برای تراکنش مصرف می شود.
  • gasPrice:فیلد اختیاری، از نوع NumberString و یا BigNumber. هزینه gas برای این تراکنش برحسب wei. مقدار پیشفرض براساس حداقل هزینه gas شبکه در نظر گرفته می شود.
  • data: فیلد اختیاری، از نوع String.
  • nonce: فیلد اختیاری، از نوع Number. یک عدد صحیح است به ما اجازه میدهد تراکنشی را که هنوز در حال انجام است جایگزین کنیم با تراکنشی که دارای همان عدد nonce باشد.

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

> eth.sendTransaction({to: eth.accounts[1], from: eth.accounts[0], value: 100})

در هنگام اجرای این دستور با خطای Error: authentication needed مواجه می شوید. بنابراین می بایست اصطلاحا حسابی که می خواهید با آن اتر ارسال کنید یعنی تراکنش انجام دهید را unlock کنید با وارد کردن رمز عبور به صورت زیر:

> personal.unlockAccount(eth.coinbase)
Unlock account 0xabc...
true

حال می توانید دستور اجرای تراکنش را مجددا اجرا کنید. بعد از انجام تراکنش موجودی حساب 1 را چک کنید:

> eth.getBalance(eth.accounts[1])
0

مشاهده می کنید که موجودی حساب صفر است به این خاطر که تراکنش انجام شده هنوز ماین نشده و داخل بلاکچین ثبت نشده است. با اجرای دستور ماینینگ و سپس توقف آن بعد از ماین یک بلاک حالا می توانیم دوباره موجودی حساب 1 را چک کنیم:

> eth.getBalance(eth.accounts[1])
100

موجودی حساب می بایست مقدار 100 باشد.

نحوه اتصال به شبکه های تستی اتریوم

geth قابلیت اتصال به انواع شبکه اتریوم و ایجاد یک نود اتریوم را دارد. با توجه به اینکه ایجاد یک نود کامل توسط geth و ذخیره تمام بلاک های ایجاد شده تا کنون، زمان و حافظه زیادی نیاز دارد، گزینه های دیگری در geth برای به روزرسانی نود شبکه وجود دارد:

  • Full: در این حالت نود ایجاد شده، تمام هدر بلاک ها و بدنه بلاک ها را ذخیره می کند و تمام بلاک ها و تراکنش های آن ها را با شروع از بلاک آغازین اعتبارسنجی می کند. که در نهایت باعث ایجاد یک full node بر روی سیستم می شود. که آخرین وضعیت کل بلاکچین را نگه داری می کند. و تمام بلاک های ورودی جدید را نیز اعتبارسنجی می کند. این نوع نود نباید با نود آرشیو(archive node) اشتباه گرفته شود که تمام این کارها را انجام می دهد و علاوه براین تاریخچه کل تراکنش های بلاکچین را نیز نگه داری می کند.
  • Fast: در این حالت نیز نود ایجاد شده، تمام هدر بلاک ها و بدنه بلاک ها را ذخیره می کند ولی هیچ کدام از تراکنش های قبلی را اعتبارسنجی نمی کند تا رسیدن به تراکنش های جدید. از اینجا به بعد مشابه نود کامل یا حالت قبل رفتار می کند. در مدت زمان آپدیت شما می توانید تمام بلاک ها را داشته باشید ولی در عین حال کاملا آپدیت نباشید. به این دلیل که وضعیت حساب ها(مانند موجودی ها، کد قراردادهای هوشمند) ممکن است هنوز آپدیت نشده باشد. دانلود این اطلاعات به طور موازی با دانلود بلاک ها انجام می شود و ممکن است خیلی بیشتر از دانلود بلاک ها طول بکشد.
  • Light: در این حالت تنها وضعیت حال حاضر بلاکچین دانلود می شود. بنابراین برای اعتبارسنجی تراکنش ها، نیازمند این است که از یک نود کامل یا آرشیو درخواست کند.
مشاهده  ماشین مجازی اتریوم چیست؟

اتصال به یک شبکه تستی به کمک geth بسیار ساده است. به عنوان مثال برای اتصال به شبکه تستی Rinkeby دستور زیر را اجرا کنید با حالت به روزرسانی fast(در صورتی که در اجرای دستور با حالت fast دچار خطا می شوید؛ می توانید از حالت snap استفاده کنید). پس از اجرای این دستور وارد کنسول جاوا اسکریپت می شوید.

$ geth --rinkeby --syncmode fast console

هنگامی که فرآیند بروزرسانی آغاز شد، می توانید اطلاعات نود را تا جایی که آپدیت شده است بررسی کنید. وضعبت نود خود را می توانید با دستور eth.syncing مشاهده کنید.

> eth.syncing
{
  currentBlock: 1846452,
  highestBlock: 2970863,
  knownStates: 0,
  pulledStates: 0,
  startingBlock: 1841089
}

این اطلاعات هم زمان با آپدیت شدن نود تغییر می کند.

مشاهده اطلاعات یک بلاک

می توانید اطلاعات مربوط به یک شماره بلاک نود شما آن را داشته باشد؛ با دستور زیر مشاهده کنید:

> eth.getBlock(1830000)
{
  difficulty: 2,
  extraData: "0xd783010802846765746887676f312e392e34856c696e7578000000000000000042eb768f2244c8811c63729a21a3569731535f066635f83421bf059cd8111f180f0727128685bae47ffc57839b00206d1ad20c69a1981b489f772031b279182d99e65703f0076e4812653aab85fca0f0d6ae8250b8348c94847280928c79fb3b63ca453efc18cbc391de84dbd87db83b20935d3e89f5dd91b239241f4286de636a1c1d431d162611438e5fe8a148b6ff13c4422ff4212ac94a35b271da789fa309f485e7be631f5322cc9ac22eedc9986414dd089afd92f800",
  gasLimit: 7212968,
  gasUsed: 741031,
  hash: "0xa20b9701c16c2c17cf5a844dba59b33530913bb227bbf17cf5ecb052d2b287b7",
  logsBloom: "0x00000000000000000000008000000000000000000000200080000000000000000000000000000000000000000000000000000000000000000000008200000000000000000000000000000008000000000000000000000400000000000000000800001000000000400000008000000000000000100000040000000010000000000400000000000000000000000000000000010000020000000000000000000200000000000000400000000000000000000001000000000000000000400000000000000002000000000001000000000000000020000000000000000000000000000000000000000400000000001000000400000000000000000000000020020100",
  miner: "0x0000000000000000000000000000000000000000",
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: "0x0000000000000000",
  number: 1830000,
  parentHash: "0x61aceb1112c79f12fd4acae7d5c263f58c0cfc23cabf996d0f81d3426c9db5fc",
  receiptsRoot: "0x18cd5444fbc45c3b45536ee1c0d66ff1498a43425ca8f4e7594af25bd87ad2fe",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 2092,
  stateRoot: "0x84c27ff36faabd161a5c850906581df27fa758bccdf9ac660602399ecca39972",
  timestamp: 1519519986,
  totalDifficulty: 3388435,
  transactions: ["0x77dd615bcc63322f436a747f43d02f7ad15ebbf7867c7dbb065e6a1a4d58a2cf", "0xa367a991aaa44b602247d5d12e748dc216fc71a8cd1408107076643094d83377", "0xf6dc6e3cbca47eaee35f7368372e2fb4336d4c7869ba4447d785c2af63545caf", "0xab50463b9617b6fdea0b4c6f8c80607608c36918a33c3b45dfd2d336ced7d50a"],
  transactionsRoot: "0x130985bb247d15b853dca099ad8d9f900a1d24ea2a68828b63530ef7090b7dad",
  uncles: []
}

همان طور که مشاهده می کنید آدرس ماینر و عدد nonce برابر صفر است. این به این دلیل است که مکانیزم اجماع شبکه Rinkeby بر اساس اثبات کار نیست. بلکه مبتنی بر اثبات قدرت است.

مشاهده اطلاعات یک تراکنش

می توانید اطلاعات هر تراکنشی را که در نود شما وجود دارد مشاهده کنید. به عنوان مثال میخواهیم اطلاعات تراکنش قرارگرفته در ایندکس 0 برای شماره بلاک 1830000 را مشاهده کنیم.

> eth.getTransaction(eth.getBlock(1830000).transactions[0])
{
  blockHash: "0xa20b9701c16c2c17cf5a844dba59b33530913bb227bbf17cf5ecb052d2b287b7",
  blockNumber: 1830000,
  from: "0xb840f68af2624c761adc42a365d99dd470f73d08",
  gas: 47197,
  gasPrice: 15000000000,
  hash: "0x77dd615bcc63322f436a747f43d02f7ad15ebbf7867c7dbb065e6a1a4d58a2cf",
  input: "0xde5f72fd",
  nonce: 11,
  r: "0x53b2e2bd0f77701d697d7d7579f86ff433bfc87cf50b1f0f53da62f2b0b2f9d8",
  s: "0x2adc0b0a3dbd8719eb1d994a4fac0fa11fb3d74b8c51a480142056a202dac7c6",
  to: "0x832b52302b89fa8e703cc12db1b6049984d6fef7",
  transactionIndex: 0,
  v: "0x2c",
  value: 0
}

مشاهده اطلاعات یک قرارداد

همچنین می توانید کد هر قراردادی که بر روی شبکه Rinkeby دیپلوی شده باشد را با داشتن آدرس آن مشاهده کنید.

> eth.getCode("0x832b52302b89fa8E703Cc12dB1B6049984d6fEF7")

خروجی این دستور یک رشته خیلی بزرگ به فرمت hex می باشد که کد قرارداد را نشان می دهد.
برای مشاهده حافظه قرارداد می بایست از دستور ()eth.getStorageAt استفاده شود.

> eth.getStorageAt("0x832b52302b89fa8E703Cc12dB1B6049984d6fEF7")
"0x000000000000000000000000000000000000000000004a1d89bb94865ec00000"

خروجی این دستور، حافظه قرارداد هوشمند است، نحوه نمایش خروجی بستگی به چگونگی نوشته شدن قرارداد دارد.

دریافت اتر تست

آپدیت نود خود را از طریق fast متوقف کنید و یک نود light ایجاد کنید که خیلی سریع تر است و حافظه بسیار کمتری اشغال می کند.

$ geth --rinkeby --syncmode light console

همان طور که قبلا گفته شد می توانید لاگ های روی کنسول را با دستور debug.verbosity(0) متوقف کنید. بعد از آنکه نود لایت آپدیت شد(ممکن است چند دقیق طول بکشد). یک اکانت اتریوم بر روی شبکه Rinkeby خود بسازید. می توانید با دستور eth.accounts اکانت های موجود را چک کنید و با دستور ()personal.newAccount اکانت جدید بسازید.از طریق faucet.rinkeby.io می توانید با دادن آدرس خود در شبکه های اجتماعی و ارسال لینک پست مربوطه در این سایت، اتر رایگان دریافت کنید. سپس می توانید وجودی حساب خود را چک کنید:

> eth.getBalance(eth.accounts[0])
3000000000000000000 // in wei (equal to 3 ether)

از این اتر می توانید برای پرداخت فی gas ، ارسال اتر و یا دیپلوی قرارداد بر روی شبکه Rinkeby استفاده کنید.

دیدگاه خود را اینجا قرار دهید

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

محبوب ترین دوره ها

برچسب های محبوب

Mapping Solidity Inheritance آموزش برنامه نویسی سالیدیتی آموزش سالیدیتی آموزش قرارداد هوشمند اجزای قرارداد هوشمند ارز دیجیتال اتریوم ارز دیجیتال یونی ارزهای متاورسی الگوریتم اثبات کار الگوریتم اجماع امنیت کیف پول اهمیت قرارداد هوشمند اپلیکیشن متمرکز برنامه نویس سالیدیتی برنامه نویسی اتریوم برنامه نویسی بلاکچین برنامه نویسی ریمیکس برنامه نویسی سالیدیتی برنامه نویسی شی‌ گرا برنامه نویسی قرارداد هوشمند بلاکچین بلاک چین اتریوم بهترین ارزهای دیجیتال ترون چیست توسعه دهنده سالیدیتی صرافی های ارزدیجیتال صرافی‌ غیرمتمرکز قرارداد هوشمند قیمت پولکادات متاورس مزایای قرارداد هوشمند نوشتن سیستم رای گیری با سالیدیتی نوشتن قرارداد هوشمند واقعیت مجازی متاورس ویژگی‌های اتریوم پلتفرم های ارزدیجیتال پیش نیاز قرارداد هوشمند کاربرد قرارداد هوشمند کد نویسی سالیدیتی کسب درآمد با قرارداد هوشمند کسب درآمد در متاورس کیف پول ارزدیجیتال کیف پول الکترونیکی کیف پول نرم‌افزاری