Skip to content

Latest commit

 

History

History
293 lines (255 loc) · 20.2 KB

README.md

File metadata and controls

293 lines (255 loc) · 20.2 KB

سالیدیتی

توجه داشته باشید
شما جدیدترین نسخه این اسناد را نمی خوانید. این نسخه 0.8.4 است.

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

سالیدیتی یک زبان آکلادی می‌باشد که از زبان‌هایی مانند سی پلاس پلاس، پایتون و جاوا اسکریپت تأثیر گرفته و برای هدف قراردادن EVM یا ماشینِ مجازیِ اتریوم طراحی شده‌است.

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

با سالیدیتی می‌توانید قراردادهایی را برای کاربردهایی از قبیل رأی‌گیری، سرمایه گذاری جمعی، مزایده کور و کیف پول‌ با امضای چندگانه استفاده کنید.

هنگام استقرار قرارداد‌ها، باید از آخرین نسخه سالیدیتی منتشر شده استفاده کنید. به این دلیل که تغییرات جدید، ویژگی‌های جدید و رفع باگ‌ها به طور منظم معرفی می‌شوند. ما در حال حاضر از نسخه 0.X برای نشان دادن این تغییرات سریع استفاده می‌کنیم.

هشدار
سالیدیتی به تازگی نسخه 0.8.X را منتشر کرده که تغییرات جدید را معرفی می‌کند. حتماً لیست کامل را مطالعه کنید.

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

شروع

  1. درک مبانی قراردادهای هوشمند

اگر با مفهوم قراردادهای هوشمند آشنا هستید، به شما توصیه می‌کنیم که با جستجوی بخش "معرفی قراردادهای هوشمند" شروع به کار کنید، که شامل موارد زیر است:

  • یک مثال ساده از قرارداد هوشمند که با سالیدیتی نوشته شده‌است.
  • مبانی بلاکچین.
  • ماشین مجازی اتریوم.
  1. آشنایی با سالیدیتی

هنگامی که با مبانی اولیه آشنا شدید، توصیه می‌کنیم برای درک مفاهیم اصلی زبان، بخش‌های "سالیدیتی با مثال" و "شرح زبان" را بخوانید.

  1. نصب کامپایلر سالیدیتی

روش های مختلفی برای نصب کامپایلر سالیدیتی وجود دارد، به سادگی گزینه مورد نظر خود را انتخاب کنید و مراحل ذکر شده در صفحه نصب را دنبال کنید.

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

اگر می‌خواهید در مورد ساخت برنامه‌های غیرمتمرکز در اتریوم اطلاعات بیشتری کسب کنید، منابع توسعه دهنده اتریوم می‌توانند به شما در تهیه مستندِ عمومیِ بیشتر در مورد اتریوم و انتخاب گسترده‌ای از آموزش‌ها، ابزارها و چارچوب‌های توسعه کمک کنند. اگر سؤالی دارید، می‌توانید جواب‌ها را جستجو کنید یا از طریق Ethereum StackExchange یا کانال Gitter ما بپرسید.

ترجمه‌ها

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

  • فرانسوی (در حال انجام)
  • ایتالیایی (در حال انجام)
  • ژاپنی
  • کره‌ای (در حال انجام)
  • روسی (نسبتاً قدیمی)
  • چینی ساده شده (در حال انجام)
  • اسپانیایی
  • ترکی (جزئی)

فهرست

فهرست کلمات کلیدی، صفحه جستجو

مبانی

توضیحات زبان

Internals

  • Layout of State Variables in Storage
    • Mappings and Dynamic Arrays
    • JSON Output
  • Layout in Memory
    • Differences to Layout in Storage
  • Layout of Call Data
  • Cleaning Up Variables
  • Source Mappings
  • The Optimizer
    • Benefits of Optimizing Solidity Code
    • Differences between Optimized and Non-Optimized Code
    • Optimizer Parameter Runs
    • Opcode-Based Optimizer Module
    • Yul-Based Optimizer Module
  • Contract Metadata
    • Encoding of the Metadata Hash in the Bytecode
    • Usage for Automatic Interface Generation and NatSpec
    • Usage for Source Code Verification
  • Contract ABI Specification
    • Basic Design
    • Function Selector
    • Argument Encoding
    • Types
    • Design Criteria for the Encoding
    • Formal Specification of the Encoding
    • Function Selector and Argument Encoding
    • Examples
    • Use of Dynamic Types
    • Events
    • Errors
    • JSON
    • Strict Encoding Mode
    • Non-standard Packed Mode
    • Encoding of Indexed Event Parameters

Additional Material

  • Solidity v0.5.0 Breaking Changes
    • Semantic Only Changes
    • Semantic and Syntactic Changes
    • Explicitness Requirements
    • Deprecated Elements
    • Interoperability With Older Contracts
    • Example
  • Solidity v0.6.0 Breaking Changes
    • Changes the Compiler Might not Warn About
    • Explicitness Requirements
    • Semantic and Syntactic Changes
    • New Features
    • Interface Changes
    • How to update your code
  • Solidity v0.7.0 Breaking Changes
    • Silent Changes of the Semantics
    • Changes to the Syntax
    • Removal of Unused or Unsafe Features
    • Interface Changes
    • How to update your code
  • Solidity v0.8.0 Breaking Changes
    • Silent Changes of the Semantics
    • New Restrictions
    • Interface Changes
    • How to update your code
  • NatSpec Format
    • Documentation Example
    • Tags
    • Documentation Output
  • Security Considerations
    • Pitfalls
    • Recommendations
  • SMTChecker and Formal Verification
    • Tutorial
    • SMTChecker Options and Tuning
    • Abstraction and False Positives
    • Real World Assumptions
  • Resources
    • General Resources
    • Integrated (Ethereum) Development Environments
    • Editor Integrations
    • Solidity Tools
    • Third-Party Solidity Parsers and Grammars
  • Import Path Resolution
    • Virtual Filesystem
    • Imports
    • Base Path
    • Import Remapping
    • Using URLs in imports
  • Yul
    • Motivation and High-level Description
    • Simple Example
    • Stand-Alone Usage
    • Informal Description of Yul
    • Specification of Yul
    • Specification of Yul Object
    • Yul Optimizer
    • Complete ERC20 Example
  • Style Guide
    • Introduction
    • Code Layout
    • Order of Layout
    • Naming Conventions
    • NatSpec
  • Common Patterns
    • Withdrawal from Contracts
    • Restricting Access
    • State Machine
  • List of Known Bugs
  • Contributing Team Calls
    • How to Report Issues
    • Workflow for Pull Requests
    • Running the Compiler Tests
    • Running the Fuzzer via AFL
    • Whiskers
    • Documentation Style Guide
    • Solidity Language Design
    • Solidity Brand Guide
    • The Solidity Brand
    • Solidity Brand Name
    • Solidity Logo License
    • Solidity Logo Guidelines
    • Credits
  • Language Influences