وقتی در مورد
bitcoinscript
صحبت می کنیم،
در مورد یک زبان برنامه نویسی ساده صحبت می کنیم که در بیت کوین برای پردازش تراکنش ها استفاده می شود که از چپ به راست خوانده می شود.
این بر اساس یک سری ساختارهای خطی، معروف به پشته است که حاوی دادههای موجود به ترتیب LIFO (آخرین ورود – اولین خروج) است.
هر دستور در این زبان پشت سر هم اجرا می شود.
این زبان تورینگ کامل نیست زیرا عملکرد آن محدود است و نمی تواند حلقه بزند.
بنابراین قادر به حل هر نوع مشکلی مانند ماشین های تورینگ نیست.
با این حال،
این محدودیت عمدی است زیرا از اجرای حلقه و خطای بی نهایت یا بی پایان جلوگیری می کند.
جایی که بخشهای مخرب برنامه میتوانند برای ایجاد عملیات پیچیده برای مصرف نرخ هش و کاهش سرعت سیستم بیتکوین از طریق حلقههای بینهایت آزاد باشند.
یک زبان برنامه نویسی ضروری است زیرا به ما اجازه می دهد برنامه بنویسیم و کامپیوترها خواسته های ما را اجرا می کنند.
در بیت کوین برای برقراری ارتباط با خواسته های ما،
کدهای عملیاتی (OP CODES) که عملکردهای مختلفی را انجام می دهند.
مانند دستکاری حافظه، ریاضی، حلقه ها، فراخوانی تابع، در میان بسیاری دیگر.
بنابراین،
بیت کوین اسکریپت اساساً مجموعه ای از دستورالعمل های برنامه ریزی شده است که با هر تراکنش انجام شده ثبت می شود.
این دستورالعمل ها نحوه دسترسی و استفاده کاربران از بیت کوین های موجود در شبکه را توضیح می دهد.
OP_CODE یا کد عملیاتی چیست؟
در محاسبات، یک OP_CODE (کد عملیات، به زبان انگلیسی)،
بخشی از یک دستورالعمل زبان ماشین است که عملیاتی را که باید انجام شود را مشخص می کند.
مشخصات و قالب آن توسط معماری مجموعه دستورات (ISA) مؤلفه ای که دستورالعمل را پردازش می کند تعیین می شود.
به طور کلی این پردازش توسط سخت افزار کامپیوتر (معمولا یک CPU) انجام می شود.
اما همچنین می تواند نرم افزاری باشد که به طور ویژه برای شبیه سازی عملکرد یک CPU و پردازش این دستورالعمل ها آماده شده است.
به طور کلی،
یک دستورالعمل کامل زبان ماشین حاوی یک OP_CODE و به صورت اختیاری،
مشخصات یک یا چند عمل است که کد عملیات باید بر اساس آن عمل کند.
برخی از عملیات ها عملوند ضمنی دارند یا اصلاً هیچ.
در بیت کوین و بسیاری دیگر از ارزهای دیجیتال، OP_CODES ستون فقرات سیستمی است که به شما امکان می دهد دستورالعمل های تراکنش را برنامه ریزی کنید.
بیایید به یاد داشته باشیم که بیت کوین (و سایر ارزهای رمزپایه مشتق شده از آن) پول قابل برنامه ریزی هستند.
و در اینجا کلمه کلیدی “قابل برنامه ریزی” است،
زیرا بیت کوین اسکریپت در واقع یک زبان برنامه نویسی است که در آن دستورالعمل ها در OP_CODES که شبکه بیت کوین از قبل برای عملکرد خود تعریف کرده است، ارائه می شود.
در واقع با توجه به ساختاری که بیت کوین در آن ایجاد شده است، امکان تعریف ۲۵۶ OP_CODES وجود دارد که از ۰ تا ۲۵۵ شروع می شود.
این OP_CODES مواردی هستند که به شما امکان می دهند عملیات مختلف در بیت کوین و زمان بندی تراکنش های آن مانند کنترل جریان داده، مدیریت ثابت، مدیریت پشته،
مدیریت منطقی، حساب، قفل زمانی، کلمات شبه، عملیات رمزنگاری و رزرو شده را انجام دهید.
کلمات شما می توانید یک لیست کامل و به روز شده از OP_CODES های مختلف را مستقیماً در کد بیت کوین مشاهده کنید.
scritpSig و scriptPubKey، بخشهای اساسی تمام اسکریپت بیت کوین هستند.
در شبکه بیت کوین،
هر اسکریپت بیت کوین به دو نوع اسکریپت تقسیم می شود،
scriptSig و scriptPubKey.
اول،
scriptSig اسکریپت باز کردن قفل است که به یک کلید عمومی و یک امضای دیجیتال نیاز دارد.
در واقع پس از شناسایی مشکلات مختلف در نسخه های اولیه نرم افزار بیت کوین، چک های امضا نیز گنجانده شد.
بنابراین،
سیستم تنها در صورتی انجام تراکنش ها را می پذیرد که امضاها و تأیید آنها با یک سری قوانین تعیین شده مطابقت داشته باشد که رفتار مناسب در شبکه را تضمین می کند.
دومی،
scriptPubKey، اسکریپت مسدود کننده است که حاوی یک هش کلید عمومی است که آدرس بیت کوین نیز نامیده می شود.
برخی از اسکریپت های بیت کوین به چند امضا نیاز دارند،
یعنی مجوز چندین کاربر برای انجام تراکنش. در این مورد، اسکریپت پیچیدهتر است، زیرا عملیات بسیار بزرگتری نسبت به عملیات استاندارد نظیر به نظیر است.
در واقع، زمانبندی تراکنشهای بیتکوین در این قسمت از اسکریپت ذخیره میشود.
هدف از ایجاد آن
هدف از ایجاد یک زبان اسکریپت در بیت کوین ارائه یک سری پارامترهای آسان و انعطاف پذیر برای فعال کردن یک تراکنش است.
بنابراین وقتی ساتوشی ناکاموتو بیت کوین را توسعه داد،
عملکردهای مختلف از جمله ضرب را غیرفعال کرد.
بنابراین اسکریپت از نظر برنامه نویسی ساده نگه داشته می شود.
بنابراین،
این زبان برنامه نویسی است که تعیین می کند آیا می توان عملیاتی را انجام داد یا خیر.
یعنی اگر عملیات مذکور برای انتقال وجه مجاز باشد.
به زبان ساده،
ایجاد اسکریپت بیت کوین چیزی است که ماهیت قابل برنامه ریزی بیت کوین را می دهد.
این همان چیزی است که به ما اجازه میدهد،
برای مثال، تراکنشی را ارسال کنیم که فقط در صورت رعایت شرایط خاص تأیید شود. این ویژگی منحصر به فرد بیت کوین و ارزهای دیجیتال است،
چیزی که پول دیجیتال امروزی نمی تواند به آن برسد،
پول فیزیکی شیک این تکامل پول به جایی رسیده است که حتی پول می تواند به طور مستقل و غیرمتمرکز به سادگی با توجه به برنامه های تعبیه شده در آن عمل کند.
همچنین اسکریپت بیت کوین از ایجاد خطا در سیستم و استفاده غیر ضروری از تراکنش های بسیار پیچیده جلوگیری می کند.
در واقع، اسکریپت محاسبه تراکنش ها را نسبتاً آسان می کند.
همچنین حلقه های بی نهایت به قدرت محاسباتی بسیار بیشتری نیاز دارند و شبکه ها را کند می کنند، همانطور که در ابتدا ذکر شد.
نمونه ای از اسکریپت بیت کوین
قبل از ادامه کاوش بیشتر در مورد چیستی آن و عناصر مختلفی که یک اسکریپت بیت کوین را تشکیل می دهند،
اجازه دهید نمونه کوچکی از آن را ببینیم.
در ادامه شاهد یک اسکریپت کوچک بیت کوین خواهیم بود که امروزه به طور گسترده برای تراکنش های بیت کوین استفاده می شود.
رفتار و عملکرد آن و همچنین قسمت های مختلف آن را توضیح خواهیم داد و سپس به خصوصیات آن عمیق تر خواهیم پرداخت.
بیت کوین اسکریپت
زبان قرارداد هوشمند بیت کوین
بسیاری از مردم کسانی هستند که فکر می کنند و استدلال می کنند که بیت کوین قادر به اجرای قراردادهای هوشمند نیست.
حقیقت این است که این درست نیست،
زیرا با بیت کوین اسکریپت به این ترتیب قراردادهای هوشمند ایجاد می کنید.
مطمئناً توانایی های شما در مقایسه با کارهایی که می توانید انجام دهید برای مثال اتریوم محدود است،
اما این بدان معنا نیست که بیت کوین اسکریپت توانایی ایجاد قراردادهای هوشمند را ندارد.
اما اجازه دهید این موضوع را به روشی ساده تر و دقیق تر توضیح دهیم.
اول از همه،
همانطور که گفتیم بیت کوین اسکریپت زبان تورینگ کامل نیست.
این به این دلیل است که برای انجام عملکردهای مورد نظر خود به پیچیدگی بیشتری نیاز ندارد.
اما،
یکی از دلایل اصلی این است که از آنجایی که هیچ حلقه ای وجود ندارد، می توانید با اطمینان از زمان و چگونگی پایان یک برنامه خاص مطلع شوید.
هیچ امکانی برای اجرای خطا وجود ندارد که امنیت بیشتری به شما می دهد.
همچنین امکان مسدود شدن برنامه ها یا مسدود شدن مجری آنها که در این مورد بیت کوین است وجود ندارد.
یک مثال خوب از اهمیت این حفاظت ها این است که با بیت کوین اسکریپت نمی توان اسکریپت هایی ایجاد کرد که برای همیشه اجرا شوند.
در واقع، خطر یک اسکریپت که برای همیشه اجرا می شود این است که درهایی را برای حمله به شبکه از طریق حمله انکار سرویس (DoS) باز کند.
اما این واقعیت که بیت کوین اسکریپت این نوع عملیات را محدود می کند،
شبکه را از چنین حملاتی محافظت می کند.
بنابراین هیچ شانسی وجود ندارد که یک برنامه اسکریپت با یک حلقه پیوسته بتواند از عملکرد صحیح بیت کوین جلوگیری کند.
به عبارت ساده تر، بیت کوین اسکریپت بسیار امن تر از همتایان پیچیده تر خود مانند مواردی که توسط اتریوم و نئو ارائه شده است، است.




