آرک
آرک (به انگلیسی: Ark): یک پروتکل کوینسواپ لایه دوم بیتکوین است که با هدف بهبود مقیاسپذیری، حریم خصوصی بدون اضافه کردن ریسک امانی طراحی شده است. آذر پولش را به سرور میدهد به شرطی که سرور تضمین کند به بابک پرداخت میکند. چون تمام تاخت زدنها با استفاده از سرور است و قفل زمانی به نفع کاربران نهایتا باز خواهد شد، تعداد زیادی خروجی خرج نشده میتواند در یک خروجی بر روی زنجیره گنجانده شود (که کاربران هنوز میتوانند دارایی خود را از آن پس بگیرند). این مسئله به این قیمت است که نمیتوانند درجا به دارایی خود دسترسی داشته باشند یعنی سرور میتواند تا مدتی مقدار قابل توجهی را قفل کند.[۱]
سازوکار[۲]
نگهداری کوینها
آذر (A) کوینها را پیش سرور (S) نگهداری میکند و همیشه میتواند بدون نیاز به اعتماد آنها را پس بگیرد.
خروجی خرج نشدهی شماره 1 روی زنجیره به این شکل است:
( || : به معنی «یا» است)
A+S || S in 1 month
آذر+سرور || سرور در یک ماه
A آذر یک تراکنش بازپسگیری REDEEM_TX (امضا شده توسط S) خارج از زنجیره دارد که از خروجی 1 با این خروجی خرج میکند:
UTXO_1:
A+S || A in 1 month
آذر+سرور || آذر در یک ماه
آمادگی برای فرستادن کوین
آذر (A) میخواهد کوینهایش را به بابک (B) بفرستد.
S قول میدهد خروجی خرج نشدهی 2 را بسازد که به شرح زیر است:
UTXO_2:
B+S || S in 1 month
بابک+سرور || سرور در 1 ماه
B تراکنش بازپسگیری REDEEM_TX (امضا شده با S) برونزنجیره را دریافت میکند که از خروجی خرج نشدهی 2 با خروجی زیر خرج میکند:
B+S || B in 1 month
بابک+سرور || بابک در 1 ماه
اگر UTXO_2 روی زنجیره بیاید، پول به بابک B پرداخت شده.
تاخت زدن (بخش مهم!)
آذر میخواهد به شرطی که خروجی خرج نشدهی 2 (پرداخت S سرور به B بابک) روی زنجیره ظاهر شود ، از ادعایش روی خروجی خرج نشدهی 1 (پرداخت Sسرور به A آذر) بگذرد.
برای دستیابی به این، آذر A تراکنش واگذاری FORFEIT_TX زیر را امضا میکند که تراکنش بازپسگیریاش REDEEM_TX را خرج میکند:
S if UTXO_2 exists* || A in 1 month
سرور اگر خروجی خرج نشدهی 2 وجود داشته باشد* || آذر در یک ماه
* این نوع اسکریپت در حال حاضر ممکن نیست اما توضیحش سادهتر از روش بدون نیاز به نرمشاخهی جدید است.
در نتیجه S میتواند پول خروجی خرج نشدهی 1 را بردارد اگر خروجی خرج نشدهی 2 روی زنجیره آمده باشد.
پیشامدها
پیشامد مورد انتظار/ایدئال
- S سرور خروجی خرج نشده UTXO_2 را روی زنجیره میفرستد یعنی B بابک پولش را گرفته.
- A آذر تراکنش بازپسگیریاش REDEEM_TX را روی زنجیره نمیفرستد.
- قفل زمانی UTXO_1 باز میشود و S دارایی را برمیدارد (اگر A آذر کلید خصوصیاش را بدهد، قفل زمانی قابل دور زدن است).
پیشامد A آذر متخاصم
- S سرور خروجی خرج نشده UTXO_2 را روی زنجیره میفرستد یعنی B بابک پولش را گرفته.
- A آذر تراکنش بازپسگیریاش REDEEM_TX را روی زنجیره میفرستد.
- S سرور تراکنش واگذاری FORFEIT_TX مربوطه را روی زنجیره میفرستد و دارایی را برمیدارد.(از آذر پس میگیرد.)
پیشامد S سرور متخاصم
- S سرور خروجی خرج نشده UTXO_2 را روی زنجیره نمیفرستد یعنی B بابک پولش را نمیگیرد.
- A آذر تراکنش بازپسگیریاش REDEEM_TX را روی زنجیره میفرستد.
- S سرور تراکنش واگذاری مربوطه FORFEIT_TX را روی زنجیره میفرستد.
- قفل زمانی FORFEIT_TX باز میشود و A آذر دارایی را برمیدارد.
پیشامد A آذر آفلاین
- A نمیتواند از S سرور بخواهد پول را به B بابک بفرستد.
- A آذر نمیتواند در زمان مناسب تراکنش بازپسگیریاش را روی زنجیره بفرستد.
- قفل زمانی خروجی خرج نشده UTXO_1 باز میشود و سرور پول آذر را برمیدارد.