Pull to refresh

Comments 42

Класс. На деталях реализации еос я поплыл, честно скажу, но в целом выглядит круто.


Ну и проблема всех хакатонов на лицо: красиво описать или сделать пусть не очень функциональный, но реально работающий образец

В общих словах, если ты на железке можешь поставить подпись при помощи модуля ECC (для микрожелезяк это серьезное довольно вычисление) — то в общем можешь считать, что она годится «в блокчейн». Удобно тем, что не надо поднимать никакие сервера для приема данных, выложил в сеть смарт-контракт, и железяки в него ходят, а процессят трназакции block-producer-ы. Несмотря на кучу тонкостей в реализации, эта схема все равно удобней IoT разработчику — он занимается строго железкой и может не волноваться о работоспособности сети, пускай об этом block-producer-ы волнуются, они за это профит получают
UFO just landed and posted this here
А теперь представьте как загибается visa и mastercard…
UFO just landed and posted this here
EOS хоть и крутой по сравнению с конкурентами, но эта задача не для него, вообще не для блокчейнов. Складывается такое впечатление что проблемы придумываются и подгоняются под тот или иной инструмент вместо того чтобы решать реальные проблемы наиболее подходящими средствами.
По большей части все именно так. Я сам занимаюсь в том числе и разработками, связанными с блокчейн технологиями. Должен сказать, что кейсов реального полезного применения этого всего в области IoT исчезающе мало.
ну мы постарались заюзать кусочек, который представляет реальную проблему — это учет показаний, выверка счетчиков, автооплата. Понятно, что никто не собирается использовать блокчейн как тупую базу данных для датчиков. Блокчейн — это в первую очередь про учет событий, а не про их содержание, и для платежей за энергоносители подходит неплохо, ибо данные небольшие и платежи нечастые, плюс строгий учет нужен, а свомещенный с автооплатой — вообще отлично.
Преимущество схемы в простоте и доступности владения системой датчиков — не надо держать ни одного центрального сервера, защищать его. Работоспособность сети — забота совершенно других людей, которым выгодно, чтобы она работала. Имхо, для разработчиков это очень круто — можно запустить сеть произвольного масштаба не владея ни одним сервером. Но можно еще долго сравнивать с централизованными решениями, и еще несколько лет децентрализованные будут проигрывать по многим статьям, но это точно ненадолго
Другими словами блокчейн это база, или даже упорядоченная очередь событий которые тригерят другие события и модифицируют локальные данные (то есть данные что в блокчейне, размер которых сильно ограничен). Все. Запустить что-то простенькое, типа по такому-то события списать с этого счета столько а на другой счет записать столько это еще можно, но что-то более сложнее это уже штаны через голову.

Вот где блокчейн применим это для сохранения ну очень важных данных где нужна практически 100% гарантия их неизменяемости, отсутствие цензуры или еще чего-либо (но опять же, сложно придумать реальные кейсы, так как 99.9999% гарантии можно добиться стандартными средствами). Вот сервисы, которые буду использовать эти данные — будут уже на серверах крутиться, в телефонах, IoT девайсах, и т.д.
Не сочтите за троллеж, но просто хотелось бы донести до людей часть своего опыта, чтобы они потом не бегали по тем же граблям.

Проблема сбора с датчиков никаким блокчейном не решается вообще, так как она находится в основном на «последней миле».

Еще одно распространенное заблуждение — это «сеть произвольного масштаба — забота других людей». Когда вы посчитаете реальную стоимость использования такой сети, и особенно посмотрите на реальную надежность её, то просто прослезитесь. Сейчас самая тривиальная транзакция в Эфире стоит порядка рубля (это без всякого смартконтракта!), если я буду постить данные со своего домашнего счетчика, то это больше 200 руб/день (даже СМСки будут дешевле!).

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

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

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

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

Там есть интересная тема с верификацией удаленных датчиков расположенных в untrusted environment, но это все больше про криптографию, чем про блокчейн.
Думаю с хабра дискуссию пора переносить, ибо она уже давно ушла от собственно статьи, которая попросту описывает один из вариантов решения задачи. Можем продолжить в любой соцсети например, или забить. Можем даже лично пообщаться, нам разумный подход крайне близок, и инфа от тех, кто разбирается в индустрии IoT нам крайне интересна, в ответ расскажем честно как дела обстоят у блокчейн-разрабочиков. Также напомню, что это все таки хакатон, а не подрядная работа на заказ от большой компании — и выбор темы хакатона — это все таки не стратегия выхода на рынок. Ну а логика и аргументация у нас точно есть — я могу запустить первый счетчик прямо сейчас и он будет платить сразу же в реальной криптовалюте не запустив ни одного сервера, не платя за хостинги, не делая бекапов, не нанимая админов. Вся моя система — набор из нескольких контрактов и железка с элементарным setup-ом. Уже есть юрисдикции, где такие платежи совершенно законны, и Россия точно скоро будет одной из них. В текущих реалиях, чтобы повторить то же самое но с рублями и централизованной базой показаний — объем вопросов, которые нужно решить на порядки больше. Значит такая система как минимум существенно упростит мне выход на рынок, что бы там мои датчики не считали. Это разве не преимущество?
Давайте перенесем куда-нибудь. Может у вас есть, например, Слак/Телеграм есть с подходящей аудиторией?

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

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

P.S.
Если будете делать что-нибудь дальше с RaspberryPi, то обязательно научитесь делать там readonly root, иначе её бутовая флэшка дохнет через месяц-полтора.
Вот сейчас было обидно, вообще то «линуксовая программа с вызовом web апи» была сделана одним членом команды из пяти часа за два-три, попробовавшим две разных железки. После этого команда пилила систему контрактов на C++, тесты, полностью работоспособный фронтенд да плюс еще и сделала удобную инфру для тестирования контрактов. А эта задачка под EOS в его текущем виде крайне нетривиальная. Ну а рынок для разработки — пусть он и рассудит
Извините за субъективную оценку, она основана только лишь на практической ценности продемонстрированного и не учитывает остальных достижений в области девелопмента под EOS.
У меня две новости, одна хорошая, одна плохая.

Плохая — в EOS данные хранятся в памяти, поэтому хватить должно именно RAM-а, а не диска. В наши дни это примерно 32Гб на весь блокчейн, в недалеком будущем по мере роста объема данных назваются размеры RAM-а 1 или 2 Tb.

Хорошая — EOS поддерживает (по крайней мере собирается поддержать) InterBlockchainCommunication, и не ограничивается одним централизовнным mainnet-ом. Так, например, поставщик электроэнергии может поднять собственный кластер EOS, или же сделать по кластеру на город. В последнем случае в центральном кластере нужно агрегировать необходимые данные, а не хранить все.

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

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

Когда уже кончится эта волна хайпа?
Чем блокчейн™ лучше обычного, централизованного сервера (-ов) с практической точки зрения?

Ничем, даже с теоретической )))
Глупый вопрос имхо. Централизация — контроль одного владельца. Если необходимо работать без доверия — нужна децентрализация. Так что сравнивать надо с другими децентрализованными или распределенными системами, без общего владельца.
А теперь вопрос, надеюсь не глупый: много ли есть проблем, или задач, которые ну никак не могут доверится центральному серверу или одному владельцу?

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

Вопрос доверия — выходит за рамки технической дискуссии, думаю на Хабре дальнейшей дискуссии не место. Я просто оставлю это и это здесь.

Еще один вопрос: неужели невозможно добиться доверия и прозрачности используя стандартные инструменты и централизованные решения?

Можно хранить данные централизованно и публиковать их, подписывая своим закрытым ключом. Наверное, понадобится какая-то упорядоченность данных, как минимум хронологическая. И утилиты работы с этим массивом данных. Какой готовый софт решит задачу? Например, из семейства Hyperledger или упомянутый локальный EOS.
По ходу статьи мы не говорим, что использование глобального децентрализованного блокчейна — обязательный элемент нашего решения.
вопрос не в доверии, а в том как делать что-то не используя доверие. Так что отвечу по первому вопросу:
Задач много. Есть уникальные, есть конкурирующие с централизованными решениями. Почитайте манифест шифропанков.
Сферический блокчейн в вакууме лучше централизованного сервера тем что в нем хранится история операций, которую крайне сложно переписать, особенно переписать так чтобы никто не заметил.

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

И кстати, чем в вашем представлении отличается централизованный сервер (во множественном числе — скажем 100 серверов) от EOS-кластера?
Если поставщик электроэнергиии захочет вас обсчитать он это сделает на уровне датчиков которые будут посылать в блокчейн / централизованный сервер завышенные данные. Вам в любом случае не знать сколько реально вы накрутили. Или за счет тарифов, комиссий всяких.

Далее, кто будет валидировать смарт контракты? Что там все четко и поставщик нигде ничего не обсчитывает, не меняет на ходу тарифы что сегодня чаджнул Х за киловатт, завтра Х*1.05, послезавтра опять Х (чтобы не сильно палевно)? Без армии «надсмотрщиков» не обойтись.

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

Нельзя не заметить что статьи про то как написать hello world на solidity заполонили хабр, но это не основание говорить что блокчейн не нужен или что он чем-то хуже реализации . В данной задаче его применение как раз таки очень даже оправдано.

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


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

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

Те проблемы, про которые вы говорите "каким-то образом гарантировать", решаются блокчейном из коробки. Все мы понимаем что Tim Towtdi еще не умер. Давайте обсуждать какую-то конкретную техническую альтернативу, потому что аргументы вида "это можно сделать и без блокчейна" пока разбиваются о логичный вопрос "а будет ли это 'без блокчейна' работать лучше/быстрее и будет ли оно проще/дешевле в реализации?".


Вот мы уже поняли что требования к системе примерно такие:


  • нужна гарантия того что на сервере выполняется тот код который заявлен (в любой момент времени существует гарантированный способ зафиксировать и проанализировать что именно сейчас выполняется, а лучше еще чтобы можно было узнать какая версия кода выполнялась месяц назад, и это может сделать кто угодно, а не только разработчик/maintainer ПО)
  • нужна гарантия того что данные попадут в систему (не будут отфильтрованы) и не будут изменены если уж они в систему попали
  • нужен доступ к данным по какому-то API, так чтобы любой желающий мог проверить что хранится в системе по конкретному счетчику.
  • запросов на запись пусть будет 2500/c, этого достаточно чтобы все население Швейцарии присылало данные с персонального счетчика раз в час.

Какую архитектуру предложите взамен описанной в этой статье и какие преимущества она даст?

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

Да, все так. Здесь недоверие с другой стороны: компания Вам не доверяет, что Вы передаете показания верно.
Я ничего не передаю. У нас, в Австралии, автоматом все трекается кто сколько газа сжег, электричества, раз в квартал присылают стейтмент со всякими графиками потребления. Если не доверяешь то сравниваешь с показателями счетчиков, если все норм — через пэйпал оплатил. Все.

Если считаешь что слишком много платишь выбираешь конкурирующую компанию с меньшими тарифами — переподключить не сложнее чем сменить мобильного оператора.

То есть проблемы не существует. Что можно еще сделать? Предоставить веб-морду где в реальном времени можно было отслеживать потребления, крутить разные динамические графики, чтобы все было максимально прозрачно. Можно сделать чтобы автоматом чарджило чтобы не пришлось вручную платить через пейпал или еще как-то.
В нашей системе все точно так же, только конкурирующие компании держат лишь несколько стандартных нод EOS, да и те — просто для гарантии доступности и личного удобства. Поэтому их затраты на поддержку инфраструктуры гораздо ниже, в связи с чем они могут предлагать более низкие цены на основной сервис. Это только с инфраструктурной точки зрения, также, в этой системе меньше точек отказа и векторов потенциального взлома.
В первую очередь отсутствием общего секрета со счетчиком и отсутствием необходимости защищать центральную базу показаний счетчиков. В традиционном решении вы ставите какой нить mysql или sql server, и сделать его открытым всему миру не можете, его сразу завалят. В блокчейне этой проблемы нет, за счет «оплаты» отправки транзакций и встроенной подписи каждой транзакции такая система попросту получается на порядок проще — поэтому ее и реально сделать за хакатон. Тут никакого волшебства, платить за эту простоту приходится избыточностью хранения, но для задач учета — это отлично подходит.
Хочу повторить ваш проект, есть куча вопросов. На распберри какая ось стояла, физически сколько компьютеров использовалось для построения своего блокчеина, как подымали мастерноду? На винде, как я понял, работать не будет? Где уроки посмотреть для работы с блокчеином ЕОS? Для постояных записей в смартконтракт не будет взиматься оплата за транзакции? Какой еще блокчеин позволяет производить постоянные записи в базу смартконтракта без взымания оплаты за транзакции?
algs подскажи по ОСи, пожалуйста

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

Поднимали на одном с помощью github.com/smartzplatform/eos-hackathon/blob/master/backend/dev/start_local_chain.sh

На винде, как я понял, работать не будет?

Не будет, работает на mac и linux.

Где уроки посмотреть для работы с блокчеином ЕОS?

Думаю скоро выпустим workshop на www.youtube.com/channel/UCn4kywh7NwNNHce2a2murSg.

Для постояных записей в смартконтракт не будет взиматься оплата за транзакции?
Будет взыматься. В локальном режиме (nodeos -e) у аккаунтов бесконечные ресурсы.

Какой еще блокчеин позволяет производить постоянные записи в базу смартконтракта без взымания оплаты за транзакции?
Не знаю, как такое может быть. Если запись бесплатна, можно заддосать всю сеть записью.
Не будет, работает на mac и linux.

В подсистеме линукса (которую запилили в win10) работает нормально. Правда не знаю по какой причине через некоторое время он перестает генерить блоки и приходится перезапускать.

на Raspberry стоит Raspbian stretch lite (релиз от 2018-04-18), скачан отсюда

Установил UBUNTU, первое действие на скачивание вываливает ошибку, что делаю не так?
hkar.ru/URKh

Была бы более подробная инструкция по повторению вашего замечательного проекта…
Написано же, что git не найден, но может быть установлен с помощью sudo apt install git
Работаю с PIC AVR esp8266, с линуксом и блокчеином не работал, поэтому задаю «глупые» вопросы
Когда видео запилите с порядком сборки проекта? Или где примеры сборки есть выложены?
Ноду запустил, но что делать дальше не понятно. Есть какое нибудь видео как запустить запись в контракт EOS на своей ноде?
Sign up to leave a comment.