Bitcoin Forum

Local => Кодеры => Topic started by: Ahooleeman on June 07, 2017, 01:59:07 PM



Title: Делать ли свой блокчейн?
Post by: Ahooleeman on June 07, 2017, 01:59:07 PM
Всем привет, так случилось, что мы столкнулись с необходимостью использовать блокчейн технологию в нашем проекте. Но поизучав все вокруг, есть ощущение, что ни один из уже работающих блокчейнов не может решить нашу задачу, хотя мы может быть ошибаемся и вы сможете нам помочь?

Задача: записывать изменения цен на товары в интернет-магазинах.

Организация процесса:
- раздача на децентрализованные узлы задач для парсинга урлов с товарами и ценами.
- подтверждение парсинга N узлами. (делается ограничение на количество узлов (чтобы не создавать ddos на сайт магазина)
- скрытие данных узлов друг от друга, чтобы избежать фрода со стороны узлов.
- запись подтвержденного парсинга в блокчейн.

На данный момент мы выработали такую схему:
Транзакция – это набор адресов для актуализации цены + смарт-контракт на выполнение парсинга.

1. Первый этап: майнеры подбирают хэш, который дает право спарсить информацию и подписать смарт-контракт.

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

3.После получения N подписей, данные из смарт-контракта расшифровываются и проверяются первым майнером и если все данные от парсеров совпадают, смарт-контракт закрывается, а транзакция получает статус “в ожидании”.

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

Собственно вопрос. Есть ли блокчейн, на базе которого мы можем реализовать этот процесс? Или мы намудрили и можно как-то это все упростить?


Title: Re: Делать ли свой блокчейн?
Post by: imhoneer on June 07, 2017, 07:34:43 PM
Мне, например, непонятно зачем Вам и вашей группе вообще блокчейн. Смысл блокчейна в ценности самих данных, ради этого и создаются условия децентрализации, которые ведут к из неизменяемости и высокой сохранности.

Неужели данные этих цен будут так важны в условиях войны, революции или ядерного локального апокалипсиса на вашей территории?

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


Title: Re: Делать ли свой блокчейн?
Post by: Ahooleeman on June 07, 2017, 09:17:12 PM
Я осознанно не стал описывать общую концепцию проекта, а написал лишь задачу, которую решает блокчейн. Поверьте, нам есть зачем блокчейн в принципе внедрять и есть ситуации, которые показывают, что в нашем случае централизованное решение не будет эффективным. А наши условные майнеры будут питаться нашим условным токеном :)

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


Title: Re: Делать ли свой блокчейн?
Post by: imhoneer on June 08, 2017, 09:57:46 AM
Я осознанно не стал описывать общую концепцию проекта, а написал лишь задачу, которую решает блокчейн. Поверьте, нам есть зачем блокчейн в принципе внедрять и есть ситуации, которые показывают, что в нашем случае централизованное решение не будет эффективным. А наши условные майнеры будут питаться нашим условным токеном :)

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

Я Вас понял. Однако считаю, что вот в этом месте у Вас есть слабое звено

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

3.После получения N подписей, данные из смарт-контракта расшифровываются и проверяются первым майнером и если все данные от парсеров совпадают, смарт-контракт закрывается, а транзакция получает статус “в ожидании”.

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

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

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


Title: Re: Делать ли свой блокчейн?
Post by: Ahooleeman on June 08, 2017, 11:34:42 AM
Quote
2. Первый майнер, подобравший хэш, парсит необходимые данные, генерирует приватный и публичный ключи, после чего прикладывает в смарт-контракт публичный ключ и зашифрованные им полученные данные. Шифрование делается для того, чтобы исполнители смарт-контракта не знали о данных полученных первым майнером и не могли подделать информацию без парсинга. Таким образом исполнители смарт-контракта (со 2-го по N майнеры, нашедшие хэш) также парсят данные по адресам, присутствующим в транзакции, шифруют их публичным ключом первого майнера, передают данные в смарт-контракт и подписывают его.

3.После получения N подписей, данные из смарт-контракта расшифровываются и проверяются первым майнером и если все данные от парсеров совпадают, смарт-контракт закрывается, а транзакция получает статус “в ожидании”.

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

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

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


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

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

Последний вариант не исключен. Но опять же зачем кому-то что-то майнить и править, если монета никому не нужна, а если нужна, то вряд ли он придет один и будет заморачиваться с правкой блоков. Тут можно Шнурова цитировать, но не буду, там мат :)


Title: Re: Делать ли свой блокчейн?
Post by: imhoneer on June 08, 2017, 02:34:04 PM
Но даже, если такая ситуация случится, мы получим в очереди "в ожидании" две транзакции и если чудом второй хэш подберут одновременно два майнера и запишут разные транзакции как правильные, то решение будет как в биткойне, по сути верной будет принята более длинная ветка в итоге.

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

Последний вариант не исключен. Но опять же зачем кому-то что-то майнить и править, если монета никому не нужна, а если нужна, то вряд ли он придет один и будет заморачиваться с правкой блоков. Тут можно Шнурова цитировать, но не буду, там мат :)

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

Поэтому Вам бы, чем надеяться на авось, то лучше проработать такие варианты. Чтоб потом мучительно больно не было. Дьявол он ведь, как известно, в мелочах.


Title: Re: Делать ли свой блокчейн?
Post by: Ahooleeman on June 08, 2017, 04:12:00 PM

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

Поэтому Вам бы, чем надеяться на авось, то лучше проработать такие варианты. Чтоб потом мучительно больно не было. Дьявол он ведь, как известно, в мелочах.

Не волнуйтесь, мы проработаем :) Жаль только никто по существу вопроса пока не ответил :(


Title: Re: Делать ли свой блокчейн?
Post by: imhoneer on June 08, 2017, 06:41:03 PM
Не волнуйтесь, мы проработаем :) Жаль только никто по существу вопроса пока не ответил :(

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

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

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

Сама по себе идея для децентрализованной сети использовать централизованные данные плоха.

Лучше постарайтесь тогда создавать такие типы контрактов, чтобы один из участников, мог сам контролировать цену и в любой момент использовать ваш смарт-контракт.

Например, текущая цена биткоина на биржах 2700$, продаем смарт-контракт человеку за сумму в 300$(можно считать вероятности и тогда цену вариировать от 100$ до 300$, да и не Вы должны его продавать, Вы ведь не букмекеры, а потому будет продавать другой участник) и гарантируем ему, что в течении 30 дней, он использую наш контракт может купить биткоин за 3000$. Таким образом, человек сам следит за ценами и когда он видит курс на своей бирже, что биткоин начал стоить 3500$, то он использует контракт. И получает свою прибыль в 200$. И тогда ваша задача сводиться к более простым вещам, а именно гарантировать ему доставку этих биткоинов как можно быстрее.


Title: Re: Делать ли свой блокчейн?
Post by: ateregulov on June 18, 2017, 01:20:46 AM
Затея интересная, если решите с нуля запрограммировать - зовите, поучаствую.


Title: Re: Делать ли свой блокчейн?
Post by: FanatMonet on June 22, 2017, 03:59:17 AM
А чем не устраивают нынешние блокчейны? Биткоина или WAVES? Свой то чтобы сделать много усилий приложить придётся для того чтобы он работал.