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

منتشر شده در گروه : امنیت شبکه - اینترنت

چرا ایتریوم (Ethereum)؟

25 آوریل 2018 نوشته شده توسط 

 چرا بلاکچین ایتریوم، وقتی که بلاکچین بیت کوین وجود دارد؟

 زمانی که در مورد یک فناوری جدید مطالعه می کنید، یکی از اولین مواردی که می بایست در مورد آن بررسی کنیم، این است که آیا در راه توسعه و استفاده از این فناوری چه محدودیت هایی وجود دارد. درمورد بلاکچین ایتریوم این سوال را مطرح کرده ام؛

 زمانی که بلاکچین بیت کوین وجود دارد، چرا باید از بلاکچین ایتریوم استفاده کنیم؟

 در این مطلب سعی خواهم کرد تا پاسخی برای این سوال ارائه دهم، امیدوارم که بتواند مفید باشد.

 ایتریوم در واقع فقط یک بلاکچین نیست و خیلی بیشتر از آن می باشد.

 ایتریوم یک ساختار می باشد

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

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

 ساختار ایتریوم

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

 در ایتریوم همانند بیت کوین، هیچ کسی امکان کنترل بر روی آن را ندارد.

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

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

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

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

 اما کمی صبر کنید، کاربردهای امن و بدون نیاز به اعتماد می توانند توسط بلاکچین بیت کوین نیز ایجاد شوند، در صورتی که در بلاکچین ایتریوم به طور واقعی عملیات به صورت گسترده و بدون نباز به ایجاد اعتماد می توانند انجام شوند، این کار را بلاکچین بیت کوین نیز می تواند انجام دهد، چرا ایتریوم؟

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

 ابزارهای صحیح برای ساختن آینده

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

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

 خوب اکنون سوال این است که این موضوع چه ارتباطی به بحث ما دارد.

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

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

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

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

 UTXOها

 [1]UTXO مفهومی است که برای اولین بار در بررسی تراکنش های بیت کوین با آن مواجه شدم. البته قصد نداریم که به بیان جزئیات در مورد آن بپردازیم.

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

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

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

 2.      هر مقدار بیت کوینی که دریافت می کنید، بر حسب آدرسی که دریافت می کنید، قفل شده است، که معمولا هم کیف پول الکترونیکی (wallet) می باشد.

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

 4.       آدرس ها بیت کوین ها را دریافت می کنند، اما آنها بیت کوین ها را ارسال نمی کنند، بیت کوین ها از طریق کیف پول الکترونیکی (wallet) ارسال می شوند.

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

 پس اگر در کیف پول الکترونیکی بیت کوین قرار ندارد، پس چه چیزی قرار دارد؟

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

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

 این تراکنش ها با یکدیگر ترکیب نمی شوند و همگی با همان ترتیبی که وارد کیف پول می شوند، نگهداری می شوند. به عبارت دیگر اگر تراکنش شماره 1 به اندازه دو بیت کوین باشد و تراکنش شماره دو دارای 4 بیت کوین باشد و تراکنش شماره 3 به ارزش 5 بیت کوین باشد، در کیف پول الکترونیکی شما سه تراکنش جداگانه نگهداری می شود.

 البته جمع موجودی ابف پول شما عدد 11 بیت کوین را نشان خواهد داد، اما تراکنش هر یک ا آنها به طور جداگانه نگهداری می شود.

 اما اکنون به ارائه پاسخی برای این سوال اصلی می پردازیم، چرا ایتریوم و نه بیت کوین؟

 پیچیدگی بیت کوین

 اکنون می خواهیم 3 بیت کوین برای یکی از دوستان خود ارسال کنید. مشکلی نیست، شما اکنون به اندازه 11 بیت کوین در کیف پول الکترونیکی خود دارید و می توانید این تعداد بیت کوین را ارسال کنید.

 اما باید به اینکه توجه داشته باشید که اکنون در کیف پول شما سه تراکنش مختلف که مجموعا 11 بیت کوین ارزش دارند، قرار دارد. مشکلی که در مورد زبان برنامه نویسی بیت کوین وجود دارد این است که در دستورات نمی توانید مقدار بیت کوین را مشخص کنید (Value-blind).

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

 اکنون مشکل را با جزئیات مورد نظر مطرح می کنیم.

 برای ارسال 3 بیت کوین برای دوست خود، ابتدا باید تراکنشی را برای این کار ایجاد کنید، برای این کار مراحل زیر انجام می شود:

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

 2.      باید اثبات کنید که ورودی مورد نظربه شما تعلق دارد.

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

 اکنون توجه کنید که در کیف پول خود سه تراکنش مجزا دارید که هیچ دارای مقدار 3 بیت کوین نمی باشند. این سه تراکنش به ترتیب دارای مقادیر 2و 4و 5 بیت کوین می باشند.

 برای ارسال 3 بیت کوین، ممکن است که بگویید به سادگی می توانیم همان تراکنش 4 بیت کوین را استفاده می کنیم و از آن سه بیت کوین را ارسال می کنیم، اما پاسخ به این سادگی نمی باشد، زیرا با این کار تمام 4 بیت کوین را مصرف خواهید کرد و دیگر از باقی مانده آن نمی توانی استفاده کنید.

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

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

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

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

 ساختن آینده

 در صورتی فناوری بلاکچین می تواند به جایگاه  واقعی و درخور خود برسد که بتواند قابلیت ها و امکانات خود را با انعطاف پذیری و سادگی در اختیار تولید کنندگان کاربردهای مختلف در ساختار بلاکچین قرار دهد.

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

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


[1] Unspent Transaction Outputs

 

 

آخرین تغییرات در 01 می 2018
بازدید 1388 دفعه
امتیاز این مطلب
(0 رای)
نشانه گذاری شده در
مدیر تارنما

مهندس مهران تاجبخش

نام سایت : www.mehrantajbakhsh.com
برای ارسال نظر ابتدا وارد سایت شوید

تازه ترین مطالب