Coin Lab

0 11616 0
Ethereum — Глава 1 (Введение )

Вступление

Добро пожаловать в Ethereum

Frontier — первый действующий релиз сети Ethereum. Фактически вы вступаете на засекреченную территорию, и вы приглашены протестировать и исследовать новые земли. Это очень опасно, на вашем пути могут попасться скрытые ловушки, банды грабителей-разбойников, готовых напасть на вас, но также имеется огромное пространство для новых возможностей. Для навигации по Frontier вам понадобится командная строка. Если вам не комфортно использовать ее, мы очень рекомендуем вам сделать шаг назад, понаблюдать издалека и подождать, когда станут доступны более удобные для использования инструменты. Помните, что не существует безопасных сетей, и во всем, что вы здесь делаете, вы должны полагаться только на себя.

Что такое Etherium (Эфириум)

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

[box type=»info» style=»rounded»]«Возможно, что…..одной машины будет достаточно для решения всех проблем….целого (мира)”, — Сэр Чарльз Дарвин, 1946г[/box] .

Мировой компьютер

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

Платформа интернет сервисов

[box type=»info» style=»rounded»]«Технология дает нам возможности, уменьшающие барьеры времени и расстояния- телеграф и кабель, телефон, радио и все остальное». – Эмили Грин Балч[/box]

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

  • Аутентификация пользователя, через интеграцию или криптографические подписи
  • Полностью настраиваемая логика платежей; легко создаваемая ваша собственная система, без участия сторонних лиц
  • На 100% устойчивый к ddos-атакам рабочий период компьютера, что гарантирует полностью децентрализованная блокчейн платформа.
  • На 100% устойчивый к ddos-атакам рабочий период компьютера, что гарантирует полностью децентрализованная блокчейн платформа.
  • Удобное хранение: забудьте о необходимости настраивать безопасные базы данных; Ethereum делает это за вас
  • Потрясающая способность к взаимодействию: все в экосистеме Ethereum может легко взаимодействовать со всем, от репутации до обращения валют
  • Свободная зона сервера: все ваше приложение можно сосредоточить в блокчейне,т.е. нет необходимости настройки или поддержки серверов; пусть пользователи сами за это платят, используя ваш сервис .

В течение последних двадцати лет мы наблюдаем ускорение развития сервисов и инфраструктуры, способствующее получению наивысших результатов при работе в команде, помогающему сделать управление бизнесом проще и дешевле, в большинстве своем, благодаря интернету. Любовь к сайтам типа eBay, Drivy и Airbnb делает создание магазина, компании по аренде машин или отеля гораздо более простым. Это платформы, позволяющие людям быстро реализовать свои идеи, если сервис, который они предлагают, подходит к шаблону, предлагаемому платформой. В этом смысле Ethereum является платформой для платформ. Он позволяет людям легко создавать инфраструктуру, позволяющую легко настраивать новые сервисы в интернете. Что важно, из-за отсутствия компании или какого-либо субъекта, ответственного за контроль Ethereum, стоимость управления инфраструктурой не включает какой-либо рентабельности, поэтому, вероятнее всего, мы увидим низкие цены. С приходом Mix IDE и браузера Mist, функциональность Ethereum как развивающейся платформы для интернет сервисов станет намного яснее.

Подписные социальные контракты

[box type=»info» style=»rounded»]«Это эра организации» — Теодор Рузвельт, 1912г.[/box]

На более абстрактном уровне, это способность обеспечивать умную организацию в отношении групп лиц, работающих вместе по определенной причине. По простейшему сценарию, у нас имеется два человека, работающих вместе для успешного осуществления торговли. В конечном итоге Ethereum мог бы использоваться для управления странами. Где-то в промежутке существуют группы людей, желающих организовать кружки по уходу за детьми, коллективы, снимающие фильмы, дискуссионные группы, религиозные общины, и т.д., и все они должны придумывать правила совместной работы. Возможно, более сложной задачей будет применить правила и заставить их действовать, особенно из- за разнообразия характеров, возможностей и мотиваций человеческой расы. Другими словами, как вы сможете остановить Джо, держащего камеру, или Дейва, не имеющего ничего общего с уходом за детьми? Ethereum предоставляет платформу, на которой можно определять правила и применять их в соответствии с постоянно растущей степенью технологических усовершенствований. Например, камера могла бы слушать блокчейн и записывать только тогда, когда приложение по производству кинофильмов DApp одобрит код доступа Дейва. Народное финансирование является ключевым примером организационных инструментов продвижения. Оно обеспечивает пару действительно важных функций: способ совместной работы людей по определенной причине (.в этом случае предоставление доли наличных человеку или группе) и механизм эффектного взаимодействия людей с потенциально крупными компаниями (подобными игровым студиям) . Первое следует из предыдущего параграфа, а последнее – очень показательно, т.к. в общем люди могут только общаться с крупными организациями на условиях организации, которые часто по умолчанию сводятся к «игнорированию»; таким же образом вы игнорируете бактерии на своей коже. На данном этапе вас могут раздражать получатели народного финансирования, которые получают ваши деньги и тратят их полностью недопустимым и поэтому неэффективным способом. Тем не менее, довольно сложно заставить операционную компанию действовать от вашего имени против получателя. В конце концов, провайдер сервиса народного финансирования — это, скорее всего, крупная компания, и нет универсального механизма, при помощи которого вы сможете эффективно с ней общаться, если она этого не хочет. Ethereum может помочь, позволяя вам определить основные этапы работы после финансирования, или условия поэтапной оплаты общей привлеченной суммы, и затем заставить данные условия работать на вас. С течением времени у нас будут более креативные способы взаимодействия Ethereum с реальным миром и возможностью Ethereum проверять, что определенные этапы работы завершены. Данные способы выйдут за рамки очевидного, подобные «30% людей, финансирующих проект (в денежном эквиваленте) проголосовали, что этап пройден».

Часть децентрализованной революции

[box type=»info» style=»rounded»]«Не важно, за кого вы голосуете, правительство всегда проходит» — No matter who you vote for, the government always gets in» — The Bonzo Dog Doo-Dah Band, 1992 год[/box]

С точки зрения философии, это следующий шаг повторной децентрализации интернета. Децентрализованная система – это то, к чему самостоятельно может присоединиться и участвовать любой человек, система, в которой все участвуют в управлении и поддержке, система, из которой любой участник может самостоятельно уйти, и когда они уходят, система продолжает функционировать, не смотря на это. В децентрализованной системе нет лица, которое может помешать участнику или деспотично подвергать цензуре контент или использование. Интернет был разработан, чтобы быть децентрализованным, но то, как мы его используем, стало чрезвычайно централизованным, до момента, когда цензура и исключение принимаются и ожидаются. Технология блокчейна, представленная Сатоши Накамото, с экспериментальным применением системы переводов простой стоимости, известная как bitcoin (биткоин), представляет собой лучшую цифровую систему из имеющихся (после самого интернета) для администрирования взаимодействий мульти-пользователя без необходимости центрального координирования или надзора. По сути, децентрализованная система является самостоятельным органом, устанавливающим правила (например, «вы можете потратить свои деньги только однажды» в биткоинах, или «какое-бы правило вы не запрограммировали в вашем смарт контракте» в Ethereum), т.о. участники могут быть уверены, что правила будут выполняться, не подвергаясь опасности коррупции, взяточничества, семейственности, политической предвзятости, недопущения или необоснованного исключения. Ethereum позволяет людям достигать нейтрально осуществимых договоренностей полностью межсетевым способом. Сейчас необходимо помнить, что Ethereum может действовать только внутри своих цифровых пределов; Ethereum не исключает необходимость внешнего орана власти для отправления правосудия по поводу споров вне его области.— «другая сторона ударила меня в лицо после введения контракта Ethereum, который не следовало» — это нонсенс, но правила для данной ситуации существуют – но что на самом деле делает Ethereum — он позволяет нам раздвинуть границы покрытия цифрового царства.

Заключение

Ethereum — это собрание не локализованных синглтоновых структур программных данных. Что это означает будет зависеть от того, откуда вы пришли, о то, где вы находитесь, будет намного лучше с использованием Ethereum.


Релиз Frontier

FRONTIER ЕЩЕ НЕ АКТИВЕН

Обратите внимание: если проблемы  Milestone Frontier не закрыты на 100%, мы не готовы к выпуску. Проблемы отслеживаются на github.

Frontier — первый в серии релизов.

Оговорка

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

[unordered_list style=»red-x»]

  • Нам известно о нестабильности и недостатках в согласованности клиента, некоторые из которых могут оказаться полезными
  •  Как кураторы, мы оставляем за собой полное право игнорировать блоки по своему усмотрению
  •  Как кураторы, с финального блока, который мы определяем самостоятельно, мы сохраняем все неконтрактные (т.е. незашифрованные) балансы аккаунтов выше стоимости в 1 ETH в генерации Genesis block. [/unordered_list]

Запущенные компоненты

Цель Frontier — воплощение полной ноды ethereum, с интерфейсом командной строки под кодовым названием geth. Устанавливая и запуская geth, вы можете принять участие в действующей в тестовом режиме сети ethereum , майнить, переводить средства между адресами, создавать контракты и отправлять транзакции.

[box type=»alert»]ВНИМАНИЕ: перед использованием geth или взаимодействием с действующей в тестовом режиме сетью Frontier ethereum, убедитесь, что вы ознакомились с официальными сопроводительными записками  и понимаете все риски.[/box]

Помимо geth , go CLI (интерфейс командной строки), релиз Frontier содержит следующие компоненты:

[unordered_list style=»bullet»]

[/unordered_list]

Ресурсы:


Обзор компонентов Frontier

Возможности

Устанавливая и запуская geth, вы можете участвовать в действующей тестовой сети ethereum и

  •  майнить реальные эфиры ether (10% от нормального вознаграждения)
  •  переводить средства между адресами
  •  создавать контакты и отправлять транзакции
  •  изучать историю блока
  •  и многое, многое другое

Интерфейсы

[unordered_list style=»star»]

  • Консоль Javascript: geth может быть выпущен с интерактивной консолью, обеспечивающей среду выполнения javascript , демонстрирующую программный интерфейс javascript API для взаимодействия с вашей нодой. Программный интерфейс консоли Javascript включает в себя web3 интерфейс программы javascript Ðapp API, так же как и дополнительный интерфейс программы администрирования API.
  • Сервер JSON-RPC: geth может быть выпущен на базе сервера json- rpc , демонстрирующего JSON-RPC API
  • Опции командной строки документируют параметры и субкоманды командной строки.

[/unordered_list]

Документация основного сценария использования

Примечание: покупка и продажа эфира ether на биржах здесь не обсуждается.

Оговорка

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

[unordered_list style=»star»]

  • Нам известно о нестабильности и недостатках в договоренностях consensus flaws клиента, некоторые из которых могут быть пригодны для эксплуатации
  • Как кураторы, мы оставляем за собой полное право игнорировать блоки по своему усмотрению
  • Как кураторы, с финального блока, который мы определяем самостоятельно, мы сохраняем все неконтрактные (т.е. незашифрованные) балансы аккаунтов выше стоимости в 1 ETH в генерации Genesis block.

[/unordered_list]

Сообщество и поддержка

Ethereum в социальных сетях

IRC

IRC каналы Freenode channels:

  • #ethereum: общие вопросы
  • #ethereum-dev: вопросы разработки, специфические вопросы и обсуждения
  • ##ethereum: вопросы не по теме, неформальное общение
  • #dappdevs: канал Dapp разработчиков
  • #ethdev: сервер построения и т.д.

Вступление от разработчиков

 ПРИМЕЧАНИЕ: Данные инструкции предназначены для людей, кто хочет поучаствовать в изменениях кодировки сервиса Go source. Если вы просто хотите запустить ethereum, воспользуйтесь обычным руководством по инсталяции

 Сборка и тестирование

Среда Go

Предположим, что вы   установили go, GOPATH настроен.

Примечание: У вас должна быть рабочая копия, соответствующая $GOPATH/src/github.com/ethereum/go-ethereum. Также обычно требуется отладка ветки develop  (вместо master).

Т.к. go не использует относительной траектории для импорта, работа на любой другой директории не будет эффективной, т.к. траектории импорта будут прилагаться к $GOPATH/src, и если, библиотеки lib не существует, необходимо загрузить версию на at master HEAD.

Скорее всего, вы будете работать от своей ветки) fork go-ethereum, предположим, от github.com/nirname/go-ethereum. Клонируйте или переместите вашу ветку на правильное место:

[box]git clone [email protected]:nirname/go-ethereum.git $GOPATH/src/github.com/ethereum/go- ethereum

[/box]

Godep для управления зависимостями

go-ethereum использует Godep для управления зависимостями.

Установка godep:

[box]go get github.com/tools/godep [/box]

Убедитесь, двоичные что файлы go находятся в вашей исполняемой директории:

[box]PATH=$GOPATH/bin:$PATH [/box]

godep должны быть добавлены ко всем вызовам go build, install и test.

В другом случае, вы можете добавить директорию go-ethereum Godeps directory к вашей текущей  GOPATH:

[box] GOPATH=godep path:$GOPATH [/box]

Построение исполняемых файлов

Переключитесь на репозиторий  e go-ethereum (Godep настроен на локальную папку Godeps folder ). Каждая оболочка/исполнимый файл, найденный в the cmd directory можно построить индивидуально.

Построение Geth (Интерфейс уровня вызовов CLI)

Примечание: Geth (клиент командной строки ethereum) — фокус Frontier релиза.

Для построения интерфейса уровня вызовов CLI:

[box] godep go install -v ./cmd/geth [/box]

Ознакомьтесь с  документацией по использованию Geth

Построение Mist (интерфейс-GUI)

Примечание: Mist официально не выпущен как часть Frontier

Что касается интерфейса GUI, вам необходимо  установить QT5 и настроить переменные.

В системе OSX, установив of qt5:

[box]

export PKG_CONFIG_PATH=/usr/local/Cellar/qt5/5.4.0/lib/pkgconfig

export CGO_CPPFLAGS=-I/usr/local/Cellar/qt5/5.4.0/include/QtCore/5.4.0/QtCore

export LD_LIBRARY_PATH=/usr/local/Cellar/qt5/5.4.0/lib

[/box]

Более подробные инструкции смотрите на  wiki

После выполнения этих предварительных условий, компилируйте mist с:

[box] godep go build -v ./cmd/mist [/box]

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

[box]

cd $GOPATH/src/github.com/ethereum/go-ethereum/cmd/mist && mist [/box]

or supply an absolute -asset_path option:

[box] mist -asset_path $GOPATH/src/github.com/ethereum/go-ethereum/cmd/mist/assets [/box]

Git flow

Чтобы облегчить себе жизнь, попробуйте  git flow  он производит настройки и оптимизирует ваш поток работы.

Тестирование

Тестирование одной библиотеки:

[box]

godep go test -v -cpu 4 ./eth

[/box]

Рекомендуется использовать опции –cpu (разрешенное количество ядер) и — v (протоколирование даже при отсутствии ошибки).

Тестирование только несколькими методами:

[box]

godep go test -v -cpu 4 ./eth -run TestMethod

[/box]

Примечание: здесь запускаются все тесты с префиксом TestMethod, т.о. если у вас есть TestMethod, TestMethod1, то работают оба!

Запуск сопоставлений, например.:

[box]

cd bzz godep go test -v -cpu 4 -bench . -run BenchmarkJoin

[/box]

более подробно смотрите на  флагах тестирования go

За информацией по интегральному тестированию обращайтесь на страницу испытаний wiki

Добавление обновление зависимостей

Для обновления зависимости от версии (например, чтобы включить новое upstream исправление), запустите

[box]

go get -u <foo/bar> godep update <foo/…>

[/box]

Для обслуживания новой зависимости, добавьте ее к проекту как нормальную, после чего запустите

[box]

godep save ./…

[/box]

Изменения в  папке Godeps  должны производиться вручную, а затем фиксироваться Для упрощения попробуйте  git flow, выполняющий все настройки и оптимизирующий ваш поток работы.

Участие

Для отслеживания проблем используется только github. (Пожалуйста, включите фиксацию и ветвь в отчет о проблеме)

Запросы пула должны по умолчанию фиксироваться на ветви develop. Ветвь master используется только для завершенных стабильных основных релизов.

Отслеживание стека

Шифр по умолчанию использует pprof на локальном порте хостинга 6060, если geth запускается опцией  —pprof. Т.о., загрузите http://localhost:6060/debug/pprof для просмотра пирамиды (кучи) heap, запущенные функции, и т.д. Кликнув на дамп стека функций go (кликнуть на http://localhost:6060/debug/pprof/goroutine?debug=2) вы можете создать отслеживание, что будет полезным для отладки.

Обратите внимание, при запуске множественных вхождений geth, этот порт будет работать только для первого выпущенного вхождения. IЕсли вы хотите создать отслеживания стеков для остальных вхождений, вам необходимо запустить их, выбрав альтернативный профпорт pprof port. Убедитесь, что вы перенаправили stderr в файл лога.

[box]

geth -port=30300 -loglevel 5 —pprof —pprofport 6060 2>> /tmp/00.glog geth -port=30301 -loglevel 5 —pprof —pprofport 6061 2>> /tmp/01.glog geth -port=30302 -loglevel 5 —pprof —pprofport 6062 2>> /tmp/02.glog

[/box]

В качестве альтернативы, если вам захочется убить клиентов (в случае если они зависают и или тормозится синхронизация, и т.д.), но тоже имеют отслеживание стека, вы можете использовать -QUIT signal with kill:

[box]

killall -QUIT geth

[/box]

Это выведет на печать отслеживания стеков для каждого вхождения в соответствующий лог файл.

Форматирование кода

Источники форматируются в соответствии сj Стилем Форматирования Go .

Инструкции по Dev


Вернуться к оглавлению

Теги

Блокчейн глазами IBM: зачем нужен проект HyperLedger и когда мир перейдёт на новую технологию В четверг, 10 ноября, IT-гигант IBM представит своё видение того,…
admin by admin
0 7447 0
Взгляд Microsoft на блокчейн-технологию: от слов к коду Представляем одного из ключевых спикеров Blockchain & Bitcoin Conference Russia…
admin by admin
0 4167 0
Блокчейн в банковской системе: взгляд Сбербанка Сбербанк России – один из лидеров банковского рынка по внедрению…
admin by admin
0 5009 0

Leave a Reply

Войти
Регистрация
Отправить сообщение