در این مقاله در صدد ارائه پروپوزال و طرح پیشنهادی برای ثبت و تایید اسناد با فناوری بلاک چین هستیم. حتی با وجود سرعت روزافزون دنیای پیرامون ما، باز هم فرآیندهای تایید و ثبت اغلب با سرعت کم و به صورت دستی انجام میشوند. استفاده از قراردادهای هوشمند و فناوری بلاک چین میتواند برای این شرایط، انتخاب ایدهآلی باشد. این سیستم غیرمتمرکز، تاریخچه و سوابق داراییها و تراکنشها را در شبکه و بدون نقطه آسیبپذیر مرکزی ذخیره میکند. بلاکچین با قابلیت مقاومت بیشتر در برابر حملات مخرب، پذیرش اسناد را به صورت ایمن و دیجیتالی امکانپذیر میسازد.
اگر با قراردادهای هوشمند آشنایی ندارید، این مقاله را به شما پیشنهاد میکنیم: قرارداد هوشمند (Smart Contract) چیست؟
انگیزه اصلی ثبت و تایید اسناد با فناوری بلاک چین
به موجب افزایش سرعت توسعه فناوری، جهان نیز با سرعت بیشتری در حال تغییر است. شرکتهای سراسر جهان سرمایهگذاریهای کلانی در بحث نوآوری انجام میدهند، تا نیازهای ایجاد شده در بازار را پاسخگو باشند. فناوریهای جدید بخشی از این فرآیند هستند؛ اما باید به این نکته تاکید داشت که این فناوریها فراتر از ایجاد فرصتهای تجاری مختلف، تحولی واقعی و ملموس در جامعه ایجاد میکنند و اقداماتی را امکانپذیر میسازند که قبل از این، غیر قابل تصور بودهاند و از این رو، به بهبود و ارتقاء کیفیت زندگی مردم میپردازند. هرچند، اقداماتی که به اعتماد نیاز دارند از این پیشرفت سریع پیروی نمیکنند.
تایید اسناد به یک فرایند رایج تبدیل شده است. در حال حاضر، این فرآیند به دست واسطههایی انجام میشود که اقدامات و وظایف خود را به صورت دستی انجام میدهند و یا توسط سیستمهای دیجیتالی صورت میگیرد که وظایف انسانها را شبیهسازی و تکرار میکنند. میتوان گفت که هیچکدام از این راهکارها برای جهان امروز ما به حد کافی سریع نیستند. در شرایط کنونی که اعتماد به سیستمهای مختلف کمرنگ شده است، میتوان به مزایای اجرای سیستم مبتنی بر بلاک چین اشاره کرد؛ این سیستم یک دیتابیس غیرمتمرکز است، که تاریخچه و سوابق داراییها و تراکنشها را در رایانههای موجود در شبکه ذخیره میکند. بلاک چین به تمام نودها انتقال مییابد و این موضوع، آن را فاقد نقطه آسیبپذیری مرکزی کرده و در برابر حملات مخرب، مقاومتر میسازد.
پروپوزال تایید اسناد با استفاده از بلاکچین
مفهوم تایید دارایی توسط بلاک چین موضوع جدیدی نیست؛ موسسه مالی Standard Chartered و بانک DBS، بلاک چین مبتنی بر گواه اثبات مفهوم (POC) را معرفی کردهاند تا از استفاده مجدد کالاهای دارای سند در امور مالی و معاملات جلوگیری به عمل آید. پروپوزالی که در ادامه ارائه خواهد شد، مطابق با این راهکارهایی است که از قبل وجود داشتهاند. اگرچه این پروپوزال استفاده از محیط بلاک چین عمومی برای اطمینان از سهولت فرآیند تایید و ثبت را پیشنهاد میدهد.
بهترین روش برای اجرای فرایند بررسی و تایید اسناد با استفاده از فناوری بلاک چین ، توسعه سیستم موازی بر اساس قراردادهای هوشمند است. در این پروژه، دارایی همان سند و تراکنش نیز عمل تایید سند توسط کاربر خواهد بود. قراردادهای هوشمند، قراردادهای دیجیتالی خوداجرایی (self-execute) هستند که از فناوری استفاده میکنند تا از دستیابی به توافق امضا شده اطمینان حاصل شود. تایید قانون قرارداد توسط بلاک چین انجام میشود. این موضوع اطمینان حاصل میکند که قرارداد و مفاد آن تغییر نخواهد کرد.
توصیه میشود از بلاک چین عمومی استفاده شود؛ در شبکههای بلاک چین عمومی، دسترسی کاملا آزاد است. این موضوع بدان معنا است که هر کسی میتواند تراکنشها را از هر فرد دیگری در سراسر جهان دریافت و ارسال کند. امکان انجام حسابرسی توسط تمام افراد، یکی از مزایای سیستمی است که در صدد تایید اسناد است. در میان این شبکهها، اتریوم میتواند یکی از بهترین انتخابها باشد؛ اتریوم بزرگترین شبکهای است که استفاده از قراردادهای هوشمند را امکانپذیر میسازد. قبل از آن که تراکنشی به عنوان یک تراکنش معتبر در نظر گرفته شود، باید توسط هر کدام از نودها و از طریق فرایند اجماع مورد تایید واقع شود. این موضوع، بالاترین سطح از برابری و شفافیت را در این سیستم تضمین میکند.
این سیستم دارای رابط کاربری وب است، تا کاربران بتوانند به روش سادهتری اسناد را وارد و تایید کنند و به جستجوی آنها بپردازند. این سیستم مستقیما از قراردادهای هوشمند ذخیره شده در اتریوم بهره میبرد. به منظور دسترسی به برنامههای توزیع شده یا غیرمتمرکز اتریوم در مرورگر، باید بعضی از افزونههایی نظیر متامسک (Metamask) را نصب کنید. این افزونه، API وب۳ اتریوم را به بافت جاوااسکریپت تمام وبسایتها وارد میکند، تا برنامههای غیرمتمرکز از بلاک چین قابل خواندن باشند. همچنین به کاربران امکان میدهد تا هویتهای خود را ایجاد و مدیریت کنند. بنابراین هنگامی که یک برنامه غیرمتمرکز میخواهد تراکنشی را اجرا کند، کاربر قبل از تایید یا رد آن، رابط کاربری ایمنی دریافت میکند تا بتواند به بررسی تراکنش بپردازد.
هر سند به قراردادی تبدیل میشود که مالکیت و اطلاعات آن به صورت تغییرناپذیری ذخیره شده است. برای رصد و پیگیری چندین قرارداد، میتوانیم از قرارداد هوشمند دیگری استفاده کنیم. این سیستم شامل سوابق اسناد ایجادشده است. همچنین میتوانیم این شیوه را خارج از سیستم بلاک چین و به اصطلاح برون زنجیرهای انجام دهیم. اما معتقدیم که این موضوع میتواند احتمال دستکاری اسناد ذخیره شده را به وجود آورد.
اجرای تایید اسناد با فناوری بلاک چین
در این بخش به بررسی نحوه اجرای قراردادهای هوشمند برای بررسی اسناد در اتریوم خواهیم پرداخت. بدین منظور، باید در سالیدیتی کدنویسی کنیم. سالیدیتی یک زبان برنامهنویسی شیءگرا (Object-oriented) برای نوشتن قراردادهای هوشمند است. از سالیدیتی برای اجرای قراردادهای هوشمند در پلتفرمهای مختلف بلاک چین، به ویژه اتریوم استفاده میشود. ابتدا به تعریف متغیرهای خصوصی میپردازیم که اطلاعات هر قرارداد را ذخیره خواهند کرد.
به منظور نشان دادن مالکیت اسناد، از آدرس کاربرانی استفاده می کنیم که قرارداد را ایجاد میکنند. در اتریوم و سالیدیتی، آدرس کاربر متناظر با ۲۰ بایت پایانی هش Keccak-256 کلید عمومی است. از آنجایی که هر کلید عمومی منحصربهفرد است، میتوانیم از آن برای نشان دادن و بیان مالکیت استفاده کنیم.
همچنین از آدرسهای موجود در Array به منظور کاربرانی استفاده میکنیم که سند مورد نظر را تایید کردهاند. به منظور سهولت در بررسی فرد تایید کننده سند، از مپینگ (mapping) استفاده میکنیم. مپینگ معمولا برای همین امر توصیه میشود؛ زیرا میتواند تعداد بی نهایت از اسناد را شامل شود و قابل بهروزرسانی است. مزیت اصلی Array، تکرار است. اما تکرار نه فقط به دلیل محدودیت در سرعت، بلکه به دلیل هزینه باید محدود باشد.
به منظور تبدیل هر سند به قراردادی که مالکیت و اطلاعات آن به صورت تغییرناپذیری ذخیره شدهاند، باید از Constructor استفاده کنیم. کانستراکتور تابعی ویژه است که برای مقداردهی اولیه متغیرهای وضعیت قرارداد استفاده میشود. در مورد قرارداد ما، Constructor متغیر محیطی مالک قرارداد و اسم فایل را تعریف و رویداد را ثبت میکند. کانستراکتور عضو قابل انتقال قرارداد است، که اتفاقات رخ داده در سابقه تراکنش را ذخیره میکند. این سوابق در اتریوم ذخیره میشوند و تا زمانی که قرارداد در بلاکچین موجود باشد، با استفاده از آدرس قرارداد قابل دسترسی است.
تعامل اصلی که در این قرارداد داریم، تایید اسناد است. بنابراین تابعی داریم که آدرس را از تایید کننده دریافت کرده و تایید را ثبت میکند. همانطور که در قسمت زیر مشاهده میکنید، این فرآیند را توسط یک Array و hashmap ذخیره میکنیم تا ارائه پاسخ توسط تاییدکننده تسهیل شود.
از آنجایی که متغیرها خصوصی هستند، تعامل مستقیم با آنها امکانپذیر نیست. بنابراین باید توابع خارجی برای بازگرداندن این مقادیر ایجاد کنیم. این نوع تابع به صورت داخلی قابل دسترسی نیست و فقط به صورت خارجی میتوان به آن دسترسی داشت. برای توابع خارجی، کامپایلر (compiler) نباید فراخوانیهای داخلی را امکانپذیر کند. بنابراین خواندن مستقیم موارد انجام شده را از اطلاعات فراخوانی ممکن میسازد و مرحله کپی کردن را از میان بر میدارد. از آنجایی که اختصاص حافظه مخصوص هزینهبر است، این راهکار ارزانتر خواهد بود.
نتیجهگیری
شرکتهای سراسر جهان سرمایهگذاریهای کلانی در بحث نوآوری انجام میدهند تا نیازهای ایجاد شده در بازار را پاسخگو باشند. هرچند، اقداماتی که به اعتماد نیاز دارند از این پیشرفت سریع پیروی نمیکنند. در شرایط کنونی که اعتماد به سیستمهای مختلف کمرنگ شده است، میتوان به مزایای اجرای سیستم مبتنی بر بلاک چین اشاره کرد. پروپوزال ما مطابق با راهکارهایی است که از قبل ایجاد شدهاند. اگرچه استفاده از بلاک چین عمومی برای اطمینان از سهولت بیشتر در امر تایید اسناد را پیشنهاد میدهد. در این مقاله به نحوه اجرای قراردادهای هوشمند به منظور بررسی و تایید اسناد در اتریوم پرداختیم.