Pages:
Author

Topic: Асикостойкий алгоритм PoW - page 31. (Read 6109 times)

sr. member
Activity: 770
Merit: 305
Зачем вообще нужен асикостойкой алгоритм? Асики защищают сеть, они полезны. При цпу мйнинге сеть беззащитна.
От кого они защищают?
От владельцев большего количества асиков?  Grin
full member
Activity: 231
Merit: 100
Зачем вообще нужен асикостойкой алгоритм? Асики защищают сеть, они полезны. При цпу мйнинге сеть беззащитна.
sr. member
Activity: 770
Merit: 305
Все логические операции можно реализовать через "не" и одно из "и" или "или"
Для арифметических операций этого недостаточно Нужна  ещё операция сложения с переносом в следующий разряд.
Окей. Подловили вы на не совсем точной формулировке.
Я не могу сказать, что являюсь большим специалистом в проектировании микросхем и
конструировании компиляторов. Набор инструкций современных процессоров никогда
полностью не знал, а дискретную математику уже подзабыл.

Но суть остается прежней: любой алгоритм может быть реализован с использованием
элементарной транзисторной логики, так что предлагать "а давайте напихаем в него
все инструкции процессора x86" - это по-просту глупо. Если это алгоритм - то можно
создать специализированную микросхему которая этот алгоритм щелкает.
newbie
Activity: 88
Merit: 0
Скорее всего, асикостойкий алгоритм должен использовать как можно больше типов математических операций.
Вообще-то, все математические операции реализуются через "и", "или" и "не".
Если вы придумаете какой-нибудь новый алгоритм хэширования, то специализированное
устройство из транзисторов, которое с наибольшей эффективностью реализует
этот алгоритм и не содержит ничего лишнего и будет асиком. Неужели это непонятно?

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

sr. member
Activity: 770
Merit: 305
Скорее всего, асикостойкий алгоритм должен использовать как можно больше типов математических операций.
Вообще-то, все математические операции реализуются через "и", "или" и "не".
Если вы придумаете какой-нибудь новый алгоритм хэширования, то специализированное
устройство из транзисторов, которое с наибольшей эффективностью реализует
этот алгоритм и не содержит ничего лишнего и будет асиком. Неужели это непонятно?
legendary
Activity: 2492
Merit: 2232
Вы считаете, что условные переходы как-то более сложно реализовать транзисторной
логикой чем побитовые операции?
Скорее всего, асикостойкий алгоритм должен использовать как можно больше типов математических операций.

Если речь о 32-битной архитектуре, то следует использовать все возможные инструкции x86:
https://en.wikipedia.org/wiki/X86_instruction_listings
sr. member
Activity: 770
Merit: 305
Смотрю исходный код SHA256. Есть побитовые сдвиги, условных переходов нет.
То есть цикл - это по-вашему не условный переход? Хорошо, допустим.
Ладно, пусть даже и в расчете SHA256 нет явного ветвления по условиям.
Вы считаете, что условные переходы как-то более сложно реализовать транзисторной
логикой чем побитовые операции?
legendary
Activity: 2492
Merit: 2232
Итого:
¼  всех случайных команд приводит к условному переходу
примерно ⅓ команд - к случайному наполнению аккумулятора
примерно ⅓ команд - к перемешиванию хеша

Можно убрать все арифметические операции (команды 4R-AR), а ввести только сложные тригонометрические функции, как например команда BR, чтобы затруднить работу на GPU
Собственно, тригонометрические функции тоже состоят из элементарных арифметических операций.
legendary
Activity: 2492
Merit: 2232
Ниже я привожу такой алгоритм, как он Вам, теперь всегда будете дропать?
Что помешает сделать асик использующий именно такой алгоритм?
Вы думаете в SHA256 нет операций побитовых сдвигов и условных переходов?
Смотрю исходный код SHA256. Есть побитовые сдвиги, условных переходов нет.
legendary
Activity: 2492
Merit: 2232
Вычислительные операции алгоритма должны быть заранее неизвестны и задаваться, например, исходя из хеша предыдущего блока.
Во-первых, это не помешает сделать асик.
Во-вторых, я буду дропать (не отдавать свой подсчет в сеть) блок N если после
него блок для блока N+1 будет выпадать неудобный мне алгоритм.
Смысл? Вы хотите майнить абсолютно все блоки подряд?
full member
Activity: 182
Merit: 100
sr. member
Activity: 770
Merit: 305
Ничего не мешает, но формально это будет не асик, а процессор - см размышления в моем первом посте.
Вы как-то странно определили для себя понятие асик:
Quote
ASIC - микросхема которая умеет вычислять только хэши (на несколько порядков быстрее CPU/GPU)
каюсь, я как-то не обратил сразу на это внимание.

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

Я не готов сейчас обсуждать достоинства и недостатки вашей хэш-функции. Просто не обладаю
достаточными знаниями в этом вопросе. Моих знаний не хватит на то, чтобы сказать, насколько
эта хэш-функция будет криптографически строгой. Но знаний хватит, чтобы сказать, что по своей
алгоритмической сложности она не будет сложнее sha256 и соответственно ни о какой "асикостойкости"
речь идти не может.
full member
Activity: 411
Merit: 135
Ниже я привожу такой алгоритм, как он Вам, теперь всегда будете дропать?
Что помешает сделать асик использующий именно такой алгоритм?
Вы думаете в SHA256 нет операций побитовых сдвигов и условных переходов?

Ничего не мешает, но формально это будет не асик, а процессор - см размышления в моем первом посте.

kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Прочитал всю тему, думал кто-то уже что-то предложил стоящее. Пока только в последних постах вижу конкретные предложения, но это уже радует. Есть что обсуждать.
Я интересовался вопросом асикостойких алгоритмов и сейчас интересуюсь. Так что тема интересная если обсуждать конкретные вещи.
Конкретно, что я нарыл: начиная с лайткоина с асиками пробуют бороться захерачивая в алгоритм большие объемы памяти. Не вдавался в технические подробности че-каво, но в принципе понятно как это в программе на си делать.
А еще вот сейчас на взлете Монеро с алгоритмом криптонайт. Они говорят, что это типа там используют что-то ну вообще специфичное только для х86 архитектуры. Я пробовал ковырять исходники, но по честному нифига не понял - что там специфичного. Вот интересно, может тут кто подскажет?
sr. member
Activity: 770
Merit: 305
Ниже я привожу такой алгоритм, как он Вам, теперь всегда будете дропать?
Что помешает сделать асик использующий именно такой алгоритм?
Вы думаете в SHA256 нет операций побитовых сдвигов и условных переходов?

full member
Activity: 411
Merit: 135
Вычислительные операции алгоритма должны быть заранее неизвестны и задаваться, например, исходя из хеша предыдущего блока.
Во-первых, это не помешает сделать асик.
Во-вторых, я буду дропать (не отдавать свой подсчет в сеть) блок N если после
него блок для блока N+1 будет выпадать неудобный мне алгоритм.

Ниже я привожу такой алгоритм, как он Вам, теперь всегда будете дропать?


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

Давайте подумаем как реализовать интерпретатор, можно например так:
1. Берем хеш предыдущего блока, его длина 32 байта
2. Считаем его программой из 32 строк
3. Каждый байт - это отдельная команда
4. Выполняем программу, ограниченное количество тактов (например 1000)

Состав АЛУ (регистры 2 байтовые):
Регистры:
00-Аккумулятор
01-03 - общего назначения

Память: 32 байта (собственно это входящий хеш, который нужно перемешать). Вся память разбита на 16 ячеек по 2 байта.
Все значения - это целые положительные числа длиной 16 бит.

Примеры команд (цифры в 16-м коде):
RM - загрузить в регистр R двухбайтовое число из ячейки M (memory)
4R - сложить значение из аккумулятора со значением из регистра R (registr) и поместить результат в аккумулятор
5R - аналогично вычитание
6R - аналогично умножение
7R - аналогично деление
8R - аналогично побитовое OR
9R - аналогично побитовое AND
AR - аналогично побитовое XOR
BR - аналогично SIN (!)
CL,DL - переход на строку L (label) если значение в аккумуляторе меньше 1^15 (C-переход на строки: 0-15, D-переход 16-31)
EL,FL - переход на строку L (label) если значение в аккумуляторе больше 1^15 (E-переход на строки: 0-15, F-переход 16-31)
Все остальные значения (4R-AR где значения R>3) приводят к перемешиванию памяти кратно значению в аккумуляторе.
где:
R-номер регистра 0-3
M-номер ячейки памяти (0-15)
L-номер строки программы (0-15)

Итого:
¼  всех случайных команд приводит к условному переходу
примерно ⅓ команд - к случайному наполнению аккумулятора
примерно ⅓ команд - к перемешиванию хеша

Можно убрать все арифметические операции (команды 4R-AR), а ввести только сложные тригонометрические функции, как например команда BR, чтобы затруднить работу на GPU
sr. member
Activity: 770
Merit: 305
Вычислительные операции алгоритма должны быть заранее неизвестны и задаваться, например, исходя из хеша предыдущего блока.
Во-первых, это не помешает сделать асик.
Во-вторых, я буду дропать (не отдавать свой подсчет в сеть) блок N если после
него блок для блока N+1 будет выпадать неудобный мне алгоритм.
legendary
Activity: 2492
Merit: 2232
newbie
Activity: 84
Merit: 0
Посмотрите в сторону капч , это сложные очень сложные задачи для компьютера  по сути нужен аналог только легко создаваемый компьютером но без возможности решить эту самую задачу этим же компьютером. Но даже если  маинить монеты сможет только человек,  будут заводы на которых будут сидеть сотни людей и майнить маинить монету принося счасть капиталисту)  От централизации ни куда...
member
Activity: 434
Merit: 19
Pages:
Jump to: