
توضیح کیفپولهای چندامضایی: چگونه تأیید M از N واقعاً وجوه را جابجا میکند
کیف پولهای چند امضایی توضیح داده شده: یک کیف پول چند امضایی تنها زمانی وجوه را ارسال میکند که حداقل M از N کلید مجاز همان تراکنش را تأیید کنند، به جای اینکه به یک کلید خصوصی تکیه کند. این طراحی نگهداری را به یک مدل عملیاتی تبدیل میکند، با یک جریان پیشنهاد و بررسی، لجستیک هزینه و انتخابهای پیادهسازی خاص زنجیره که میتواند وجوه را ایمن نگه دارد یا آنها را در وضعیت قفل شده قرار دهد.
نکات کلیدی
- یک کیف پول چند امضایی به دو یا چند کلید خصوصی نیاز دارد تا یک تراکنش را تأیید کند، معمولاً با استفاده از یک آستانه m از n مانند 2 از 3 یا 3 از 5.جریان کاری اصلی یک خط لوله تأیید است: یک امضا کننده یک تراکنش را پیشنهاد میکند، سایر امضا کنندگان امضاها را اضافه میکنند، کیف پول آستانه را بررسی میکند، سپس تراکنش پخش میشود.چند امضایی زنجیرهای که در یک پروتکل (مانند P2SH بیتکوین) ساخته شده است، رفتار متفاوتی نسبت به کیف پول چند امضایی قرارداد هوشمند در اتریوم (مانند کیف پول Safe) دارد، از جمله ریسک قرارداد و سازگاری dapp از طریق ERC-1271.چند امضایی و MPC به طور متفاوتی مشکل "کنترل مشترک" را حل میکنند: چند امضایی یک ردپای تأیید زنجیرهای مرتبط با کلیدهای متمایز را باقی میگذارد، در حالی که MPC امضاها را از طریق محاسبات خارج از زنجیره تولید میکند بدون اینکه هرگز یک کلید کامل را جمعآوری کند.چگونه کیف پولهای چند امضایی کنترل کلید را تغییر میدهند
- یک کیف پول با یک امضا، قدرت را در یک کلید خصوصی متمرکز میکند، به این معنی که یک نفوذ یا یک کلید گمشده میتواند کشنده باشد. چند امضایی این سطح کنترل را با تقسیم قدرت بین چندین کلید تغییر میدهد و نیاز به یک آستانه تأیید قبل از حرکت وجوه دارد. به همین دلیل است که چند امضایی در بحثهای امنیت کیف پول و در گفتگوهای توضیحی درباره انواع کیف پولهای رمزنگاری به طور مکرر ظاهر میشود. این فقط "کلیدهای بیشتر" نیست. این یک مجموعه قوانین برای اینکه چه کسی میتواند چه چیزی را تأیید کند، است.
- مدل ذهنی مهم حاکمیت است، نه رمزنگاری. یک تنظیم چند امضایی یک سیاست تأیید را کدگذاری میکند که با نحوه رفتار یک تیم، خانواده یا DAO مطابقت دارد. اگر فرآیند واقعی "دو نفر باید تأیید کنند" باشد، یک 2 از 2 با نیت مطابقت دارد اما اگر یکی از امضا کنندگان ناپدید شود، خطر زمان خاموشی سختی ایجاد میکند.
- اگر فرآیند واقعی "دو نفر امضا میکنند، اما باید یک مسیر بازیابی وجود داشته باشد" باشد، 2 از 3 پیشفرض رایج است زیرا یک کلید گمشده را تحمل میکند در حالی که هنوز کنترل یکجانبه را جلوگیری میکند.چند امضایی همچنین در یک مکان خاص در طیف نگهداری قرار دارد. این هنوز یک مدل کیف پول غیر نگهدارنده است زمانی که امضا کنندگان کنترل کلیدها را دارند و هیچ شخص ثالثی نمیتواند وجوه را به طور یکجانبه منتقل کند. تفاوت این است که "مالک" اکنون یک سیاست گروهی است نه یک شخص واحد. این سیاست میتواند به طور بومی توسط یک زنجیره پیادهسازی شود، یا توسط یک قرارداد در زنجیرههای قرارداد هوشمند اجرا شود. این انتخاب پیادهسازی جایی است که بسیاری از شگفتیهای عملیاتی ناشی میشود.مدل M از N و جریانهای کاریقانون آستانه کل بازی است: N تعداد کل کلیدهای مجاز است و M حداقل تعداد امضاهای لازم برای تأیید یک تراکنش است. پیکربندیهای رایج به طور واضحی به فرآیندهای واقعی تأیید نقشهبرداری میکنند: 2 از 2 برای شرکای برابر، 2 از 3 برای تیمهای کوچک با یک کلید پشتیبان، و 3 از 5 برای کنترل به سبک کمیته که میتواند غیبتها را تحمل کند.جریان کاری مهم است زیرا چند امضایی یک خط لوله تأیید است که هر بار وجوه حرکت میکنند، اجرا میشود. یک جریان معمولی از یک توالی مرتب پیروی میکند:1. یک پیشنهاد تراکنش ایجاد کنید. یک امضا کننده مجاز مقصد، مقدار و هر داده تماس را پیشنویس میکند. 2. امضاها را جمعآوری کنید. سایر امضا کنندگان مجاز پیشنهاد را بررسی کرده و با کلیدهای خصوصی خود آن را امضا میکنند. 3. آستانه را تأیید کنید. کیف پول بررسی میکند که حداقل M تأیید امضا کننده معتبر وجود دارد. 4. پخش و اجرا کنید. تراکنش کاملاً تأیید شده به شبکه برای تأیید ارسال میشود.دو جزئیات عملیاتی معمولاً تعیین میکنند که آیا چند امضایی احساس "امنیت" یا "قفل شده" میکند. اولین مورد در دسترس بودن امضا کنندگان است: اگر M امضا کننده نتوانند درون پنجرهای که سازمان نیاز دارد پاسخ دهند، کیف پول به یک گلوگاه تبدیل میشود. دومین مورد تأمین هزینه است. EIP-86 یک نقطه درد مشخص را در اوایل تاریخ اتریوم مطرح کرد: عملیات چند امضایی میتواند نیاز به چندین تراکنش تأیید داشته باشد و شرکتکنندگان ممکن است برای هزینهها به ETH نیاز داشته باشند تا آن تأییدها را ارسال کنند. این یک یادداشت نظری نیست. این نوع اصطکاکی است که زمانی که یک تیم در تلاش است تا وجوه را تحت فشار زمانی منتقل کند و متوجه میشود که امضا کنندگان حتی نمیتوانند برای تأیید هزینه پرداخت کنند، ظاهر میشود.چند امضایی زنجیرهای و قرارداد هوشمندچند امضایی به سبک بیتکوین و چند امضایی به سبک اتریوم از بیرون مشابه به نظر میرسند، اما به طور متفاوتی شکست میخورند زیرا به طور متفاوتی ساخته شدهاند. چند امضایی زنجیرهای پشتیبانی بومی پروتکل است، با P2SH بیتکوین به عنوان مثال مرجع. شرایط خرج کردن در قوانین اسکریپتینگ زنجیره زندگی میکنند. مزیت این است که سطح کمتری وجود دارد زیرا هیچ کد قرارداد جداگانهای برای اعتماد وجود ندارد. نقطه ضعف این است که مجموعه ویژگیها محدود به آنچه پروتکل پایه پشتیبانی میکند، است.
- چند امضایی قرارداد هوشمند یک حیوان متفاوت است. در اتریوم و زنجیرههای مشابه، یک چند امضایی اغلب یک کیف پول قرارداد هوشمند است، با کیف پول Safe به عنوان پیادهسازی مرجع پرکاربرد. قرارداد داراییها را نگه میدارد و قوانین تأیید را در کد اجرا میکند. این انعطافپذیری را باز میکند، اما ریسک قرارداد و کار سازگاری را معرفی میکند.
سازگاری جایی است که چند امضایی اتریوم کمتر به امضاها و بیشتر به استانداردها مربوط میشود. بسیاری از برنامهها انتظار دارند یک پیام امضا شده از یک حساب خارجی داشته باشند. یک قرارداد نمیتواند یک امضای ECDSA عادی تولید کند زیرا هیچ کلید خصوصی ندارد. ERC-1271 دست دادن است که این مشکل را حل میکند: این یک متد isValidSignature(hash, signature) را تعریف میکند که برنامهها میتوانند زمانی که "امضا کننده" یک قرارداد است، فراخوانی کنند و نیاز به بازگشت مقدار جادویی 0x1626ba7e دارد زمانی که اعتبارسنجی موفقیتآمیز است. زمانی که یک dapp از ERC-1271 پشتیبانی میکند، میتواند تأییدها از یک کیف پول قرارداد را به عنوان تأیید واقعی در نظر بگیرد. زمانی که این کار را نمیکند، چند امضایی میتواند از جریانهای کاری که به پیامهای امضا شده وابستهاند، مانند سیستمهای سفارش خارج از زنجیره، مسدود شود.
جایی که چند امضایی استفاده میشود
چند امضایی در هر جایی که نیاز واقعی به کنترل مشترک با یک ردپای حسابرسی وجود دارد، ظاهر میشود. خزانههای شرکتی و پروژهای از چند امضایی برای مجبور کردن تأییدهای صریح برای انتقالها استفاده میکنند، بنابراین هیچ اپراتور واحدی نمیتواند وجوه را به طور یکجانبه منتقل کند.
DAOها و صندوقهای اجتماعی از چند امضایی به عنوان یک لایه کنترل عملی استفاده میکنند، به ویژه زمانی که گروه میخواهد پاسخگویی قابل مشاهدهای برای اینکه چه کسی چه چیزی را تأیید کرده است، داشته باشد.ترتیبهای مشابه امانت نیز یک تطابق طبیعی دیگر هستند. یک الگوی 2 از 3 میتواند یک کلید را به یک خریدار، یک کلید را به یک فروشنده و یک کلید را به یک داور بیطرف اختصاص دهد. وجوه تنها زمانی حرکت میکنند که دو طرف توافق کنند، که نیاز به اعتماد به یک واسطه واحد را کاهش میدهد. همان ساختار میتواند برای وجوه شراکتی استفاده شود که هیچیک از طرفین نمیخواهند دیگری حق برداشت یکجانبه داشته باشد.تنظیمات امنیت شخصی مورد استفاده آرامتری هستند و اغلب به اشتباه درک میشوند. یک 2 از 3 میتواند کلیدها را در دستگاهها و مکانهای مختلف تقسیم کند، یا یک پشتیبان شخص مورد اعتماد برای بازیابی اضافه کند. هدف ایجاد یک مراسم امضا پیچیده نیست. هدف جدا کردن دامنههای شکست است. اگر همه کلیدها در یک اکوسیستم دستگاه زندگی کنند، یا همه کلیدها توسط یک شخص "برای راحتی" نگهداری شوند، برچسب چند امضایی در حال انجام کار بازاریابی است، نه کار ریسک.
این همچنین جایی است که پایاننامه مدل عملیاتی به کار میآید. m از n مناسب، آن است که با فرآیند تأیید و زمان خاموشی قابل قبول اگر یک امضا کننده ناپدید شود، مطابقت دارد. یک 2 از 2 میتواند برای یک حساب مشترک عالی باشد تا زمانی که یک کلید گم شود.
یک 3 از 5 میتواند برای تداوم عالی باشد تا زمانی که گروه متوجه شود تأییدها اکنون نیاز به زمانبندی دارند.مزایای امنیت و تعادلهای عملیاتیمزیت امنیتی چند امضایی ساده است: نفوذ به یک کلید کافی نیست تا وجوه را منتقل کند. این شعاع انفجار فیشینگ، بدافزار در یک دستگاه واحد، یا یک فرد داخلی که به طور غیرقانونی عمل میکند را کاهش میدهد.
همچنین پاسخگویی واضحتری ایجاد میکند زیرا تأییدها به کلیدهای امضا کننده متمایز مرتبط هستند و میتوانند به عنوان بخشی از تاریخچه اجرای کیف پول حسابرسی شوند.
تعادلها عمدتاً عملیاتی هستند و به عنوان حالتهای شکست ظاهر میشوند. هماهنگی واضحترین مورد است، اما مشکلات گرانتر معمولاً رویهای هستند. بررسی غیررسمی منجر به امضای بار اشتباه، ارسال به مقصد اشتباه، یا تأیید nonce اشتباه میشود. چند امضایی ساخت فرهنگ چکلیست را آسانتر میکند، اما به طور پیشفرض یکی را تحمیل نمیکند.
لجستیک هزینهها دام تکراری دیگری است. EIP-86 به وضوح تأکید کرد که چند امضایی میتواند نیاز به چندین تراکنش تأیید داشته باشد و شرکتکنندگان ممکن است به ETH برای هزینهها نیاز داشته باشند. این یک سؤال سیاستی ایجاد میکند که هر گروه چند امضایی باید به آن پاسخ دهد: چه کسی مسئول نگهداشتن امضا کنندگان برای تأییدها است و چه اتفاقی میافتد وقتی که این کار انجام نشود.
رویکردهای حساب-قرارداد بخشی از انگیزهشان به دلیل تمایل به اینکه قرارداد ETH را نگه دارد و هزینهها را پرداخت کند، به ویژه به این دلیل که "هر امضا کننده به گاز نیاز دارد" یک فرضیه عملیاتی شکننده است.
انتخاب آستانه تعادل نهایی است و با اضافه کردن امضا کنندگان بیشتر حل نمیشود. 2 از 2 حداکثر کنترل متقابل را به حداکثر میرساند اما میتواند وجوه را به طور دائمی قفل کند اگر یک کلید گم شود. 2 از 3 محبوب است زیرا از طریق یک کلید پشتیبان، افزونگی را در خود جای میدهد. 3 از 5 از نظر حکمرانی درجهای است زمانی که تداوم از طریق غیبتها مهمتر از سرعت باشد.
N بالاتر میتواند شکست هماهنگی را افزایش دهد، که به این معنی است که "امضا کنندگان بیشتر" میتواند احتمال اینکه کیف پول بتواند زمانی که نیاز دارد عمل کند را کاهش دهد.
چگونه چند امضایی با MPC مقایسه میشودمالتیسگ و MPC هر دو به کاهش ریسک کلید واحد هدف دارند، اما این کار را با ویژگیهای مسئولیتپذیری و عملیاتی متفاوت انجام میدهند. مالتیسگ از چندین کلید کامل که توسط امضاکنندگان مختلف نگهداری میشود استفاده میکند و کیف پول تأییدها را به صورت زنجیرهای ترکیب میکند تا یک تراکنش را مجاز کند. مسیر تأیید واضح و مرتبط با هویتهای امضاکنندههای متمایز است، به همین دلیل مالتیسگ معمولاً زمانی که شفافیت و قابلیت حسابرسی الزامی است، ترجیح داده میشود.MPC یک کلید امضا را به قطعات تقسیم میکند و امضاها را از طریق محاسبات خارج از زنجیره تولید میکند، بدون اینکه هیچ طرفی هرگز کلید کامل را در دست داشته باشد. این معماری میتواند خودکارسازی روانتری را پشتیبانی کند و میتواند نسبت به بلاکچین بیطرفتر باشد، که برای عملیات چند زنجیرهای اهمیت دارد. معامله این است که فرآیند تأیید به طور ذاتی یک مسیر حسابرسی زنجیرهای، امضاکننده به امضاکننده، به روشی که مالتیسگ است، نیست.
چارچوب تصمیمگیری این نیست که "کدام یک ایمنتر است" به عنوان یک ادعای جهانی. بلکه این است که "چه چیزی باید بر روی زنجیره قابل اثبات باشد و چه چیزی باید سریع و از نظر عملیاتی روان باشد." اگر نیاز به حاکمیت و مسئولیتپذیری واضح برای تأییدها باشد، مالتیسگ به طور طبیعی مناسب است. اگر نیاز به توان عملیاتی در چندین زنجیره با خودکارسازی مبتنی بر سیاست باشد، MPC معمولاً بهتر مناسب است.
این همچنین جایی است که جزئیات پیادهسازی اهمیت دارد. یک مالتیسگ در یک زنجیره با پشتیبانی بومی به طور متفاوتی رفتار میکند نسبت به یک مالتیسگ مبتنی بر قرارداد که به سازگاری ERC-1271 برای جریانهای کاری پیامهای امضا شده وابسته است. این تفاوت بخشی از انواع کیف پول توضیح داده شده است و به همین دلیل است که دو محصول میتوانند هر دو "مالتیسگ" نامیده شوند در حالی که به طور کاملاً متفاوتی شکست میخورند.
نتیجهگیری
من شاهد بودهام که تیمها مالتیسگ را مانند یک چکباکس در نظر میگیرند و سپس متوجه میشوند که یک خط لوله تأیید شکننده ساختهاند. لحظه پرهزینه روزی نیست که کیف پول ایجاد میشود.
بلکه روزی است که یک امضاکننده در حال سفر است، یک دستگاه خراب شده و گروه متوجه میشود که آستانهای که انتخاب کردهاند به معنای یک بودجه واقعی از زمان خاموشی است.موضع تمیز این است که مالتیسگ را مانند یک سیستم کنترل میز طراحی کنید: پیشنهاد، بررسی، امضاها، بررسی آستانه، پخش، با مالکیت برای تأمین هزینه و برنامهای برای ناپدید شدن امضاکنندگان. ۲ از ۲ حداکثر کنترل و مستعد یخ زدن است، ۲ از ۳ پیشفرض عملی است زیرا یک مسیر بازیابی دارد و ۳ از ۵ زمانی استفاده میشود که تداوم بیشتر از سرعت اهمیت دارد. تعداد امضاکنندگان ویژگی نیست. مدل عملیاتی است.منابع
Cobo
پیشنهادات بهبود اتریوم
پیشنهادات بهبود اتریوم
مدیوم
پرسشهای متداول
2 از 3 چند امضایی به چه معناست؟
یک چند امضایی 2 از 3 به این معناست که سه کلید مجاز (N=3) وجود دارد و هر دو از آنها (M=2) باید برای اجرای یک تراکنش تأیید کنند. این روش محبوب است زیرا یک کلید گمشده یا مفقود را تحمل میکند و در عین حال کنترل یکجانبه را جلوگیری میکند. بسیاری از تیمها از کلید سوم به عنوان یک نسخه پشتیبان که به طور جداگانه ذخیره میشود، استفاده میکنند.
آیا کیف پول چند امضایی غیر امانی است؟
اگر امضا کنندگان کنترل کلیدها را داشته باشند و هیچ شخص ثالثی نتواند به تنهایی وجوه را جابجا کند، میتواند غیر امانی باشد. مدل نگهداری مشترک است، به این معنی که "مالک" قانون تأیید است نه یک دارنده کلید واحد. برخی از تنظیمات شرکتی ارائهدهندگان خدمات را برای هماهنگی اضافه میکنند، اما ویژگی تعریفکننده این است که آیا هر طرف خارجی میتواند به طور یکجانبه امضا کند یا خیر.
تفاوت بین کیف پول چند امضایی و کیف پول MPC چیست؟
چند امضایی از چند کلید کامل استفاده میکند و تراکنشها را با ترکیب تأییدها در زنجیره تأیید میکند. MPC یک کلید را به قطعات تقسیم میکند و امضاها را از طریق محاسبات خارج از زنجیره تولید میکند بدون اینکه هرگز یک کلید کامل را جمعآوری کند. چند امضایی تمایل دارد که قابلیت حسابرسی در زنجیره را به حداکثر برساند، در حالی که MPC اغلب برای خودکارسازی و عملیات چند زنجیرهای بهینهسازی میشود.
چرا ERC-1271 برای یک کیف پول چند امضایی در اتریوم مهم است؟
بسیاری از برنامههای اتریوم انتظار دارند که یک پیام امضا شده از یک حساب خارجی داشته باشند، اما یک کیف پول قراردادی نمیتواند یک امضای ECDSA معمولی تولید کند. ERC-1271 تابع isValidSignature(hash, signature) را تعریف میکند تا برنامهها بتوانند از یک کیف پول قراردادی بپرسند که آیا یک امضا باید به عنوان معتبر تلقی شود یا خیر. این استاندارد نیاز دارد که در صورت موفقیت اعتبارسنجی، 0x1626ba7e برگردانده شود.
روشهای اصلی گیر کردن کیف پولهای چند امضایی چیست؟
شایعترین علل، در دسترس بودن امضا کنندگان و لجستیک هزینهها هستند. اگر آستانه به امضا کنندگانی نیاز داشته باشد که نتوانند به موقع پاسخ دهند، تأییدها متوقف میشوند. EIP-86 همچنین به این نکته اشاره کرد که چند امضایی میتواند شامل چندین تراکنش تأیید باشد و اینکه شرکتکنندگان ممکن است برای پرداخت هزینهها به ETH نیاز داشته باشند.