В сознании среднестатистического пользователя само слово “блокчейн” (“цепочка блоков”) стало довольно тесно связано с термином “биткоин”, что двояко отразилось на восприятии.
С одной стороны, популярность биткоина вызывает интерес и к блокчейну, с другой стороны, в массовом сознании биткоин часто ассоциируется лишь с чем-то негативным, запрещенным и подвергаемым преследованию со стороны законодателей. Мол, зачем расплачиваться биткоинами, когда есть целый зоопарк электронных кошельков и банковских карт? Ясное дело – чтобы проворачивать какие-то темные делишки.
Блокчейн же – по сути всего лишь инструмент, с помощью которого можно хранить данные транзакций (база данных). А инструмент не может сам по себе быть заведомо хорошим или плохим: с помощью топора можно пойти и нарубить дров, чтобы согреться зимой и приготовить пищу, а можно взять тот же самый топор и сокращать народонаселение процентщиц в отдельно взятом городе. Инструмент – один и тот же, применение и последствия – разные.
Сфер применения можно найти множество, главное – чтобы существовал аналог сделки или подобного взаимодействия, партнерства между сторонами. Поэтому на технологии блокчейна сейчас работают биткоин и лайткоин, к блокчейну весьма активно присматриваются банки (осенью 2016-го Bank of America и Microsoft заявили о начале разработки финансовой блокчейн-платформы).
Первая же реальная сделка с реальными деньгами тоже состоялась осенью того же года – израильский стартап (Wave), британский банк (Barclays) и ирландский производитель молочки (Ornua) провели аккредитив на 100 000 долларов. И если ранее процесс занял бы неделю или более из-за бюрократии и проверки всех документов, то благодаря криптографии и автоматизированной верификации на все про все ушло около четырех часов.
21 декабря 2016-го сделку-аккредитив через блокчейн провели Альфа-Банк и S7.
ЦБ РФ вместе с крупными банками страны создали платформу “Мастерчейн”, цель – повысить прозрачность и эффективность существующих финансовых систем.
А Парламент ЕС в принципе задумался о реализации выборов в органы государственной власти с помощью блокчейна.
Учитывая масштаб применения и уровень игроков, которые уже начали использовать технологию в деле, считать блокчейн каким-то странным подозрительным новшеством, о котором все забудут через некоторое время, уже нельзя.
Насколько это все безопасно?
Главные преимущества использования блокчейна – это прозрачность проводимых транзакций и множественное копирование всех этих транзакций таким образом, что у каждого участника процесса всегда есть информация о каждом шаге всех партнеров.
Если попробовать описать это попроще – представьте себе большую общую папку на FTP. Вы видите все ее содержимое (никаких скрытых файлов), вы можете быстро посмотреть, кто и в какие подпапки загружал файлы. Какие именно файлы, когда и для кого.
Но при этом у всех разный доступ к данным файлам. Кто-то может лишь наслаждаться видами и просматривать список файлов в каждой папке. А кто-то (адресат конкретного файла) может скачивать данные себе. Причем никто другой не сможет получить доступ к файлу – только тот, кому он предназначался.
Или, например, большой электронный кошелек с открытой статистикой. Вы видите, что на счет поступило 50 000 рублей от пользователя А для пользователя Б. Пользователь Б через час перевел их куда-то еще в системе. При этом сами пользователи, скрывающиеся за А и Б, могут быть как анонимными, так и вполне себе идентифицированными – зависит от самой платформы и цели ее создания. Все участники цепи могут наблюдать за перемещением средств, но доступ к самим средствам будет только у пользователя с необходимыми правами (Б). Остальные же в данном случае выполняют роль наблюдателей.
Это обеспечивает должный уровень открытости сделки – вся цепочка транзакций дублируется и хранится в неизменном зашифрованном виде у каждого участника, не получится как-то подделать ее.
Блокчейн децентрализован, нет какого-то одного общего “командного центра”, взломав который получится уничтожить все данные о сделке и ее участниках или подменить их.
Например, если проводилась транзакция, в которой участвовали 100 человек, то эта блокчейн-цепочка останется рабочей и доступной для просмотра даже в том случае, если 99 компьютеров других участников будут испорчены. Ведь по сути каждое звено блокчейн-цепи – это своеобразный полный бекап данных всех транзакций всех остальных участников на это звено.
Взлом одного из таких компьютеров никак не скажется на сохранности данных на остальных (как и на их изменении).
Блокчейн сейчас и в будущем
Вполне возможно, что сейчас – именно то время, когда технология проходит обкатку вживую на весьма значимых областях общественной жизни, и в скором времени мы увидим все больше и больше проектов и платформ, использующих блокчейн. Уже сейчас банки пытаются активно внедрять это у себя (в том числе и для снижения операционных расходов), на рынке появляются все новые и новые игроки, стремящиеся популяризовать использование технологии.
Новые проекты на блокчейне будут основываться на его главных преимуществах – открытости, защищенности, безопасности.
Поэтому блокчейн станет хорошим подспорьем для любых сервисов, где пользователи могли переживать о возможном мошенничестве или о сохранности данных:
- микроплатежи
- банковские операции
- логистика
- юриспруденция
- медицина
Всего за несколько лет блокчейн уже прошел путь от новинки в технологическом мире до инструмента, которым начинают пользоваться крупные банки, корпорации и государства.
Что только укрепляет уверенность в том, что в будущем технология раскроет свой потенциал еще сильнее.
Немного о нас
Мы принимаем участие в развитии блокчейна с 2011 года (основание BitFury) и будем рады делиться с вами последними наработками и новостями.
Первые эксперименты с использованием центральных и графических процессоров для майнинга мы начали 6 лет назад, в 2011, в рамках разных проектов. Год спустя было решено сосредоточить усилия на одном – BitFury. В 2014-м майнинг был развернут уже в 3 странах (Финляндия, Исландия, Грузия) на собственном оборудовании. Планируем построить дата-центр и на территории США.
Несколько интересных проектов, которые мы уже успели осуществить к текущему моменту:
чип по 28-нанометровой технологии
Пришел на замену нашему специализированному 55-нанометровому чипу. Новый чип работал с потреблением 0,2 Джоуля на гигахэш.
16-нанометровый чип
Мы начали внедрять его в собственных дата-центрах. Данный чип уже потреблял 0,06 Джоуля на гигахэш, производительность же составляла 184 гигахэша в секунду (иммерсионное охлаждение) и 140 – при воздушном.
Большие возможности блокчейн открывает и для государственных органов – весной 2016-го мы начали работы над проектом земельного кадастра на основе блокчейна для Грузии. Помимо того, что использование блокчейна повысит уровень безопасности и весьма ускорит процесс дистанционного оформления документов, это также должно снизить и стоимость регистрации прав на землю, причем довольно ощутимо – в среднем с 50-200 $ до 5-10 центов.
За 2014 и 2015 нам удалось привлечь инвестиции в трех раундах по 20 миллионов долларов, что на тот момент являлось примерно половиной всех мировых инвестиций в развитие биткоина.
На сегодня же BitFury – один из крупнейших майнеров и создателей блокчейн-платформы. Мы собираемся и дальше сохранять лидерские позиции и активно продвигать блокчейн-технологии.
Если у вас есть какие-либо конкретные вопросы о блокчейне в целом или каком-то из наших продуктов в частности (BlockBox, 16нм ASIC-чип, блокчейн и государство) – пишите в комментариях, мы ответим в следующих постах.
Комментарии (46)
MuI_I_Ika
09.02.2017 14:27+5Вроде про блокчейн, но про сам блокчейн ни слова. Хотелось бы прочесть более прикладную статью. Например, используемые алгоритмы, технологии, блокчейн в домашних условиях, блокчейн для семейного бюджета и т.д.
BHYCHIK
09.02.2017 17:08+1Интересно почитать математику, лежащую внутри блокчейна. Есть что-то почитать фундаментальное, а не маркетинг?
akamajoris
09.02.2017 19:17Как вы думаете, какой объем базы транзакций будет через десяток лет?
grey_rat
09.02.2017 23:50Мне кажется, что в плане денег вообще никакого. В смысле что-то будет, но гораздо меньше чем сейчас. Зато, на основе этих технологий попытаются сделать более устойчивые к взломам и кражам различные государственные финансовые учреждения.
Само забавно смотреть, что биткоин по сути придумывался как средство прямого обмена без участия третьих лиц, денежной единицы без инфляции… А в итоге: фермы по майнингу, пирамиды МММ, посредники снимающие комиссию с транзакций, привязка к курсам других валют.
YP977
10.02.2017 01:00Меня тоже интересует этот же вопрос. И даже не через десяток лет, а достаточно года интенсивной работы.
Ладно ПК на нормальном интернете и большим диском все это загрузит и сможет работать. А что делать на мобильном устройстве, да еще и как вариант с 3G?
Как отправить деньги или проверить получил ли я их? Доверить расчет всех хэшей сторонней организации? И наверное хорошо если банку.
А если это банк и он «контролирует» мой кошелек (ну или я ему делегировал это право), то как по мне особой разницы нет, что блокчейн, что нет.
Ну может как одно из преимуществ самой технологии — скорость перевода средств между разными банками. Но мы все равно приходим к тому, что есть большие организации которые контролируют поток электронных денег, берут комиссии за транзакцию и т.д. Рано или поздно, при таком раскладе, обычные пользователи выйдут из игры только за счет того, что вычислительная мощность их оборудования или ширина канала просто не справится с нагрузкой. Я правильно понимаю?
Если рассматривать идею блокчейнов как технологию которая позволяет всегда получить однозначную информацию о состоянии каких-либо объектов, да еще и с историей, и к тому же с контролем целостности этой истории, то безусловно идея — супер.
Вот мне интересно: насколько технология позволяет масштабировать систему которая на ней работает?
Ну и да. Буду ждать новых статей. Тема интересная.vakimov
13.02.2017 15:51Вполне можно разбить работу с базой на «тонкого» клиента с несколькими последними транзакциями и «толстого» клиента — с полной базой. Даже если локальная проверять только нескольких последних транзакций — этого будет достаточно для хорошей безопасности в случае мелких переводов. Для более важных переводов полную проверку можно доверить нескольким независимым «толстым» клиентам.
Важно понимать, что такие «толстые клиенты» не будут иметь доступ к вашим кошелькам, а только смогут проверять, пришла ли на кошелек N нужная сумма.
Чтобы отправить платеж, нужно и того меньше — достаточно ключей от своих кошельков.
doobrik
13.02.2017 17:22А что делать на мобильном устройстве
Использовать тонкий клиент, как это изначально предусмотрено в архитектуре биткоина.
Как отправить деньги или проверить получил ли я их? Доверить расчет всех хэшей сторонней организации?
Чтобы отправить транзакцию просто создайте транзакцию, подпишите её, и доверте кому-нибудь чтоб он закинул её в сеть. Например можно использовать https://blockchain.info/pushtx
Доверять ему не надо. Подписываете транзакцию вы сами, подписывать свою транзакцию вы можете хоть на оффлайновом девайсе. Максимум что может сделать злоумышленик с вашей транзакцией, это просто не отправить её в сеть. Всё, никак по-другому вам навредить он не может.
Чтобы проверить, получили ли вы деньги, можно воспользоваться сервисом кого-угодно с полным клиентом. Сейчас таких несколько десятков только для биткоина. Навредить вам он так же никак не может. Максимум может не отобразить транзакцию. Ну так можно посмотреть на другом сервисе.
Gorthauer87
10.02.2017 00:34Мне лично кажется, что лучше аналогию с гитом проводить, по крайней мере, для разработчиков она наиболее понятная, да и очень близкая, если подумать.
QtRoS
11.02.2017 00:31Насущный вопрос — хочу присоединиться к использованию, значит я должен скачать всю историю транзакций? Сейчас там десятки гигабайт насколько я знаю. Технология приобрете большую популярность, как тогда начнет расти база? Кто-нибудь считал примерные цифры?
AlexHa
12.02.2017 05:25Мало того, база должна постоянно обновляться всеми участниками у всех участников для поддержания её актуального состояния. Информация о транзакции рассылается всем участникам и одновременно принимается информация о транзакциях всех участников. Объем передаваемой и принимаемой информации вроде бы не очень большой, но вычислений много. Допустим, в системе миллион участников, совершающих транзакции, в среднем, раз в сутки, раз в 86400 секунд. Тогда информация о транзакциях будет приходить 11,5 раз в секунду, с такой регулярностью все участники должны будут пересчитывать базу. Передавать информацию о собственных транзакциях участникам придётся по 1 миллиону адресов. Если информация о транзакции представляет собой блок в 1 кб, то получится передача 1 Гб на транзакцию. А если отключаться-подключаться, то каждый раз ещё и считывать актуальную базу. Если производительность компьютера большая, канал связи достаточно широкий, вроде бы ничего страшного. Нужно знать конкретные цифры, здесь сплошные «если».
grumbler66rus
14.02.2017 14:43Транзакции подписываются пачками (блоками), периодичность блоков заложена в распределённый алгоритм: чтобы подписать блок, нужно найти требуемый хэш, сложность поиска которого устанавливается алгоритмически, в Биткойне периодичность ~10 минут.
Клиенты могут генерировать хоть миллион транзакций в секунду, сеть узлов их примет только с момента подписания очередного блока. И ещё несколько блоков транзакция считается неподтверждённой, это защита от форка.
Размер базы транзакций уменьшается за счёт «контрольных точек». Консенсус майнеров периодически подтверждает «опорный» блок, ранее которого можно не хранить цепочку. Такие контрольные блоки периодически создаются (маркируются).
reinvent
13.02.2017 16:59Ведь по сути каждое звено блокчейн-цепи – это своеобразный полный бекап данных всех транзакций всех остальных участников на это звено.
Для биткоинов это точно не так, при сохранении офлайн сохраняется только кусок цепочки (и немудрено, поскольку объем такой базы колоссален)
doobrik
13.02.2017 17:13Не обязательно. У биткона есть тонкие клиенты, которые почти ничего не выкачивают и работают.
При создании биткоина изначально было предусмотрено что в конце-концов полные клиенты (со всей цепочкой блоков) будут в нескольких дата-центрах и у майнеров, а остальные пользователи будут использовать легкие клиенты, не выкачивая всю цепочку.
И нет, это практически не влияет ни на децентрализацию, ни на безопасность.
doobrik
13.02.2017 16:50О, Битфури, не те ли это ребята которые на деньги инвесторов начали майнить летом 2013-го а инвесторам начали отгружать свои девайсы только в конце сентября? Девайсы с пылью внутри, наверное нужно было хорошенько месяц-второй оттестировать перед тем как отдавать.
zapp
14.02.2017 14:00+1Мне нравится вот эта серия из 6-ти видео (с русскими субтитрами) «Блокчейн для чайников»
nckma
Собственно вопрос: как блокчейн технически работает?
Если база есть у всех одновременно, то как транзакция вписывается сразу всем?
Как несколько одновременных транзакций вписываются в базу?
p00h
Строго говоря, «одновременными» транзакции не будут. Будет принята, естественно, самая молодая.
Важно понимать, что в блоке всегда есть ссылка на предыдущую транзакцию. Давайте представим, что три участника А, Б, В имеют общий банк денег, которыми договорились совместно распоряжаться.
Транзакция 1. А перевел Б 100 рублей. Все три участника проверили и приняли транзакцию, первый блок записан.
Затем, Б хочет забрать 100 рублей и В хочет забрать 100 рублей. Начинается процесс обмена транзакциями для окончательного утверждения. Номер будущей транзакции — 2.
Согласно общему правилу, участник, совершивший транзакцию, рассылает блок ближайшим соседям и ожидает от них проверки и подтверждения принятия.
Вариант 1. Б передает А свою транзакцию. В ней указана ссылку на транзакцию 1, А соглашается с тем, что это верно. Проведя дополнительные проверки (содержащие некую бизнес логику, например), А принимает транзакцию и записывает ее к себе. Блок 2 создан. Теперь, когда, В попытается сделать тоже самое, ни А, ни Б не примут транзакцию, потому что ее место уже «занято».
Вариант 2. Б передает свою транзакцию В. В уже тоже «создал» блок номер 2, поэтому не примет ее, как верную. В данном случае возникнет коллизия, которую необходимо разрешить по согласованию сторон. Либо Б, либо В должны принять (уступить), либо настаивать.
Пример очень поверхностный, не учитывающий множество дополнительных факторов. Прошу не принимать за абсолютно правильный и верный.
p00h
Не «самая молодая», конечно же, а «самая старая». Во втором предложении.
AlexHa
Если есть еще участники, которые пока не активны, скажем, Г, Д, Е — как они узнают, что между А, Б, В произошли транзакции? У них есть какая-то первоначальная база с предыдущими транзакциями, они находились оффлайн, пока А, Б, В совершали свои сделки, вот один из них включаются и пытается что-то сделать, перевести, снять, еще что-то — что при этом происходит?
vakimov
Теоретически они могут продолжить совершать транзакции от более ранней версии базы. В результате база разветвится на две части и, так как их половина от всех пользователей, то это беда. Будет непонятно какое состояние базы актуальное. Но если есть еще пользователи И Й и далее по алфавиту, то это разветвление ничего плохого не сделает, так как их ветку большинство попросту не примут. Получается этой веткой смогут пользоваться только они Г, Д и Е. А зачем им это? По этому для работы с базой им нужно актуализировать ее. Если участников много — это не проблема. А делиться базой тоже выгодно, а то как еще узнают другие, что у тебя на счету появились деньги.
AlexHa
Т.е. они должны у кого-то скачать актуальную базу? А если её подменить?
Gorthauer87
Блокчейн это просто обычный односвязный список блоков с транзакциями, изменияющими состояние базы данных, если какую-то его часть подменить, то хеши следующих блоков изменятся и подмененный кусок не встанет на место старого.
AlexHa
Речь не о подмене части, а о подмене целиком, на актуальный на предыдущих стадиях, до проведения последних транзакций.
Gorthauer87
Для этого существует процедура анкоринга на что-то, что подменить крайне сложно.
К примеру, Ассанж, чтобы доказать, что он живой, сфотографировался с распечаткой хэша одного из последних блоков в биткоине.
AlexHa
В случае с Ассанджем это сопоставление с информацией, дата которой известна. С таким же успехом он мог бы держать газету с последними новостями, многим было бы понятнее. Каким образом такое можно сделать с базой? Ведь какие были транзакции после подмены, неизвестно. Если ориентироваться на то, что база должна «жить», т.е. постоянно должна меняться, то и это можно имитировать.
Gorthauer87
Можно сохранять хэши некоторых блоков и если всю базу подменить, то они никогда не сойдутся. А поломать биткоин — очень дорогая задача.
AlexHa
Исходное условие — у субъекта есть только устаревшая база. См. ранее на этой ветке. Субъект находится оффлайн, подключается и ему, например, через вредоносное ПО загружается устаревшая база. Она правильная, только устаревшая, но у субъекта данные ещё более старые. Так что все сойдётся. Если в базе есть дата, на которую она актуальна, требующиеся для актуализации транзакции имитируются, например, изолированной группой пользователей. Такое возможно?
Gorthauer87
Вот как раз имитировать транзакции будет невозможно: они все защищены криптографической подписью и нужно получить закрытые ключи всех остальных участников блокчейна
AlexHa
Зачем получать ключи вообще всех участников? Многие же могут оказаться не активны в интересующий период. Можно создать группу пользователей, которые совершают транзакции, с известными ключами, и от их имени имитировать активность. Участник Б занял сумму у участника А, сохранил базу на тот момент, потом деньги вернул участнику А, провел актуализацию сохранённой базы с использованием транзакций ботов-имитаторов, и отправил актуализированную таким образом базу участнику Г. Или в системе должны быть какие-то доверенные узлы, подтверждение от которых обязательно для всех транзакций?
vakimov
Если вам таким образом подсунули устаревшую базу, то да, подвоха можно и не заметить. Правда и получить с этого какую-то выгоду тоже будет сложно. Скажем в этой версии базы злоумышленник еще не потратил все свои деньги на выпивку. И теперь он попробует этими же потраченными деньгами расплатиться с вами. Ему нужно будет через свое вредоносное ПО залить вам еще несколько «правильных» транзакций, но уже созданных им от старого состояния базы. Если он не изобретатель квантового компьютера, то у него на это может уйти несколько лет.
Но вообще, на сколько я знаю, в транзакциях хранятся даты изменений, так что при подмене базы на устаревшую можно заметить, что «что-то никто во всем мире не обменивается биткоинами, наверное биткоин сдох».
AlexHa
А почему нужен квантовой компьютер? У злоумышленника, допустим, есть несколько компьютеров, и с их помощью он перекладывает деньги из одного своего кармана в другой свой карман, опираясь при этом на устаревшую версию базы. Здесь важны сроки, скажем, базу сохраняют за секунду до интересующей сделки, и в течении этой секунды компьютеры злоумышленника имитируют активность — шлют друг другу деньги и т.д. Сделка может быть выгодна, например, если уступаются какие-то права в электронном виде. Злоумышленник представляется платежеспособным. Или ключ участников изменяется после каждой сделки и не может быть скопирован? В этом случае да, этот вариант не пройдёт — ключ злоумышленника не подойдёт к устаревшей базе. Но такие ключи вроде бы могут быть реализованы только «в железе»?
vakimov
Ниже в комментариях я объяснял почему подтверждение одной транзакции задача, которую в реальные сроки можно решить используя только ооочень большие вычислительные мощности. Парой компьютеров тут точно не отделаешься.
Уж проще предположить, что злоумышленник взломает ваш комп и подменит ваш блокчейн клиент на фальшивый. Но для такого можно просто с дополнительного устройства, например телефона, проверить актуальность базы если уж операция настолько важная. А вообще как вы представляете себе определить с каких компьютеров будет проверяться ваша транзакция, если база храниться у огромного числа пользователей?
P.S. про ключи я что-то не понял, что вы имели ввиду
AlexHa
«Теоретически они могут продолжить совершать транзакции от более ранней версии базы. В результате база разветвится на две части» — это вы же писали здесь ранее. Из этого и исхожу. Сохраняем более раннюю версию базы и искусственно выращиваем вторую часть. Насчёт другого устройства, точнее, другого канала данных, это понятно, чем больше независимых каналов, тем надёжнее. Но у граждан независимых каналов много не бывает, максимум, 2-3. Мысль была заткнуть канал и на все попытки считать базу подсовывать свою. Про ключи мысль о том, чтобы у злоумышленника не получилось сделать искусственную базу из-за меняющегося ключа. Злоумышленник занял денег, ключ изменился, отдал деньги опять изменился, а базу, любую, и новую и старую, он может менять только с этим ключом. Любое действие злоумышленника меняет его ключ. Может быть так оно и работает? Но софтом такой ключ не сделать, его можно будет скопировать на каждом этапе.
vakimov
Теоретически да, это возможно. Но это все равно займет много времени для индивида (возможно годы). Почему же в общем случае это не занимает годы? Все по тому что продолжением базы (подтверждением новых шагов) занимаются очень большое число желающих. И чем их больше (чем чаще подтверждаются новые блоки), тем выше становятся требования к сложности подтверждения (заложено в систему). Иногда они даже объединяются в группы и потом делят выигрыш. Например, суммарная мощность для подтверждения блока биткина сейчас составляет 3,861,463,139 GH/s.
На этом и держится система. Пока она маленькая и не очень надежная, она никому особо и не нужна, чтобы совершать такие махинации. Чем она становится востребованные, тем она становится надежнее. Таким образом сложность взлома стремиться к тому, чтобы быть всегда дороже выигрыша от ее взлома.
P.S. Про ключи все равно не понял. Для подтверждения владения в биткойне используются ключи для подтверждения владения кошельком. Но он меняется только при переводе с одного кошелька на другой. Если у вас старая база, то и ключ от кошелька с деньгами старый.
AlexHa
Допустим, отключавшийся Г захотел продать что-то Б, который проделал такую операцию — занял у А крупную сумму, сохранил себе базу на тот момент, потом сумму вернул. Г подключается, пытается скачать базу и получает через вредоносное ПО, засевшее у него в роутере, базу от Б, в которой Б располагает занятой суммой. Ничего не подозревая, Г продает товар, фиксирует транзакцию, измененную базу сверяет с базой, которую вновь предоставляет Б, и отправляет товар. Что защищает от подобной процедуры?
grumbler66rus
Клиент («кошелёк») держит коннекты с несколькими узлами (пирами), для надёжной работы считается необходимым и достаточным 8 пиров. Если клиент имеет «белый IP», коннектов с пирами обычно больше. У каждого пира клиент получает список других пиров.
Клиент сверяет базу с каждым из пиров.
Для описанного вами злоумышленник должен имитировать все подключения к пирам, которые выбираются случайным образом из списка пиров, накопленного клиентом. Это реально, но несколько сложно.
Для надёжности можно посмотреть транзакцию и текущее состояние блокчейна на публичных сервисах (сайтах с HTTPS). Подделать сертификат SSL ещё сложнее, чем имитировать произвольных пиров.
vakimov
В статье приведена распространенная но слишком грубая метафора блокчейна, которая не объясняет ничего, но наводит мысли о наличии какой-то криптомагии.
Гораздо проще понять блокчейн, представив его как технологию подтверждения неких связанных действий. При этом не особо важно каких. Эта технология позволяет при получении базы этих связанных действий от какого-либо источника проверить, было ли потрачено на «некое действие» над каждым шагом очень большое количество времени, а точнее вычислительных ресурсов. При этом информация, над которым проводится «некое действие», очередной шаг или транзакция — это просто текст, НО, и это очень важно, с дополнительной частью в которой находится хеш предыдущего шага. Таким образом «некое действие» зависит не только от самого шага, но и от всех предыдущих шагов, т.к. оно зависит от хеша от хеша… от хеша самого первого шага. Вот вам и цепочка — chain в слове blockchain.
Помимо этого в полученной базе, разумеется, можно проверить, не нарушают ли все шаги какие-либо правила. Например, в случае криптовалют, что имеющимися деньгами нельзя расплатиться дважды, и что расплатиться можно только подтвердив право владения ими (подтверждение владения — это еще одна криптомагия основанная на цифровой подписи). Но это уже не относится к самому блокчейну.
Вот собственно и все. Пока никакой распределенной базы. Но осталось самое сложное — понять, что это вообще дает? А дает это следующее. Представьте себе, что все данные о шагах с подтверждениями «неких действий» над ними есть в открытом доступе. Каждый может их легко проверить, например, есть ли среди них шаг о перечислении денег на свой кошелек (оплатили ли мне товар). И только в результате использования огромных вычислительных ресурсов можно подтвердить (осуществить над ним «некое действие») новый такой шаг. Кто будет тратить эти выч. ресурсы? Тот, кому это выгодно. А выгодно это может быть, например, если по правилам этих шагов подтверждающий может получить комиссию за это. Если желающих на этом заработать много, то возникает следующая ситуация, когда множество желающих пытается наперебой подтвердить новые шаги. Кому повезло первым это сделать, получает гонорар в рамках этого шага, и сразу же старается передать этот шаг всем другим. Большинству остальных пользователей системы выгодно его принять, т.к. новый шаг подтверждает и все предыдущие шаги, т.е. в том числе и шаги отвечающие за благостостояние этих пользователей. Конечно при этом они проверят шаг не только на наличие подтверждения, но и на соответствие его правилам, а то вдруг подтверждающий зачислит из воздуха деньги себе, или приведет их со случайных счетов, не подтвердив право их использования, а какой смысл принимать такой шаг, если остальные его не примут, т.к. он нарушит работоспособность системы.
Вот вам и распределенность. Большинству выгодно хранить у себя эту базу (чтобы иметь возможность подтвердить перевод себе любимому денег), и расширять (совершать перевод одним и подтверждать эти переводы за вознаграждение другим).
Теперь сам корень этой магии. Подтверждением «некоего действия» служит угаданное число хеш от сочетания шага (транзакции) с которым, дает число начинающееся с нескольких нулей. Такое число можно только угадать. Таким образом «некое действие» — это угадывание такого числа. Сделать это сложно (зависит от количества нулей), отсюда и потраченные ресурсы на его угадывание.
Mur466
Если все меняют одну и ту же базу данных одновременно с разных копий, при этом база растет последовательно, звено за звеном, то как достигается всеобщая синхронизация? Почему не возникает в разных копиях у одного звена два разных продолжения? Как решается этот конфликт?
Если операция добавления нового звена такая затратная по вычислительным ресурсам, то почему проверка не требует этих ресурсов?
Gorthauer87
Обычно это решается через алгоритмы консенсуса, которые позволяют сети прийти к какому-то единому решению относительно того, какой из предложеных блоков принять как следующий.
В Биткоине это Proof of Work, нужно подобрать такой nonce, в результате которого хэш блока будет удовлетворять какому-то условию, которое однозначно вытекает из состояния на момент последнего принятого блока. Процесс подбора называется майнингов и вероятность того, что два узла подберут одновременно подходящий блок крайне мала, но такое иногда случается, в результате чего цепочка блоков форкается, но вычислительные ресурсы между форками неравномерно распределяются и один из форков просто пропадает, а узлы, которые принимали эти блоки просто откатываются до последнего нормального блока и выкачивают самую длинную известную цепочку.
vakimov
На первый вопрос ответили выше. Стоит так же добавить, что хоть ветвление в одно звено и может возникнуть, но вот расти оно вряд ли будет. Невыгодно будет поддерживать развитие ветки, которая в итоге умрет (то есть которой в итоге перестанут пользоваться) так как все заработанные с комиссии деньги будут потеряны (останутся в мертвой ветке). Поэтому всем подтверждателям переводов за комиссию будет выгодно как можно быстрее выявить ветку у которой есть будущее и продолжить развивать ее. Для этого можно определить принцип, какую ветку стоит выбирать в таких случаях.
Из этого следует, что тем, кто принимает денежные переводы, стоит подождать не только подтверждения шага с нужным ему переводом (вдруг параллельно ему подтвердят другой шаг без нужного вам перевода) а еще нескольких подтверждений других шагов осуществленных поверх вашего. Вот тогда это уж наверняка сигнал, что переведенные вам деньги оказались в живой ветке.
Второй вопрос интереснее. Почему проверка выполнения «некой операции» не требует тех же ресурсов, что само выполнение «некой операции»? Если очень абстрактно, то представьте эту операцию как поиск иголки в стоге сена. Искать ее долго (хотя вам может и повезти), а проверить, что вы ее нашли легко, если вы поставили на найденном месте флажок. Флажок и будет подтверждением вашей находки.
Математически же эту логику можно реализовать так. Представьте, что у вас есть алгоритм сложного перемешивания и преобразования исходного текста любой длинны, например «Большой большой стог сена», в небольшую строку. Получаться будет какая-то каша вроде «Ав02Й», но при этом, поскольку алгоритм осуществляет точный компьютер, то сколько не перемешивай копии одного и тот же текста, результат всегда будет одинаковым, а вот если изменить или добавить хоть одну букву к тексту, то результат перемешивания будет скорее всего совсем другим:
«Большой большой стог сена» ----> «Ав02Й»
«Большой большой стог сена A» -> «В59ф9»
И вот представьте, что вы пытаетесь добавить к тексту такую строку, чтобы в результате перемешивания, ну скажем получилось слово «иголка». И вот, несколько миллиардов попыток спустя вы нашли такую добавочную строку:
«Большой большой стог сена 0юФВа2дафВ3ущшч34» -> «иголка»
Эта строка и есть ваш флажок, указывающий на иголку, и подтверждение проделанной работы. Чтобы проверить, действительно ли получается в итоге «иголка», вам нужно перемешать исходную строку с добавленной строкой-флажком один раз. А вот чтобы найти строку-флажок вам нужно мноооого попыток.
reinvent
В криптовалютах своя система заработка, которая не применима напрямую для других объектов, к которым пытаются приспособить блокчейн. Поэтому вопрос автору статьи: кто подтверждает транзакции и как обеспечивается его заработок (с одновременным обеспечением вычислительной мощности, чтобы соблюдался общий принцип блокчейна: код на подмену не может быть сформирован быстрее, чем генерируется новый)?
vakimov
А вот это очень интересный вопрос.
В принципе любая система, основанная на блокчейне нуждается в больших вычислительных ресурсах на поддержание ее безопасности. При этом, эти ресурсы должны быть обязательно распределены между независимыми участниками, иначе возможен сговор и дискредитация системы. Если система предоставляет какую-то услугу, то за нее, как и за любую услугу, нужно платить. Как за пользование банковской карточкой вы платите деньги банку, который тратит эти деньги на мероприятия по поддержанию безопасности банковской системы. В случае с блокчейном вы можете сами осуществлять мероприятия по поддержанию безопасности сервиса — то есть осуществлять подтверждения своей и чужих транзакций. На начальном этапе развития системы это даже вполне реально. С ростом системы, будет все сложнее это сделать, т.к. требуемая сложность подтверждений увеличится. Но что если и в этом сервисе ввести свою виртуальную валюту, которой можно будет расплачиваться за подтверждение своей транзакции. Таким образом вы можете а) купить вычислительные мощности (компьютер помощнее) и самим подтверждать свои транзакции б) арендовать вычислительные мощности у других пользователей системы, купив у них виртуальную валюту. Это рождает рынок виртуальной валюты, и в результате вы покупаете безопасность не у выбранного банка, а у всего сообщества пользователей системы.
На сколько я знаю, таким образом, например работает блокчейн система Эфириум. Она позволяет осуществлять произвольные операции (контракты), расплачиваясь за вычисление операции «газом» (хз что это) а за подтверждение транзакций, то есть за безопасность, общей для всей системы валютой «эфиром». На базе этой технологии можно создать свои сервисы, например синхронизацию работы распределенной по разным странам конторы, с системой голосования при принятии решений. За эту услугу конторе придется платить, либо вычислительными ресурсами, либо «эфиром», который придется купить у сообщества. Таким образом «эфир» всегда кому-то нужен и его всегда выгодно добывать, так как всегда можно продать. Это есть ликвидность — основное свойство реальных валют.
Возможно есть способ создать и закрытую систему на основе блокчейна, каким-то хитрым образом обязав всех участников осуществлять поддержку безопасности системы. Но я пока не очень представляю как это сделать не вводя какой-то аналог валюты.