На одном корабле 6 пушек. На другом корабле 4 пушки. Какой из этих кораблей победит в бою, если они встречаются и начинают палить друг в друга? Вероятность попадания из пушки по кораблю неважно какая, пушки одинаковые с обеих сторон. Корабль тонет, если в него попали N раз.
Если в корабль попадут две пушки одновременно - это хорошо для исхода боя, корабль противника получает двойной урон. Если два пула найдут блок одновременно - это плохо для этих двух пулов, так как один из этих блоков придётся выкинуть. Именно поэтому в случае пулов 0.2 + 0.2 != 0.4 P(0.2 + 0.2) = 1 - (1 - 0.2)(1 - 0.2) = 0.36 (обоснование взято отсюда Теорема о сложении вероятностей 2. Вероятность суммы совместных событий) Разность 0.4 - 0.36 = 0.04 - это вероятность одновременного нахождения блоков двумя пулами, которая нам и портит картину.
|
|
|
Т.е. Питон - это эдакий Паскаль, на современный лад, да? Нет. Питон занял нишу Перла - весьма популярного языка 90-х - начала 00-х. А Паскаль никогда широко не использовался.
|
|
|
Насколько я понял, он утверждает что в состоянии при условии что у него 40% мощности, а у остальных мощности раздроблены по 20% или менее. По его мнению в данной ситуации 40%=51.2%.
В умных книжках по теории вероятности приводятся задачи такого типа: Есть 2 пушки. Вероятность попадания в цель каждой пушки 0.2. Какова вероятность того, что хотя бы одна пушка попадёт в цель? Решение: P = 0.2 + 0.2 = 0.4 - НЕПРАВИЛЬНО P = 1 - (1 - 0.2)(1 - 0.2) = 0.36 - ПРАВИЛЬНО То есть, одна пушка, попадающая в цель с вероятностью 0.4, будет попадать чаще, чем 2 пушки, каждая из которых попадает в цель с вероятностью 0.2. На основании таких же умозаключений, топикстартер делает вывод, что три пула, находящих блоки с вероятностью 0.2 каждый, будут находить блоки не с вероятностью 0.6, а с вероятностью 1 - (1 - 0.2)^3 = 0.488. А, следовательно, оставшийся один вражеский пул будет находить блоки с вероятностью 1 - 0.488 = 0.512. Я чувствую, что в этом предложении есть какое-то наебалово, но ума и знаний теории вероятности мне не хватает, чтобы понять в чём оно именно заключается. Но в любом случае, у каждого пула имеется тысячи "пушек" и на больших числах, когда вероятность попадания каждой "пушки" стремится к нулю, а число пушек стремиться к бесконечности, вероятности попадания в цель пулами "пушек" определяются только соотношением количества "пушек" в пулах (исходя из предположения что все "пушки" равной мощности).
|
|
|
Вероятность НЕ найти блок любым из 3-х "слабых" пулов ~ 0.8 : 0.8*0.8*0.8 = 0.512 - вероятость, что ни один из них не найдёт блок. Т.е., вероятность, что хотя бы один из 3-х "слабых" пулово найдёт блок = 1 - 0.512 => 48.8%
Согласен. Ваши рассуждения можно выразить формулой вероятности независимых совместных событий: P = 1 - (1 - p)^n где p - вероятность нахождения блока одним из пулов группы P - вероятность нахождения блока всей группой пулов n - количество пулов в группе
Мы с вами оба были неправы, но по-разному. Вы ошибочно полагали, что пулы выполняют одинаковые вычисления, что снижает эффективность группы пулов по сравнению с эффективностью одного пула. А я, в свою очередь, наивно полагал, что вероятность суммы совместных событий равна сумме вероятностей каждого события, то есть P = 0.2 + 0.2 + 0.2 = 0.6, что неверно. По поводу охулиона микромайнеров. Формулу выше можно написать так: P = 1 - (1 - N/n)^n, где N - совокупная доля группы в общем хешрейте (те самые 60% (0.6) от общей мощности) Если n -> oo мы получаем предел, который равен 1 - e^(-N). То есть, сколько бы у нас не было наномайнеров, они не смогут нам просадить вероятность нахождения блока ниже, чем 1 - e^(-N) (для N = 0.6, n -> oo, p = 0.45) Поэтому с точки зрения теории вероятности охулиард наномайнеров не страшнее охулиона микромайнеров. Самая сильная просадка вероятности нахождения блока наблюдается при переходе от одного пула к двум: от 0.6 к 0.51, а дальше уже легче. Ладно, это всё была занимательная математика, попробуем копнуть глубже. Хеш заголовков блоков вычисляет не пул, а вполне конкретная железяка - Antminer S9. Детализируем картину: У нас теперь есть один пул состоящий из 40 000 железяк, каждая из которых работает независимо друг от друга, потому что пул следит, чтобы все железяки получали разные задания. И есть 3 пула, каждый из которых состоит из 20 000 железяк. Теперь у нас появились большие числа на обеих сторонах: тёмной и светлой, теперь и там и там охулион майнеров. Напомню, что при больших n вероятность нахождения блока перестаёт зависеть от n и зависит только от доли мощности N: 1 - e^(-N) В итоге всё сводится к соотношению суммарных мощностей в разных цепочках без влияния количества вычислительных единиц в каждой цепочке (при значительном количестве этих самых вычислительных единиц).
|
|
|
Ну, вы читайте полностью, что я написал, а не только первые три слова.
Я всё читаю. Вы утверждаете, что интервалы входных данных для хеширования у разных пулов пересекаются. Я утверждаю обратное: каждый пул производит перебор в своём уникальном интервале входных данных. Я объяснил, почему эти интервалы не пересекаются. Я чего-то не заметил?
|
|
|
Да пофигу, в чём там какой процесс заключается: даже если они перебирают абсолютно случайные числа независимо друг от друга - по парадоксу дней рождений, вероятность перебирать одни и те же числа для них равна квадратному корню вероятности "вытянуть" нужное число.
Пул 1 подбирает нужный хеш так: sha256d(A + X + N) Пул 2 подбирает нужный хеш так: sha256d(A + Y + N), где A - общие данные для всех пулов N - nonce, который перебирается от 0 до max X, Y - данные уникальные для конкретного пула, которые принципиально не могут быть одинаковыми у разных пулов Какова вероятность того, что на вход sha256d у разных пулов поступят одинаковые данные?
|
|
|
А они все перебирают одно и то же.
Не одно и то же. Процесс майнинга заключается в подборе хеша заголовка блока, удовлетворяющего текущей сложности. В заголовке блока есть параметр Nonce, который инкрементируется от нуля и до упора, и для каждой итерации вычисляется хеш заголовка блока, если хеш удовлетворяет критерию сложности - перебор прекращается, блок найден. Но помимо Nonce в заголовке блока есть ещё параметры, и часть из них отличается от пула к пулу. К примеру, параметр корень дерева Меркле - это хеш всех транзакций, содержащихся в блоке. Даже если в блоке нет пользовательских транзакций, всё равно всегда есть одна Coinbase-транзакция, которая формирует вознаграждение из ничего и отправляет его на адрес пула. Понятно, что адреса для получения вознаграждения у пулов разные, а значит и Coinbase-транзакции у разных пулов будет разные и, соответственно, корень дерева Меркле будет отличаться у разных пулов.
|
|
|
Допустим, есть майнинг-пул, который выдаёт 4 TH/s, есть ещё 6 майнинг-пулов, каждый из которых выдаёт по 1 TH/s. В сумме, первый майнинг-пул имеет 40% мощности сети, но дело в том, что другие майнинг-пулы независимы и являются друг другу конкурентами, поэтому первый майнинг-пул, имея самую большую мощность среди незавимимых пулов, может, игнорируя орфаны, добавлять все блоки в блокчейн.
Доля орфанов незначительна. Важно, что эти 6 пулов работают над одним блокчейном и, следовательно, их мощности суммируются. Также здесь нужно учесть, что два майнинг-пула могут сговориться и объединить свои вычислительные мощности. В этом случае будет казаться, что блокчейн создают два неаффилированных пула, хотя по факту - один пул, за которым стоит одна группа людей.
Это уже совсем другая история. Тогда эти два пула технически можно рассматривать, как единое целое и ваш пример сводится к "Атаке 51%".
|
|
|
а нужно всего лишь продолжать упорно майнить свою цепочку. И рано или поздно (в зависимости от степени превосходства над "усреднённой" мощностью пулов) - она станет длинней.
Допустим, ваша мощность - 40% от общей. Мощность остальных пулов - 60% Вы с 40% майните свою цепочку, остальные с 60% майнят свою цепочку. Откуда возьмётся превосходство, если после сплита блокчейна вы начнёте находить блоки в 1.5 раза реже? А после ближайшего пересчёта сложности вы будете находить блоки с той же скоростью, но сложность вашей цепочки станет в 1.5 раза меньше, а правильной считается цепочка с максимальной совокупной сложностью.
|
|
|
Не подскажите, а можно как то программно изменить расположение папки C:\Users\NAME\AppData\Roaming\Ardor в которой nxt_db сохраняется.
В папке conf создаёте файл nxt.properties В нём пишите: nxt.dbDir=d:\\ardor_db\\ardor
|
|
|
Т. е. Вы считаете, что работать на на производителей железа и владельцев асиковых ферм лучше?
Не лучше, но и не хуже. Просто топикстартер предположил, что CPU-майнинг даёт более равномерное распределение монет среди людей, чем GPU- и ASIC-майнинг. Я попытался показать что это не совсем так, что и в CPU-майнинге есть владельцы больших мощностей. Покажите мне пожалуйста память, которое обеспечит адекватное время доступа для асика. Память для GPU разве не подойдёт для ASIC?
|
|
|
Если воткнуть обычные процессоры на плату, упаковать это в жестяной корпус, запитать все это от одного блока питания и параллельно на них гонять какую-то программу - это не совсем получается асиком, если следовать моему представлению.
Главный критерий специализированного устройства - конкурентное преимущество на конкретном алгоритме/алгоритмах перед другими специализированными и неспециализированными устройствами. Конкурентное преимущество, выражается в двух параметрах: 1. кол-во хеш/с на доллар цены устройства 2. кол-во хеш/с на Ватт потребляемой мощности устройства Ваши универсальные процессоры в жестяном корпусе не представляет никаких конкурентных преимуществ по этим двум параметрам перед моими 10 системными блоками с теми же процессорами по штуке в каждом блоке. Ну да, процессоры в жестяном корпусе можно смонтировать в стойку - они будут занимать меньше места, но это уже второстепенный критерий конкурентоспособности. Ну, а как называть специализированное устройство - это уже дело десятое, главное отличие не в названии, а в хеш/с/Вт. Это такой "полуасик" - то есть неспециализированное устройство, но с ограниченными возможностями для более широкого применения. Ферма в коробке на мой взгляд. Вряд ли алгоритмы там реализованы "в железе" кстати. Впрочем, сейчас и у обычных процессоров существуют какие-то возможности по прошивке, так что и код и на обычных CPU по сути дела не на железе исполняется.
Есть класс полупроводниковых устройств, называемый CPLD (те, что попроще) и FPGA (те, что посложнее). В них связи между между логическими элементами более-менее произвольно конфигурируются при инициализации со внутреннего или внешнего ПЗУ или процессора, позволяя создавать любые аппаратные вычислители, меняя алгоритмы на лету. Понятно, что часть алгоритмов потребует ещё и внешних чипов ОЗУ. FPGA - это специализированные устройства или универсальные? А хрен его знает. Кого, вообще, волнуют вопросы терминологии? Главное эти два вышеупомянутых мною параметров. В 2012 году начали выпускаться майнеры Биткойна на FPGA Xilinx (Spartan-6). Они выигрывали у GPU по параметру хеш/с/Вт, но пригрывали по параметру хеш/с/$. После появления в 2013 г. асиков, выигрывающих у GPU по обоим параметрам, интерес к FPGA-майнерам пропал. Возможно, что и Байкалах используются FPGA, но не известных производителей (Altera, Xilinx, Lattice), а нечто подобное китайского разлива.
|
|
|
Следовательно, АСИК настраивающийся на разные алгоритмы - это бессмыслица, нонсенс.
Baikal Giant X10 умеет 5 разных алгоритмов. Продаётся за большие деньги. Спрос есть - значит и смысл есть (для производителя, так точно).
|
|
|
А что если заставить сторону, заинтересованную в майнинге на видеокартах, написать интерпретатор javascript со всеми его наследственными фичами? Причем сам интерпретатор будет заведомо медленно JIT компиляции ноды. Давайте подумаем как это сделать. Может 32 байта - это набор лексем (+ символ перевода строки, т.к. именно с ним рождаются волшебные фичи javascript), который превращаем в код. Его подаем на исполнение JIT компилятору и если мы на ЦПУ, то все быстро исполняется. Осталось подумать как из набора случайный чисел (хеша) сделать осмысленный javascript с "фичами". Фичи нужны, чтобы не было желания код транслировать напрямую в машинный в асиках или GPU
Вы какие-то странные, на мой взгляд, преобразования предлагаете: хеш -> JavaScript -> последовательность инструкций CPU (x86, ARM и т. п.) Зачем в этой цепочке JavaScript? Можно ведь напрямую: хеш -> последовательность инструкций CPU (x86, ARM и т. п.) И ещё, хочу сказать пару слов про цель, которую вы хотите достичь. Вы ведь знаете, что в настоящее время существуют криптовалюты, алгоритмы которых малоэффективны для GPU? То есть, на GPU их майнить можно, но производительность не сильно отличается от производительности на CPU. Примеры таких алгоритмов: CryptoNight, Yescrypt. Вы знаете, кто любит майнить монеты на этих алгоритмах? 1. Владельцы ботнетов. Человек получает по почте файл, якобы счёт за какую-то там услугу, два раза по нему кликает, игнорирует предупреждение, запускается программа, которая получает задания от хозяина, и комп этого человека становится частью ботнета. И все эти компы майнят Монеро или что-то там ещё на хозяина ботнета. 2. Хитрожопые сисадмины. Люди, имеющие по своим служебным обязанностям, власть над компами в конторах, могут втихаря от хозяина конторы злоупотреблять этой властью, запуская на вверенных им компах майнеры по ночам, а особенно наглые и в рабочее время. 3. Владельцы некоторых сайтов. Сайт может иметь встроенный код для майнинга, исполняемый в браузерах посетителей сайта. Пока вкладка с сайтом открыта, комп посетителя майнит на хозяина сайта. Вы понимаете, что разрабатывая ASIC-оустойчивый алгоритм вы работаете на вышеперечисленные категории людей?
|
|
|
Далее смотрим: что значит сложный асик, способный выполнять любой набор инструкций? Это устройство по типу графической карты для научных вычислений (как например nVidia Tesla).
ASIC-у для вашего алгоритма не требуется выполнять любой набор инструкций, а только тот, который вы заложили в свой алгоритм. Пример 1: Современные процессоры архитектуры x86 поддерживают множество наборов инструкций: x86, x86-64, x87, MMX, SSE, AVX, AES-NI (это не полный перечень). Часть этих наборов используется исключительно для совместимости с программами, скомпилированными 20 лет назад. ASIC-у все эти наборы нафиг не нужны, что упрощает его разработку и количество элементов на кристалле. Пример 2: Tesla в частности, да и вообще все GPU NVIDIA и AMD разрабатываются прежде всего для вычислений чисел с плавающей точкой. Но в майнинге используются исключительно целочисленные операции, которые не являются приоритетом при разработке GPU. Недаром же, первые 5 лет майнинга GPU NVIDIA были совершенно непригодны для этого самого майнинга. Вы представляете, насколько можно упростить GPU, выкинув оттуда поддержку вычислений с плавающей точкой и поддержку 3D графики? Ну и, если вдруг вы не в курсе, ASIC-и становятся сложнее. К примеру, Baikal Giant X10 поддерживает 5 разных алгоритмов, плюс обещают добавить ещё два алгоритма для тех же самых чипов без изменения их дизайна, что намекает на реализацию некоторой программируемой логики в этих чипах.
|
|
|
Так и вы не ответили, что делать, если "три ноды" прислали три разных варианта блокчейна.
Отвечу я. Будет выбрана цепочка с наибольшей совокупной сложностью и длиной. Для каждой цепочки будут просуммированы сложности всех блоков и будет выбрана цепочка с максимальной суммой сложностей и при этом самая длинная. То есть, будет выбрана цепочка в которую было вложено большего всего вычислительных затрат. В этом смысл Proof-of-Work: чем больше в цепочку вложено вычислительных затрат, тем она защищённее от посягательства других цепочек. Предлагаю начать с определения самого понятия "консенсус"...
Консенсус в криптовалютах - это набор правил, по которым каждая нода проверяет транзакции и блоки на валидность.
|
|
|
Хорошо, а как тогда блок-эксплореры показывают статистику по адресам с их балансом?
Чтобы определить баланс для конкретного адреса А нужно просканировать все блоки и найти транзакции с выходами, позволяющими обладателю приватного ключа от адреса А потратить эти выходы. Среди этих выходов необходимо найти непотраченные на текущий момент выходы (UTXO). Сумма непотраченных выходов и будет составлять баланс.
|
|
|
Возможно есть материал, в котором был бы доходчиво описан процесс создания публичного ключа из приватного?
Mastering Bitcoin
|
|
|
И сколько обычно длиться времени такое падение? В крипте не так давно и видел падения только осенние в прошлом году.
В прошлый раз падение после лопнувшего пузыря длилось примерно 1.5 года: с декабря 2013 по июль 2015.
|
|
|
Я бы предложил себя ибо меня тоже спам достал со страшной силой. Но поскольку являюсь разрабом альткоина, то наверное моя кандидатура не подойдет? Хотя как вариант - могу зарегать новый аккаунт специально для модерирования ))
Поддерживаю кандидатуру kzv. Создание и поддержка собственного форка Биткойна - это не минус, а плюс, так как говорит о том, что человек разбирается в профильной тематике форума. Лишь бы время оставалось на форумные ассенизационные работы.
|
|
|
|