blockchain: در یک بلوک چیست؟

  • 2022-09-21

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

ساختار یک بلوک

بلوک یک ساختار داده کانتینر است. در دنیای بیت کوین ، یک بلوک به طور متوسط بیش از 500 معاملات را شامل می شود. به نظر می رسد اندازه متوسط یک بلوک 1MB (منبع) است. در Bitcoin Cash (یک چنگال سخت از blockchain بیت کوین) ، اندازه یک بلوک می تواند تا 8 مگابایت افزایش یابد. این امر باعث می شود معاملات بیشتر در هر ثانیه پردازش شوند.

به هر حال ، یک بلوک از یک هدر و لیست طولانی معاملات تشکیل شده است. بیایید با هدر شروع کنیم.

هدر بلوک

این هدر حاوی ابرداده در مورد یک بلوک است. سه مجموعه مختلف از ابرداده وجود دارد:

بلوک قبلی هش. به یاد داشته باشید که در یک blockchain ، هر بلوک از بلوک قبلی به ارث می برد زیرا ما از هش بلوک قبلی برای ایجاد هش بلوک جدید استفاده می کنیم. برای هر بلوک n ، ما آن را به هش بلوک N-1 تغذیه می کنیم.

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

بخش سوم ریشه درخت مرکل است. این یک ساختار داده برای خلاصه کردن معاملات در بلوک است. و فعلاً آن را در این مورد رها خواهیم کرد. اطلاعات بیشتر در مورد این بعداً

شناسه های بلوک

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

هش هدر بلوک برای این بلوک خاص (ستون سمت راست): 000000000000000000301FCFEB141088A93B77DC0D52571A1185B425256AE2FB

همچنین می توانیم هش بلوک قبلی (ستون سمت راست) را ببینیم: 0000000000000000004B01F01F05DC1275B3ADFD067AED63A4324929BED64FD7

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

راه دیگر برای شناسایی یک بلوک خاص ، ارتفاع بلوک است. موقعیت بلوک در blockchain است. بلوک مثال ما در موقعیت 500312 قرار دارد. این بدان معنی است که قبل از این 500311 بلوک وجود دارد. از زمان ایجاد blockchain بیت کوین در سال 2009 ، 500312 بلوک ایجاد شده است (در زمان نوشتن بدیهی است).

ارتفاع بلوک بی نظیر نیست. چندین بلوک می توانند در مورد یک چنگال ، مانند Bitcoin Cash ، برای همان موقعیت رقابت کنند.

درختان مرکل

معاملات موجود در یک بلوک در ساختاری به نام درخت مرکل یا درخت هش باینری موجود است.

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

به عنوان مثال: ما یک بلوک با 4 معاملات داریم. به خاطر سادگی ، هر معامله یک رشته است:

از حالت تمام صفحه خارج شوید

برای ساختن درخت مرکل خود، از پایین شروع می کنیم. ما هر تراکنش را می گیریم و آنها را دابل هش می کنیم. من از بسته js-sha256 در اینجا استفاده خواهم کرد.

از حالت تمام صفحه خارج شوید

باشه عالیه. حالا به یاد داشته باشید که من نوشتم درخت مرکل ساخته شده است که جفت گره ها را درهم می کند. بنابراین، ما تراکنش‌های خود را جفت می‌کنیم و هش‌های آن‌ها را به هم متصل می‌کنیم. سپس، ما آنها را نیز دو برابر خواهیم کرد. ما یک هش با استفاده از هش های hA و hB و دیگری برای hC و hD ایجاد خواهیم کرد. سپس، این فرآیند را تا زمانی تکرار می کنیم که فقط یک هش باقی بماند و جفت دیگری برای کار با آن باقی نماند. آخرین هش ریشه مرکل ما خواهد بود.

تنها با چهار تراکنش، این بسیار سریع خواهد بود:

از حالت تمام صفحه خارج شوید

گره بالای درخت مرکل را ریشه می نامند. این اطلاعاتی است که در هدر بلوک در هر بلوک روی بلاک چین ذخیره می شود. اینگونه تراکنش ها در هر بلوک خلاصه می شوند. در بلوک مثالی که قبلا داده شد، ریشه merkle را می توان در ستون سمت راست پیدا کرد: a89769d0487a29c73057e14d89afafa0c01e02782cba6c89b7018e5129d475cc

مهم نیست که چه تعداد تراکنش در یک بلوک وجود دارد، آنها همیشه با یک هش 32 بایتی خلاصه می شوند.

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

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

شما می توانید با ایجاد یک مسیر احراز هویت یا مسیر merkle ثابت کنید که هر تراکنش در یک بلوک گنجانده شده است. شما فقط باید هش های 32 بایتی پایه log 2 (N) را بدانید. مثلا:

-برای 4 تراکنش من درخت مرکل:

log base 2( 4 ) = 2 =>اگر من یک مسیر 2 هش برای یک درخت 4 تراکنش داشته باشم، می توانم ثابت کنم که آیا یک تراکنش به این درخت مرکل تعلق دارد یا خیر.

برای 16 تراکنش درخت مرکل:

log base 2( 16 ) = 4 =>اگر من یک مسیر 4 هش برای درخت 16 تراکنش داشته باشم، می توانم ثابت کنم که آیا تراکنش متعلق به این درخت مرکل است یا خیر.

log base 2( 1500 ) = 10.55 =>اگر من یک مسیر 11 هش برای درختی با 1500 تراکنش داشته باشم، می توانم ثابت کنم که آیا یک تراکنش به این درخت مرکل تعلق دارد یا خیر.

شاید یک نمودار کوچک کمک کند.

این درخت 16 برگ دارد. با جفت کردن هر برگ درخت خود را از پایین به بالا می سازیم. اکنون، هرکسی می‌تواند ثابت کند که برگ I (به رنگ نارنجی) بخشی از این بلوک است و مسیر را به رنگ سبز نشان می‌دهد. ما فقط 4 هش داریم، اما این کافی است تا بدانیم آیا برگ من به اینجا تعلق دارد یا خیر. به این دلیل است که با آن اطلاعات، ما قادریم تک تک برگ هایی را که نیاز داریم (به رنگ زرد) بسازیم. ما می‌توانیم IJ، IJKL، IJKLMNOP و ریشه را ایجاد کنیم و بررسی کنیم که آیا این هش‌ها مطابقت دارند یا خیر. به همین دلیل است که تقلب یک بلاک چین بسیار پیچیده است. برای تغییر یک چیز به این معنی است که شما باید همه چیز را تغییر دهید.

خب، این تقریباً همان چیزی است که یک بلاک در بلاک چین بیت کوین وجود دارد. امیدوارم که کمک کند!

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.