M/N аккаунт (мультиподпись)

Обозначение. M/N аккаунт = M-of-N multi-signature account = мультиподписной аккаунт M-из-N.

Применение M/N аккаунтов

Особенности и опасности M/N аккаунта

M/N аккаунты это мощный инструмент, имеющийся в вашем распоряжении, но необходимо использовать этот инструмент с должной осторожностью. Обратите внимание на следующие важные вещи:

  • После конвертации обычного аккаунта в M/N аккаунт, вы больше не сможете инициировать транзакции с этого аккаунта. Все операции с M/N аккаунта инициируются одним из его соподписантов, любым. Можно провести аналогию с отношениями между родителями и детьми. Аккаунт(ы) соподписантов это родительские аккаунты, а аккаунт, который был превращен в M/N аккаунт, это дочерний аккаунт. Родительские аккаунты имеют полный, но совместный контроль над дочерним аккаунтом, а дочерний аккаунт сам не имеет никакого контроля над своими средствами.
  • В текущей реализации NEM мы располагаем мультиподписью "M/N" (M из N), где M и N - натуральные числа, и M≤N. Например, 1/1, 1/3, 4/4, 4/9, 7/12 и т.д. В случае M/N аккаунта, когда M=N, т.е. N/N аккаунта, для активации транзакции необходимы все N подписей, но для редактирования такого аккаунта будет достаточно N-1 подписей. Например, для 3/3 аккаунта только 2 подписи необходимы для удаления или изменения третьего соподписанта.
  • Вы можете создать M/N аккаунт с количеством соподписантов до 64. Но, как это ясно из предыдущего пункта, если будет утерян контроль над L аккаунтами соподписантов, то:

  • при 1<L≤(N-M) будет потеряна возможность редактирования этого M/N аккаунта, хотя возможность совершать с него транзакции останется;
  • при L>(N-M) произойдёт необратимая потеря доступа к средствам, находящимся на этом M/N аккаунте.


Подсказка

Если вы не хотите использовать существующий адрес (аккаунт) в качестве соподписанта, вы можете просто создать новый аккаунт.


Начало работы

Если вы только начинаете использовать NEM, вполне возможно, что в вашем кошельке NCC есть пока только один аккаунт. В этом случае вы должны пойти дальше и создать по крайней мере ещё один аккаунт. Один из этих аккаунтов инициирует преобразование другого в M/N аккаунт. Вам также необходим список адресов тех аккаунтов, которые наряду с вашим аккаунтом будут являться соподписантами.

Если вам необходимо создать новую учетную запись, то в левом верхнем углу экрана NCC рядом с адресом аккаунта можно увидеть значок шестерёнки, нажмите его и выберите опцию "Create New Account".


В появившемся окне введите метку для создаваемого аккаунта (будет отображаться только в вашем кошельке), пароль вашего кошелька и нажмите кнопку "CREATE". Вы можете создать в кошельке столько новых аккаунтов, сколько вам необходимо, любое количество.





Внимание:

Аккаунт после преобразования его в M/N аккаунт теряет возможность сам отправлять транзакции. Один из соподписантов должен будет инициировать транзакцию, а M соподписантов должны будут подписать её.


Шаг 1. Подготовка.


На картинке выше чувак Duncan Idaho решил сделать свой одноимённый аккаунт "Duncan Idaho" мультиподписным. Для этого ему понадобится ещё один аккаунт, в нашем примере он создаёт аккаунт "Leto A", который будет соподписантом M/N аккаунта. Делая аккаунт мультиподписным, Duncan понимает, что полный контроль над первоначальным аккаунтом он потеряет, и чтобы отправить с M/N аккаунта XEM, будет требоваться согласие (подписи) соподписантов.

Открыв аккаунт "Leto A", Duncan находит маленькую иконку в виде шестерёнки рядом с именем аккаунта и адресом и нажимает на неё. Появляется выпадающее меню, в котором он нажимает "Convert other account to multisig".



Шаг 2. Конвертация аккаунта.

Откроется окно "CONVERT ACCOUNT TO MULTISIG". В текстовом поле "Multisig account" Duncan выбирает аккаунт "Duncan Idaho".

Ниже, в поле "Cosignatories' addresses" он добавляет те аккаунты, которые он хочет иметь соподписантами. В том числе и свой аккаунт "Leto A", и это будет 5/5 аккаунт:
Leto A TCEIRU-WQO4LY-V5X33V-XOFX7S-XSAVC5-RFFMDR-AVSE
Lady Jessica TD5JO2-PBUH2S-Z3ECRR-O4XECI-4U2JQN-QJOO2Y-YWV5
Thufir Hawat TD34VV-RIBR35-F6O536-QYGOOM-CS6F67-L35Q22-O22N
Chani TC46UN-75KBAL-6QEEAB-EKREZC-Z7J7PD-5JZPJM-XWK3
Dr. Kynes TBDCUQ-ZIJD4L-KX3ZPY-XEMONS-B62TJI-E4XMMQ-YVUE
NEM признает метки этих аккаунтов, если они были сохранены ранее в адресной книге.


После чего нажимается кнопка "Convert". Если всё в порядке, то появляется экран подтверждения "CONFIRM CONVERSION TO MULTISIG ACCOUNT".



Успех!

Поздравляем. Вы создали мультиподписной 5/5 аккаунт в NEM.


Когда мы теперь в любом аккаунте, связанном с аккаунтом "Duncan Idaho", посмотрим на транзакции, то мы увидим некоторые специальные символы рядом с ними. Жёлтая скрепка означает, что создан MS аккаунт. Зелёная M со знаком плюс означает входящую транзакцию с M/N аккаунта. Серая M означает исходящую транзакцию в статусе ожидания подтверждения, и красная M говорит о том, что транзакция была отправлена.


Движемся дальше.

Отправляем транзакции с M/N аккаунта.
1) Инициирование транзакции.

Каждый раз, когда Duncan захочет сделать транзакцию с аккаунта "Duncan Idaho", он будет использовать аккаунт "Leto A". Впрочем, любой из определённых при создании M/N аккаунта соподписантов имеет такое же равное право инициировать транзакцию. На следующем рисунке показано, что инициирует транзакцию "Dr. Kynes". В нашем примере аккаунт N-из-N, так что все соподписанты должны будут подписать транзакцию.


Итак, Doctor Kynes решил отправить Stilgar 1000 XEM с аккаунта "Duncan Idaho". После того как в аккаунте "Dr. Kynes" будет нажата кнопка "Send XEM", нужно будет выбрать аккаунт "Duncan Idaho" в выпадающем списке "Sender". Заполнив остальные поля формы, он нажимает Send.


Если сейчас заглянуть в аккаунт Duncan, то мы увидим там незавершённую мультиподписную транзакцию, которая помечена серой буквой M.


2) Подписание транзакции.

Если заглянуть в аккаунты других соподписантов, там картина будет выглядеть несколько иначе. Каждый соподписант автоматически уведомляется о необходимости подписать транзакцию, пока такая фича есть только в NEM. Посмотрим для примера в аккаунт "Chani". На главной панели NCC для аккаунта "Chani" мы видим в графе Amount запрос на подписание транзакции в виде появившейся заметной зелёной кнопки "SIGN". Пока все соподписанты не подпишут транзакцию, Stilgar не получит отправляемые ему 1000 XEM.



Что видит Duncan?

Duncan, как и все остальные соподписанты, может видеть, что инициирована транзакция, адресованная Stilgar, и может следить за прогрессом её подписания. В графе Message вначале он видит "#cosigs 0", что означает "получено 0 подписей".


Если в графе Details нажать "View", откроется окно TRANSACTION DETAILS, и можно узнать больше подробностей о данной транзакции.


На картинке видно, что сумма 1000 XEM, получатель Stilgar, инициировал транзакцию Doctor Kynes, что уже все подписали транзакцию ("#cosigs 4") - Chani, Leto A., Thufir Hawat, Lady Jessica , и Stilgar в эту секунду получит свои 1000 XEM!


Дополнительно.

Как было замечено ранее, в NEM мультиподписные аккаунты можно рассматривать как дочерние относительно родительских аккаунтов соподписантов, в плане их прав. Из этого вытекает ряд уникальных возможностей.


Передача аккаунтов.

Если человек полагает, что приватный ключ от его аккаунта был скомпрометирован, вместо пересылки всех XEM и мозаик с этого аккаунта он может просто сделать этот аккаунт мультиподписным, 1-из-1. Соподписантом он назначит аккаунт, который не был скомпрометирован, и человек может быть уверен в безопасности своих средств. Если вновь возникнет угроза, то аккаунт можно отредактировать, назначив соподписантом вновь созданный надёжный аккаунт.


Передача Namespaces.

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

Однако вы можете создать 1/1 аккаунт, который по существу является делегированным аккаунтом своего основного аккаунта. Вследствие уникальной архитектуры NEM, контроль над всеми транзакциями будет принадлежать основному аккаунту, а приватный ключ делегированного аккаунта будет приглушён. Но NEM позволяет редактировать список соподписантов. Это значит, что пользователь может передать все права своего основного аккаунта, с которым связан делегированный аккаунт, какой-либо третьей стороне, сделав её новым соподписантом 1/1 аккаунта. В итоге основной аккаунт третьего лица теперь будет владельцем этого пространства имён со всеми вытекающими следствиями - сможет редактировать мозаики, а также будет иметь полный контроль над этим аккаунтом.


Редактирование M/N аккаунта.

Сколько необходимо подписей:
тип аккаунта add del
M-из-N M M
N-из-N N N-1
Примечание. Картинки огромные, но для изображений я не использую миниатюры по двум причинам:

  • В Android ссылка с них на полное изображение с используемого хостинга не работает.
  • В случае с миниатюрой на стационарном компьютере приходится делать лишние клики для получения полного изображения, которое потом ещё надо закрывать. По крайней мере 3 клика для каждого изображения.


http://blog.nem.io/how-to-use-multi-signature-accounts/
Ещё одна версия перевода:
http://getcoin.today/nem-multi-signature/

Источник:
http://free.userboard.net/t65-topic
Мультиподпись

Иллюстрированное руководство по мультиподписи.

Функция мультиподписи m из n действует начиная с блока 199800.

Последовательность действий при создании MS аккаунта:

  1. Создаем новый аккаунт или задействуем существующий. Он будет выполнять роль MS аккаунта.
  2. На нем должна быть сумма, достаточная по крайней мере для оплаты комиссии при создании MS аккаунта (см. раздел Комиссии).
  3. Указываем аккаунты соучастников (cosignatories). Для себя задействуем другой аккаунт, MS аккаунт сам себя подписывать не сможет. Количество соучастников может быть любым от 2 до 32. Текущая сумма на них не имеет значения, они могут быть пустыми. Требования к ним:

  4. С каждого из этих аккаунтов перед этим должна быть совершена хотя бы одна исходящая транзакция, иначе при попытке создания MS аккаунта получим ошибку 306.
  5. В роли соучастников не могут выступать другие MS аккаунты.


MS аккаунт выполняет только роль хранилища NEM и непосредственно с него исходящие транзакции будут невозможны. Инициировать транзакцию с MS аккаунта может любой из его соучастников. Входящие транзакции на MS аккаунт возможны и не ограничены.

Список соучастников созданного MS аккаунта можно редактировать:

  • Можно добавлять любое количество соучастников, при этом модифицирующую транзакцию должны подписать все соучастники.
  • Удалить можно за раз только одного из соучастников, при этом модифицирующую транзакцию должны подписать все соучастники за исключением удаляемого.

Если один из соучастников потеряется (потеряет пароль от своего аккаунта), то MS аккаунт и средства на нем также будут потеряны? Нет. Такого соучастника можно будет удалить из соподписантов MS аккаунта. Но если одновременно потеряются два или более соучастника, то такой MS аккаунт и имеющаяся на нём сумма будет утерян безвозвратно.
Можно уничтожить MS аккаунт (Remove Account), при этом уйдёт в небытие он сам и все NEM, которые там хранятся. При этом он также исчезнет из списков MS аккаунтов всех его соучастников.