From cd7832432c9c0595e67bbe57955e292a87854535 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 1 Nov 2024 04:47:44 +0000 Subject: [PATCH 1/2] chore: import translations for fa --- .../smart-contracts/composability/index.md | 4 ++-- .../formal-verification/index.md | 2 +- .../docs/smart-contracts/testing/index.md | 18 +++++++++--------- .../docs/smart-contracts/verifying/index.md | 4 ++-- .../content/translations/fa/roadmap/index.md | 4 ++-- .../translations/fa/whitepaper/index.md | 11 +++++++---- src/intl/fa/page-upgrades-index.json | 2 +- 7 files changed, 24 insertions(+), 21 deletions(-) diff --git a/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md b/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md index a42b316dd62..3e0b74870d6 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md @@ -7,7 +7,7 @@ incomplete: true ## معرفی مختصر {#a-brief-introduction} -قراردادهای هوشمند در اتریوم عمومی هستند و می توان آنها را به عنوان APIهای باز در نظر گرفت. برای تبدیل شدن به یک توسعه دهنده dapp نیازی به نوشتن قرارداد هوشمند خود ندارید، فقط باید بدانید که چگونه با آنها تعامل داشته باشید. برای مثال، می‌توانید از قراردادهای هوشمند موجود در [Uniswap](https://uniswap.exchange/swap)، یک صرافی غیرمتمرکز، برای مدیریت همه منطق مبادله توکن ها در برنامه خود استفاده کنید - لازم نیست از صفر شروع کنید. برخی از قراردادهای [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) و v3 را بررسی کنید. +قراردادهای هوشمند در اتریوم عمومی هستند و می توان آنها را به عنوان APIهای باز در نظر گرفت. برای تبدیل شدن به یک توسعه دهنده dapp نیازی به نوشتن قرارداد هوشمند خود ندارید، فقط باید بدانید که چگونه با آنها تعامل داشته باشید. برای مثال، می‌توانید از قراردادهای هوشمند موجود در [Uniswap](https://uniswap.exchange/swap)، یک صرافی غیرمتمرکز، برای مدیریت همه منطق مبادله توکن ها در برنامه خود استفاده کنید - لازم نیست از صفر شروع کنید. برخی از قراردادهای [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) و v3 را بررسی کنید. ## ترکیب‌پذیری چیست؟ {#what-is-composability} @@ -29,7 +29,7 @@ incomplete: true ### چرخه توسعه کوتاه تر {#shorter-development-cycle} -در زمان تولید [اپلیکیشن های غیرمتمرکز](/dapps/#what-are-dapps) (یا dapp ها) ترکیب پذیری می تواند باعث کاهش حجم کار توسعه دهنده های نرم‌افزار شود. [همانطور که Naval Ravikant می گوید:](https://twitter.com/naval/status/1444366754650656770) "متن باز یعنی هر مشکلی فقط باید یکبار حل شود." +در زمان تولید [اپلیکیشن های غیرمتمرکز](/dapps/#what-are-dapps) (یا dapp ها) ترکیب پذیری می تواند باعث کاهش حجم کار توسعه دهنده های نرم‌افزار شود. [همانطور که Naval Ravikant می گوید: ](https://twitter.com/naval/status/1444366754650656770) "متن باز یعنی هر مشکلی فقط باید یکبار حل شود." اگر یک قرارداد هوشمند میتواند یک مشکل را حل کند، سایر توسعه دهنده ها می توانند از آن استفاده کنند و نیازی نیست که یک مشکل یکسان را دوباره حل کنند. بدین ترتیب توسعه دهنده ها میتوانند با استفاده از کتابخانه های موجود و اضافه کردن قابلیت های اضافی به آنها، اپلیکیشن های غیر متمرکز جدیدی را بسازند. diff --git a/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md index 767205b82f2..ac046a229b2 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md @@ -161,7 +161,7 @@ function safe_add(uint x, uint y) returns(uint z){ #### نیاز به قابلیت اطمینان {#need-for-reliability} راستی‌آزمایی رسمی برای ارزیابی درستی سیستم‌های حیاتی ایمنی استفاده می‌شود که خرابی آن‌ها می‌تواند عواقب مخربی مانند مرگ، جراحت یا خرابی مالی داشته باشد. قراردادهای هوشمند، برنامه‌های کاربردی با ارزشی هستند که مقادیر زیادی از ارزش را کنترل می‌کنند و خطاهای ساده در طراحی می‌تواند منجر به -خسارت جبران‌ناپذیر برای کاربران شود. با این حال، تأیید رسمی یک قرارداد قبل از استقرار، می‌تواند تضمین‌هایی را افزایش دهد که پس از اجرا بر روی بلاکچین، مطابق انتظار عمل می‌کند. +خسارت جبران‌ناپذیر برای کاربران شود. با این حال، تأیید رسمی یک قرارداد قبل از استقرار، می‌تواند تضمین‌هایی را افزایش دهد که پس از اجرا بر روی بلاکچین، مطابق انتظار عمل می‌کند.

قابلیت اطمینان یک کیفیت بسیار مطلوب در هر قرارداد هوشمند است، به خصوص به این دلیل که کد مستقر شده در ماشین مجازی اتریوم (EVM) معمولاً تغییرناپذیر است. از آنجایی که بروزرسانی‌های پس از راه‌اندازی به راحتی قابل دسترسی نیستند، نیاز به تضمین قابلیت اطمینان قراردادها تأیید رسمی را ضروری می‌کند. راستی‌آزمایی رسمی می‌تواند مسائل پیچیده‌ای مانند سرریز و سرریز اعداد صحیح، ورود مجدد و بهینه‌سازی ضعیف گاز را شناسایی کند که ممکن است از دست حسابرسان و آزمایش‌کنندگان خارج شود. diff --git a/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md b/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md index 3349ec8baa1..beb008abc76 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md @@ -5,7 +5,7 @@ lang: fa --- بلاک چین های عمومی مانند اتریوم تغییر ناپذیر هستند و تغییر کد قراردادهای هوشمند پس از استقرار را دشوار می کند. الگوهای ارتقای قرارداد برای انجام "ارتقای مجازی" وجود دارد، اما اجرای آنها دشوار است و نیاز به اجماع اجتماعی دارد. علاوه بر این، یک ارتقا فقط می‌تواند یک خطا را پس از کشف آن برطرف کند - اگر مهاجم ابتدا آسیب‌پذیری را کشف کند، قرارداد هوشمند شما در معرض خطر سوء استفاده قرار می‌گیرد. -الگوهای ارتقای قرارداد برای انجام "ارتقای مجازی" وجود دارد، اما اجرای آنها دشوار است و نیاز به اجماع اجتماعی دارد. علاوه بر آن، بروزرسانی، فقط میتواند خطا را_پس از _ کشف شدن آن تصحیح کند - اگر یک مهاجم، زودتر از تصحیح آن خطا، خطا را پیدا کند، قرارداد هوشمند مربوطه در معرض سوء استفاده واقع میشود. +الگوهای ارتقای قرارداد برای انجام "ارتقای مجازی" وجود دارد، اما اجرای آنها دشوار است و نیاز به اجماع اجتماعی دارد. علاوه بر آن، بروزرسانی، فقط میتواند خطا را_پس از _ کشف شدن آن تصحیح کند - اگر یک مهاجم، زودتر از تصحیح آن خطا، خطا را پیدا کند، قرارداد هوشمند مربوطه در معرض سوء استفاده واقع میشود.

به همین علت است که تست کردن قراردادهای هوشمند پیش از [دیپلوی](/developers/docs/smart-contracts/deploying/) بر روی شبکه اصلی، به عنوان حداقل میزان رعایت [ایمنی](/developers/docs/smart-contracts/security/) تلقی می شود. برای تست و ارزیابی میزان صحت کدهای قراردادهای هوشمند، تکنیک های مختلفی وجود دارد؛ این که انتخاب شما کدام تکنیک و به چه صورت باشد به نیازمندی و خواست خود شما بر میگردد. ضمناً، مجموعه های تستی که متشکل از ابزارها و نگرش های مختلف باشند به عنوان گزینه ای ایده‌آل برای کشف و عیب یابی نواقص امنیتی کم اهمیت و پر اهمیت در کد کانترکت می باشند. @@ -75,7 +75,7 @@ lang: fa ##### 1. منطق تجاری و گردش کار قراردادهای خود را درک کنید -قبل از نوشتن تست‌های واحد، دانستن اینکه یک قرارداد هوشمند چه ویژگی‌هایی را ارائه می‌دهد و کاربران چگونه به آن عملکردها دسترسی خواهند داشت و از آنها استفاده می‌کنند، کمک می‌کند. این مورد به ویژه برای اجرای [تست‌های مسیر درست](https://en.m.wikipedia.org/wiki/Happy_path) مفید است که تعیین می‌کند آیا توابع در قرارداد، خروجی صحیح را برای ورودی‌های معتبر کاربر برمی‌گردانند یا خیر. ما این مفهوم را با استفاده از این مثال (مختلف) از [یک قرارداد مزایده](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction) توضیح خواهیم داد. +قبل از نوشتن تست‌های واحد، دانستن اینکه یک قرارداد هوشمند چه ویژگی‌هایی را ارائه می‌دهد و کاربران چگونه به آن عملکردها دسترسی خواهند داشت و از آنها استفاده می‌کنند، کمک می‌کند. این مورد به ویژه برای اجرای [تست‌های مسیر درست](https://en.m.wikipedia.org/wiki/Happy_path) مفید است که تعیین می‌کند آیا توابع در قرارداد، خروجی صحیح را برای ورودی‌های معتبر کاربر برمی‌گردانند یا خیر. ما این مفهوم را با استفاده از این مثال (مختلف) از [یک قرارداد مزایده](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple- توضیح خواهیم داد. open-auction) @@ -152,7 +152,7 @@ function auctionEnd() external { - کاربرانی که موفق به برنده شدن در مناقصه نشوند با وجوه خود اعتبار داده می‌شوند -**نکته**: روش دیگری برای تست مفروضات، نوشتن تست‌هایی است که [مادیفایر یا اصلاح‌کننده تابع](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) را راه‌اندازی می‌کنند در یک قرارداد، به خصوص عبارت‌های `require`، `assert` و `if…else`. +**نکته**: روش دیگری برای تست مفروضات، نوشتن تست‌هایی است که [مادیفایر یا اصلاح‌کننده تابع](https://docs.soliditylang.org/en/v0.8.16/contracts را راه‌اندازی می‌کنند. html#function-modifiers) در یک قرارداد، به خصوص عبارت‌های `require`، `assert` و `if…else`. @@ -182,7 +182,7 @@ function auctionEnd() external { در حالی که تست واحد عملکردهای قرارداد را به صورت مجزا اشکال زدایی می‌کند، تست‌های یکپارچه‌سازی اجزای یک قرارداد هوشمند را به عنوان یک کل ارزیابی می‌کنند. تست یکپارچه سازی می‌تواند مشکلات ناشی از فراخوانی‌های قراردادی متقابل یا تعامل بین عملکردهای مختلف در یک قرارداد هوشمند را شناسایی کند. به عنوان مثال، تست‌های یکپارچه‌سازی می‌توانند به بررسی اینکه آیا مواردی مانند [ارث‌بری](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) و وابستگی به درستی کار می‌کنند یا خیر کمک می‌کند. -تست یکپارچه‌سازی در صورتی مفید است که قرارداد شما در طول اجرا از معماری مدولار استفاده کند یا با سایر قراردادهای زنجیره‌ای ارتباط برقرار کند. یکی از راه‌های اجرای تست‌های یکپارچه‌سازی این است که [بلاک چین](/glossary/#fork) را در یک ارتفاع خاص (با استفاده از ابزاری مانند [Forge](https://book.getfoundry.sh/forge/fork-testing) فورک کنید. یا [هاردهت](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) و تعاملات بین قرارداد شما و قراردادهای مستقر را شبیه‌سازی کنید. +تست یکپارچه‌سازی در صورتی مفید است که قرارداد شما در طول اجرا از معماری مدولار استفاده کند یا با سایر قراردادهای زنجیره‌ای ارتباط برقرار کند. یکی از راه‌های اجرای تست‌های یکپارچه‌سازی این است که [بلاک چین](/glossary/#fork) را در یک ارتفاع خاص (با استفاده از ابزاری مانند [Forge](https://book.getfoundry.sh فورک کنید. /forge/fork-testing) یا [هاردهت](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) و تعاملات بین قرارداد شما و قراردادهای مستقر را شبیه‌سازی کنید. بلاک چین فورک شده مشابه شبکه اصلی رفتار خواهد کرد و دارای حساب‌هایی با وضعیت‌ها و موجودی‌های مرتبط است. اما فقط به عنوان یک محیط توسعه محلی سندباکس شده عمل می‌کند، به این معنی که برای تراکنش‌ها به ETH واقعی نیاز نخواهید داشت، همچنین تغییرات شما بر پروتکل واقعی اتریوم تأثیر نمی‌گذارد. @@ -200,7 +200,7 @@ function auctionEnd() external { یک آنالایزر استاتیک کد منبع یک قرارداد هوشمند را به عنوان ورودی دریافت کرده و نتایج را با اعلام اینکه آیا قرارداد یک ویژگی را برآورده می‌کند یا نه، خروجی می‌گیرد. بر خلاف تحلیل پویا، تحلیل استاتیک شامل اجرای قرارداد برای تجزیه و تحلیل آن برای صحت نیست. تجزیه و تحلیل استاتیک در عوض درباره تمام مسیرهای احتمالی که یک قرارداد هوشمند می‌تواند در طول اجرا طی کند (به عنوان مثال، با بررسی ساختار کد منبع برای تعیین معنای آن برای عملیات قراردادها در زمان اجرا) استدلال می‌کند. -[Linting](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important) و [تست استاتیک](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) روش‌های رایج برای اجرای تحلیل استاتیک در قراردادها هستند. هر دو نیازمند تجزیه و تحلیل نمایش‌های سطح پایین اجرای قرارداد هستند، مانند [درخت نحو انتزاعی](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) و [کنترل نمودارهای جریان](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) خروجی توسط کامپایلر. +[Linting](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important) و [تست استاتیک](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) روش‌های رایج برای اجرای تحلیل استاتیک در قراردادها هستند. هر دو نیازمند تجزیه و تحلیل نمایش‌های سطح پایین اجرای قرارداد هستند، مانند [درخت نحو انتزاعی](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) و [کنترل نمودارهای جریان](https: //www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) خروجی توسط کامپایلر. در بیشتر موارد، تجزیه و تحلیل استاتیک برای تشخیص مسائل ایمنی مانند استفاده از ساختارهای ناامن، خطاهای نحوی یا نقض استانداردهای کدگذاری در کد قرارداد مفید است. با این حال، آنالایزرهای استاتیک به طور کلی در تشخیص آسیب‌پذیری‌های عمیق‌تر نامطلوب هستند و ممکن است مثبت کاذب بیش از حد تولید کنند. @@ -287,7 +287,7 @@ function auctionEnd() external { همانطور که ذکر شد، تست دقیق به ندرت می‌تواند عدم وجود اشکال یا باگ در قرارداد را تضمین کند. رویکردهای تأیید رسمی می‌توانند تضمین‌های قوی‌تری از صحت ارائه دهند، اما در حال حاضر استفاده از آنها دشوار است و هزینه‌های قابل توجهی را متحمل می‌شود. -با این وجود، می‌توانید با بررسی کد مستقل، امکان شناسایی آسیب‌پذیری‌های قرارداد را بیشتر کنید. [ممیزی یا آدیت قراردادهای هوشمند](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) و [پاداش‌های باگ](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) دو راه برای ترغیب دیگران به تجزیه و تحلیل قراردادهای شما هستند. +با این وجود، می‌توانید با بررسی کد مستقل، امکان شناسایی آسیب‌پذیری‌های قرارداد را بیشتر کنید. [ممیزی یا آدیت قراردادهای هوشمند](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) و [پاداش‌های باگ](https://medium. com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) دو راه برای ترغیب دیگران به تجزیه و تحلیل قراردادهای شما هستند. ممیزی‌ها توسط حسابرسان با تجربه در یافتن موارد نقص امنیتی و شیوه‌های توسعه ضعیف در قراردادهای هوشمند انجام می‌شود. ممیزی معمولاً شامل تست (و احتمالاً تأیید رسمی) و همچنین بررسی دستی کل پایگاه کد است. @@ -335,7 +335,7 @@ function auctionEnd() external { - **[سایفرین آدرین](https://cyfrin.io/tools/aderyn)** - _تحلیلگر استاتیک مبتنی بر استاتیک که به طور خاص برای امنیت و توسعه قراردادهای هوشمند وب3 طراحی شده است._ -- **[ویک](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _چارچوب تحلیل استاتیک مبتنی بر پایتون با آشکارسازهای آسیب‌پذیری و کیفیت کد، چاپگرهایی برای استخراج اطلاعات مفید از کد و پشتیبانی برای نوشتن زیرماژول‌های سفارشی._ +- **[ویک](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - < em x-id="4">چارچوب تحلیل استاتیک مبتنی بر پایتون با آشکارسازهای آسیب‌پذیری و کیفیت کد، چاپگرهایی برای استخراج اطلاعات مفید از کد و پشتیبانی برای نوشتن زیرماژول‌های سفارشی. @@ -347,9 +347,9 @@ function auctionEnd() external { - **[مانتیکر](https://manticore.readthedocs.io/en/latest/index.html)** - _فریم ورک اجرای نمادین پویا برای تجزیه و تحلیل بایت کد ماشین مجازی اتریوم است._ -- **[میثریل (Mythril)](https://github.com/ConsenSys/mythril-classic)** - _ابزار ارزیابی بایت کد ماشین مجازی اتریوم برای شناسایی آسیب‌پذیری‌های قرارداد با استفاده از تجزیه و تحلیل تینت، تجزیه و تحلیل کونکولیک، و بررسی جریان کنترل است._ +- **[میثریل (Mythril)](https://github.com/ConsenSys/mythril-classic)** - _ ابزار ارزیابی بایت کد ماشین مجازی اتریوم برای شناسایی آسیب‌پذیری‌های قرارداد با استفاده از تجزیه و تحلیل تینت، تجزیه و تحلیل کونکولیک، و بررسی جریان کنترل است._ -- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _Scribble یک زبان مشخصات و ابزار تأیید زمان اجرا است که به شما امکان می‌دهد قراردادهای هوشمند را با ویژگی‌هایی حاشیه نویسی کنید که به شما امکان می‌دهد به طور خودکار قراردادها را با ابزارهایی مانند Diligence Fuzzing یا MythX تست کنید._ +- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _ Scribble یک زبان مشخصات و ابزار تأیید زمان اجرا است که به شما امکان می‌دهد قراردادهای هوشمند را با ویژگی‌هایی حاشیه نویسی کنید که به شما امکان می‌دهد به طور خودکار قراردادها را با ابزارهایی مانند Diligence Fuzzing یا MythX تست کنید._ diff --git a/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md index 1e4ce2c62c1..b88037cb5e7 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md @@ -64,7 +64,7 @@ lang: fa توجه داشته باشید که در اینجا توضیح ساده ای از تائید کردن را به میان آورده ایم، و در این پروسه استثناهای بسیاری وجود دارند که ممکن است توضیحات متفاوتی با آنچه که در حال صحبت در اینجا هستیم داشته باشند، مثلاً در زمانی که -متغیرهای از نوع immutable" داشته باشیم. +متغیرهای از نوع immutable" داشته باشیم.

@@ -80,7 +80,7 @@ lang: fa اتراسکن اجازه کامپایل مجدد بایت‌کد قرارداد از پی لود داده اصلی (کد، آدرس کتابخانه، تنظیمات کامپایلر، آدرس قرارداد، و ...) را به شما می دهد در صورتی که بایت‌کد مجدد کامپایل شده، با بایت‌کد (و پارامترهای کانستراکتور) قراردادی بر روی بلاکچین (آن-چین) منطبق باشد، سپس [قرارداد وریفای می شود](https://info.etherscan.com/types-of-contract-verification/). -هنگامی که قرارداد وریفای شود، کد قرارداد شما برچسب "verified" دریافت کرده و به منظور حسابرسی و آدیت شدن سایرین، بر روی اتراسکن منتشر می شود. همچنین به قسمت قراردادهای وریفای شده یا همان verified contracts -که مخزنی از قراردادهای هوشمند با کدهای وریفای شده است- اضافه می شود. +هنگامی که قرارداد وریفای شود، کد قرارداد شما برچسب "verified" دریافت کرده و به منظور حسابرسی و آدیت شدن سایرین، بر روی اتراسکن منتشر می شود. همچنین به قسمت قراردادهای وریفای شده یا همان verified contracts -که مخزنی از قراردادهای هوشمند با کدهای وریفای شده است- اضافه می شود. اتر اسکن، پر استفاده ترین ابزار وریفای و تائید قراردادهای هوشمند است. هرچند، سرویس وریفای قراردادهای اتراسکن نواقصی نیز دارد: از جمله این نواقص می توان به ناتوانی در مقایسه **هش متادیتا**ی بایت‌کد آن-چین و بایت‌کد مجدد کامپایل شده اشاره کرد. بنابراین می توان گفت که تطابق‌های اتراسکن از نوع تطابق جزئی است. diff --git a/public/content/translations/fa/roadmap/index.md b/public/content/translations/fa/roadmap/index.md index 6b73bbeb746..33fbfd78fda 100644 --- a/public/content/translations/fa/roadmap/index.md +++ b/public/content/translations/fa/roadmap/index.md @@ -8,10 +8,10 @@ alt: "نقشه‌ راه اتریوم" summaryPoints: buttons: - - label: ارتقا‌های پیش‌ رو + content: ارتقا‌های پیش‌ رو toId: چه تغییراتی ایجاد خواهد شد - - label: ارتقاهای پیشین + content: ارتقاهای پیشین href: /history/ variant: طرح کلی --- diff --git a/public/content/translations/fa/whitepaper/index.md b/public/content/translations/fa/whitepaper/index.md index f678b445ff0..42e678b2a6f 100644 --- a/public/content/translations/fa/whitepaper/index.md +++ b/public/content/translations/fa/whitepaper/index.md @@ -16,9 +16,11 @@ _با وجود عمری چندین ساله، ما این مقاله را حفظ ## یک پلتفرم قرارداد هوشمند و برنامه‌ی غیرمتمرکز نسل بعدی {#a-next-generation-smart-contract-and-decentralized-application-platform} -توسعه بیت کوین توسط ساتوشی ناکاموتو در سال ۲۰۰۹ اغلب به عنوان یک تحول اساسی درصنعت پول و رمزارز مورد استقبال قرار گرفته است، اولین نمونه یک دارایی دیجیتال که به طور همزمان نه هیچ پشتوانه یا "[ارزش ذاتی](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)" دارد و نه هیچ مرجع عرضه متمرکز یا کنترل کننده. با این حال، یکی از بخش‌های - شاید مهم تر - تجربه بیت کوین زیربنای فناوری زنجیره بلوکی آن به عنوان ابزاری برای اجماع توزیع شده است، و توجهات به سرعت در حال شروع به تغییر به این جنبه دیگر بیت کوین است. کاربردهای جایگزین رایج فناوری بلاک چین شامل استفاده از دارایی های دیجیتال درون بلاک چین برای نشان دادن ارزهای سفارشی و ابزارهای مالی "[سکه های رنگی](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lBEoW2T) ویرایش"، مالکیت یک دستگاه فیزیکی زیربنایی ("[اموال هوشمند](https://en.bitcoin.it/wiki/Smart_Property)")، دارایی‌های غیرقابل تعویض مانند نام‌های دامنه ("[Namecoin](http://namecoin.org)")، و همچنین برنامه‌های پیچیده‌تر شامل داشتن دارایی‌های دیجیتال که مستقیماً توسط یک قطعه کد کنترل می‌شوند. اجرای قوانین دلخواه ("[هوشمند قراردادها](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") یا حتی " +توسعه بیت کوین توسط ساتوشی ناکاموتو در سال ۲۰۰۹ اغلب به عنوان یک تحول اساسی درصنعت پول و رمزارز مورد استقبال قرار گرفته است، اولین نمونه یک دارایی دیجیتال که به طور همزمان نه هیچ پشتوانه یا "[ارزش ذاتی](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)" دارد و نه هیچ مرجع عرضه متمرکز یا کنترل کننده. با این حال، یکی از بخش‌های - شاید مهم تر - تجربه بیت کوین زیربنای فناوری زنجیره بلوکی آن به عنوان ابزاری برای اجماع توزیع شده است، و توجهات به سرعت در حال شروع به تغییر به این جنبه دیگر بیت کوین است. کاربردهای جایگزین رایج فناوری بلاک چین شامل استفاده از دارایی های دیجیتال درون بلاک چین برای نشان دادن ارزهای سفارشی و ابزارهای مالی ("[سکه های رنگی](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lBEoW2T ویرایش)")، مالکیت یک دستگاه فیزیکی زیربنایی ("[اموال هوشمند](https://en.bitcoin.it/wiki/Smart_Property)")، دارایی‌های غیرقابل تعویض مانند نام‌های دامنه ("[Namecoin](http://namecoin.org)")، و همچنین برنامه‌های پیچیده‌تر شامل داشتن دارایی‌های دیجیتال که مستقیماً توسط یک قطعه کد کنترل می‌شوند. اجرای قوانین دلخواه ("[هوشمند قراردادها](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") یا حتی " + +سازمان های مستقل غیرمتمرکز" (DAOs). آنچه اتریوم قصدش را دارد فراهم‌سازی یک زنجیره بلوکی با یک زبان برنامه نویسی توکار تورینگ-کامل تمام عیار است که بتوان از آن برای ساخت "قرارداد" هایی که می‌توانند برای کد کردن توابع انتقال وضعیت دلخواه مورد استفاده قرار بگیرند بهره برد، که به کاربرها اجازه ساخت هر کدام از سیستم های پیش‌تر ذکر شده را و همچنین بسیاری از انواع دیگری که حتی تصورشان را هم هنوز نکرده ایم می‌دهد، صرفاً با به نوشته در آوردن منطق آن در چند خط کد.

+ -سازمان های مستقل غیرمتمرکز مبتنی بر بلاک چین (DAOs). آنچه اتریوم قصدش را دارد فراهم‌سازی یک زنجیره بلوکی با یک زبان برنامه نویسی توکار تورینگ-کامل تمام عیار است که بتوان از آن برای ساخت "قرارداد" هایی که می‌توانند برای کد کردن توابع انتقال وضعیت دلخواه مورد استفاده قرار بگیرند بهره برد، که به کاربرها اجازه ساخت هر کدام از سیستم های پیش‌تر ذکر شده را و همچنین بسیاری از انواع دیگری که حتی تصورشان را هم هنوز نکرده ایم می‌دهد، صرفاً با به نوشته در آوردن منطق آن در چند خط کد. ## مقدمه ای بر بیت کوین و مفاهیم موجود {#introduction-to-bitcoin-and-existing-concepts} @@ -103,7 +105,8 @@ APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR 2. بررسی کنید که مُهر زمانی بلوک بزرگتر از بلوک قبلی باشد[fn2](#notes) و کمتر از 2 ساعت در آینده باشد 3. بررسی کنید که اثبات کار روی بلوک معتبر باشد. 4. حالت `S[0]` را حالت پایانی بلوک قبل بگذار. -5. فرض کن `TX` لیست تراکنش‌های بلوک با تعداد `n` تراکنش است. برای همه `i` در `0...n-1`، `S[i+1] = APPLY(S[i], TX[i]) را تنظیم کنید /code> اگر هر برنامه ای خطا را برمی‌گرداند، از آن خارج شوید و false را برگردانید. True را برگردانید و S[n]` را به عنوان وضعیت در انتهای این بلوک ثبت کنید. +5. فرض کن `TX` لیست تراکنش‌های بلوک با تعداد `n` تراکنش است. برای همه `i` در `0...n-1`، `S[i+1] = APPLY(S[i], TX[i]) را تنظیم کنید /code> اگر هر برنامه ای خطا را برمی‌گرداند، از آن خارج شوید و false را برگردانید. +
  • True را برگردانید و S[n]` را به عنوان وضعیت در انتهای این بلوک ثبت کنید. در واقع هر تراکنش در بلوک باید یک انتقال حالت معتبر را از حالت قبل از انجام تراکنش به حالت جدید انجام دهد. باید توجه کرد که حالت به هیچ صورتی در بلوک ثبت نمی‌شود؛ این یک موضوع تماما انتزاعی است برای این که توسط گره‌های اعتبارسنج به خاطر سپرده شود و تنها می‌توان (به صورت ایمن) با شروع از حالت بلوک پیدایش و حرکت بر روی تراکنش‌های هر بلوک، حالت بلوک فعلی را به دست آورد. علاوه بر این، توجه کنید که ترتیبی که استخراج‌گر تراکنش‌ها را در بلوک ثبت می‌کند مهم است؛ اگر دو تراکنش آ و ب وجود داشته باشند به طوری که ب یک UTXOی ساخته‌شده از آ را خرج کند، در این صورت بلوک معتبر است اگر آ قبل از ب ثبت شود و نه برعکس. @@ -259,7 +262,7 @@ if !self.storage[calldataload(0)]: ### اجرای کد {#code-execution} -کد در قراردادهای اتریوم به زبان بایت کد مبتنی بر پشته، سطح پایین نوشته می شود که به آن «کد ماشین مجازی اتریوم» یا «کد EVM» گفته می شود. کد شامل یک سری بایت است که هر بایت نشان دهنده یک عملیات است. به طور کلی، اجرای کد یک حلقه بی نهایت است که شامل انجام مکرر عملیات در شمارنده برنامه فعلی (که از صفر شروع می شود) و سپس افزایش شمارنده برنامه به یک اندازه، تا رسیدن به انتهای کد یا یک خطا یا < دستورالعمل 0>STOP یا `RETURN` شناسایی شد. عملیات به سه نوع فضای ذخیره‌سازی داده‌ها دسترسی دارند: +کد در قراردادهای اتریوم به زبان بایت کد مبتنی بر پشته، سطح پایین نوشته می شود که به آن «کد ماشین مجازی اتریوم» یا «کد EVM» گفته می شود. کد شامل یک سری بایت است که هر بایت نشان دهنده یک عملیات است. به طور کلی، اجرای کد یک حلقه بی نهایت است که شامل انجام مکرر عملیات در شمارنده برنامه فعلی (که از صفر شروع می شود) و سپس افزایش شمارنده برنامه به یک اندازه، تا رسیدن به انتهای کد یا یک خطا یا < دستورالعمل 0>STOP یا `RETURN` شناسایی شد. عملیات به سه نوع فضای ذخیره‌سازی داده‌ها دسترسی دارند: - این **پشته**، محفظه‌ای که می‌توان آن‌ها را به بیرون فرستاد و مقادیر را به آن منتقل کرد - **Memory**، یک آرایه بایت بی نهایت قابل گسترش است diff --git a/src/intl/fa/page-upgrades-index.json b/src/intl/fa/page-upgrades-index.json index 60b1a32ac8c..d3d3cf00b5f 100644 --- a/src/intl/fa/page-upgrades-index.json +++ b/src/intl/fa/page-upgrades-index.json @@ -13,7 +13,7 @@ "page-upgrades-answer-4": "از زنجیره بیکن برای توسعه مکانیزم اجماع مبتنی بر اثبات سهام که اتریوم درحال حاضر بکار می‌برد استفاده شد. این مکانیزم به طور جداگانه برای شبکه اصلی اتریوم (Mainnet) اجرا شد تا توسعه‌دهندگان بتوانند مکانیزم اجماع را به صورت مجزا قبل از استفاده از آن برای هماهنگ کردن فعالیت واقعی، مشاهده کنند.", "page-upgrade-article-author-status": "وضعیت", "page-upgrade-article-author-ethmerge": "Ethmerge", - "page-upgrade-article-author-alchemy": "شیمی", + "page-upgrade-article-author-alchemy": "Alchemy", "page-upgrade-article-author-consensys": "Consensys", "page-upgrade-article-author-delphi-digital": "دلفی دیجیتال", "page-upgrade-article-author-eip-4844": "ویتالیک بوترین، دانکراد فیست، دیدریک لوراکر، جورج کادیناکیس، مت گارنت، موفی تایوو", From d5bd5e23939530d7c71a2b6588e946d2daeb15ee Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Wed, 20 Nov 2024 12:28:45 -0700 Subject: [PATCH 2/2] remove regressions --- .../smart-contracts/composability/index.md | 4 ++-- .../formal-verification/index.md | 2 +- .../docs/smart-contracts/testing/index.md | 18 +++++++++--------- .../docs/smart-contracts/verifying/index.md | 4 ++-- .../translations/fa/whitepaper/index.md | 11 ++++------- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md b/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md index 3e0b74870d6..a42b316dd62 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/composability/index.md @@ -7,7 +7,7 @@ incomplete: true ## معرفی مختصر {#a-brief-introduction} -قراردادهای هوشمند در اتریوم عمومی هستند و می توان آنها را به عنوان APIهای باز در نظر گرفت. برای تبدیل شدن به یک توسعه دهنده dapp نیازی به نوشتن قرارداد هوشمند خود ندارید، فقط باید بدانید که چگونه با آنها تعامل داشته باشید. برای مثال، می‌توانید از قراردادهای هوشمند موجود در [Uniswap](https://uniswap.exchange/swap)، یک صرافی غیرمتمرکز، برای مدیریت همه منطق مبادله توکن ها در برنامه خود استفاده کنید - لازم نیست از صفر شروع کنید. برخی از قراردادهای [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) و v3 را بررسی کنید. +قراردادهای هوشمند در اتریوم عمومی هستند و می توان آنها را به عنوان APIهای باز در نظر گرفت. برای تبدیل شدن به یک توسعه دهنده dapp نیازی به نوشتن قرارداد هوشمند خود ندارید، فقط باید بدانید که چگونه با آنها تعامل داشته باشید. برای مثال، می‌توانید از قراردادهای هوشمند موجود در [Uniswap](https://uniswap.exchange/swap)، یک صرافی غیرمتمرکز، برای مدیریت همه منطق مبادله توکن ها در برنامه خود استفاده کنید - لازم نیست از صفر شروع کنید. برخی از قراردادهای [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) و v3 را بررسی کنید. ## ترکیب‌پذیری چیست؟ {#what-is-composability} @@ -29,7 +29,7 @@ incomplete: true ### چرخه توسعه کوتاه تر {#shorter-development-cycle} -در زمان تولید [اپلیکیشن های غیرمتمرکز](/dapps/#what-are-dapps) (یا dapp ها) ترکیب پذیری می تواند باعث کاهش حجم کار توسعه دهنده های نرم‌افزار شود. [همانطور که Naval Ravikant می گوید: ](https://twitter.com/naval/status/1444366754650656770) "متن باز یعنی هر مشکلی فقط باید یکبار حل شود." +در زمان تولید [اپلیکیشن های غیرمتمرکز](/dapps/#what-are-dapps) (یا dapp ها) ترکیب پذیری می تواند باعث کاهش حجم کار توسعه دهنده های نرم‌افزار شود. [همانطور که Naval Ravikant می گوید:](https://twitter.com/naval/status/1444366754650656770) "متن باز یعنی هر مشکلی فقط باید یکبار حل شود." اگر یک قرارداد هوشمند میتواند یک مشکل را حل کند، سایر توسعه دهنده ها می توانند از آن استفاده کنند و نیازی نیست که یک مشکل یکسان را دوباره حل کنند. بدین ترتیب توسعه دهنده ها میتوانند با استفاده از کتابخانه های موجود و اضافه کردن قابلیت های اضافی به آنها، اپلیکیشن های غیر متمرکز جدیدی را بسازند. diff --git a/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md index ac046a229b2..767205b82f2 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/formal-verification/index.md @@ -161,7 +161,7 @@ function safe_add(uint x, uint y) returns(uint z){ #### نیاز به قابلیت اطمینان {#need-for-reliability} راستی‌آزمایی رسمی برای ارزیابی درستی سیستم‌های حیاتی ایمنی استفاده می‌شود که خرابی آن‌ها می‌تواند عواقب مخربی مانند مرگ، جراحت یا خرابی مالی داشته باشد. قراردادهای هوشمند، برنامه‌های کاربردی با ارزشی هستند که مقادیر زیادی از ارزش را کنترل می‌کنند و خطاهای ساده در طراحی می‌تواند منجر به -خسارت جبران‌ناپذیر برای کاربران شود. با این حال، تأیید رسمی یک قرارداد قبل از استقرار، می‌تواند تضمین‌هایی را افزایش دهد که پس از اجرا بر روی بلاکچین، مطابق انتظار عمل می‌کند.

    +خسارت جبران‌ناپذیر برای کاربران شود. با این حال، تأیید رسمی یک قرارداد قبل از استقرار، می‌تواند تضمین‌هایی را افزایش دهد که پس از اجرا بر روی بلاکچین، مطابق انتظار عمل می‌کند. قابلیت اطمینان یک کیفیت بسیار مطلوب در هر قرارداد هوشمند است، به خصوص به این دلیل که کد مستقر شده در ماشین مجازی اتریوم (EVM) معمولاً تغییرناپذیر است. از آنجایی که بروزرسانی‌های پس از راه‌اندازی به راحتی قابل دسترسی نیستند، نیاز به تضمین قابلیت اطمینان قراردادها تأیید رسمی را ضروری می‌کند. راستی‌آزمایی رسمی می‌تواند مسائل پیچیده‌ای مانند سرریز و سرریز اعداد صحیح، ورود مجدد و بهینه‌سازی ضعیف گاز را شناسایی کند که ممکن است از دست حسابرسان و آزمایش‌کنندگان خارج شود. diff --git a/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md b/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md index beb008abc76..3349ec8baa1 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/testing/index.md @@ -5,7 +5,7 @@ lang: fa --- بلاک چین های عمومی مانند اتریوم تغییر ناپذیر هستند و تغییر کد قراردادهای هوشمند پس از استقرار را دشوار می کند. الگوهای ارتقای قرارداد برای انجام "ارتقای مجازی" وجود دارد، اما اجرای آنها دشوار است و نیاز به اجماع اجتماعی دارد. علاوه بر این، یک ارتقا فقط می‌تواند یک خطا را پس از کشف آن برطرف کند - اگر مهاجم ابتدا آسیب‌پذیری را کشف کند، قرارداد هوشمند شما در معرض خطر سوء استفاده قرار می‌گیرد. -الگوهای ارتقای قرارداد برای انجام "ارتقای مجازی" وجود دارد، اما اجرای آنها دشوار است و نیاز به اجماع اجتماعی دارد. علاوه بر آن، بروزرسانی، فقط میتواند خطا را_پس از _ کشف شدن آن تصحیح کند - اگر یک مهاجم، زودتر از تصحیح آن خطا، خطا را پیدا کند، قرارداد هوشمند مربوطه در معرض سوء استفاده واقع میشود.

    +الگوهای ارتقای قرارداد برای انجام "ارتقای مجازی" وجود دارد، اما اجرای آنها دشوار است و نیاز به اجماع اجتماعی دارد. علاوه بر آن، بروزرسانی، فقط میتواند خطا را_پس از _ کشف شدن آن تصحیح کند - اگر یک مهاجم، زودتر از تصحیح آن خطا، خطا را پیدا کند، قرارداد هوشمند مربوطه در معرض سوء استفاده واقع میشود. به همین علت است که تست کردن قراردادهای هوشمند پیش از [دیپلوی](/developers/docs/smart-contracts/deploying/) بر روی شبکه اصلی، به عنوان حداقل میزان رعایت [ایمنی](/developers/docs/smart-contracts/security/) تلقی می شود. برای تست و ارزیابی میزان صحت کدهای قراردادهای هوشمند، تکنیک های مختلفی وجود دارد؛ این که انتخاب شما کدام تکنیک و به چه صورت باشد به نیازمندی و خواست خود شما بر میگردد. ضمناً، مجموعه های تستی که متشکل از ابزارها و نگرش های مختلف باشند به عنوان گزینه ای ایده‌آل برای کشف و عیب یابی نواقص امنیتی کم اهمیت و پر اهمیت در کد کانترکت می باشند. @@ -75,7 +75,7 @@ lang: fa ##### 1. منطق تجاری و گردش کار قراردادهای خود را درک کنید -قبل از نوشتن تست‌های واحد، دانستن اینکه یک قرارداد هوشمند چه ویژگی‌هایی را ارائه می‌دهد و کاربران چگونه به آن عملکردها دسترسی خواهند داشت و از آنها استفاده می‌کنند، کمک می‌کند. این مورد به ویژه برای اجرای [تست‌های مسیر درست](https://en.m.wikipedia.org/wiki/Happy_path) مفید است که تعیین می‌کند آیا توابع در قرارداد، خروجی صحیح را برای ورودی‌های معتبر کاربر برمی‌گردانند یا خیر. ما این مفهوم را با استفاده از این مثال (مختلف) از [یک قرارداد مزایده](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple- توضیح خواهیم داد. open-auction) +قبل از نوشتن تست‌های واحد، دانستن اینکه یک قرارداد هوشمند چه ویژگی‌هایی را ارائه می‌دهد و کاربران چگونه به آن عملکردها دسترسی خواهند داشت و از آنها استفاده می‌کنند، کمک می‌کند. این مورد به ویژه برای اجرای [تست‌های مسیر درست](https://en.m.wikipedia.org/wiki/Happy_path) مفید است که تعیین می‌کند آیا توابع در قرارداد، خروجی صحیح را برای ورودی‌های معتبر کاربر برمی‌گردانند یا خیر. ما این مفهوم را با استفاده از این مثال (مختلف) از [یک قرارداد مزایده](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction) توضیح خواهیم داد. @@ -152,7 +152,7 @@ function auctionEnd() external { - کاربرانی که موفق به برنده شدن در مناقصه نشوند با وجوه خود اعتبار داده می‌شوند -**نکته**: روش دیگری برای تست مفروضات، نوشتن تست‌هایی است که [مادیفایر یا اصلاح‌کننده تابع](https://docs.soliditylang.org/en/v0.8.16/contracts را راه‌اندازی می‌کنند. html#function-modifiers) در یک قرارداد، به خصوص عبارت‌های `require`، `assert` و `if…else`. +**نکته**: روش دیگری برای تست مفروضات، نوشتن تست‌هایی است که [مادیفایر یا اصلاح‌کننده تابع](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) را راه‌اندازی می‌کنند در یک قرارداد، به خصوص عبارت‌های `require`، `assert` و `if…else`. @@ -182,7 +182,7 @@ function auctionEnd() external { در حالی که تست واحد عملکردهای قرارداد را به صورت مجزا اشکال زدایی می‌کند، تست‌های یکپارچه‌سازی اجزای یک قرارداد هوشمند را به عنوان یک کل ارزیابی می‌کنند. تست یکپارچه سازی می‌تواند مشکلات ناشی از فراخوانی‌های قراردادی متقابل یا تعامل بین عملکردهای مختلف در یک قرارداد هوشمند را شناسایی کند. به عنوان مثال، تست‌های یکپارچه‌سازی می‌توانند به بررسی اینکه آیا مواردی مانند [ارث‌بری](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) و وابستگی به درستی کار می‌کنند یا خیر کمک می‌کند. -تست یکپارچه‌سازی در صورتی مفید است که قرارداد شما در طول اجرا از معماری مدولار استفاده کند یا با سایر قراردادهای زنجیره‌ای ارتباط برقرار کند. یکی از راه‌های اجرای تست‌های یکپارچه‌سازی این است که [بلاک چین](/glossary/#fork) را در یک ارتفاع خاص (با استفاده از ابزاری مانند [Forge](https://book.getfoundry.sh فورک کنید. /forge/fork-testing) یا [هاردهت](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) و تعاملات بین قرارداد شما و قراردادهای مستقر را شبیه‌سازی کنید. +تست یکپارچه‌سازی در صورتی مفید است که قرارداد شما در طول اجرا از معماری مدولار استفاده کند یا با سایر قراردادهای زنجیره‌ای ارتباط برقرار کند. یکی از راه‌های اجرای تست‌های یکپارچه‌سازی این است که [بلاک چین](/glossary/#fork) را در یک ارتفاع خاص (با استفاده از ابزاری مانند [Forge](https://book.getfoundry.sh/forge/fork-testing) فورک کنید. یا [هاردهت](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) و تعاملات بین قرارداد شما و قراردادهای مستقر را شبیه‌سازی کنید. بلاک چین فورک شده مشابه شبکه اصلی رفتار خواهد کرد و دارای حساب‌هایی با وضعیت‌ها و موجودی‌های مرتبط است. اما فقط به عنوان یک محیط توسعه محلی سندباکس شده عمل می‌کند، به این معنی که برای تراکنش‌ها به ETH واقعی نیاز نخواهید داشت، همچنین تغییرات شما بر پروتکل واقعی اتریوم تأثیر نمی‌گذارد. @@ -200,7 +200,7 @@ function auctionEnd() external { یک آنالایزر استاتیک کد منبع یک قرارداد هوشمند را به عنوان ورودی دریافت کرده و نتایج را با اعلام اینکه آیا قرارداد یک ویژگی را برآورده می‌کند یا نه، خروجی می‌گیرد. بر خلاف تحلیل پویا، تحلیل استاتیک شامل اجرای قرارداد برای تجزیه و تحلیل آن برای صحت نیست. تجزیه و تحلیل استاتیک در عوض درباره تمام مسیرهای احتمالی که یک قرارداد هوشمند می‌تواند در طول اجرا طی کند (به عنوان مثال، با بررسی ساختار کد منبع برای تعیین معنای آن برای عملیات قراردادها در زمان اجرا) استدلال می‌کند. -[Linting](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important) و [تست استاتیک](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) روش‌های رایج برای اجرای تحلیل استاتیک در قراردادها هستند. هر دو نیازمند تجزیه و تحلیل نمایش‌های سطح پایین اجرای قرارداد هستند، مانند [درخت نحو انتزاعی](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) و [کنترل نمودارهای جریان](https: //www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) خروجی توسط کامپایلر. +[Linting](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important) و [تست استاتیک](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) روش‌های رایج برای اجرای تحلیل استاتیک در قراردادها هستند. هر دو نیازمند تجزیه و تحلیل نمایش‌های سطح پایین اجرای قرارداد هستند، مانند [درخت نحو انتزاعی](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) و [کنترل نمودارهای جریان](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) خروجی توسط کامپایلر. در بیشتر موارد، تجزیه و تحلیل استاتیک برای تشخیص مسائل ایمنی مانند استفاده از ساختارهای ناامن، خطاهای نحوی یا نقض استانداردهای کدگذاری در کد قرارداد مفید است. با این حال، آنالایزرهای استاتیک به طور کلی در تشخیص آسیب‌پذیری‌های عمیق‌تر نامطلوب هستند و ممکن است مثبت کاذب بیش از حد تولید کنند. @@ -287,7 +287,7 @@ function auctionEnd() external { همانطور که ذکر شد، تست دقیق به ندرت می‌تواند عدم وجود اشکال یا باگ در قرارداد را تضمین کند. رویکردهای تأیید رسمی می‌توانند تضمین‌های قوی‌تری از صحت ارائه دهند، اما در حال حاضر استفاده از آنها دشوار است و هزینه‌های قابل توجهی را متحمل می‌شود. -با این وجود، می‌توانید با بررسی کد مستقل، امکان شناسایی آسیب‌پذیری‌های قرارداد را بیشتر کنید. [ممیزی یا آدیت قراردادهای هوشمند](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) و [پاداش‌های باگ](https://medium. com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) دو راه برای ترغیب دیگران به تجزیه و تحلیل قراردادهای شما هستند. +با این وجود، می‌توانید با بررسی کد مستقل، امکان شناسایی آسیب‌پذیری‌های قرارداد را بیشتر کنید. [ممیزی یا آدیت قراردادهای هوشمند](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) و [پاداش‌های باگ](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) دو راه برای ترغیب دیگران به تجزیه و تحلیل قراردادهای شما هستند. ممیزی‌ها توسط حسابرسان با تجربه در یافتن موارد نقص امنیتی و شیوه‌های توسعه ضعیف در قراردادهای هوشمند انجام می‌شود. ممیزی معمولاً شامل تست (و احتمالاً تأیید رسمی) و همچنین بررسی دستی کل پایگاه کد است. @@ -335,7 +335,7 @@ function auctionEnd() external { - **[سایفرین آدرین](https://cyfrin.io/tools/aderyn)** - _تحلیلگر استاتیک مبتنی بر استاتیک که به طور خاص برای امنیت و توسعه قراردادهای هوشمند وب3 طراحی شده است._ -- **[ویک](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - < em x-id="4">چارچوب تحلیل استاتیک مبتنی بر پایتون با آشکارسازهای آسیب‌پذیری و کیفیت کد، چاپگرهایی برای استخراج اطلاعات مفید از کد و پشتیبانی برای نوشتن زیرماژول‌های سفارشی. +- **[ویک](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _چارچوب تحلیل استاتیک مبتنی بر پایتون با آشکارسازهای آسیب‌پذیری و کیفیت کد، چاپگرهایی برای استخراج اطلاعات مفید از کد و پشتیبانی برای نوشتن زیرماژول‌های سفارشی._ @@ -347,9 +347,9 @@ function auctionEnd() external { - **[مانتیکر](https://manticore.readthedocs.io/en/latest/index.html)** - _فریم ورک اجرای نمادین پویا برای تجزیه و تحلیل بایت کد ماشین مجازی اتریوم است._ -- **[میثریل (Mythril)](https://github.com/ConsenSys/mythril-classic)** - _ ابزار ارزیابی بایت کد ماشین مجازی اتریوم برای شناسایی آسیب‌پذیری‌های قرارداد با استفاده از تجزیه و تحلیل تینت، تجزیه و تحلیل کونکولیک، و بررسی جریان کنترل است._ +- **[میثریل (Mythril)](https://github.com/ConsenSys/mythril-classic)** - _ابزار ارزیابی بایت کد ماشین مجازی اتریوم برای شناسایی آسیب‌پذیری‌های قرارداد با استفاده از تجزیه و تحلیل تینت، تجزیه و تحلیل کونکولیک، و بررسی جریان کنترل است._ -- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _ Scribble یک زبان مشخصات و ابزار تأیید زمان اجرا است که به شما امکان می‌دهد قراردادهای هوشمند را با ویژگی‌هایی حاشیه نویسی کنید که به شما امکان می‌دهد به طور خودکار قراردادها را با ابزارهایی مانند Diligence Fuzzing یا MythX تست کنید._ +- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _Scribble یک زبان مشخصات و ابزار تأیید زمان اجرا است که به شما امکان می‌دهد قراردادهای هوشمند را با ویژگی‌هایی حاشیه نویسی کنید که به شما امکان می‌دهد به طور خودکار قراردادها را با ابزارهایی مانند Diligence Fuzzing یا MythX تست کنید._ diff --git a/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md index b88037cb5e7..1e4ce2c62c1 100644 --- a/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md +++ b/public/content/translations/fa/developers/docs/smart-contracts/verifying/index.md @@ -64,7 +64,7 @@ lang: fa توجه داشته باشید که در اینجا توضیح ساده ای از تائید کردن را به میان آورده ایم، و در این پروسه استثناهای بسیاری وجود دارند که ممکن است توضیحات متفاوتی با آنچه که در حال صحبت در اینجا هستیم داشته باشند، مثلاً در زمانی که -متغیرهای از نوع immutable" داشته باشیم.

    +متغیرهای از نوع immutable" داشته باشیم. @@ -80,7 +80,7 @@ lang: fa اتراسکن اجازه کامپایل مجدد بایت‌کد قرارداد از پی لود داده اصلی (کد، آدرس کتابخانه، تنظیمات کامپایلر، آدرس قرارداد، و ...) را به شما می دهد در صورتی که بایت‌کد مجدد کامپایل شده، با بایت‌کد (و پارامترهای کانستراکتور) قراردادی بر روی بلاکچین (آن-چین) منطبق باشد، سپس [قرارداد وریفای می شود](https://info.etherscan.com/types-of-contract-verification/). -هنگامی که قرارداد وریفای شود، کد قرارداد شما برچسب "verified" دریافت کرده و به منظور حسابرسی و آدیت شدن سایرین، بر روی اتراسکن منتشر می شود. همچنین به قسمت قراردادهای وریفای شده یا همان verified contracts -که مخزنی از قراردادهای هوشمند با کدهای وریفای شده است- اضافه می شود. +هنگامی که قرارداد وریفای شود، کد قرارداد شما برچسب "verified" دریافت کرده و به منظور حسابرسی و آدیت شدن سایرین، بر روی اتراسکن منتشر می شود. همچنین به قسمت قراردادهای وریفای شده یا همان verified contracts -که مخزنی از قراردادهای هوشمند با کدهای وریفای شده است- اضافه می شود. اتر اسکن، پر استفاده ترین ابزار وریفای و تائید قراردادهای هوشمند است. هرچند، سرویس وریفای قراردادهای اتراسکن نواقصی نیز دارد: از جمله این نواقص می توان به ناتوانی در مقایسه **هش متادیتا**ی بایت‌کد آن-چین و بایت‌کد مجدد کامپایل شده اشاره کرد. بنابراین می توان گفت که تطابق‌های اتراسکن از نوع تطابق جزئی است. diff --git a/public/content/translations/fa/whitepaper/index.md b/public/content/translations/fa/whitepaper/index.md index 42e678b2a6f..f678b445ff0 100644 --- a/public/content/translations/fa/whitepaper/index.md +++ b/public/content/translations/fa/whitepaper/index.md @@ -16,11 +16,9 @@ _با وجود عمری چندین ساله، ما این مقاله را حفظ ## یک پلتفرم قرارداد هوشمند و برنامه‌ی غیرمتمرکز نسل بعدی {#a-next-generation-smart-contract-and-decentralized-application-platform} -توسعه بیت کوین توسط ساتوشی ناکاموتو در سال ۲۰۰۹ اغلب به عنوان یک تحول اساسی درصنعت پول و رمزارز مورد استقبال قرار گرفته است، اولین نمونه یک دارایی دیجیتال که به طور همزمان نه هیچ پشتوانه یا "[ارزش ذاتی](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)" دارد و نه هیچ مرجع عرضه متمرکز یا کنترل کننده. با این حال، یکی از بخش‌های - شاید مهم تر - تجربه بیت کوین زیربنای فناوری زنجیره بلوکی آن به عنوان ابزاری برای اجماع توزیع شده است، و توجهات به سرعت در حال شروع به تغییر به این جنبه دیگر بیت کوین است. کاربردهای جایگزین رایج فناوری بلاک چین شامل استفاده از دارایی های دیجیتال درون بلاک چین برای نشان دادن ارزهای سفارشی و ابزارهای مالی ("[سکه های رنگی](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lBEoW2T ویرایش)")، مالکیت یک دستگاه فیزیکی زیربنایی ("[اموال هوشمند](https://en.bitcoin.it/wiki/Smart_Property)")، دارایی‌های غیرقابل تعویض مانند نام‌های دامنه ("[Namecoin](http://namecoin.org)")، و همچنین برنامه‌های پیچیده‌تر شامل داشتن دارایی‌های دیجیتال که مستقیماً توسط یک قطعه کد کنترل می‌شوند. اجرای قوانین دلخواه ("[هوشمند قراردادها](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") یا حتی " - -سازمان های مستقل غیرمتمرکز" (DAOs). آنچه اتریوم قصدش را دارد فراهم‌سازی یک زنجیره بلوکی با یک زبان برنامه نویسی توکار تورینگ-کامل تمام عیار است که بتوان از آن برای ساخت "قرارداد" هایی که می‌توانند برای کد کردن توابع انتقال وضعیت دلخواه مورد استفاده قرار بگیرند بهره برد، که به کاربرها اجازه ساخت هر کدام از سیستم های پیش‌تر ذکر شده را و همچنین بسیاری از انواع دیگری که حتی تصورشان را هم هنوز نکرده ایم می‌دهد، صرفاً با به نوشته در آوردن منطق آن در چند خط کد.

    - +توسعه بیت کوین توسط ساتوشی ناکاموتو در سال ۲۰۰۹ اغلب به عنوان یک تحول اساسی درصنعت پول و رمزارز مورد استقبال قرار گرفته است، اولین نمونه یک دارایی دیجیتال که به طور همزمان نه هیچ پشتوانه یا "[ارزش ذاتی](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)" دارد و نه هیچ مرجع عرضه متمرکز یا کنترل کننده. با این حال، یکی از بخش‌های - شاید مهم تر - تجربه بیت کوین زیربنای فناوری زنجیره بلوکی آن به عنوان ابزاری برای اجماع توزیع شده است، و توجهات به سرعت در حال شروع به تغییر به این جنبه دیگر بیت کوین است. کاربردهای جایگزین رایج فناوری بلاک چین شامل استفاده از دارایی های دیجیتال درون بلاک چین برای نشان دادن ارزهای سفارشی و ابزارهای مالی "[سکه های رنگی](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lBEoW2T) ویرایش"، مالکیت یک دستگاه فیزیکی زیربنایی ("[اموال هوشمند](https://en.bitcoin.it/wiki/Smart_Property)")، دارایی‌های غیرقابل تعویض مانند نام‌های دامنه ("[Namecoin](http://namecoin.org)")، و همچنین برنامه‌های پیچیده‌تر شامل داشتن دارایی‌های دیجیتال که مستقیماً توسط یک قطعه کد کنترل می‌شوند. اجرای قوانین دلخواه ("[هوشمند قراردادها](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") یا حتی " +سازمان های مستقل غیرمتمرکز مبتنی بر بلاک چین (DAOs). آنچه اتریوم قصدش را دارد فراهم‌سازی یک زنجیره بلوکی با یک زبان برنامه نویسی توکار تورینگ-کامل تمام عیار است که بتوان از آن برای ساخت "قرارداد" هایی که می‌توانند برای کد کردن توابع انتقال وضعیت دلخواه مورد استفاده قرار بگیرند بهره برد، که به کاربرها اجازه ساخت هر کدام از سیستم های پیش‌تر ذکر شده را و همچنین بسیاری از انواع دیگری که حتی تصورشان را هم هنوز نکرده ایم می‌دهد، صرفاً با به نوشته در آوردن منطق آن در چند خط کد. ## مقدمه ای بر بیت کوین و مفاهیم موجود {#introduction-to-bitcoin-and-existing-concepts} @@ -105,8 +103,7 @@ APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR 2. بررسی کنید که مُهر زمانی بلوک بزرگتر از بلوک قبلی باشد[fn2](#notes) و کمتر از 2 ساعت در آینده باشد 3. بررسی کنید که اثبات کار روی بلوک معتبر باشد. 4. حالت `S[0]` را حالت پایانی بلوک قبل بگذار. -5. فرض کن `TX` لیست تراکنش‌های بلوک با تعداد `n` تراکنش است. برای همه `i` در `0...n-1`، `S[i+1] = APPLY(S[i], TX[i]) را تنظیم کنید /code> اگر هر برنامه ای خطا را برمی‌گرداند، از آن خارج شوید و false را برگردانید.
  • -
  • True را برگردانید و S[n]` را به عنوان وضعیت در انتهای این بلوک ثبت کنید. +5. فرض کن `TX` لیست تراکنش‌های بلوک با تعداد `n` تراکنش است. برای همه `i` در `0...n-1`، `S[i+1] = APPLY(S[i], TX[i]) را تنظیم کنید /code> اگر هر برنامه ای خطا را برمی‌گرداند، از آن خارج شوید و false را برگردانید. True را برگردانید و S[n]` را به عنوان وضعیت در انتهای این بلوک ثبت کنید. در واقع هر تراکنش در بلوک باید یک انتقال حالت معتبر را از حالت قبل از انجام تراکنش به حالت جدید انجام دهد. باید توجه کرد که حالت به هیچ صورتی در بلوک ثبت نمی‌شود؛ این یک موضوع تماما انتزاعی است برای این که توسط گره‌های اعتبارسنج به خاطر سپرده شود و تنها می‌توان (به صورت ایمن) با شروع از حالت بلوک پیدایش و حرکت بر روی تراکنش‌های هر بلوک، حالت بلوک فعلی را به دست آورد. علاوه بر این، توجه کنید که ترتیبی که استخراج‌گر تراکنش‌ها را در بلوک ثبت می‌کند مهم است؛ اگر دو تراکنش آ و ب وجود داشته باشند به طوری که ب یک UTXOی ساخته‌شده از آ را خرج کند، در این صورت بلوک معتبر است اگر آ قبل از ب ثبت شود و نه برعکس. @@ -262,7 +259,7 @@ if !self.storage[calldataload(0)]: ### اجرای کد {#code-execution} -کد در قراردادهای اتریوم به زبان بایت کد مبتنی بر پشته، سطح پایین نوشته می شود که به آن «کد ماشین مجازی اتریوم» یا «کد EVM» گفته می شود. کد شامل یک سری بایت است که هر بایت نشان دهنده یک عملیات است. به طور کلی، اجرای کد یک حلقه بی نهایت است که شامل انجام مکرر عملیات در شمارنده برنامه فعلی (که از صفر شروع می شود) و سپس افزایش شمارنده برنامه به یک اندازه، تا رسیدن به انتهای کد یا یک خطا یا < دستورالعمل 0>STOP یا `RETURN` شناسایی شد. عملیات به سه نوع فضای ذخیره‌سازی داده‌ها دسترسی دارند: +کد در قراردادهای اتریوم به زبان بایت کد مبتنی بر پشته، سطح پایین نوشته می شود که به آن «کد ماشین مجازی اتریوم» یا «کد EVM» گفته می شود. کد شامل یک سری بایت است که هر بایت نشان دهنده یک عملیات است. به طور کلی، اجرای کد یک حلقه بی نهایت است که شامل انجام مکرر عملیات در شمارنده برنامه فعلی (که از صفر شروع می شود) و سپس افزایش شمارنده برنامه به یک اندازه، تا رسیدن به انتهای کد یا یک خطا یا < دستورالعمل 0>STOP یا `RETURN` شناسایی شد. عملیات به سه نوع فضای ذخیره‌سازی داده‌ها دسترسی دارند: - این **پشته**، محفظه‌ای که می‌توان آن‌ها را به بیرون فرستاد و مقادیر را به آن منتقل کرد - **Memory**، یک آرایه بایت بی نهایت قابل گسترش است