Author

Topic: Алгоритм дистрибуции монет блокчейна (Read 462 times)

legendary
Activity: 3556
Merit: 1100
Зачем записывать в блоки произвольную информацию, т.е. бесполезную и никому не нужную, и делать это необратимым?
Да ещё с такой жуткой скоростью.

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

Зачем на жуткой скорости пересылать, записывать в блоки и хранить бесполезную и никому не нужную информацию?

Извините, вы долбоеб?

Что вы сэр? Я дерьмо на палочке! ©

Вы разучились самостоятельно мыслить?

https://www.youtube.com/watch?v=4_DPaLm0ddU
legendary
Activity: 1497
Merit: 1019
Eloncoin.org - Mars, here we come!
Зачем записывать в блоки произвольную информацию, т.е. бесполезную и никому не нужную, и делать это необратимым?
Да ещё с такой жуткой скоростью.

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

Зачем на жуткой скорости пересылать, записывать в блоки и хранить бесполезную и никому не нужную информацию?

Извините, вы долбоеб?
legendary
Activity: 3556
Merit: 1100
Зачем записывать в блоки произвольную информацию, т.е. бесполезную и никому не нужную, и делать это необратимым?
Да ещё с такой жуткой скоростью.

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

Зачем на жуткой скорости пересылать, записывать в блоки и хранить бесполезную и никому не нужную информацию?
full member
Activity: 411
Merit: 139
Зачем записывать в блоки произвольную информацию, т.е. бесполезную и никому не нужную, и делать это необратимым?
Да ещё с такой жуткой скоростью.

Это не причина, это следствие. Такая возможность появляется для реализации "жуткой скорости"
legendary
Activity: 3556
Merit: 1100
Начал писать WP:
https://docs.google.com/document/d/1B6_qlAp2xs4aHkqOwyvRMCDJTjgeNiOJiGpIeT0VAzY/edit#

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

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

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

Зачем записывать в блоки произвольную информацию, т.е. бесполезную и никому не нужную, и делать это необратимым?
Да ещё с такой жуткой скоростью.
full member
Activity: 411
Merit: 139
Начал писать WP:
https://docs.google.com/document/d/1B6_qlAp2xs4aHkqOwyvRMCDJTjgeNiOJiGpIeT0VAzY/edit#

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

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

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


legendary
Activity: 3556
Merit: 1100
Начал писать WP:
https://docs.google.com/document/d/1B6_qlAp2xs4aHkqOwyvRMCDJTjgeNiOJiGpIeT0VAzY/edit#

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

Если блокчейн это не блокчейн, а транспорт, который может транспортировать всё чего угодно, то почему вы транспорт называете блокчейном?
full member
Activity: 411
Merit: 139

Прошу прощения, но по ссылке не ходили и читать не читали?

Ходил, читал - ничего не понял.

Зачем в вашей системе нужен блокчейн? Какую функцию он выполняет?

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

Начал писать WP:
https://docs.google.com/document/d/1B6_qlAp2xs4aHkqOwyvRMCDJTjgeNiOJiGpIeT0VAzY/edit#
legendary
Activity: 3556
Merit: 1100

Прошу прощения, но по ссылке не ходили и читать не читали?

Ходил, читал - ничего не понял.

Зачем в вашей системе нужен блокчейн? Какую функцию он выполняет?
full member
Activity: 411
Merit: 139

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

Какого размера дата-центр нужно с собой брать, и к чему его подключить, чтобы например, сходить в магазин за хлебом одному, 10, 100 или более человекам?
Что будет, если два дата-центра или более, контролируемые одним человеком, будут отправлять друг другу 1000 и более транзакций в секунду?

Прошу прощения, но по ссылке не ходили и читать не читали?
legendary
Activity: 3556
Merit: 1100

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

Какого размера дата-центр нужно с собой брать, и к чему его подключить, чтобы например, сходить в магазин за хлебом одному, 10, 100 или более человекам?
Что будет, если два дата-центра или более, контролируемые одним человеком, будут отправлять друг другу 1000 и более транзакций в секунду?
full member
Activity: 411
Merit: 139
...
Block size 120 KB
...
Block generation time: 1 second
...
Commission: free of charge

0,12 * 60 сек = 7,2 мегабайта в минуту * 60 мин * 24 часа = 10,368 гигабайт в сутки * 30 дней = 311,04 гигабайт в месяц * 12 = 3,73248 терабайта в год
 Huh
Это шутка?
Бесплатная?

Транзакции бесплатные.
Да, проклятие блокчейнов с большой пропускной способностью это большой объем блокчейна. Решается так (я уже начал имплементацию в Теру):
https://docs.google.com/document/d/1JVYcfggPK-ZiF4cnerr_2-IrK9JyxD7Aw4ihlR2sNjI/edit?usp=sharing

legendary
Activity: 3556
Merit: 1100
...
Block size 120 KB
...
Block generation time: 1 second
...
Commission: free of charge

0,12 * 60 сек = 7,2 мегабайта в минуту * 60 мин * 24 часа = 10,368 гигабайт в сутки * 30 дней = 311,04 гигабайт в месяц * 12 = 3,73248 терабайта в год
 Huh
Это шутка?
Бесплатная?
full member
Activity: 411
Merit: 139
Алгоритм реализован в блокчейне TERA
https://bitcointalksearch.org/topic/ann-tera-smart-money-smart-contracts-pow-cpu-1000-tps-4573801
Consensus: PoW
Algorithm:  sha3 + meshhash (ASIC resistent hashing)
Max emission: 1 bln (TER)
Reward for block: 1-20 coins, depends on network power (one billionth of the remainder of undistributed amount of coins and multiplied by the hundredth part of the square of the logarithm of the network power)
Block size 120 KB
Premine: 5%
Development fund: 1% of the mining amount
Block generation time: 1 second
Block confirmation time: 8 seconds
Speed: from 1000 transactions per second
Commission: free of charge
jr. member
Activity: 54
Merit: 1
Обрезать то можно, но будет ли доверие пользователей к такой системе?

Доверие отдельному блоку = доверию всему блокчейну. Здесь действует тождество, если я доверяю блоку А2, полученному из А1 и доверяю блоку А1, полученному из блока А0. Значит я могу доверять блоку А2, так же как и блоку А0.

При этом 100 дней достаточный промежуток времени для обнаружения подмены/коллизии, которая невозможна без согласия 51 % сети.

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

Собственно есть еще два варианта, которые сейчас прорабатываю:
1. Шардинг (хранить транзакции и счета рапределенно)
2. Историю транзакций хранит клиент, а сеть хранит только хеши блоков. Но это в теории, т.к. непонятно как на практике это реализовать...

1. Шардинг, пока что лучший вариант, алгоритмы, правда не опробованы на практике.
2. Деревья Меркеля для этого и созданы. Используются в лайтнодах.
full member
Activity: 411
Merit: 139
...
А вот проблемы хранения данных которые растут на 10гб каждый день (при 1000 tps по 100 байт) вижу.

Нужно отрезать хвост из транзакций, формируя скользящий генезис блок, к которому все откатываются в случае чего. Таким образом на 1 Тб диске у вас сможет храниться ~100 дней истории, этого более чем достаточно для построения надежной системы. Стоимость 1Тб SSD-диска в районе 500 USD, вполне подъемная сумма даже для новичков.

Обрезать то можно, но будет ли доверие пользователей к такой системе?

Собственно есть еще два варианта, которые сейчас прорабатываю:
1. Шардинг (хранить транзакции и счета рапределенно)
2. Историю транзакций хранит клиент, а сеть хранит только хеши блоков. Но это в теории, т.к. непонятно как на практике это реализовать...


jr. member
Activity: 54
Merit: 1
Для меня большей проблемой является алгоритмы стимулирования роста сети. Я не вижу проблему создания распределённого консенсуса. Точнее у меня её нет. А вот проблемы хранения данных которые растут на 10гб каждый день (при 1000 tps по 100 байт) вижу.


Нужно отрезать хвост из транзакций, формируя скользящий генезис блок, к которому все откатываются в случае чего. Таким образом на 1 Тб диске у вас сможет храниться ~100 дней истории, этого более чем достаточно для построения надежной системы. Стоимость 1Тб SSD-диска в районе 500 USD, вполне подъемная сумма даже для новичков.

Может скооперируемся нашими знаниями?

Вроде как уже кооперируем)
full member
Activity: 411
Merit: 139
Чем больше нод конкурируют за подпись блока, тем реже одна нода его подписывает. Поэтому рост вознаграждения привязанный к росту количества нод снизит прибыльность и остановит рост сети, достигнув некоего значения. Так что баланс рано или поздно будет достигнут.

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


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

Для меня большей проблемой является алгоритмы стимулирования роста сети. Я не вижу проблему создания распределённого консенсуса. Точнее у меня её нет. А вот проблемы хранения данных которые растут на 10гб каждый день (при 1000 tps по 100 байт) вижу.

Может скооперируемся нашими знаниями?
jr. member
Activity: 54
Merit: 1
Чем больше нод конкурируют за подпись блока, тем реже одна нода его подписывает. Поэтому рост вознаграждения привязанный к росту количества нод снизит прибыльность и остановит рост сети, достигнув некоего значения. Так что баланс рано или поздно будет достигнут.

Но сегодня упор делается не на стимулирование роста сети. Этот процесс уже хорошо изучен. Основной проблемой является количество транзакций, которые сеть может обработать и здесь дело не в мощности отдельных нод, а в том как сделать алгоритм принятия решения распределенным.
full member
Activity: 411
Merit: 139
Я вижу решение такое - число монет выдаваемое в качестве награды за блок должно зависеть от уровня сложности PoW.
Например можно сделать:
1)Линейная зависимость. Награда за блок равна среднему хешрейту сети в данный момент (т.е. равна: 2 в степени числа нулей в "красивом" хеше найденного блока)
2)Квадратный корень. Тоже что и 1, только берется квадратный корень
3)Логарифмическая. Тупо берется число первых нулей красивого хеша.

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

Теперь по существу вашего подхода:
1. Чем выше сложность - тем больше вознаграждение
2. Чем больше вознаграждение - тем больше привлекается мощностей
3. Чем больше мощность сети - тем выше сложность
4. GOTO в пункт 1

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

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


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

Дополнения, к алгоритму:
Рост эмиссии можно ограничить сверху временем - т.е. будет введен понижающий коэффициент - как степень от времени по аналогии с биткоином. Например, уменьшение в два раза каждые полгода.
Собственно об этом я писал изначально:
Quote
2) Без инфляционный вариант. Но с другой стороны ничего не мешает ограничить эмиссию монет сверху, например, при достижении эмиссии 100 млн монет, правила меняются меняются - заменяются на классический вариант с автоматическим понижением в 2 раза каждые N блоков


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



legendary
Activity: 2317
Merit: 2318
Я вижу решение такое - число монет выдаваемое в качестве награды за блок должно зависеть от уровня сложности PoW.
Например можно сделать:
1)Линейная зависимость. Награда за блок равна среднему хешрейту сети в данный момент (т.е. равна: 2 в степени числа нулей в "красивом" хеше найденного блока)
2)Квадратный корень. Тоже что и 1, только берется квадратный корень
3)Логарифмическая. Тупо берется число первых нулей красивого хеша.

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

Теперь по существу вашего подхода:
1. Чем выше сложность - тем больше вознаграждение
2. Чем больше вознаграждение - тем больше привлекается мощностей
3. Чем больше мощность сети - тем выше сложность
4. GOTO в пункт 1

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

Ваш алгоритм зависимости вознаграждения от сложности может привести к тому, что майнеры быстро высосут всю эмиссию (у вас эмиссия ограничена?). Присутствие корня в зависимости несколько сгладит ситуацию, но не настолько принципиально.
newbie
Activity: 204
Merit: 0
full member
Activity: 411
Merit: 139
По хорошему это ничего не поменяет, если провести аналогию с биткоином, то зависимость награды за блок от сложности существует и на выходе мы получем практически тоже самое. Разве нет?

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

Вообще я исходил не из денежных принципов, а из принципов стимулирования работы сети. Т.е. если забыть что монеты можно продать/купить на бирже, а считать их только средством оплаты за транзакции внутри сети, то таким образом создается баланс монет и услуг.
member
Activity: 294
Merit: 10
По хорошему это ничего не поменяет, если провести аналогию с биткоином, то зависимость награды за блок от сложности существует и на выходе мы получем практически тоже самое. Разве нет?
full member
Activity: 411
Merit: 139
Эмиссия монет.

Общеизвестно, что чем более популярной становится криптовалюта, тем больше у нее узлов (нод) в сети и тем больше в ней совершается транзакций. Понятно, что чем больше нод подключается к сети, тем больше тратится общей вычислительной мощности для осуществления транзакций. Например, когда в сети было 100 нод, то сеть обрабатывала 100 транзакций в день и, например, эмитировано в день 100 монет. Логично ожидать, что когда в сети будет 1 млн нод и в сети будет обрабатываться 1 млн транзакций, то эмиссия монет будет 1 млн монет, т.к. вычислительные затраты выросли пропорционально.

Представьте следующие начальные условия:
1) Есть блокчейн с высокой скоростью транзакций (от тысячи TPS).
2) Алгоритм консенсуса максимально децентрализованный - т.е. чистый PoW

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

Я вижу решение такое - число монет выдаваемое в качестве награды за блок должно зависеть от уровня сложности PoW.
Например можно сделать:
1)Линейная зависимость. Награда за блок равна среднему хешрейту сети в данный момент (т.е. равна: 2 в степени числа нулей в "красивом" хеше найденного блока)
2)Квадратный корень. Тоже что и 1, только берется квадратный корень
3)Логарифмическая. Тупо берется число первых нулей красивого хеша.


На примере биткоина:
Block #521743  хеш: 00000000000000000016c6647923244f520ad7ca6ccdf07325e2113e667708a8
В нем 75 первых бит равны 0
1) Линейный способ - не хватает разрядности числа, это главный недостаток
2) 2^(75/2) = 194368031998 - тоже многовато, даже если считать в сатоши. Интересно, что если взять кубический корень, то 2^(75/3) = 33554432 сатоши (0.3 биткоина)
3) 75


Стоит заметить что есть два варианта развития:
1) Инфляционный вариант. Если эта идея станет популярной в массах, то экономика будет совсем непривычной - цена монеты не будет сильно расти. Наверно основной упор будет сделан на стабильности стоимости монеты и на совершении транзакций.
2) Без инфляционный вариант. Но с другой стороны ничего не мешает ограничить эмиссию монет сверху, например, при достижении эмиссии 100 млн монет, правила меняются меняются - заменяются на классический вариант с автоматическим понижением в 2 раза каждые N блоков


UPDATE:
Плюс описанного подхода:
Можно более точно заложить объем денег, требуемых для сети. Особенность криптовалют такая, что один раз установив правила игры, их уже практически нельзя поменять. Размер эмиссии - это рыночный показатель, зависящий от числа пользователей. Логично заложить эту зависимость в саму формулу.


UPD2

Алгоритм реализован в блокчейне TERA
https://bitcointalksearch.org/topic/ann-tera-smart-money-smart-contracts-pow-cpu-1000-tps-4573801
Consensus: PoW
Algorithm:  sha3 + meshhash (ASIC resistent hashing)
Max emission: 1 bln (TER)
Reward for block: 1-20 coins, depends on network power (one billionth of the remainder of undistributed amount of coins and multiplied by the hundredth part of the square of the logarithm of the network power)
Block size 120 KB
Premine: 5%
Development fund: 1% of the mining amount
Block generation time: 1 second
Block confirmation time: 8 seconds
Speed: from 1000 transactions per second
Commission: free of charge


Jump to: