Bitcoin Forum

Local => Кодеры => Topic started by: Schnibble on March 24, 2017, 03:45:08 PM



Title: Решаем проблему с размером блока
Post by: Schnibble on March 24, 2017, 03:45:08 PM
Всем привет!

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

Для начала предложу простое решение, альтернативное ограничению блока в 1MB. Так как этот лимит был введен в качестве защиты от спама, то можно просто сделать это другим способом. Допустим, мы считаем спамом все транзакции с комиссией ниже некоторой фиксированной величины (скажем, 20 satoshies/byte). В таком случае, проблема решается предельно просто - снимаем ограничение на размер блока и запрещаем майнерам включать в блоки транзакции с комиссией ниже этой величины, а также бесплатно включать собственные транзакции. Вернее, не совсем запрещаем, а все же оставим немного места (пусть будет 5%) для спорных транзакций:

Вариант решения №1
  • лимит на размер блока отменяется*
  • полные узлы временно отклоняют блоки*, если в них включены транзакции с комиссией ниже 20 сат/байт, или более 5% спорных транзакций (находившиеся в локальной очереди mempool менее 15 секунд)
  • майнеры следуют тем же правилам, но кроме этого, они вынуждены передавать транзакции в сеть (в том числе собственные), как минимум за 15-20 секунд до включения их в блок
  • minTxRelayFee параметр становится частью консенсуса и не может превышать 20 satoshies/byte, иначе ноды просто не смогут проверить блок на валидность

Основная идея в том, что транзакция должна попасть в мемпулы большинства полных нод и пробыть там какое-то время до того, как будет включена в блок. Это необходимо, чтобы майнеры не могли бесплатно включать собственные транзакции - теперь они, наравне со всеми, вынуждены сначала разослать их по сети.
 
5% спорных транзакций - смягчающее условие, это очень большой запас для того, чтобы ноды всегда приходили к консенсусу. Даже в том случае, если готовый блок каким-то образом будет получен раньше, чем некоторые включенные в него транзакции (что на практике почти невозможно).
 
* В любом случае, самая длинная цепочка в конечном итоге строится на PoW, и временно отбракованные блоки теоретически могут быть включены в блокчейн, но только если большинство майнеров (>50%) нарушат правила и согласятся их принять. Поэтому, во время оценки PoW для цепочки, ноды и майнеры не должны считать такие блоки, пока за ними не будет построено хотябы 2-3 нормальных блока. По этой же причине имеет смысл ограничить единовременное увеличение блока по сравнению со средним размером нескольких предыдущих, скажем не более чем вдвое.

Тема в англоязычной ветке: https://bitcointalk.org/index.php?topic=1851018.0
Некоторые выдержки из обсуждений: https://bitcointalk.org/index.php?topic=1840975.msg18465662#msg18465662

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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on March 24, 2017, 06:31:37 PM
Начну с постановки проблемы. К сожалению, на данный момент мировое сообщество эту проблему решить не в состоянии. Но рано или поздно размер блока придется увеличивать - это очевидно. Даже в случае активации SegWit 1MB блока может быть недостаточно для создания каналов, а решения вроде XT или Unlimited имеют серьезные изъяны и влекут собой трудно предсказуемые последствия, следовательно необходимо найти лучшее решение.

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on March 25, 2017, 05:43:55 AM
Имеются ли на форуме русскоязычные девелоперы, желающие принять активное участие в обсуждении решения данной проблемы, а возможно и его реализации?

Если они и есть, в чём я немного сомневаюсь, то очень капитально скрываются и шифруются, никак себя не проявляя. ;D


Начну с постановки проблемы. К сожалению, на данный момент мировое сообщество эту проблему решить не в состоянии. Но рано или поздно размер блока придется увеличивать - это очевидно. Даже в случае активации SegWit 1MB блока может быть недостаточно для создания каналов, а решения вроде XT или Unlimited имеют серьезные изъяны и влекут собой трудно предсказуемые последствия, следовательно необходимо найти лучшее решение.

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

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

Есть у меня некоторые идеи и даже наработки, но с кем их обсуждать? - ещё одна проблема.


Title: Cont: Решаем проблему с размером блока
Post by: Schnibble on March 25, 2017, 09:16:50 AM
Переходим к решению. Дело в том, что мы не можем просто так взять и увеличить лимит. Поскольку он был введен для защиты от спама, то изменять его следует очень осторожно. Существует множество способов это осуществить: можно просто изменить константу в исходном коде; или запрограммировать периодическое увеличение на много лет вперед; еще можно управлять размером блока с помощью голосования майнеров, или других участников системы...

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

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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on March 25, 2017, 09:23:26 AM
Вообще то размер блока это далеко не ключевая проблема биткоина. На фоне совокупного комплекса взаимосвязанных проблем(проблема роста бокчейна, проблема пропускной способности сети,.. - централизации) это, можно сказать, даже совсем и не проблема вовсе.
Согласен. Я бы даже сказал, что все эти проблемы связаны, и в совокупности порождают одну комплексную проблему. Я к этому выводу пришел около года назад (http://coinarchy.com/dinamic-block-size-draft/), но проанализировав свои наработки, понял что протолкнуть решение всех проблем сразу будет нереально. Поэтому, думаю, что лучше попытаться их как-то разделить и действовать поэтапно...

Есть у меня некоторые идеи и даже наработки, но с кем их обсуждать? - ещё одна проблема.
Я надеюсь, что эта тема хоть немного поможет решить данную проблему :)


Title: Re: Решаем проблему с размером блока
Post by: kzv on March 25, 2017, 09:44:50 AM
Не вижу предмета для обсуждения.
Есть биткоин классик, есть анлимитед.
Скачивайте, пользуйтесь. Майнеры видят у кого какой клиент и кого больше. Когда корой станет пользоваться меньшинство,  все перестанут кору майнить и проблема с размером блока решится.


Title: Re: Решаем проблему с размером блока
Post by: kcaterpillar on March 25, 2017, 11:00:41 AM
Есть биткоин классик, есть анлимитед.
... Майнеры видят у кого какой клиент и кого больше. ...

А как майнеры видят, у кого какой клиент?


Title: Cont: Решаем проблему с размером блока
Post by: Schnibble on March 25, 2017, 02:11:50 PM
На данный момент пользователи конкурируют за право их транзакций быть включенными в блок путем добавления в них некоторой комиссии. Можно попробовать отличать полезные транзакции от "мусора" по ее размеру. Но, к сожалению в текущей реализации рыночный механизм регулирования комиссии работает неэффективно, поскольку майнеры включают в блок только те транзакции, комиссия за которые превышает определенный порог. Все остальные остаются в очереди и ожидают пока этот порог снизится. Для того, чтобы рыночный механизм регулирования комиссии работал эффективно, необходима дополнительная мотивация. В идеале майнеры должны учитывать время ожидания транзакций в очереди, когда принимают решение об их включении в блок. Так, чтобы ранние транзакции даже с меньшей комиссией могли получить преимущество перед более поздними. В принципе это можно и нужно реализовывать методом софт-форка, но такое изменение консенсуса может значительно затруднить принятие нашего решения сообществом...

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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on March 25, 2017, 02:21:01 PM
Не вижу предмета для обсуждения.
Предмет обсуждения в процессе. Пока что я обозначаю основные проблемы и делюсь своими идеями по их решению. О технических деталях и тем более готовых клиентах говорить рано.

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


Title: Re: Cont: Решаем проблему с размером блока
Post by: neiros on March 25, 2017, 02:25:53 PM
... Выясняется, что нам нужно все время находить такой баланс, чтобы блоки вмещали в себя все полезные транзакции, а слишком мелкие при этом оставались за бортом, и находились в очереди, пока для них не появится свободное место. И вот тут возникает первая проблема. Где находится та самая граница, которая отделяет полезные транзакции, которые нужно пропустить в блокчейн, от нежелательного спама?

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


Есть у меня некоторые идеи и даже наработки, но с кем их обсуждать? - ещё одна проблема.
Я надеюсь, что эта тема хоть немного поможет решить данную проблему :)

Вариант решения некоторого количества проблем - http://ss-iq.blogspot.ru/2016/10/bip-rc001xx.html
Обсуждение - https://bitcointalk.org/index.php?topic=1724780.0


Title: Re: Cont: Решаем проблему с размером блока
Post by: Schnibble on March 25, 2017, 03:22:18 PM
Тут сразу нужно определиться, что есть спам. Слишком мелкие транзакции это довольно неопределённое понятие при неопределённом курсе. Поэтому предлагаю считать спамом абсолютно любую транзакцию с нулевой комиссией.
Да. Здесь размышления еще ведутся на абстрактном уровне. Под мелкими транзакциями, конечно же, подразумевались транзакции с мелкой комиссией.

Насчет, нулевой комиссии. Боюсь, что такой вариант нам не подходит, поскольку может быстро приводить к росту блокчейна. Я же хочу найти такой диапазон комиссии, чтобы попадание транзакции в первый блок было достаточно дорогим для большинства пользователей, но при этом они все еще могли попасть в блокчейн в разумные сроки и за разумную цену. А поскольку, как вы правильно заметили, обменный курс у нас неопределенный, то нужно, чтобы этот диапазон определялся рыночным путем. Если это условие соблюдено, то все что попадает в первый блок - не спам, а значит фактическую величину комиссии в транзакциях из первого блока можно использовать в качестве базовой величины. И уже отталкиваясь от нее можно определить, что мы будем считать спамом. Например, это может быть все, что менее 1/4 от базовой величины. Изменяя эту константу мы теперь можем регулировать скорость заполнения блокчейна или соотношение его доступности для рядовых пользователей и степени децентрализации полных нод.


Title: Re: Cont: Решаем проблему с размером блока
Post by: neiros on March 25, 2017, 04:42:39 PM
Какое то здесь своеобразное, что то вроде дежавю, имеет место быть, как мне кажется. :)

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


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


Title: Re: Cont: Решаем проблему с размером блока
Post by: Schnibble on March 25, 2017, 07:04:00 PM
Я же хочу найти такой диапазон комиссии, чтобы попадание транзакции в первый блок было достаточно дорогим для большинства пользователей, но при этом они все еще могли попасть в блокчейн в разумные сроки и за разумную цену.
Это желание для очень узкого спектра возможных вариантов.
Вы имеете ввиду в текущей ситуации с блоком 1MB? Диапазон комиссии то можем выбрать какой угодно вплоть до (0;+∞).

Из этого следуют разнообразные манипуляции каких угодно пулов/майнеров с первым блоком, что порождает ещё некоторое количество дополнительных проблем, которые нужно будет решать.
Да, я это понимаю. На самом деле, в этом месте проблем я вижу не так уж много. Если мы не будем увеличивать размер блока больше, чем это необходимо, то для манипуляций майнеров в них просто не останется места. Таким образом, майнеры не смогут бесплатно добавлять транзакции даже в свои блоки, поскольку теряют на том, что могли бы включить чужую транзакцию. Хотя, если они будут майнить очень много собственных транзакций, то все еще смогут подделывать размер комиссии в них (она же все равно к ним возвращается). Но, во-первых, это же не все транзакции, и средними значениями комиссии будет манипулировать труднее. Во-вторых, манипулировать комиссией своих транзакций в большую сторону смогут только соло майнеры. Ну и самое главное, мне думается, что ориентироваться нужно не на транзакции в готовых блоках, а на самые приоритетные транзакции в mempool. Здесь майнерам уже будет невозможно подделывать комиссию.


Title: Re: Решаем проблему с размером блока
Post by: kzv on March 25, 2017, 07:34:19 PM
Есть биткоин классик, есть анлимитед.
... Майнеры видят у кого какой клиент и кого больше. ...

А как майнеры видят, у кого какой клиент?

https://en.bitcoin.it/wiki/Protocol_documentation#Common_structures

Code:
Field Size 	Description 	Data type 	Comments
4 version int32_t Identifies protocol version being used by the node
8 services uint64_t bitfield of features to be enabled for this connection
8 timestamp int64_t standard UNIX timestamp in seconds
26 addr_recv net_addr The network address of the node receiving this message
Fields below require version ≥ 106
26 addr_from net_addr The network address of the node emitting this message
8 nonce uint64_t Node random nonce, randomly generated every time a version packet is sent. This nonce is used to detect connections to self.
? user_agent var_str User Agent (0x00 if string is 0 bytes long)
4 start_height int32_t The last block received by the emitting node
Fields below require version ≥ 70001
1 relay bool Whether the remote peer should announce relayed transactions or not, see BIP 0037


Code:
0000   f9 be b4 d9 76 65 72 73 69 6f 6e 00 00 00 00 00  ....version.....
0010   64 00 00 00 35 8d 49 32 62 ea 00 00 01 00 00 00  d...5.I2b.......
0020   00 00 00 00 11 b2 d0 50 00 00 00 00 01 00 00 00  .......P........
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff  ................
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0050   00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00  ................
0060   3b 2e b3 5d 8c e6 17 65 0f 2f 53 61 74 6f 73 68  ;..]...e./Satosh
0070   69 3a 30 2e 37 2e 32 2f c0 3e 03 00              i:0.7.2/.>..


Title: Re: Cont: Решаем проблему с размером блока
Post by: neiros on March 26, 2017, 11:27:49 AM
Я же хочу найти такой диапазон комиссии, чтобы попадание транзакции в первый блок было достаточно дорогим для большинства пользователей, но при этом они все еще могли попасть в блокчейн в разумные сроки и за разумную цену.
Это желание для очень узкого спектра возможных вариантов.
Вы имеете ввиду в текущей ситуации с блоком 1MB?
В какой то мере, относительно всего остального возможного.


Диапазон комиссии то можем выбрать какой угодно вплоть до (0;+∞).
Пользователи для себя выбирают самое наилучшее.


Из этого следуют разнообразные манипуляции каких угодно пулов/майнеров с первым блоком, что порождает ещё некоторое количество дополнительных проблем, которые нужно будет решать.
Да, я это понимаю. На самом деле, в этом месте проблем я вижу не так уж много. Если мы не будем увеличивать размер блока больше, чем это необходимо, то для манипуляций майнеров в них просто не останется места. Таким образом, майнеры не смогут бесплатно добавлять транзакции даже в свои блоки, поскольку теряют на том, что могли бы включить чужую транзакцию. Хотя, если они будут майнить очень много собственных транзакций, то все еще смогут подделывать размер комиссии в них (она же все равно к ним возвращается). Но, во-первых, это же не все транзакции, и средними значениями комиссии будет манипулировать труднее. Во-вторых, манипулировать комиссией своих транзакций в большую сторону смогут только соло майнеры. Ну и самое главное, мне думается, что ориентироваться нужно не на транзакции в готовых блоках, а на самые приоритетные транзакции в mempool. Здесь майнерам уже будет невозможно подделывать комиссию.
Чего то я не совсем улавливаю какую проблему вы хотите решить. (очередными "костылями и подпорками" - условиями и ограничениями)

На текущий момент мы имеем:
  • в блок 1MB помещается ~ 2000 транзакций
  • интервал между блоками 10 мин.
  • пропускная способность сети 2000 / 600 ~ 3 транзакции в секунду
  • награда за блок - 12.5 BTC
  • транзакционные комиссии в блоке ~ 1 BTC
  • курс ~ $1000 за BTC
  • рост блокчейна, текущий размер > 110 ГБ

https://bitcointalk.org/index.php?topic=1777210.msg17786072#msg17786072 - неважно какого размера будет хобот у слона, главное что бы все конечности, отверстия и всё остальное было на своих местах, и что бы этот слон мог самостоятельно ходить, бегать и вести полноценный образ жизни среди таких же как он и подобных ему существ.


Title: Re: Cont: Решаем проблему с размером блока
Post by: Schnibble on March 26, 2017, 03:55:03 PM
В какой то мере, относительно всего остального возможного.
Если я правильно понял, то вы опасаетесь, что при изменении размера блока могут возникнуть какие-то проблемы? Поясните.

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on March 27, 2017, 08:00:53 AM
В какой то мере, относительно всего остального возможного.
Если я правильно понял, то вы опасаетесь, что при изменении размера блока могут возникнуть какие-то проблемы? Поясните.
Честно говоря меня больше волнует один битый зелёный пиксель на совсем недавно приобретённом мониторе с разрешением 2560x1440, чем решение чужих, всё более монополизирующихся и централизирующихся проблем "потенциальных монополистов и диктаторов(императоров и патриархов) - вымогателей и тунеядцев, асикостроителей и их распространителей,.." ;D Кроме потери времени ничего больше это на даёт.

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

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


Чего то я не совсем улавливаю какую проблему вы хотите решить. (очередными "костылями и подпорками" - условиями и ограничениями)
Проблему ограниченной пропускной способности и высокой пользовательской комиссии.
Каким образом?


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on March 28, 2017, 03:58:10 PM
Как пользователь я могу только поменять одну систему на другую, а внести в них какие-либо изменения, улучшения, правки или т.п. - нет.
Я думаю, если вы предложите очевидное улучшение, например, сделаете перевод на какой-то язык, то имеете все шансы, что оно будет принято. Что же касается более критических изменений, таких как хард-форк, то даже Core-разработчики уже не могут так просто их вносить. То есть система все еще достаточно децентрализована - сейчас ни одна из сторон конфликта не в состоянии монополизировать Биткоин, и при этом они препятствует это делать друг другу. Я считаю, что происходящее на данный момент это самый лучший сценарий, поскольку мы получаем время на то, чтобы предложить нормальное решение проблемы.

Как разработчик чего-либо своего, в меру своих сил, возможностей и знаний, проблема размера блока передо мной вообще не стоит. Какой необходим будет размер, такой и будет, с учётом пожеланий кого бы то ни было.
Таким образом, вы получите более гибкий процесс разработки, но зато и более централизованный, по такому пути идет, например, Ethereum. Это не хуже и не лучше - просто другая идеология.

Проблему ограниченной пропускной способности и высокой пользовательской комиссии.
Каким образом?
Чтобы ответить на этот вопрос, по сути, мне нужно сразу оформить предложение, как готорое решение в виде BIP. Скорее всего, когда найду время, то так и поступлю. Тогда можно будет обсудить детали.

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


Title: Re: Решаем проблему с размером блока
Post by: nyncuk on March 28, 2017, 06:32:33 PM
Имеются ли на форуме русскоязычные девелоперы, желающие принять активное участие в обсуждении решения данной проблемы, а возможно и его реализации?

Если они и есть, в чём я немного сомневаюсь, то очень капитально скрываются и шифруются, никак себя не проявляя. ;D



;D

Какая такая проблема!? Нет проблемы, сказали же вам: догами за розницу раскидаетесь как-нибудь  ;D


Title: Re: Решаем проблему с размером блока
Post by: neiros on March 29, 2017, 07:04:34 PM
Проблему ограниченной пропускной способности и высокой пользовательской комиссии.
Каким образом?
Чтобы ответить на этот вопрос, по сути, мне нужно сразу оформить предложение, как готорое решение в виде BIP. Скорее всего, когда найду время, то так и поступлю. Тогда можно будет обсудить детали.
Давайте обсудим сейчас. К чему такие сложности. У вас, по-моему, есть неплохие шансы получить решение не виде BIP, а сразу в виде коина...


Хотя, может быть, вы имеете ввиду другой вопрос: "Каким образом внедрить это решение?". У меня есть одна идея, как принудить всех майнеров перейти на новую цепочку. Но я не сторонник радикальных методов, и думаю, что лучший путь - это сделать очень хорошее обоснование, и привести все аргументы, что данное решение является самым оптимальным. Без политики.
Политика это концентрированное выражение экономики, сказал кое-кто когда то.
Затрагивая краеугольный камень экономики вы от политики никуда не спрячетесь.
https://bitcointalk.org/index.php?topic=577885.msg15150205#msg15150205


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on March 30, 2017, 03:04:44 PM
Давайте обсудим сейчас. К чему такие сложности.
Давайте попробуем усложнять постепенно.

Забудем на время об идее регулирования комиссии / размера блока рыночным путем. Найдем для начала совсем простое решение - будем считать спамом все транзакции с комиссией ниже некоторой фиксированной величины (допустим, 20 Satoshies/Byte). В таком случае, проблема масштабируемости Биткоина решается предельно просто - снимаем ограничение на размер блока и запрещаем майнерам включать в блоки транзакции с комиссией ниже этой величины, а также бесплатно включать собственные транзакции. Вернее, не совсем запрещаем, а все же оставим немного места (пусть будет 5%) для любых нестандартных транзакций:

Вариант решения №1
- лимит на размер блока отменяется
- полные узлы отклоняют блоки, если в них включено более 5% нестандартных транзакций (использующие нестандатные скрипты | находившихся в очереди mempool менее 15 секунд | с комиссией ниже 20 сат/байт)
- майнеры, в свою очередь, контролируют минимальную комиссию, а также задерживают транзакции в своей очереди, и не пропускают их в блок, как минимум 20 секунд (для надежности) с момента получения
- правила формирования очереди mempool можно не изменять, но, очевидно, что они становятся неотъемлемой частью консенсуса

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

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

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

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on March 31, 2017, 01:34:36 PM
Забудем на время об идее регулирования комиссии / размера блока рыночным путем. Найдем для начала совсем простое решение - будем считать спамом все транзакции с комиссией ниже некоторой фиксированной величины (допустим, 20 Satoshies/Byte). В таком случае, проблема масштабируемости Биткоина решается предельно просто - снимаем ограничение на размер блока и запрещаем майнерам включать в блоки транзакции с комиссией ниже этой величины, а также бесплатно включать собственные транзакции. Вернее, не совсем запрещаем, а все же оставим немного места (пусть будет 5%) для любых нестандартных транзакций:

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


Вариант решения №1
- лимит на размер блока отменяется
- полные узлы отклоняют блоки, если в них включено более 5% нестандартных транзакций (использующие нестандатные скрипты | находившихся в очереди mempool менее 15 секунд | с комиссией ниже 20 сат/байт)
- майнеры, в свою очередь, контролируют минимальную комиссию, а также задерживают транзакции в своей очереди, и не пропускают их в блок, как минимум 20 секунд (для надежности) с момента получения
- правила формирования очереди mempool можно не изменять, но, очевидно, что они становятся неотъемлемой частью консенсуса

Про mempool можно забыть когда консенсус основывается на блоках. Хоть он для всех как бы один, но для каждого разный из-за множества факторов влияющих на скорость прохождения каждой транзакции от узла к узлу, включая константу nMinRelayTxFee и может ещё чего, что сейчас не помню. И какие-либо задержки в 15-20 секунд никакой роли при этом не играют. Консенсуса по мемпулу в таких условиях не может быть в принципе, особенно при 5% которые подразумевается использовать каким угодно способом.



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

Лимит в 1MB ограничивает скорость роста блокчейна 6MB в час или 144MB в сутки.
Что бы система самоокупалась при нынешних реалиях средний размер блока должен быть на порядок больше.
При 1.5GB в сутки рост составит 0.5TB в год.
Это в самом лучшем случае, если среднеарифметическая величина комиссий одного блока останется на сегодняшнем уровне.



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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on March 31, 2017, 04:46:12 PM
Один из крайних случаев при таких 5% может стать таким, что при огромной величине мемпула, блоки будут очень маленькими.
Думаете, майнеры не захотят включать транзакции даже с высокой комиссией? В таком случае, придется еще ужесточать требования для содержимого блоков. Но мне кажется такой проблемы не будет.

Про mempool можно забыть когда консенсус основывается на блоках. Хоть он для всех как бы один, но для каждого разный из-за множества факторов влияющих на скорость прохождения каждой транзакции от узла к узлу, включая константу nMinRelayTxFee и может ещё чего, что сейчас не помню.
Если мы увеличиваем лимит на размер блока, то это уже в любом случае хард-форк. А раз уж мы все-равно изменяем протокол, то можем закрепить и правила формирования mempool как обязательные, и для всех они будут одинаковые. Что касается параметра minRelayTxFee, то логично его поднять до значения 10-20 sat/byte. Все транзакции с меньшей комиссией мы считаем нестандартными и в mempool их включать необязательно. А вот выше 20 sat/byte minRelayTxFee узлам устанавливать нельзя, это да.

И какие-либо задержки в 15-20 секунд никакой роли при этом не играют. Консенсуса по мемпулу в таких условиях не может быть в принципе, особенно при 5% которые подразумевается использовать каким угодно способом.
Вы не поняли. Нам не нужен полный консенсус по содержимому мемпула. Консенсус нужен только по тому, какие транзакции следует считать стандартными. Полные ноды не должны отбрасывать их, иначе просто не смогут проверить блок на валидность. Такой консенсус уже имеется, и я предлагаю добавить к нему еще два условия:
1) транзакция должна попасть в мемпулы большинства полных нод и пробыть там какое-то время до того, как будет включена в блок;
2) комиссия за транзакцию должна быть не менее 20 sat/byte

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

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

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

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 01, 2017, 09:23:22 AM
Один из крайних случаев при таких 5% может стать таким, что при огромной величине мемпула, блоки будут очень маленькими.
Думаете, майнеры не захотят включать транзакции даже с высокой комиссией? В таком случае, придется еще ужесточать требования для содержимого блоков. Но мне кажется такой проблемы не будет.
Я имел ввиду другое. Поток транзакций это непостоянная величина. Количество транзакций может изменяться в очень больших пределах - сегодня очень много, завтра очень мало. Добавим сюда майнеров, которые по какому-либо поводу не желают включать в блоки 5%, предположим, шлака, по их мнению, создавая предпосылки к тому, что при очень малом количестве стандартных транзакций мемпул будет уменьшаться очень долго, а блоки будут очень маленькими. А если добавить сюда ещё каких-нибудь вредителей, которые будут генерировать нестандартные транзакции в количестве немного большим, чем может переварить система, то размер мемпула с нестандартными транзакциями будет стремиться к бесконечности.



Про mempool можно забыть когда консенсус основывается на блоках. Хоть он для всех как бы один, но для каждого разный из-за множества факторов влияющих на скорость прохождения каждой транзакции от узла к узлу, включая константу nMinRelayTxFee и может ещё чего, что сейчас не помню.
Если мы увеличиваем лимит на размер блока, то это уже в любом случае хард-форк. А раз уж мы все-равно изменяем протокол, то можем закрепить и правила формирования mempool как обязательные, и для всех они будут одинаковые. Что касается параметра minRelayTxFee, то логично его поднять до значения 10-20 sat/byte. Все транзакции с меньшей комиссией мы считаем нестандартными и в mempool их включать необязательно. А вот выше 20 sat/byte minRelayTxFee узлам устанавливать нельзя, это да.
А смысл тогда в этих 5% какой? Это уже стоит тогда рассматривать как погрешность между индивидуальными мемпулами узлов?
Даже представить себе не могу каким может быть даже частичный консенсус по мемпулу через консенсус по блокам. Манипулировать мемпулом узлов, по-моему, вполне возможно, если не сказать просто. Да даже и без возможных манипуляций, постоянный и неравномерный приток транзакций нужно будет как то учитывать. А из этого сразу возникает масса проблем с консенсусом по блокам.



И какие-либо задержки в 15-20 секунд никакой роли при этом не играют. Консенсуса по мемпулу в таких условиях не может быть в принципе, особенно при 5% которые подразумевается использовать каким угодно способом.
Вы не поняли. Нам не нужен полный консенсус по содержимому мемпула. Консенсус нужен только по тому, какие транзакции следует считать стандартными. Полные ноды не должны отбрасывать их, иначе просто не смогут проверить блок на валидность. Такой консенсус уже имеется, и я предлагаю добавить к нему еще два условия:
1) транзакция должна попасть в мемпулы большинства полных нод и пробыть там какое-то время до того, как будет включена в блок;
2) комиссия за транзакцию должна быть не менее 20 sat/byte
Другими словами достаточно подождать 15-20 секунд после появления в мемпуле нужных транзакций и любой новый блок считается валидным, при промежутке то между блоками в 600 секунд.

Зачем нам нужны орфан блоки в ещё большем их количестве? - https://blockchain.info/ru/orphaned-blocks



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



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



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


Title: Re: Решаем проблему с размером блока
Post by: _sunshine_ on April 02, 2017, 09:24:52 AM
Quote from
Если очень коротко, то я предлагаю увеличивать размер блока тогда, когда в этом появляется необходимость. То есть изменить правила консенсуса, так, чтобы майнеры могли увеличивать блок, когда очередь mempool транзакций (с достаточной комиссией) переполняется.

это разве не то что предлагает бу? Еще есть важная деталь, чтоб вы там не придумали связанное с увеличением блока, такое предложение не пройдет. Есть отделение коре(сегвит и точка, никаких ХФ, только если форкать алгоритм:) ), есть отделение анти коре (ХФ по размеру обязательное условие)
вот предложение эластичного увеличения блока https://bitcointalk.org/index.php?topic=1078521.0
вобще все бы неплохо с сегвитом, но без поддержки майнеров его считай нет.
предложение недавнее от коре дева https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-March/013921.html  Ничего нового, просто адекватный взгляд на реальность. Но, тему заминусили типа нехер с терористами переговоры вести фейспалм. Или так, это компромис ради компромиса, бесполезно, невзирая на реальность где сегвит не получит нужной поддержки без этого компромиса


Title: Re: Решаем проблему с размером блока
Post by: _sunshine_ on April 02, 2017, 09:47:17 AM
Quote from: Schnibble on March 25, 2017, 03:22:18 PM
Если это условие соблюдено(рыночный механизм регулирования комиссии), то все что попадает в первый блок - не спам, а значит фактическую величину комиссии в транзакциях из первого блока можно использовать в качестве базовой величины. И уже отталкиваясь от нее можно определить, что мы будем считать спамом. Например, это может быть все, что менее 1/4 от базовой величины

1й блок это какой? Почему майнеры не будут спамить этот блок с высокими коммисиями? И по спаму, что такое спам? Низкая коммисия это спам? Я так не считаю. Скорее это печально когда транзакцию с низкой коммисией отвергают

Quote from
Лимит в 1MB ограничивает скорость роста блокчейна 6MB в час или 144MB в сутки.
Что бы система самоокупалась при нынешних реалиях средний размер блока должен быть на порядок больше.
При 1.5GB в сутки рост составит 0.5TB в год.

10тб ~ 500$. На 10 лет. Или 50$ в год. Тут я не улавливаю логику коре, тому кому нужен полный чейн это будет дорого содержать, учитывая что цены падают каждый год? При том что разговор был не о 10, а о 2мб+сегвит. После таких финтов начинаешь верить что не все в порядке в датском королевстве. Либо бу сторона шортит, играет на альтах. Либо коре пытается уничтожить бтс


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 02, 2017, 04:12:35 PM

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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 02, 2017, 06:37:56 PM
Я имел ввиду другое. Поток транзакций это непостоянная величина. Количество транзакций может изменяться в очень больших пределах - сегодня очень много, завтра очень мало. Добавим сюда майнеров, которые по какому-либо поводу не желают включать в блоки 5%, предположим, шлака, по их мнению, создавая предпосылки к тому, что при очень малом количестве стандартных транзакций мемпул будет уменьшаться очень долго, а блоки будут очень маленькими.
Вообще, я думаю, можно убрать лимит на нестандартные транзакции. Это только усложняет понимание. Пусть будет просто ограничение до 5% нежелательных транзакций (с низкой комиссией) в блоке.

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

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

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

Другими словами достаточно подождать 15-20 секунд после появления в мемпуле нужных транзакций и любой новый блок считается валидным, при промежутке то между блоками в 600 секунд
Нет. Транзакции должны присутствовать в mempool не менее 15 секунд на момент получения блока. Майнер же обязан был их ретранслировать, как минимум, 20 секунд назад + время пока до нас дошел блок.

Зачем нам нужны орфан блоки в ещё большем их количестве?
Майнеры могут увеличить задержку на сколько им угодно. Это гарантирует, что все транзакции, которые будут в блоке, дойдут до всех нод еще до начала майнинга (ну, кроме изолированных).

А минимальный размер каким может быть?
Минимальный - это единственная coinbase транзакция. На всякий случай, можно устанавливать лимит, как max(1000000, average_size*2).


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 02, 2017, 06:51:07 PM
это разве не то что предлагает бу?
Нет. BU, по сути, предлагает непрерывное голосование майнеров. Я предлагаю увеличивать блок ровно настолько, насколько это необходимо, исключая только спам.

Есть отделение коре(сегвит и точка, никаких ХФ, только если форкать алгоритм ), есть отделение анти коре (ХФ по размеру обязательное условие)
Мое предложение скорее из второй категории. Но и с SegWit оно, разумеется, не конфликтует.

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

1й блок это какой? Почему майнеры не будут спамить этот блок с высокими коммисиями? И по спаму, что такое спам? Низкая коммисия это спам? Я так не считаю. Скорее это печально когда транзакцию с низкой коммисией отвергают
1й блок - следующий, который будет сгенерирован. Почему майнеры не будут спамить? В первом посте есть разъяснение:
Основная идея в том, что транзакция должна попасть в мемпулы большинства полных нод и пробыть там какое-то время до того, как будет включена в блок. Это необходимо, чтобы майнеры не могли бесплатно включать собственные транзакции - теперь они, наравне со всеми, вынуждены сначала разослать их по сети.

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

После таких финтов начинаешь верить что не все в порядке в датском королевстве. Либо бу сторона шортит, играет на альтах. Либо коре пытается уничтожить бтс
Мне тоже интересно услышать, какие имеются аргументы против увеличения до 2МБ?


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 04, 2017, 04:45:45 AM

Schnibble, чем ваше предложение лучше того, что есть сейчас(увеличение размера блока или уменьшение промежутка времени между блоками)?


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 04, 2017, 09:46:08 PM

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

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

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

Решение можно внедрять постепенно. Для начала, просто проверить, как оно работает с лимитом в 1MB и частичным спам-фильтром (только на уровне обмена между узлами). Поддержка полных нод здесь имеет значение, так как они могут отклонять нежелательные блоки. Далее, при поддержде майнеров >50% возможно сделать софт-форк и полностью активировать спам-фильтр. В конечном итоге, если 95% майнеров поддерживают предложение, то оно окончательно активируется, и размер блока увеличивается.


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 05, 2017, 05:55:28 AM
Schnibble, чем ваше предложение лучше того, что есть сейчас(увеличение размера блока или уменьшение промежутка времени между блоками)?
Я знаю, что есть много разных предложений. Честно говоря все их не изучал.

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


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


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

Решение можно внедрять постепенно. Для начала, просто проверить, как оно работает с лимитом в 1MB и частичным спам-фильтром (только на уровне обмена между узлами). Поддержка полных нод здесь имеет значение, так как они могут отклонять нежелательные блоки. Далее, при поддержде майнеров >50% возможно сделать софт-форк и полностью активировать спам-фильтр. В конечном итоге, если 95% майнеров поддерживают предложение, то оно окончательно активируется, и размер блока увеличивается.
Пока что, на мой взгляд, это вариант пожеланий и намерений, на практике не реализуемых по причине того, что никакие проблемы существенным образом не решаются, а скорее добавляются новые.


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 05, 2017, 07:07:03 AM
Что за голосование? А то я вообще не вникал, что такое этот unlimited
В Unlimited каждая нода просто устанавливает лимит на свое усмотрение. А дальше будь что будет.

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

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

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



Title: Re: Решаем проблему с размером блока
Post by: neiros on April 05, 2017, 09:06:12 AM
Пулы в любом случае монополисты в рамках своих возможностей. Что захотят, то и будут делать.
Я как раз и предлагаю ограничить им эти возможности.
Каким образом вы собираетесь это сделать, я пока не увидел.


Ко всему прочему у них есть сoinbase транзакция...
Если вы имеете ввиду сoinbase для голосования, то это не монополия - майнеры всегда могут сменить пул.
Это не имею ввиду.
В сoinbase транзакцию блока я, например, засунул больше десятка выходов к пользователям - http://ss-iqr.blogspot.ru/2017/02/355.html


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


Title: Re: Решаем проблему с размером блока
Post by: _sunshine_ on April 05, 2017, 09:17:02 AM
создай тему на редите, там девы ошиваются


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 05, 2017, 11:09:49 AM
Каким образом вы собираетесь это сделать, я пока не увидел
Чтобы не усложнять, я пока предлагаю простое решение, которое изложено в первом посте.

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

В сoinbase транзакцию блока я, например, засунул больше десятка выходов к пользователям
Чтобы пулы не добавляли спам в coinbase, можно просто корректировать им вознаграждение. То есть они будут получать не 12.5BTC + собранная комиссия, а 12.5BTC + собранная комиссия - уплаченная комиссия. Уплаченная комиссия это, как вы наверное уже поняли, coinbase_size * minTxFee. Кстати, можно таким образом избавить майнеров от обязанности рассылать свои транзакции - они могут просто заплатить комиссию из coinbase. Можно даже скидку им сделать, скажем для всех minFee будет 20 sat/byte, а для майнеров 15 sat/byte.

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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 05, 2017, 11:36:32 AM
создай тему на редите, там девы ошиваются
Создал пока в англоязычной ветке: https://bitcointalk.org/index.php?topic=1851018.0

Не знаю, бывают ли там девы, но кое-что обсудить удалось. В частности achow101 и Quickseller предложили некоторые варианты атаки на мемпул:

How do you prevent someone from making a ton of super low fee transactions just to spam up mempools and take up more memory, at some point causing nodes to crash? If you require every single transaction to be kept, then you open up an entirely new attack vector.
First of all, nodes aren't required to keep full transactions (TxID will be enough). Also we don't need to keep them forever. I propose that nodes can forget about transactions received over an hour ago. Miners should be careful to include these transactions in block.

Then you run into other issues like people paying too low of a transaction fee and thus getting their transaction evicted after the hour is up.
It's not a problem. Miners could keep and rebroadcast these transactions shortly before including them into the block.
What if I just restarted my node (so it's mempool is now empty) and then I receive a block? Do I reject it?
The chain becomes valid anyway, when it receives two or three valid blocks. Also we can simply bypass this rule for some time after the launch. Also we can add a new type of message for the purpose of mempool synchronization between the nodes.

Another problem is that if someone broadcasts a transaction that gets to miner "A" located in China, and a conflicting transaction that gets to miner "B" located in New York, US, then exactly one of those transactions will get rejected by nodes
I propose to reject all transactions that conflicting any other transaction in node's mempool. But we have to keep original transaction and reset time when it was received. So it cannot be included into the block another 15 seconds. In addition we need to keep the transaction's size and update it every time when we are rejecting a conflicting transaction that larger then all previous such transactions.

For example. If node receives a transaction "A" which size is 400 bytes, it should keep this transaction and two additional values: { tx_A, 400, time }. If then after 10 seconds it receives a conflicting transaction "B" which size is 500 bytes, it should update these values as follows: { tx_A, 500, time+10 }. If it receives another conflicting transaction "C" after another 5 seconds which size is 550 bytes, it should update the values: { tx_A, 550, time+15 }.

When node is validating the block and found some transaction that conflicts with a transaction in it's mempool, it should check that size of this transaction is not more then stored size. If it is so, the transaction shouldn't be considered as spam. Thus miners cannot include their own transactions into the block for free and cannot spam nodes' mempools with conflicting transactions.

Думаю, последний ответ нужно немного скорректировать. Нам необходимо сохранять время оригинальной транзакции, то есть {original_tx, max_size, original_time, delta_time}. И если delta_time превышает 20 секунд, то можно просто отбрасывать эти конфликтующие транзакции.

В общем, похоже, все проблемы решаемые. От оппонентов больше аргументов не последовало.

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 05, 2017, 02:06:43 PM
Каким образом вы собираетесь это сделать, я пока не увидел
Чтобы не усложнять, я пока предлагаю простое решение, которое изложено в первом посте.

Идея в том, чтобы запретить майнерам и пулам включать свои транзакции в блок забесплатно. С новыми правилами они вынуждены передавать собственные транзакции в сеть, как минимум за 15-20 секунд до включения их в блок, в противном случае они рискуют получить orphan-блок, который будет отвергнут другими узлами и майнерами.
Вы представляете себе какое количество орфан блоков может получится при таких условиях?
Вопрос из этого поста - https://bitcointalk.org/index.php?topic=1840975.msg18413922#msg18413922


В сoinbase транзакцию блока я, например, засунул больше десятка выходов к пользователям
Чтобы пулы не добавляли спам в coinbase, можно просто корректировать им вознаграждение. То есть они будут получать не 12.5BTC + собранная комиссия, а 12.5BTC + собранная комиссия - уплаченная комиссия. Уплаченная комиссия это, как вы наверное уже поняли, coinbase_size * minTxFee. Кстати, можно таким образом избавить майнеров от обязанности рассылать свои транзакции - они могут просто заплатить комиссию из coinbase. Можно даже скидку им сделать, скажем для всех minFee будет 20 sat/byte, а для майнеров 15 sat/byte.

Я имею ввиду транзакцию, удовлетворяющую такому условию - https://github.com/neiros/---TTC---/blob/master/src/core.h#L230
То что вы здесь написали - жуткий хардкор, если не сказать полный бред. Даже не пытайтесь всё это запихивать в один блок.


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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 05, 2017, 03:56:57 PM
Вы представляете себе какое количество орфан блоков может получится при таких условиях?
Вопрос из этого поста - https://bitcointalk.org/index.php?topic=1840975.msg18413922#msg18413922
На этот вопрос я вам ответил:
Майнеры могут увеличить задержку на сколько им угодно. Это гарантирует, что все транзакции, которые будут в блоке, дойдут до всех нод еще до начала майнинга (ну, кроме изолированных).
Если майнеры будут соблюдать правила, то количество orphan блоков вообще не увеличится.

Я имею ввиду транзакцию, удовлетворяющую такому условию - https://github.com/neiros/---TTC---/blob/master/src/core.h#L230
То что вы здесь написали - жуткий хардкор, если не сказать полный бред. Даже не пытайтесь всё это запихивать в один блок.
Обоснуйте. Запихивать что? Я предложил способ, как с майнеров взимать комиссию за coinbase транзакцию.


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 05, 2017, 04:18:34 PM
Вы представляете себе какое количество орфан блоков может получится при таких условиях?
Вопрос из этого поста - https://bitcointalk.org/index.php?topic=1840975.msg18413922#msg18413922
На этот вопрос я вам ответил:
Майнеры могут увеличить задержку на сколько им угодно. Это гарантирует, что все транзакции, которые будут в блоке, дойдут до всех нод еще до начала майнинга (ну, кроме изолированных).
Если майнеры будут соблюдать правила, то количество orphan блоков вообще не увеличится.
А я предполагаю, что количество orphan блоков возрастёт кратно. И чем больше будет задержка, тем больше будет orphan блоков. Кто из нас прав?

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



Я имею ввиду транзакцию, удовлетворяющую такому условию - https://github.com/neiros/---TTC---/blob/master/src/core.h#L230
То что вы здесь написали - жуткий хардкор, если не сказать полный бред. Даже не пытайтесь всё это запихивать в один блок.
Обоснуйте. Запихивать что? Я предложил способ, как с майнеров взимать комиссию за coinbase транзакцию.
;D Вы не сможете с этой транзакции взять комиссию потому, что именно в этой транзакции все собранные с других транзакций комиссии возвращаются майнерам обратно в виде вознаграждения за работу их агрегатов по съеданию электричества.

Зачеркнул, потому как это не совсем так, но по сути так оно и есть.


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 05, 2017, 05:23:53 PM
А я предполагаю, что количество orphan блоков возрастёт кратно. И чем больше будет задержка, тем больше будет orphan блоков. Кто из нас прав?
Вы не поняли. Майнеры не просто так задерживают свои транзакции. Они их перед этим транслируют в сеть. Поэтому, чем больше задержка, тем дольше полные ноды эту транзакцию продержат в своем mempool. А если они ее продержат 15 секунд, то за спам уже не примут.

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

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 05, 2017, 06:02:54 PM
А я предполагаю, что количество orphan блоков возрастёт кратно. И чем больше будет задержка, тем больше будет orphan блоков. Кто из нас прав?
Вы не поняли. Майнеры не просто так задерживают свои транзакции. Они их перед этим транслируют в сеть. Поэтому, чем больше задержка, тем дольше полные ноды эту транзакцию продержат в своем mempool. А если они ее продержат 15 секунд, то за спам уже не примут.

И спросите у владельцев пулов, каким образом они распределяют вознаграждение майнерам.
Это к чему?
Нет, а вы идите и спросите - https://www.youtube.com/watch?v=tvGBWNbg5uM
Ко всему остальному владельцы пулов и так имеют свой процент с майнеров, а вы им ещё не хило так хотите отсыпать.



Вы не сможете с этой транзакции взять комиссию потому, что именно в этой транзакции все собранные с других транзакций комиссии
В чем проблема майнерам уменьшить себе вознаграждение на величину требуемой комиссии?
Да не в чём, собственно. ;D Разве что эта цифра 21000000 со временем уменьшится до 0.


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 05, 2017, 06:29:13 PM
Ко всему остальному владельцы пулов и так имеют свой процент с майнеров, а вы им ещё не хило так хотите отсыпать.
Я вообще-то, наоборот, предлагаю, чтобы владельцы пулов платили комиссию (или сжигали) за свои транзакции. Да, если пул распределяет вознаграждение посредством coinbase транзакции, то майнеры потеряют эту комиссию. Ну, а что вы предлагаете, разрешить им бесплатно засорять блокчейн?

В чем проблема майнерам уменьшить себе вознаграждение на величину требуемой комиссии?
Да не в чём, собственно. ;D Разве что эта цифра 21000000 со временем уменьшится до 0.
Во-первых, для этого всем пулам придется добавлять в блоки собственных транзакций на 60MB :) Ну и меньше 16млн уже не станет... во всяком случае, не по этой причине.

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 06, 2017, 04:46:56 AM
Ко всему остальному владельцы пулов и так имеют свой процент с майнеров, а вы им ещё не хило так хотите отсыпать.
Я вообще-то, наоборот, предлагаю, чтобы владельцы пулов платили комиссию (или сжигали) за свои транзакции. Да, если пул распределяет вознаграждение посредством coinbase транзакции, то майнеры потеряют эту комиссию. Ну, а что вы предлагаете, разрешить им бесплатно засорять блокчейн?

А в итоге получается всё наоборот. Хотели как лучше, а получилось как всегда. © В.С. Черномырдин



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

Зачеркнул, потому как это не совсем так, но по сути так оно и есть.
В чем проблема майнерам уменьшить себе вознаграждение на величину требуемой комиссии?
Да не в чём, собственно. ;D Разве что эта цифра 21000000 со временем уменьшится до 0.
Во-первых, для этого всем пулам придется добавлять в блоки собственных транзакций на 60MB :) Ну и меньше 16млн уже не станет... во всяком случае, не по этой причине.

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

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


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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 06, 2017, 07:55:02 AM
А в итоге получается всё наоборот.
Да ничего наоборот не получилось. Комиссия за coinbase транзакцию - это в любом случае расходы пула. Кроме того, не забывайте, что у них остается еще 5% от блока для бесплатных транзакций, так что на практике для пулов и майнеров ничего не изменится.

Не буду у вас уточнять, что вы имеете ввиду
Я имею ввиду, что теоретически возможно увеличивать вознаграждение майнеру нашедшему блок, если майнер предыдущего блока добровольно его себе уменьшил. Разумеется, тогда потребуется хард-форк. Только я не думаю, что в этом есть реальная небходимость - майнеры и сейчас могут уменьшать себе вознаграждение, и пользователи могут терять приватные ключи, или вот вам еще пример (https://blockchain.info/ru/address/1111111111111111111114oLvT2), и никаких проблем с этим нет.

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


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 06, 2017, 02:35:36 PM
А в итоге получается всё наоборот.
Да ничего наоборот не получилось. Комиссия за coinbase транзакцию - это в любом случае расходы пула. Кроме того, не забывайте, что у них остается еще 5% от блока для бесплатных транзакций, так что на практике для пулов и майнеров ничего не изменится.
Очень мне любопытно было бы посмотреть... А потом в очередной раз сказать: - ну я же вас предупреждал. ;D


Не буду у вас уточнять, что вы имеете ввиду
Я имею ввиду, что теоретически возможно увеличивать вознаграждение майнеру нашедшему блок, если майнер предыдущего блока добровольно его себе уменьшил. Разумеется, тогда потребуется хард-форк. Только я не думаю, что в этом есть реальная небходимость - майнеры и сейчас могут уменьшать себе вознаграждение, и пользователи могут терять приватные ключи, или вот вам еще пример (https://blockchain.info/ru/address/1111111111111111111114oLvT2), и никаких проблем с этим нет.
Рас нет, значит нет. Не буду спорить.


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




Более приближенный к реальности вариант вашей идеи.



1
2
3
4
5
6
7
8
9
XX
блок
T
T
T
T
T
T
T
T
T
T
матрица
T
TT
TTT
TTTT
TTTTT
TTTTTT
TTTTTTT
TTTTTTTT
TTTTTTTTT
TTTTTTTTTT
<< поток тр.
 T   T      T
  T T  T
 T  T T
   TT     T  T
    T T    T
 T   T  T T
   T  TTT  
TT  T  T    T
  T  TT T  T
  T T  TTT T
  транзакции с величиной комиссии
>= 9SK
>= 8SK
>= 7SK
>= 6SK
>= 5SK
>= 4SK
>= 3SK
>= 2SK
>= 1SK
(спам)< 1SK

Мемпул транзакций представляет собой матрицу, которая строится по вашему коэффициенту - SK (Schnibble`K)
Блок ::) формируется по этой матрице и состоит из примерно равных частей каждой её части.
Коэффициент SK динамически изменяется через некую функцию по определённому количеству последних блоков(мемпул фтопку).
Функция, учитывая эмиссию, косвенным образов определяет рыночные колебания.


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 06, 2017, 09:53:07 PM

Более приближенный к реальности вариант вашей идеи.



1
2
3
4
5
6
7
8
9
XX
блок
T
T
T
T
T
T
T
T
T
T
матрица
T
TT
TTT
TTTT
TTTTT
TTTTTT
TTTTTTT
TTTTTTTT
TTTTTTTTT
TTTTTTTTTT
<< поток тр.
 T   T      T
  T T  T
 T  T T
   TT     T  T
    T T    T
 T   T  T T
   T  TTT  
TT  T  T    T
  T  TT T  T
  T T  TTT T
  транзакции с величиной комиссии
>= 9SK
>= 8SK
>= 7SK
>= 6SK
>= 5SK
>= 4SK
>= 3SK
>= 2SK
>= 1SK
(спам)< 1SK
Как я понимаю, здесь вы продолжаете идею рыночного регулирования комиссии (https://bitcointalk.org/index.php?topic=1840975.msg18328741#msg18328741)...

Блок формируется по этой матрице и состоит из примерно равных частей каждой её части
Коэффициент SK динамически изменяется через некую функцию по определённому количеству последних блоков(мемпул фтопку).
Пользователи и майнеры сами выбирают какую комиссию заплатить и какие транзакции добавить в блок. Так что части могут получиться любые, хотя, это не проблема. Но если вы откажетесь от консенсуса по мемпулу, то майнеры смогут подделывать комиссию.

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

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

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

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

Наиболее разумный роадмап, как мне кажется следующий:
1. Спам-фильтр на уровне обмена между полными нодами (это даже без софт-форка можно делать)
2. Спам-фильтр на уровне блокчейна (софт-форк, при поддержке >75% майнеров)
3. Снятие жесткого ограничения на размер блока (хард-форк, при поддержке >95% майнеров)
4. Внедрение механизма рыночного регулирования комиссии (софт-форк)

В принципе, последний пункт можно начинать внедрять уже на 2-3 этапе...


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 07, 2017, 05:35:45 AM

Более приближенный к реальности вариант вашей идеи.



1
2
3
4
5
6
7
8
9
XX
блок
T
T
T
T
T
T
T
T
T
T
матрица
T
TT
TTT
TTTT
TTTTT
TTTTTT
TTTTTTT
TTTTTTTT
TTTTTTTTT
TTTTTTTTTT
<< поток тр.
 T   T      T
  T T  T
 T  T T
   TT     T  T
    T T    T
 T   T  T T
   T  TTT  
TT  T  T    T
  T  TT T  T
  T T  TTT T
  транзакции с величиной комиссии
>= 9SK
>= 8SK
>= 7SK
>= 6SK
>= 5SK
>= 4SK
>= 3SK
>= 2SK
>= 1SK
(спам)< 1SK
Как я понимаю, здесь вы продолжаете идею рыночного регулирования комиссии (https://bitcointalk.org/index.php?topic=1840975.msg18328741#msg18328741)...

Вы же этого хотите?


Блок формируется по этой матрице и состоит из примерно равных частей каждой её части
Коэффициент SK динамически изменяется через некую функцию по определённому количеству последних блоков(мемпул фтопку).
Пользователи и майнеры сами выбирают какую комиссию заплатить и какие транзакции добавить в блок. Так что части могут получиться любые, хотя, это не проблема. Но если вы откажетесь от консенсуса по мемпулу, то майнеры смогут подделывать комиссию.

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

И забудьте вы про консенсус по мемпулу. Не может быть консенсуса по тому, что неизвестно.


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

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

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

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

Наиболее разумный роадмап, как мне кажется следующий:
1. Спам-фильтр на уровне обмена между полными нодами (это даже без софт-форка можно делать)
2. Спам-фильтр на уровне блокчейна (софт-форк, при поддержке >75% майнеров)
3. Снятие жесткого ограничения на размер блока (хард-форк, при поддержке >95% майнеров)
4. Внедрение механизма рыночного регулирования комиссии (софт-форк)

В принципе, последний пункт можно начинать внедрять уже на 2-3 этапе...
Действуйте и внедряйте. ;D Перед вами открыты все пути и дороги...


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 07, 2017, 07:04:53 PM
Чем больше комиссия, тем быстрее попадает она в блокчейн, а чем меньше комиссия, тем дольше она стоит в очереди. И это не отменяет те исключения, когда по "блату" какие-нибудь транзакции пройдут вне очереди.
Те транзакции, которые пройдут вне очереди могут включать произвольную (поддельную) комиссию. Это потенциально может нарушить ту функцию, по которой вы собираетесь динамически изменять коэффициент.

И забудьте вы про консенсус по мемпулу. Не может быть консенсуса по тому, что неизвестно.
Вы представляете каким образом узлы проверяют timestamp блока? Так вот, системное время известно и у всех одинаково, приблизительно так же как mempool.

Действуйте и внедряйте
Подождите. Давайте сначала подумаем, какие еще проблемы могут возникнуть. Консенсус по мемпулу работать будет замечательно. Но, может быть, кроме рассмотернных, возможны еще какие-то атаки на размер мемпула/блоков/DoS, еще что-то? Разруливать конфликтующие транзакции, кстати, тоже не так просто.


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 08, 2017, 01:17:11 PM
Действуйте и внедряйте
Подождите. Давайте сначала подумаем, какие еще проблемы могут возникнуть. Консенсус по мемпулу работать будет замечательно. Но, может быть, кроме рассмотернных, возможны еще какие-то атаки на размер мемпула/блоков/DoS, еще что-то? Разруливать конфликтующие транзакции, кстати, тоже не так просто.

Нет проблем.
У меня есть мой первый, полуготовый коин - https://bitcointalk.org/index.php?topic=1724780.0
Есть вопрос - http://ss-iq.blogspot.ru/2016/10/blog-post_20.html , который каким то образов нужно решить.
Доделываем этот коин, исправляя какие-нибудь помарки, неточности и всё что потребуется.
Запускаем.
Выводим на биржи.
Отрабатываем ключевую идею, которая заложена в этот коин.

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

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


Title: Re: Решаем проблему с размером блока
Post by: GGUL on April 08, 2017, 04:37:29 PM
Ну Вы тут напроектировали. :) Позвольте показать проблему немножко с другой стороны. Возможно, Вам не понравится, но может, какие-то идеи окажутся полезными.

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

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

Самое интересное в этой зависимости - это то, что здесь никаким образом не фигурирует размер блока.
 
Теперь что будет, если подключить размер блока.
Если у нас большой размер блока, то майнер может включить туда все транзакции с оптимальной комиссией. Блоки будут меньше максимального размера. Майнер получает максимальную прибыль. Все транзакции попадают в блок, очередей нет.
Ничего плохого нет, можно сказать, что размер блока в этом случае не оказывает никакого влияния. Если достаточно, например, 4мб, то будет максимальный размер 4, 8 или 16, уже не играет никакой роли.

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

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

Или другими словами -  максимально возможный размер блока, исходя из технологических возможностей системы - это самое ЛУЧШЕЕ решение.

p/s/ Идеи не мои. Была статья то ли годовой, то ли полугодовой давности. Автора не помню.


Title: Re: Решаем проблему с размером блока
Post by: kcaterpillar on April 08, 2017, 04:58:27 PM
...
Ничего плохого нет, можно сказать, что размер блока в этом случае не оказывает никакого влияния. Если достаточно, например, 4мб, то будет максимальный размер 4, 8 или 16, уже не играет никакой роли.
...
Или другими словами -  максимально возможный размер блока, исходя из технологических возможностей системы - это самое ЛУЧШЕЕ решение.
...

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


Title: Re: Решаем проблему с размером блока
Post by: GGUL on April 08, 2017, 07:10:56 PM
...
Ничего плохого нет, можно сказать, что размер блока в этом случае не оказывает никакого влияния. Если достаточно, например, 4мб, то будет максимальный размер 4, 8 или 16, уже не играет никакой роли.
...
Или другими словами -  максимально возможный размер блока, исходя из технологических возможностей системы - это самое ЛУЧШЕЕ решение.
...

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

И каким образом майнеры с меньшим блоком получают преимущество? С spv-майнингом этой проблемы уже нет. Насколько знаю.

p/s/ Майнеры находятся в равных условиях с точки зрения протокола Биткоина. Поэтому от величины максимального размера блока никто не получает никаких преимуществ. Это простой закон и он действует.


Title: Re: Решаем проблему с размером блока
Post by: kcaterpillar on April 08, 2017, 08:15:22 PM
Размер блока - имеете в виду максимальный или размер конкретного блока? Наверно максимальный.
Почему у одних майнеров будут огромные блоки, а у других существенно меньше?
Блоки в среднем должны получаться одного размера.
Если майнер с огромным блоком будет проигрывать, он просто не будет делать огромные блоки.

И каким образом майнеры с меньшим блоком получают преимущество? С spv-майнингом этой проблемы уже нет. Насколько знаю.

p/s/ Майнеры находятся в равных условиях с точки зрения протокола Биткоина. Поэтому от величины максимального размера блока никто не получает никаких преимуществ. Это простой закон и он действует.

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

Такое вероятностное преимущество при майнинге возрастает с увеличением размера блока выше нескольких мегабайт, также оно возрастает и с увеличением количества транзакций в блоке. Чем больше разница между наибольшим блоком и "легким" блоком, тем выше это преимущество. Пока оно незначительное.  При наличии существенной разницы в размерах блока и количества транзакций, также это преимущество будет ещё более возрастать при увеличении сложности ("Difficulty") системы Биткойн.


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 08, 2017, 09:47:57 PM
Отрабатываем ключевую идею, которая заложена в этот коин.
Мне кажется, с этого нужно начинать. Отписался в теме (https://bitcointalk.org/index.php?topic=1724780.msg18512228#msg18512228).

Но когда будут блоки по 16 Мб и выше - у некоторых майнеров появится соблазн быстренько смайнить более "легкий" блок. И получить вероятностное преимущество в решении блока, так как награда за блок пока превосходит все комиссии транзакций.
Единственное преимущество, которое может получить майнер "легкого" блока в том, что он быстрее распространяется по сети. Таким образом у него меньше риск получить orphan блок. А сложность самого майнинга не зависит от кол-ва транзакций или размера блока, так как майнеры подбирают хэш от хэша всех транзакций (merkle tree root), изменяя только одно число в заголовке - nonce. А root-хэш от merkle tree, который строится из хэшей самих транзакций, во время майнинга пересчитывается очень редко.


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 08, 2017, 09:54:23 PM
Таким образом, есть размер комиссии, при котором прибыль майнера максимальная. Назовем это оптимальной комиссией.
И майнеры, чтобы получить максимальную прибыль, должны устанавливать именно эту оптимальную комиссию. Или, по крайней мере, близко к ней.
Каждый раз, когда я обдумываю эту идею, у меня возникает одна и та же мысль. А как они будут договариваться? :)
Если размер блока не ограничен, то всегда найдется такой майнер, который просто возьмет и включит все доступные транзакции в свой блок. Таким образом, остальные должны это учитывать, и им уже не выгодно устанавливать эту оптимальную комиссию.

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

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

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

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


Title: Re: Решаем проблему с размером блока
Post by: kcaterpillar on April 09, 2017, 07:37:39 AM
Единственное преимущество, которое может получить майнер "легкого" блока в том, что он быстрее распространяется по сети. Таким образом у него меньше риск получить orphan блок. А сложность самого майнинга не зависит от кол-ва транзакций или размера блока, так как майнеры подбирают хэш от хэша всех транзакций (merkle tree root), изменяя только одно число в заголовке - nonce. А root-хэш от merkle tree, который строится из хэшей самих транзакций, во время майнинга пересчитывается очень редко.


Нет. Это не так. Последний год майнерами перебирается примерно 70-73 бита, в зависимости от текущей сложности. В поле Nonce заголовка блока 32 бита, остальные примерно 40 бит перебираются в так называемом extraNonce - оно находится в coinbase-транзакции,  это произвольные биты поля "in":"coinbase". Так как coinbase-транзакция должна быть первой в блоке, чтобы изменить эти 40 бит необходимо изменить и hashMerkleRoot. Сразу стоит заметить, что в случае увеличения сложности сети Биткойна (difficulty), количество перебираемых бит будет также увеличиваться за счёт coinbase-транзакции, т.е. соотношение extraNonce/Nonce ещё более увеличится.

Представим дерево Меркля с основанием внизу и корнем вверху, а coinbase-транзакцию в нём крайней нижней слева. Получится треугольник в случае полного заполнения транзакциями дерева (а это  оптимальный вариант для максимального количества транзакций в дереве).  Мы знаем, что хэши берутся не только от всех транзакций, но и от вершин дерева (узлов). Все хэши двойные, причём первый хэш вершины ещё и двухраундовый, в итоге получается, что ресурсные затраты на одну вершину дерева Меркля почти равны трём раундам SHA-256 - трём хэшам грубо говоря. Но нас интересуют не все хэши вершин, а только те, что находятся вдоль левого ребра нашего треугольника дерева. Потому как остальные вершины не изменяются.  С увеличением количества транзакций в блоке число транзакций растёт как квадратичная функция от числа степеней вершин (грубо говоря "этажей" дерева). А вот количество вершин вдоль левого ребра нашего дерева, т.е. тех вершин, которые будут изменятся при переборе coinbase - меняется как линейная функция. Именно поэтому при небольших размерах блока увеличение числа его транзакций не изменяет существенно затраты при майнинге - квадратичная функция "растёт" гораздо  быстрее линейной. Но при значительном увеличении транзакций в блоке этот линейный рост всё-таки даст о себе знать - майнить огромные блоки будет сложнее, затратнее более "легких" блоков, разница будет ощутимой.

Есть ещё один момент - в случае применения современных алгоритмов криптоанализа для оптимизации майнинга можно повысить его эффективность на 10%-15% по сравнению с классическим брутфорсом, но для применения таких алгоритмов потребуется использовать не последовательный (независимый) перебор extraNonce и Nonce как при брутфорсе, а всю логическую цепочку всех хэшей, т.е. все хеши, начиная от coinbase-транзакции. Такие криптоатаки на решение блока дадут ещё большее преимущество для  легких блоков с небольшим количеством транзакций.

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


Title: Re: Решаем проблему с размером блока
Post by: GGUL on April 09, 2017, 08:11:11 AM
Таким образом, есть размер комиссии, при котором прибыль майнера максимальная. Назовем это оптимальной комиссией.
И майнеры, чтобы получить максимальную прибыль, должны устанавливать именно эту оптимальную комиссию. Или, по крайней мере, близко к ней.
Каждый раз, когда я обдумываю эту идею, у меня возникает одна и та же мысль. А как они будут договариваться? :)
Если размер блока не ограничен, то всегда найдется такой майнер, который просто возьмет и включит все доступные транзакции в свой блок. Таким образом, остальные должны это учитывать, и им уже не выгодно устанавливать эту оптимальную комиссию.
Это относится к вариантам так называемого эгоистичного майнинга. При эгоистичном майнинге один майнер за счет того, что он работает не так как большинства майнеров , получает преимущество. Но тогда все майнеры, чтобы не проиграть, должны перейти на такой же способ. А в итоге майнеры в целом резко теряют свою прибыль.

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

Самое интересное и примечательное - это то, что еще ни было зарегистрировано НИ ОДНОГО случая эгоистичного майнинга.
Потому что майнеры абсолютным большинством прекрасно понимают, к чему приводит эгоистичный майнинг.
Поэтому, у меня предложение -  не тратить время на обсуждение вариантов эгоистичного майнинга. :)
Quote
Или другими словами -  максимально возможный размер блока, исходя из технологических возможностей системы - это самое ЛУЧШЕЕ решение.
Получается, что лучшее для пользователей. Но, в любом случае, исходя из технических возможностей, необходимо как-то ограничивать заполнение блокчейна спамом, поэтому просто так увеличивать блок нельзя. А бороться со спамом можно либо путем установки минимальной комиссии, либо ограничив размер блока так, чтобы дешевые транзакции просто не влезали в блок.

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

Вообще спам имеет смысл только при ограничении размера блока. Поэтому, увеличение максимального размера блока - это первый и наиболее эффективный способ борьбы со спамом. :)


Title: Re: Решаем проблему с размером блока
Post by: _sunshine_ on April 09, 2017, 12:15:42 PM
что бы бороться со спамом, нужно определить что есть спам. На битновостях был цикл статей как Вер спамит сеть. Значит спам это tx отправленные Вером. Все детектед. Я так понимаю его супруга на связи, Вер пошел сеть тушить она маякует. Дальше казинохи пишут спамят - тоже нах их с блокчена. Оставим блокчен девственным. Или как, что  есть спам?


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 09, 2017, 12:46:08 PM
что бы бороться со спамом, нужно определить что есть спам. На битновостях был цикл статей как Вер спамит сеть. Значит спам это tx отправленные Вером. Все детектед. Я так понимаю его супруга на связи, Вер пошел сеть тушить она маякует. Дальше казинохи пишут спамят - тоже нах их с блокчена. Оставим блокчен девственным. Или как, что  есть спам?
Я предложил считать спамом любую транзакцию с нулевой комиссией - https://bitcointalk.org/index.php?topic=1840975.msg18328893#msg18328893


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 09, 2017, 02:31:06 PM
майнить огромные блоки будет сложнее, затратнее более "легких" блоков, разница будет ощутимой
Кроме Nonce в заголовке есть еще поле Time. Его тоже частично можно использовать для перебора, допустим последние 6 бит. То есть, на один пересчет merkle tree перебирается 2^38 полезных хэшей.
Для полного пересчета merkle tree, построенного из N транзакций необходимо посчитать N двойных хэшей (на самом деле нужно округлить до степени двойки в большую сторону).
Тогда, КПД = 1 - N/(N+2^38). То есть, чтобы потерять 1% от вознаграждения, майнерам необходимо включить в блок более 2 млрд транзакций.

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

Проблема отсутствия мотивации майнеров включать все транзакции - это родовая травма Биткойна, вылечить её может только время до уменьшения награды за блок (но времени то нет), или какое-то разумное решение сообщества.
Да, потенциально, это может быть проблемой. В рамках моего предложения это решается довольно просто. Вдобавок к проверке на наличие транзакций в mempool можно добавить еще обязательное условие о включении их в блок. Но, вроде бы, пока в этом нет необходимости. И еще это может сломать тот механизм конкурентного образования комиссии, который мы сейчас обсуждаем с GGUL.


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 09, 2017, 02:51:54 PM
Но тогда все майнеры, чтобы не проиграть, должны перейти на такой же способ.
Необязательно. В нашем случае абсолютная прибыль майнеров не одинакова. И, мне кажется, что крупным майнерам выгоднее ограничивать комиссию, даже несмотря на то, что мелкие эгоистичные майнеры могут включать в блок все транзакции. Да такие майнеры за счет этого получат большую относительную прибыль и определенное конкурентное преимущество. Но многие пользователи не захотят ждать несколько часов или дней, и предпочтут заплатить бОльшую комиссию. В итоге крупные майнеры получат больше прибыли в абсолютном выражении, чем если бы они перешли на тот же способ.

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

Спам легко убирается той же самой оптимальной комиссией.
Может быть, некоторым майнерам будет выгодно увеличивать блоки до бесконечности. Тогда доказательство работы превратится в доказательство оперативной памяти и дискового пространства. Кроме того, майнеры смогут бесплатно добавлять свои транзакции в блок, в том числе и спам. Вообще, ограничение в 1МБ и было добавлено в целях борьбы со спамом и больше ни для чего.

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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 09, 2017, 03:00:30 PM
что бы бороться со спамом, нужно определить что есть спам. На битновостях был цикл статей как Вер спамит сеть. Значит спам это tx отправленные Вером. Все детектед. Я так понимаю его супруга на связи, Вер пошел сеть тушить она маякует. Дальше казинохи пишут спамят - тоже нах их с блокчена. Оставим блокчен девственным. Или как, что  есть спам?
Я предложил считать спамом любую транзакцию с нулевой комиссией - https://bitcointalk.org/index.php?topic=1840975.msg18328893#msg18328893
Спамом можно считать транзакции, которые нежелательно пропускать в блокчейн исходя из технических возможностей. То есть, микротранзакции с очень низкой комиссией - спам, и они должны обрабатываться вне блокчейна (лайтнинг, например). Если существует опасность проведения спам-атаки (пусть даже бессмысленной), то минимальный уровень нужно увеличить, либо сделать его адаптивным (увеличивать на время пока блоки растут).

На данный момент, мне кажется адекватное значение минимальной комиссии где-то от 20 до 100 satoshies/byte.


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 10, 2017, 05:28:02 AM

Почему вас интересует проблема размера блока? Курсовая, дипломная работа или может ещё что?


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 10, 2017, 12:28:56 PM

Почему вас интересует проблема размера блока? Курсовая, дипломная работа или может ещё что?
Меня то больше интересует решение :) Я просто вижу недостатки в других решениях и предлагаю свое.


Title: Re: Решаем проблему с размером блока
Post by: neiros on April 11, 2017, 05:26:01 AM
Почему вас интересует проблема размера блока? Курсовая, дипломная работа или может ещё что?
Меня то больше интересует решение :) Я просто вижу недостатки в других решениях и предлагаю свое.
С ещё большими недостатками? ;)

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


Title: Re: Решаем проблему с размером блока
Post by: Schnibble on April 11, 2017, 11:48:07 AM
С ещё большими недостатками?
На данном этапе концептуальных недостатков не выявлено.

Решения не подтверждённые практикой здесь никому ненужны
Реализация это отдельный вопрос. Я предложил начать с no-fork версии, и сделать сначала простейший патч только для полных нод (фильтровать блоки со спамом). Чтобы не подпадать под фильтр майнерам достаточно не включать в блоки транзакции с комиссией ниже 20 сат/байт.

Думаю, наличие клиента даже с таким ограниченным функционалом будет достаточно, чтобы форсировать обсуждение. Также нужно оформить BIP.

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