Що таке мультисіг і навіщо він потрібний? Пояснюємо простими словами

Що таке мультисіг і навіщо він потрібний? Пояснюємо простими словами

Мультисіг — це аналог Google Authenticator, Steam Guard або код перевірки в СМС, але для криптовалютних гаманців. Операції потрібно підписувати не одним, а кількома ключами, опціонально з різних пристроїв.

Пояснюємо як працює мультисіг, як ним користуватися та чим його замінити, якщо не хочете деплоїти контракти.

Як працює приватний ключ?

Спочатку згадаємо основи. Криптогаманець або аккаунт — це пара з публічного та приватного ключів:

  • публічний — унікальний ідентифікатор аккаунту, як номер телефону або номер банківської картки;
  • приватний — пароль для керування аккаунтом.

При створенні нового аккаунту мережа спочатку генерує випадковий приватний ключ, а потім отримує з нього публічний.

Коли власник аккаунту здійснює з ним будь-яку операцію, він відправляє блокчейн-ноді інструкції, підписані його приватним ключем. Нода за допомогою криптографічних функцій може перевірити, що підпис було створено з використанням приватного ключа, який відповідає публічному ключу вказаної адреси.

Грубо кажучи, за допомогою підпису нода переконується, що операцію з адресою хоче виконати людина, яка має ключ від цієї адреси.

У результаті: якщо користувач має приватний ключ — він може керувати коштами на відповідній адресі. Якщо ключ отримає інший користувач, він також матиме доступ до адреси. Тому приватні ключі слід зберігати на безпечному пристрої, бажано не підключеному до інтернету.

Як працює мультисіг?

Мультисіг — це смарт-контракт, який виконає будь-яку операцію лише якщо її підписали кілька раніше прив’язаних до нього приватних ключів. Кількість необхідних підписів називається граничним значенням (treshold).

Він працює так:

  1. Аліса, Боб і Єва створили мультисіг-контракт на базі своїх публічних ключів з граничним значенням 2 і внесли на нього 100 tez.
  2. Аліса та Боб хочуть відправити 10 tez Єві.
  3. Аліса запитує octez-client підготувати код інструкції для підпису та передає код Бобу.
  4. Аліса та Боб підписують код своїми ключами.
  5. Аліса ініціює транзакцію контракту та передає їй обидва підписи.
  6. Контракт перевіряє, що підписи відповідають прив’язаним до нього публічним ключам, і надсилає 10 tez Єві.

Мультисіг потрібен для безпечного зберігання коштів. Наприклад, якщо хакер отримає доступ до одного приватного ключа з тих що керують мультисігом, то все одно не зможе вивести із нього кошти. Коли власники інших ключів дізнаються про крадіжку ключа, вони закриють уразливість: приберуть зі сховища контракту скомпрометований ключ і додадуть замість нього новий.

Також мультисіг можна використовувати для зберігання власних коштів. Наприклад, записати один ключ у блокноті, другий — на десктопі, третій — на смартфоні. Якщо хакер отримає доступ до десктопу, то без доступу до смартфону чи блокноту не зможе вивести з адреси токени. А якщо користувач втратить смартфон, то все одно зможе керувати адресою за допомогою ключів на десктопі та в блокноті.

Як користуватися мультисігом на Tezos?

Команда Attic Labs розробила додаток TzSign для деплою та роботи з мультисіг-контрактами. Ми задеплоїли контракт, проте далі отримали помилку «Контракт не знайдено» і не змогли ниим керувати.

Другий спосіб — самостійно задеплоїти контракт через octez-client (тепер tezos-client називається так). Ми слідували інструкції з Tezos Gitlab — все працює.

Публікація мультисіг-контракту:

octez-client deploy multisig MULTISIG_NAME transferring 1 from PUB_KEY1 with threshold X on public keys PUB_KEY1 PUB_KEY2 PUB_KEY9000 –burn-cap 1

значення в команді:

  • MULTISIG_NAME — назва задеплоїного мультисіга, щоб кожного разу не вводити його адресу в octez-client;
  • transferring 1 from PUB_KEY1 — депозит 1 tez на адресу контракту з адреси PUB_KEY1. Цими коштами і буде керувати мультисіг після деплою. Потім на нього можна відправити ще;
  • treshold X — граничне значення підписів;
  • PUB_KEY1, PUB_KEY2, PUB_KEY9000 — адреси, які зможуть керувати контрактом. Їх може бути скільки завгодно, можна вказувати псевдоніми імпортованих приватних ключів або просто адреси формату tz.

Підготовка транзакції:

octez-client prepare multisig transaction on MULTISIG_NAME transferring X to PUB_KEY2

У відповіді octez-client видасть значення bytes to sign — це і є інструкції, які потрібно підписати і передати мультисіг-контракту для виконання транзакції.

Підпис байтів:

PUB_KEY1_SIGNATURE = $ (octez-client sign bytes ‘BYTES’ for PUB_KEY1 | cut -d ‘ -f 2)

Значення:

  • PUB_KEY1_SIGNATURE — внутрішня змінна термінала, якій він надасть значення створеного підпису;
  • BYTES — значення Bytes to sign. Не забудьте одинарні лапки.

Такі підписи слід зробити від імені порогової кількості адрес. Якщо байти потрібно підписати на іншій машині, приберіть присвоєння змінної:

octez-client sign bytes ‘BYTES’ for PUB_KEY1

Клієнт видасть рядок з підписом. Його слід передати ініціатору транзакції.

Надсилання транзакції:

octez-client from multisig contract MULTISIG_NAME transfer X to PUB_KEY1 on behalf of PUB_KEY2 with signatures “$PUB_KEY1_SIGNATURE” “$PUB_KEY2_SIGNATURE”

Результат: тестова транзакція в 0,4 tez з нашого мультисіга пройшла успішно.

Офчейн-мультисіг — схема Шаміра

Схема поділу секрету Шаміра або просто схема Шаміра — це поділ секретного повідомлення на кілька частин, з певної кількості яких можна відновити вихідне повідомлення.

Для безпечного зберігання приватного ключа можна зробити так:

  1. Розбити приватний ключ на кілька частин.
  2. Записати кожну частину на різні носії інформації.
  3. При необхідності скористатися ключем прочитати необхідну кількість частин і відновити з них ключ.

Багато онлайн-сервісів для криптографії надають безкоштовні додатки для роботи зі схемою Шаміра. Ми використовували сайт iancoleman.io та розбивали посилання на мультисіг-контракт на TzKT.

Підписуйтесь на соціальні мережі Tezos Ukraine, щоб нічого не пропустити:

  1. Telegram-канал
  2. Facebook
  3. Twitter українською мовою
  4. Twitter російською мовою
  5. Twitter англійською мовою
  6. YouTube-канал
  7. Instagram
  8. LinkedIn
  9. hub ForkLog

наступний

Підбірка новорічних NFT — купіть подарунок за tez!

Читайте схожі пости

988%, 110%, 47%, 40% річних — найвигідніші ферми на Tezos у 2023 році

988%, 110%, 47%, 40% річних — найвигідніші ферми на Tezos у 2023 році

Plenty.network: пояснюємо що робити з PLY та veNFT та як на них заробляти

Plenty.network: пояснюємо що робити з PLY та veNFT та як на них заробляти

Бонусний урок для блокчейн-індексерів: робимо простий токен трекер

Бонусний урок для блокчейн-індексерів: робимо простий токен трекер

Читайте блог і не пропускайте новини про TezosЧитати блог

Спільнота