Pages:
Author

Topic: Делаем криптовалюту - page 16. (Read 36808 times)

kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 03:58:55 PM
#93

Я не долбоящер. Если блок № 1000 датирован временем 21:15:37 (допустим) то я в блок № 1001 который собираюсь майнить ставлю время 21:25:37 и если нахожу такой блок за 3 минуты, то не считаю его невалидным, а просто курю 7 минут бамбук и выпускаю в сеть ровно через 600 секунд после блока 1000


Ну вот, ты такой умный и умеешь подкручивать часики. Велком! Твои блоки будет принимать большинство, которое так крутить не умеет... Правда со временем таких умных может оказаться большинство и к клиенту будет одновременно приходить 100500 разных блоков с одним и тем же временем )) Ну дак клиент возьмет самый первый, а остальных отбреет.
И какой смысл майнить соло свою цепочку, когда большинство работает по другому алгоритму?

Конечно, если исходить из того, что каждый начнет майнить по своему - тогда да, ничего из такой монеты не выйдет. Но исходить-то нужно из другого: сильно умных меньшинство, а большинство пользуется официальным клиентом с одинаковым алгоритмом.
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 03:29:24 PM
#92
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 03:12:11 PM
#91
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 02:58:33 PM
#90
Правильная цепь та, которая самая длинная. Она же и самая сложная, потому что сложность блока = константа.
вот у меня длина цепи 1000 и у тебя 1000
ты говоришь что отправил мне транзакцию, а я утверждаю что я её не получил
прошло 10 минут
у тебя длина цепи 1001 и у меня 1001
ты говоришь что отправил мне транзакцию, а я утверждаю что я её не получил
прошло 10 минут
у тебя длина цепи 1002 и у меня 1002
ты говоришь что отправил мне транзакцию, а я утверждаю что я её не получил

дебилы, бля.

не, этот разговор мне надоел. извини, но спорить с заведомой глупостью - терять время.
хочешь - делай. я готов поспорить на любую сумму что у тебя ни хуя не выйдет.
но тратить время на объяснения больше не буду.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 02:56:14 PM
#89

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


Правильная цепь та, которая самая длинная. Она же и самая сложная, потому что сложность блока = константа.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 02:53:13 PM
#88
Я вот не вижу никакой возможности провести такую атаку, если
блоки в цепочку будут приниматься от всех хостов с одинаковой вероятностью.
при таком алгоритме сеть будет сплититься не переставая, в конце концов
каждая нода будет самостоятельно генерировать раз в 10 минут свой собственный блок,
который не будет принят ни одним из её пиров  Grin


А вот это как рах и хотелось бы проверить экспериментально.
Потому что ни у кого такого нет и сказать точно - как оно будет на самом деле, можно только на живом примере ))
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 02:47:23 PM
#87
Я вот не вижу никакой возможности провести такую атаку, если
блоки в цепочку будут приниматься от всех хостов с одинаковой вероятностью.
при таком алгоритме сеть будет сплититься не переставая, в конце концов
каждая нода будет самостоятельно генерировать раз в 10 минут свой собственный блок,
который не будет принят ни одним из её пиров  Grin

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

в биткойне консенсус - транзакции действительны только в мэйнчейне, а мэйнчейн -
это цепочка с наибольшей суммарной сложностью от генезиса.
если ты убираешь правило по наибольшей сложности, то как определить какая цепь
верная, а какая нет?
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 02:35:48 PM
#86
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 02:28:52 PM
#85
Я могу показаться критиканом, который только и делает, что
хейтит чужие рацухи. Но я считаю себя достаточно знающим вопрос человеком,
чтобы сказать: то что ты предлагаешь - это полная херотень.

Quote
2. Сделать неизменяемую сложность. Достаточно низкую, чтобы можно было майнить на процессоре.
Неизменяемая сложность - это просто дыра-дырища которая позволит провести атаку-51
первому кульному хацкеру, который твой хэш-алгоритм запустит не на своем процессоре, а
сделает порт на GPU или просто арендует мейнфрейм в своем студенческом кампусе.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 02:18:47 PM
#84
Ну не на всегда банить. Просто временно ограничить прием пакетов от него... На всякий случай.

У тебя были блоки 998-999-1000
И ты майнил блок 1001
А тебе подсовывают блок 999'
Ты блок берешь и банишь пира на час.
Молодец, чо. Он тебе хотел прислать реорганизованную цепочку блоков 999'-1000'-1001'
чтобы ты понял что ты майнишь орфан-цепь. А ты его забанил.
На самом деле ты забанил сам себя таким образом.  Grin Молодец. Загнал себя в клетку.

Я не разбирался в алгоритме, по которому биток банит хосты, но то что он их периодически банит это достоверный факт.
Давайте не будем просто трогать этот алгоритм, а оставим его как есть.
Итого, главные идеи (причем легко реализуемые) нового форка:
1. Включать новый блок в цепочку не чаще чем раз в 10 минут
2. Сделать неизменяемую сложность. Достаточно низкую, чтобы можно было майнить на процессоре.

Как вам эти пункты?
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 08:56:40 AM
#83
Ну не на всегда банить. Просто временно ограничить прием пакетов от него... На всякий случай.

У тебя были блоки 998-999-1000
И ты майнил блок 1001
А тебе подсовывают блок 999'
Ты блок берешь и банишь пира на час.
Молодец, чо. Он тебе хотел прислать реорганизованную цепочку блоков 999'-1000'-1001'
чтобы ты понял что ты майнишь орфан-цепь. А ты его забанил.
На самом деле ты забанил сам себя таким образом.  Grin Молодец. Загнал себя в клетку.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 08:47:08 AM
#82
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 08:11:53 AM
#81
Надо глянуть исходники - как там реализовано, но в оригинале алгоритм задумывался так:
1. Если появились несколько цепочек, то принимаем обе и майним тоже соответственно обе.
2. Как только одна цепочка обогнала другую - начинаем майнить ту которая длиннее.
Неправильно. Никто не гоняется за двумя зайцами майнит две цепочки.

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

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

Quote
Теперь возникает вопрос, что делать с хитрожопыми майнерами, которые продолжают
майнить более короткую цепочку и посылать ее блоки в сеть?
Имеют право. Может у них нет более длинной цепочки?

Quote
Не знаю точно, как сейчас это решается, но вроде кошель с
более длинной цепочкой банит такие хосты на некоторое время.
За что банить? Ну нет у человека блока 1000 - он и майнил себе от имеющегося у него 999-ого

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

Quote
Вопрос в том - по какой причине длинная цепочка может перестать расти?
Думаю только по сговору майнеров, контролирующих большую часть мощности сети...
Это ты считаешь цепочку более длинной. И думаешь - а чего она сука не растет?
а весь остальной мир уже давно её обогнал и майнит свою длинную цепочку, которую
ты считаешь короткой.

Quote
Поэтому я и предлагаю внести элемент лотереи. Можно еще таким элементом
сделать перерасчет сложности не раз в 2 недели, а раз в час например ))
и ромбики нарисовать в эбауте.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 07:32:39 AM
#80
Надо глянуть исходники - как там реализовано, но в оригинале алгоритм задумывался так:
1. Если появились несколько цепочек, то принимаем обе и майним тоже соответственно обе.
2. Как только одна цепочка обогнала другую - начинаем майнить ту которая длиннее.

Думаю, что такой алгоритм у большинства майнеров и остался.

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

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

Поэтому я и предлагаю внести элемент лотереи. Можно еще таким элементом сделать перерасчет сложности не раз в 2 недели, а раз в час например ))
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 07:01:58 AM
#79
Ну не сутки конечно проверять, а номер блока ))
Если у меня в цепочке 1000 простых блоков, а мне пришел очень
супер мега сложный блок №800, то я его отбриваю все равно.

И что делаете дальше? Ждете блок 1001, который наследуется от вашего 1000-ного?
А если он никогда не придет? Никогда от слова никогда. Хорошая валюта, чо.

А почему он должен не прийти?
По моему, ситуация, когда вместо длинной цепочки начинает строиться короткая - это не очень правильная ситуация. Идея же в том, чтобы все строили самую длинную цепочку.
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 06:47:32 AM
#78
(у меня тут возникло подозрение, что вы не понимаете логики
суммирования сложности по форкам для определения основной цепи,
но я не буду на этом останавливаться )

Ну не сутки конечно проверять, а номер блока ))
Если у меня в цепочке 1000 простых блоков, а мне пришел очень
супер мега сложный блок №800, то я его отбриваю все равно.

И что делаете дальше? Ждете блок 1001, который наследуется от вашего 1000-ного?
А если он никогда не придет? Никогда от слова никогда. Хорошая валюта, чо.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 06:36:23 AM
#77
2. В алгоритме проверки блоков зашить время приема последнего блока.
Если прошло меньше 10 минут - новый блок инвалидный при любой сложности.
Это чтобы внести больше случайности в майнинг.
Это значит что при нахождении блока надо на 10 минут выключать майнер?
Потому что если он вдруг смайнит блок через 3 минуты после предыдущего - его
все равно никто не засчитает валидным. Ну бред.

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

Quote
3. Не принимать блоки смайненные более суток назад. Чтобы свести к нулю вероятность даблспендинга атакой 51.
и если вы выключили комп на двое суток - то всё. вы лишились навсегда доступа в сеть
потому что для вас любой блок будет смайнен более суток назад - вы не сможете синхронизоваться от слова совсем.

Ну не сутки конечно проверять, а номер блока ))
Если у меня в цепочке 1000 простых блоков, а мне пришел очень супер мега сложный блок №800, то я его отбриваю все равно.
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 06:22:16 AM
#76
2. В алгоритме проверки блоков зашить время приема последнего блока.
Если прошло меньше 10 минут - новый блок инвалидный при любой сложности.
Это чтобы внести больше случайности в майнинг.
Это значит что при нахождении блока надо на 10 минут выключать майнер?
Потому что если он вдруг смайнит блок через 3 минуты после предыдущего - его
все равно никто не засчитает валидным. Ну бред.

Quote
3. Не принимать блоки смайненные более суток назад. Чтобы свести к нулю вероятность даблспендинга атакой 51.
и если вы выключили комп на двое суток - то всё. вы лишились навсегда доступа в сеть
потому что для вас любой блок будет смайнен более суток назад - вы не сможете синхронизоваться от слова совсем.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
January 18, 2017, 06:00:41 AM
#75
Замутить что ли тоже форк? ))

1. За основу взять версию 0.12.1. Потому что это последняя версия в которую встроен майнинг
2. В алгоритме проверки блоков зашить время приема последнего блока. Если прошло меньше 10 минут - новый блок инвалидный при любой сложности. Это чтобы внести больше случайности в майнинг.
3. Не принимать блоки смайненные более суток назад. Чтобы свести к нулю вероятность даблспендинга атакой 51.

Как такие идеи?
legendary
Activity: 1260
Merit: 1019
January 18, 2017, 05:34:16 AM
#74
Теперь понятно. Спасибо ))
Правда я не вижу никакой проблеммы в том, чтобы подписать транзакцию.
Наоборот: если позволить сети принимать неподписанные транзакции - сеть заспамят же мгновенно бесполезным мусором?

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

Неподписанные транзакции можно отправлять другим способом, например той же почтой.
По сути дела - неподписанная транзакция - это как неподписанный договор
Pages:
Jump to: