Bitcoin Forum
June 22, 2024, 04:29:39 PM *
News: Voting for pizza day contest
 
   Home   Help Search Login Register More  
Pages: « 1 [2] 3 4 »  All
  Print  
Author Topic: Решаем проблему с размером блока  (Read 4949 times)
Schnibble (OP)
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
March 30, 2017, 03:04:44 PM
Last edit: March 30, 2017, 08:26:40 PM by Schnibble
 #21

Давайте обсудим сейчас. К чему такие сложности.
Давайте попробуем усложнять постепенно.

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

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

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

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

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

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

Activity: 3514
Merit: 1100



View Profile WWW
March 31, 2017, 01:34:36 PM
 #22

Забудем на время об идее регулирования комиссии / размера блока рыночным путем. Найдем для начала совсем простое решение - будем считать спамом все транзакции с комиссией ниже некоторой фиксированной величины (допустим, 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 в год.
Это в самом лучшем случае, если среднеарифметическая величина комиссий одного блока останется на сегодняшнем уровне.



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

Schnibble (OP)
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
March 31, 2017, 04:46:12 PM
Last edit: March 31, 2017, 09:07:30 PM by Schnibble
 #23

Один из крайних случаев при таких 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 корректных блока. По этой же причине имеет смысл ограничить единовременное увеличение блока по сравнению со средним размером нескольких предыдущих, скажем не более чем вдвое.

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

Activity: 3514
Merit: 1100



View Profile WWW
April 01, 2017, 09:23:22 AM
 #24

Один из крайних случаев при таких 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% собственных транзакций в блок - теперь они, наравне со всеми, будут вынуждены сначала разослать их по сети. Второе условие - защита от спама, это ограничивает рост блокчейна.
Противоречие - майнеры не смогут разослать нестандартные транзакции как раз таки по второму условию и  Roll Eyes minRelayTxFee



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



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

_sunshine_
Sr. Member
****
Offline Offline

Activity: 280
Merit: 250


View Profile
April 02, 2017, 09:24:52 AM
Last edit: April 02, 2017, 09:41:59 AM by _sunshine_
 #25

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

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

Activity: 280
Merit: 250


View Profile
April 02, 2017, 09:47:17 AM
Last edit: April 02, 2017, 10:11:05 AM by _sunshine_
 #26

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мб+сегвит. После таких финтов начинаешь верить что не все в порядке в датском королевстве. Либо бу сторона шортит, играет на альтах. Либо коре пытается уничтожить бтс
neiros
Legendary
*
Offline Offline

Activity: 3514
Merit: 1100



View Profile WWW
April 02, 2017, 04:12:35 PM
 #27


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

Schnibble (OP)
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
April 02, 2017, 06:37:56 PM
Last edit: April 02, 2017, 06:52:02 PM by Schnibble
 #28

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

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

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

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

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

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

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

Activity: 28
Merit: 0


View Profile
April 02, 2017, 06:51:07 PM
 #29

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

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

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

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

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

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

Activity: 3514
Merit: 1100



View Profile WWW
April 04, 2017, 04:45:45 AM
 #30


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

Schnibble (OP)
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
April 04, 2017, 09:46:08 PM
Last edit: April 04, 2017, 11:58:59 PM by Schnibble
 #31


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

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

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

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

Activity: 3514
Merit: 1100



View Profile WWW
April 05, 2017, 05:55:28 AM
 #32

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

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


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


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

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

Schnibble (OP)
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
April 05, 2017, 07:07:03 AM
 #33

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

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

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

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

neiros
Legendary
*
Offline Offline

Activity: 3514
Merit: 1100



View Profile WWW
April 05, 2017, 09:06:12 AM
 #34

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


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


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

_sunshine_
Sr. Member
****
Offline Offline

Activity: 280
Merit: 250


View Profile
April 05, 2017, 09:17:02 AM
 #35

создай тему на редите, там девы ошиваются
Schnibble (OP)
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
April 05, 2017, 11:09:49 AM
 #36

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

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

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

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

Activity: 28
Merit: 0


View Profile
April 05, 2017, 11:36:32 AM
 #37

создай тему на редите, там девы ошиваются
Создал пока в англоязычной ветке: 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 секунд, то можно просто отбрасывать эти конфликтующие транзакции.

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

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

Activity: 3514
Merit: 1100



View Profile WWW
April 05, 2017, 02:06:43 PM
 #38

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

Идея в том, чтобы запретить майнерам и пулам включать свои транзакции в блок забесплатно. С новыми правилами они вынуждены передавать собственные транзакции в сеть, как минимум за 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
То что вы здесь написали - жуткий хардкор, если не сказать полный бред. Даже не пытайтесь всё это запихивать в один блок.


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

Schnibble (OP)
Newbie
*
Offline Offline

Activity: 28
Merit: 0


View Profile
April 05, 2017, 03:56:57 PM
 #39

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

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

Activity: 3514
Merit: 1100



View Profile WWW
April 05, 2017, 04:18:34 PM
Last edit: April 05, 2017, 04:38:17 PM by neiros
 #40

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

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



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

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

Pages: « 1 [2] 3 4 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!