بنویسید قرارداد هوشمند Smart Contract
ولی بخوانید قرارداد اتومات Automated Contract



۹ آذرماه ۱۳۹۷



آقای Nick Szabo در دهه نود میلادی به مفهومی با عنوان « قرارداد هوشمند » پرداخت . شما می توانید جمع بندی او را راجع به این موضوع در مقاله سال ۱۹۹۷ ایشان مطالعه کنید . البته عملا توسعه دهندگان قراردادهای هوشمند تا سال ۲۰۱۴ ( یعنی همزمان با شروع کار شبکه اتریوم ) نتوانستند کار خود را آغاز کنند . زیرا این قراردادها با تکنولوژی بلاکچین کار می کنند . البته بعد از اتریوم ، بلاکچین های دیگری نیز برای توسعه قراردادهای هوشمند راه اندازی شدند.


قراردادهای هوشمند برنامه های کامپیوتری هستند که قراردادهای کلاسیک را شبیه سازی می کنند . آنها می توانند رمز ارز و یا توکن مخصوص خود را مبادله کنند . ضمنا برای هر قرارداد ، حساب کاربری یا کیف پول تعریف می شود که به اصطلاح به آن «والت ِقرارداد» می گویند. بخشی از کد نویسی های یک قرارداد هوشمند نیز ، شرایط و نحوه تبادل بین والت ِقرارداد با والت ِکاربران ( یا تبادل با والت قراردادهای هوشمند دیگر) می باشد.


قرارداد های هوشمند می توانند در بعضی از شبکه های بلاکچین ثبت و راه اندازی شوند. این قراردادها پس از راه اندازی ، زندگی جاوید پیدا می کنند . یعنی تا زمانی که آن شبکه بلاکچین کار می کند ، اصل قرارداد هوشمند و همچنین کلیه مبادلات و تراکنش ها ، با جزئیات کامل در شبکه ، ثبت و نگهداری می شوند . این قراردادها مستمرا و برای همیشه ، فقط مطابق کدهای قرارداد اولیه کار می کنند و هیچ انسانی ، حتی طراح و نویسنده قرارداد نمی تواند کوچکترین تغییری در کدهای برنامه بدهد.



Nick Szabo





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



قراردادهای هوشمندی که هوشمند نیستند !



پس از معرفی بلاکچین اتریوم ، برنامه نویسان واقعا سورپرایز شدند زیرا می توانستند بدون راه اندازی شبکه بلاکچین مخصوص و بدون هیچ امکانات ویژه ای ، با یک لپ تاب و نوشتن یک قرارداد هوشمند ، توکن خود را خلق کنند . شبکه اتریوم تبادلات این توکن ها را ساپورت می کرد و همه چیزبرای یک تحول ویژه مهیا بود . این تحول ویژه Initial Coin Offering یا به اختصار ICO بود . به همین دلیل اولین و شاید بیشترین تعداد از قراردادهای هوشمند ، برای تولید توکن و راه اندازی ICO نوشته شدند .


یک مثال برای قراردادهای هوشمندی که هوشمند نیستند ! شاید استاندارد ERC-20 باشد که از اواخر سال ۲۰۱۵ برای تولید توکن ها بر روی شبکه اتریوم مورد استفاده بسیاری از شرکت ها قرار گرفت . این استاندارد شامل شش تابع اصلی است :


totalSupply() public constant returns

balanceOf(address tokenOwner) public constant returns

allowance(address tokenOwner, address spender) public constant returns

transfer(address to, uint tokens) public returns

approve(address spender, uint tokens) public returns

transferFrom(address from, address to, uint tokens) public returns


اگر با زبان سولیدیتی و توابع آن آشنا باشید ، شما هم تائید می کنید که استاندارد بالا نمی تواند مصداق هوشمند بودن قرارداد تولید توکن باشد . بلکه این توابع ، قطعی و بدون هوشمندی خاصی محسوب می شوند . البته اگر احیانا بخواهیم این توابع را مصداق هوشمندی فرض کنیم ، مجبوریم همه یا اکثر برنامه های کامپیوتری را هوشمند بنامیم !



ERC-20 >> Token standard





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



جمع بندی موضوع



​افرادی مثل Nick Szabo یا Vitalik Buterin مسلما افراد هوشمندی هستند ! ولی دستاورد تحقیق و مطالعه آنها ، که نوعی قرارداد کامپیوتری روی بستر بلاکچین است ، همیشه هوشمند نیست . به همین دلیل عنوان « قرارداد هوشمند» تناسبی با واقعیت این قراردادها ندارد . به هرحال اگر نمی توانیم و یا نمی خواهیم نام این قراردادها را عوض کنیم ، حداقل باید مراقب باشیم که درک مناسبی از این قراردادها داشته باشیم .





ضمنا دربسیاری موارد ، محدودیت شبکه های غیرمتمرکز بیشتراز شبکه های متمرکز است . مثلا تابع رندوم در زبان سولیدیتی وجود ندارد زیرا ماشین مجازی اتریوم EVM نیاز به قطعیت کامل درقراردادهای هوشمند دارد. ولی هیچکدام ازاین دلایل تکنیکی ، باعث نمی شود که در موارد لازم ، تلاش برای هوشمندی این نوع قراردادها متوقف شود . حتی توسعه دهندگان تلاش می کنند که تکنولوژی بلاکچین و هوش مصنوعی را در خدمت هم قراردهند و دستاوردهایی هم دراین زمینه داشته اند و یا ...... ولی باید توجه داشت که امروز و همیشه ، بسیاری از قراردادهایی که روی شبکه های بلاکچین ثبت و راه اندازی می شوند ، هوشمندی خاصی ندارند و شاید احتیاجی به هوشمندی هم نداشته باشند ! به همین دلیل عنوان « قرارداد هوشمند» نباید توسعه دهندگان و کاربران را به اشتباه بیندازد . این بحث را همین جا پایان می دهیم و منتظر نظرات شما خواهیم بود.



۹ آذرماه ۱۳۹۷