Глава 2. Браузер Mist

Содержание страницы

Глава 2

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

Примечание

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

Как мы узнали из предыдущей главы, слово Ethereum может обозначать как протокол Ethereum, так и сеть Ethereum, созданную компьютерами при помощи протокола. Управление нодой в сети позволяет вам загружать смарт-контракты. Для получения и отправки криптовалюты (в нашем случае, эфира), все что вам нужно, это приложение кошелька для вашего компьютера или смартфона.

Ethereum имеет несколько клиентских приложений, мы обсудим их в этой книге. Наиболее полезным (для большинства читателей) является браузер Mist, удобный для использования кошелек, который может выполнять некоторые функции полной ноды – а именно, исполнять смарт-контракты.

Со временем все программы, относящиеся к классу веб-приложений, будут доступны через Mist, их бэкенд будет построен на базе Ethereum mist; вот почему его называют браузером. Не обманывайтесь простотой Mist. Сегодня он полезен для отправки и получения криптовалюты эфира. Но в будущем он также может стать местом для распространения пользовательских и корпоративных программных приложений, практически как App Store.

Примечание

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

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

Последующие главы подробно рассказывают, как работает система, и как программировать смарт-контракты для нее.

Кошелек в качестве компьютерной метафоры

Кошельки – это программные приложения для компьютеров или мобильных устройств, которые хранят ваши ключи к EVM. Эти ключи сопоставлены с учетной записью (аккаунтом), на эту учетную запись ссылается длинный адрес. В Ethereum аккаунты не хранят ваше имя или любую другую персональную информацию. Они псевдонимные. Любой пользователь может сгенерировать аккаунт в Ethereum, подключившись к сети с помощью любого Ethereum-клиента (например, Mist). Вы можете сгенерировать сколько угодно аккаунтов.

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

Аккаунты как в Биткойн, так и в Ethereum представлены длинными шестнадцатеричными адресами. Ethereum-адрес выглядит подобным образом:

0xB38AA74527aD855054DC17f4324FE9b4004C720C

В протоколе Биткойн исходный шестнадцатеричный адрес кодируется с применением Base58 со встроенным номером версии и контрольной суммой, но изнутри выглядит также, как Ethereum-адрес. Вот пример Биткойн-адреса:

1GDCKfdTo4yNDd9tEM4JsL8DnTVDw552Sy

Чтобы получать эфир или биткойны, вы должны предоставить отправителю свой адрес, вот почему он называется открытым (публичным) ключом. Конечно, такие строки трудно запоминать. Если вы начинающий программист, возможно, вы задаетесь вопросом, что тут происходит; что за неудобочитаемые буквенно-цифровые нагромождения? Опытные программисты скорее всего знают, что подобные открытые и закрытые ключи являются частью асимметричного шифрования ключей.

Что есть адрес?

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

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

Много планов для сети Ethereum mist находятся в процессе разработки, которые в конечном счете воспроизведут детали сегодняшней сети на базе HTTP, которую мы знаем. Чтобы узнать больше о дорожной карте Ethereum, перейдите к Главе 11.

Примечание

Аккаунт – это объект данных: запись в реестре блокчейна, индексированная по ее адресу, содержащая данные о состоянии учетной записи, например, о ее балансе. Адрес является открытым ключом, принадлежащим конкретному пользователю; это то, при помощи чего пользователи получают доступ в свои аккаунты. На практике, с технической точки зрения, адрес представляет собой хеш открытого ключа, а не сам по себе открытый ключ, но для простоты понимания лучше проигнорировать эту разницу.

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

Где мой эфир?

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

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

Поскольку EVM является глобальной машиной, она не способна понять, с какого узла вы будете создавать транзакцию. В отличие от современных веб-приложений, Ethereum не ищет “доверенный” компьютер; он не отличит ваш смартфон от любого другого смартфона. Если это кажется необычным, подумайте об этом как о банковской ATM-системе, которая предоставляет доступ к счету любому, кто имеет номер вашей дебетовой карты и четырехзначный пин-код.

Как упоминалось в Главе 1, утеря вашего смартфона или компьютера в результате кражи или их разрушение не означают потерю ваших денег, если были соблюдены следующие условия:

  • Вы сделали резервную копию закрытого ключа.
  • Вы не давали свой закрытый ключ никому другому.

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

Метафора о банковском служащем

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

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

На данный момент важно лишь отметить, что огромные человеческие и вычислительные ресурсы требуются на то, чтобы взять ваш бумажный чек, превратить его в электронную транзакцию, отправить эту транзакцию другой стороне и затем обновить балансы обеих сторон. В криптовалютах эта устаревшая банковская система – совокупность человеческих и компьютерных процессов – полностью устранена за счет использования алгоритмического механизма согласования, работающего в одноранговой компьютерной сети. Расчеты и клиринг транзакций происходят в самой сети за считанные секунды (или, в случае с биткойном, минуты), в течение которых транзакции подписываются цифровой подписью и пересылаются узлом. Таким образом, для криптовалютной транзакции справедливо утверждение, что “расчет является торговой операцией”.

В криптовалютах вы держите свои собственные активы

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

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

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

Подводя итог: не используйте никакие кошельки или онлайн-сервисы, которые хранят ваши закрытые ключи. Используйте только приложения, которые хранят ваши закрытые ключи на вашем устройстве. Далее в этой главе вы найдете рекомендации по настольным и мобильным кошелькам. Давайте вернемся к объяснению назначения Mist в качестве вашего шлюза на пути к EVM.

Визуализация транзакций в Ethereum

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

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

Говоря абстрактно, это работает как полиграф, запатентованный в 1803 году Джоном Исааком Хокинсом. Это была первая “копировальная машина”, хотя в наше время так называют детекторы лжи.

Как известно, Томас Джефферсон отозвался с похвалой об этом копировальном устройстве как о непревзойденном изобретении для своего времени:

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

Как упоминалось ранее, ваш адрес иногда называют вашим открытым ключом, но лучшей аналогией будет банковская ячейка с уникальным индивидуальным номером. Закрытый ключ – это единственная вещь во всей этой системе, называемая точным образом: он открывает ваш аккаунт и позволяет вам выводить из него эфир.

Что такое эфир, по сути?

Это всего лишь баланс в вашем аккаунте. Когда вы отправляете и получаете эфир, фактически ничто и никуда не отправляется и не принимается.

В EVM, когда один баланс вырастает, система убеждается, что это произошло по причине того, что другой аккаунт отправил платеж и тем самым уменьшил собственный баланс на ту же сумму. Это закрытая система. На практике невозможно дать самому себе бесплатный эфир, или, по крайней мере, это не стоило бы тех затрат, которые вам пришлось бы понести в попытках фальсифицировать данные в реестре. Ethereum использует финансовые стимулы и антистимулы для обеспечения безопасности, как вы узнаете из Главы 7.

Уход от банковской истории

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

Со времен мошеннических биржевых сделок конца 17-го века на Лондонской аллее торгов предприниматели и мошенники продавали доли в предприятиях, как законно, так и нет. Часто они тайно выпускали новые акции для себя и своих сообщников, когда цена на них росла, – это явление в 19-м веке американцы назвали разводнением акций.

Со временем спекуляции с акциями стали времяпрепровождением, которым наслаждались люди всех возрастов и происхождения по обе стороны Атлантики, и появились современные фондовые биржи, с их процессами и контрагентами, выступающими в роли посредников, обеспечивающих надежные транзакции. Но даже при банковском регулировании, принятом после Великой депрессии, недобросовестные предприниматели все еще находили способы создавать тайные биржевые пулы или распродавать акции без публичной огласки – после вывода своих денег они оставляли предприятия в состоянии краха.

Несколько раз в современной истории спекулятивные пузыри уничтожали благосостояние и человеческий прогресс с таким же размахом, как и биржевой крах 1929 года в США. Так или иначе, подобные депрессивные эпизоды в США и Европе (включая Панику 1873-1879 годов) были вызваны либо центральными банками, либо самими инвесторами, которые устраивали беспорядок с базовым объемом денег, акций или облигаций на крупных рынках.

Как шифрование приводит к доверию

В Главе 1 мы практически не коснулись серьезного обсуждения криптографии и вместо этого сфокусировались на влиянии криптосетей. Но есть нечто странное в защищенной сети, состоящей из множества неизвестных компьютеров, работающих сообща. Почему один злоумышленник, затесавшийся в сеть, не может ее взломать и украсть весь эфир? Чтобы ответить на этот вопрос, для начала давайте вспомним, что блокчейн использует следующие методологии:

  • Асимметричное шифрование
  • Криптографическое хеширование
  • Одноранговые распределенные вычисления

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

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

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

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

Если вы только начинаете знакомиться с наукой о вычислениях, то сам механизм шифрования может быть неясным. Вот некоторые определения, которые помогут двигаться дальше:

  • Симметричное шифрование: процесс, при помощи которого фрагмент простого текста, обычно содержащийся в документе, смешивается с более короткой строкой данных, называемой ключом, для создания шифротекста на выходе. Эти выходные данные могут быть обращены или дешифрованы принимающей стороной, если только у нее есть точно такой же ключ. Попытка декодировать сообщение без ключа была бы крайне затратной по времени и дорогостоящей в вычислительном отношении – настолько, что некоторые виды шифрования считаются практически не поддающимися взлому даже при огромных вычислительных ресурсах.
  • Асимметричное шифрование: этот способ шифрования информации требует, чтобы программа выпускала два ключа одновременно, один из них публичный, а второй вы храните в секрете. Публичный ключ является публичным в том смысле, что вы можете размещать его у себя на сайте или в социальных сетях, это как адрес электронной почты. (Во время общения стороны могут использовать открытые ключи друг друга для шифрования информации, как описано ниже).
  • Криптозащищенный обмен данными: в нашем первом примере Алиса использует открытый ключ Боба для шифрования сообщения. Когда он получит зашифрованные данные, то сможет расшифровать их с помощью своего подходящего закрытого ключа, тем самым будет обеспечено, чтобы только Боб мог прочитать это сообщение. Это называется криптозащищенным обменом данными. Но это оставляет открытой опасную возможность: любой может отправить сообщение Бобу, выдавая себя за Алису. Откуда он узнает, что Алиса является реальным отправителем сообщения?
  • Криптозащищенный обмен данными с использованием электронных цифровых подписей: если бы Алиса хотела убедить Боба, что она – реальный отправитель, она бы поступила по-другому. Во-первых, она бы взяла свое незашифрованное сообщение и зашифровала бы его, используя свой закрытый ключ. Затем она снова шифрует его при помощи открытого ключа Боба. Когда Боб получает сообщение, он расшифровывает его сначала с помощью своего закрытого ключа, но сообщение по-прежнему остается зашифрованным. Он должен расшифровать его еще раз, используя открытый ключ Алисы. Этот второй уровень шифрования гарантирует ему, что Алиса действительно является отправителем сообщения, потому что, как можно предположить, ни у кого нет закрытого ключа Алисы, кроме нее самой. Это называется “криптозащищенным обменом данными с использованием электронных цифровых подписей”.
  • Если бы Алиса зашифровала открытый текст, используя лишь свой закрытый ключ, то любой человек, у которого есть ее открытый ключ, смог бы расшифровать его. Это называется “форматом открытого сообщения”, поскольку обеспечивается удостоверение личности отправителя, и при этом сообщение может быть дешифровано любым человеком.
  • Цифровая подпись: для максимальной безопасности Алиса должна выполнить еще одно условие: она будет хешировать открытый текст своего сообщения и прикреплять этот хеш к этому сообщению. Затем она шифрует этот набор с помощью своего закрытого ключа, и еще раз – открытым ключом Боба. Когда Боб получит и расшифрует зашифрованные данные, он сможет прогнать сообщение с открытым текстом от Алисы через тот же самый алгоритм хеширования. Если по какой-либо причине “отпечаток” сообщения окажется другим, то это будет означать, что текст изначального сообщения был поврежден или изменен в пути.

Больше информации вы получите в Главе 6, которая описывает майнинг, метод, по которому отдельные транзакции транслируются в EVM, похож на описание цифровой подписи выше, где содержимое транзакции хешируется и зашифровывается перед тем, как быть переданным пирам. Теперь, когда вы можете оценить безопасность сети Ethereum, давайте перейдем к делу – к установке Mist.

Системные требования

Большинство пользователей предпочитают использовать браузер Mist, но в этом разделе будут перечислены и другие инструменты, которые могут показаться интересными для разработчиков. Mist облегчает отправку и прием эфира. В нем также есть интерфейс для быстрого и легкого исполнения смарт-контрактов. Мы поговорим подробнее о том, как запускать смарт-контракты, в Главе 4.

Mist хорошо работает на современном компьютере с объемом оперативной памяти не менее 2 ГБ и 30 ГБ свободного места на жестком диске. Для менее производительных машин попробуйте расширение MetaMask Chrome. Оно будет описано далее в этом разделе.

Вы найдете последнюю версию Mist на GitHub проекта Ethereum (https://github.com/ethereum/).

Подробнее про Eth.guide и эту книгу

Поскольку Ethereum – это новый и быстроразвивающийся проект, некоторые ссылки на него и документацию могут измениться после публикации этой книги. По этой причине самые необходимые ссылки и справочный материал также перечислены на сайте: https://eth.guide/ и регулярно там обновляются новым материалом.

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

Сайт https://eth.guide/ связан с проектом этой книги на GitHub, так что вдобавок вы сможете найти проекты с примерами кода из этой книги по этому же адресу.

Полный URL-адрес на GitHub-проект этой книги: https://github.com/chrisdannen/Introducing-Ethereum-and-Solidity

Если вы – неподготовленный в техническом плане читатель и только собираетесь приступить к изучению основ, переходите к разделу под названием “Наконец-то, разбираемся с Mist!”. Разработчики, продолжайте чтение, чтобы узнать, какие еще инструменты нужно внимательно изучить на данном этапе вашего путешествия в Ethereum.

Инструменты для разработчиков

В дополнение к Mist, разработчикам следует обратить внимание на эти три инструмента:

  • Расширение MetaMask для браузера Chrome (полезно для всех)
  • Geth (полезно для разработчиков intermediate-уровня)
  • Parity (полезно для продвинутых разработчиков)

Расширение для Chrome MetaMask – это самый простой способ начать работать с Ethereum mist. Оно позволяет вам исполнять смарт-контракты и транзакции прямо в браузере, без необходимости поднимать полный узел Ethereum. MetaMask умеет создавать аккаунты и отправлять или получать эфир. Вы можете скачать MetaMask либо через меню расширений в Google Chrome, либо с сайта проекта по адресу.

Для удобства, MetaMask не загружает полный блокчейн на ваш компьютер; также он не может обрабатывать (майнить) транзакции и зарабатывать (добывать) эфир. Однако это незначительные недостатки для пользователей, которым нужно просто врубиться в Ethereum по-быстрому.

MetaMask был разработан Аароном Дэвисом (a.k.a. Kumavis) из ConsenSys, это компания по Ethereum-разработке и консалтингу, чьи бесплатные инструменты вы будете часто встречать в этой зарождающейся экосистеме блокчейна Ethereum. ConsenSys – это венчурная студия и консалтинговая компания, насчитывающая в своем составе 60 сотрудников, базируется в Бруклине, Нью-Йорк. Компанией управляет соучредитель проекта Ethereum Джозеф Любин.

MetaMask был частично профинансирован грантами на разработку (DEVgrants) от Ethereum Foundation. Эти гранты открыты для всех, кто работает над проектом Ethereum, и их получение не требует от создателя проекта отказываться от какой-либо доли в проекте. Чтобы узнать больше о DEVgrants, вы можете посетить канал этой программы в Gitter или подписаться на Twitter @devgrants.

CLI-ноды

Если вы уже решили приступить к разработке на Solidity, скачайте полную консольную ноду. Самые популярные ноды с командным интерфейсом (CLI) для сети Ethereum написаны на Go и C++, и они называются Geth и Eth (альтернативные названия: go-ethereum и cpp-ethereum).

Примечание

Поскольку для разных операционных систем есть множество Ethereum-клиентов, в этой книге мы будет использовать самую простую среду разработки: Ubuntu 14.04 и Geth. Пользователи Mac или Windows могут попробовать установить виртуальную машину, например VirtualBox, на которой можно запустить Ubuntu.

Продвинутые разработчики могут попробовать соединить Geth с Parity, это сверхбыстрый клиент Ethereum, написанный на языке программирования Rust. В Главе 6 мы поговорим о базовых командах в Geth.

Рекомендация: используйте Parity вместе с Geth

Parity.io – это частная компания по разработке в среде Ethereum, состоящая из некоторых бывших участников проекта Ethereum, включая Гэвина Вуда, еще одного соучредителя проекта Ethereum, который создал язык Solidity и является автором “Ethereum Yellow Paper”.

Вместе со своей командой они создали мощный узел на языке программирования Rust. Parity работает на macOS, Windows, Ubuntu и в среде Docker. Вы можете узнать больше на странице проекта на GitHub: https://github.com/ethcore/parity

Примечание

Если вы планируете использовать кошелек Mist через свою ноду Parity, вам нужно будет вручную запустить Parity перед запуском Mist. В противном случае, Mist будет подключаться через свой собственный узел. Под капотом у браузера Mist работает нода Geth.

Подробные пошаговые инструкции по настройке кошелька Mist с работающим на бэкенде Parity доступны на YouTube-канале команды Ethcore (www.youtube.com/watch?v=sta-p5d1blQ).

Наконец-то, разбираемся с браузером Mist!

Теперь, когда вы лучше понимаете, какую роль играет клиент Ethereum, давайте установим его на ваш компьютер. Браузер Mist совместим с компьютерами на Linux, macOS и Windows, 32- и 64-битными архитектурами. Если вы не знаете разрядность вашей системы, проверьте профиль оборудования. Большинство современных систем являются 64-битными.

Загрузка и установка браузера Mist

Сначала загрузите Mist по ссылке, как показано на изображении 2-2.

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

Вы найдете эту ссылку среди ссылок на другие клиенты на странице.

В Windows двойным кликом запустите загруженный исполняемый файл. На macOS откройте загруженный образ диска и переместите кошелек Ethereum в папку Программы. В Ubuntu используйте Debian package или разархивируйте zip-файл и откройте его для установки.

Примечание

Не стоит запускать сразу несколько узлов одновременно. Если, к примеру, вы попытаетесь открыть Geth в то время, как у вас уже запущен Mist, вы получите сообщение об ошибке, указывающее на то, что узел уже запущен на вашей машине.

Настройка браузера Mist

После того, как вы скачали и запустили установочный файл, появится экран приветствия, как на изображении 2-3. (В нем содержатся некоторые из тех больших обещаний, о которых мы говорили в Главе 1!).

Основная сеть также называется основной цепочкой. Тестовая сеть – это среда-“песочница” для экспериментирования с ненастоящим эфиром и отладки контрактов.

Здесь вам будет задан вопрос, к какой цепочке или сети вы желаете подключиться? На данном этапе не имеет значения, какую из них вы выберете; вы сможете переключаться между сетями позже. Но для наших задач давайте сделаем вам настоящий адрес кошелька: нажмите “Использовать основную сеть” (“Use the main network”).

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

Далее вы увидите окно, показанное на изображении 2-4, которое вы можете пропустить – если только вы не участвовали в краудсейле Ethereum в 2014 году. Если участвовали, следуйте указанным инструкциям, чтобы получить свой эфир.

Краудсейл Ethereum, который выдал своим участникам права на файл, представляющий собой эфир, прошел в 2014 году. Нажмите на опцию “Пропустить” (“Skip”), если вы не участвовали.

После выбора пароля, как показано на изображении 2-5 (не забудьте записать или запомнить его), вы увидите напоминание, которое требует определенных пояснений.

Далее, выберите пароль.

Примечание

В сети Ethereum нет функционала по восстановлению пароля. Причина в том, что ваш пароль предназначен только для этого локального экземпляра кошелька Mist; он не сохраняется в блокчейне Ethereum. Фактически, ваш закрытый ключ – это все, что вам нужно для того, чтобы воссоздать этот аккаунт на любом другом компьютере с установленным Mist. Пароль, который вы создаете, защищает вас лишь от злоумышленника, который может сесть за ваш компьютер и потратить ваши деньги через интерфейс Mist. Это не помешает кому-либо украсть ваши закрытые ключи из файловой системы вашего компьютера, если он оставлен без защиты. Примите меры предосторожности, например, отключите автоматический вход в учетную запись при запуске системы на Mac, Linux или Windows.

На следующем экране, показанном на изображении 2-6, вы впервые увидите адрес своего кошелька (“etherbase”), это как URL-адрес для этой машины, при условии, что этот узел и его данные находятся в исправном состоянии. Если вы удалите приложение Mist и его данные из вашей системной библиотеки, то эта пара открытого и закрытого ключа – ваш “etherbase” – будет удалена. Вот почему необходимо создавать резервные копии своих аккаунтов, мы рассмотрим, как это делается, в конце этой главы.

Здесь вы можете увидеть новый адрес. Вы также можете внести на счет биткойны, которые будут конвертированы в эфир при помощи API Shapeshift.io

Наконец, вы увидите экран, как на изображении 2-7, когда блокчейн начнет синхронизацию с вашим компьютером. Если вы нажмете “Запустить приложение” (“Launch Application”), загрузится интерфейс Mist. Не сокрушайтесь, если ваш новый аккаунт не будет отображаться какое-то время. Он появится, когда узел будет полностью синхронизирован.

 

Это займет некоторое время. Ваш новый аккаунт появится, когда все будет готово.

Поиск вашего нового адреса

Вы можете создать больше адресов, но все они будут существовать на базе этого адреса “etherbase”, это упрощает резервное копирование.

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

Отправка и получение эфира

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

Мы создали аккаунт в основной сети, на тот случай, если вы заинтересованы в хранении реального эфира в спекулятивных целях или у вас уже есть друзья и коллеги, которые используют его для платежей. Для большинства читателей использование тестового эфира (который вы можете генерировать бесплатно в тестовой сети под названием Ropsten) – это лучший способ, чем платить деньги за реальный эфир для его использования в основной сети. Инструкции по подключению к Ropsten представлены в Главе 5.

На данный момент стоит объяснить, как отправляется и принимается эфир, не для проформы, потому что это поможет прояснить то, каким образом работает базовая система. Эфир отправляется через диалоговое окно “Отправить” (“Send”), показанное на изображении 2-8.

Диалоговое окно “Отправить” в Mist упрощает отправку, получение и проверку балансов эфира без использования интерфейса командной строки.

Чтобы отправить эфир, выполните следующие действия:

  1. В реальной жизни узнайте адрес в Ethereum у человека, которому необходимо отправить эфир.
  2. Откройте Mist. Нажмите “Отправить” в верхней части кошелька   Mist. Откроется диалоговое окно “Отправить”.
  3. Выберите, с какого кошелька вы хотите отправить эфир.
  4. Вставьте адрес получателя.
  5. Введите сумму.
  6. Нажмите “Отправить”.

Вы увидите еще две опции, которые можно использовать: поле для ввода данных, куда можно внести дополнительный текст (например, номер заказа или комментарий с благодарностью) и ползунок для выбора комиссии за транзакцию (“transaction fee”). Назначение комиссии за транзакцию станет понятным в Главе 6. А сейчас оставьте ползунок в положении по умолчанию, и ваши транзакции будут обрабатываться без проблем.

Примечание

Из практических соображений при отправке эфира ваш кошелек Mist должен быть полностью синхронизирован. Это означает, что вам может понадобиться подождать некоторое время, пока Mist не скачает блокчейн, чтобы вы могли быть уверены в том, что ваши транзакции будут обработаны без ошибок. Как вы узнаете позже, это не обязательно с технической точки зрения; узлы, которые какое-то время находятся офлайн, в действительности способны инициировать транзакции, но только при условии, что пользователь создает транзакцию через командную строку, с актуальной информацией об аккаунте, который используется.

Для получения эфира необязательно, чтобы ваш узел был синхронизирован. Если вы захотели проверить свой баланс, вы можете спокойно нажать на “Запуск приложения” и пропустить процесс синхронизации во время запуска Mist.

Понимание типов аккаунтов в Ethereum

Пользователи взаимодействуют с блокчейном Ethereum при помощи аккаунтов. В профессиональной терминологии Ethereum аккаунты, созданные и используемые людьми, называются внешними аккаунтами (“externally owned accounts”). Они отличаются от аккаунтов для контрактов (“contract accounts”), адреса которых задействуются смарт-контрактами.

Примечание

Внешние аккаунты не всегда контролируются людьми. Иногда они контролируются доверенными рабочими станциями, находящимися где-то в другом месте. Суть в том, что такие аккаунты являются внешними для EVM.

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

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

Примечание

И аккаунты контрактов, и внешние аккаунты являются объектами состояния. Аккаунты контрактов содержат состояние баланса на аккаунте и хранилище контракта; внешние аккаунты содержат только состояние баланса. Вместе с тем, важно отметить, что сообщество разработчиков Ethereum на данный момент рассматривает предложение по созданию большего количества абстракций в EVM. Замысел состоит в том, чтобы абстрагироваться от неоднозначности, которую мы имеем сегодня, путем превращения всех аккаунтов в непосредственно смарт-контракты. Таким образом, пользователи свободны в определении своей собственной модели обеспечения безопасности.

Повторим некоторые основы:

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

Резервное копирование и восстановление ваших ключей

Продолжая работу в браузере Mist, после того, как он завершит синхронизацию с блокчейном, перейдите в меню “Аккаунты” (“Accounts”), затем “Резервное копирование” (“Backup”) – “Аккаунты”. Откроется папка. Внутри этой папки находятся текстовые файлы с длинными именами, которые начинаются с даты создания, например “UTC – 2016-09-01 (…)”. Каждый из этих файлов с простым текстом представляет собой учетную запись.

Создайте резервную копию папки “keystore”, заархивируйте ее и поместите в безопасное место, например, на электронный USB-ключ или зашифрованный жесткий диск.

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

Для восстановления аккаунта на другом узле, не том, где вы создали аккаунт, просто поместите папку “keystore” таким же способом, как был описан выше. Вместо дублирования уже имеющихся там файлов, восстановление аккаунта Ethereum в Mist заключается в простом копировании текстового файла, содержащего закрытый ключ, внутрь папки “keystore” и перезапуске Mist. Для получения полного руководства посетите: http://backup.eth.guide http://restore.eth.guide.

Если вы хотите найти папку “keystore” на своем жестком диске через терминал, то она обычно находится в следующих директориях:

  • Mac: ∼/Library/Ethereum/keystore
  • Linux: ∼/.ethereum/keystore
  • Windows: %APPDATA%/Ethereum/keystore

Предыдущий процесс позволит забэкапить только ваши обычные аккаунты. Контракты кошелька хра