Skip to content

Кошелек с функцией мультиподписи значительно повышает безопасность – перед тем, как транзакция будет подтверждена сетью, она должна быть подписана N подписями из M (М больше или равно N).

Такой кошелек может принимать средства и хранить их, но не даст вывести средства, пока не получит, минимум 2 из 3 подтверждений. Это крайне удобно, поскольку взлом любого из участников/владельцев не ведет к несанкционированному выводу средств.

Multisignature wallet может оперировать произвольными N и M, но минимально возможный вариант «2 из 3» покрывает огромное количество бизнес-задач, где требуется участие третьей стороны.

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

Данные для создания смарт-контракта

На платформе Smartz.io в разделе Multisignature wallet необходимо указать:

  • Instance name: название смарт-контракта;
  • Signatures quorum: количество (кворум) подписей, необходимых для вывода средств или изменения подписей;
  • Addresses of owners: адреса (подписи) владельцев создаваемого кошелька.

Указав необходимые данные, вы получите код контракта. На этом этапе вы можете указать одного владельца кошелька, и добавить остальных владельцев после.

Деплой контракта будет осуществлен за 0.1 эфира (через кошелек MetaMask).

После деплоя в сети вы сможете просмотреть развернутый контракт на Etherscan либо перейти к управлению контрактом в разделе «My contracts».

Подробная информация о контракте

Вам доступна следующая информация о созданном контракте:

  • Number of owners: количество владельцев;
  • «Am I owner?»: проверяет, является ли текущий аккаунт одним из владельцев кошелька;
  • Quorum requirement: количество подписей, необходимых для выполнения действий на этом кошельке;
  • Owners: возвращает список всех текущих владельцев кошелька.

Функции опроса

Вы можете воспользоваться опрашивающими функциями (Ask functions) для получения информации о состоянии контракта и значениях, связанных с каким-либо адресом или другими условиями, которые вы должны указать. Эти функции не выполняют никакие изменений в блокчейне:

  • Check owner: проверяет, является ли указанная учетная запись одним из владельцев кошелька.
  • «Is operation confirmed?»: проверяет, подтверждена ли операция владельцем.
  • Get n-th owner: получить номер владельца от 0 и выше.

Функции записи

Для изменения состояний и значений смарт-контракта нужно воспользоваться функциями записи (Write functions), вносящими новую информацию в блокчейн. Все эти функции потребляют некоторое количество газа.

Также, все функции, меняющие владельцев, и относящиеся к выводу средств доступны строго для owner-ов контракта.

  • Remove owner: удаляет указанного владельца.
  • Add owner: добавляет нового владельца. Доступна только owner-у контракта
  • Revoke confirmation: отменить подтверждение операции текущего владельца (текущей учетной записи).
  • Change quorum requirement: установить новое количество подписей, необходимых для выполнения действий в этом кошельке (снятие деньги, изменение владельцев и т. д.).
  • Send Ether: отправить некоторое количество эфира из кошелька на указанный адрес (Destination address). Сумма должна быть указана в наименьших единицах: wei.
  • Change owner: меняет адрес текущего владельца с одного на другой.