|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Шесть наиболее популярных кошельков Ethereum. Браузер mistШесть наиболее популярных кошельков EthereumЕсли до последнего времени пользователи Ethereum, возможно, и сетовали на явно малое количество простых и удобных кошельков для хранения криптовалюты, то на сегодняшний день выбор определенно стал больше. Но, как известно, чем больше выбор, тем сложнее определиться с тем, что подходит именно вам. Поэтому редакция ForkLog сделала подборку наиболее популярных кошельков для хранения Ethereum. MistЛюбой криптовалютный проект имеет свою стандартную имплементацию и используемый по умолчанию кошелек. Ethereum в этом отношении не является исключением. Ethereum Foundation, поддерживающая проект, помимо бесчисленного количества различных клиентов и утилит, создала Mist – браузер Ethereum, который также может стать стандартным способом хранения ETH и взаимодействия со смарт-контрактами. Однако не стоит забывать, что в настоящий момент Mist не совсем готов служить в качестве полноценного децентрализованного приложения, так как все еще находится на стадии бета. Для его использования потребуется полноценная установка на жесткий диск компьютера (с синхронизацией блокчейна, что займет некоторое время) и базовые навыки программирования. Последняя рекомендованная версия 0.7.6 (Beta 20) с устраненными уязвимостями была выпущена 26 июня и доступна на официальном сайте проекта Ethereum и на GitHub. Ожидается, что полноценный релиз Mist состоится вместе со следующей версией протокола Ethereum под названием Metropolis. В любом случае, несмотря на предупреждения разработчиков, Mist вполне позволяет хранить токены ETH и другие криптоактивы в блокчейне Ethereum, а также разворачивать и использовать умные контракты. Кроме ‘того, Mist интегрирован с криптовалютной биржей ShapeShift, что позволяет проводить быструю конвертацию ETH в биткоин и наоборот. Новичкам также стоит обратить внимание на один важный момент: Mist предусматривает разграничение понятий «Account» и «Wallet». При этом и аккаунт, и кошелек могут хранить монеты. Под термином «Account» подразумевается стандартный и более понятный пользователям биткоина метод хранения приватных и публичных ключей, в то время как «Wallet» представляет собой умный контракт под управлением одного или нескольких аккаунтов. Среди недостатков этого кошелька можно назвать не очень понятный для новичков функционал и отсутствие мобильной версии (в настоящий момент Mist доступен для Windows, Linux и Mac). MyEtherWalletЕсли по каким-то причинам вам не хочется устанавливать ПО на свой компьютер и скачивать весь блокчейн, хорошей альтернативой может стать мультивалютный MyEtherWallet. Сайт построен на JavaScript и собирает данные на стороне клиента. Он позволяет создавать и использовать Ethereum-адрес для получения и отправки средств. Вот как описывает свой продукт команда MyEtherWallet: «Это не онлайн-кошелек. Вы не создаете аккаунт и не доверяете нам хранение ваших токенов. Все данные создаются в вашем браузере, а не на наших серверах. Это не тот веб-сайт, куда вы загружаете ваши эфиры, а мы их храним. Мы просто помогаем вам хранить информацию о вашем кошельке в вашем браузере, после чего даем доступ к этой информации и работе с ней». Помимо криптовалюты ETH, представленный кошелек также поддерживает токены The DAO и DigixDAO (DGD). Кроме того, есть возможность осуществления офлайн-транзакций, а пользователям Windows предлагается расширение для браузера Chrome. EthereumWalletПредставленный канадской Kryptokit (подразделение Decentral) EthereumWallet имеет ряд сходств с MyEtherWallet. В данном случае используется всё тот же JavaScript со сбором данных на стороне клиента, и пользователь может быстро создать Ethereum-адрес в браузере. Некоторое время кошелек был популярен среди пользователей, однако в настоящий момент его развитие приостановилось на стадии бета. Несмотря на это, кошелёк остаётся вполне функциональным. Однако от операций с крупными суммами лучше все же воздержаться. JaxxПрекратив дальнейшую разработку EthereumWallet, команда Decentral полностью сосредоточилаcь на Jaxx, который сегодня может считаться одним из наиболее удобных и дружественных к пользователю мультивалютных кошельков. Изначально запущенный как биткоин-кошелек, Jaxx через некоторое время добавил поддержку Ethereum, а ещё позже и токенов The DAO. В планах команды — добавление поддержки еще одной достаточно популярной криптовалюты Dash. Еще более интересна возможность связать существующий аккаунт с несколькими устройствами, поскольку Jaxx доступен не только в десктопной версии для Windows, Linux и Mac, но и для мобильных устройств на базе Android и iOs. Также доступны расширения для браузеров Chrome и FireFox. Всё это в комбинации с интеграцией биржи ShapeShift, возможностью импорта бумажных кошельков и предстощим релизом аппаратного кошелька делает Jaxx действительно уникальным решением. Среди других преимуществ Jaxx отметим поддержку HD-адресов и умных контрактов. GethGeth представляет собой старую добрую консоль для использования, отправки, получения и создания контрактов в Ethereum. Geth представлен в сборках под основные платформы: Windows, Linux и Mac. Этот кошелек вряд ли подойдет пользователям, которые хотят пользоваться обычным криптовалютным кошельком. Однако среди программистов Geth пользуется популярностью. EthAddressЕщё один построенный на JavaScript кошелек Ethereum со сбором данных на стороне клиента. EthAddress представляет собой генератор бумажных кошельков, он поддерживает несколько типов кошельков, включая брейн-валлеты и коллективные кошельки. Дисклеймер: несмотря по популярность всех перечисленных выше кошельков, ForkLog напоминает, что мы не являемся официальными представителями компаний-производителей и их продуктов. Не забывайте о необходимости проводить собственное изучение и исследование предлагаемых продуктов, прежде чем доверить им свои средства.
Нашли ошибку в тексте? Выделите ее и нажмите CTRL+ENTER forklog.com Глава 2. Браузер Mist - Создание децентрализованных приложений на блокчейнСодержание страницы Глава 2В области криптовалютного программного обеспечения есть два ключевых типа клиентских приложений: кошельки и полные узлы (ноды). ПримечаниеПод кошельком обычно имеют в виду легковесный узел, который подключается к блокчейну для выполнения основных функций, таких как отправка и получение криптовалюты. Полные узлы – это командные интерфейсы, с помощью которых можно выполнять полный спектр операций, которые разрешены в сети. Как мы узнали из предыдущей главы, слово Ethereum может обозначать как протокол Ethereum, так и сеть Ethereum, созданную компьютерами при помощи протокола. Управление нодой в сети позволяет вам загружать смарт-контракты. Для получения и отправки криптовалюты (в нашем случае, эфира), все что вам нужно, это приложение кошелька для вашего компьютера или смартфона. Ethereum имеет несколько клиентских приложений, мы обсудим их в этой книге. Наиболее полезным (для большинства читателей) является браузер Mist, удобный для использования кошелек, который может выполнять некоторые функции полной ноды – а именно, исполнять смарт-контракты. Со временем все программы, относящиеся к классу веб-приложений, будут доступны через Mist, их бэкенд будет построен на базе Ethereum; вот почему его называют браузером. Не обманывайтесь простотой Mist. Сегодня он полезен для отправки и получения криптовалюты эфира. Но в будущем он также может стать местом для распространения пользовательских и корпоративных программных приложений, практически как App Store. ПримечаниеТермин “валюта”, а именно “криптовалюта“, означает взаимозаменяемую единицу ценности системы, подобно токену или временному платежному средству. Что конкретно представляют собой эти небольшие токены, станет понятно позже в этой главе. Понятие “взаимозаменяемый”, применительно к валюте, означает, что одна денежная единица равноценна другой аналогичной денежной единице. В терминологии фиатной валюты можно сказать, что один доллар можно заменить на другой, у них равная ценность. В этой главе вы узнаете, как получить доступ к сети с помощью Mist и других приложений, чтобы понять основы отправки и получения токенов эфира между аккаунтами. Последующие главы подробно рассказывают, как работает система, и как программировать смарт-контракты для нее. Кошелек в качестве компьютерной метафорыКошельки – это программные приложения для компьютеров или мобильных устройств, которые хранят ваши ключи к EVM. Эти ключи сопоставлены с учетной записью (аккаунтом), на эту учетную запись ссылается длинный адрес. В Ethereum аккаунты не хранят ваше имя или любую другую персональную информацию. Они псевдонимные. Любой пользователь может сгенерировать аккаунт в Ethereum, подключившись к сети с помощью любого Ethereum-клиента (например, Mist). Вы можете сгенерировать сколько угодно аккаунтов. Если вы уже скачали кошелек Ethereum или полный узел на компьютер или смартфон, вам, скорее всего, было предложено создать аккаунт. Возможно, приложение кошелька также предложило вам создать пароль для защиты ваших ключей с помощью шифрования. Как вы можете догадаться, эти ключи являются важным элементом для отправки и получения эфира. Для начала давайте взглянем на адрес вашего аккаунта, который также называется открытым ключом. У вашего открытого ключа есть соответствующий ему закрытый ключ, позволяющий получить доступ к вашему аккаунту. Этот закрытый ключ должен храниться в секрете и нигде не публиковаться. Аккаунты как в Биткойн, так и в Ethereum представлены длинными шестнадцатеричными адресами. Ethereum-адрес выглядит подобным образом: 0xB38AA74527aD855054DC17f4324FE9b4004C720C В протоколе Биткойн исходный шестнадцатеричный адрес кодируется с применением Base58 со встроенным номером версии и контрольной суммой, но изнутри выглядит также, как Ethereum-адрес. Вот пример Биткойн-адреса: 1GDCKfdTo4yNDd9tEM4JsL8DnTVDw552Sy Чтобы получать эфир или биткойны, вы должны предоставить отправителю свой адрес, вот почему он называется открытым (публичным) ключом. Конечно, такие строки трудно запоминать. Если вы начинающий программист, возможно, вы задаетесь вопросом, что тут происходит; что за неудобочитаемые буквенно-цифровые нагромождения? Опытные программисты скорее всего знают, что подобные открытые и закрытые ключи являются частью асимметричного шифрования ключей. Что есть адрес?Почему адреса аккаунтов, – которые предназначены для того, чтобы быть публичными, и которые многие люди даже размещают на своих веб-сайтах – почему они состоят из таких длинных шифрованных строк? Почему мы не можем просто обойтись именами пользователей? Ответ в том, что однажды в будущем вы, вероятно, сможете генерировать имена пользователей на простом английском языке, но они будут функционировать больше как имена доменов верхнего уровня. Вы будете арендовать имя у децентрализованного регистратора доменов, и оно будет перенаправлять на ваш реальный адрес аккаунта, почти так же, как домены верхнего уровня перенаправляют на нужный IP-адрес сегодня. Много планов для сети Ethereum находятся в процессе разработки, которые в конечном счете воспроизведут детали сегодняшней сети на базе HTTP, которую мы знаем. Чтобы узнать больше о дорожной карте Ethereum, перейдите к Главе 11. ПримечаниеАккаунт – это объект данных: запись в реестре блокчейна, индексированная по ее адресу, содержащая данные о состоянии учетной записи, например, о ее балансе. Адрес является открытым ключом, принадлежащим конкретному пользователю; это то, при помощи чего пользователи получают доступ в свои аккаунты. На практике, с технической точки зрения, адрес представляет собой хеш открытого ключа, а не сам по себе открытый ключ, но для простоты понимания лучше проигнорировать эту разницу. В EVM асимметричная криптография используется сетью для генерации и распознавания действительных адресов Ethereum, а также для “цифровой подписи” транзакций. В защищенной передаче данных асимметричная криптография используется для шифрования приватного обмена данными, так что даже если сообщения перехватываются злоумышленниками, они остаются нечитаемыми. В блокчейне схожий принцип работы; это метод для того, чтобы убедиться, что сообщения (в виде запросов на проведение транзакций в EVM) исходят от настоящего владельца адреса, а не от постороннего лица, пытающегося увести ваши средства. Где мой эфир?Важно отметить, что эфир не хранится на какой-либо определенной машине или в приложении. Ваш баланс эфира может быть запрошен, а эфир отправлен или получен с любого компьютера, на котором запущен узел или кошелек Ethereum. Даже если компьютер, на котором обитает ваш кошелек Mist, будет уничтожен, ничего страшного: все что вам нужно, это ваш закрытый ключ, и вуаля, вы можете получить доступ к своему эфиру с другого узла. Однако, если вы передадите кому-либо другому свои закрытые ключи, то этот человек сможет получить доступ к EVM и вывести ваши деньги даже без вашего ведома. С точки зрения сети, любой, у кого есть ваши закрытые ключи, это вы. Поскольку EVM является глобальной машиной, она не способна понять, с какого узла вы будете создавать транзакцию. В отличие от современных веб-приложений, Ethereum не ищет “доверенный” компьютер; он не отличит ваш смартфон от любого другого смартфона. Если это кажется необычным, подумайте об этом как о банковской ATM-системе, которая предоставляет доступ к счету любому, кто имеет номер вашей дебетовой карты и четырехзначный пин-код. Как упоминалось в Главе 1, утеря вашего смартфона или компьютера в результате кражи или их разрушение не означают потерю ваших денег, если были соблюдены следующие условия:
Сделать резервную копию закрытого ключа настолько просто, что вы можете скопировать и вставить его в текстовый файл, сохранив на USB-флеш-накопителе. Или можете записать его на бумаге. Далее в этой главе вы узнаете о других методах резервного копирования закрытых ключей. Метафора о банковском служащемВ некотором смысле, использование кошелька или полного узла можно представить как если бы вы заняли место кассира в банке и сами бы контролировали свои деньги. Не в том смысле, что вы можете взять бумажные деньги из кассы, а в том, что банковский служащий контролирует узел в компьютерной системе банка, который может исполнить транзакции в глобальной базе данных транзакций. Кассир контролирует базу данных банка, которая подключается к другим базам данных банка. В традиционной банковской системе, если взять в более широком смысле, бумажный чек – это письменная инструкция для кассира о совершении транзакции с использованием компьютерной системы банка. На чеке указан номер вашего счета и маршрутный номер. (В следующей главе мы больше поговорим о традиционной банковской системе). На данный момент важно лишь отметить, что огромные человеческие и вычислительные ресурсы требуются на то, чтобы взять ваш бумажный чек, превратить его в электронную транзакцию, отправить эту транзакцию другой стороне и затем обновить балансы обеих сторон. В криптовалютах эта устаревшая банковская система – совокупность человеческих и компьютерных процессов – полностью устранена за счет использования алгоритмического механизма согласования, работающего в одноранговой компьютерной сети. Расчеты и клиринг транзакций происходят в самой сети за считанные секунды (или, в случае с биткойном, минуты), в течение которых транзакции подписываются цифровой подписью и пересылаются узлом. Таким образом, для криптовалютной транзакции справедливо утверждение, что “расчет является торговой операцией”. В криптовалютах вы держите свои собственные активыКриптовалюты отличаются от фиатных валют, используемых традиционными банками, которые централизованы. Ваши токены виртуальны, а ваш баланс (и баланс других людей, держащих эфир) табулируется сетью блокчейна. Нет материальной валюты эфира или биткойна, хотя определенные третьи стороны создали коллекционные монеты с предварительно загруженной криптовалютой. Будьте предельно осторожны в отношении любого онлайн-сервиса или организации, которые предлагают держать, хранить или управлять эфиром, биткойнами или любой другой криптовалютой. Преимущество распределенных открытых систем заключается в исключении из транзакций контрагентов и предоставлении субъектам возможности проводить транзакции на одноранговой основе. Смысл в том, что вы можете хранить эти активы защищенным образом без участия кастодианов. Вместе с тем, мы живем в мире фиатной валюты. Даже если криптовалюты – это действительно будущее (а как вы узнаете из этой книги, есть потрясающее доказательство тому, что за ними будущее), возможно, пройдет несколько лет или больше в качестве переходного периода, в котором люди будут иметь и криптовалютный кошелек, и традиционный банковский счет. Подводя итог: не используйте никакие кошельки или онлайн-сервисы, которые хранят ваши закрытые ключи. Используйте только приложения, которые хранят ваши закрытые ключи на вашем устройстве. Далее в этой главе вы найдете рекомендации по настольным и мобильным кошелькам. Давайте вернемся к объяснению назначения Mist в качестве вашего шлюза на пути к EVM. Визуализация транзакций в EthereumЛучший способ для начинающих Ethereum-программистов визуализировать концепцию блокчейна – представить себе бумажный журнал учета хозяйственных операций, который можно синхронизировать с другими бумажными журналами учета по всему миру. Когда приложение кошелька пытается внести изменения в базу данных, это изменение обнаруживается ближайшим узлом Ethereum, который затем распространяет это изменение по всей сети. С течением времени все транзакции записываются в каждый реестр. Говоря абстрактно, это работает как полиграф, запатентованный в 1803 году Джоном Исааком Хокинсом. Это была первая “копировальная машина”, хотя в наше время так называют детекторы лжи. Как известно, Томас Джефферсон отозвался с похвалой об этом копировальном устройстве как о непревзойденном изобретении для своего времени: Полиграф похож на блокчейн по своей сути: множество согласованно работающих машин записывают одинаковые данные в одинаковые локальные базы данных. В Биткойн и Ethereum технологическая инновация заключается в том, что эти изменения состояния могут приходить не по порядку из-за сетевых задержек, но сеть способна приводить их в соответствие в единый реестр. Как упоминалось ранее, ваш адрес иногда называют вашим открытым ключом, но лучшей аналогией будет банковская ячейка с уникальным индивидуальным номером. Закрытый ключ – это единственная вещь во всей этой системе, называемая точным образом: он открывает ваш аккаунт и позволяет вам выводить из него эфир. Что такое эфир, по сути? Это всего лишь баланс в вашем аккаунте. Когда вы отправляете и получаете эфир, фактически ничто и никуда не отправляется и не принимается. В 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, разработчикам следует обратить внимание на эти три инструмента:
Расширение для Chrome MetaMask – это самый простой способ начать работать с Ethereum. Оно позволяет вам исполнять смарт-контракты и транзакции прямо в браузере, без необходимости поднимать полный узел 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 вместе с GethParity.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 упрощает отправку, получение и проверку балансов эфира без использования интерфейса командной строки. Чтобы отправить эфир, выполните следующие действия:
Вы увидите еще две опции, которые можно использовать: поле для ввода данных, куда можно внести дополнительный текст (например, номер заказа или комментарий с благодарностью) и ползунок для выбора комиссии за транзакцию (“transaction fee”). Назначение комиссии за транзакцию станет понятным в Главе 6. А сейчас оставьте ползунок в положении по умолчанию, и ваши транзакции будут обрабатываться без проблем. ПримечаниеИз практических соображений при отправке эфира ваш кошелек Mist должен быть полностью синхронизирован. Это означает, что вам может понадобиться подождать некоторое время, пока Mist не скачает блокчейн, чтобы вы могли быть уверены в том, что ваши транзакции будут обработаны без ошибок. Как вы узнаете позже, это не обязательно с технической точки зрения; узлы, которые какое-то время находятся офлайн, в действительности способны инициировать транзакции, но только при условии, что пользователь создает транзакцию через командную строку, с актуальной информацией об аккаунте, который используется. Для получения эфира необязательно, чтобы ваш узел был синхронизирован. Если вы захотели проверить свой баланс, вы можете спокойно нажать на “Запуск приложения” и пропустить процесс синхронизации во время запуска Mist. Понимание типов аккаунтов в EthereumПользователи взаимодействуют с блокчейном Ethereum при помощи аккаунтов. В профессиональной терминологии Ethereum аккаунты, созданные и используемые людьми, называются внешними аккаунтами (“externally owned accounts”). Они отличаются от аккаунтов для контрактов (“contract accounts”), адреса которых задействуются смарт-контрактами. ПримечаниеВнешние аккаунты не всегда контролируются людьми. Иногда они контролируются доверенными рабочими станциями, находящимися где-то в другом месте. Суть в том, что такие аккаунты являются внешними для EVM. Если это отличие приводит вас в замешательство, вспомните, что в сети Ethereum контракты могут действовать вместо людей. Вы можете отправить ценность (эфир) людям или вы можете отправить ее в адрес смарт-контракта, который будет действовать автоматически. Например, контракт на перевод денег может использовать депозит отправителя, разделить его на три части и отправить суммы дальше трем разным родственникам человека. Таким образом смарт-контракты могут действовать вместо людей для автоматизации задач внутри децентрализованной организации или быть посредником при проведении транзакции между физическими лицами, которые в противном случае нуждались бы в контрагенте. ПримечаниеИ аккаунты контрактов, и внешние аккаунты являются объектами состояния. Аккаунты контрактов содержат состояние баланса на аккаунте и хранилище контракта; внешние аккаунты содержат только состояние баланса. Вместе с тем, важно отметить, что сообщество разработчиков Ethereum на данный момент рассматривает предложение по созданию большего количества абстракций в EVM. Замысел состоит в том, чтобы абстрагироваться от неоднозначности, которую мы имеем сегодня, путем превращения всех аккаунтов в непосредственно смарт-контракты. Таким образом, пользователи свободны в определении своей собственной модели обеспечения безопасности. Повторим некоторые основы:
Резервное копирование и восстановление ваших ключейПродолжая работу в браузере Mist, после того, как он завершит синхронизацию с блокчейном, перейдите в меню “Аккаунты” (“Accounts”), затем “Резервное копирование” (“Backup”) – “Аккаунты”. Откроется папка. Внутри этой папки находятся текстовые файлы с длинными именами, которые начинаются с даты создания, например “UTC – 2016-09-01 (…)”. Каждый из этих файлов с простым текстом представляет собой учетную запись. Создайте резервную копию папки “keystore”, заархивируйте ее и поместите в безопасное место, например, на электронный USB-ключ или зашифрованный жесткий диск. Если вы откроете один из этих текстовых файлов, то обнаружите свою пару ключей, открытого и закрытого, отформатированную в определенной нотации. Для восстановления аккаунта на другом узле, не том, где вы создали аккаунт, просто поместите папку “keystore” таким же способом, как был описан выше. Вместо дублирования уже имеющихся там файлов, восстановление аккаунта Ethereum в Mist заключается в простом копировании текстового файла, содержащего закрытый ключ, внутрь папки “keystore” и перезапуске Mist. Для получения полного руководства посетите: http://backup.eth.guide http://restore.eth.guide. Если вы хотите найти папку “keystore” на своем жестком диске через терминал, то она обычно находится в следующих директориях:
Предыдущий процесс позволит забэкапить только ваши обычные аккаунты. Контракты кошелька хранятся в папке “application data”, так что сделайте еще и резервную копию этой папки (после того, как выполните упражнения из последующих глав):
Каждый раз, когда вы создаете новый аккаунт в Mist, обязательно берите файл с ключами и делайте его бэкап. Использование бумажных кошельковВы, вероятно, заметили в прошлом разделе, что узел Ethereum не обязательно должен быть подключен к сети, чтобы создать аккаунт. Это связано с тем, как сеть Ethereum генерирует адреса; она может создать новую действующую пару ключей с практически нулевым шансом, что такая пара ключей уже существует. Эта характеристика системы допускает существование того, что большинство веб-приложений не могут предложить: “бумажный” аккаунт. Такие сайты, как MyEtherWallet позволяют пользователям создавать пару ключей прямо в браузере, которые можно хранить на компьютере локально. Этот сайт также позволяет легко распечатать пару ваших ключей на бумаге для безопасного хранения. Это называется бумажным кошельком, потому что в нем содержится QR-код, позволяющий людям вносить средства на ваш Ethereum-аккаунт, просто просканировав QR-код с листа бумаги. Теоретически, вы можете собирать платежи в эфире таким способом, но вам нужно будет поместить закрытый ключ в экземпляр Mist (или другой клиент) для доступа к эфиру и отправки его куда-либо еще. Использование мобильных кошельковРастет число мобильных приложений кошельков для iOS и Android, которые хранят закрытые ключи в самом мобильном устройстве. Самым популярным и заслуживающим доверие на сегодняшний день является Jaxx, показанный на изображении 2-9, который был разработан канадской софтверной компанией Decentral. Их программное обеспечение работает на Mac, Linux, Windows и даже на нескольких других платформах, включая Firefox и Chrome. Decentral управляется соучредителем проекта Ethereum Энтони Ди Йорио. Jaxx, возможно, является лучшим выбором приложения кошелька для iOS и Android. В нем можно держать биткойны, эфир и некоторые другие криптовалюты. Внешний вид базового интерфейса, который вы видите на изображении 2-9, стал относительно стандартным UI для приложений кошельков. Пользователи получают свои адреса и могут наблюдать их в виде QR-кода. QR-коды облегчают отправку эфира или биткойнов в личном порядке, практически также, как Snapchat использует QR-коды, чтобы пользователи могли фолловить друг друга, просто сделав снимок кода другого пользователя. Здесь вы найдете список надежных приложений кошельков: http://wallets.eth.guide Прежде чем идти дальше, стоит отметить, что умение работать с QR-кодами – это все, что нужно для принятия участия в криптоэкономике. Чтобы отправить кому-либо эфир или биткойны через мобильный кошелек, вы нажимаете “отправить”, сканируете QR-код получателя (или вставляете в поле его открытый ключ) и вводите сумму. Адресат получит свой эфир за считанные секунды. Работа с сообщениями и транзакциямиВ Ethereum транзакции используются для обозначения изменений состояния в распределенной базе данных (то есть, в блокчейне). Транзакции изменяют балансы аккаунтов внутри EVM. Сообщения – это объекты данных, передаваемые по сети между смарт-контрактами, которые не обязательно приводят к каким-либо изменениям в цепочке. Например, когда один контракт проверяет баланс другого контракта. Транзакции изменяют состояниеТранзакция в Ethereum основана на элементе данных, несущем криптографическую подпись, который попадает в блокчейн и, как следствие, записывается на каждом узле сети. Каждая транзакция приводит к запуску сообщения для выполнения (завершения) этого изменения состояния, но сообщения также могут отправляться при помощи кода EVM. Эти сообщения являются приватными для сторон и никак не отображаются в блокчейне. Редактирование глобальной базы данныхОдна из причин, по которой блокчейн-сети типа Ethereum афишируются как неизменяемые, заключается в том, что как только транзакция записывается в глобальную общую базу данных, она не может быть отменена никакой другой транзакцией. В терминологии современных платежных систем это называется системой безвозвратных платежей. В североамериканских каналах платежей возврат платежа определяется как принудительный возврат средств владельцу счета, инициированный банком-эмитентом. Поскольку в Ethereum нет никакого центрального управляющего органа, то не к кому обращаться за помощью, если вы ошиблись с транзакцией. В настоящее время единственный способ отката транзакции – это форк состояния (“state fork”), для которого требуется, чтобы все узлы сети согласились на ручное возвращение транзакции. Это чрезвычайно сложный и практически неосуществимый сценарий, оставленный для случаев атак на всю сеть в целом, в той или иной форме. Причиной для подобной транзакционной модели является обеспечение безопасности. Сравните отправку криптовалюты с одного аккаунта на другой и процесс выписки традиционного бумажного чека. В случае с последним, банк получает данные об исходящей транзакции с вашего счета. Сначала банк проверяет баланс, чтобы убедиться, есть ли у вас средства для оплаты суммы, которую вы указали на чеке; если их нет, то банк владельца счета не увеличивает баланс счета. Вместо этого вам придется оплатить штраф за необеспеченный чек. Транзакции в сети Ethereum работают аналогичным образом. Система гарантирует, что сумма, исходящая из одного аккаунта, всегда будет добавлена на целевой аккаунт. Если по какой-либо причине отсутствует доступ до целевого аккаунта – например, по причине недействительной криптографической подписи – то баланс исходного аккаунта не будет уменьшен, и, следовательно, средства не будут потеряны. В Ethereum транзакции, сгенерированные извне, всегда подписываются криптографическими ключами отправителя и получателя, что позволяет эффективным образом обеспечивать, чтобы злоумышленники не могли создавать транзакции, а деньги не могли потеряться только лишь по причине неправильно набранного адреса. Итак, что же такое блокчейн?До сих пор мы тщательно избегали разбора концепции блоков и фокусировались на том, как инициируются транзакции. Далее мы обсудим клиринг и выверку транзакций сетью. Блок представляет собой единицу времени, охватывающую определенное количество транзакций, точно так же, как сердцебиение – это период времени, в течение которого определенное количество крови перемещается по телу живого организма. В течение этого периода записываются данные транзакций; по истечении этой единицы времени начинается новый блок. Блокчейн представляет собой историю изменений состояния сетевой базы данных в EVM. Процитируем документацию Ethereum: Блоки в блокчейне представляет из себя единицы времени; сам блокчейн является временным измерением и представляет собой полную историю состояний в дискретные моменты времени, обозначенные блоками в цепочке.3 Смарт-контракты могут быть загружены в сеть в определенном блоке, но могут в действительности не отправлять никаких сообщений или транзакций до значительно более позднего блока. Плата за транзакцииКогда человек отправляет транзакцию, EVM требуется небольшая комиссия для обработки транзакции. Это также справедливо и для загрузки смарт-контрактов: пользователи должны заплатить за вычислительные затраты, которые EVM потратит на выполнение каждого контракта. Принуждая пользователей платить за транзакции в EVM, вероятность появления экономически неэффективных и бесконечно работающих программ теоретически снижается. Эти издержки заложены в единицу под названием газ. Вы можете рассматривать газ в качестве показателя, указывающего на количество шагов, которые потребуется совершить EVM для завершения инструкций в транзакции. Если это простой перевод денег от одного человека другому, то комиссия за транзакцию будет небольшой, потому что для этого потребуется небольшое количество вычислительных шагов. В случае со сложным смарт-контрактом, однако, комиссия будет выше, поскольку EVM должна будет использовать свои глобальные ресурсы, чтобы выполнить код на Solidity из контракта и выяснить, какие транзакции затем необходимо будет выполнить в качестве результата. Отправители транзакций должны включать лимит газа, который позволит понять, сколько они готовы заплатить за исполнение своей транзакции. Полные узлы в сети, которые майнят или обеспечивают защиту сети за оплату, предоставляют аппаратные средства для множества этих транзакций, которые должны быть сопоставлены, подтверждены, взаимозачтены, урегулированы и сохранены в блокчейне, таким образом они получают комиссию за транзакцию, которую платит пользователь, когда он или она отправляет эфир другу или исполняет смарт-контракт. Майнеры, которые исполняют транзакцию, забирают комиссию себе, это неявный рыночный механизм в деле. Будет ли исполнена транзакция или нет, определяется количеством газа, которое отправитель готов заплатить. Если суммарное количество шагов превышает бюджет газа, запланированный на транзакцию, все шаги откатываются, и никакая часть транзакции не исполняется. Если пользователь отправляет транзакцию со слишком низкой транзакционной комиссией, она будет обработана только по прошествии определенного времени, либо вообще не будет обработана. В целом, любая операция стоит некоторого количества газа; большая часть операций стоит 1 единицу газа. Сложная транзакция может стоить сотни единиц газа. В любом случае, в долларовом эквиваленте все сводится к крайне малым суммам. Описание номиналовКак и в фиатных валютах, балансы и значения эфира имеют стандартизированные номиналы для малых единиц. Все балансы эфира стандартно выражаются в эфире (ether), а дробные части выражаются в wei. Например, 10.234 эфира (Ether) = 10,234,000,000,000,000,000 Wei. Если сравнить эфир с долларом, то wei – это как даймы, квотеры, пенни и никели. В таблице 2-1 подробно описаны номиналы wei. Таблица 2-1. Номиналы эфира. В столбце “Единица” (“Unit”) слева представлены эквивалентные номиналы биткойна в скобках.
Вы можете найти инструмент для конвертации эфира в wei на сайте: https://etherconverter.online Получение эфираСамый простой способ получить эфир, это конвертировать биткойны в кошельке Mist, как было описано ранее в этой главе. Вы можете зарабатывать эфир майнингом, но, как упоминалось ранее, это потребует начальной настройки; вы не можете майнить эфир внутри Mist, если только он не подключен к тестовой сети. (Это связано с тем, как тестируются и выполняются в сети смарт-контракты, вы узнаете об этом в Главе 5). Если вы хотите купить эфир за фиатную валюту, например, за доллары США, вам нужно будет сделать это на бирже или с помощью лицензированного обменника. Список онлайн-платформ, которые продают эфир, вы найдете по ссылке. Эфир в тестовой сети бесплатный, мы уже говорили об этом в данной главе. Инструкции по получению тестового эфира с помощью “крана” приведены в Главе 5 с более подробной информацией по созданию транзакций. Анонимность в криптовалютахБиткойны и эфир не являются анонимными платежными инструментами. Любой, кто знает ваш открытый ключ, может посмотреть в блокчейне и увидеть там информацию о датах и суммах в транзакциях, входящих и исходящих из вашего аккаунта. На основании этих данных можно составить паттерн транзакций, из которого будет возможно вывести вашу деятельность. Федеральные органы власти уже используют машинообучаемые транзакции для декодирования паттернов расходов на теневых рынках типа AlphaBay.4 Понятия анонимности, конфиденциальности и приватности в криптовалютах обычно смешиваются новичками, иногда это приводит к катастрофическим последствиям. Адреса Биткойн и Ethereum являются по своей сути псевдонимными; они не связаны с вашим реальным именем или какой-либо другой персональной информацией. Но каждая транзакция, которую вы отправляете, является публичной, в том смысле, что любой может увидеть ее в блокчейне. Вот почему публичные блокчейны расхваливают за их прозрачность; если вы знаете чей-то открытый ключ, вы можете посмотреть на все его транзакции. Данные внутри непосредственно смарт-контрактов закодированы, но не зашифрованы. Шифрование используется только для хеширования больших массивов данных и верификации отправителей и получателей транзакций. Тем не менее, вы можете зашифровать данные самостоятельно, перед тем как поместить их в смарт-контракт, если вы хотите использовать публичные цепочки Ethereum для личных целей. Как вы узнаете дальше, каждая транзакция в Ethereum оставляет место для дополнительной полезной нагрузки в виде текста, которое маркируется как “Input Data” (“Входные Данные”). Не испытывайте соблазн и не помещайте в него секретные данные для безопасного хранения, если только не собираетесь их предварительно зашифровывать. Но даже в этом случае хранение строк с паролями или PIN-кодов в блокчейне Ethereum – это в целом плохая идея, потому что он публичный, и записи из него никогда нельзя будет удалить. Любой может исследовать блокчейн типа Ethereum с помощью доступного через интернет приложения под названием обозреватель блоков (“blockchain explorer”). Обозреватели блокчейновКак и в случае с Биткойн, каждая транзакция, входящая и исходящая из EVM, записывается в публичный реестр. Транзакция, показанная на изображении 2-10, является типичной для блокчейна Ethereum. По нажатию на адрес отправителя или получателя вы сможете увидеть транзакции по этому адресу с момента его создания. Этот скриншот сделан с сайта Etherscan, но любой человек может разработать свой обозреватель блоков для публичной цепочки Ethereum. Все транзакции эфира и биткойнов публичны. Некоторые пользователи избегают связывания своей личности со своим открытым ключом и создают новый аккаунт для каждой транзакции. Другие же наоборот, используют один и тот же открытый ключ годами, рекламируя его в качестве канала по приему пожертвований или взносов на те или иные цели. ПримечаниеОбозреватели блокчейнов показывают вам историю записи всех транзакций в сети и позволяют вам связать воедино историю транзакций. Нет необходимости записывать вручную детали ваших транзакций! Как вы можете увидеть на изображении 2-10, транзакции имеют целый ряд атрибутов. Мы поговорим подробнее о том, что означают эти поля, в Главе 3, но на данный момент вот “сухой остаток”: отправка и получение эфира происходят приватно для участников, потому что открытые (публичные) ключи псевдонимны по свой сути – но эти транзакции не являются строго секретными, в том смысле, что все транзакции доступны для публичного просмотра в блокчейне. Легко отследить движение денег с одного аккаунта на другой. Итоги Главы 2До сих пор мы двигались быстро. В этой главе вы узнали больше информации о кошельках и клиентах Ethereum. Если вы начали синхронизацию вашего экземпляра Mist в процессе чтения этой главы, то вероятно, она еще даже не завершилась! Между тем, давайте готовиться к развертыванию смарт-контракта. Несмотря на то, что для следующей главы вам не нужен будет доступ к вашей машине на Ubuntu, стоит заняться ее настройкой для Глав 4, 5, 8 и 9. А пока что приступайте к следующей главе, в которой вы узнаете, как работает виртуальная машина Ethereum (EVM). Примечания к Главе 2
Post Views: 68 craftappmobile.com In Mist browser how can I move the data (blockchain) to another drive on Mac OSX?The default subdirectory where your Ethereum data files are stored on a Mac is ~/Library/Ethereum . Within this subdirectory, your blockchain data is stored in the subdirectory chaindata, i.e., ~/Library/Ethereum/chaindata . Let's assume that your new drive is mounted on ~/Volumes/Drive2 for this example. Here are 3 alternatives, the first being the safest. Copy your ~/Library/Ethereum/chaindata subdirectory into your new location /Volumes/Drive2/Ethereum/chaindata using the following command: mkdir /Volumes/Drive2/Ethereum cp -rpv ~/Library/Ethereum/chaindata /Volumes/Drive2/Ethereum/A copy of your Ethereum chaindata subdirectory will now be located in /Volumes/Drive2/Ethereum/chaindata. Rename your default Ethereum chaindata subdirectory for testing: mv ~/Library/Ethereum/chaindata ~/Library/Ethereum/OldChaindata_to_delete_when_testedSoft link your new chaindata subdirectory back to the default location: ln -s /Volumes/Drive2/Ethereum/chaindata ~/Library/Ethereum/chaindataTest out your Mist browser and delete your old chaindata directory ONLY AFTER your testing is successful: rm -rf ~/Library/Ethereum/OldChaindata_to_delete_when_testedCopy your ~/Library/Ethereum subdirectory into your new location /Volumes/Drive2/Ethereum using the following command: cp -rpv ~/Library/Ethereum /Volumes/Drive2/A copy of your whole Ethereum directory will now be located in /Volumes/Drive2/Ethereum. Rename your default Ethereum directory for testing: mv ~/Library/Ethereum ~/Library/OldEthereum_to_delete_when_testedSoft link your new Ethereum directory back to the default location: ln -s /Volumes/Drive2/Ethereum ~/Library/EthereumTest out your Mist browser and delete your old Ethereum directory ONLY AFTER your testing is successful: rm -rf ~/Library/OldEthereum_to_delete_when_testedNote that this method is not recommended as you will have sets of files and directories in two different locations, and you will have to remember to start geth manually with the correct parameters before running the Mist browser. You could make this safer using script files. In this method, you manually run geth before running the Mist browser. The Mist browser will connect to geth through the file ~/Library/Ethereum/geth.ipc using the IPC protocol, and you can specify on the geth command line the location of the Ethereum data directory. geth by default will create the IPC file within the Ethereum directory, but Mist will look for this file within the default Ethereum directory. Referring to How to connect Mist to a remote private network?, a copy of the geth program is packaged with your Mist browser. This can be found in: {MISTINSTALLDIRECTORY}/resources/node/geth/gethCopy your Ethereum directory to your new location: cp -rpv ~/Library/Ethereum /Volumes/Drive2/EthereumStart geth with the Ethereum directory pointing to your new location, while pointing the IPC file path back to the default Ethereum directory location. {MISTINSTALLDIRECTORY}/resources/node/geth/geth \ --datadir "/Volumes/Drive2/Ethereum" \ --ipcpath "~/Library/Ethereum/geth.ipc"After your successful testing, you should be able to remove the ~/Library/Ethereum/chaindata subdirectory.
ethereum.stackexchange.com |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|