Что такое Хэширование? Под капотом блокчейна. Habrahabr блокчейн


Руководство по блокчейн для маркетолога / Хабр

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

Это происходит с подачи таких крупных компаний, как IBM и Comcast, а также небольших стартапов вроде MadHive и Rebel AI.

Почему возникла эта тема?

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

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

«Мощнейшим свойством Блокчейн является возможность его применения в сетях, где есть недоверие между заинтересованными сторонами», утверждает CTO группы «Media & Entertainment» компании IBM, Питер Гуглилмино.

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

Что же может дать блокчейн для рекламной индустрии?

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

Вот типичный пример применения блокчейн: нечистоплотный селлер может обмануть рекламодателя, создавая ряд клонов официального адреса площадки (и выдавая их за подлинные – прим. перев.). Например, CNN-trending.com или NBCcom.com. Блокчейн может быть использован для защиты от подобных действий, при помощи создания реестра «настоящих» URL принадлежащих определённой площадке. Список таких URL будет удостоверен уникальной цифровой подписью, которую невозможно подделать. Список доменов площадки, на которых будет размещена реклама, при этом, будет браться непосредственно из блокчейн, минуя каких-либо посредников.

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

Эта проблема в большей степени касается ТВ-баинга, и связана с наличием множества сторон сделок и необходимостью упорядочить взаимодействия между ними. С этой целью в июне 2017 года IBM совместно Integral Ad Science, Premion и adtech-стартапом MadHive, сформировали консорциум AdLedger. Задача этого консорциума состоит в том, чтобы построить блокчейн-платформу для обмена данными, ориентированную на ведущих рекламодателей ТВ.

Comcast также представил основанный на блокчейн альянс вещателей, включающий Altice USA, Cox, NBCUniversal и Disney. Основная идея в том, что указанные площадки будут обмениваться данными и записывать информацию об этих транзакциях в blockchain. Таким образом, рекламодатель сможет больше доверять данным в сегментах для таргетированной рекламы.

Процесс основан на «умных» контрактах, которые могут управлять операциями в blockchain. Так что, если Comcast и Cox имеют различное количество инвентаря для специфического контента или аудитории, или если рекламодатель хочет внести в чёрный список определённые источники трафика, это всё учитывается на уровне смарт-контракта для каждой компании. Там же определяется доступ к этим данным извне.

Реселлинг инвентаря: NYIAX («найекс»), стартап инициированный биржей Nasdaq, развивает идею продажи инвентаря как фьючерсных контрактов на базе blockchain. По мнению основателей, этот механизм сделает закупки боле комфортными для рекламодателей. В случае успеха, NYIAX может дать площадкам больше гибкости в подготовке коммерческих предложений. Рекламодатели могли бы бронировать инвентарь на более долгий период времени, а площадки поощрять выкупленные заранее объёмы скидками. И в этом случае, blockchain будет служить в качестве реестра состоявшихся броней и их стоимости.

Блокчейн всё ещё в зачаточном состоянии

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

Блокчейн-платформа для обмена данными Comcast, как ожидается, не будет запущена до 2018 года. Для проекта AdLedger все еще формируется рабочая группа, которая будет прорабатывать концепцию и спецификации API для своей платформы.  NYIAX продолжает работать над концепцией с партнерами.

«Мы говорили с сотнями площадок, со всеми крупными медиагруппами и агентствами, и это медленный, методичный процесс. Должен быть поэтапный подход», — сказал генеральный директор NYIAX Лу Северин, - «Пройдёт некоторое время, прежде чем мы перейдём к стадии запросов на конкретные проекты со стороны клиентов агентств».

Но blockchain технология достаточно интересна и медиагруппы сейчас думают, как ее применить. IAB «в активном поиске возможностей» blockchain и ведет переговоры со стартапами, утверждает Аланна Гомберт, генеральный директор IAB Tech Lab.

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

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

Главные препятствия впереди

Разработчики блокчейн сталкиваются с жесткими препятствиями при попытках создать решения для рекламы. Главное из них: это слишком медленно, чтобы масштабировать. Большие рекламные платформы, такие как AppNexus или DoubleClick Ad Exchange обрабатывают миллионы показов объявлений в секунду. Bitcoin, тем временем, обрабатывает около пяти транзакций в секунду.

«Распределенный характер блокчейна и возможность внесения изменений с любого компьютера в сети по всему миру – это одновременно польза и вызов», утверждает Уилл Латрел, соучредитель и бывший технический директор компании Integral Ad Science (разработчик блокчейн-платформы Amino).

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

Подтверждение сделки в блокчейн занимает 10-30 секунд, говорит Мэнни Пуэнтс, генеральный директор AdTech стартапа Rebel AI. «Должно пройти время, прежде чем технология будет способна на скорости до миллисекунд, используемые в онлайн-рекламе».

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

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

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

Слишком много прозрачности?

Бренды и медиагруппы требуют прозрачности от Digital — но чрезмерная прозрачность может быть вредна.

«В дополнение к масштабу и скорости, есть проблема прозрачности, поскольку она усложнит переговоры», считает Латрел.

Рассмотрим на примере блокчейн-инициативы Comcast. Участвующие в ней игроки хотели бы сохранять в блокчейн некоторые данные для некоторых рекламодателей, но они не горят желанием, чтобы другие СМИ на этой платформе видели, какие данные они размещают (и кто именно), а также сколько они стоят. Они также не хотят, чтобы их DSP, SSPs или информация о партнёрах были доступны другим.

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

Первопроходцы в блокчейн для маркетинга

MadHive: Один из первых рекламных блокчейнов. MadHive одним из первых внедрил партнёрскую схему для проектов Over on Top (вариант IPTV). IBM является первым крупным партнёром MadHive в рамках консорциума AdLedger. Предполагается, что благодаря этому объединению, до конца 2017 года удастся провести ряд сделок нового типа, в которых данные продаются за другие данные, без закупок собственно рекламного инвентаря. «Исследование новых технологий ТВ – вот на что сейчас тратятся большие средства», сказал основатель компании Адам Хелфготт.

Rebel AI: Блокчейн AdTech стартап, которые развивает идею прямого взаимодействия между площадками и баерами агентств, либо DSP. Использование продукта позволит отказаться от посредников, что по словам основателя Мэнни Пуэнтса: «Более похоже на проверенные временем отношения покупателей и продавцов поставляющих рекламный продукт». Стартап позиционирует себя, как как безопасный канал закупки рекламы, позволяющий избежать проблем с фродом и качеством трафика, свойственных открытым программатик платформам.

MetaX: MetaX экспериментирует со смесью блокчейн и решений вне рамок этой технологии для применения на рынке рекламы. Компания работает с некоммерческой платформой adChain с открытым исходным кодом, которая базируется на технологиях блокчейн Ethereum. Metax пытается генерировать прибыль для материнской компании за счёт монетизации приложений созданных на adChain. Например для обмена данными или атрибуции инвентаря. Стартап тесно сотрудничает с Data & Marketing Association (DMA).

Comcast: Обладает обширным портфелем эфирных и кабельных ТВ-каналов представленных на всей территории США. Comcast использует блокчейн для прямого обмена данными без взаимодействия с устаревшей сетью посредников, таких Acxiom и Experian. Кроме того, при помощи этой модели, медиа-гигант стремится отойти от услуг стартапов в области адресной ТВ рекламы, которые добавляют ценность, но забирают прибыль. Платформа «Comcast, Blockchain Insights» выйдет из беты не ранее, чем через полтора года. Однако, даже при таких отдалённых перспективах запуска, Comcast непрерывно обучает партнёров и развивает технологии интеграции платформ.

NYIAX: Опираясь на запатентованную блокчейн-технологию биржи Nasdaq, стартап NYIAX создаёт продукт, который позволит трейдерам покупать и продавать права на будущие онлайн размещения. Это позволит площадкам упаковать гарантированные медиа-ресурсы даже лучше, чем в случае годовых сделок с ТВ-рекламой. Хотя вероятно при внедрении этой технологии NYIAX ещё столкнётся с сопротивлением площадок, которые возможно будут не готовы продавать свой продукт в качестве отдельных единиц на открытом рынке. 

IBM: ИТ-гигант находится в относительно сильной позиции, чтобы создать Bluemix, набор облачных сервисов, включающих блокчейн движки, напоминает Гуглилмино. В то время как блокчейн-стартапы с трудом ищут маржу там, где ещё нет клиентских бюджетов, IBM может вкладываться в R&D и вовсю применять свои достижений в технологиях, связанных с другими отраслями, такими как здравоохранение и финансы.

habr.com

Секреты EmerCoin / Блог компании Microsoft / Хабр

Недавно мы рассказали об использовании технологии блокчейна в реальных проектах на примере EmerCoin, одного из первых партнеров-провайдеров сервиса блокчейн в Azure Marketplace. Продолжая цикл статей, посвященных этой теме, разберемся глубже в технологиях EmerCoin (EMC) и основных отличия ядра Emer от других криптовалют.

Cеть Emer, как и другие пиринговые сети, обладает неограниченным масштабированием, и чем больше в ней участников – тем эффективнее и стабильнее она работает. Поэтому на её основе можно делать не только Enterprise решения, но и решения всемирного масштаба.

Цикл статей «Погружение в технологию блокчейн»

1. Серия материалов, посвященных технологии Emer: 1.1. Секреты EmerCoin. 1.2. Децентрализованная нецензурированная система доменных имён. 1.3. Инфраструктура публичных ключей всемирного масштаба. 1.4. Децентрализованная беспарольная система безопасности. 2. Быстрые и безопасные транзакции. 3. Экосистема цифровой стоматологии. 4. Борьба с контрафактными товарами. 5. Взаимное страхование животных. 6. Что такое ICO и как его провести. 7. Loading…

Введение

Сначала разграничим понятия:

Emer – это технология, сеть и инфраструктура. EmerCoin – кредитные единицы, которые циркулируют внутри сети Emer.

Принято, что словом «EmerCoin» называют оба этих понятия, поэтому тоже будем следовать общепринятой семантике, применяя слово «Emer», только для того, чтобы подчеркнуть, что речь идёт именно о технологии, а не расчётно-бухгалтерском аспекте. Под словами «монеты», «деньги» и тому подобное, будут подразумеваться безналичные кредитные единицы, обращающиеся в распределённой сети криптовалюты.

История EmerCoin

Исторически, ядро EmerCoin было унаследовано от ядра Peercoin, которое в свою очередь было унаследовано от Bitcon. Peercoin добавил в свой проект ключевое нововведение – механизм Proof-of-Stake выработки консенсуса, создав гибридный механизм консенсуса, использующий два базовых механизма – и Proof-of-work(POW) и Proof-of-Stake(POS). Рассмотрим эти механизмы и сам консенсус подробнее.

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

Что в такой распределённой сети считать голосом?

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

Следующая идея – IP-address. Тоже не работает, так как любой провайдер может симулировать большую сеть, и снова создать полчища «мёртвых душ». Для голосования требуется ограниченный ресурс, который не может быть тиражирован и фальсифицирован.

Сатоши Накамото в системе Bitcon предложил в качестве такового Proof-of-Work – доказательство посредством вычислительной мощности. Действительно, если у вас есть компьютер вычислительной мощностью X, вы его можете виртуально разделить на N суб-компьютеров, но их суммарная вычислительная мощность так и останется X. То есть вес голоса владельца такого компьютера не увеличится.

Потом были предложены другие концепции консенсуса, ориентированные не на использование процессора, а другой вычислительный ресурс – например ёмкости дисковых накопителей, Proof-of-Capacity. Подобные концепции опираются на ограниченность физического ресурса – вычислительной мощности или дисковой ёмкости. Естественно, в процессе развития экосистемы криптовалюты это приводит к «гонке вооружений», когда майнеры вкладываются в соответствующее майнерское оборудование до тех пор, пока не достигнут паритета расходов на амортизацию оборудования и доходов от майнинга. После чего плачут «майнить стало невыгодно, крипта – надувательство».

Прорывной идеей Санни Кинга, автора Peerсoin, была концепция Proof-of-Stake, в которой в качестве ограниченного голосующего ресурса выступали монеты, контролируемые самой же системой. Это позволило выйти из ловушки: «гонка вооружений материальных ресурсов», заменив материальный ресурс (процессор, диски) на нематериальный – монеты. Это в свою очередь прекратило бессмысленный расход материальный ресурсов, невозвратно расходуемых на майнинг (электричество, оборудование).

Безопасность сети

Каждый механизм консенсуса по отдельности имеет свои недостатки. Так, например, не очень популярную PoW-криптовалюту можно атаковать, временно арендовав огромные вычислительный мощности (что несколько раз было проделано), а POS-криптовалюты потенциально уязвимы против других видов атак, например, атакой из глубины. Для защиты от последней применяются дополнительные механизмы, например, динамические контрольные точки (dynamic checkpoints), и в целом механизм POS показал себя более устойчивым, чем POW.

Тем не менее, гибридный механизм консенсуса Peercoin считается наиболее безопасным, и использовали именно его как основу для своего проекта. Для успешной атаки на Emer, атакующий должен иметь и 51% всей вычислительной мощности сети, и 51% всей денежной массы. Это создаёт для атакующего два барьера разной природы, которые и защищают сеть от компрометации.

Также на выбор повлияло то, что Peercoin основано на классическом и зрелом коде Bitcoin, который не только глубоко проанализирован множеством экспертов в плане безопасности, но и против которого было проведено множество безуспешных криптоатак. Emer ориентировались на то, что код Bitcoin обладает хорошей поддержкой, и его и далее можно будет использовать для развития своего проекта.

Кроме того, Emer исповедуют промышленный подход к своим проектам, который предполагает максимальное следование уже существующим стандартам и спецификациям. Так как де-факто, технологии и API Bitcoin являются стандартами криптоиндустрии, компания стремится поддерживать максимальную совместимость с ними, и соответственно использование Bitcoin в качестве основы ядра.

EmerCoin: подобия и отличия

В этом разделе вы узнаете какие компоненты криптовалюты остались неизменными, а какие были изменены. Отличия будут рассмотрены относительно Bitcoin, как наиболее освещённого проекта. Ниже вы можете увидеть план-схему компонентов EmerCoin.

POW+POS vs POW

Как было указано выше, EmerCoin имеет гибридный механизм консенсуса, который и определил стартовую точку проекта. Этот гибридный механизм был нами унаследован из Peercoin с единственным изменением – большим сдвигом в сторону POS. По сути, Emer является POS-криптовалютой, в которой механизм POW оставлен по соображениям безопасности, и играет хоть и важную, но вспомогательную роль, а примерно 80% блоков закрываются именно POS-ом.

Sha256

Хеш-функция закрытия блока применена та же самая, что и в Bitcoin и Peercoin – sha256. Причина заключается в том, что sha256 является стандартом и продолжает обеспечивать достаточный уровень безопасности для поддержания стабильной работы сети.

Также в силу того, что майнинг sha256 давно уже производится специализированными процессорами ASICs, можно быть увереными в двух вещах:

  • Не произойдёт революции сложности, вызванной появлением специализированного оборудования для другого алгоритма, которая может привести к встряске сети и консолидации майнинговой мощности в руках владельцев нового оборудования.
  • EmerCoin против майнинга на универсальных компьютерах, так как при таком подходе могут пострадать непричастные. Как известно, до появления ASICов был ряд вирусов, которые использовали вычислительные мощности заражённых компьютеров для майнинга биткоинов. Появление ASICов сделали такие вирусы экономически не выгодными. Тем не менее, опасность сохраняется для других криптовалют, которые майнятся на универсальных компьютерах.

10 минут

Время закрытия блока остаётся таким же, как и в Bitcoin и Peercoin – 10 минут. Сатоши выбрал удачный параметр, и сокращение времени блока может привести к большому количеству коллизий с orphan-блоками и потере стабильности сети. Рассмотрим это утверждение подробнее.

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

Можно возразить, что есть прекрасный протокол Ghost, применяемый в Etherium, и ему не страшны форки, так как orphan-блоки (у них они называются uncles) хоть и не попадают в результирующий блокчейн, но участвуют в голосовании за ту или иную версию цепочки, поэтому там время блока может быть в районе 20 секунд.

В свою очередь, EmerCoin считает, что этот протокол имеет ряд уязвимостей. Например, сеть под протоколом Ghost может быть подвержена сетевому шторму – эффекту, возникающему в широковещательных Ethernet-сетях при достижении некоей критической нагрузки. Проще говоря, это произойдёт потому, что время обновления сети пропорционально нагрузке на сеть, то есть трафику. При достижении критической нагрузки (большом числе транзакций в секунду), время обновления станет сравнимо с временем генерации блока. При этом различные майнеры независимо произведут блоки-кандидаты на включение в блокчейн. И вот – сюрприз – эти блоки будут содержать те же самые транзакции. И эти большие блоки снова будут разосланы по сети, что создаст мультипликацию трафика, то есть снова нагрузит сеть, что вновь приведёт к задержкам ещё большему количеству uncles. Поведение сети станет подобным атаке типа DNS/NTP Amplification, только в качестве и атакующего, и жертвы выступают те же самые узлы сети, а триггером становится достижение критической нагрузки, зависящей от топологии сети.

А если ещё учесть, что в блокчейн попадёт только один из блоков-кандидатов, а сеть тратила силы не только на решение этого блока, но и на его «братьев», которые только проголосовали, но в блокчейн не вошли, то становится очевидным драматическое снижение траста принятого блокчейна в результате такого шторма, и возможность атаки мощностью менее 51%.

Поэтому подход Сатоши является самым правильным в данный момент.

Пересчёт сложности после каждого блока

В отличии от Bitcoin, где сложность майнинга пересчитывается один раз на каждые 2016 блоков (примерно раз в две недели), сложность в сети Emer (как и Peercoin) пересчитывается после каждого блока. Такой подход повышает стабильность работы сети. Приведём пример.

Допустим, после очередного пересчёта сложности, в сети Bitcon перестала работать половина майнеров. Кстати, это далеко не гипотетический случай – достаточно вовремя принять соответствующие законы в государствах, на территориях которых находятся крупные майнинг-пулы. В результате, блоки будут закрываться вдвое реже, то есть раз в 20 минут. Также вдвое вырастет время подтверждения транзакций и размер блоков. А учитывая то, что уже сейчас часто блоки достигают своего предела в 1 мегабайт, есть прямые шансы, что многие транзакции в блоки просто не попадут, и много дней будут неподтверждёнными. Это вызовет панику, и ещё большее число транзакций, связанных с желанием продать по чём есть, что только усугубит ситуацию. И система только через месяц восстановит работоспособность.

При пересчёте сложности после каждого блока такой проблемы возникнуть не может – сеть сразу же начинает адаптироваться под изменение суммарной мощности майнеров. Кроме того, так как EmerCoin является в основном POS-криптовалютой, в которой майнинг и пулы играют второстепенную роль, даже полная и одномоментная остановка всех пулов приведёт к увеличению времени блока на 20%, что будет скорректировано системой адаптации в течение суток.

Пересчёт награды за POW-блок

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

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

Теоретически, наиболее эффективная стратегия майнинга EmerCoin – сговориться, майнить минимальной мощностью и делиться максимальным доходом между участниками. Но этого не выйдет в силу эгоистичности майнеров, которые находятся в ситуации, описанной в Дилемме Заключённого.

POS 6% APY

Так как EmerCoin является и POS-криптовалютой, то в ней можно майнить не только оборудованием, но монетами, находящимися в кошельке. В проекте была выбрана POS-награда в 6% годовых. Иными словами, если в некой транзакции монеты без движения пролежали более месяца, то они имеют шанс закрыть блок, и принести хозяину награду в 6% годовых. Если же монеты были использованы куда-либо, то срок их вылёживания «сгорает», и начинает накапливаться по новой у нового хозяина. То есть 6% – это верхний предел POS-награды, достижимый только в случае неподвижных денег. В настоящее же время, практическое значение роста денежной массы за счёт POS-награды составляет 4-5% годовых, и по мере расширения использования EmerCoin будет снижаться, достигая величин, принятых в устойчивых фиатных валютах, но не обращаясь в ноль.

В ответ на возражение: «У вас же инфляция из-за этих 6%», заметим, что EmerCoin демонстрирует дефляционность, то есть стоимость монеты растёт, причём довольно быстро. Это видно по курсу монеты, которая с начала года выросла примерно вчетверо. Такое расхождение с наивной моделью объясняется тем, что стоимость монеты отражает стоимость соответствующей экономики, и при росте экономики монета растёт тоже, и накачка денежной массы вследствие POS пренебрежимо мала по сравнению с другими факторами.

Эмиссия и сжигание

Из вышеизложенного можно сделать вывод, что денежная масса EmerCoin будет расти бесконечно. И это в первом приближении правда. Действительно, участники поддержания консенсуса продают свои услуги сети, и за это получают свеженапечатанные монеты. Однако, в системе EmerCoin действует механизм уничтожения монет, который противоположен эмиссии. Уничтожение монет происходит при использовании сервисов блокчейна – пересылке монет или покупке записей в NVS. То есть, в отличие от сети Bitcoin, где эмиссия ограничена, но механизм уничтожения отсутствует, в сети EmerCoin есть и неограниченная эмиссия, и процесс, призванный ей противодействовать. Участники, предоставляющие услуги сети, получают награду, а покупающие у сети услуги – платят за них.

Примерные оценки говорят, что с учётом известных факторов, сумма в 1 миллиард EMC будет достигнута примерно через 80 лет.

STUN rfc5389

Первым уникальным нововведением EmerCoin является использование протокола rfc5389, STUN для получения внешнего IP-адреса. Программе-кошельку за NAT-ом нужна знать внешний IP. Bitcoin его ранее получал (а другие криптовалюты и продолжают получать) запросом к централизованному серверу http://checkip.dyndns.org, но в настоящее время код этого запроса удалён из Bitcoin, и используется только UPNP или ручная конфигурация. Этот подход не подходил по ряду причин (например, UPNP некорректно работает за многослойным NAT-ом), поэтому решили избавиться от зависимости от централизованного сервера, и применить STUN, который как раз и применяется для этой цели в IP-телефонии, и является промышленным стандартом. В настоящее время группа Emer владеет наиболее полным списком публичных STUN-серверов в сети, и эти сервера используются STUN-подсистемой Emer для определения внешнего IP.

Оптимизатор транзакций

Другим уникальным нововведением, присущим только Emer, является оптимизатор транзакций.

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

Кроме того, этот алгоритм создаёт проблему «золотого песка», когда в кошельке скапливается множество транзакций-сдач на мелкие суммы.

В Emer для выбора подмножества транзакций применили подход динамического программирования, и алгоритм гарантировано находит такое подмножество, чтобы обеспечить сумму без сдачи, если такая возможна. В результате, по оценкам, средний размер транзакций снизился на 5%, что соответственно снизило скорость роста размера блокчейна. Детали об этом – в статье.

Распределённые динамические контрольные точки

К POS-криптовалютам могут быть применены некоторые экзотические атаки, специфичные для POS. Основной из них является «атака из глубины». Суть её состоит в том, что если некто получает контроль над кошельками, содержащими уже потраченные монеты, он может модельно откатить время к моменту, когда эти кошельки содержали монеты, и получив таким образом 51% монет, построить альтернативную цепочку блокчейна, более длинную чем основная, и таким образом изменить содержимое блокчейна задним числом.

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

В текущем Peercoin и старой версии Emer контрольные точки мог рассылать только один узел. При рассылке их из нескольких узлов появлялась вероятность конфликта в сети. Cоответственно, выход из строя этого узла приводил к тому, что информация о динамических checkpoints переставала обновляться.

Emer, начиная с версии 0.5.0 содержит механизм распределённых децентрализованных checkpoints, в котором контрольные точки рассылаются независимыми узлами, и имеется алгоритм избегания «двойной рассылки». Это повышает надёжность сети, так как контрольные точки будут продолжать обновляться, даже если какие-то узлы выйдут из строя.

Смарт-контракты в стиле Ethereum

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

Здесь наиболее интересен микроядерный подход, где весь внешний и не авторизованный разработчиками код выполняется вне ядра Emer.

Name-Value Storage (NVS)

Основным же нововведением, имеющем внешнюю утилитарную ценность, является подсистема NVS – Name-Value Storage. Разработка этой подсистемы была инспирирована распределённым DNS от криптовалюты Namecoin.

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

Вкратце, подсистема представляет собою хранилище бинарных данных (до 20кб) любого вида. Данные ассоциированы с поисковым ключом длиной до 512 байт. Ключ уникален в пределах всей сети EmerCoin. То есть невозможно создать дубликат уже имеющегося ключа. Запись ассоциирована с платёжным адресом, принадлежащим владельцу некоего кошелька.

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

Технически, такая запись в блокчейне представляет собою выход транзакции на 0.01EMC на платёжный адрес хозяина записи. Этот выход внутри script-контракта собственно и содержит содержимое NVS. Только владелец записи может потратить этот выход, так как только в его кошельке имеется соответствующий приватный ключ для подписи выхода. При трате этого выхода можно произвести модификацию записи, заменив в ней value или другие артибуты, включая платёжный адрес. В последнем случае, запись будет передана в кошелёк, содержащий адрес-получатель.

Взаимодействовать с подсистемой NVS можно либо посредством JSON API способом, подобным взаимодействию с кошельком Bitcoin, либо же через GUI кошелька, в специальной вкладке.

Именно эта подсистема стала основой для создания сервисов Emer, о которых пойдет речь в следующих постах.

Об авторе

Олег Ховайко – ведущий разработчик криптовалюты «EmerCoin», эксперт в области криптографии и компьютерной безопасности. С 1994 года работает в IT-сфере. В настоящий момент также является вице-президентом американского инвестиционного банка, производящего операции с ценными бумагами – Jefferies & Company. Который считается одним из крупнейших независимых банков США.

habr.com

блокчейн – опыт первых пилотных проектов / Блог компании IBM / Хабр

Уроки после первых пилотных проектов с блокчейн

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

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

1. Блокчейн – действительно новая технология на рынке

В первый раз блокчейн упоминался в 2008 году в статье Сатоши Накамото про биткоин (Bitcoin: A Peer-to-Peer Electronic Cash System), причем технология была описана как сервер временных меток. И только несколько лет назад блокчейн стали воспринимать как отдельную технологию без привязки к биткоину. Упрощенно блокчейн можно представить как распределенный реестр или распределенную систему хранения записей, доступ к которой есть у любого участника сети. Все записи при попадании в блокчейн формируются в блоки, которые связаны в одну цепочку (blockchain из англ. – цепь блоков). По грубой оценке, технология представлена на рынке не более 5 лет, а крупные финансовые организации стали проявлять больший интерес и проводить пилотные проекты буквально год-два назад. Крайне редко можно найти информацию об использовании технологии в продуктивных системах крупных компаний. Условно внедрения можно разделить на два типа: стартапы или финтех компании, направление бизнеса которых связано с блокчейн (Ethereum, Everledger и т.п.), и пилотные проекты крупных финансовых организаций по всему миру. Все это показывает, что мы лишь в начале пути и, по сути, создаем историю.

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

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

3. Бизнес-сообщество – фундамент успешных исследований технологии блокчейн.

Что блокчейн привнес действительно нового в индустрию, так это абсолютно новый формат работы между организациями. Действительно, до этого партнерства между компаниями были обычной практикой (альянс IBM и Apple как пример). Блокчейн, можно сказать, заставил организации кооперироваться на уровне исследований и разработок (Research and development, R&D), причем не сколько в ИТ индустрии, а в финансовом секторе. Достаточно вспомнить консорциум R3, который во время основания в середине 2015 года состоял из 12 банков, а сейчас насчитывает больше 40. Что же заставляет банки объединяться и действовать совместно? Как уже упоминалось в первом пункте, блокчейн – крайне новая и быстро развивающаяся технология для всех участников рынка. Поэтому нельзя сказать, что она обладает достаточным уровнем зрелости для немедленного использования в продуктивных системах. Значит, необходимо исследовать возможные пути использования технологии, анализировать узкие места, проблемы, преимущества. А это как раз задача R&D. Недаром организации выкладывают разработанный код в открытые сообщества для обмена друг с другом. Одним из самых известных примеров является консорциум HyperLedger (созданный в рамках Linux Foundation), куда компания IBM, к примеру, выложила более 44 000 строк кода для общего использования.

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

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

4. Сложнее выбрать правильный сценарий использования технологии, нежели реализовать его технически

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

5. Блокчейн – это не только технологическая инновация

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

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

6. Наибольшие сложности связаны с вопросами масштабируемости и безопасности

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

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

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

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

7. Индустрия мало подготовлена к использованию распределенных реестров – отсутствуют должные нормативно-правовые меры

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

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

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

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

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

9. Блокчейн может быть внедрен раньше в областях, не связанных с финансами

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

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

10. Блокчейн — технология, которая действительно сможет поменять индустрию

Несмотря на все опасения рынка, связанные с новизной технологии и ее неготовности к промышленному внедрению, блокчейн способен качественно поменять банковскую и не только индустрии. А именно изменить способы взаимодействия между компаниями: организациям придется уметь «договариваться» без участия органов регулирования. Безусловно, должно пройти какое-то время (по разным оценкам, от 2-3 лет) для апробации технологии, но то, что блокчейн перспективен, ясно уже сейчас.

habr.com

Стек приложений Blockchain / Блог компании Издательский дом «Питер» / Хабр

Здравствуйте, Хабр!

Надеемся не слишком вас шокировать, признавшись в неподдельном интересе к децентрализованным приложениям.

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

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

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

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

Идея такова, что все компоненты в серых прямоугольниках — децентрализованные, с открытым исходным кодом. Пока назовем их «Разделяемые данные» (Shared Data) и «Уровни протоколов» (Protocol layers). Этими частями системы никто не управляет, поэтому они доступны для любого разработчика или компании. Так, в случае Bitcoin уровнем разделяемых данных будет Blockchain, а протоколом — Decentralized Protocol.

Вы заметите, что чем выше вы поднимаетесь по схеме, тем тоньше становятся отдельные уровни. Кроме того, на уровень разделяемых данных и уровень протоколов приходится около 80% всего стека. Современные приложения для Интернета создаются на базе открытых децентрализованных технологий, таких как TCP/IP и HTTP, но если начертить примерно такую схему стека интернет-приложений, как показана выше, то эти открытые децентрализованные протоколы займут, вероятно, всего 15%, а выше них будут только приватные и централизованные технологии.

1. Майнеры и Blockchain

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

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

2. Наложенные сети

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

Один из примеров такого решения — Counterparty. Другой, возможно, Side Chains. Какую бы форму ни имели эти наложенные сети, всех они связаны с блокчейном Bitcoin, а также выгодно используют его сетевые эффекты для достижения гибкости; при этом в них нет необходимости создавать собственную криптовалюту и/или цепочки блоков, как того требуют альтернативные решения вроде Ethereum.

3. Децентрализованные протоколы

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

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

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

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

4. Свободные и коммерческие API

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

Речь идет либо о коммерческих сервисах, либо о свободных проектах. Хорошие примеры – API Chain.com и Coinbase Toshi для Bitcoin. Они оба предназначены для одних и тех же целей, но Chain – арендуемый коммерческий сервис, а Toshi – свободный.

5. Приложения

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

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

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

habr.com

Blockchain на Go. Часть 2: Proof-of-Work / Хабр

Привет, Хабр! Представляю вашему вниманию перевод статьи "Building Blockchain in Go. Part 2: Proof-of-Work".

Содержание

  1. Blockchain на Go. Часть 1: Прототип
  2. Blockchain на Go. Часть 2: Proof-of-Work
  3. Blockchain на Go. Часть 3: Постоянная память и интерфейс командной строки
  4. Blockchain на Go. Часть 4: Транзакции, часть 1
  5. Blockchain на Go. Часть 5: Адреса
  6. Blockchain на Go. Часть 6: Транзакции, часть 2
  7. Blockchain на Go. Часть 7: Сеть

Вступление

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

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

Proof-of-Work(PoW)

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

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

Этот весь «сделай сложную работу и докажи её»-механизм называется Proof-of-Work (доказательство работы). Он сложен, потому что требует больших вычислительных мощностей: даже высокопроизводительные компьютеры не могут его быстро выполнить. Более того, сложность данной работы постепенно возрастает, для того чтобы в среднем создавалось около 6 блоков в час. В Биткоине цель такой работы — это нахождение хеша блока, который удовлетворяет определенным требованиям. Данный хеш и служит доказательством. Таким образом, поиск доказательства и есть фактическая работа.

Необходимо заметить одну вещь: Proof-of-Work алгоритмы должны соответствовать следующему требованию: выполнение работы должно быть сложным, но проверка доказательства должна быть простой. Проверка доказательства обычно передается кому-то стороннему, поэтому у них данная проверка не должна занимать много времени.

Хеширование

Данная часть посвящена хешированию. Те, кто знаком с этой концепцией, может данную часть пропустить.

Хеширование — это процесс получения хеша для некоторых данных. Хеш — это уникальное представление для данных, для которых он был высчитан. Хеш-функция — это функция, которая для данных произвольного размера получает хеш конкретного размера. Некоторые ключевые особенности хеширования:

  1. Начальные данные не могут быть восстановлены из хеша. Таким образом, хеширование — это не шифрование
  2. Хеш для конкретных данных всегда однозначен и уникален
  3. Изменение одного байта в данных приводит к получению совершенно другого хеша

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

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

Hashcash

Биткоин использует Hashcash, Proof-of-Work алгоритм, который был разработан для защиты от почтового спама. Алгоритм может быть разделен на следующие шаги:
  1. Взять публично известные данные ( для эмейла — это адрес получателя; для биткоина — это заголовок блока
  2. Добавить к ним счетчик. Счетчик начинается с нуля
  3. Получить хеш от комбинации данные+счетчик
  4. Проверить, отвечает ли хеш определенным требованиям
    1. Если да, то все готово
    2. Если нет, то увеличить счетчик и повторить шаги 3 и 4
Таким образом, это брутфорс алгоритм: изменить счетчик, вычислить хеш, проверить его, увеличить счетчик, снова вычислить хеш и так далее. Именно поэтому алгоритм вычислительно затратный.

Теперь рассмотрим требования, которым должен удовлетворять хеш. В оригинальной Hashcash реализации требование звучит как «первые 20 бит хеша должны быть нулевыми». В Биткоине требование время от времени корректируется, потому что по замыслу блок должен генерироваться каждые 10 минут, несмотря на то, что мощность вычислений растет со временем и все больше и больше майнеров присоединяются к сети.

Для демонстрации алгоритма, возьмем предыдущий пример («I like donuts») и найдем хеш, который начинается с трех нулевых байтов.

ca07ca — это шестнадцатеричное представления счетчика, что соответствует числу 13240266 в десятичной системе счисления.

Реализация

Итак, с теорией покончено, приступим к коду. Для начала определим сложность майнинга:const targetBits = 24 В Биткоине, «target bits» — это поле заголовка блока, которое хранит сложность, на которой блок был добыт. Мы не будем строить корректирующийся алгоритм, поэтому определим сложность, как глобальную константу.

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

type ProofOfWork struct { block *Block target *big.Int } func NewProofOfWork(b *Block) *ProofOfWork { target := big.NewInt(1) target.Lsh(target, uint(256-targetBits)) pow := &ProofOfWork{b, target} return pow } Здесь мы создаем создаем ProofOfWork, которая содержит указатель на указатель на блок и указатель на цель. «Цель» — это другое имя для требований, описанных в предыдущей части. Мы используем big integer из-за способа сравнения хеша с целью: мы ковертируем хеш в big integer и проверить, меньше ли оно, чем цель. В функции NewProofOfWork мы проинициализируем big.Int значением 1, а потом сдвинуть на 256-targetBits битов. 256 — это длина SHA-256 хеша в битах, и данный алгоритм хеширования мы будем использовать. 16-ричное представление target: 0x10000000000000000000000000000000000000000000000000000000000 И оно занимает 29 байтов в памяти. А здесь визуальное сравнение с хешами из предыдущих примеров: 0fac49161af82ed938add1d8725835cc123a1a87b1b196488360e58d4bfb51e3 0000010000000000000000000000000000000000000000000000000000000000 0000008b0f41ec78bab747864db66bcb9fb89920ee75f43fdaaeb5544f7f76ca Первый хеш( подсчитан для «I like donuts») больше, чем цель, так что это неверное доказательство работы. Второй хеш ( подсчитан для «I like donutsca07ca») меньше цели, так что это верное доказательство.

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

Теперь нам нужны данные для хеширования. Давайте подготовим их:

func (pow *ProofOfWork) prepareData(nonce int) []byte { data := bytes.Join( [][]byte{ pow.block.PrevBlockHash, pow.block.Data, IntToHex(pow.block.Timestamp), IntToHex(int64(targetBits)), IntToHex(int64(nonce)), }, []byte{}, ) return data } Этот кусок кода достаточно простой. Мы просто объединяем поля блока с целью и «nonce». nonce — это счетчик из описания Hashcash, это такой криптографический термин.

Так, все приготовления выполнены. Теперь реализуем ядро Proof-of-Work алгоритма:

func (pow *ProofOfWork) Run() (int, []byte) { var hashInt big.Int var hash [32]byte nonce := 0 fmt.Printf("Mining the block containing \"%s\"\n", pow.block.Data) for nonce < maxNonce { data := pow.prepareData(nonce) hash = sha256.Sum256(data) fmt.Printf("\r%x", hash) hashInt.SetBytes(hash[:]) if hashInt.Cmp(pow.target) == -1 { break } else { nonce++ } } fmt.Print("\n\n") return nonce, hash[:] } Сначала мы инициализируем переменные. hashInt — это целочисленное представление для hash. nonce — это счетчик. Затем мы запускаем «бесконечный» цикл: он ограничен константой maxNonce, значение которой равно math.MaxInt64. Это сделано, чтобы избежать возможное переполнение nonce. Хотя сложность нашей PoW реализации слишком мала для переполнения счетчика, на всякий случай лучше иметь такую проверку.

В цикле мы делаем следующее:

  1. Подготовить данные
  2. Захешировать их Hash356
  3. Конвертировать хеш в big integer
  4. Сравнить полученное целое число с целью
Так же легко, как было объяснено ранее. Теперь можно удалить метод SetHash у Block и изменить функцию NewBlock: func NewBlock(data string, prevBlockHash []byte) *Block { block := &Block{time.Now().Unix(), []byte(data), prevBlockHash, []byte{}, 0} pow := NewProofOfWork(block) nonce, hash := pow.Run() block.Hash = hash[:] block.Nonce = nonce return block } Можно заметить, что nonce сохранен как свойство Block . Это необходимо, потому что nonce требуется для проверки доказательства. Структура Block теперь выглядит так: type Block struct { Timestamp int64 Data []byte PrevBlockHash []byte Hash []byte Nonce int } А теперь запустим нашу программу и проверим, что все хорошо работает: Mining the block containing "Genesis Block" 00000041662c5fc2883535dc19ba8a33ac993b535da9899e593ff98e1eda56a1 Mining the block containing "Send 1 BTC to Ivan" 00000077a856e697c69833d9effb6bdad54c730a98d674f73c0b30020cc82804 Mining the block containing "Send 2 more BTC to Ivan" 000000b33185e927c9a989cc7d5aaaed739c56dad9fd9361dea558b9bfaf5fbe Prev. hash: Data: Genesis Block Hash: 00000041662c5fc2883535dc19ba8a33ac993b535da9899e593ff98e1eda56a1 Prev. hash: 00000041662c5fc2883535dc19ba8a33ac993b535da9899e593ff98e1eda56a1 Data: Send 1 BTC to Ivan Hash: 00000077a856e697c69833d9effb6bdad54c730a98d674f73c0b30020cc82804 Prev. hash: 00000077a856e697c69833d9effb6bdad54c730a98d674f73c0b30020cc82804 Data: Send 2 more BTC to Ivan Hash: 000000b33185e927c9a989cc7d5aaaed739c56dad9fd9361dea558b9bfaf5fbe Ура! Теперь можно заметить, что каждый хеш начинается с трех нулевых байтов и поиск хешей занимает некоторое время.

Осталось еще кое-что сделать: давайте сделаем возможной проверку доказательств работы:

func (pow *ProofOfWork) Validate() bool { var hashInt big.Int data := pow.prepareData(pow.block.Nonce) hash := sha256.Sum256(data) hashInt.SetBytes(hash[:]) isValid := hashInt.Cmp(pow.target) == -1 return isValid } Именно здесь нам понадобится сохраненная nonce.

Проверим, что все в порядке:

func main() { ... for _, block := range bc.blocks { ... pow := NewProofOfWork(block) fmt.Printf("PoW: %s\n", strconv.FormatBool(pow.Validate())) fmt.Println() } } Output: ... Prev. hash: Data: Genesis Block Hash: 00000093253acb814afb942e652a84a8f245069a67b5eaa709df8ac612075038 PoW: true Prev. hash: 00000093253acb814afb942e652a84a8f245069a67b5eaa709df8ac612075038 Data: Send 1 BTC to Ivan Hash: 0000003eeb3743ee42020e4a15262fd110a72823d804ce8e49643b5fd9d1062b PoW: true Prev. hash: 0000003eeb3743ee42020e4a15262fd110a72823d804ce8e49643b5fd9d1062b Data: Send 2 more BTC to Ivan Hash: 000000e42afddf57a3daa11b43b2e0923f23e894f96d1f24bfd9b8d2d494c57a PoW: true

Заключение

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

Ссылки

Первая частьОригинальная статьяИсходные коды для статьиАлгоритм хеширования блокчейнаProof of WorkHashcash

habr.com

Что такое Хэширование? Под капотом блокчейна / Хабр

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

Так что же такое хэширование?

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

Input- вводимые данные, hash- хэш

Посмотрим, как работает процесс хэширования. Мы собираемся внести определенные данные. Для этого, мы будем использовать SHA-256 (безопасный алгоритм хэширования из семейства SHA-2, размером 256 бит).

Как видите, в случае SHA-256, независимо от того, насколько объёмные ваши вводимые данные (input), вывод всегда будет иметь фиксированную 256-битную длину. Это крайне необходимо, когда вы имеете дело с огромным количеством данных и транзакций. Таким образом, вместо того, чтобы помнить вводимые данные, которые могут быть огромными, вы можете просто запомнить хэш и отслеживать его. Прежде чем продолжать, необходимо познакомиться с различными свойствами функций хэширования и тем, как они реализуются в блокчейн.

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

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

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

Свойство 3: Сложность обратного вычисления Сложность обратного вычисления означает, что с учетом H (A) невозможно определить A, где A – вводимые данные и H(А) – хэш. Обратите внимание на использование слова “невозможно” вместо слова “неосуществимо”. Мы уже знаем, что определить исходные данные по их хэш-значению можно. Возьмем пример.

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

Но это работает только тогда, когда данный объем данных очень мал. Что происходит, когда у вас есть огромный объем данных? Предположим, вы имеете дело с 128-битным хэшем. Единственный метод, с помощью которого вы должны найти исходные данные, — это метод «грубой силы». Метод «грубой силы» означает, что вам нужно выбрать случайный ввод, хэшировать его, а затем сравнить результат с исследуемым хэшем и повторить, пока не найдете совпадение.

Итак, что произойдет, если вы используете этот метод?

  • Лучший сценарий: вы получаете свой ответ при первой же попытке. Вы действительно должны быть самым счастливым человеком в мире, чтобы это произошло. Вероятность такого события ничтожна.
  • Худший сценарий: вы получаете ответ после 2 ^ 128 — 1 раз. Это означает, что вы найдете свой ответ в конце всех вычислений данных (один шанс из 340282366920938463463374607431768211456)
  • Средний сценарий: вы найдете его где-то посередине, поэтому в основном после 2 ^ 128/2 = 2 ^ 127 попыток. Иными словами, это огромное количество.
Таким образом, можно пробить функцию обратного вычисления с помощью метода «грубой силы», но потребуется очень много времени и вычислительных ресурсов, поэтому это бесполезно.

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

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

Свойство 5: Коллизионная устойчивость Учитывая два разных типа исходных данных A и B, где H (A) и H (B) являются их соответствующими хэшами, для H (A) не может быть равен H (B). Это означает, что, по большей части, каждый вход будет иметь свой собственный уникальный хэш. Почему мы сказали «по большей части»? Давайте поговорим об интересной концепции под названием «Парадокс дня рождения».

Что такое парадокс дня рождения? Если вы случайно встречаете незнакомца на улице, шанс, что у вас совпадут даты дней рождений, очень мал. Фактически, если предположить, что все дни года имеют такую же вероятность дня рождения, шансы другого человека, разделяющего ваш день рождения, составляют 1/365 или 0,27%. Другими словами, он действительно низкий.

Однако, к примеру, если собрать 20-30 человек в одной комнате, шансы двух людей, разделяющих тот же день, резко вырастает. На самом деле, шанс для 2 человек 50-50, разделяющих тот же день рождения при таком раскладе.

Как это применяется в хэшировании? Предположим, у вас есть 128-битный хэш, который имеет 2 ^ 128 различных вероятностей. Используя парадокс дня рождения, у вас есть 50% шанс разбить коллизионную устойчивость sqrt (2 ^ 128) = 2 ^ 64.

Как вы заметили, намного легче разрушить коллизионную устойчивость, нежели найти обратное вычисление хэша. Для этого обычно требуется много времени. Итак, если вы используете такую функцию, как SHA-256, можно с уверенностью предположить, что если H (A) = H (B), то A = B.

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

Для каждого выхода «Y», если k выбран из распределения с высокой мин-энтропией, невозможно найти вводные данные x такие, что H (k | x) = Y.

Вероятно, это, выше вашего понимания! Но все в порядке, давайте теперь разберемся с этим определением.

В чем смысл «высокой мин-энтропии»? Это означает, что распределение, из которого выбрано значение, рассредоточено так, что мы выбираем случайное значение, имеющее незначительную вероятность. В принципе, если вам сказали выбрать число от 1 до 5, это низкое распределение мин-энтропии. Однако, если бы вы выбрали число от 1 до бесконечности, это — высокое распределение мин-энтропии.

Что значит «к|х»? «|» обозначает конкатенацию. Конкатенация означает объединение двух строк. Например. Если бы я объединила «голубое» и «небо», то результатом было бы «голубоенебо». Итак, давайте вернемся к определению.

Предположим, у вас есть выходное значение «Y». Если вы выбираете случайное значение «К», невозможно найти значение X, такое, что хэш конкатенации из K и X, выдаст в результате Y.

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

Примеры криптографических хэш-функций:

  • MD 5: Он производит 128-битный хэш. Коллизионная устойчивость была взломана после ~2^21 хэша.
  • SHA 1: создает 160-битный хэш. Коллизионная устойчивость была взломана после ~2^61 хэша.
  • SHA 256: создает 256-битный хэш. В настоящее время используется в Биткоине.
  • Keccak-256: Создает 256-битный хэш и в настоящее время используется Эфириуме.
Хэширование и структуры данных. Структура данных — это специализированный способ хранения данных. Если вы хотите понять, как работает система «блокчейн», то есть два основных свойства структуры данных, которые могут помочь вам в этом:

1. Указатели 2. Связанные списки

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

Например, запись int a = 10 означает, что существует некая переменная «a», хранящая в себе целочисленное значение равное 10. Так выглядит стандартная переменная.

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

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

*Head – заголовок; Data – данные; Pointer – указатель; Record – запись; Null – ноль

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

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

Первый блок называется «блоком генезиса», а его указатель находится в самой системе. Выглядит это следующим образом:

*H ( ) – Хэшированные указатели изображаются таким образом

Если вам интересно, что означает «хэш-указатель», то мы с радостью поясним. Как вы уже поняли, именно на этом основана структура блокчейна. Цепочка блоков представляет собой связанный список. Рассмотрим, как устроена структура блокчейна:

* Hash of previous block header – хэш предыдущего заголовка блока; Merkle Root – Корень Меркла; Transactions – транзакции; Simplified Bitcoin Blockchain – Упрощенный блокчейн Биткоина.

Блокчейн представляет собой связанный список, содержащий данные, а так же указатель хэширования, указывающий на предыдущий блок, создавая таким образов связную цепочку. Что такое хэш-указатель? Он похож на обычный указатель, но вместо того, чтобы просто содержать адрес предыдущего блока, он также содержит хэш данных, находящихся внутри предыдущего блока. Именно эта небольшая настройка делает блокчейн настолько надежным. Представим на секунду, что хакер атакует блок 3 и пытается изменить данные. Из-за свойств хэш-функций даже небольшое изменение в данных сильно изменит хэш. Это означает, что любые незначительные изменения, произведенные в блоке 3, изменят хэш, хранящийся в блоке 2, что, в свою очередь, изменит данные и хэш блока 2, а это приведет к изменениям в блоке 1 и так далее. Цепочка будет полностью изменена, а это невозможно. Но как же выглядит заголовок блока?

* Prev_Hash – предыдущий хэш; Tx – транзакция; Tx_Root – корень транзакции; Timestamp – временная отметка; Nonce – уникальный символ.

Заголовок блока состоит из следующих компонентов:

· Версия: номер версии блока · Время: текущая временная метка · Текущая сложная цель (См. ниже) · Хэш предыдущего блока · Уникальный символ (См. ниже) · Хэш корня Меркла

Прямо сейчас, давайте сосредоточимся на том, что из себя представляет хэш корня Меркла. Но до этого нам необходимо разобраться с понятием Дерева Меркла.

Что такое Дерево Меркла?
Источник: Wikipedia

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

Листовой узел: Листовые узлы являются узлами в самом нижнем ярусе дерева. Поэтому, следуя приведенной выше схеме, листовыми будут считаться узлы L1, L2, L3 и L4.

Дочерние узлы: Для узла все узлы, находящиеся ниже его уровня и которые входят в него, являются его дочерними узлами. На диаграмме узлы с надписью «Hash 0-0» и «Hash 0-1» являются дочерними узлами узла с надписью «Hash 0».

Корневой узел: единственный узел, находящийся на самом высоком уровне, с надписью «Top Hash» является корневым.

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

Давайте посмотрим на пример на следующем Хэш-дереве:

Изображение предоставлено проектом: Coursera

Теперь предположим, я хочу узнать, принадлежат ли эти данные блоку или нет:

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

Это значительно сокращает время.

Хэширование в майнинге: крипто-головоломки. Когда мы говорим «майнинг», в основном, это означает поиск нового блока, который будет добавлен в блокчейн. Майнеры всего мира постоянно работают над тем, чтобы убедиться, что цепочка продолжает расти. Раньше людям было проще работать, используя для майнинга лишь свои ноутбуки, но со временем они начали формировать «пулы», объединяя при этом мощность компьютеров и майнеров, что может стать проблемой. Существуют ограничения для каждой криптовалюты, например, для биткоина они составляют 21 миллион. Между созданием каждого блока должен быть определенный временной интервал заданный протоколом. Для биткоина время между созданием блока занимает всего 10 минут. Если бы блокам было разрешено создаваться быстрее, это привело бы к:

  • Большому количеству коллизий: будет создано больше хэш-функций, которые неизбежно вызовут больше коллизий.
  • Большому количеству брошенных блоков: Если много майнеров пойдут впереди протокола, они будут одновременно хаотично создавать новые блоки без сохранения целостности основной цепочки, что приведет к «осиротевшим» блокам.
Таким образом, чтобы ограничить создание блоков, устанавливается определенный уровень сложности. Майнинг чем-то напоминает игру: решаешь задачу – получаешь награду. Усиление сложности делает решение задачи намного сложнее и, следовательно, на нее затрачивается большее количество времени.WRT, которая начинается с множества нулей. При увеличении уровня сложности, увеличивается количество нулей. Уровень сложности изменяется после каждого 2016-го блока.
Процесс Майнинга
Примечание: в этом разделе мы будем говорить о выработке биткоинов. Когда протокол Биткоина хочет добавить новый блок в цепочку, майнинг – это процедура, которой он следует. Всякий раз, когда появляется новый блок, все их содержимое сначала хэшируется. Если подобранный хэш больше или равен, установленному протоколом уровню сложности, он добавляется в блокчейн, а все в сообществе признают новый блок.

Однако, это не так просто. Вам должно очень повезти, чтобы получить новый блок таким образом. Так как, именно здесь присваивается уникальный символ. Уникальный символ (nonce) — это одноразовый код, который объединен с хэшем блока. Затем эта строка вновь меняется и сравнивается с уровнем сложности. Если она соответствует уровню сложности, то случайный код изменяется. Это повторяется миллион раз до тех пор, пока требования не будут наконец выполнены. Когда же это происходит, то блок добавляется в цепочку блоков.

Подводя итоги:

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

Помните номер свойства 6 хэш-функций? Удобство использования задачи? Для каждого выхода «Y», если k выбран из распределения с высокой мин-энтропией, невозможно найти вход x таким образом, H (k | x) = Y.

Так что, когда дело доходит до майнинга биткоинов:

• К = Уникальный символ • x = хэш блока • Y = цель проблемы

Весь процесс абсолютно случайный, основанный на генерации случайных чисел, следующий протоколу Proof Of Work и означающий:

  • Решение задач должно быть сложным.
  • Однако проверка ответа должна быть простой для всех. Это делается для того, чтобы убедиться, что для решения проблемы не использовались недозволенные методы.
Что такое скорость хэширования? Скорость хэширования в основном означает, насколько быстро эти операции хэширования происходят во время майнинга. Высокий уровень хэширования означает, что в процессе майнинга участвуют всё большее количество людей и майнеров, и в результате система функционирует нормально. Если скорость хэширования слишком высокая, уровень сложности пропорционально увеличивается. Если скорость хэша слишком медленная, то соответственно, уровень сложности уменьшается.
Вывод
Хэширование действительно является основополагающим в создании технологии блокчейн. Если кто-то хочет понять, что такое блокчейн, он должен начать с того, чтобы понять, что означает хэширование.

habr.com

ТОП 10 ошибок при организации блокчейн-проектов от Gartner Inc / Хабр

Недавно начал плотно изучать рынок Bitcoin & Blockchain решений. И обнаружил интересную закономерность: многие it-специалисты неплохо, а то и отлично разобрались с технической составляющей, но при этом не хотят смотреть на блокчейн шире — с точки зрения организационной. Как правило, сегодня останавливаются на экономической, реже — политической составляющей. Но бывают и приятные исключения — как, например, данный цикл на Habrahabr.

Итак, ниже предлагаю перевод 10 ошибок, о которых рассказали в Gartner Inc, которая является ведущей компанией в области исследований, включая IT.

По мере развития блокчейна ИТ-директора могут избежать необоснованного провала, учтя общие ловушки.

Организации начали экспериментировать с технологией блокчейн для целого ряда вариантов использования, включая денежные переводы, академические системы аттестации, системы земельных титулов и отслеживание происхождения продукции. Тем не менее, по расчетам Gartner, 90% проектов на базе блокчейна, запущенных в 2015 году, закрываются в течение 18-24 месяцев.

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

Технология Blockchain находится на пике завышенных ожиданий в Gartner Hype Cycle, а это значит, что прежде чем пуститься в плавание, ИТ-менеджеры должны быть осведомлены об общих ошибках (заблуждениях), которые могут привести к разочарованию и неудаче в корпоративных проектах.

«Современное поколение технологических платформ имеет значительные ограничения во многих областях, что приведет к их неспособности соответствовать требованиям, изложенным в долгосрочном видении (понимании)», — сказал Рэй Вальдес, вице-президент и сотрудник Gartner. Многие предприятия все еще пытаются слепо прыгнуть на борт "… и для большинства из них разочарование будет следующим этапом".

Однако простое видение «тонких мест», поможет предприятиям избежать попадания в одни и те же сети.

1. Непонимание или игнорирование цели технологии блокчейнов.

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

2. Предположение, что текущая технология готова для использования в производстве.

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

3. Непонятное будущее blockchain-технологии для нынешнего поколения.

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

4. Нельзя путать ограниченный протокол начального уровня с полноценным бизнес-решением.

Хотя термин блокчейн часто используется в сочетании с инновационными решениями в таких отраслях, как управление цепочками поставок или медицинскими информационными системами, следует понимать, что не всё, что в настоящее время доступно на рынке, соответствует тому, что рекламируется в новостях. Учитывая то, в каком ключе сейчас обсуждается блокчейн, руководители ИТ-отделов могут подумать, что существующая в настоящее время технология на самом начальном уровне — это и есть по сути, полноценное решение для приложений. Но в действительности (же) у blockchain (будет) длинный путь развития, прежде чем он будет готов показать весь свой потенциал. При рассмотрении широкомасштабного амбициозного проекта блокчейн ИТ-директорам следует иметь в виду, что доля блокчейн должна составлять менее 5% от общего объема усилий по разработке проекта.

5. Рассмотрение технологии блокчейн исключительно в качестве базы данных или механизма их хранения.

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

6. Предположение функциональной совместимости между платформами, которые еще не существуют.

Большинство технологий blockchain все еще находятся в стадии разработки и не имеют конкретных технологических (или бизнес) дорожных карт. В сущности, кошельки не имеют первичной взаимозаменяемости, а сами леджеры (реестры) не имеют встроенных возможностей для интеграции. Если оценивать критически, стандарты blockchain еще не существуют. Это означает, что помимо предполагаемой возможной функциональной совместимости на самом базовом уровне ИТ-директора должны скептически рассматривать любые дискуссии поставщиков о взаимодействии. Хотя существует несколько конкурирующих поставщиков, технология не созрела до уровня, на котором может быть обеспечена интероперабельность. Не ждите, что с 2016 года «блокирующие платформы» будут взаимодействовать с «платформами-блокировщиками» другого поставщика.

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

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

8. Предположение, что технология smart-контрактов является решением проблемы.

Умные контракты, компьютерные протоколы, которые будут облегчать и обеспечивать исполнение контрактов, — это то, что позволит экономике стать программируемой. Однако на техническом уровне интеллектуальные контракты в настоящее время не обладают масштабируемостью, надежностью, управляемостью и проверяемостью (на должном уровне?). Кроме того, в настоящее время не существует никакой юридической основы — локально или глобально — для их применения. Всё это будет развиваться в ближайшие три-пять лет, но ИТ-директора должны быть осторожны при разработке smart-контрактов в рамках нынешних предложений блокчейнов и обращаться за юридической консультацией по их использованию.

9. Игнорирование проблем финансирования и управления peer-to-peer распределенной сети.

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

10. Неспособность включить учебный процесс.

Предприятия должны применять практический подход к проектам блокчейн. Нынешние временные рамки очень важны для создания тестовых и обучающих конструкций. Уроки, извлеченные из экспериментов с платформами, новыми бизнес-моделями, процессами и продуктами, будут полезны для будущих реализаций в рамках широкомасштабной цифровой трансформации. Даже если проекты будут заключены на контрактной основе, ИТ-отдел должен тесно сотрудничать со сторонним поставщиком / партнером, чтобы изучить навыки и концепции, такие как умные контракты, механизмы согласования, управление идентификацией, менеджмент и многое другое — все, что только может пригодиться для будущих проектов. ИТ-менеджеры должны обеспечить разработку и передачу знаний по всему предприятию и понимать для себя, что знания могут быть единственной ценностью, полученной в рамках проекта блокчейна с 2016 года и до начала 2017 года.

P.S. Сам по себе перевод для меня не был самоцелью, т.к. знания английского у меня относительно скудные (за помощью благодарю своего лучшего друга). Но куда важнее — те проблемы, которые обозначены в исследовании. Надеюсь, их описание поможет тем, кто стоит в начале блокчейн-пути, а также тем, кто уже следует по нему, но считает, что «всё уже сделано».

P.P.S. Подтверждение для Golos

habr.com