Logo
Поделиться этой статьей

Как развиваются кошельки Ethereum

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

Бенедикт Чан — руководитель платформы в фирме по безопасности блокчейна BitGo и сторонник технологий блокчейна Bitcoin и Ethereum . Он спроектировал и разработал API и SDK, используемые в ряде реализаций кошельков Bitcoin с несколькими подписями.

В этой статье Чан LOOKS различия между кошельками Ethereum с мультиподписью и их аналогами для Bitcoin , а также углубляется в их внутреннюю работу.

Продолжение Читайте Ниже
Не пропустите другую историю.Подпишитесь на рассылку Crypto Long & Short сегодня. Просмотреть все рассылки

Кошельки являются ONE из самых базовых приложений на любой платформе блокчейна. Они предоставляют интерфейс для взаимодействия пользователей с блокчейном. Некоторые кошельки, такие как ONE Bitcoin CORE, подключаются к блокчейну напрямую через полный узел, в то время как другие зависят от веб-сервисов для предоставления доступа.

На базовом уровне кошелек стремится обслуживать пользователей, получая, отправляя, отслеживая и перечисляя транзакции в Криптовалюта. Более продвинутые кошельки позволяют пользователям получить лучшую безопасность или выполнять расширенный набор действий в блокчейне, тем самым увеличивая свою ценность. Это особенно верно в случае блокчейна Ethereum , где пользователям нужно не только хранить ценность, но и выполнять различные действия через контракты.

Предыстория мультиподписи

С момента своего появления в 2013 году Bitcoin кошельки с несколькими подписями (multisig) использовались для обеспечения избыточности и безопасности пользователей при работе с фондами в блокчейне. Счета с несколькими подписями требуют, чтобы для перемещения токена было подписано несколько ключей, как в физическом хранилище, где для доступа к содержимому требуется более ONE ключа.

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

Эволюция от Bitcoin к Ethereum

Потенциал блокчейна ethereum в сочетании с быстрым ростом цены ether в 2016 году обусловили спрос пользователей на веб-кошелек с мультиподписями. Но в отличие от других клонов Bitcoin , таких как Litecoin, Ethereum является уникальным блокчейном, поскольку он был построен с нуля на совершенно другом наборе правил консенсуса. Это приводит к существенным различиям в том, как реализованы кошельки Ethereum с мультиподписями по сравнению с их аналогами в Bitcoin .

Счета и адресация

В Bitcoin кошелек должен отслеживать несколько предыдущих входящих транзакций, отправленных на адреса, к которым у него есть ключи (они известны как «неизрасходованные»). Общая сумма неизрасходованных значений по этим адресам представляет собой баланс в кошельке. В Ethereum нет концепции неизрасходованных средств — вместо этого у каждого счета есть баланс, который меняется с каждой транзакцией.

Чтобы создать и подписать транзакцию, не нужно собирать и хранить предыдущие неизрасходованные выходы — ONE только запомнить последний использованный ID последовательности (в целях предотвращения двойных трат) и увеличить его. Кроме того, поскольку отслеживаются остатки (а не неизрасходованные), это снижает нагрузку на кошельки по управлению изменениями. В этом отношении создание транзакций в Ethereum проще. Это действительно обходится ценой Политика конфиденциальности пользователей, поскольку учетные записи теперь привязаны к одному адресу, тогда как пользователи могут отправлять и получать средства на несколько адресов в Bitcoin одновременно, что делает средства менее отслеживаемыми.

Плата за майнинг

В Bitcoin сборы, которые пользователи платят майнерам, рассчитываются на основе размера транзакции. В Ethereum они рассчитываются на основе количества использованных операций блокчейна, умноженных на цену, которую пользователь готов заплатить за единицу GAS (внутреннее ценообразование для выполнения транзакции или контракта на Ethereum). Проще говоря, сбор связан с количеством и сложностью операций и объемом места, занимаемого в блокчейне.

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

Проекты контрактов с несколькими подписями

FLOW схема
FLOW схема

В отличие от Bitcoin, Ethereum поддерживает расширенные скрипты, но пока не поддерживает концепцию собственной мультиподписи или P2SH (где ONE заплатить по хешу контракта и предоставить скрипт позже).

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

Существует два основных подхода к написанию контрактного кошелька, требующего нескольких подписей для защиты средств.

Схема FLOW
Схема FLOW

Это наиболее распространенный подход, используемый в таких кошельках, какТуман или Этерли. Сначала развертывается контракт кошелька, регистрирующий предоставленные «адреса подписи». Чтобы отправить средства на адрес, первый пользователь или предлагающий отправляет транзакцию, содержащую Request предложения, контракту. Этот Request имеет уникальный ID операции (хэш), полученный из суммы, адреса назначения и данных для отправки.

Затем другой пользователь контракта кошелька должен подтвердить этот ID операции, отправив отдельную транзакцию подтверждения контракту. Обе транзакции должны быть опубликованы в цепочке, прежде чем результирующая операция (для отправки средств) может быть выполнена.

Схема FLOW
Схема FLOW

Хотя предыдущий подход безопасен и подходит для многих сценариев, существует потребность в том, чтобы все подписи были в одной транзакции, что на практике похоже на Bitcoin. Известный некоторыми как вторая эволюция мультиподписи на Ethereum, этот подход имеет преимущества, требуя меньше места в цепочке, а также потенциально быстрее, поскольку не нужно ждать нескольких блоков.

Каждая транзакция в Ethereum может иметь только ONE отправителя/подписанта. Следовательно, реализация этого в контракте требует использования операции сборки ecrecover. Эта операция способна проверить адрес подписи в поле данных транзакции. Контракт с несколькими подписями написан с кодом для получения ID операции из суммы, назначения, данных и ETC. и проверки того, что ID подписан подписью в поле данных. Таким образом, можно считать, что ONE подписант исходит от отправителя сообщения, а подписи других подписантов проверяются в поле данных, и все это в рамках одной транзакции.

Реализации кошельков с мультиподписью

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

Реализация DappSys «легкая мультиподпись»

Эта реализация multisig, построенная на основе контрактной структуры Dappsys, следует первому дизайну «выполнить, затем подтвердить». Недавно он был представлен во время подготовки dapp-a-day к конференции Devcon. Его главным преимуществом является модульная конструкция кода для разработчиков, пишущих кошельки поверх него, что позволяет легко применять его во многих дальнейших сценариях, помимо хранения значений.

Будущие улучшения

Сообщество Ethereum имеет сильную базу разработчиков, и ожидается, что несколько проектов и команд выпустят приложения в NEAR или среднесрочной перспективе. Эти релизы будут стимулировать спрос и поддержку новых функций в кошельках Ethereum с несколькими подписями:

Поддержка токенов ERC20

Хотя в настоящее время существует несколько кошельков с мультиподписями для защиты эфира, для защиты других токенов поверх Ethereum их немного, например Digix DGD, Augur REP и т. д. Такие контракты токенов являются неотъемлемой частью экосистемы Ethereum , и все они поддерживают общий стандарт ERC20.

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

Поддержка большего количества операций/сценариев

Заглядывая дальше в горизонт, сфера операций, которые должен будет выполнять кошелек, также увеличится. Контракты на основе Ethereum требуют гораздо больше, чем просто отправка/получение.

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

Эволюция кошелька Multisig с EIP101 (Serenity)

Релиз Ethereum Serenity, скорее всего, принесет несколько полезных функций, которые значительно упростят и улучшат пользовательский опыт использования мультиподписных кошельков.

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

Это также делает практичным распределение нескольких HD-адресов без траты GAS на их предварительное развертывание, подобно тому, как многие компании делают это в Bitcoin для сбора платежей. Если все сделано правильно, это может сократить повторное использование адресов и повысить Политика конфиденциальности.

Далее, контракты смогут платить свои собственные комиссии. В настоящее время комиссии GAS/майнинг при выводе средств взимаются с адреса подписи, который отправляет транзакцию в контракт кошелька. Это означает, что пользователи должны держать балансы в двух местах: контракт кошелька (защищенный multisig) и адрес подписи (для оплаты комиссий). Serenity позволит контрактам платить за свой собственный GAS, поэтому пользователям не нужно будет иметь GAS счет для совершения транзакций.

Заключительные мысли

В конечном счете, пользователи будут выбирать кошельки не на основе поддерживаемой ими Криптовалюта , а на основе предлагаемых ими функций приложения — все ищут «убийственное приложение», а не «убийственную цепочку». Это захватывающее время для Криптовалюта и наблюдения за эволюцией кошельков, выстраивающих экосистему, чтобы приблизить ее к мейнстриму.

Кожаное изображениечерез Shutterstock

Ben Chan

Бенедикт Чан — ведущий специалист по платформе в компании по безопасности блокчейнов BitGo и сторонник технологий блокчейнов Bitcoin и Ethereum . Он спроектировал и разработал API и SDK, используемые в ряде реализаций кошельков Bitcoin с несколькими подписями.

Picture of CoinDesk author Ben Chan