سه الزام فنی برای اتصال بلاکچین ها بدون استفاده از توکن
دکتر Julian Hosp نویسنده مقاله میگوید: درآخرین پست ارسالی ام در مورد این صحبت میکردم که چگونه اتصال بلاکچین ها به یکدیگر، آخرین گام از مراحل پذیرش ارزهای دیجیتال است. در این مقاله میخواهم شماتیک فنی چگونگی پیاده سازی این ایده را توضیح دهم.
از زمانی که ناکامی های زیادی درمورد داشتن یک اَبَر بلاکچین (uber-blockchain) برای اتصال بلاکچین ها میدیدم، روی یک راه حل بدون توکن تمرکز کردم. این کار مزیت های زیادی دارد، از جمله:
- ضرورتی برای توکن اضافه وجود ندارد.
- کاربران میتوانند در بلاکچین خود باقی بمانند.
- نیاز به اعتماد به یک طرف سوم متمرکز وجود ندارد.
به هر جهت این رویکرد معضلات فراوانی دارد. تا موقعی که یک ابر بلاکچین یا یک سیستم متمرکز برای تصدیق ارتباط وجود ندارد، دلیل موجهی بر عدم اتصال بلاکچین ها به یکدیگر (تهاتر) است. برای مثال، اگر بخواهم مقداری از موجودی خود را از بلاکچین اتریوم به بیتکوین منتقل کنم، من در همان زمان به کسی نیاز دارم که بخواهد از بیتکوین به اتریوم بفرستد (نوعی معامله پایاپای). برای چنین بلاکچین های بزرگی همیشه چنین افرادی را میتوان پیدا کرد، اما برای ارسال از اتریوم به یک بلاکچین کوچکتر و یا از یک بلاکچین کوچک به یک بلاکچین کوچک دیگر، وضعیت چگونه خواهد بود؟ قبل از اینکه به ارائه راه حل خود برای مشکل مذکور بپردازم، میخواهم تاکید کنم که تهاتر (تسویه پایاپای) یک فاکتور اقتصادی کلیدی برای شبکه های رمزنگاری امن با انواع ارز دیجیتال است.
بلوک دیاگرام های ابتدایی
در زیر با هم به بلوک دیاگرام ابتدایی برای سه حالت مختلف اتصال دو بلاکچین نگاهی میاندازیم:
- امکان چند امضایی (Multisig)
- عملکرد محاسباتی (Hashing)
- عملکرد Time-lock
هریک از موارد را جداگانه بررسی و در نهایت آنها را برای یک تصویر کلی ترکیب میکنیم.
- چند امضایی (Multisig) یک مفهوم قدیمی و قابل اعتماد است، چیزی شبیه یک دسته چک بانکی چند امضایی است. یک تراکنش چند امضایی اجازه میدهد قوانین امضا بصورت مطلق (بدون پیش شرط) با یکدیگر ادغام شوند. در موضوع شبکه رمزنگاری امن، خارج از زنجیره، دارایی چندگانه و تراکنش آنی (COMIT) هر فردی تراکنش های چند امضایی ۲ به ۲ را به منظور اینکه هریک از طرفین با امضای آن، تراکنش را تایید و توسط شبکه پذیرفته شود، به کار میگیرد. (مثال آن در زیر آورده شده است). این فرایند بدین معنی است که تراکنش های چند امضایی بین دو طرف میبایست توسط هریک از طرفین امضا شود تا خروجی آن معتبر و توسط شبکه پذیرفته شود.
در شکل زیر، یک تراکنش ایجاد شده برای مثال یک بیتکوین به عنوان ورودی را نشان میدهد. در هر صورت برای اینکه این تراکنش خارج شود، هر دو نفر (Alice, Bob) مجبورند تراکنش را امضا کنند.
- توابع محاسباتی (Hash functions) مفاهیم استاندارد در رمزنگاری هستند. اینها توابع یک طرفه ای هستند که یک رشته از داده ها را (مثلا در اینجا یک رمز “s”) را به یک هش (hash) منحصر بفرد مثلا “h” تبدیل میکند. حال این هش h میتواند بدون هیچگونه نگرانی، با اطمینان از اینکه هیچ کس از روی آن قادر به محاسبه رشته رمز اولیه (“s”) باشد، به دیگران ارسال شود. به منظور مسیریابی در طول بلاکچین های مختلف، میبایست توابع رمزنگاری یکسانی در زبان قراردادی هوشمندی که در هر بلاکچین در مسیریابی شرکت میکنند، به کار گرفته شود.
در شکل زیر فردی در یک قرارداد یک بیتکوین قرار میدهد، اما Alice تنها به محض داشتن رمز (که طبیعتا از Bob خواهد گرفت) میتواند آن را بگیرد.
- Time-lock یک نیازمندی ابتدایی است برای اینکه دارایی انتقالی یعنی همان مبلغ تراکنش تا تاریخ بعدی قفل میشود (برای اینکه نتوان همان تراکنش را کپی و مجددا ارسال کرد – جلوگیری از double spending -). در مکانیزم های بلاکچین دو نوع مختلف time-lock وجود دارد: نسبی و قطعی. در نوع قطعی، یک تراکنش خروجی تا یک زمان ثابت و مشخص در آینده قفل میشود، حال آنکه در نوع نسبی به جای یک زمان خاص، تراکنش خروجی نسبت به وقوع یک رخداد یا یک نقطه زمانی قفل میشود. به عبارت دیگر در نوع نسبی بجای تاکید بر یک نقطه زمانی خاص بر روی یک گستره زمانی تعریف میشود. Time-lock ها یکی از ملزومات کانال های پرداخت اعتباری هستند و نوع نسبی آنها برای مجاز شمردن کانال های پرداخت باز پیشنهاد میشوند.
در مثال شکل زیر یک نفر یک تراکنش ورودی به میزان یک بیتکوین قرار داده اما Alice برای دریافت آن ناچار است تا زمان از پیش تعیین شده ای منتظر بماند.
تجمیع حالات فوق
اگر در ادامه بخواهیم این سه بلوک دیاگرام را ترکیب کنیم، ما به یک واژه تحت عنوان HTLC (Hashed Time-Lock Contracts) میرسیم که وضعیت مالکیت ها (افراد) بر مبنای چند امضایی به روز میگردد. HTLC مفهوم قفل زمانی را به منظور لغو (استراد تراکنش) با یک قفل محاسباتی (Hash-lock) ترکیب میکند. اگر دریافت کننده بتواند رمز “s” را برای عملیات hash-lock قبل از انقضای قفل زمانی (time-lock) ارائه کند، قادر است که مبلغ ارسالی را دریافت نماید. در غیر اینصورت فرستنده میتواند مبلغ مذکور را با اطمینان بازگرداند. یعنی اگر یک طرف بخواهد وضعیت HTLC را به روز رسانی کند، نیازمند تایید (امضای) طرف دیگر است.
در مثال زیر، Alice طی قراردادی با Bob یک بیتکوین ارائه میکند. Bob میتواند آن بیتکوین را با گرفتن hash از Alice در یک زمان تعریف شده دریافت کند، یا اینکه Alice این مبلغ را به طور خودکار بعد از یک بازه زمانی خاص پس میگیرد.
دوتا HTLC میتوانند با هم ترکیب و منجر به چیزی به نام تراکنش های اتمی شوند. برای این منظور، دریافت کننده ابتدا رمز s را تولید و سپس هش آن را (h) محاسبه میکند. به دنبال آن، دریافت کننده این هش (h) را با ارسال کننده که در اینجا او ابتدا تراکنش مشروطی را ایجاد کرده (مثلا خروجی آن قفل (هش) شده است) به اشتراک میگذارد. این خروجی تنها با دانستن رمز s قابل بهره برداری است. در شرایط عمومی، به این معنی است که اگر Bob میخواهد یک بیتکوین برای Alice فرستاده و در برگشت اتریوم دریافت کند، آنها میبایست دو کانال پرداختی باز کرده (یکی برای بیتکوین و یکی برای اتریوم) و آنها را با یک هش h با هم جفت کنند. یعنی Bob مادامی برای Alice بیتکوین میفرستد که او نیز برای Bob اتریوم بفرستد. در این شرایط هریک که انصراف دهند مقدار اولیه سربعا برگشت داده میشود.
مسیر کامل
اکنون میتوانیم مقادیر مشخصی از تراکنش ها را به دیگران بفرستیم در شرایطی که هر نودی در این زنجیره بتواند با اطمینان از همان هش یکسان برای تراکنش استفاده کند. تراکنشی که مشروط بوده و یا رمز s را در اختیار داشته باشد. این هش در ابتدا با فرستنده به اشتراک گذاشته میشود که به دنبال آن او نیز یک پرداخت مشروط به اولین نودی که نیاز به دانستن رمز s دارد خواهد فرستاد تا بتواند آن را بازپرداخت کند. سپس هریک از نود ها در این مسیر همزمان با اضافه کردن همان شرط برای باز پرداخت تراکنش، میتوانند تراکنش را با اطمینان به دیگری ارجاع دهند.
با استفاده از مکانیزم HTLC میتوانیم تضمین کنیم که کل تراکنش ها در این مسیر یا با موفقیت پرداخت میشوند یا اینکه کل کانال های پرداختی امکان باز پرداخت نخواهند داشت (تضمنین انجام کامل تراکنش یا استرداد مبلغ به دارنده اولیه آن). الزامی به اطمینان سازی برای نود های میانی مسیر وجود ندارد. در انتها شما دنباله ای از تراکنش ها را دارید که برای تکمیل (پرداخت) شدن به یک رمز یکسان وابسته هستند.
هنگامی که دریافت کننده آخرین تراکنش را دریافت و از رمز (همان s) برای تسویه (دریافت مبلغ) استفاده میکند، تمام نودهای مسیر رمز مذکور را مشاهده و سپس میتوانند تراکنش های ورودی خود را باز پرداخت نمایند.
بعد از اینکه رمز s در طول مسیر به اشتراک گذاشته شد، هر کانال پرداختی، تسویه حساب آن تراکنش را به کانال قبلی برمیگرداند. این کار با به روز رسانی وضعیت کانال پرداختی به آخرین تراز موجودی و سپس با نامعتبر کردن تراکنش های HTLC با بازیابی کلید ابطال k مربوط به کانال پرداختی طرف قرارداد انجام میشود که نهایتا منجر به تکمیل تراکنش خواهد شد.
مکانیزم time-lock برای انجام مکانیزم استرداد در صورت بروز اختلال در میانه مسیر استفاده میشود. Time-lock ها میبایست به ترتیب از آخر به اول (stack) از سمت دریافت کننده به فرستنده قرار گرفته تا از بروز حقه و کلک توسط هرکسی از طریق دستکاری زمان های مورد نظر (کاهش زمان) جلوگیری کند تا کسی نتواند توالی تراکنش ها را جابجا کند.
نتیجه گیری
این تراکنش ها میتوانند داخل یک بلاکچین یکسان گسترش یابند، اما در صورت وجود افرادی برای تبادل تراکنش در بلاکچین دیگر نیز میتوانند در هر دو بلاکچین هدایت شوند. این همان مفهوم تهاتر و مسیریابی بلاکچین ها است. اگر به عقب برگردیم به جایی که درباره اتصال دو بلاکچین کوچک صحبت میکردیم اکنون میبینیم که ضرورتی برای انتقال مستقیم تراکنش به آن دو وجود ندارد.
با انباشت کانال های پرداختی به ترتیب و روی هم، پول (مبلغ ارز دیجیتال) میتواند از یک زنجیره ضعیف (نقدینگی پایین) به یک زنجیره قوی (نقدینگی بالا) رفته و سپس در نهایت به زنجیره ضعیف منتقل شود.
این مفهوم کانال های پرداختی را به شبکه های برزگی با ویژگی های زیر متصل میکند:
رمز نگاری امن (بر اساس استانداردهای رمزنگاری)
خارج از زنجیره (مثل شبکه های Lightning یا Raiden)
دارایی چندگانه (چند زنجیره ای)
آنی (لزومی ندارد که یک تراکنش پس از انتشار تا زمان به روز رسانی طرف های مربوطه در بلاکچین تسویه گردد)
یک شبکه تراکنش مانند COMIT
دیدگاه هایی که در این مقاله ارائه شده اند، متعلق به نویسنده می باشند و لزوماً مربوط به Coiniran نمی باشد و نباید به آن نسبت داده شود.
با سلام و تشکر از سایت ایران کوین و به خصوص اقای حمیدرضا عسگری
برای ما باعث افتخار است که چنین دانشمندانی مانند حمیدرضا عسگری داریم.
جناب اقای عسگری نوشته های زیر از مقالات نوشته شده در ایران بدست امده است و مطمعنم تنها شما می توانید از لحاظ فنی جواب دهید.از زمانی که برای پاسخوگیی و ناگرش این مقاله ها می گدارید بسیار سپاسگزارم
ماینرها به خاطر انجام وظیفه حسابرسی، پول دریافت میکنند. کار آنها تایید تراکنشهای قبلی است که در بستر بیت کوین صورت گرفته است. این فرایند توسط موسس بیت کوین، ایجاد شده است. ماینرها با تایید تراکنشها جلوی «دوباره خرج شدن بیت کوین» را خواهند گرفت. منظور از «دوباره خرج شدن بیت کوین» این است که کاربر یک بیت کوین را دوبار خرج کند.
اگر استخراج بیت کوین به هر دلیلی متوقف شود وظیفه حسابرسی و تایید تراکنش ایا متوقف می شود؟
اگر تمام بیت کوین ها استخراج شود ۲۱ میلیون سال ۲۰۴۰
وظیفه تایید تراکنش ها و مشگل دوباره خرج کردن چگونه حل می شود؟
ایا دولت ها نمی توانند با متوقف کردن استخراج بیت کوین ان را نابود کنند؟