Мультиподпись

Электронная/цифровая подпись позволяет подтвердить авторство электронного документа (будь то реальное лицо или, например, аккаунт в криптовалютой системе). Подпись связана как с автором, так и самим документом с помощью криптографических методов, поэтому не может быть подделана с помощью обычного копирования.

Мультиподпись (также Multisignature, или мультисиг) — схема реализации электронной подписи, которая для своей достоверности требует T ключей из группы N членов, где T меньше N.

Для мультиподписи требуется сотрудничество не менее T членов группы из N участников. Закрытый ключ разделяется на N частей, а для его восстановления достаточно любых T частей. Мультиподпись реализована как проверка заданных условий, которую осуществляет базовая система скриптов криптовалюты.

Для чего используется мультиподпись

 
Схема работы мультиподписи

Мультиподпись используется для усложнения операции в целях разделения ответственности или повышения безопасности.

Разделение ответственности подразумевает, что несколько человек должны коллегиально принять решение о переводе средств, которое фиксируется с помощью применения персональной цифровой подписи. Примером может служить ситуация, когда компания имеет двух и более владельцев. Чтобы потратить значительную сумму, они должны прийти к согласию, при этом субъекты могут находиться в разных точках земного шара.

Безопасность с помощью мультиподиси достигается за счёт того, что ключи, необходимые для подписи, хранятся на разных устройствах. Например, один на компьютере, а другой — на смартфоне. Для того чтобы завладеть средствами, злоумышленник должен получить доступ не только к компьютеру, который связан с криптовалютным кошельком, но и к другим устройствам или местам хранения, в которых находятся другие приватные ключи.

Мультиподпись в DecimalChain

В Decimal доступны адреса с мультиподписью. Это очень удобно при распределении средств или просто принятии совместного решения, когда есть несколько независимых участников и условия консенсуса между ними. Например, средства из общего кошелька выводятся, только если на это согласятся 80 % участников предприятия (четыре участника из пяти).

Для реализации функционала имплементированы три типа транзакций:

CreateMultisig

CreateMultisig создаёт кошелёк с мультиподписью, указанием владельцев, веса их голоса и порогового значения (например, три из пяти или два из трёх). Адрес с мультиподписью генерируется с добавлением строки данных, которая передаётся хеш-функции вместе с входным массивом данных (прообразом) для вычисления хеша (образа). Это делается, чтобы позволить создавать много адресов с тремя одинаковыми параметрами и сохранять их в хранилище.

CreateTransaction

CreateTransaction создаёт транзакцию на вывод указанного количества указанных монет на указанный адрес, создатель транзакции сразу же подписывает её. Каждой такой транзакции присваивается уникальный идентификатор.

SignTransaction

Другие владельцы кошелька с мультиподписью могут запросить неподтверждённые транзакции по данному адресу, их параметры и идентификаторы. После этого они просто отправляют транзакцию типа SignTransaction в блокчейн, в параметрах которой будет уникальный идентификатор транзакции из пункта 2. После проверки подписи количество собранных «голосов» у транзакции увеличивается в соответствии с весом подписчика в пункте 1. Если пороговое значение достигнуто, то операция исполняется, происходит перевод средств, меняются балансы адреса с мультиподписью и адреса получателя.

Как результат — благодаря данной схеме взаимодействия участников мультиподписи мы исключаем офлайн-общение между ними. По крайней мере, оно становится необязательным.

См. также