آرتا رسانه

راه اندازی بلاک چین اثبات کار (PoW) اختصاصی در ۱۰ دقیقه

راه اندازی بلاک چین خصوصی EVM بدون تغییر کدهای پایه آن یک کار بسیار ساده و سریع است. در حال حاضر 2 نوع اجماع در گته وجود دارد که عبارتند از PoW و PoA. PoW به قدرت پردازش زیادی از سرور شما نیاز دارد، اما استقرار آن بسیار ساده تر است.

این آموزش راه اندازی بلاک چین اتریوم PoW در محیط لینوکس است. شما می توانید یک ماشین مجازی ایجاد کنید یا حتی در یک سرور ابری مستقر کنید.

اول از همه، مخزن اتریوم را اضافه کنید:

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

// Install geth and all its dependancies: 
apt-get install -y geth
				
			

به پوشه اصلی خود به عنوان پوشه کاری بروید، می توانید به هر دایرکتوری دلخواه خود تغییر دهید:

یک فایل به نام genesis.json ایجاد کنید، این تمام تنظیمات مربوط به بلاک چین شما است.

				
					cd ~
nano genesis.json
				
			

کدهای زیر را در فایل قرار داده و در صورت لزوم ویرایش کنید.

				
					 "config": {
    "chainId": 141319,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0,
    "ethash": {}
  },
  "difficulty": "1",
  "gasLimit": "8000000",
  "alloc": {
    "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000000000000000000" }
  }
}{
				
			

فیلدهای سروری وجود دارد که باید تغییر کنند:

chainID: به هر شناسه ای که می خواهید تغییر دهید، ممکن است بخواهید بررسی کنید که شناسه هایی که قبلاً توسط زنجیره های دیگر استفاده شده است.
alloc: برای جایگزینی با آدرس خود (بدون ‘0x’) برای پیش فروش توکن. اگر نمی‌خواهید یک پیش‌تخصیص داشته باشید، محتوا را حذف کنید، اما همچنان فیلد “تخصیص” ضروری است: { }

یک حساب شروع ایجاد کنید، باید یک آدرس محلی برای شروع صحیح گره داشته باشید (برای این کار باید رمز عبور ایجاد کنید):

				
					geth --datadir ~ account new
				
			

رمز عبور را در password.txt ذخیره کنید:

				
					nano password.txt
				
			

فایل پیکربندی genesis.json را راه اندازی کنید. اگر شما این را آغاز نکرده اید، geth شما فقط یک محیط پیش فرض ایجاد می کند که کاربردی نیست:

				
					geth --datadir ~ init genesis.json

				
			


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

				
					geth --networkid 141319 --mine --miner.etherbase 0xF83ad97529FCAAf08c610C28EF1DE862c0d0E39B --miner.threads 1 --datadir ~ --http --http.addr '0.0.0.0' --unlock --password password.txt --allow-insecure-unlock console
				
			

این باید یک گره با RPC فعال برای Metamask یا هر برنامه دیگری برای اتصال شروع کند. پارامترها باید بر این اساس پیکربندی شوند.

networkid (معمولاً مشابه chainId است اما می توانید آن را تغییر دهید)
mine (برای شروع استخراج)
miner.etherbase (آدرسی که می خواهید پاداش استخراج را به آن اعتبار دهید)
miner.threads (تخصیص cpu)
datadir (دایرکتوری کاری)
http (برای فعال کردن اتصال RPC)
http.addr <0.0.0.0 به معنی wildcard است، می توانید یک آدرس ثابت را مشخص کنید)
unlock     (برای کاربردی کردن حساب)
password   (مسیر رمز عبور.txt)
allow-insecure-unlock (این گزینه زمانی که http RPC فعال باشد اجباری است)
console (برای اینکه بتوانید در این دستور تعامل داشته باشید)

PoA اجماع ادغام شده یا معمولاً به عنوان ETH 2.0 شناخته می شود. این نسخه تقریباً از پردازش استفاده نمی کند که آن را قابل مدیریت تر می کند. با این حال، راه اندازی از گره PoA پیچیده تر است، زیرا حداقل به 2 گره برای امضا نیاز دارد. مشکل استفاده از 2 گره فقط این است که ممکن است به وضعیت بن بست برسد که در آن گره ها باید دوباره راه اندازی شوند.

 حالا که در حال راه‌اندازی بلاک چین در لینوکس هستیم، فرض کردم که شما درک اولیه از geth دارید یا سعی کرده‌اید که PoW را که در بالا گفته شد انجام داده اید حالا مستقیماً به ایجاد 2 گره می رویم.

2 پوشه برای گره ها ایجاد کنید:

				
					mkdir node1 node2

				
			


۲ حساب جداگانه ایجاد کنید و آدرس را یادداشت کنید (یک فایل password.txt مشترک برای ذخیره رمز عبور ایجاد کنید):

				
					geth --datadir node1 account new
geth --datadir node2 account new


				
			

یک genesis.json با محتوای زیر ایجاد کنید:

				
					 "config": {
		"chainId": 141319,
		"homesteadBlock": 0,
		"eip150Block": 0,
		"eip155Block": 0,
		"eip158Block": 0,
		"byzantiumBlock": 0,
		"constantinopleBlock": 0,
		"petersburgBlock": 0,
		"istanbulBlock": 0,
		"muirGlacierBlock": 0,
		"berlinBlock": 0,
		"londonBlock": 0,
		"arrowGlacierBlock": 0,
		"grayGlacierBlock": 0,
		"clique": {
			"period": 1,
			"epoch": 10000
		}
	},
	"difficulty": "1",
	"gasLimit": "800000000",
	"extradata": "0x00000000000000000000000000000000000000000000000000000000000000009B02C47e6eecF989598c33F82686925Ed4EE6d8598aB1d0ee9CaBF5d55a3a2804F083187c42c508c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
	"alloc": {
		"9B02C47e6eecF989598c33F82686925Ed4EE6d85": {
			"balance": "500000"
		},
		"0x98aB1d0ee9CaBF5d55a3a2804F083187c42c508c": {
			"balance": "500000"
		},
		"4D11dF920E0E48c7E132e5a9754C7e754Cd6EBFB": {
			"balance": "5000000000000000000000000"
		}
	}
}{
				
			

بر این اساس باید فیلدهای زیر را جایگزین کنید:

chainId: هر عدد دلخواه
period: چند ثانیه می خواهید یک بلوک را تأیید کنید
epoch: چند چرخه قبل از تنظیم مجدد الگوریتم
gasLimit: فقط اگر قرارداد بزرگی دارید و به بنزین بیشتری نیاز دارید
extradata: آدرس را با 2 آدرس (بدون ‘0x’) که ایجاد کرده اید جایگزین کنید.
alloc: از آنجایی که این یک PoS است، هر دو آدرس باید دارای پیش تخصیص باشند. تخصیص آدرس‌های دیگر اختیاری است، اما انجام این کار عاقلانه است زیرا پاداش استخراج بلوک PoA کم است و به سختی قابل استفاده است.

توجه داشته باشید که همه گره ها باید genesis.json یکسان را به اشتراک بگذارند وگرنه به یک شبکه ملحق نمی شوند. genesis.json را می توان در دایرکتوری همان سطح node1 و node2 ذخیره کرد. اکنون باید هر دو گره را مقداردهی اولیه کنیم:

				
					geth init --datadir node1 genesis.json
geth init --datadir node2 genesis.json
				
			

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

				
					bootnode -genkey boot.key
bootnode -nodekey boot.key -addr 0.0.0.0:30305
				
			

url enode را ذخیره کنید و geth را شروع کنید، پارامترها در زیر مورد بحث قرار خواهند گرفت:

				
					geth --datadir node1 --port 30306 --bootnodes enode://40dbee2f4161a9a1b26670107b9b6efb2205477bedb76242317ed1a329002d44e59132d0bc6398a58849cfe8385b3c1eb067d50668de4afee8a7a933bc13f805@127.0.0.1:0?discport=30305  --networkid 141319 --unlock 0x9B02C47e6eecF989598c33F82686925Ed4EE6d85 --password password.txt console --mine --miner.threads 1 --miner.etherbase 0x9B02C47e6eecF989598c33F82686925Ed4EE6d85 --http --http.addr '0.0.0.0' --allow-insecure-unlock --syncmode full console

geth --datadir node2 --port 30316 --bootnodes enode://4aafaa8904d3e37d1f4758b235910fa21d37bd5dee34ac729cc954433d69494788c292cf9468f3c32701f0bf979b817685ad4bc81639b9209317f0d521e6bff5@127.0.0.1:0?discport=30305  --networkid 141319 --unlock 0x98aB1d0ee9CaBF5d55a3a2804F083187c42c508c --password password.txt --authrpc.port 8561 --mine --miner.threads 1 --miner.etherbase 0x98aB1d0ee9CaBF5d55a3a2804F083187c42c508c --http --http.port 8546 --http.addr '0.0.0.0' --allow-insecure-unlock --syncmode full console
				
			

برای شروع امضا و استخراج، باید هر دو گره را راه اندازی کنید.

datadir <برای گره ها برای ذخیره داده های زنجیره ای خود>
port <درگاه شنیداری داخلی، باید برای هر دو متفاوت باشد>
bootnodes <url enode ذخیره شده در بالا>
Networkid <شناسه مورد نظر شما>
unlock <آدرس کیف پول> را باز کنید
password   <رمز عبور ذخیره شده، اگر هر دو حساب شما رمز عبور متفاوتی دارند از فایل های مختلف استفاده کنید>
authrpc.port <درگاه پیش‌فرض 8551 است، node1 از پیش‌فرض استفاده می‌کند، بنابراین حذف می‌شود، node2 باید پورت دیگری را وارد کند>
mine (شروع استخراج، miner.start())
miner.threads <نیازی به تخصیص منابع بالا برای استخراج PoA ندارید>
miner.etherbase <باید همان آدرس امضاکننده باشد>
http (سرور RPC را راه اندازی کنید، در این مورد من 2 RPC دارم، برای حجم کم می توانید سرور نود 1 یا 2 RPC را ببندید)
http.port <پیش فرض 8545 است، node2 از پورت دیگری استفاده می کند>
http.addr <0.0.0.0 باید از همه آدرس ها پذیرفته شود>
allow-insecure-unlock (فعال کردن باز کردن قفل با گزینه RPC)
syncmode <گره ماینر باید پر باشد، این به صراحت برای کاهش احتمال بن بست خاص است
console (گزینه کلید در فرمان)

در اینجا می‌رویم، یک بلاک‌چین PoA کاملاً کاربردی با دانش زیادی در مورد Geth یا بلاک چین راه‌اندازی می‌شود.

دیدگاه‌ خود را بنویسید

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

آرتا رسانه
آرتا رسانه
دیجیتال مارکتینگ چیست؟
Loading
/
پیمایش به بالا