Как я могу создать мультиподписной адрес на Ethereum?

Я хочу хранить свой эфир в форме, которая требует более одной цифровой подписи для авторизации трат. Как мне это сделать на Ethereum?

Ответы (3)

Адреса «мультиподписи» в Ethereum отличаются от адресов в биткойнах. Хотя обе сети допускают произвольные сложные транзакции, концепции по своей сути не совпадают:

В Биткойне есть 2 основных класса транзакций:

  • оплата на pubkey (адреса начинаются с "1")
  • оплата по хэшу скрипта (адреса, начинающиеся с «3», также известные как P2SH)

Первая представляет собой более традиционную систему Биткойн, основанную на учетных записях, тогда как вторая представляет собой расширение BIP, написанное Гэвином Андресеном для обеспечения более сложных транзакций. По сути, P2SH позволяет использовать произвольный сценарий для создания подписи для получения некоторого ввода.

В отличие от Ethereum , существует 2 основных класса счетов:

  • сторонние аккаунты
  • договорные счета

Основное различие между ними заключается в том, что учетные записи контрактов содержат код, который может выполняться и взаимодействовать с блокчейном. Поскольку Ethereum является «полным по Тьюрингу», код может быть любым, включая кошелек с мультиподписью. Для сравнения, Биткойн имеет более ограниченный язык сценариев, который позволяет использовать некоторые функции сценариев Ethereum, но не все.

Исполнить контракт

Например, вот код кошелька , написанный на Solidity, который компилируется для работы в сети Ethereum в качестве контрактной учетной записи. Он имеет различные функции, включая поддержку нескольких подписей (с неограниченным количеством участников) и ежедневные ограничения на снятие средств, что позволяет вам тратить небольшие суммы, но требует нескольких подписей для крупных транзакций. Этот кошелек полностью работает на Blochchain и доступен в Mist (браузере Ethereum DApp) с простым в использовании HTML-интерфейсом, не требующим знаний в области программирования.

Контракт с мультиподписью в Mist

Я бы порекомендовал вам скачать бета-версию Ethereum Wallet здесь.

введите описание изображения здесь

Кошелек предоставляет вам простой графический интерфейс для создания контракта кошелька с несколькими подписями.

Недавно я работал над универсальным смарт-контрактом Solidity для мультиподписи: https://github.com/bitclave/Multiownable

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

contract SimplestMultiWallet is Multiownable {
    function transferTo(address to, uint256 amount) onlyManyOwners {
        to.transfer(amount);
    }
}

Технически вы сможете получить transferOwnershipмассив адресов, и защищенный onlyManyOwnersмодификатором метод будет выполняться только тогда, когда последний из владельцев вызовет этот метод с теми же аргументами.