Author

Topic: Децентрализация против подбора (Read 196 times)

legendary
Activity: 2744
Merit: 1588

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

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

legendary
Activity: 2674
Merit: 2334
Что ж вынужден признать, что дискутировать не о чем, т.к. идея о децентрализации не получилась.
Возможно, Ваша идея очерёдности майнинга согласно некому хешу может быть полезна для установления приоритета в PoW-алгоритмах, чтобы исключить майнинг орфанных веток.
legendary
Activity: 2744
Merit: 1588

Во-первых, вы получили те же самые яйца вид сбоку ту же самую систему PoS,
но в классическом её исполнении ваш шанс смайнить блок зависит от вашего созревшего стека, а
в вашем случае - вам придется стек раскидать на 100500 адресов, чтобы максимизировать
ваш шанс смайнить блок. Ситуация какая-то искусственная, вам не кажется? То есть человек
с 1000 монет раскиданных по 1000 адресов будет майнить блок в 1000 раз чаще в среднем,
чем человек с 1 монетой? Зачем же тогда страдать херней нагружать блокчейн таким сплитом монет?

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


Что ж вынужден признать, что дискутировать не о чем, т.к. идея о децентрализации не получилась.
sr. member
Activity: 770
Merit: 305
Для этого получаем хеш текущего номера блока(именно номера, а не хеша блока),
далее берем адрес майнера текущего блока (майнеры подписывают блок, как транзакции)
и получаем хеш адреса этого майнера, после этого получаем общий хеш из этих двух хешей.
Ах, простите.
Я действительно плохо прочитал.
То есть система выбирает майнера исходя из номера блока и текущего списка майнеров,
который как-то записан в блокчейне?

Во-первых, вы получили те же самые яйца вид сбоку ту же самую систему PoS,
но в классическом её исполнении ваш шанс смайнить блок зависит от вашего созревшего стека, а
в вашем случае - вам придется стек раскидать на 100500 адресов, чтобы максимизировать
ваш шанс смайнить блок. Ситуация какая-то искусственная, вам не кажется? То есть человек
с 1000 монет раскиданных по 1000 адресов будет майнить блок в 1000 раз чаще в среднем,
чем человек с 1 монетой? Зачем же тогда страдать херней нагружать блокчейн таким сплитом монет?

Во-вторых, опять же есть варианты злоупотреблений.
Например, регистрация нового майнящего адреса. Она должна делаться как-то заранее.
Я не могу "зарегистрировать" майнящий адрес для блока #101 в моем собственном блоке #100
(опять же - потому что я смогу подобрать адрес таким образом, чтобы и блок #101 майнил бы я)
А будет ли выгодна "регистрация" чужих майнящих адресов? Допустим, в какой-то момент
есть 10 "майнеров". Какая сила заставит одного из них включить в блок транзакцию, которая
создает 11-ого стороннего майнера?

Конечно, свое альтер-эго включить каждый захочет - сперва ты имеешь 1 блок из 10, но регистрируешь
еще 20 своих адресов и имеешь уже 21 шанс из 30. Регистрировать чужие адреса тебе невыгодно.
legendary
Activity: 2744
Merit: 1588

То есть получается следующая стратегия:
Я создаю 100500 мелких адресов, на которые может выпасть шанс майнинга следующего блока.
В какой-то момент времени на один из моих адресов выпадает тот самый рандом.
Информацию об этом я получаю в 11:50
Блок #100 я должен отправить в сеть в 12:00
В 12:01 сеть меня начнет штрафовать, но у меня есть "льготный период" в 1 час до 13:00
Так?

Что я делаю? Начиная с 11:50 и до 12:59 я всеми своими мощностями перебираю разные варианты
блока #100 чтобы потом блок #101 тоже выпал бы на мой майнинговый адрес. Для этого я могу
пересортировывать транзакции, добавлять в блок свои собственные транзакции (достаточно
одной, чтобы изменился хэш заголовка), в общем, занимаюсь тем самым PoW который
в данном случае похож на PoS, потому что мне одновременно нужны и процессорные мощности,
и шанс на успех зависит от моего суммарного стека.

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

Я же Вам писал в посте 13

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

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

- адрес майнера, который создал текущий блок. Данная величина мало и плохо прогнозируемая, т.к. определяется суммарными предыдущими данными.

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





sr. member
Activity: 770
Merit: 305
Поэтому в блокчейн вначале пишется штрафной блок, а потом он заменяется на полученный валидный блок от майнера. Вариант Б.
То есть получается следующая стратегия:
Я создаю 100500 мелких адресов, на которые может выпасть шанс майнинга следующего блока.
В какой-то момент времени на один из моих адресов выпадает тот самый рандом.
Информацию об этом я получаю в 11:50
Блок #100 я должен отправить в сеть в 12:00
В 12:01 сеть меня начнет штрафовать, но у меня есть "льготный период" в 1 час до 13:00
Так?

Что я делаю? Начиная с 11:50 и до 12:59 я всеми своими мощностями перебираю разные варианты
блока #100 чтобы потом блок #101 тоже выпал бы на мой майнинговый адрес. Для этого я могу
пересортировывать транзакции, добавлять в блок свои собственные транзакции (достаточно
одной, чтобы изменился хэш заголовка), в общем, занимаюсь тем самым PoW который
в данном случае похож на PoS, потому что мне одновременно нужны и процессорные мощности,
и шанс на успех зависит от моего суммарного стека.

Что в это время делает вся остальная сеть? Жует сопли. Потому что майнить поверх
штрафного блока #100 смысла нет (да и тот самый майнер, который должен сгенерировать
#101 может находиться в оффлайне).

В общем, я вижу концептуальные проблемы вашего предложения. Если вы их не видите,
а продолжаете упорствовать - ну это уже не моя проблема. Не хотите видеть - попробуйте
реализовать это и заработать на этом. Я всегда проповедовал принцип - если есть время
заниматься хуйней - почему бы не заняться? Не все ли равно на что тратить свободное время?
legendary
Activity: 2744
Merit: 1588

Блядь. Вы на вопрос отвечать будете?
Майнер должен сгенерировать блок в 12:00
В 12:01 ноды сети начали распространять "штрафной блок"
в 12:02 я подключаюсь к сети и получаю от одного из пиров "штрафной блок высоты N",
а от другого пира валидный блок высоты N c таймстампом 12:00

Что мой клиент должен записать в блокчейн? А или Б?

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

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

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

После этого берем хеш номера 101, берем хеш адреса майнера 100 блока, получаем общий хеш и ищем блок от майнера с этим адресом.

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

Поэтому в блокчейн вначале пишется штрафной блок, а потом он заменяется на полученный валидный блок от майнера. Вариант Б.

sr. member
Activity: 770
Merit: 305
Вот тут другой вариант. В каждом блоке майнер проставляет временную метку и дату в едином для всех формате, конечно он может поставить любую, но при принятии его блока если время или дата будут отличаться о общего времени наверное на 1-3 часа (как раз временное окно механизма согласования) назад , то блок принят не будет. Это если клиент работает в онлайн режиме и принимает новые блоки.

Блядь. Вы на вопрос отвечать будете?
Майнер должен сгенерировать блок в 12:00
В 12:01 ноды сети начали распространять "штрафной блок"
в 12:02 я подключаюсь к сети и получаю от одного из пиров "штрафной блок высоты N",
а от другого пира валидный блок высоты N c таймстампом 12:00

Что мой клиент должен записать в блокчейн? А или Б?
legendary
Activity: 2744
Merit: 1588

А если у меня не синхронизирован блокчейн?
Я вечером выключил комп (последний блок был 100), включил с утра и получаю от одного
пира блок 101 (валидно оформленный), а от другого пира штрафной блок?
Кому верить?

Если временные рамки механизма согласования не вышли, то все просто, блок 101 заменяет штрафной блок.

Но, а вот, что будет, если они вышли, а я думаю Вы этот вариант предусматривали в вопросе.

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

Если он с нуля качает блокчейн или согласовывает вчерашний блокчейн с сегодняшним, то нужно смотреть на время пришедшего 101 валидного блока, если время не отличается от 100 блока на 1-3 часа, то принять его и опросить дополнительно случайных 30 нод на этот блок, если там тоже самое, то принять его окончательно, ну а если время больше, то отбросить и оставить штрафной блок.

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


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


А вот это хотелось бы понять

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

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


legendary
Activity: 2744
Merit: 1588

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

Скиньте, мне интересно посмотреть, особенно хочу понять момент, что будет мотивировать держать ноды, если не деньги.
full member
Activity: 411
Merit: 139
Там сравнивались именно алгоритм POS против POW, более того они могли чего-то не учесть.
Что именно не учесть? Это по сути академические исследования - т.е. научные.


Quote
А вот в это уже не верю я
Верить или не верить нужно в церкви. В научных исследованиях нужно знать.

Quote
Прикольно, мы с Вами пытаемся решить одну проблему, но с разных сторон  Grin

Я просто параллельно создаю блокчейн - чистый блокчейн, там даже денег не будет (но будет PoW для защиты и будут смарт-контракты для всего прочего).
Могу подробности скинуть в личку, если интересно...
sr. member
Activity: 770
Merit: 305
Не много не так.
Вот смотрите, когда ваш клиент синхронизирован Вы нормально получаете блоки и блокчейн растет, пусть вы получили сейчас 100 блок, Вы вычислили адрес майнера и ждете от него блок.
А если у меня не синхронизирован блокчейн?
Я вечером выключил комп (последний блок был 100), включил с утра и получаю от одного
пира блок 101 (валидно оформленный), а от другого пира штрафной блок?
Кому верить?

Вообще-то это повод для злоупотреблений - по сути дела каждой ноде становится
финансово невыгодно релеить чужие блоки, так как выгоднее считать, что блок никто
не смайнил, подождать минуту и отослать (а так же включить в собственный блокчейн)
штрафной блок. Либо система вырождается в тот же самый PoS только теперь для
эффективного майнинга надо иметь не "один созревший выход", а "много маленьких майнящих депозитов"
legendary
Activity: 2744
Merit: 1588

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

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




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




Можно подправить PoW, сделать алгоритм асикоустойчивым (а также GPU-устойчивым). Я даже знаю как: https://bitcointalksearch.org/topic/pow-2666995

А вот в это уже не верю я, так как всегда можно найти более мощные вычислительные ресурсы, чем у другого человека. Да даже элементарно, у меня слабый ноутбук, а у человека мощный сервер. Как здесь уравнять?

Прикольно, мы с Вами пытаемся решить одну проблему, но с разных сторон  Grin

legendary
Activity: 2744
Merit: 1588


Опять не сходится.
Кто создает этот "штрафной блок"? Кто-то один или все сразу?
Допустим, вы сможете выбрать из сети "арбитра", который и будет штрафовать майнера
(Хотя это напоминает задачу про белого бычка - сперва выбираем майнера, потом выбираем арбитра,
потом выбираем арбитра для арбитра...). Либо арбитром являются все ноды сети.

Но как быть мне? Я утром включаю свой клиент и получаю от одного своего пира блок N, а от другого пира
штрафной блок N. Как мне определить - кто мне врёт? Майнер или арбитр?


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

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

После этого берем хеш номера 101, берем хеш адреса майнера 100 блока, получаем общий хеш и ищем блок от майнера с этим адресом.

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

sr. member
Activity: 770
Merit: 305
Если майнер которому нужно создать следующий блок отказывается это делать, создает неправильный блок или не создает его по другим причинам. То прошествии определенного времени, примерно 1 минута, создается штрафной блок, где деньги с этого адреса майнера или забираются на спец счет транзакцией или же просто сгорают.

Опять не сходится.
Кто создает этот "штрафной блок"? Кто-то один или все сразу?
Допустим, вы сможете выбрать из сети "арбитра", который и будет штрафовать майнера
(Хотя это напоминает задачу про белого бычка - сперва выбираем майнера, потом выбираем арбитра,
потом выбираем арбитра для арбитра...). Либо арбитром являются все ноды сети.

Но как быть мне? Я утром включаю свой клиент и получаю от одного своего пира блок N, а от другого пира
штрафной блок N. Как мне определить - кто мне врёт? Майнер или арбитр?
full member
Activity: 411
Merit: 139
Quote
Самые первые блоки майнит создатель, все по следам Сатоши Накомото. Как только намайнилось достаточно монет, пусть хотя бы 10-20, то эти блоки намертво вставляем в клиент и приглашаем остальных участников.

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


Quote
Я читал эти исследования и моя идея и состоит, чтобы обойти эти ограничения так сказать "виртуальности".

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


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

Можно подправить PoW, сделать алгоритм асикоустойчивым (а также GPU-устойчивым). Я даже знаю как: https://bitcointalksearch.org/topic/pow-2666995

legendary
Activity: 2744
Merit: 1588

Сорян. Я не стал читать стартовый топик и все обсуждение дальше пункта 8.
Уже сразу видны проблемы: что значит "вычисляем сам хэш"?
На разных нодах разный набор транзакций, а с помощью их перестановки и/или
использования scriptSig coinbase-транзакции можно заниматься подбором до
тех пор, пока результат не станет нас удовлетворять.

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

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

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

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

- адрес майнера, который создал текущий блок. Данная величина мало и плохо прогнозируемая, т.к. определяется суммарными предыдущими данными.

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


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

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

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




sr. member
Activity: 770
Merit: 305
2.   Вычисляем сам хеш текущего созданного нами блока.

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

Сорян. Я не стал читать стартовый топик и все обсуждение дальше пункта 8.
Уже сразу видны проблемы: что значит "вычисляем сам хэш"?
На разных нодах разный набор транзакций, а с помощью их перестановки и/или
использования scriptSig coinbase-транзакции можно заниматься подбором до
тех пор, пока результат не станет нас удовлетворять.

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

legendary
Activity: 2744
Merit: 1588

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

Еще что мне не нравится:
Майнера может не оказаться в сети, значит пользователи пострадают
Непонятно кто будет первый майнер - ведь сначала нужно положить депозит, а чтобы положить депозит нужно чтобы кто-то принял транзакцию в блок и подписал...
Перестройка всего блокчейна это очень плохо. Кстати вы оперируете временем 20 блоков и 1-3 часа, у вас что блоки 10 минут будут создаватьсяHuh Нужно 5 сек, а 10 минут у нас уже давно есть...

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

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

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

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

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




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

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

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

Подменить блокчейн мешает скомпилированный клиент, содержащий в себе начальные блоки.



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

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


А кстати вопрос немножко не в тему, а зачем вам это все, зачем алгоритм консенсуса придумываете?

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

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

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


full member
Activity: 411
Merit: 139
А вот этого не могу понять, какую цепочку Вы хотите заменить в блокчейне, прошлую или создать будущую?
Сначала прошлую чтобы провести двойную трату, чтобы выставить себя как майнера и получать деньги за майнинг, а потом будущие - навсегда стать майнером.

Еще что мне не нравится:
Майнера может не оказаться в сети, значит пользователи пострадают
Непонятно кто будет первый майнер - ведь сначала нужно положить депозит, а чтобы положить депозит нужно чтобы кто-то принял транзакцию в блок и подписал...
Перестройка всего блокчейна это очень плохо. Кстати вы оперируете временем 20 блоков и 1-3 часа, у вас что блоки 10 минут будут создаватьсяHuh Нужно 5 сек, а 10 минут у нас уже давно есть...


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


Quote
Да у моего алгоритма идеология POS
Quote
Так у меня он и есть объективный.

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



P.S.
А кстати вопрос немножко не в тему, а зачем вам это все, зачем алгоритм консенсуса придумываете?


legendary
Activity: 2744
Merit: 1588

Легко! Хеш создается примерно со скоростью 100К в секунду на обычном компе на одном ядре.
Тем более нам нужен не конкретный, а просто наиболее близкий. Генерим миллиард, потом отбираем нужную цепочку адресов и первый адрес в цепочке встраиваем в генезис блок, все делов то день работы...

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



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

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

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

- адрес майнера, который создал текущий блок. Данная величина мало и плохо прогнозируемая, т.к. определяется суммарными предыдущими данными.

Таким образом искомый адрес майнера для нового блока, это комбинация слабо и сильно меняющихся данных.


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

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

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

В текущем моменте мы имеем объединенную сеть состоящую из 2-х подсетей в результате потери связи:

- первую, где был майнер на 1-ом блоке от общего и она имеет сейчас 20 блоков от общего.

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

Т.е. эти две разделенных сети синхронизировали только свои первые блоки от общего.


Далее во второй сети начинается поиск адреса майнера для следующего блока, в то время как в первой сети этот майнер получил штраф, т.к. от него не было блока.

Майнер во второй сети создает блок и рассылает сети. Что происходит:

- в первой сети приходит второй блок от общего, он заменяет собой штрафной блок и начинается переделка блокчейна.

- во второй сети, где уже прошла переделка блокчейна, он просто включается в цепочку блокчейна.


Таким образом, после потери связи и разделения сети на 2 равных сети, они по отдельности нагенерили по 20 разных блока от общего блока (место от которого пошло разделение), но при востановлении связи и соединении, они синхронизировались на 2 блока от общего, а остальные блоки у той и другой сети были удалены, транзакции в этих блоках были перемешены в мемпул.

Пожалуй для механизма согласования временное окно сутки это много и скорее это будет 1-3 часа.

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

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


Еще раз про объективность и субъективность, дело не в плохом или хорошем PoW. Просто алгоритм консенсуса должен быть объективным (см. выше определение).

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

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



Оказывается то что вы пытаетесь придумать уже как всегда придумано Smiley
Quote
PoS на основе цепи
Алгоритмы PoS на основе цепи симулируют консенсус PoW, в котором протокол присваивает право создания целого нового блока псевдослучайно выбранному валидатору, а новый блок привязывается хэшем к родительскому блоку самой длинной предыдущей цепи.

Да у моего алгоритма идеология POS, он так и называется RndPOS, только в отличии от него не привязывается к большинству и величина денег не играет никакой роли.





P.S.
Хотя, я тут подумал, даже если адрес предопределен я тоже самое могу сделать (сгенерить нужную цепочку адресов, переподписать ими блоки, а потом выкинуть все это в сеть). Все алгоритмы PoS этому подвержены, для защиты от таких атак применяются "чек-поинты". Но все это попахивает централизацией и не соответствует названию вашей темы Smiley

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

full member
Activity: 411
Merit: 139
Quote
нагенерить конкретно заданный хеш не так легко.

Легко! Хеш создается примерно со скоростью 100К в секунду на обычном компе на одном ядре.
Тем более нам нужен не конкретный, а просто наиболее близкий. Генерим миллиард, потом отбираем нужную цепочку адресов и первый адрес в цепочке встраиваем в генезис блок, все делов то день работы...



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

Дык все же зависит от адреса актуального майнера? Мне показалось что нет. Выше писали про объединение сети и там так получалось, что все адреса известны заранее.
Просто если это не так и адрес майнера меняется, то возможна атака из глубины. Я задним число переделываю все транзакции, в том числе что якобы положил давно себе деньги... В итоге все новые ноды, случайно соединившиеся со мной загрузят мою версию блокчейна и аналогично будут "заражать" остальные новые ноды, а если новых нод (например при неожиданном росте) будет больше старых, то мы заполоним сеть...


Еще раз про объективность и субъективность, дело не в плохом или хорошем PoW. Просто алгоритм консенсуса должен быть объективным (см. выше определение).


P.S.
Хотя, я тут подумал, даже если адрес предопределен я тоже самое могу сделать (сгенерить нужную цепочку адресов, переподписать ими блоки, а потом выкинуть все это в сеть). Все алгоритмы PoS этому подвержены, для защиты от таких атак применяются "чек-поинты". Но все это попахивает централизацией и не соответствует названию вашей темы Smiley



Оказывается то что вы пытаетесь придумать уже как всегда придумано Smiley
Quote
PoS на основе цепи
Алгоритмы PoS на основе цепи симулируют консенсус PoW, в котором протокол присваивает право создания целого нового блока псевдослучайно выбранному валидатору, а новый блок привязывается хэшем к родительскому блоку самой длинной предыдущей цепи.


еще цитата из 2015 года:

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

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

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

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

legendary
Activity: 2744
Merit: 1588
Очень рад, что поддерживаете дискуссию.


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

Адрес майнера - это адрес кошелька, на который положена не большая сумма и которой нужно отстояться примерно 7 дней (это как классический POS только сумма не играет роли, только чтобы она была не меньше определенного количества. Сумма небольшая, чтобы каждый мог иметь у себя несколько кошельков). Поэтому Вам надо не только нагенерить, но и положить туда деньги. И этот кошелек активен станет только через дней 7. Поэтому не получиться создать кошелек с нужным адресом под следующий блок.




2. Следующий минус: создатель криптовалюты может изначально нагенерить их - так как у него будет фора во времени. Он точно будет знать какой адрес будет следующий (Какой победит) и поэтому может приступить к генерации 3-го и т.д.

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

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




Почитайте плиз про объективность и субъективность. Алгоритм консенсуса это как "матрица", туда почти не пробиться информации из реального мира. Почти... PoW - это единственный пока известный способ передать информацию в эту "матрицу".

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

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

full member
Activity: 411
Merit: 139
Странно сами привели мою цитату и написали совершенно другое.
Каюсь, отвечал на 1-й пост, а выделил для ответа последний.

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

Получается здесь жестко заданная предопределенность.
Здесь есть два минуса:
1. Можно заранее просчитать кто будет следующий (если известны все адреса майнеров), в итоге никто сеть поддерживать не будет  кроме избранных и то один раз...
Отступление:
А что такое адрес майнера? Если просто адрес кошелька, то все совсем плохо, т.к. они создаются ленко с огромной скоростью - соответственно всегда можно нагенерить миллионы и все соревнование которое сейчас заключается в поиске редкого хеша уйдет в сторону поиска редкого адреса.
2. Следующий минус: создатель криптовалюты может изначально нагенерить их - так как у него будет фора во времени. Он точно будет знать какой адрес будет следующий (Какой победит) и поэтому может приступить к генерации 3-го и т.д.




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


legendary
Activity: 2744
Merit: 1588
Для выбора следующего майнера мы не будем использовать хеш всего блока, где есть транзакции. А будем учитывать только следующие величины.
1. Номер блока. Даже если хешировать просто номер нового блока, то мы будет получать всегда разный хеш, но понятно, что учитывать только его нельзя так как его значение прогнозируемое.
2. Адрес майнера смайневшего текущий блок. Данная величина является мало прогнозируемой и становиться окончательно известной, только при получении текущего блока. В случае если блок не получен, то создается штрафной хеш блок без подписи, но майнер для этого блока считается, как адрес майнера создавший предыдущий блок.

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

Таким образом практически исключается возможность подбора хеша под нужные параметры.

Сеть будет небезопасна, а консенсус недостижим. Я уже вам писал в теме-дубле: https://bitcointalksearch.org/topic/rndpos-2715170
Но вы не дали ответ. Формально ответили, но вопросы не были решены. Повторяюсь вам нужно решить проблемы:
1. Атака из глубины
2. Вечный майнер - манипуляция текущего майнера с хешем блока для вечного своего выбора для валидации следующего блока.

Вот пример ситуации:
1. Представьте что сеть случайно на некоторое время разделилась (оборвался канал связи между Европой и Америкой). В обоеих частях сети образовалось по 20 блоков. После того как каналы связи подсоединились чьи блоки примут участники сети? А третьи лица - новые пользователи, которые только что загрузили клиент: у них две версии блокчейна... Еще хуже ситуация - атака из глубины, я практически с нулевого блока переписываю цепочку и отправляю в сеть, чем моя цепочка хуже?
2.Что мне мешает на пункте 2 такой создавать блок, чтобы хэш был всегда мне выгоден? Просто добавляя ту или иную транзакцию с суммой около нуля, пока хэши от пунктов  2-4 не станут похожи на наш адрес, чтобы опять победить в гонке за майнинг. Такая операция подбора будет выполняться очень быстро - порядка миллиона в секунду и при наличии даже миллиона адресов кошельков можно за 1 секунду подобрать нужный...

Странно сами привели мою цитату и написали совершенно другое.

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


Теперь пункт 1.
Начнем с этого момента

Quote
Еще хуже ситуация - атака из глубины, я практически с нулевого блока переписываю цепочку и отправляю в сеть, чем моя цепочка хуже


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



Quote
А третьи лица - новые пользователи, которые только что загрузили клиент: у них две версии блокчейна...

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



Quote
Представьте что сеть случайно на некоторое время разделилась (оборвался канал связи между Европой и Америкой). В обоеих частях сети образовалось по 20 блоков. После того как каналы связи подсоединились чьи блоки примут участники сети?

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

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

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

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

Пусть в каждой сети создалось 20 блоков. Потом через некоторое время связь востановилась.

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

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

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



full member
Activity: 411
Merit: 139
Для выбора следующего майнера мы не будем использовать хеш всего блока, где есть транзакции. А будем учитывать только следующие величины.
1. Номер блока. Даже если хешировать просто номер нового блока, то мы будет получать всегда разный хеш, но понятно, что учитывать только его нельзя так как его значение прогнозируемое.
2. Адрес майнера смайневшего текущий блок. Данная величина является мало прогнозируемой и становиться окончательно известной, только при получении текущего блока. В случае если блок не получен, то создается штрафной хеш блок без подписи, но майнер для этого блока считается, как адрес майнера создавший предыдущий блок.

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

Таким образом практически исключается возможность подбора хеша под нужные параметры.

Сеть будет небезопасна, а консенсус недостижим. Я уже вам писал в теме-дубле: https://bitcointalksearch.org/topic/rndpos-2715170
Но вы не дали ответ. Формально ответили, но вопросы не были решены. Повторяюсь вам нужно решить проблемы:
1. Атака из глубины
2. Вечный майнер - манипуляция текущего майнера с хешем блока для вечного своего выбора для валидации следующего блока.

Вот пример ситуации:
1. Представьте что сеть случайно на некоторое время разделилась (оборвался канал связи между Европой и Америкой). В обоеих частях сети образовалось по 20 блоков. После того как каналы связи подсоединились чьи блоки примут участники сети? А третьи лица - новые пользователи, которые только что загрузили клиент: у них две версии блокчейна... Еще хуже ситуация - атака из глубины, я практически с нулевого блока переписываю цепочку и отправляю в сеть, чем моя цепочка хуже?
2.Что мне мешает на пункте 2 такой создавать блок, чтобы хэш был всегда мне выгоден? Просто добавляя ту или иную транзакцию с суммой около нуля, пока хэши от пунктов  2-4 не станут похожи на наш адрес, чтобы опять победить в гонке за майнинг. Такая операция подбора будет выполняться очень быстро - порядка миллиона в секунду и при наличии даже миллиона адресов кошельков можно за 1 секунду подобрать нужный...


Для лучшего понимания смысла протоколов привожу цитату отсюда:
https://bits.media/images/news/290915/PoS%20vs%20PoW%201.0-ru.pdf


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

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

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

Определение 5. Протокол согласования является слабо субъективным, если узлу нужно недав-
нее состояние в дополнение к правилам протокола и сообщениям, распространяемым по си-
стеме, чтобы независимо определить текущее состояние системы.

В случае подтверждения доли, если есть правило, которое запрещает ветвления длины бо-
лее N, то есть после точки ветвления не может быть больше N блоков, то достаточно считать
содержимое блока глубины N или меньше, чтобы надежно определить текущее состояние си-
стемы. Вновь прибывший пользователь может получить доступ к блоку от доверенного источ-
ника (например, вебсайт, посвященный рассматриваемой валюте). В то время как этот метод
может подорвать безопасность и децентрализацию системы подтверждения доли, в Proof of
stake: How I learned to love weak subjectivity [8] утверждается, что слабая субъективность это
хороший способ объединить безопасность, контролируемую компьютером с социально управ-
ляемой.


legendary
Activity: 2744
Merit: 1588

Говоря утрированно, Вы предлагаете не устраивать гонки PoW как в Bitcoin, а майнить поочерёдно согласно некому хешу.

Именно, только очередность следующего является случайным выбором.

Более того, я также предлагаю рассмотреть такой вариант:

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

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

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

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

Таким образом практически исключается возможность подбора хеша под нужные параметры.

legendary
Activity: 2674
Merit: 2334
7.   Беря таким образом значения и уменьшая выбранную группу адресов мы приходит к единственному адресу.

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

9.   Ожидаем только блок с подписью от вычисленного адреса.

10.   Принимаем блок от разрешенного адреса.

11.   Делаем его проверку на двойную трату и прочее.

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

13.   Создаем спецблок из одной транзакции или команды. В данном случае мы наказываем спамера либо тразакцией забирая его все деньги с адреса на спецсчет сети или просто ликвидируем этот адрес со всеми там деньгами.
Говоря утрированно, Вы предлагаете не устраивать гонки PoW как в Bitcoin, а майнить поочерёдно согласно некому хешу.
legendary
Activity: 2744
Merit: 1588
Я придумал, как мне кажется интересный алгоритм консенсуса RndPOS, который  способен противостоять даже диктату большинства, т.е. атаке 51%, имеет не слишком большие требования к вычислительным ресурсам.

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

Введение

Хочу поделиться с сообществом идеей нового алгоритма консенсуса RndPOS.
  
На текущий момент все криптовалюты используют в основном POW (доказательство работы) или POS (доказательство владения долей).
Огромным недостатком алгоритма POW стала его сильно возрастающая сложность и требующая все больше и больше вычислительных мощностей, а для того чтобы увеличивать эти мощности, требуется вложение средств, чтобы продолжать майнить.

Как ответ на этот недостаток был создан алгоритм POS, где нет сильной вычислительной сложности, но есть требование к наличие средств на счете и чем больше этих средств, тем выше вероятность смайнить новый блок.

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

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

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

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



Описание

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

Казалось бы здесь есть противоречие и просто невозможность данного события, тем не менее это так и вот как это реализовано.

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

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

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



Алгоритм RndPOS

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

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

2.   Вычисляем сам хеш текущего созданного нами блока.

3.   Берем значение предыдущего хеша.

4.   Хешируем оба этих хеша. Это то, что происходит в обычном биткоине, ничего нового.

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

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

7.   Беря таким образом значения и уменьшая выбранную группу адресов мы приходит к единственному адресу.

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

9.   Ожидаем только блок с подписью от вычисленного адреса.

10.   Принимаем блок от разрешенного адреса.

11.   Делаем его проверку на двойную трату и прочее.

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

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

14.   Вычисляем хеш этого спецблока и соединяем с предыдущим хешем и получаем общий хеш.

15.   Теперь повторяем процедуру поиска начиная с пункта 5.

Как видите алгоритм консенсуса RndPOS достаточно прост и понятен. Более того, он позволяет с легкостью отбивать атаки 51% и больше, т.к. здесь нет форков и четко прописано от кого будет следующий блок.



Механизм согласования


При разделении и создание ситуации, когда у одной стороны 20 блоков, а у другой тоже 20 блоков.

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

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

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