Post
Topic
Board Идеи
Re: POSm (Proof of similarity, доказательство сходства)
by
imhoneer
on 22/04/2022, 08:09:49 UTC
Про концентрацию мощности в одних руках не понял: сами же говорите о соревновательной составляющей  PoW, а потом резко тут всегда один победитель?
Правильно, она соревновательная, а потому определенные группы с мощностями вырываются вперед и получают преимущество. И всё идет к концентрации вычислительной мощи в одних скажем так руках.

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



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

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

Вот можете запустить эмитатор майнинга и увидеть, как это примерно будет работать, только выбирайте число совпадений до 6, а то потом он начинает долго считать и его сессия заканчивается:
Quote
Прототип блокчейна я не написал, а вот имитатор майнинга сделал. Можно перейти на online-python и посмотреть результат:

Code:
import hashlib

hash_prev_block=input("Введите хэш sha3_256 предыдущего блока (как пример 67b176705b46206614219f47a05aee7ae6a3edbe850bbbe214c536b989aea4d2): ")
print()
hash_mainera=input("Введите свой хэш sha3_256 для майнинга текущего блока (как пример ed4bc853dce1a3f7afd74fd20a81219cd36d60f8b241fc33dcbe5ebc9381e2f9): ")
print()
kolvo_sovpad=int(input("Введите количество совпадений для своего подблока (будем майнить пока его не получим): "))

nonce=0
str_nonce=""
hash_perezapisivaemogo_bloka=""
hash_nashego_podbloca=""
hash_perezapisivaemogo_bloka=""

while nonce>-1:
    if hash_perezapisivaemogo_bloka[:kolvo_sovpad]==hash_mainera[:kolvo_sovpad]:
        break
    nonce=nonce+1
    str_nonce=str(nonce)
    hash_nashego_podbloca=hashlib.sha3_256(str_nonce.encode()).hexdigest()
    obedinenie=hash_prev_block+hash_nashego_podbloca
    hash_perezapisivaemogo_bloka=hashlib.sha3_256(obedinenie.encode()).hexdigest()
    
print()
print("="*38)
print(f"И так мы к предыдущему блоку с хешем {hash_prev_block} добавили подблок с 1 транзакцией.")
print(f"Наш подблок имеет хеш {hash_nashego_podbloca}.")
print(f"Теперь объединяем хеши предыдущего блока и нашего подблока и хешируем это.")
print(f"Хеш измененного предыдушего блока становится {hash_perezapisivaemogo_bloka}.")  
print(f"Он обеспечивает нас сразу числом совпадений равное {kolvo_sovpad}.")
print(f"Для создания подблока текущего блока на адресе майнинга равном {hash_mainera}.")
print(f"На это потребовалось {nonce} попыток.")

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

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

Именно это программа и рассчитывает.

Если будут вопросы по программе, то обязательно пишите.




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

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

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

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

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

В этом и смысл, что контролировать эти майнинговые хеши Вы не сможете, в отличие от наращивания вычислительной мощи.

Как пример, вот примерное распределение:
Quote
Для 100,000.00 хешей:
Из них для создания идеального текущего блока задействовано:
- Количество майнеров 5865 по 1 совпадений.
- Количество майнеров 338 по 2 совпадений.
- Количество майнеров 24 по 3 совпадений.
- Количество майнеров 2 по 4 совпадений.
Общее количество задействованных майнеров равно 6229, что составляет 6.22% от общего количества хешей.
Общая сумма совпадений для данного идеального блока равна 6621.


Для 1,000,000 хешей уже:
Из них для создания идеального текущего блока задействовано:
- Количество майнеров 58651 по 1 совпадений.
- Количество майнеров 3704 по 2 совпадений.
- Количество майнеров 211 по 3 совпадений.
- Количество майнеров 10 по 4 совпадений.
Общее количество задействованных майнеров равно 62576, что составляет 6.25% от общего количества хешей.
Общая сумма совпадений для данного идеального блока равна 66732.

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


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

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

2. Цензура. Опасность 51% это не только возможность двойной траты, но и в первую очередь цензура транзакций. Для блокчейнов, где блок создает один майнер, это особенно актуально. У меня же блоки создают много майнеров и это исключает возможность цензуры, так как всех майнеров, строящих блок, контролировать невозможно.