اصطلاح «تصادفی بودن» یا «Randomness» یعنی الگو یا قابلیت پیشبینی در یک دنباله وجود نداشته باشد. ما در دنیای واقعی و طبیعت نتایج مختلف پرتاب یک سکه، ریختن تاس و شکلهای متفاوت دانههای برف را مشاهده میکنیم. اما در حوزههای دیجیتال نیز این نتایج تصادفی (Randomness) وجود دارند و اهمیت آنها در بلاکچین و وب ۳ بیش از سایر حوزهها است.
امروزه رمزارزها در صدر اخبار دنیای تکنولوژی و اقتصاد قرار دارند. آیا شما فکر میکنید الگوریتمهای استخراج رمزارزها، بر پایه شانس هستند یا تصادفی بودن؟ کسانی که در این بازار سودهای خوبی به دست میآورند و یا دچار شکست و ضررهای مالی هنگفتی میشوند شانس بدی داشتهاند؟
ما در این مقاله به این سوالات پاسخ میدهیم و به بررسی نتایج تصادفی و اهمیت آنها در بلاکچین و وب ۳ میپردازیم.
نتایج تصادفی (Randomness) در دنیای دیجیتال
تصادفی بودن اتفاقات بخشی از زندگی همه ما است. کارهایی مانند کارتخوانی برای خبر از آینده، پرتاب تاس و… مواردی از این دست هستند. جالب است بدانید، انسان در قرن شانزدهم با استفاده از علم ریاضی توانست تفاوت شانس و تصادفی بودن را درک کند. یکی از اولین کاربردهای تصادفی بودن مربوط به مطالعه عدد پی است. اصولی که تصادفی بودن یک دنباله را تعریف میکنند، عبارتند از:
- غیر قابل تکرار بودن: امکان باز تولید فرایند نتایج تصادفی (Randomness) وجود ندارد؛ مگر اینکه توالی اولیه اصلی حفظ شود.
- قابلیت تایید و اثبات: نتیجه باید به طور مستقل قابل اثبات باشد.
- بیطرف بودن: شانس هر یک از نتایج باید برابر و به یک اندازه باشد.
- غیرقابل پیشبینی: نتایج باید غیرقابل پیشبینی باشند. زیرا دادههای تصادفی به صورت ناشناخته هستند.
- ضد دستکاری: فرایند تولید نتایج تصادفی باید قابلیت دستکاری نداشته باشند.
با ظهور مبانی احتمال در ریاضی، استفاده از اعداد تصادفی برای ایجاد الگوریتمها و سیستمهای رمزنگاری یکی از فناوریهای اساسی در ایجاد دنیای دیجیتال و به خصوص امنیت آن است.
تصادفی بودن نتایج و اهمیت آن در بلاکچین
بلاکچین یک فناوری دیجیتال است که آن را برای تامین امنیت کاربران طراحی کردهاند. یکی از نکات اساسی بلاکچین، تصادفی بودن این فناوری است که اهمیت زیادی دارد. بنابراین، پیشرفت این فناوری باعث پیشرفت تصادفی بودن آن نیز میشود. ایمن بودن فرایند تولید نتایج تصادفی (Randomness) ، مهمترین اصل رمزنگاری در بلاکچین است.
کامپیوترها نمیتوانند اعداد تصادفی واقعی را نمایش دهند، اما وجود یک مولد میتواند الگوریتم تولید نتایج تصادفی را ایجاد کند. این مولد از پارامترهایی پیروی میکند که در نهایت میتوان با روشهای ریاضی و احتمال آن را مورد مطالعه قرار داد.
به عنوان مثال، کاری که کیف پول بیتکوین هنگام ایجاد یک کلید بیتکوین با استفاده از طرح ECDSA و منحنی secp256k1، انجام میدهد، انتخاب یک عدد تصادفی و استفاده از آن در این فرمول ریاضی است:
y^2 = x^3 + ax + b
اگر شما میخواهید از “تصادفی بودن به اندازه کافی” اطمینان پیدا کنید، کامپیوترها به طور بینظم و منحصر به فرد این کار را انجام میدهند. در عین حال، آنها میتوانند محاسبات لازم را برای حل این فرمول در زمان بسیار کوتاهی پیش ببرند. پس ما میتوانیم به یکی از امنترین اشکال رمزنگاری شناخته شده تا به امروز دسترسی پیدا کنیم.
با توجه به این موضوع بسیاری از توسعهدهندگان بلاکچین به دنبال تبدیل دادههای درون این شبکهها به تولید کنندههای تصادفی هستند. در ضمن این رقص تصادفی سازی نباید قابل پیشبینی باشد. اما این کار چگونه انجام میشود؟
هش بلوک (block hash)
یکی از ابزارهای دستیابی به این هدف، هش کردن بلوک است که در آن از هش بلوکها، تراکنشها یا ترکیبی از آنها به عنوان یک منبع تصادفی استفاده میشود. یک بلوک پس از اضافه شدن به بلاکچین برای همیشه در آنجا باقی میماند. پس همه میتوانند صحت اعداد تولید شده را چک کنند. نکته مهم و قابل توجه اینکه، هشها را میتوان توسط ماینر دستکاری کرد؛
این مشکلی است که برای یک تولید کننده اعداد تصادفی قابل پذیرش است. بنابراین، از این سیستم خیلی کم استفاده میکنند. تابع هش رمزنگاری در تولید کلید خصوصی تمام ارزهای دیجیتال، وجود دارد. جستجوی جواب و خروجی تابع در شبکه بلاکچین در یک فضای بسیار بزرگی انجام میشود. برای مثال تعداد ترکیبهای کلید خصوصی در تابع SHA-256 رمزارز بیت کوین را میتوان با تعداد اتمهای موجود در دنیا برابر دانست.
اوراکل (Oracle)
یکی دیگر از روشهای ایجاد نتایج تصادفی (Randomness) در بلاکچین از طریق اوراکلها است. پروژههایی مانند Provable, Uniswap TWAP , Chainlink VRF نمونههایی از این سیستم هستند. این سیستمها دادهها را از منابع خارجی جمعآوری میکنند. سپس آنها را پردازش و مجموعهای عظیمی از دادههای تصادفی را تولید میکنند. کاربران میتوانند از این دادهها استفاده کنند. نکته قابل توجه اینکه، این سیستم غیر متمرکز است و از تعداد زیادی منابع تصادفی به صورت موازی استفاده میکند و دادههای تصادفی توسط یک تست رمزنگاری، تایید میشوند.
نتایج تصادفی (Randomness) در وب 3 و اهمیت آن
عامل تصادفی بودن نتایج (Randomness) در طبیعت و دنیای فیزیک کاربردهای زیادی دارد و این پدیده در دنیای کریپتوکارنسی و بلاکچین تاثیر مثبتی داشته است. توانایی دسترسی به یک منبع تصادفی بیطرفانه و دارای امنیت، بسیار مهم است.
به بیان دیگر، شبکههای بلاکچین و پروژههای وب 3 جایگاه امروزی خود را مدیون وجود نتایج تصادفی هستند که امنیت آنها را نیز تضمین میکند؛ تعیین نتیجه بازیهای بلاکچین ، هنرهای دیجیتال، پروژههای NFT از این موارد هستند. در واقع، بدون استفاده از فرایند تصادفی در خروجی تابع هش در الگوریتم اجماع PoW، امنیتی در شبکههای بلاک چین وجود ندارد.
PoW چیست؟
تامین امنیت ارزهای دیجیتال از جمله بیت کوین و اتریوم با استفاده از الگوریتمهای اجماع است. الگوریتم اجماع اثبات کار یا Proof of Work | PoW اولین الگوریتم اجماع استفاده شده در ارزهای دیجیتال است. این الگوریتم مکانیسمی برای جلوگیری از Double-spend یا خرج مضاعف توکنهای ارز دیجیتال است.
با توجه به اینکه در شبکه بیت کوین هیچ نهاد متمرکزی برای بررسی صحت اطلاعات وجود ندارد، کاربران باید با استفاده از یک الگوریتم کامپیوتری به اجماع برسند و همه آنها اطلاعات یکسانی را به شبکه اضافه کنند. PoW شرایطی را برای ماینرها تعیین میکند که همگی اطلاعات درست و یکسانی را به بلاکچین اضافه کنند.
RNG و PRNG چیست؟
RNG یا مولد اعداد تصادفی، الگوریتمی برای تولید اعداد تصادفی است که از الگوریتمهای ریاضی برای تولید اعداد شبه تصادفی استفاده میکند. مثلا بسیاری از بازیهای مدرن از این اعداد تصادفی برای تشخیص اتفاقات در بازی استفاده میکنند. RNGها دارای محدودیت هستند. آنها کند و دارای منابع فشرده هستند؛ در نتیجه با توجه به سرعت سریع تراکنشهای بلاکچین، مناسب نیستند.
اینجاست که مولدهای اعداد شبه تصادفی PRNG وارد عمل میشوند. آنها به دلیل کارایی و سرعت خود در فناوری بلاکچین کاربرد دارند. این مولدهای اعداد تصادفی، از Seed استفاده میکنند. در واقع Seed ورودی برای محاسبههای خروجی است.
PRNGها عملیات ریاضی پیچیدهای را روی دادههای اولیه اجرا میکنند. آنها توالیهایی را تولید میکنند، که از نظر آماری از توالیهای تصادفی واقعی قابل تشخیص نیستند.
جمع بندی
امروزه با توجه به گستردگی استفاده از ارزهای دیجیتال و فضای بلاکچین از دادههای تصادفی استفاده زیادی میشود و شما میتوانید در اینترنت به صورت ایمن به فعالیتهای خود بپردازید. اکثر قراردادهای هوشمندی که نیاز به این اعداد دارند از اوراکلها استفاده میکنند.
همانطور که در این مقاله اشاره کردیم دادههای تصادفی باید غیر قابل پیشبینی، غیر قابل تکرار و دارای خاصیت تایید و اثبات باشند. اهمیت این دادهها در شبکه بلاکچین و وب ۳ با توجه به وجود پروژههای NFT و بازیهای بلاکچین بسیار زیاد است. نقش نتایج تصادفی (Randomness) در تامین امنیت شبکههای بلاکچین به اندازهایست که بدون استفاده از آنها در خروجی تابع هش در الگوریتم اجماع امنیت شبکههای بلاکچین و وب ۳ برقرار نخواهد شد.
سوالات متداول
چرا نتایج تصادفی (Randomness) در بلاکچین اهمیت زیادی دارند؟
نتایج تصادفی (Randomness) در بلاکچین برای امنیت و یکپارچگی سیستم بسیار مهم هستند. درواقع، تصادفی بودن از دستکاری و سوگیری جلوگیری میکند. این نتایج سیستمهای بلاکچین را در برابر نفوذ مخربها مقاوم میکنند.
اعداد تصادفی چگونه تولید میشوند؟
یکی از روشهای تولید اعداد تصادفی استفاده از تکنیکهای رمزنگاری برای ایجاد نتایج غیرقابل پیشبینی است. روش دیگر استفاده از اوراکلهای خارجی برای تولید اعداد تصادفی قابل اعتماد و غیرقابل پیشبینی است.
تفاوت شانس و تصادفی بودن در ارز دیجیتال و الگوی اثبات کار چیست؟
شانس به احتمال وقوع یک رویداد اشاره میکند که معمولاً عواملی مانند احتمالات بر روی آن تاثیر میگذارند. در حوزه ارزهای دیجیتال شانس را میتوان در بخشهایی مانند پاداش استخراج در PoW مشاهده کرد. ماینرها برای حل مسائل پیچیده ریاضی با هم رقابت میکنند و شانس حل هر مسئله توسط ماینر به قدرت محاسبات آنها بستگی دارد.