مشکل در راه اندازی شبکه خصوصی اتریوم با geth

سلام من روی ویندوز 10 کار میکنم و مراحل زیر رو انجام دادم. توی vm هم ویندوز 10 دارم.
گزارش کارم به این صورته اگر کسی میدونه مشکل کجاست ممنون میشم راهنماییم کنه.

جهت راه¬اندازی شبکه خصوصی اتریوم باید مراحل زیر را طی نمود.

  1. دانلود و نصب GETH
  2. ایجاد شبکه خصوصی اتریوم
     تولید بلوک اولیه
     انجام تنظیمات
     ایجاد حساب کاربری
     اضافه کردن نودهای دیگر
     تست شبکه

فایل استفاده شده برای ایجاد genesis block به صورت زیر می¬باشد.

“config”: {
“chainId”: 10,
“homesteadBlock”: 0,
“eip150Block”: 0,
“eip155Block”: 0,
“eip158Block”: 0,
“byzantiumBlock”: 0,
“constantinopleBlock”: 0,
“petersburgBlock”: 0,
“clique”: {
“period”: 5,
“epoch”: 30000
}
},
“difficulty”: “1”,
“gasLimit”: “8000000”,
“extradata”: “0x00000000000000000000000000000000000000000000000000000000000000007df9a875a174b3bc565e6424a0050ebc1b2d1d820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”,
“alloc”: {
“0x9e2bf1ac952bc0b03d5995e590a48c78a7d52479”: { “balance”: “300000” },
“0x96e3a9740f6fa71faba34b8433547a8ee02d20e8”: { “balance”: “400000” }
}

کد فوق را در یک فایل genesis.json ذخیره می¬نماییم. نکته قابل توجه این است که این فایل باید در تمام نودهایی که عضو این بلاکچین خصوصی هستند بدون هیچگونه تغییری کپی شود.
حال باید ترمینال را بازکرده و دستور شماره 1 را اجرا نمود.
دستور شماره 1 : Geth --datadir <your_own_storage> init genesisblock.json
این کد به geth دستورمی¬دهد تا از فایل genesis.json برای ایجاد اولین بلوک استفاده نماید و اطلاعات آن را در محل مشخص شده ما ذخیره ¬نماید. در صورتی که این دستور به درستی اجرا شده باشد باید دو پوشه geth و keystore در محل ذخیره¬سازی ایجاد شده باشد.

2-2-2- انجام تنظیمات
با استفاده از دستور 2 تنظیمات شبکه خصوصی را انجام می¬دهیم.
دستور شماره 2 : Geth --http --http.port “8085” --datadir --networkid 10

برای ایجاد حساب کاربری یک ترمینال جدید باز کرده و دستور زیر را در آن وارد می¬نماییم.
دستور شماره 3 : Geth attach ipc://./pipe/geth.ipc
با وارد کردن دستور personal.newAccount() و زدن پسورد اکانت مورد نظر ساخته می­شود.

موجودی حساب را می­توان با دستور eth.getBlance(“account address”) بررسی کرد
برای ایجاد نودهای دیگر باید مراحل 1 تا 3 را تکرار کنیم با این تفاوت که انتهای دستور شماره 2 باید عبارت –port 30304 را جهت مشخص کردن پورت اضافه ¬نماییم. لازم به ذکر است که این شماره پورت به صورت پیش فرض دارای مقدار 30303 می¬باشد که در نود اول همین مقدار را دارد. باید توجه داشت که شماره شبکه در همه نودها باید یکسان باشد ولی شماره پورت¬ها متفاوت است.
پس از ساخت اکانت در نود دوم با استفاده از دستور شماره 4 اطلاعات نود را به دست می¬آوریم که این نود را به شبکه اصلی اضافه نماییم.
دستور شماره 4: admin.nodeInfo.enode
ساختار کلی خروجی به صورت زیر می­باشد.

Enode://publickey@ip:port?dicsport=0

به نود اصلی رفته و دستور زیر را اجرا می­کنیم.

دستور شماره 5 : admin.addPeer(“Enode://publickey@ip:port?dicsport=0”)

که باید خروجی آن true باشد.

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

2-2-5- تست شبکه
برای چک کردن peer شدن نود در نود اول از دستور شماره 6 استفاده می¬نماییم که تعداد و اطلاعات نودهای peer شده در شبکه خصوصی ما را برمی¬گرداند.
دستور شماره 6 : admin.peers

خروجی این دستور به صورت زیر می¬باشد.

در صورتی که باید پس از وارد کردن نود با دستور قبلی این نود به همراه مشخصات در جواب دستور admin.peers نشان داده شود.
همچنین با استفاده از دستور net.peerCount نیز مقدار 0 در خروجی نمایش داده می¬شود که به این معنی می¬باشد که نودهای وابسته به این نود برابر 0 است.

دوستان می دونید مشکل کجاست و چرا نود add میشه ولی نمایش داده نمیشه؟؟؟؟؟؟

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

1 پسندیده

سلام ممنون از راهنماییتون لینکی که فرستاده بودین رو چک کردم ولی مشکلم حل نشد!!!


قبل از اضافه کردن نود و زدن دستور admin.addPeer قسمت peercount و static مقدار 0 داره مثل عکس ولی بعد از زدن دستور مقدار static برابر 1 میشه ولی peercount همون 0 میمونه و باز در جواب دستور admin.peers مقدار [ ] برمیگرده. این یعنی شبکه نشدن ؟؟