تراکنش‌ چند امضایی چیست؟

0 ۷۶۴

تراکنش‌ چند امضایی

تراکنش‌های استاندارد بر روی شبکه‌ها‌ی رمزارز می توانند با عنوان تراکنش‌های تک امضایی نیز شناخته شوند؛
زیرا در این تراکنش‌ها فقط به یک امضای دیجیتال برای انتقال وجوه لازم است;هرچند رمزارزهایی مانند بیت کوین می توانند به وسیله‌ی تراکنش‌های چند امضایی ( multisignatare or multising) نیز پشتیبانی شوند;تراکنش‌ چند امضایی فرآیندی است که در آن برای انجام تراکنش‌ها ( معاملات) به دو امضای دیجیتالی یا بیشتر نیاز است.
علاوه بر این، تراکنش‌ چند امضایی به تراکنش‌های M-of-N نیز اشاره دارد.

برای بهتر متوجه شدن تراکنش‌های M-of-N به مثال‌های زیر توجه کنید:

1 از 2 :

آلیس و باب دارای یک حساب رمزارز مشترک هستند;و امضای هر یک از این دو نفر برای انتقال و استفاده کردن پول‌های حساب مشترک شان لازم است.

2 از 2 :

آلیس و باب دارای یک حساب رمزارز مشترک هستند و امضای هر دونفر آن‌ها برای انتقال و استفاده کردن پول‌های حساب مشترک شان لازم است;علاوه بر این خدمات، از تراکنش‌های چند امضایی نیز می توان در خدمات سپرده بین 2 تا 3 نفر

2 از 3 :

اگر مشکلی در معامله‌ی انجام شده پیش آید یا این که کالاها به مقصد نرسند; باب و آلیس می توانند قراردادی به عنوان بازپرداخت بین یکدیگر امضاء کنند;اگر باب و آلیس برای دریافت پول به توافق نرسند نمی توانند هیچ سهمی از پول موجود داشته باشند;در صورت به توافق نرسیدن این دو نفر، به شخص سومی برای میانجی گری بین این دونفر نیاز است;این شخص می تواند با سنجیدن شرایط موجود قراردادی را برای دو طرف مقابل امضاء کند که برای هر یک از طرفین دارای سود است.بین خریدار، فروشنده و شخص سومی به عنوان میانجی گر نیز استفاده کرد;برای مثال باب و آلیس یک معامله‌ای بین خود انجام می دهند به وسیله این معامله; باب می تواند بیت کوین برای کالاهای فروشی آلیس بفرستد;اگر این معامله از قبل تعیین شده باشد، باب( به عنوان خریدار) و آلیس ( به عنوان فروشنده) باید قراردادی به منظور انتقال پول به آلیس پس از تحویل کالا، امضاء کنند.

همچنین این شخص نمی تواند پولی را برای خود برداشت کند

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

همچنین می تواند کلیدهایی را برای حساب‌های رمزارز که توسط تراکنش‌های چند امضایی پشتیبانی می شوند در دستگاه‌های جداگانه تولید و ذخیره کند;برای مثال; زمانی که باب یک معامله با ارزهای دیجیتال انجام می دهد;
تراکنش‌های چند امضایی، که این معامله را پشتیبانی می کنند یک کلید جداگانه برای باب در کامپیوترش و یک کلید جداگانه برای تلفن همراهش تولید و ذخیره می کند
از این رو هکرانی که به سیستم باب حمله می کنند نمی توانند به حساب او دسترسی پیدا کنند;زیرا علاوه بر کلیدی که در کاپیوتر باب است به کلید تلفن همراه او نیز نیاز دارند;از این رو استفاده از تراکنش‌های چند امضایی باعث افزایش امنیت اکوسیستم ارزهای دیجیتال می شوند.

تراکنش‌های چند امضایی تفاوت چندانی با قراردادهای کاغذی ندارند;فقط با این تفاوت کوچک که تعداد امضاها در تراکنش‌ چند امضایی بیشتر است;به عنوان مثال برای پاس شدن یک چک شرکتی، به چندین امضای عوامل این شرکت نیاز است;در تراکنش‌چند امضایی برای انجام معاملات به وسیله‌ی  رمزارزها به چندین امضاء نیاز است.

در حال حاضر از این تکنولوژی در بیت کوین استفاده می شود.

با این وجود، ترکیب تکنولوژی بلاک چین و تراکنش‌های چند امضایی نشان می دهند که تراکنش‌های آینده توسط این دو تکنولوژی کنترل و هدایت خواهد شد.

ایجاد تراکنش‌های چند امضایی

چگونه کار می کند!

در بیت کوین، چندین نوع تراکنش مختلف وجود دارد که یکی از آن‌ها “Multisig” (چند امضایی) است; آدرس‌ها و تراکنش‌های چند امضایی از طریقِ کلیدهای متعددِ خصوصی ایجاد می شود و می توان از آن‌ها در موقعیت‌های متعدد و مختلفی نیز استفاده کرد; به عنوان مثال، کاربران ارزهای دیجیتال می توانند با استفاده از کلیدهای متعدد بر روی دستگاه‌های مختلف از دارایی‌های خود محافظت کنند; اگر کاربری بخواهد معاملاتِ دریافت شده را بر روی آدرس‌های چند امضایی پرداخت کند; باید معاملاتِ مورد نظر را بر روی هر دو دستگاه امضاء کند; این کار را می توان برای محافظت و تامینِ امنیتِ دارایی‌های شرکت‌های بزرگ نیز مورد استفاده قرار داد.

ایجاد آدرس!

کاربرانِ ارزهای دیجیتال برای ایجادِ آدرس‌های چند امضایی نیاز به توافق بر روی اعدادِ ” m-of-n” دارند. با انتخابِ هر یک از شماره‌های مورد نظر، آدرس‌های مختلفی نیز ایجاد می شوند. علاوه بر این، کاربران باید اطلاعاتی پیرامونِ ” pubkey” داشته باشند. کاربران می توانند pubkeyهای مورد نظر را در هر جا که بخواهند، به اشتراک بگذارند. کیف پول‌های دیجیتالی از روش‌های مختلفی مانند استفاده از کدهای QR یا با ارسال رشته‌های رمزگذاری شده‌ی base58check از اشتراک گذاری pubkeyها پشتیبانی می کند. بعد از انجام تمام این مراحل، کاربران می توانند اسکریپت‌های چند امضایی را ساخته و آدرس P2SH از طریقِ آن تولید کنند.

پرداختِ تراکنش‌های دریافت شده

پس از آنکه کاربر; تراکنشی را بر روی آدرس‌های چند امضایی دریافت کرد; اگر حداقل تعداد امضاء بر روی اسکریپتِ امضاء، ارائه شده باشد، می تواند تراکنش مورد نظر را پرداخت کند.

کاربران به آدرس‌های عمومی خود احتیاج دارند (همانندِ تولید آدرس).

کاربران می توانند اسکریپتِ بازپرداختی برای خود بسازند که این اسکریپت; اسکریپتِ اصلی است که برای آدرس مورد نظر تولید کرده‌اند;کاربران ارزهای دیجیتال می توانند با داشتنِ اسکریپتِ بازپرداخت، اسکریپتِ امضایی براساسِ BIP11 و BIP16 بسازند;کاربران با اضافه کردنِ امضاء خود، تراکنش مورد نظر را انجام داده (معتبر نیستند) و بعد آن را به مالکِ pubkey دیگری ارسال می کند; تا زمانی که امضای ” m” در sigscript وجود داشته باشد; این روند ادامه دارد.

بعد از اتمام این مراحل، تراکنش‌های مورد نظر به طور کامل امضاء شده و کاربران می توانند آن‌ها را پخش کنند.

Code

مرحله‌ی اول: ایجاد آدرس

در کد مورد نظر، ابتدا تمامِ کتابخانه‌های مهم و ضروری را وارد می کنیم، سپس بعد از تولیدِ کلیدهای عمومی و خصوصی، ” multisig address” را ایجاد می کنیم.

در این مرحله، یک جفت کلید عمومی و کلید خصوصی تولید می شوند. کاربران باید اطلاعاتی پیرامونِ شبکه و فرمتِ کلید عمومی جمع آوری کنند. دو نوع فرمتِ کلید عمومی وجود دارد: فشرده و فشرده نشده.

مرجله‌ی دوم: ایجاد تراکنش

در این مرحله، فرض می کنیم تراکنشی را با اطلاعاتِ مورد نظر زیر دریافت کرده‌ایم:

شناسه‌ی تراکنش:
3b1dd17cc82e2ac43ba62bf8f1c6a0fe805df43911653d22c902571eb3a212ce

شناسه خروجی: 0

مقدار:  100 BTC

سپس قصد داریم، 50 BTC را به RF1PJ1VkHG6H9dwoE2k19a5aigWcWr6Lsu بر روی شبکه‌ی regtest ارسال کنیم;در مرحله‌ی بعدی باید اطمینان حاصل کنیم که تراکنش مورد نظر امضاء شده است; همچنین می توان در این بخش از MTX.prototype.fund استفاده کرد که به طور خودکار، کوین‌های مورد نظر را (براساس مقداری که دارند) به خروجی (output) تخصیص می دهد.

استفاده از API کیف پول

اگر چه امکان استفاده از بیت کوین ، برای ایجاد تراکنش‌ها از طریقِ کلیدهای خصوصی وجود دارد اما نمی توان این کار را به راحتی هندل کرد; بنابراین، اگر کاربران یک نود بیت کوین  و امکان دسترسی به HTTP را داشته باشند می توانند از bcoin.http.Client and bcoin.http.Wallet استفاده کنند; این کلاس‌ها تمام متودهای توصیف شده‌ی API را بر روی شبکه‌ی بیت کوین فراهم کرده و با کیف پول‌های نود ارتباط برقرار می کنند.

مرحله‌ی اول: ایجاد آدرس

در این مرحله دو کیف پول جدید ایجاد می کنیم. همچنین نکته‌ای که وجود دارد این است که اگر دو کیف پول ایجاد شده در یک نودِ یکسان قرار داشته باشند، مشکلی ایجاد نمی شود;” xpubkey” اولین کلید بوده و هر دو کیف پول مورد نظر نیز از xpubkey برای پیدا کردن آدرس‌های جدید استفاده می کنند; با این تفاسیر، کاربران به اشتراک گذاری دیگر کلیدهای عمومی نیاز نخواهند داشت; علاوه بر این‌ها، در کیف پول‌ها از ” addSharedKey” برای اضافه کردن کلیدهای xpubkeys استفاده می شود.

مرحله‌ی دوم: ایجاد تراکنش
شناسه‌ی تراکنش:
c12e1b260354fd2a2848030222c4a66339892f1d63b18752ff80ef4eb0197d2

شاخص خروجی: 0

مقدار: 100 BTC

1 BTC را به RBg1TLaNuRpH6UTFzogFXhjqubPYZaqWgs بر روی شبکه‌ی regtest ارسال می کنیم;همچنین، هنگام استفاده از API به شناسه‌ی تراکنش و شاخص خروجی احتیاجی وجود ندارد. سپس در گام بعدی، تراکنش‌های خام را برای امضاء شدن، به اشتراک می گذاریم;wallet1.createTX به صورت خودکار کوین‌های ارسال شده به کیف پول‌های چند منظوره را پیدا می کند;wallet2.sign نیز معاملاتِ مورد نظر را امضاء می کند.

بعد از انجام این مراحل می توان، ترکنش‌های مورد نظر را بر روی شبکه پخش کرد.

نتیجه گیری:

کاربران ارزهای دیجیتال می توانند با استفاده از مراحل گفته شده; تراکنش‌های چند امضایی را درک کرده و اپیلیکیشن‌های مورد نظر را به راحتی بسازند.

برای کسب اطلاعات بیشتر درکانال تلگرام دری کوین عضو شوید.

80%
Awesome
  • Design

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.