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

ساخت وبلاگ

مسدود کردن / بیت کوین / ارز رمزنگاری / تراکنش / برنامه های غیرمتمرکز / نرم افزار / برنامه نویسی / کد / هش / C# / توسعه / فناوری / شبکه / استخراج / اعتبارسنجی / ورودی هزینه نشده / طرحواره / توضیح داده شده / بیت کوین / تراکنش / کیف پول./ بلاک چین / بیت کوین / ارز دیجیتال / تراکنش / برنامه های غیرمتمرکز / نرم افزار / برنامه نویسی / کد / هش / سی شارپ / توسعه / فناوری / شبکه / استخراج / اعتبارسنجی / ورودی هزینه نشده / طرح / توضیح داده شده / بیت کوین / تراکنش / کیف پول.

چکیده مقاله تحقیقاتی در زمینه علوم کامپیوتر و اطلاعات، نویسنده مقاله علمی - O. O. Brylov، K. Y. Ostrovskaya، A. I. Mikhalyov

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

از بنرها خسته شدم؟همیشه می توانید تبلیغات را غیرفعال کنید.

موضوعات مرتبط مقالات علمی در علوم کامپیوتر و اطلاعات، نویسنده مقاله علمی - O. O. Brylov, K. Y. Ostrovskaya, A. I. Mikhalyov

مطالعه پروتکل بلاک چین بار دیگر در مورد فناوری بلاک چین مقایسه زمان انتظار بلوک برای الگوریتم های اجماع مختلف بلاک چین به عنوان پایه اقتصاد دیجیتال روش های بی هویت سازی کاربران بیت کوین من چیزی را که نیاز دارید پیدا نمی کنم؟یک سرویس انتخاب را امتحان کنید. از بنرها خسته شدم؟همیشه می توانید تبلیغات را غیرفعال کنید.

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

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

متن کار علمی در مورد موضوع "مشکلات اعتبارسنجی معاملات در blockchaping و روش های راه حل های آنها"

O. O. بریلوف ، K. Y. Ostrovskaya ، A. I. میخائولف

آکادمی ملی متالورژی اوکراین

مشکلات اعتبارسنجی معاملات در blockchaping و روش های راه حل های آنها

مقاله ای شامل مروری بر فناوری blockchain ، اصلی اصلی برنامه نویسی آن است. چندین جنبه مهم مورد تجزیه و تحلیل قرار گرفته است: راه حل های بهینه برای اعتبارسنجی معاملات و الگوریتم های Consens بین گره ها در شبکه غیرمتمرکز blockchain. یک معامله خودکفا انجام می شود که به خودی خود اطلاعاتی در مورد کفایت وجوه در فرستنده را ذخیره می کند. این به شما امکان می دهد تا تاریخ عشق هر رمزنگاری این سیستم پرداخت را ردیابی کنید: چه ظاهر شود ، در آن معاملات شرکت کرده است. این الگوریتم مشکل هزینه های مضاعف را حل می کند.

واژه های کلیدی: مسدود کردن ، بیت کوین ، ارز رمزنگاری ، معامله ، برنامه های غیر متمرکز ، نرم افزار ، برنامه نویسی ، کد ، هش ، C #، توسعه ، شبکه ، معدن ، معدن ، معدن ، اعتبار سنجی ، ورودی ناخواسته ، طرحواره ، توضیح داده شده ، بیت کوین ، معامله ، معامله ، کیف پول.

O. O. بریلوف ، K. YU. Ostrovska ، O. I. میخالف

آکادمی آکادمی آکادمی

مشکلات val1dacp transaktsov در blockchain به methout ix vir1

فن آوری blockchain ، اصول II RODBTS ProgramN'1 'ارائه شده است. etAPI اصلی بشکه برنامه ای از blockchain مورد تجزیه و تحلیل قرار می گیرد ، Vidminosti Real1 Zatsiki Nereviks از transactics ، توضیحات روش ، ویسورستان در Btkovs از بیت کوین خارج است. Real1 Bagatatorivna transactzia ، Yak در Samsh zber^ae tormatzt در مورد یک کاشتیوی مشترک از دادخواست vid است. TSE اجازه می دهد چرخه Formwati Zhytteviy از پوست سیستم های Krtomoneti Danoga Plati: اگر این زجا بود ، سرنوشت انگل را گرفت. الگوریتم Virschui مشکل پنجره رنگ آمیزی غیرقانون ی-شیشه ای Koshtiv.

کلید کلمه: blockchain ، btakon ، cryptocurrency ، transaque ، غیر متمرکز با برنامه ها ، نرم افزار ، sigraman ، code ، hash ، c #، rosor ، فناوری ، meretng ، valityatzia ، ورودی ناآگاه ، توضیح داده شده ، بیت کوین ، انتقال ، کیف پول.

A. A. بریلف ، E. YU. Ostrovskaya ، A. I. میخالف

آکادمی ملی متالورژی اوکراین

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

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

واژه های کلیدی: blockchain ، بیت کوین ، cryptocurrency ، معامله ، برنامه های غیر متمرکز ، نرم افزار ، برنامه نویسی ، کد ، هش ،#، توسعه ، فناوری ، شبکه ، معدن ، اعتبار سنجی ، ورودی بدون اندازه ، طرح ، توضیح داده شده ، بیت کوین ، معامله ، کیف پول.

فرمولاسیون مشکل

کلمه "blockchain" حضور قابل توجهی در برنامه نویسان ، سرمایه گذاران و در کل ، جامعه گسترده تری دارد ، افرادی که مراقب نوآوری های صنعت فناوری اطلاعات هستند. بخش عمده این علاقه ناشی از کسب درآمد سریع ارزهای رمزنگاری شده ، قدردانی غیرقابل پیش بینی بیت کوین است ، و به زودی بعداً ، سکه های Opher ، پرتاب فقط به این امر نمی رسد. اجماع در بین امور مالی که ارزهای رمزنگاری شده در اقتصاد جهانی جایگاه مشخصی دارند ، در حالی که کارشناسان برنامه نویسی و مهندسی اعتماد به نفس به blockchain هستند ، فناوری دستیابی به موفقیت است که می تواند در منطقه تقریباً مهم زندگی و جامعه اعمال شود [1 ].

ارائه مطالب تحقیق اصلی

بگذارید به طور خلاصه هسته اصلی blockchain را شرح دهم. به طور کلی ، blockchain چیزی غیر از ساختار داده نیست - لیست یا لیست مرتبط (از نظر C#) ، که مجموعه ای از قوانین قطعی را پیاده سازی می کند. بلوک blockchain یک موجودیت است که داده ها و چندین ویژگی دیگر را ذخیره می کند. داده های ذخیره شده در داخل بلوک ، "معامله" با "معامله" تماس گرفته می شوند حتی اگر پروژه خاص به امور مالی و cryptocurrency متصل نشود. بنابراین ، در این مقاله از Transe Transaction ، Block ، Blockchain استفاده خواهم کرد.

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

هر داده ای، صرف نظر از نوع داده (اعداد صحیح، نمادها، رشته ها، اشیاء) را می توان به قالب معمولی، معمولاً به رشته ارسال کرد. علاوه بر این، هر رشته ای با طول دلخواه، با استفاده از الگوریتم های رمزنگاری، می تواند به آرایه ای از نمادها با طول ثابت (رشته بیت) ریخته شود. چنین الگوریتم هایی معمولاً "هش" نامیده می شوند: اعمال هش در رشته ورودی منجر به یک رشته خروجی با طول ثابت می شود. تغییر حتی یک کاراکتر در رشته ورودی همیشه منجر به یک رشته خروجی کاملاً متفاوت می شود.

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

طرح 1 - ساختار بلوک و ساخت بلاک چین

هش بلوک فعلی در بلوک گنجانده نشده است، بلکه رشته ای از کل محتوای آن است. در بلوک بعدی نوشته شده است. بنابراین، هر تغییری که در بلوک 10 ایجاد شود، منجر به وضعیتی می شود که هش خروجی آن دیگر با هش قبلی بلوک 11 برابری نمی کند. از آنجایی که تأیید برابری هش ها ساده است و به منابع محاسباتی زیادی نیاز ندارد، یکپارچگی کلبلاک چین ساده است و می توان آن را فوراً کنترل کرد. به لطف آن، بلاک چین از امنیت بالایی برخوردار است [7].

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

بلوک عمومی (int i، Transaction TransactionData، stringprev = "")

Data = TransactionData; برچسب زمانی = DateTime. Now; PreviousHash = قبلی; Hash = CalculateHash();

که در آن مهمترین متد - CalculateHash() - ممکن است به این صورت تعریف شود:

رشته عمومی CalculateHash()

StringBuilder sb = new StringBuilder();

رشته برای رمزگذاری = فهرست. ToString() + PreviousHash + timestamp. ToString() + Data. ToString() +

با استفاده از (sha256hash = sha256managed. create ())

رمزگذاری ENC = رمزگذاری. UTF8 ؛

بایت [] نتیجه = hash. computehash (enc. getBytes (toEncrypt)) ؛

foreach (بایت b در نتیجه)

بازگشت SB. toString () ؛

دومین اصلی اصلی اکثر پروژه های blockchain عدم تمرکز در ذخیره سازی داده ها است. طبیعتاً برای انسان ، هنگامی که فرد باید از چیزی ارزشمند محافظت کند ، سعی می کند آن را امن ترین مکان مخفی کند و آن را تا حد امکان قفل کند. اما ، در صورتی که متجاوز موفق به محافظت از محافظت شود ، هیچ چیز دیگری برای جلوگیری از تخریب یا تغییر داده ها وجود ندارد. حتی بیشتر ، در برخی شرایط واقعیت

نفوذ ذخیره همیشه آشکار نیست. پروژه های blockchain رویکرد متضاد را اجرا می کنند. نسخه های داده ها در چندین گره جداگانه ذخیره می شوند. تغییر داده ها در یکی از گره ها به طور خودکار منجر به تغییر داده ها در سایر موارد نمی شود. برعکس ، به محض مشخص شدن اختلاف ، گره ، که تغییر یافته (یا هک شده است) ، داده های اصلی را با همگام سازی با همسالان بازیابی می کند. احتمال مداخله همزمان و هماهنگ در گره های متعدد به طور قابل توجهی پایین تر است و با افزایش تعداد شرکت کنندگان در شبکه ، حتی پایین تر می شود [2].

چندین مدیر دیگر وجود دارد که در اکثر پروژه های blockchain استفاده می شوند: اثبات کار-استفاده از الزامات قطعی برای هش بلوک (به عنوان مثال ، باید با چندین صفر شروع شود) ، اثبات سهام و سایر روشهای تأییداز معاملات داده ها شامل ، قراردادهای هوشمند ، اما بیشتر این اصول ضروری نیستند و ممکن است با توجه به نیازهای خاص پروژه ، اجرای متفاوتی داشته باشند.

برای توصیف اساسی ترین موضوعاتی که باید برنامه نویس blockchain را حل کند ، ارزش دارد که مختصراً از ساختار شبکه غیرمتمرکز که از این پروژه استفاده می کند: شرکت کنندگان هستند ، نقش و کارکرد آنها چیست.

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

گره ها داده ها را ذخیره می کنند و به طور دائم آنها را از طریق شبکه پخش می کنند. کاربران معاملات انجام می دهند. معدنچیان بلوک ایجاد می کنند. نوع آخر به نام "معدنچیان" زیرا اکثر پروژه های blockchain اصلی اثبات کار را اجرا می کنند ، که برای جلوگیری از انتشار بلوک کنترل نشده طراحی شده است. برای ایجاد بلوک جدید ، مشکل ریاضی دشوار که نیاز به قدرت رایانه ای اساسی دارد باید حل شود. اما به طور کلی ، معدنچیان چیزی بیش از گره نیستند ، که در خدمت blockchain هستند [7].

کاربران معاملات را انجام می دهند (لزوماً به معنای مالی نیست. ممکن است این قراردادها ، ایجاد پرونده ، رای گیری ، غیره باشد). گره ها معاملات دریافت می کنند و آنها را پخش می کنند. معدنچیان معاملات را جمع می کنند و بلوک هایی را ایجاد می کنند که شامل معاملات می شود و آنها را به نزدیکترین گره ها منتقل می کنند. گره بلوک جدیدی پیدا می کند ، آن را تأیید می کند ، آن را به blockchain و پخش blockchain به روز شده به گره های همکار وصل می کند.

گره ها: blockchain را ذخیره کنید ، بلوک های پیوست ، پخش معاملات

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

طرح 2 - نقشه عمومی تعامل شرکت کنندگان در شبکه

بدیهی است که این ایده و همچنین اجرای برنامه نویسی آن پیچیده به نظر نمی رسد. اما توسعه دهنده نرم افزار که روی چنین پروژه ای کار می کند ، در ابتدا با چندین مسئله روبرو است. این موضوعات ممکن است انواع مختلفی از راه حل های ممکن داشته باشد و هدف از این مقاله بررسی چنین راه حل هایی است. اگرچه ، همانطور که در بالا به آن اشاره کردم ، فناوری blockchain فقط به ارزهای رمزپایه محدود نمی شود ، بلکه دارای انواع برنامه های کاربردی است ، در مثالهای زیر از نمونه ها و اصطلاحات Cryptomoney استفاده می کنم زیرا این امکان را می دهد تا مسائل را آسان تر و واضح تر توصیف کنم. بنابراین مثالهای من مبتنی بر اجرای احتمالی blockchain برای هدف معاملات مالی است.

اولین مشکل مربوط به روش ها و الگوریتم های اعتبارسنجی معاملات است. به عنوان مثال ، کاربر جان می خواهد Cryptocoins 10 Cryptocoins را به کاربر Natalia 10 ارسال کند. او با استفاده از برخی از رابط کاربری ، معامله را آماده و تکمیل می کند. نزدیکترین گره عملکردی این معامله را دریافت می کند. بدیهی است ، چنین گره ای باید قبل از پخش این معامله را تأیید کند. در حالت مخالف ، بلوک های آینده ممکن است شامل معاملات نادرست باشد تا قدرت محاسبات معدنچیان هدر رود.

معامله بسیار اساسی شامل پنج ویژگی است: آدرس فرستنده ، آدرس گیرنده ، مقدار و زمان سنج. برای آسانتر کردن اعتبار سنجی ، ما همچنین شامل TransactionHash Transactionhash هستیم که نشان دهنده هش از سایر خصوصیات است.

معامله کلاس عمومی

ارسال کننده رشته عمومی رشته عمومی دریافت کننده اعشاری عمومی DateTime Timestamp عمومی

TransacationHash رشته های عمومی

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

برای کار کردن الگوریتم ، باید ابتدا تصمیم بگیریم که داده های کاربران در کجا و چگونه ذخیره می شوند (حساب ها معمولاً رشته بیت طول ثابت را نشان می دهند) و داده های معاملات را تکمیل می کنند. در حین تدوین یک پروژه blockchain ، من دو روش ممکن را آزمایش کردم:

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

2. حساب های کاربر موجود در blockchain. هر بلوک دارای یک لیست کامل از حساب های ثبت شده است.

مزایای نوع اول موارد زیر است: blockchain با داده ها کمتر بارگیری می شود ، هر بلوک کوچکتر است و در واقع ، اعتبارسنجی معامله ساده است ، کد برنامه نویسی کوتاه تر است. اما برخی از معایب نیز وجود دارد: اشیاء اضافی ایجاد می شوند ، و ما باید روی هماهنگ سازی ، امنیت چنین اشیاء کار کنیم و به طور بالقوه ، شبکه کمتر تمرکز می شود.

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

بنابراین اعتبارسنجی معامله با تأیید وجود گیرنده آغاز می شود. در صورت ذخیره حساب های ثبت شده در لیست جداگانه ، چنین لیستی باید در حالی که مسابقه یافت نمی شود تکرار شود. اگر داده های کاربر ذخیره شده در blockchain ، گره باید در حالی که مسابقه پیدا نشده است ، یک کلکشین را تکرار کند.

BOOL ISVALIDADDREDYES (معاملات SOMETRANSACTION ، لیست لیستوفال Accounts)

if (sometransaction. sender == sometransaction. recipient) بازگشت کاذب ؛bool isvalidsender = false ؛bool isvalidrecipient = false ؛

foreach (حساب حساب در ListOfallAccounts)

if (sometransaction. sender == Account. Address) isvalidsender = true ؛

if (sometransaction. recipient == Account. Address) isValidRecipient = true ؛

if (isValidRecipient && isValidSender) درست است ؛در غیر این صورت نادرست است.

تأیید کفایت وجوه کار جالب تر است. در خدمات بانکی سنتی ، بانک ها همیشه مانده حساب را ذخیره می کنند: میزان وجوه موجود برای هزینه. بنابراین برای انجام یک معامله کلاهبرداری (صرف مبلغی بیش از وجوه موجود) ، فقط یک شماره باید تغییر کند. چنین تهدیدی با اصولگرایان blockchain مغایرت دارد. برای اطمینان بیشتر اعتبار سنجی ، ممکن است مبلغی از هر معاملات ورودی و آینده مربوط به کاربر خاص را بدست آوریم. تفاوت مثبت بین جمع اول و دوم ، معیار معامله صحیح است. چنین رویکردی مستلزم تکرار کل آرایه معاملات گذشته است ، خواه در لیست جداگانه ذخیره شوند یا در بلوک ها قرار بگیرند.

ISVALIDTRANSACTION عمومی BOOL عمومی (معاملات SOMETRANSACATION ، معاملات هکتاری ، لیست

if (! isvalidaddresses (sometransaction ، listofallaccounts)) بازگشت کاذب ؛اعشاری amountrecieved = 0 ؛

foreach (نمونه معامله در معاملات TransactionsRecipent (sometransaction ، معاملات))

مقدار اعشاری = 0 ؛

foreach (نمونه معاملات در معاملات (SOMETRANSACTION ، معاملات))

retu ((amountRecieved - amountSent - someTransaction.Amount)>= 0) ؛

من چیزی را که نیاز دارید پیدا نمی کنم؟یک سرویس انتخاب را امتحان کنید.

پروژه بیت کوین روش جالب و ظریف دیگری را برای اعتبار سنجی پیاده سازی می کند. این معماری به اصطلاح معامله خودکفا ، معامله ای است که شامل کلیه داده های مورد نیاز برای تأیید وجوه است. در چنین مفهومی ، معامله ممکن است پیوندی به چندین معاملات ورودی و آینده داشته باشد. میزان آینده نباید از مقدار ورودی تجاوز کند. هنگامی که کاربر جان 100 سکه دارد و به ناتالیا 10 سکه می فرستد ، رابط کاربری

به طور خودکار یک معامله اضافی ایجاد می کند: جان 90 سکه باقیمانده را برای خودش می فرستد. هنگامی که جان تصمیم به انجام معامله بعدی گرفت ، 90 سکه-انتقال از عمل قبلی به عنوان معامله ورودی ظاهر می شود [6].

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

مشکل دیگر ، که من می خواهم در این مقاله مرور کنم ، روش ها و الگوریتم های اجماع بین گره ها است که در مورد کدام نوع blockchain به عنوان صحیح در نظر گرفته می شود [5]. هر ارتباطی شبکه با تأخیر در انتقال داده کار می کند. داده ها به هر یک از شرکت کنندگان به صورت متناوب وارد می شوند ، نه در همان لحظه از زمان. گره نزدیکتر ممکن است داده های به روز شده را زودتر از گره از راه دور دریافت کند. بیایید تصور کنیم که دو معدنکار ، که به گره های مختلف متصل هستند ، به طور همزمان شروع به کار روی بلوک جدید کردند. به دلایلی ، First Miner (بیایید او را "Miner A" بنامیم) کار را به پایان رسانده و بلوک تازه ایجاد شده را به نزدیکترین گره خود ("گره A") منتقل کرده و شروع به محاسبه بلوک بعدی کرد. این گره ، که بلوک را به خود اختصاص داده است ، آن را به blockchain وصل کرده و شروع به پخش blockchain به روز شده در سراسر شبکه کرد. چند میلی ثانیه بعد ، معدن دوم ("ماینر B") کار خود را نیز به پایان رساند و آن را به نزدیکترین گره خود ("گره B") منتقل کرد. این فقط یک میلی ثانیه اتفاق افتاده است ، اما هنوز هم قبل از اینکه گره B نسخه به روز شده blockchain را از گره A. دریافت کند ، بنابراین ، گره B همچنین بلوک جدید (ایجاد شده توسط Miner B) را به نسخه قدیمی Blockchain وصل می کند و شروع به پخش آن نیز می کند. یکی از قوانین blockchain "زنجیره طولانی تر غالب است" ، به این معنی که گره ها باید طولانی ترین نسخه blockchain (blockchain حاوی بیشترین تعداد بلوک) را در نظر بگیرند. اما در مورد ما نسخه های گره A و B هنوز دارای طول یکسان هستند ، هرچند آخرین بلوک متفاوت است. چنین نمونه ای "درگیری blockchain" نامیده می شود. هنگامی که (یا if) Miner A بلوک جدیدی ایجاد می کند ، گره A آن را وصل می کند و قبل از اینکه گره B از Miner B بلوک بعدی شود ، شروع به پخش می کند ، گره B باید جدیدترین نسخه blockchain را که توسط گره A پخش شده است ، بپذیرد. اکنون ، blockchain در هر دو گره یکسان است و درگیری برطرف شده است. اما Miner B کار خود را روی بلوک دوم خود ادامه می دهد ، هرچند دیگر معتبر نخواهد بود زیرا هش قبلی آن برابر با هش از جدیدترین بلوک های blockchain نیست. بنابراین منابع Miner B هدر رفته است ، نه تنها برای آخرین بلوک ، بلکه برای مورد قبلی نیز هدر رفته است.

بلوک 10 بلوک 11 __ بلوک 12

طرح 3 - درگیری کوتاه blockchain

این مشکل دو طرف دارد: اول - تعریف الگوریتم بهینه اجماع ، دوم - بهینه سازی استفاده از منابع محاسباتی [4].

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

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

همگام سازی کامل بین گره ها ممکن است زمان بروزرسانی blockchain در گره های جداگانه در پروژه های بزرگتر ، که برای خدمت به گره های واقع در فاصله بسیار دور از یکدیگر طراحی شده است. در چنین حالتی ، ما ممکن است با سناریویی روبرو شویم که ممکن است نسخه های جایگزین blockchain ظاهر شود و مدت طولانی در بخش های از راه دور شبکه زندگی کند. چنین رویدادی "لباس نرم" نامیده می شود. همانطور که در مثال بالا نشان داده شده است ، این بدان معناست که وقتی در نهایت اجماع حاصل می شود ، باید تعداد زیادی از بلوک ها هدر رود. بنابراین ، بسیاری از معاملات که قبلاً در آن بلوک های دور افتاده گنجانده شده اند ، دوباره تأیید می شوند و باید دوباره در بلوک های جدید کار شوند. راه حل جزئی (یا حداقل برخی بهینه سازی) شامل ویژگی اضافی در ساختار بلوک است: تعداد تأیید ، یعنی تعداد گره هایی که این بلوک را به عنوان معتبر پذیرفته اند و آن را به blockchain اضافه کرده اند. این باعث کاهش تجمع درگیری ها می شود: اجماع بین گره هایی که خیلی زودتر از طول نسخه گره یافت می شود. سرانجام ، این اصل "50 ٪+1" را پیاده سازی می کند: اگر چنگال نرم بزرگ اتفاق بیفتد ، شبکه سرانجام نوع blockchain را که بیش از 50 ٪ از تأییدیه ها را جمع می کند ، می پذیرد [6].

نوع blockchain پس از دستیابی به Ecmscrtsus دور ریخته شد

|بلوک 14 -^ |سیاه »j-^ eiocfcie j

طرح 4 - درگیری گسترده - کفپوش نرم

اما مسئله غم انگیز چندین بلوک هدر رفته هنوز هم باقی مانده است. من می توانم دو ایده را برای تحقیقات و آزمایش های آینده ببینم. اولین مورد این است که ، بگذارید بگوییم ، "برنامه ریزی شده نرم". معاملات برای محاسبات بیشتر از قبل به طور کامل بین معدنچیان توزیع می شوند. معدنچیان بلوک هایی را ایجاد می کنند که توسط گره ها به نسخه های blockchain آن وصل می شوند. برای برخی از طول مشخص شده ، به عنوان مثال ، 10 بلوک مجاز است. هنگامی که چندین نسخه به این طول رسیده اند ، محاسبات بلوک های جدید باید متوقف شود تا زمانی که یک بلوک مخصوص اتصال ویژه ایجاد شود. چنین بلوک ویژه ای باید شامل هش هش از همه نسخه های blockchain و نشانگرها به آخرین بلوک های هر دو باشد.

هر دو نسخه hlockrhain ¿Ire mvcd و معتبر

'|بلوک 126~|-»J بلوک 136

طرح 5 - برنامه ریزی شده با کفپوش نرم

ایده دوم ایجاد الگوریتم اثبات کار به گونه ای است تا مشکل ریاضی که باید برای ایجاد بلوک جدید حل شود ، می تواند به قسمت هایی تقسیم شود و قسمت هایی که بین معدنچیان توزیع می شود. می توان یک الگوریتم را پیدا کرد ، که اجازه می دهد تا بلوک را به طور مستقل در معاملات ثبت شود.

هر دو ایده هنوز اجرا نشده اند و نیاز به تجزیه و تحلیل و بحث در آینده و همچنین آزمایش های عمیق برای تعیین پیچیدگی ، منابع مورد نیاز و تحمل گسل دارند. در حد بالا ، این تعریف برای کل فناوری blockchain معتبر است ، زیرا ، با وجود صدها و هزاران پروژه که قبلاً راه اندازی شده است ، فناوری هنوز در مرحله تولد خود قرار دارد. بدیهی است ، پتانسیل عالی است ، حوزه کاربرد بسیار گسترده است [3]. بنابراین ، من معتقدم که توسعه و تحقیقات بیشتر در مورد blockchain یک منطقه عالی از مطالعه و کار برای حداقل یک نسل کامل از مهندسان نرم افزار است.

1. Tapscott Don ، Tapscott Alex. انقلاب blockchain. نیویورک ، 2016.

2. Antonopoulos Andreas M. Mastering Bitcoin. برنامه نویسی blockchain باز. نیویورک ، 2017.

3. Vigna Paul ، Casey Michael J. Age of Cryptocurrency: چگونه بیت کوین و blockchain نظم اقتصادی جهانی را به چالش می کشند. نیویورک ، 2016.

4. واتنهاور راجر. علم blockchain. نیویورک ، 2016.

5. Pease Marshall ، Shostak Robert. مشکل ژنرال های بیزانس. معاملات ACM در زبان ها و سیستم های برنامه نویسی. 1982.

6. Satoshi Nakamoto. بیت کوین: یک سیستم نقدی الکترونیکی همتا به همتا. کاغذ سفید بیت کوین در https: //bitcoin. org/bitcoin. pdf

7. Dorier Nicolas. برنامه نویسی blockchain در C#. https: // programmingblockchain. gitbooks. io/

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

برچسب : نویسنده : محبوب امانی بازدید : 33 تاريخ : چهارشنبه 18 مرداد 1402 ساعت: 16:16