آنچه شما نیاز دارید:
- پیشینه علوم کامپیوتر
- اصول اولیه اتریوم
- مبانی حساب دیفرانسیل و انتگرال (بهینه سازی محدودیت ها)
چه چیزی دریافت خواهید کرد:
- اصول اولیه SNARK های دانش صفر
- اصول اولیه درختان مرکل
- چگونه اتریوم به لطف SNARK ها می تواند به هزاران تراکنش در ثانیه برسد
SNARKها به یک Prover اجازه میدهند تا به تأییدکننده ثابت کند که او یک راهحل W برای مسئله F با ورودیهای مشترک/معروف X دارد، بدون اینکه W را آشکار کند.
یافتن راه حل برای مشکل می تواند به مقدار زیادی قدرت محاسباتی و حافظه نیاز داشته باشد.
بنابراین Verifier اساساً می تواند 100٪ مطمئن باشد که Prover به درستی کار کرده است (و راه حلی پیدا کرده است). بدون اینکه خودش کار را دوباره انجام دهد تا راه حل را بررسی کند و یا اصلاً راه حل را بداند. معجزه است!
فرآیند دارای 3 مرحله است:
- برپایی - مسئله F (که باید به صورت برنامه حسابی درجه دوم بیان شود، به زیر مراجعه کنید) برای SNARK ها آماده شده است. این فرآیند بسته به پیچیدگی مسئله (← تعداد ورودیها و محدودیتها ← بعد ماتریس مسئله رضایت از محدودیتها) دارای حافظه بسیار بالا و محاسبات فشرده است. بازیکنی که Setup را انجام می دهد (ممکن است خود Verifier باشد) باید مورد اعتماد همه طرفین باشد، زیرا خروجی Setup در مراحل بعدی استفاده می شود. تنظیم معمولا با استفاده از libsnark، یک کتابخانه C++ که محبوب ترین پیاده سازی برای zkSNARK ها است.
- اثبات كردن - Prover که راه حل W را برای مشکل F با ورودی های مشترک X دارد (شاید مقدار زیادی از CPU و حافظه را برای یافتن آن صرف کرده است!) از آن استفاده می کند. libsnark و خروجی از برپایی مرحله برای ایجاد یک اثبات 𝚷. این فرآیند قطعا حافظه و محاسبات زیادی دارد (بسته به پیچیدگی مشکل، همانطور که در بالا ذکر شد). اندازه خروجی (یعنی اثبات 𝚷) مستقل از پیچیدگی مسئله مختصر و ثابت است. Prover باید به کسی که مرحله Setup را انجام داده است اعتماد کند، زیرا او از خروجی آن استفاده می کند…
- در حال تأیید - یک تأیید کننده - خروجی مرحله Setup، ورودی های مشترک X و اثبات 𝚷 را به عنوان ورودی می دهد - اثبات را بررسی می کند. اگر راستیآزمایی موفقیتآمیز باشد، Prover موفق شد به یک تأییدکننده ثابت کند که او راهحل W را برای مشکل F پیدا کرده است، بدون اینکه W را فاش کند! بخش خوب این است که نه تنها Proof مختصر است و همیشه طول آن یکسان است، فرآیند تأیید سریع است و اصلاً حافظه / محاسبات فشرده نیست. بر خلاف دو مرحله قبلی ... تأیید را می توان به راحتی با یک تلفن هوشمند در چند میلی ثانیه انجام داد!
یک جمع بندی خوب (منبع):
چگونه ممکن است این اتفاق بیفتد؟ خوب، این جادوی مرلین است! اگر می خواهید ریاضیات پشت این موضوع را بدست آورید، از اینجا شروع کنید.
چگونه می توانم نرم افزار خود را به یک برنامه ریاضی درجه دوم تبدیل کنم؟
همانطور که در بالا ذکر شد، مسئله F فاز راه اندازی باید یک برنامه ریاضی درجه دوم باشد. قوانین بازی سخت است:
- ورودی های نرم افزار شما باید اعداد باشد. موارد خود (آرایه ها، رشته ها و غیره) را به اعداد تبدیل کنید. این پیش پا افتاده است.
- "سیستم معادلات با محدودیت درجه دوم" به این معنی است:
که در آن x بردار n بعدی ورودی های شما، m تعداد محدودیت ها (یعنی تعداد معادلات سیستم شما)، C ماتریس ضرایب n به n و q بردار ضرایب n بعدی است. اگر ماتریس و بردارها را دوست ندارید، در اینجا حالت n = 3 و m = 2 (3 ورودی، 2 محدودیت) وجود دارد:
- پیاده سازی یک مدار حسابی است، به این معنی که نتیجه است مشکل حل شد (سیستم حل می شود، یعنی همه چند جمله ای ها برابر با 0 هستند) یا مشکل حل نشد (همه موارد دیگر). به عبارت دیگر: "این ورودی ها یکی از راه حل های این مشکل نیستند".
- ضرایب C₁، C2393، …، C𝚖، q5647، qXNUMX، …، q𝚖 محدودیت های سیستم هستند. این اساساً چیزی است که نرم افزار شما را تعریف می کند. آنها را تغییر دهید ... و نرم افزار دیگری دریافت خواهید کرد! بازگشت به نحوه کار SNARK ها: CXNUMX، CXNUMX، …، C𝚖، qXNUMX، qXNUMX، …، q𝚖 ورودی مرحله Setup هستند. خروجی مرحله Setup (که برای اثبات و تأیید نیاز دارید) به شدت به آن CXNUMX، CXNUMX، …، C𝚖، qXNUMX، qXNUMX، …، q𝚖 مرتبط است و فقط برای آن مشکل کار می کند. اگر آنها را تغییر دهید، نرم افزار/مشکل دیگری را تعریف می کنید و باید مرحله Setup را دوباره اجرا کنید! xXNUMX، xXNUMX، …، x𝗇 متغیرهایی هستند (یعنی آنچه را که باید حدس بزنید تا جواب یک سیستم را بدست آورید). بنابراین وقتی می گوییم "Prover عزیز، لطفاً می توانید یک راه حل مخفی W برای مسئله F با ورودی های مشترک/عمومی X پیدا کنید" منظورمان این است که برای مثال "Prover عزیز، آیا می توانید مقادیر xXNUMX، xXNUMX، ...، x𝗇 را پیدا کنید که سیستم را حل می کند. برای مثال، با x₇ = XNUMX، xXNUMX = XNUMX؟ میتوانید با تمام x𝗇 کاری را که میخواهید انجام دهید، به جز x₇ و x₅XNUMX، که به ورودیهای مشترک/عمومی محدود میشوند.
این یک زندگی سخت است، اما شما می توانید زنده بمانید... اگر به حلقه ها نیاز دارید، می توانید آنها را باز کنید و همان عملیات را بارها تکرار کنید. یا اگر برای مثال به xXNUMX xXNUMX نیاز دارید، یک ورودی جدید xXNUMX = xXNUMX xXNUMX تعریف میکنید و از xXNUMX در محدودیتهای خود استفاده میکنید. همه چیز در مورد اضافه کردن متغیرها و محدودیت ها است… حتی برای نرم افزارهای بسیار ساده، دسترسی به صدها میلیون یا میلیاردها ورودی و محدودیت آسان است!
میخواهی بیشتر بدانی؟ خواندن اینجا کلیک نمایید. و همچنین این پایه را بررسی کنید code_to_r1cs.py از اتریوم/تحقیق.
درخت مرکل چیست؟
تابع هش قاعده ای است که ورودی با اندازه دلخواه را به خروجی با اندازه ثابت نگاشت می کند. ما میتوانیم یک تابع هش بسیار بیفایده ابداع کنیم «دو حرف اول را با دو حرف آخر به هم پیوند دهید» که «وودی آلن» را به «وون» و «پل مککارتنی» را به «پای» تبدیل میکند.
درخت مرکل یک ساختار داده است که در آن هر والدین هش دو پسر خود هستند. در بالا، Root را پیدا می کنید، که هش دو پسر سطح 1 است. در پایین، هر برگ هش یک ورودی خارجی است.
با استفاده از تخیلی ما "وودی آلن" → "Woen" تابع هش:
هنگامی که یک برگ تغییر می کند، اصلاح تا ریشه منتشر می شود. اگر ANTHONY تغییر کند، ANNY (برگ)، CENY و CECO (ریشه) نیز تغییر می کنند. هر برگ تغییر کند، ریشه نیز تغییر می کند.
برای محاسبه مجدد Root به کل درخت نیاز ندارید. در مثال ما، اگر ANTHONY تغییر کند و شما هم JACO و هم CECILY را میشناسید، میتوانید به راحتی ریشه را دوباره محاسبه کنید، حتی اگر جیمز، مارکو، JAES و MACO را کاملا نادیده بگیرید. برای درختان بزرگ این باعث صرفه جویی در زمان زیادی می شود!
پس چه؟
درختان مرکل برای بررسی یکپارچگی داده ها عالی هستند. معمولا: شما می دانید که ریشه معتبر کدام است و بررسی می کنید که داده های دریافتی با آن روت مطابقت داشته باشد. به عنوان مثال: یک شخص مورد اعتماد که نمی تواند کل مجموعه داده های نام افراد روی زمین را به شما بدهد (بدون زمان، بدون پهنای باند یا شاید اصلاً داده ها را نداشته باشد) فقط به شما Root می دهد (مثلاً "CECO"). پس از آن: شما میلیون ها نام کوچک را با ارجاع به شماره برگ، توسط هزاران طرف غیرقابل اعتماد دریافت می کنید. خوب، از آنجایی که شما Root درستی دارید، می توانید بررسی کنید که به چه کسی می توانید اعتماد کنید، چه کسی به شما داده های جعلی می دهد…
درختان مرکل نیز بخشی از زندگی شما هستند! هنگامی که در حال دانلود یک فایل تورنت 3 گیگابایتی هستید، فایل شما به میلیون ها تکه کوچک تقسیم می شود. هش هر تکه در یک برگ ذخیره می شود. از آنجایی که می دانید ریشه درخت معتبر کدام است، هر بار که یک تکه از فایل را توسط شخصی دریافت می کنید، می توانید درستی آن را بررسی کنید. اگر اینطور نیست، می توانید همان قسمت را از شخص دیگری بخواهید.
میتوانید این کار را انجام دهید حتی اگر هنوز کل درخت/همه برگها را دانلود نکردهاید: اگر میدانید که Root CECO است و به JACO اعتماد دارید… وقتی قطعه ANTHONY را دریافت کردید، میتوانید آن را تأیید کنید، حتی اگر دانلود نکرده باشید. هنوز تکه های مارکو و جیمز.
اینکه چرا درختان مرکل در فناوری دفتر کل توزیع شده مفید هستند، واضح است: شما از پروتکل های اجماع (آهسته، گران قیمت) فقط برای دستیابی به اجماع در ریشه استفاده می کنید. سپس گرههای غیرقابل اعتماد شبکه میتوانند به طور مؤثر و مستقیم دادهها را به اشتراک بگذارند... و به لطف بررسیهای یکپارچگی با روت، میتوانند ایمن و سالم بخوابند.
هنگامی که خدا از اتریوم خواست که 2 ابرقدرت را از بین امنیت، مقیاس پذیری و تمرکززدایی انتخاب کند... اتریوم مقیاس پذیری را قربانی کرد. در واقع هیچ سقف قوی برای "معاملات در ثانیه" وجود ندارد: این سقف به مقدار گاز هر بلوک مربوط می شود - که به عبارت ساده تر، مقدار عملیاتی است که من می توانم در هر بلوک انجام دهم. این حد 8 میلیون گاز است. این میتواند به معنای بسیاری از تراکنشهای «ریز» باشد (هیچ دادهای به تراکنشها پیوست نشده باشد، هیچ عملیاتی برای اجرای آن دادهها وجود ندارد) یا چند تراکنش بزرگ. این بستگی به گرههای اتریوم دارد که تراکنشها را ارسال میکنند، و ماینرهای اتریوم که تراکنشهایی را که بیشتر پرداخت میکنند در بلاک قرار میدهند.
یک بلوک استخراج شده است هر ~ 15 ثانیه این به معنای حدود 32 میلیون بنزین در دقیقه است که اگر بخواهیم برنامههای اتریوم به جریان اصلی تبدیل شوند، قطعاً کافی نیست.
به هر حال: به مقایسه های خسته کننده بین اتریوم و ویزا بسنده کنید. یک سیستم متمرکز خواهد شد همیشه از نظر طراحی سریعتر از اتریوم باشید! آنها کارهای مختلفی انجام می دهند و شما در موقعیت های مختلف به آنها نیاز دارید. اگر به تمرکززدایی و محیطی بدون اعتماد نیاز ندارید... البته باید ویزا را انتخاب کنید. به اختصار: این واقعیت که بلندر شما سریعتر از ماشین لباسشویی شما می چرخد به این معنی نیست که شلوار خود را در مخلوط کن تمیز می کنید!
بیایید پازل را کنار هم بگذاریم! تصور کنید به لطف SNARK ها می توانید بسیاری از تراکنش های کوچک را در یک تراکنش بزرگ «فشرده» کنید. اگر گاز مصرف شده توسط این تراکنش بزرگ کمتر از مجموع گاز مصرف شده توسط تراکنش های کوچک باشد، به این معنی است که شما در مصرف گاز صرفه جویی می کنید.
و صرفه جویی در مصرف گاز یعنی:
- کاربرانی که به طور کلی هزینه کمتری برای تراکنش می کنند → این امر فشاری برای کل اکوسیستم خواهد بود
- توانایی قرار دادن چیزهای بیشتری در یک بلوک → اتریوم سریعتر از مخلوط کن شما می چرخد!
چگونه کار می کند؟
کاربرانی هستند، یک رله کننده (یا تعداد بیشتری رله) که تراکنش ها و یک قرارداد هوشمند را جمع می کنند.
- کاربرانی که مایل به بازی این بازی هستند اتر (یا توکنهای) خود را به یک قرارداد هوشمند حسابرسی عمومی ارسال میکنند. برای هر بازیکن جدید یک برگ جدید در درخت مرکل ایجاد می شود. برگ شامل اطلاعاتی در مورد مالک اتر (آدرس او که کلید عمومی نیز هست)، مقدار اتر و نونس (میزان شمارنده تراکنش های آن حساب، که با اضافه شدن برگ 0 می شود) است.
- هنگامی که A می خواهد اتر را به B بفرستد (هر دو باید یک برگ/حساب در قرارداد هوشمند داشته باشند)، A یک تراکنش را بسته بندی می کند که شامل آدرس آن می شود. از جانبحساب ، به حساب ، پیک از حساب از مقدار از اتر به انتقال و امضا تراکنش (بدیهی است که با کلید خصوصی حساب "از" امضا شده است). سپس او تراکنش بسته بندی شده را به رله کننده ارسال می کند.
- رله تمام تراکنش های دریافتی را در یک پنجره زمانی معین (مثلا یک ساعت) جمع می کند، درخت Merkle را با مقادیر موجودی جدید به روز می کند و یک اثبات SNARK ایجاد می کند که ثابت می کند همه امضاها و ریشه درخت Merkle جدید معتبر هستند. رله در نهایت حالت جدید و اثبات را به قرارداد هوشمند ارسال می کند.
- قرارداد هوشمند Proof on-chain را تایید می کند. اگر معتبر باشد، ریشه درخت مرکل حالت New را در حافظه داخلی قرارداد ذخیره میکند.
اساساً ریشه درخت مرکل کل وضعیت همه حساب ها را نشان می دهد. و نمیتوانید آن را تغییر دهید (= پول بدزدید) مگر اینکه بتوانید اعتبار امضاهایی را که تراکنشهای آنها به حالت New خلاصه شده توسط ریشه جدیدی که ارسال میکنید، ثابت کنید.
به طور خلاصه: کاربران تراکنشهای فوقالعاده سریع و تقریباً رایگان دارند، مانند Coinbase، بدون نیاز به اعتماد به رلهکننده، که برخلاف Coinbase، بدون امضای شما نمیتواند کاری انجام دهد.
این یک زنجیره جانبی غیر حضانت است که حالت آن با ریشه درخت مرکل خلاصه می شود.
بیایید آنچه را که در بالا در مورد SNARK ها یاد گرفتیم با آنچه که در مورد مقیاس بندی صحبت کردیم، مرتبط کنیم. راه های مختلفی برای انجام آن وجود دارد. من 2 دستور غذا را با هم مقایسه می کنم: Vitalik's نسخه و barryWhiteHat's نسخه.
SETUP توسط…
مردی که پروژه را شروع می کند، که قرارداد هوشمند را نیز ایجاد می کند. هر چه بیشتر قابل بازرسی باشد، بهتر است. شما باید به او اعتماد کنید... این یک است راه اندازی قابل اعتماد!
قرارداد هوشمند موجب صرفه جویی در…
2 ریشه مرکل (مقدار بایت 32): درخت اول شامل آدرس حساب ها (امضای عمومی)، مانده حساب های دوم و غیره است.
اثبات توسط…
رله
رله به قرارداد هوشمند می فرستد…
- 2 ریشه مرکل ایالت جدید (خطاب به درخت و تعادل + درخت nonces)
- لیست معاملات، بدون امضا. هزینه هر تراکنش 68 گاز در هر بایت است. از این رو، برای انتقال عادی، میتوان انتظار داشت که هزینه نهایی 68 * 3 (از) + 68 * 3 (به) + 68 * 1 (کارمزد) + 68 * 4 + 4 * 2 (مبلغ) + 68 * 2 باشد. (نه) یا گاز 892”
ورودی های شناخته شده فرآیند اثبات عبارتند از…
- 2 ریشه مرکل ایالت قدیمی
- 2 ریشه مرکل ایالت جدید
- لیست معاملات
فرآیند اثبات ثابت می کند که…
داده
- 2 ریشه مرکل ایالت قدیمی (از قبل در قرارداد ذخیره شده است)
- 2 ریشه مرکل حالت جدید (ارسال شده در تراکنش aggr)
- لیست تراکنش ها (ارسال شده در تراکنش جمعی)
… رله دارای امضاهای معتبری برای انتقال از حالت با ۲ ریشه قدیمی به حالت با ۲ ریشه جدید با آن تراکنشها است.
تأیید توسط…
قرارداد هوشمند (کد شده در solidity، vyper، همانطور که دوست دارید!)
ورودی های شناخته شده فرآیند تأیید عبارتند از…
همان فرآیند اثبات ورودی های شناخته شده، به وضوح…!
محدودیت های مقیاس پذیری
هر تراکنش جمعآوری شده از 650 هزار گاز برای تأیید SNARK استفاده میکند (هزینه ثابت) به اضافه ~ 900 گاز از هزینه حاشیه ای در هر تراکنش (ارسال داده ها هزینه دارد!). بنابراین با استفاده از کل بلوک، رله حداکثر می تواند جمع شود:
که بدان معنی است ~ 544 تن در ثانیه
barryWhiteHat's نسخه
SETUP توسط…
مردی که پروژه را شروع می کند.
قرارداد هوشمند موجب صرفه جویی در…
1 ریشه مرکل با وضعیت فعلی. هر برگ حالت هش شده یک حساب است.
می خواهم به ایجاد یک حساب کاربری؟
state = AccountState (pubkey، موجودی، nonce)
state.index = self._tree.append(state.hash())
اثبات توسط…
رله
رله به قرارداد هوشمند می فرستد…
- اثبات 𝚷
- ریشه مرکل ایالت جدید
- اثبات 𝚷
ورودی های شناخته شده فرآیند اثبات عبارتند از…
- ریشه مرکل ایالت قدیمی
- ریشه مرکل ایالت جدید
فرآیند اثبات ثابت می کند که…
داده
- ریشه مرکل قدیمی (از قبل در قرارداد ذخیره شده است)
- ریشه New Merkle (سنتی در تراکنش aggr)
... رله فهرستی از تراکنش ها با امضای معتبر برای انتقال از حالت با ریشه قدیمی به حالت با ریشه جدید دارد.
تأیید توسط…
قرارداد هوشمند (کد شده در solidity، vyper، همانطور که دوست دارید!)
ورودی های شناخته شده فرآیند تأیید عبارتند از…
همان فرآیند اثبات ورودی های شناخته شده، به وضوح…!
محدودیت های مقیاس پذیری
رله دادههای تراکنشها را به قرارداد هوشمند ارسال نمیکند (که پرهزینه است)، بنابراین محدودیت در واقع مقدار گاز برای تأیید اثبات SNARK است.
ذکر هاوارد وو کار در مورد اجرای مرحله اثبات SNARK در سیستم های توزیع شده، barryWhiteHat خوش بینانه بیان می کند که امکان تایید 16666 تراکنش در یک SNARK عظیم وجود دارد (1 میلیارد محدودیت!).
barryWhiteHat نیز فکر می کند می توان اثبات 𝚷 روی زنجیره را با گاز 500k تأیید کرد، به این معنی که شما می توانید 16 SNARK (8 میلیون/500k) در هر بلوک قرار دهید. ~ 1.07 SNARK در ثانیه ... که به معنی ~ 17,832 تن در ثانیه است (16,666 * 1.07).
تا بی نهایت و فراتر از آن
- تمام چیزی که می درخشد طلا نیست / 1. مقدار قدرت محاسباتی و حافظه ای که در مرحله اثبات نیاز دارید می تواند به معنای واقعی کلمه تکان دهنده باشد. به خصوص در نسخه barryWhiteHat، که در آن بخشی از پیچیدگی به خارج از زنجیره منتقل شده است. باری می نویسد در لپتاپهایی با 7 گیگابایت رم و 20 گیگابایت فضای مبادله، نمیتوان 20 تراکنش در ثانیه را جمع کرد.. خوب، اگر هدف 17,832 تن در ثانیه باشد... LOL. این چالش های محاسباتی موازی غیر پیش پا افتاده را معرفی می کند. اما اگر میانگین هزینه هر تراکنش دلاری بسیار ارزان تر از گزینه معمولی بدون SNARK باشد، بازی ارزش شمع را دارد.
- تمام آن چیزی که می درخشد طلا نیست / 2. یک مشکل در دسترس بودن داده ها وجود دارد! از آنجایی که فقط ریشه درخت در قرارداد ذخیره می شود، باید مطمئن باشید که یک نسخه کامل از درخت (یا همان است، کل تاریخچه تراکنش ها) همیشه در دسترس است. اگر دادهها در دسترس نباشد، رلهکننده، حتی با تراکنشهای امضا شده معتبر، نمیتواند کاری انجام دهد، زیرا او نمیتواند حالت قدیمی → تراکنشها → وضعیت جدید را اثبات کند.
- برای اینکه رله غیرقابل اعتماد باشد و اترها در قرارداد دارای ارزش مشابه اترها در خارج باشند (مشکل نقدینگی) ... کاربران باید بتوانند بدون اتکا به یک رله (خاص) هر زمان که بخواهند از قرارداد هوشمند پول برداشت کنند. چگونه؟ این در حوصله این 101 پست نیست، اما می توانید در لینک های پیوست شده در این مورد مطالعه کنید.
- آیا میخواهید درباره نحوه مدیریت وضعیت فعلی (آدرسها، تعادلها و غیره) با درخت مرکل بیشتر بدانید؟ اضافه کردن یک برگ، به روز رسانی یک برگ، و غیره؟ وارسی این کتابخانه (فایل تست اینجا کلیک نمایید) که از این زمینه استفاده می کند واحد. ممنون هری آر!
- آیا می خواهید محیط شخصی Ethereum-SNARKs خود را راه اندازی کنید؟ بیایید خارج از زنجیره را با C++ شروع کنیم (تنظیم، اثبات، تأیید) اینجا کلیک نمایید. سپس میتوانید با Zokrates به اتریوم بروید (فراموش نکنید، فقط تأیید روی زنجیره انجام میشود!)مخزناز مستنداتی برای شروع).
- در مورد استفاده از Acumulator RSA به جای درختان Merkle چطور؟ گوگل rsa انباشته کننده اتریوم برای شروع…
لذت بردن!
توییتر @marco_derossi
- 7
- حساب
- معرفی
- در میان
- دسترس پذیری
- مبانی
- بیلیون
- موارد
- تغییر دادن
- چک
- coinbase
- محاسبه
- اجماع
- قرارداد
- هزینه
- جاری
- وضعیت فعلی
- DApps
- داده ها
- مجموعه داده ها
- عدم تمرکز
- بعد
- لجر توزیع شده است
- تکنولوژی لجستیک توزیع شده
- محیط
- اتر
- ethereum
- EU
- EV
- جعلی
- سرانجام
- نام خانوادگی
- رایگان
- تابع
- بازی
- GAS
- GitHub
- دادن
- طلا
- خوب
- گوگل
- بزرگ
- راهنمایی
- مخلوط
- اینجا کلیک نمایید
- زیاد
- تاریخ
- چگونه
- hr
- HTTPS
- بزرگ
- صدها نفر
- ia
- شاخص
- اطلاعات
- IP
- IT
- کار
- کلید
- لپ تاپ
- بزرگ
- رهبری
- دفتر کل
- سطح
- LG
- کتابخانه
- نقدینگی
- فهرست
- مسیر اصلی
- نقشه ها
- متوسط
- میلیون
- کارگران معدن
- پول
- ماه
- محبوبترین
- حرکت
- نام
- شبکه
- گره
- تعداد
- عملیات
- سفارش
- دیگر
- مالک
- پرداخت
- مردم
- بازیکن
- محبوب
- قدرت
- خصوصی
- کلید خصوصی
- برنامه
- پروژه
- اثبات
- اثبات می کند
- عمومی
- کلید عمومی
- خلاصه
- rsa
- قوانین
- در حال اجرا
- امن
- صرفه جویی کردن
- مقیاس پذیری
- مقیاس
- مقیاس گذاری
- علم
- تیم امنیت لاتاری
- تنظیم
- اشتراک گذاری
- به اشتراک گذاشته شده
- کوتاه
- ساده
- اندازه
- خواب
- هوشمند
- قرارداد هوشمند
- گوشی های هوشمند
- So
- نرم افزار
- استحکام
- مزایا
- حل
- فضا
- هزینه
- شروع
- آغاز شده
- دولت
- ایالات
- موفق
- سیستم
- سیستم های
- پیشرفته
- آزمون
- زمان
- نشانه
- بالا
- تورنت
- معامله
- معاملات
- اعتماد
- به روز رسانی
- کاربران
- ارزش
- تایید
- ویزا
- W
- WHO
- کلمات
- مهاجرت کاری
- با این نسخهها کار
- با ارزش
- X