Блокчейн технологии - просто о сложном. Алгоритм эфир


Что алгоритм PoS значит для майнеров Эфириума?

Официальный запуск Эфириума произошел в 2015 году, но в настоящее время платформа находится на полпути, основываясь на своей дорожной карте, и скоро планируются значительные улучшения. Одним из усовершенствований является то, что от алгоритма PoW Ethereum переходит на PoS майнинг. Это произойдет с реализацией «Каспера» после улучшения «Метрополиса».

Доказательство работы или доли?

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

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

Ethereum переходит на PoS (подтверждение владением) по разным причинам. Некоторые из них:

  • более высокая масштабируемость,
  • более простая реализация протоколов,
  • улучшенная экономика протокола,
  • экологичность.

Когда Ethereum переходит на PoS

План перехода к PoS еще не полностью детализирован, однако в настоящее время известно следующее:

Во-первых, он придет после «Каспера». Это произойдет после «Метрополиса» (этап 3 из 4 в дорожной карте) и, скорее всего, во время «Сиринити» (4-я ступень из 4). «Metropolis» ожидается к концу 2017 года, а «Serenity» — потенциально может быть в 2018. Переход будет происходить постепенно. Первоначально 1 из каждых 100 транзакций будет проверяться через PoS, что со временем будет увеличиваться, поскольку разработчики тщательно контролируют сеть. В конце концов, все транзакции будут проверяться через PoS.

Что алгоритм PoS значит для майнеров Эфириума?

Что это значит для майнеров?

Пока что не так много. Ethereum все еще работает с PoW, так как Metropolis все еще разрабатывается и тестируется. Постепенное увеличение сложности добычи заставит перейти к доказательству доли. Однако PoS еще находится в разработке. Помимо этого, майнеры Ethereum могут рассчитывать еще на 6 месяцев.

Что происходит с майнерами, когда PoS полностью реализована? Майнерам Ethereum придется переключиться на другую валюту, если они хотят продолжать со своим оборудованием для добычи. В качестве альтернативы, они могут перейти на PoS и продолжить пассивно зарабатывать эфир; или предоставить свою вычислительную мощность вычислительным сетям, таким как Golem. Несмотря на это, ожидается, что монеты, поддерживаемые PoW, еще будут находиться в ближайшем будущем, поэтому пока не стоит беспокоиться.

В долгосрочной перспективе, если PoS будет чрезвычайно успешна, все больше и больше монет могут принять этот алгоритм. Это может потенциально привести к тому, что PoW устареет. Это маловероятно, но возможно.

crypto-fox.ru

Что такое эфир криптовалюта простыми словами, как работает, примеры, смарт контракты

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

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

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

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

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

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

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

Как работает Эфириум

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

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

Как работает Эфириум

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

Как работает Эфириум

Контракт живет в блокчейне и храниться в специальном формате и написан на высокоуровневом языке программирования. Для написания контрактов для Эфириум используются несколько языков. Наиболее популярный сейчас язык - Solidity. Этот язык, похожий на Javascript. Язык со статической типизацией, поддерживает наследование, библиотеки и сложные пользовательские типы.

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

Эфириум позволяет нам делать следующее:

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

Как работает Эфириум

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

Как работает Эфириум

Примеры умных контрактов (смарт контрактов) на Эфириум

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

Пример из виртуальной среды:

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

Примеры умных контрактов (смарт контрактов) на Эфириум

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

Примеры умных контрактов (смарт контрактов) на Эфириум

Еще пример. Покупатель покупает в интернет магазине товар. Создает умный контракт со следующими условиями:

  • Зарезервировать сумму на покупку с моего лицевого счета
  • Ожидать уведомления от службы доставки 3 дня
  • При получении автоматического уведомления от службы доставки, совершить денежный перевод на счет интернет магазина
  • Если доставка в течении 3 дней не получена, снять блокировку суммы и вернуть деньги на счет

Примеры умных контрактов (смарт контрактов) на Эфириум

Примеры умных контрактов (смарт контрактов) на Эфириум

Еще один пример умных контрактов. Документы на владения автомобилем оцифрованы и занесены в блокчейн систему. Каждый участник системы имеет набор документом на владение. У кого-то набора не будет (если нет автомобиля), будет просто пустая «папка» с документами в блокчейн системе. Например в системе указано, что Алиса владеет автомобилем Audi A6. Алиса решает продать этот автомобиль. Она создает контракт и указывает условия сделки:

  • Покупатель должен иметь нулевую или положительную историю покупок автомобилей
  • Покупатель должен перечислить сумму N за автомобиль на счет Алисы
  • Когда сумма перечислена, произвести перевод документов владения на счет покупателя

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

Примеры умных контрактов (смарт контрактов) на Эфириум

Примеры умных контрактов (смарт контрактов) на Эфириум

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

  • Арендатор должен иметь положительный баланс денег на своем счету
  • Арендатор должен иметь положительную или нулевую история («карму») съема квартир
  • Если арендатор перевел нужную сумму на лицевой счет, то послать сигнал дверному замку (или в целом умному дому) на разблокировку квартиры для ключа арендатора
  • Если в текущем месяце не произведена оплата, послать сигнал замку на блокировку

Это примерный перечень условий, которые будут работать полностью автоматически без участия человека.

Примеры умных контрактов (смарт контрактов) на Эфириум

Примеры умных контрактов (смарт контрактов) на Эфириум

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

Виртуальная машина Эфириум

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

Таким образом, он служит платформой для множества различных типов децентрализованных приложений блокчейн, не ограничиваясь криптовалютами. Сердце Эфириум – Виртуальная Машина Эфириум (EVM), которая выполняет код произвольной алгоритмической сложности. База данных блокчейн поддерживается и обновляется каждым узлом, подключенным к сети. Каждый узел сети Эфириум запускает виртуальную машину у себя и выполняет инструкции, указанные в контракте.

Узлы сети и виртуальные машины Эфириум:

Виртуальная машина Эфириум

Транзакция создается одним из узлов и отправляется соседним узлам, которые выполняют ее на виртуальной машине EVM:

Виртуальная машина Эфириум

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

Виртуальная машина Эфириум

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

Что такое Эфир

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

Что такое Эфир

Что такое Газ

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

Для того, чтобы получить Газ и совершать транзакции обычным узлам сети нужно иметь у себя на счету Эфир.

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

Что такое Газ

Майнинг Эфира

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

Алгоритм доказательства работы называется Ethash (модифицированная версия алгоритма Dagger-Hashimoto).

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

Алгоритм Ethash больше завязан на память, что усложняет создание ASIC устройств для майнинга. Это достигается тем, что алгоритм требует выбор подмножеств для расчетов из фиксированного файла, размером в несколько гигабайт, который называет DAG файл (Directed Acyclic Graph – направленный ацикличный граф, специальная структура в виде файла для вычисления хешей). DAG файл полностью меняется каждые 30 тысяч блоков или 125 часов. Период в 125 часов называется эпохой.

DAG файл всегда создается заново при первоначальном старте майнинга или при смене эпох.

Курс криптовалюты Эфир

bcinfo.tech

Объясняем крипто-алгоритмы майнинга -

Многие интересуются техническими основами криптовалют, но немногие знакомы с криптографией. Для того, чтобы докопаться до сути происходящего в биткойн-протоколе приходится продираться через дебри криптографических терминов, загадочных и неудобных акронимов типа SHA-256, Scrypt, base58check, RIPMD-160 и т.п. Мы уже освещали ранее некоторые аспекты биткойн-криптографии. В этой статье мы постараемся рассказать об одной из наиболее важных ее сторон – крипто-алгоритмах майнинга. 

Классика: SHA-256

Начнем наш обзор, конечно же, с классического SHA-256, с которого все начиналось — именно на этом алгоритме построен биткойн-майнинг, как и майнинг подавляющего большинства биткойн-клонов (альткойнов).

Так что же это такое этот самый SHA-256? Это криптографическая хэш-функция, которая была разработана нашими «друзьями» – Агентством национальной безопасности США. Подождите, не спешите впадать в прострацию, здесь не о чем волноваться. Потерпите немного, обещаю, что скучать вы точно не будете.

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

Как мы все знаем, при майнинге SHA-256 криптомонет, мы решаем поставленную задачу при помощи CPU, GPU или специализированного процессора. Процессы преобразования отображаются в интерфейсе программы, предназначенной для майнинга, например, в виде строки «Accepted 0aef41a3b». Значение 0aef41a3b — это и есть хэш. Он является как бы подписью большого набора данных (собственно, очередного блока транзакций с добавленным к нему случайным числом). Эта короткая строка как бы представляет собой блок, который состоит из нескольких тысяч, если не миллионов, подобных строк.

Это также объясняет то, почему вам нужно решить перебором множество задач, прежде чем удастся отыскать нужный хэш для нового блока. Ведь мы ищем не какой попало хэш, а тот, который начинается на определенное количество нулей. У вас имеется один шанс на тысячу, десятки, сотни тысяч, миллионы решений, что случайно получившийся хэш будет иметь нужное количество нулей в начале. Сколько именно? Определяется параметром сложности, которое задает ваш майнинг-пул. Заранее понять, получится у вас «красивый хэш» или нет, невозможно. Это похоже на игру в лотерею, но с машинами, которые могут выполнять вычисление выигрышной комбинации быстрее и лучше, чем любой из нас.

Вы считаете, что для решения задач, связанных с хэшированием при использовании протокола SHA-256, вам потребуется мощное аппаратное обеспечение? В этом есть определенный смысл. Чем больше используется вычислительной мощности, тем лучше, так как увеличиваются шансы на добычу монет. Но имейте в виду, что вы не единственный, кто занимается майнингом. Есть люди, которые располагают более производительным аппаратным обеспечением. Не расстраивайтесь, у вас есть все шансы на выигрыш. Это похоже на игру в лотерею, вы никогда не знаете, когда повезет!

Теперь вернемся к алгоритму SHA-256. Криптовалюта — это не единичный пример, где используется SHA-256. Есть несколько протоколов, о которых вы, скорее всего, слышали и которые используют данный алгоритм. Это протоколы SSL, SSH, PGP и многие другие. Каждый раз, когда вы заходите на защищенный веб-сайт с помощью сертификата SSL, используется SHA-256. Бьюсь об заклад, вы не задумывались об этом, не так ли? Все мы узнаем что-то новое со временем!

Именно алгоритм SHA-256 реализован во всех выпущенных на настоящий момент специализированных ASIC-майнеров, ASIC-оборудование для других алгоритмов майнинга пока только разрабатывается. Помимо Биткойна, майнинг, основанный на SHA-256, используется в ряде других цифровых валют-клонов. Например, такие альткойны как Peercoin и Namecoin его используют. В последнее время наблюдается всплеск новых SHA-256 монет: Zetacoin, Ocoin, Tekcoin и десятки других.

Задачки посложнее: Scrypt

scryptАлгоритм SHA-256 — не единственный алгоритм, который интересен для майнеров. Вторым по популярности майнинг-алгоритмом в мире криптовалют является Scrypt. История появления Scrypt связана с тем, что уже на ранних этапах существования биткойна стало очевидно, что простота функции SHA-256 позволяет сделать аппаратные решения, которые будут выполнять такие вычисления гораздо эффективнее, чем на обычном компьютерном процессоре (CPU). И действительно, биткойн-майнинг очень быстро мигрировал с CPU на графические процессоры (GPU), затем на программируемые аппаратные устройства (FPGA), после чего вышли специально под него заточенные микросхемы (ASIC). Высокая концентрация специализированной ASIC-мощности представляет проблему для децентрализованной валюты.

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

По своей сути, Scrypt-майнинг не сильно отличается от биткойн-майнинга. На вход подается блок данных, к нему применяется хэш-функция, на выходе мы пытаемся получить «красивый хэш». Вот только сама хэш-функция гораздо сложнее в вычислении. Данный алгоритм использует более значительное количество оперативной памяти (памяти с произвольным доступом), чем SHA-256. Память в Scrypt используется для хранения большого вектора псевдослучайных битовых последовательностей, генерируемых в самом начале алгоритма. После создания вектора его элементы запрашиваются в псевдослучайном порядке и комбинируются друг с другом для получения итогового ключа.

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

Эта искусственно созданная сложность, весь этот трудоемкий вычислительный процесс и требования к памяти приводят к тому, что любое специализированное оборудование для Scrypt-майнинга не будет на порядки эффективнее универсальных устройств (GPU, CPU). В идеале, добыча монет, основанных на Scrypt, должна осуществляться на одном (или нескольких) компьютерах с большим количеством памяти. Здесь большое значение уделяется видеокартам. Если вы рассматриваете покупку видеокарт для майнинга с использованием Scrypt протокола, то наилучшим вариантом станет приобретение изделия от фирмы ATI. В силу архитектурных различий, производительность майнинга на видеокартах ATI сейчас гораздо выше, чем на Nvidia, хотя в будущем все может измениться.

В конечном счете, все сводится к следующему: протоколы SHA-256 и Scrypt работают ради одной цели – получить перебором «красивый хэш», который даст нам (или, скорее, пулу, на который мы работаем) право удлинить блокчейн и получить за это вознаграждения. Они просто решают поставленную задачу по-разному: в SHA-256 упор на технические возможности аппаратного обеспечения — чем выше производительность, тем лучше результат. А Scrypt требует  в работе большой объем памяти. Соответственно, производительность напрямую зависит от размера оперативного запоминающего устройства (ОЗУ) и видеокарт, установленных в компьютере.

Самым известным альткойном из использующих в майнинге Scrypt является Litecoin. Есть и Dogecoin, Digitalcoin, Franco, Bottlecaps и многие другие. Популярность Scrypt-монет, особенно лайткойна, существенно возросла после того как биткойн-майнинг массово мигрировал на ASIC и бывшие майнеры с видеокартами остались не у дел — их оборудование не может конкурировать со специализированными комбайнами. Вот они и приспособили свои видюшки к лайткойн-майнингу, или к добыче другой экзотики, которую пока еще можно сбыть доверчивым горе-инвесторам, ожидающим чуда.

Крипто-танцы: Scrypt-Jane

Знакомьтесь – это Джейн! Нет, нет, она и Scrypt не состоят в браке, хотя между ними все же есть некие родственные отношения. Scrypt-Jane подобно любой другой девушке любит хорошо провести время. А ее способности к перемешиванию данных и приятели-алгоритмы унесут вас в самые экзотические места! Не понимаете? Сейчас все объясню.

Scypt-Jane поддерживает не менее трех различных систем поточного шифрования. Прежде всего, у нас есть Salsa20/8. Нет, это не латиноамериканский танец — на самом деле, это довольно простая функция. Основная ее работа заключается в приеме 192-байтной строки (из букв или цифр) и дальнейшем ее преобразовании в 64-байтную строку Salsa20 (х).

Непонятно, не так ли? Хорошо, постараюсь использовать меньше теории. Salsa20 состоит из двух частей: потокового шифра для шифрования данных (это, должно быть, звучит более знакомо) и функции сжатия (так называемый алгоритм Rumba20), предназначенной для сжимания строки в 192 байта до 64-байтного значения. Используя лексикон «чайника», можно сказать так: ваша строка может быть длиннее 64 байт, пока не сравняется со значением в 192 байта, при этом строка будет сжата (читай: конвертирована) до 64-байтной строки.

Теперь, когда мы немного разогрелись после сальсы и румбы, пришла пора вводить вторую функцию – ChaCha20. Честно, это не я выдумываю такие названия. ChaCha20 очень похож Salsa20: это такой же поточный шифр. И, тем не менее, он предлагает некоторые дополнительные услуги, такие как увеличение устойчивости к криптоанализу. Он также улучшает перемешивание данных на раунд. То есть, если вы занимаетесь добычей криптовалюты в составе майнерского пула, то вы можете увидеть, что один майнерский раунд (период времени, в течение которого пул находит один блок) может составлять либо длинный, либо короткий промежуток времени. Длительность подобных раундов частично зависит и от улучшенного перемешивания, предлагаемого ChaCha20 из Scrypt-Jane. Есть и другие факторы, влияющие на снижение времени раунда, но об этом позже.

И, наконец, последняя, но не менее важная третья функция перемешивания данных — Salsa6420/8. Сексуальное название, не так ли? Salsa6420/8 является доказательством правильности концепции 64-байтной версии Salsa20/8. Это просто улучшенная версия Salsa20/8, которая позволяет работать с более высокобайтными блоками. Я мог бы продолжить в том же духе выдавать подробную техническую информацию, но, боюсь, что половина из вас, мои дорогие читатели, уже заснула, а остальные принялись за игрушки на своих смартфонах, так что давайте не будем заострять на этом внимание. Просто помните о том, что у Scrypt-Jane имеется три отличных «миксовых партнера».

Но вернемся к реальности! Scrypt-Jane также поддерживает несколько хэш-функций. Одна из них уже очень хорошо известна всем нам – это SHA-256. Она также поддерживает более продвинутый вариант SHA-512. Другие поддерживаемые хэш-функции включают BLAKE256/512, Skein512 и Keccak256/512 (или просто SHA -3).

BLAKE256-512 отличается очень простой разработкой для применения и опирается на уже проанализированные нами компоненты: структуру HAIFA (не будем ее рассматривать в данный момент) и основную функцию ChaCha (которую мы затронули ранее). Наиболее характерные особенности BLAKE – это высокий запас надежности (довольно важная характеристика, но о ней не сейчас) и высокопроизводительная универсальность (что тоже очень важно для майнеров). Что нужно запомнить о BLAKE, так это то, что она может и будет работать быстрее, чем SHA- 2(56) на ряде платформ.

С другой стороны, у нас же есть Skein512. Тех, кто придумывает такие великолепные имена, нужно наградить медалью… Skein («лялька» в переводе на русский) представляет собой хэш-функцию, представленную на конкурсе криптографических хэш алгоритмов. Она сочетает в себе скорость, безопасность, простоту и гибкость. Все мы это очень любим, не так ли? Она также очень эффективна на различных платформах как в аппаратной, так и в программной среде. Вы можете найти алгоритм Skein и на маленьких смарт-картах, с которыми большинство из нас имеет большой опыт работы.

Да уж, танцевально-криптографическая терминология тут просто зубодробительная. Но хватит теории, давайте посмотрим на то, что Scrypt-Jane может сделать для нас. Scrypt-Jane имеет свой ​​собственный вариант масштабирования сложности проблем. Scrypt-Jane использует N-фактор (который является числом), и это число определяет количество памяти, необходимой для решения задач. Значение числа N-фактора возрастает через определенные промежутки времени. Обычно это происходит тогда, когда в блокчейне найдено определенное количество блоков. Всякий раз, когда это число N-фактора увеличивается, снижается эффективность добычи криптовалют, так как требуется все больший объем памяти на выполнение тех же задач. Говоря простым языком, количество выполненных задач снизится, то есть упадет и вероятность нахождения решения.

Scrypt-Jane первоначально была предназначена для майнинга только на процессорах CPU как еще более замороченная замена Scrypt. Но увы, доминирование CPU-майнинга и тут длилось недолго. Майнеры, работающие на GPU, как вороны кружили вокруг Scrypt-Jane монет, стремясь увеличить эффективность добычи и, соответственно, прибыль. Вы можете подумать, что даже в случае уменьшения прибыли, вы сможете вести добычу с GPU в течение более длительного времени по сравнению с майнингом на CPU? Боюсь, что вы ошибаетесь. В конце концов, значение N-фактора будет настолько высоко, что для добычи на Scrypt-Jane GPU будут менее эффективным, чем процессоры CPU. В связи с этим, Scrypt-Jane не так-то легко перевести в специализированный ASIC-майнинг, как SHA-256 или даже Scrypt.

Одной из первых Scrypt-Jane-монет, получивших некоторую популярность, была Yacoin (да, да, Yet Another Coin — «еще одна монета»), правда, популярность этой монеты быстро упала вместе с уменьшением интереса к ней майнеров. Совсем недавно мы были свидетелями появления монет, подобных Copperbars (эффективность майнинга на GPU также упала), и самые свежие дополнения к списку – это валюты TIX и Cryptonerd.

Далее везде

Три описанных алгоритма покрывают более 90% всего зоопарка криптовалют, но, конечно же, есть и другие. Чуть ли не еженедельно появляются предложения относительно все более новых и хитромудрых алгоритмов майнинга — все и не осветить. Из относительно новых можно упомянуть особо «асикоустойчивый» алгоритм Dagger, который собираются использовать в криптовалютной платформе нового поколения Ethereum.

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

Источник: coinspot

Подписывайтесь на новые видео нашего канала!

Поделиться ссылкой:

Related

bitnovosti.com

Сложность майнинга Ethereum (эфира)

Подробности Опубликовано: 05.11.2016 13:34

ethereum logoСложность майнинга или block difficulty важный параметр для всех криптовалют основанных на механизме консенсуса POW (доказательство работы). Сложность майнинга на алгоритме POW  в первую очередь интересует конечно же майнеров, доход которых напрямую зависит от изменения этого показателя. Сложностью так же интересуются инвесторы и трейдеры, т.к. стабильный рост сложности обычно говорит об увеличении популярности той или иной криптовалюты. Ярким представителем POW является конечно же Bitcoin, но сегодня мы рассмотрим как изменялось со временем сложность майнинга Ethereum, резко захвативший второе место в иерархии криптовалют.

 

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

etehereum difficulty

 Рост сложности майнинга Ethereum имеет некоторые свои особенности о которых хотелось бы рассказать более подробно. Уже на самом старте сложность имела большое значение порядка 1,3 терахеша, как и для любой другой новой разрекламированной технологии. На дальнейший процесс развития событий наложило свой отпечаток новый алгоритм шифрования Ethash и большое количество эфиров розданных с первым блоком всем участникам первичной продажи эфиров в 2014 году. Новая принципиально новая технология заложенная в Ethereum достаточно продолжительное время позволяла заниматься майнингом только в Соло режиме на трудно устанавливаемом кошельке, что изначально оттолкнуло множество майнеров и позволило держать сложность на одном уровне даже учитывая тот факт, что именно Эфир был самым выгодным для майнинга за весь 2015 год. Который кстати говоря стал стал черной полосой после "феерического" 2013-2014 года, пока не появился Ethereum. 

В начале 2016 года стоимость эфира стала стремительно расти в пиках до 9000% от минимального значения, что собственно и привлекло множество майнеров к уже развитой на тот момент инфраструктуре (майнеры, пулы, инструкции). Весна 2016 года была на пиках выгодности майнинга за всю его историю, что конечно же отразилось на графике - теперь на нем устойчивое направление вверх. Пока на сцену в середине лета не вышел конкурент в лице LBRY, перетянувший на себя значительные мощности с эфира просадив его сложность с 61TH до 48TH, но как видите по графику звездный час майнеров на LBRY длился не долго, мощности не только резко вернулись но и стали так же резко расти выше до 102TH на конец октября 2016 года.

За стабильный выгодный майнинг на протяжении всего 2016 года эфиру можно отдать премию "лучший майнинг 2016 года". Однако сегодня на эту роль претендует достаточно дерзкий новичек Zcash,уже высосавший в свою сеть почти половину мощности из Ethereum (мощность упала со 102 до 57 TH). Станет ли Zcash новым королем майнеров или его постигнет та же учесть что и LYBRY нам покажет только время.

cryptoage.com

Алгоритм - трансляция - Большая Энциклопедия Нефти и Газа, статья, страница 1

Алгоритм - трансляция

Cтраница 1

Алгоритм трансляции состоит в следующем.  [1]

Алгоритм трансляции может работать с литеральными образцами, если ввести в дерево сопоставления новый тип вершин вместе с проверкой значения литерала.  [2]

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

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

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

Требует ли это возможности специального рассмотрения в алгоритме трансляции.  [6]

Транслятор Е - Норе - - FC использует алгоритм трансляции сопоставления с образцом, представленный в гл.  [7]

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

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

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

Анализ нелокальных сочетаний совмещен с семантическим анализом и основан на табличном алгоритме трансляции с шестью типами реакций на сочетания различных ограничителей. Исходными являются синтаксические диаграммы и таблица приоритетов, причем числовые константы, имена переменных, подпрограмм и меток обрабатываются отдельно.  [11]

Кобол как бы рассчитан на то, что его семантика должна быть задана с помощью алгоритма трансляции. Многие программисты, пользуясь коболом, видят сквозь него будущую машинную программу.  [12]

КОБОЛ как бы рассчитан на то, что его семантика должна быть задана с помощью алгоритма трансляции. Многие программисты, пользуясь КОБОЛом, видят сквозь него будущую машинную программу.  [13]

С другой стороны, независимость Алгола-60 от машины в ряде случаев приводит к чрезмерному усложнению алгоритмов трансляции и к снижению качества рабочих программ. Стремление составителей трансляторов упростить транслятор и повысить качество объектных программ вынуждает их отказываться от реализации некоторых свойств Алгола-60 и, следовательно, порождает еще большее разнообразие диалектов языка. Для обеспечения совместимости различных диалектов Алгола-60 в 1964 г. было предложено Подмножество Алгол-60 [28] - стандартный упрощенный вариант языка. В 1968 г. опубликован язык Алгамс [24], принятый в СССР и странах СЭВ в качестве стандартной версии Алгола-60. Алгамс является подмножеством Алгола-60, дополненным средствами ввода - вывода и обмена.  [14]

Рассмотрены задачи и методы автоматизации процесса программирования для управляющих ЦВМ, языки программирования, а также алгоритмы трансляции и контроля взаимосвязанных программ большого объема. Приведена типовая структура системы автоматизации программирования и выпуска технической документации на алгоритмы и программы. Проанализированы основные проблемы автоматизации отладки алгоритмов и программ управляющих ЦВМ, структура и технологическая схема автоматизированной системы отладки.  [15]

Страницы:      1    2    3

www.ngpedia.ru

Алгоритм - трансляция - Большая Энциклопедия Нефти и Газа, статья, страница 3

Алгоритм - трансляция

Cтраница 3

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

Метод синтаксических подпрограмм ориентирован на описание синтаксиса конкретного входного языка. Отсюда вытекает основной недостаток этого метода, такой же, как и у прямых методов - сильная зависимость транслятора от конкретного входного-языка, поскольку набор синтаксических конструкций и семантика входного языка определяют как набор синтаксических подпрограмм, так и алгоритм трансляции, используемый в каждой подпрограмме. Заметим, что привязанность к конкретному языку имеет и определенное преимущество: транслятор можно сделать более эффективным.  [32]

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

Эти задачи трудно решить за один просмотр исходной программы, поскольку при трансляции каждой команды нужно знать значения ( адреса), сопоставленные именам и литералам, выступающим в качестве операндов, а для выявления всех имен и литералов и присваивания им значений ( адресов) требуется предварительно просмотреть всю исходную программу. Правда, в ходе одного просмотра можно присваивать значение каждому новому имени в момент его появления, но тогда придется временно задерживать присваивание адресов именам, которые еще не появлялись в поле названия, потому что значение имени зависит от положения машинного эквивалента именованного оператора в объектной программе. Это усложняет алгоритм трансляции. Поэтому чаще используют двухпросмотровые ассемблеры. В частности, ассемблеры ЕС ЭВМ - двухпросмотровые.  [34]

В принципе описываемый транслятор пригоден для перевода с нескольких входных языков, грамматики которых - грамматики предшествования, на несколько выходных языков. Транслятор, переводящий с М входных языков на N выходных, должен иметь М экземпляров таблиц порождающих правил и матриц предшествования и М X N наборов семантических подпрограмм. Однако за универсальность транслятора в классе грамматик предшествования приходится платить сравнительно невысокой эффективностью алгоритмов трансляции.  [35]

Разумеется, не во всех описаниях процедур-функций наличие побочного эффекта проявляется столь прозрачно, как в приведенных примерах. В общем случае значение выражения, содержащего указатель функции с побочным эффектом, можно правильно определить при знании алгоритмов трансляции.  [36]

Прямые методы трансляции ориентированы на конкретные входные языки. Это преимущественно эвристические методы, в которых на основе некоторой общей руководящей идеи для каждой конструкции входного языка подбирается индивидуальный алгоритм трансляции. Этапы синтаксического и семантического анализов здесь обычно четко не разделены. Алгоритмы трансляции, применяемые в прямых методах, как правило, существенно зависят от входного языка.  [37]

Полностью не зависимые от машины методы трансляции до сих пор найти не удалось. Однако использование в процессе трансляции машинно-независимого промежуточного языка позволило сделать значительную часть алгоритма трансляции с конкретного входного языка не зависимой от машины. В частности, в рассмотренном методе трансляции с Алгола-60 ( глава 4), основанном на стеке с приоритетами, алгоритм перевода на промежуточный язык ( в обратную польскую запись) не зависит от конкретной машины. С машиной связана лишь вторая часть алгоритма трансляции - генерирование машинных команд.  [38]

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

Страницы:      1    2    3

www.ngpedia.ru

Основы методов трансляции | Основные понятия

Трансляция программы – перевод программы с одного языка программирования на другой. Обычно трансляция программы, написанной на машинно-независимом языке, в эквивалентную программу на машинном языке конкретной ЭВМ. Трансляция программы осуществляется самой ЭВМ специальной программой, называемой транслятором.

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

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

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

Большинство теоретических разработок и методов для конструирования компиляторов возникло в 1970-х гг., а некоторые из них – даже раньше. В то же время развитие языков программирования постоянно ставило перед создателями компиляторов новые задачи: от определения языка ALGOL 60 до удовлетворения потребностей возникших позже языка Ada и языков объектно-ориентированного программирования. Современные требования Java к сетевой безопасности, эффективности и переносимости вновь ставят перед создателями компиляторов новые проблемы. В то же время появление Java Virtual Machine дает великолепный пример промежуточного языка, позволяющего проиллюстрировать различные аспекты генерации кода и распределения памяти.

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

На размер и количество модулей компилятора влияет "размер" исходного языка. Хотя точного определения, что такое размер языка, не существует, представляется очевидным, что компилятор для языка типа Ada или PL/1 больше и сложнее в реализации, чем компилятор для небольшого языка типа Ratfor – язык типографской печати математических формул.

Еще одним важным фактором является то, насколько будет расширен исходный язык в процессе построения компилятора. Хотя спецификации исходного языка и выглядят нерушимой данностью, только немногие из языков остаются неизменными в течение всей жизни компилятора. Эволюционируют даже естественные языки, хотя и достаточно медленно. Например, Fortran достаточно заметно изменился со времени своего появления на свет в 1957 г.; циклы, строки Холлерита и условные инструкции в языке Fortran 77 совсем не такие, как в первоначальном варианте.

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

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

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

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

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

3ys.ru