دستورالعمل ها و دستورالعمل های مورد استفاده در محاسبات برای برنامه نویسی تجهیزات کامپیوتری و ماشین های مجازی به عنوان OP_CODE (کد عملیات) یا کدهای عملیاتی شناخته می شوند.
این کدها عملیات یا عملکردهایی را نشان می دهند که باید توسط سخت افزار یا نرم افزار انجام و اجرا شوند.
در مورد سخت افزار، شکل OP_CODE با توجه به نوع معماری مجموعه عملیات (ISA) کامپیوتر تعریف می شود.
یعنی طبق دستورالعملی که دستگاه برای تفسیر و اجرای کدهای عملیاتی دارد.
در مورد نرمافزار، OP_CODE با یک نوع ISA یا معماری عملیات ایجاد میشود که مخصوصاً برای تفسیر توسط ماشین مجازی یا مفسر بایت طراحی شده است.
کدهای عملیاتی به یک برنامه رایانه ای اجازه می دهد تا دستوری را برای رایانه صادر کند و آن را تفسیر و اجرا کند.
OP_CODE چگونه کار می کند؟
برای اینکه ماشینها، تجهیزات و رایانهها بتوانند سفارش خاصی را دریافت و اجرا کنند، لازم است دستورالعملها به زبان قابل فهم صادر شود.
بنابراین، این دستورالعمل ها در یک زبان برنامه نویسی نوشته می شوند که حاوی کدهای عملیاتی است یا در نهایت به یک سری از کدهای عملیاتی ترجمه می شوند.
این کدها به زبانی که ما عموماً می شناسیم مانند انگلیسی نوشته می شوند و سپس توسط یک برنامه کامپایلر یا مترجم برای ماشین ها ترجمه می شوند تا آن را به زبان باینری خود بفهمند.
یعنی دستورالعمل های یادگاری که به زبان ما برای تفسیر ما انسان ها نوشته شده است، معادل خود را در زبان باینری دارد تا ماشین ها بتوانند به راحتی آنها را تفسیر کنند.
و بدین ترتیب بتوانید بر اساس دستورالعمل دریافتی عمل کرده و آن را به درستی اجرا کنید.
انواع OP_CODES در اسکریپت بیت کوین
تمام OP_CODES برای اسکریپت بیت کوین را می توان بر اساس عملکرد و نشانه هایی که قرار است در سیستم اجرا کنند طبقه بندی کرد.
به عنوان مثال، این کدها می توانند برای حذف، افزودن، جابجایی یا چرخش عناصر روی پشته، تجزیه و تحلیل و انجام عملیات حسابی، اعتبارسنجی یا بی اعتبار کردن تراکنش ها و بسیاری از توابع دیگر استفاده شوند.
در ادامه فهرستی از کدهای عملیاتی را ارائه خواهیم کرد که بر اساس نوع و عملکرد آنها طبقه بندی شده اند.
با این حال، توجه به این نکته مهم است که این لیست نه قطعی است و نه رادیکال، زیرا کدهای عملیاتی زیادی در اسکریپت بیت کوین وجود دارد و تنها تعدادی از آنها در اینجا ذکر شده است.
کدها را جاسازی کنید
OP_0 = 0x00 y OP_FALSE = OP_0: هر دو کد را فشار می دهند یا یک عنصر یا یک آرایه بایت خالی را به پشته اضافه می کنند.
هیچ کدام را نباید با NO_OP اشتباه گرفت
OP_PUSHDATA1 = 0x4c، OP_PUSHDATA2 = 0x4d y OP_PUSHDATA4 = 0x4e: در کد اول، بایت بعدی شامل تعداد بایت هایی است که باید در پشته درج شود.
در کد دوم ۲ بایت بعدی شامل تعداد بایت هایی است که باید در پشته درج شوند،
در حالی که در کد سوم آنها ۴ بایت بعدی هستند که حاوی تعداد بایت هایی هستند که باید به پشته اضافه شوند.
در این کدها فرآیند اضافه کردن بایت ها با فرمت endian انجام می شود.
OP_NEGATIVE = 0x4f y OP_TRUE = OP_1:
در این حالت، عدد منفی -۱ به پشته رانده می شود، در حالی که در OP_TRUE عدد مثبت ۱ به پشته رانده می شود.
کدهای کنترل
OP_NOP = 0x61:
این کد هیچ عملیاتی را اجرا نمی کند، اما در مواردی استفاده می شود که باید مقداری فضای داخل برنامه پر شود.
OP_IF = 0x63 y OP_NOTIF = 0x64:
هر دو کد برای اجرای اعلان ها استفاده می شوند. در کد اول، اگر مقدار بالای پشته No. FALSE باشد، اجرا می شوند. در کد دوم، اگر مقادیر بالای پشته si FALSE باشد، اجرا می شوند. بنابراین در هر دو مورد، مقدار پشته بالایی حذف می شود.
OP_ELSE = 0x67:
برای تأیید یا رد عبارات استفاده می شود. در صورتی که دو کد قبلی (OP_IF و OP_NOTIF) اجرا شده باشند، عبارات رد می شوند. در صورتی که شماره اجرا شده باشد، اظهارات تایید می شود.
OP_ENDIF = 0x68:
برای تکمیل یک بلوک استفاده می شود، زیرا بدون این، تراکنش ها معتبر نیستند. کد OP_ENDIF بدون کد OP_IF بالا نیز معتبر نخواهد بود.
OP_RETURN = 0x6a:
برای علامت گذاری خروج تراکنش به عنوان نامعتبر استفاده می شود.
کدهای برنامه و عملیات پشته
OP_TOALTSTACK = 0x6b y OP_FROMALTSTACK = 0x6c- اولین کد برای انتقال ورودی به بالای پشته جایگزین و حذف آن از پشته اصلی استفاده می شود. کد دوم فرآیند مخالف را اجرا می کند. ورودی را به بالای پشته و آن را از پشته جایگزین حذف می کند.
OP_DROP = 0x75 y OP_DUP = 0x76:
به ترتیب برای حذف یک آیتم از پشته بالا و برای کپی کردن یک آیتم در پشته بالا استفاده می شود.
کدهای عملیات اسپلایس
OP_SIZE = 0x82- این کد طول رشته عنصر بالای پشته را بدون شکستن آن فشار می دهد.
کدهای OP_SUBSTR = 0x7f، OP_LEFT = 0X80 y OP_RIGHT = 0x81 غیرفعال شده است. آنها عادت داشتند:
یک بخش را به صورت زنجیره ای پس بدهید.
فقط کاراکترهای باقی مانده از یک نقطه خاص را در یک رشته نگه دارید، و فقط کاراکترهای باقی مانده را به ترتیب در سمت راست یک نقطه خاص در یک رشته نگه دارید.
کدهای عملیات عددی
OP_1ADD = 0x8b y OP_1SUB = 0x8c:
به ترتیب برای اضافه کردن (جمع بندی) یا حذف (کاهش) ۱ در ورودی استفاده می شود.
OP_2MUL = 0x8d y OP_1DIV = 0x8e:
به ترتیب برای ضرب o بر ۲ ورودی استفاده شد، اما هر دو غیرفعال شدند.
OP_ABS = 0x90 y OP_NEGATE = 0x8f:
برای معکوس کردن علامت ورودی، یعنی برای مثبت یا منفی کردن ورودی به ترتیب استفاده می شود.
OP_MIN = 0xa3 y OP_MAX = 0xa4:
این کدها برای برگرداندن مقدار کمتر a و b یا در مورد شما برای برگرداندن مقدار بالاتر a و b به ترتیب استفاده می شوند.
کدگذاری و رمزگذاری
OP_RIPEMD160 = 0xa6:
برای کدگذاری ورودی با الگوریتم RIPEMD-160 استفاده میشود تا هشهای کوتاهتر اما به همان اندازه ایمن برای ایجاد آدرسها به دست آید.
OP_SHA1 = 0xa7:
برای رمزگذاری ورودی با الگوریتم SHA-1 استفاده می شود که برای محاسبه و به دست آوردن یک مقدار بررسی واحد برای همه ورودی ها بیشتر از ۲۶۴ – ۱ بیت استفاده می شود.
OP_SHA256 = 0xa8:
برای رمزگذاری ورودی با الگوریتم SHA-256 استفاده می شود.
OP_HASH160 = 0xa9:
برای رمزگذاری ورودی ۲ بار استفاده می شود. کدگذاری اول از طریق الگوریتم SHA-256 و دومی با الگوریتم
OP_HASH256 = 0xaa- برای رمزگذاری ورودی ۲ بار از طریق الگوریتم SHA-256 استفاده می شود.RIPEMD-160
OP_HASH256 = 0xaa- برای رمزگذاری ورودی ۲ بار از طریق الگوریتم SHA-256 استفاده می شود.
OP_CHECKMULTISIG = 0xae:
برای مقایسه بین امضای اول با هر کلید عمومی تا زمانی که مطابقت ECDSA پیدا شود استفاده می شود. سپس این فرآیند را با امضای دوم و کلیدهای عمومی بعدی و به همین ترتیب تکرار کنید تا تمام امضاها تایید شوند.
کدهای قفل زمان
OP_CHECKLOCKTIMEVERIFY = 0xb1:
این کد بهعنوان No علامتگذاری میکند. در صورتی که عنصر بالای پشته بزرگتر از فیلد تنظیمشده بهعنوان nLockTime باشد، ورودی معتبر است.
در کاربرد این کد مفاهیم متعددی وجود دارد که ورودی را نیز نامعتبر می کند. به عنوان مثال، اگر پشته خالی باشد یا عنصر بالای آن منفی باشد، از جمله.
OP_CHECKSEQUENCEVERIFY = 0xb2:
همچنین برای علامت گذاری ورودی به عنوان شماره استفاده می شود.
اگر زمان مسدود کردن متفاوت یا بیشتر از مقدار عنصر بالای پشته باشد، معتبر است.
هر یک از این OP_CODE یک عملکرد کاملاً تعریف شده را انجام می دهند، و آرایش مشترک این OP_CODE چیزی است که بیت کوین را قادر می سازد همانطور که انجام می دهد عمل کند. با این حال، OP_CODE ها منحصر به بیت کوین نیستند.
به عنوان مثال اتریوم دارای رجیستر OP_CODE خود است که به شما امکان می دهد دستورالعمل ها را به ماشین مجازی اتریوم خود وارد کنید و از آنجا تمام عملیات این بلاک چین را انجام دهید. این از ساده ترین تراکنش ها تا عملیات پیچیده قرارداد هوشمند در آن پلتفرم را شامل می شود.
همین امر در مورد بقیه ارزهای رمزنگاری شده که OP_CODES یا ابزارهای مشابه برای عملکرد خود دارند نیز صدق می کند.
از این رو اهمیت آنها، نه تنها شناخت آنها، بلکه توسعه آنها برای گسترش کارکردهای ارزهای دیجیتال و اکوسیستم های موجود در آنها است.




