معیارهای انتخاب زبان

گروه مربوطه : ارزهای دیجیتال
زیر گروه مربوطه : معرفی ارزهای دیجیتال
معیارهای انتخاب زبان

 امنیت (Security)


دیوید شوارتز (David Schwartz) چه زیبا بیان کرده است که بلاک‌چین‌ها باید همانند دژهای نظامی مستحکم باشند. نخست آنکه کد آنها عمومی بوده و برای همگان قابل رویت است. همه می‌توانند کد مربوط به آنها را بررسی کرده و نقاط ضعف امنیتی و باگ‌ها را پیدا کنند. با این وجود برخلاف سایر پروژه‌های منبع‌باز (Opensource)، یافتن آسیب‌پذیری در یک بلاک چین تبعات زیان‌بار بیشتری دارد. پیدا کردن چنین باگ‌هایی می‌تواند منجر به هک سیستم و سرقت میلیون‌ها دلار شود. درست به همین دلیل پروسه‌ی توسعه‌ی یک بلاک چین معمولا بسیار آهسته پیش می‌رود.

مدیریت منبع (Resource management)

توسعه باید همگام با نیازهای شبکه باشد. نمی‌توان این نیازها را از ابتدا در نظر نگرفته و بعدا به آنها پرداخت. شما باید به خوبی سیستم خود را برای پرسش‌های (queries) محلی و از راه دور (Remote) آماده کنید.

کارایی (Performance)


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

یکی از وظایفی که قابلیت موازی‌سازی در بلاک چین را دارد، تایید امضای دیجیتال (digital signature) است چراکه تنها چیزی که برای تایید نیاز دارید یک کلید، یک تراکنش و یک امضا است. تنها با استفاده از سه داده، می‌توانید تاییدات را به موازات وظایف دیگر انجام دهید.

تمام توابع یک بلاک چین، چنین خاصیتی ندارند به عنوان مثال اجرای یک تراکنش را در نظر بگیرید. چندین تراکنش برای جلوگیری از مشکلاتی نظیر دوبار خرج کردن (Double spend) نمی‌توانند به صورت کاملا موازی اجرا شوند. برخی زبان‌های برنامه‌نویسی برای پیاده‌سازی توابع به شکل موازی مناسب‌تر هستند.

جداسازی (Isolation)


رفتار قطعی (Deterministic) چیست؟

اگر (A + B = C) باشد، بدون در نظر گرفتن هیچ پیش‌شرطی، همواره عبارت (A+B) برابر با C خواهد بود. توابع هش (Hash function) نیز قطعی هستند و این بدین معنا است که هش متغیر A، همواره برابر با HA خواهد بود. بنابراین در یک بلاک چین،تمامی عملیات مربوط به تراکنش‌ها باید قطعی باشند. یک تراکنش نمی‌تواند در دو روز رفتاری متفاوت داشته باشد. همچنین یک قرارداد هوشمند نیز نمی‌تواند در دو ماشین رفتاری متفاوت داشته باشد.

پیاده‌سازی چنین المانی تنها از طریق جداسازی و یا ایزوله کردن تراکنش‌ها و قراردادهای هوشمند از عناصری است که عدم قطعیت در آنها وجود دارد.

تا اینجا راجع به چالش‌هایی که برنامه‌نویسان بلاک چین با آنها رو‌به‌رو هستند صحبت کردیم در ادامه به دسته‌بندی به بررسی و دسته‌بندی زبان‌های برنامه‌نویسی خواهیم پرداخت.