Bitcoin Forum
October 21, 2017, 09:04:31 AM *
News: Latest stable version of Bitcoin Core: 0.15.0.1  [Torrent]. (New!)
 
   Home   Help Search Donate Login Register  
Pages: [1] 2 »  All
  Print  
Author Topic: Другой способ проверки PoW блока  (Read 879 times)
ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
August 14, 2017, 01:16:34 AM
 #1

Предлагаю такой вариант проверки качества блоков вместо перебора хэшей и увеличения сложности. Критика (конструктивная) приветствуется.

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

Недостатков пока не нашел. Возможно, они есть. Для этого и выкладываю эту тему на форум Smiley



Порядок такой:

1. На каждом блоке ставится таймштамп в заголовке. Майнер принимает этот блок только при соблюдении двух условий: первое - время по UTC в данный момент больше хотя бы на секунду, чем таймштамп блока; второе - между таймштампом полученного блока и предыдущего блока прошло как минимум 1200 секунд (ну или другое установленное время).

2. Естественно проверяется валидность всех транзакций, проверка правильности подсчета хэшей и т.п. Если где то найдена ошибка - блок просто отклоняется.

3. Если блок не отклоняется, то проверяется не "прилипился" ли ранее к предыдущему блоку другой блок. Если не прилипился, то блок ставится следующим. Если к предыдущему блоку уже прилипился какой то другой блок, то эти два конкурирующих блока проверяются на качество.

Далее описание того, как проверяется качество конкурирующих блоков:

4. У блока "А" и у блока "Б" подсчитывается 1 - количество транзакций в них (далее А1 и Б1); 2 - сумма передаваемых в транзакциях токенов (далее А2 и Б2); 3 - время в секундах между таймштампом каждого из них и таймштампом предыдущего блока (далее А3 и Б3); 4 - хэш каждого блока (А и Б), выполненный последовательно столько раз, сколько в нем разница между таймштампами (далее А4 и Б4).

Немного о том, почему хэширование последовательное. Во первых что такое последовательное хэширование. Думаю, такой упрощенный скрипт лучше тысячи слов  Wink :
result = this_block;
while (i<delta_timestamp) {
  result = hash(result);
  i++;
}
return result;
А теперь о том, зачем оно последовательное. Большинство ALU видеокарт будут сидеть-курить, ждать когда посчитается предыдущая итерация. А это позволит уравнять скорость расчета хэша на видеокарте и на процессоре. Что в свою очередь немного сбавит спрос на китайские видюхи Smiley, а также позволит программировать процесс формирования блоков на языках программирования, у которых нет доступа к видеокарте (например PHP). Ну и конечно же, это очень усложнит расчет на АСИКах.


Возвращаемся к алгоритму проверки качества конкурирующих блоков.

5. Сравниваем А1 и Б1 (количество транзакций в блоке) по логарифмической шкале. Например: пусть А1 = 8, Б1 = 4. Тогда по первому параметру у блока А количество баллов log("8")=0,90309. А у блока Б1 log("4")=0,60206.
Почему параметры сравниваются по логарифмической шкале - чтобы явное преимущество блока по одному из параметров не давало гарантии к его принятию всеми майнерами независимо от значений других блоков. Для еще более качественного уравнивания силы вклада отдельного параметра, можно увеличивать/уменьшать основание логарифма для этого параметра или умножать результат на корректирующий коэффициент. Все зависит от конкретного проекта и требований. Здесь рассмотрим общий вариант.

6. Аналогично по логарифмической шкале сравниваем А2 и Б2 (суммы передаваемых токенов). Пусть А2 = 0,456, Б2 = 12,3. Тогда количество баллов получится: -0,341 и 1,09 соответственно.

7. Сравниваем А3 и Б3 (разницу таймштампов блоков). Количество баллов определяется таким образом: минимально допустимая разница (выше в пример была приведена цифра 1200) делится на разницу между указанной в таймштампе сравниваемого блока и ей самой. От результата берется логарифм. Делится на корректирующий коэффициент (константу).
Приведу пример, чтобы через 20 минут (1200 секунд) блок получил чуть больше 1 балла, а через 30 минут (1800 секунд) блок получил чуть меньше 0,1 балла: result = log(timestamp/(1199-timestamp))/7. Где 7 - корректирующий коэффициент; 1199 - на секунду меньше 1200, чтобы избежать деления на 0.
Ну а для нашего случая пусть А1 = 1300, а Б1 = 1600. Тогда у блока А получится 0,3534 балла, у блока Б получится 0,1565 баллов.

8. Сравниваем хэши (естественно предварительно проверив их в п.2. на правильность). Переводим значения обоих хэшей в десятичную систему. Большее значение делим на меньшее, от результата берем логарифм (это если надо найти не меньший хэш, а больший; если хочется именно меньший, то можно делить не хэши а разницу между хэшем и максимально возможным его значением ну или еще какой-нибудь вариант, эти детали зависят от того, в каком проекте проверяются блоки). От полученного логарифма еще раз берем логарифм (или увеличиваем основание логарифма - кому как больше нравится). Логарифм от логарифма надо брать, чтобы значимость этого параметра не была намного больше других трех, так как отношение большего хэша к меньшему может быть очень велико. Тогда блоку с меньшим хэшем достанется 0 баллов, а блоку с большим хэшем достанется какое то положительное число.

Для нашего примера: пусть А4 дал нам 0 баллов, а Б4 дал нам 1,051 балл.

9. Можно тупо сложить эти параметры для каждого блока и выбрать большее. Но, чтобы еще уменьшить вероятность атаки 51%, можно каждый параметр каждого блока умножить на коэффициент, который прописан в предыдущем блоке. Это позволит уменьшить силу отдельного параметра, если он в предыдущих блоках показывал все большую и большую монополизацию майнеров. Эти коэффициенты могут меняться в пределах от 20% до 40%. То есть, например, если в нескольких блоках подряд большое влияние на выигрыш блока в соревнованиях с конкурентами оказывает параметр суммы передаваемых токенов, то сила этого параметра уменьшается в пользу других параметров. По каким алгоритмам определяется сила этих коэффициентов не буду расписывать, а то слишком "многабукф" получается Smiley . Если кому интересно, отдельно опишу.

Ну и для окончания расчетов для нашего примера (дабы все-таки определить победителя Smiley ). Пусть, предыдущим блоком заданы коэффициенты К1, К2, К3 и К4 для соответствующих параметров такие: 23%, 25%, 28%, 24%.
Тогда для блока А получится суммарный балл: 0,90309*23%+(-0,341)*25%+0,3534*28%+0*24% = 0,22141
Для блока Б получится суммарный балл: 0,60206*23%+1,09*25%+0,1565*28%+1,051*24% = 0,70703
В итоге блок Б принимаем, а блок А - отвергаем.

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

Hello world Wink
1508576671
Hero Member
*
Offline Offline

Posts: 1508576671

View Profile Personal Message (Offline)

Ignore
1508576671
Reply with quote  #2

1508576671
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1508576671
Hero Member
*
Offline Offline

Posts: 1508576671

View Profile Personal Message (Offline)

Ignore
1508576671
Reply with quote  #2

1508576671
Report to moderator
1508576671
Hero Member
*
Offline Offline

Posts: 1508576671

View Profile Personal Message (Offline)

Ignore
1508576671
Reply with quote  #2

1508576671
Report to moderator
1508576671
Hero Member
*
Offline Offline

Posts: 1508576671

View Profile Personal Message (Offline)

Ignore
1508576671
Reply with quote  #2

1508576671
Report to moderator
imhoneer
Full Member
***
Offline Offline

Activity: 168



View Profile
August 14, 2017, 07:52:22 AM
 #2

Quote
Недостатков пока не нашел. Возможно, они есть. Для этого и выкладываю эту тему на форум Smiley

Прямо сходу недостатки видны сразу невооруженным взглядом:

1) Иллюзия о том, что вычисления по другому, что-то принципиально изменит. Здесь дело всего лишь в цене, будет выгодно появиться оборудование и под ваши вычисления.

2) Работа с timeshtamp. Поищите в интернете, как люди пробуют решать эту проблему максимум на 5 серверах и какие проблемы с этим, где-то используется векторное время, где-то еще что-то, у вас же сеть состоит более чем из 5000 нод и разбросаны по всей планете.

3) И последнее
Quote
Майнер принимает этот блок только при соблюдении двух условий
опять майнеры только, а где полные ноды обычных пользователей.
ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
August 14, 2017, 03:36:38 PM
 #3

1) Иллюзия о том, что вычисления по другому, что-то принципиально изменит. Здесь дело всего лишь в цене, будет выгодно появиться оборудование и под ваши вычисления.
Если обратили внимание, тут получается, что сами расчеты не так уж и сложны. Надо 1200-1800 раз посчитать хэш и выбрать наиболее подходящий вариант. Все. Больше ничего. Обычный процессор с ними очень легко справится. Поэтому нет смысла делать какое либо сложное оборудование. Тут в основном задача майнера заключается в поиске транзакций, а не в спецрасчетах. Если кто то сделает спецоборудование для поиска транзакций - ну что же, пусть делает, это очень нужный прибор. Этот прибор не копает хэши "от забора до обеда", а интеллектуально выискивает информацию в сети.


2) Работа с timeshtamp. Поищите в интернете, как люди пробуют решать эту проблему максимум на 5 серверах и какие проблемы с этим, где-то используется векторное время, где-то еще что-то, у вас же сеть состоит более чем из 5000 нод и разбросаны по всей планете.
Тут используется таймштамп не в чистом виде. В расчетах участвует разница между значением в этом блоке и в предыдущем. Скорее всего, дельту при формировании блока будут проставлять задним числом равной 1200. В редких случаях (например, если хэш станет намного привлекательнее), есть смысл поставить цифру 1201, 1202, 1203... но не намного больше.

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

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


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

Hello world Wink
imhoneer
Full Member
***
Offline Offline

Activity: 168



View Profile
August 14, 2017, 07:16:01 PM
 #4

Уважаемый, сеть биткоин не так проста как описывается во многих текстах.

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

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

Чтобы понять о чем я говорю посмотрите мою тему https://bitcointalk.org/index.php?topic=2025411.0 и особенно прочитайте вопросы, которые мне задавал человек с ником AlexNeto и мои ответы.

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

У Вас же сеть классического биткоина и участники не имеют постоянного мониторинга всей сети.

Идея pow именно и держится на дороговизне ресурсов и сложности вычислений, понижая планку входа Вы тем самым облегчаете создание бот-армии, которая будет массово подменять блокчейн и создавать прочие гадости.
ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
August 17, 2017, 07:49:47 PM
 #5

Уважаемый, сеть биткоин не так проста как описывается во многих текстах.

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

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

Чтобы понять о чем я говорю посмотрите мою тему https://bitcointalk.org/index.php?topic=2025411.0 и особенно прочитайте вопросы, которые мне задавал человек с ником AlexNeto и мои ответы.

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

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


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

У Вас же сеть классического биткоина и участники не имеют постоянного мониторинга всей сети.

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

Для того, чтобы бот-сеть смогла подменить блокчейн, ей нужно захватить все 4 параметра: ловить больше транзакций, ловить наиболее "дорогие" транзакции, быстрее отсылать блоки, поймать удачу (чтобы хэш получился "красивым"). Если бот сеть не смогла ничего сделать с криптами, у которых только один параметр, то с 4-мя ей будет еще сложнее.

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

Hello world Wink
ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
August 17, 2017, 08:08:17 PM
 #6

Возвращаясь к Вашему проекту. По большому счету добиться анонимности можно намного проще. Для этого вполне достаточно стандартного биткоинового PoW. Но Вы зачем то все усложнили.

Hello world Wink
imhoneer
Full Member
***
Offline Offline

Activity: 168



View Profile
August 17, 2017, 10:30:18 PM
 #7


1. Извиняюсь за долгий ответ. Да, я раньше читал эту Вашу тему. И даже попытался дать совет по ее совершенствованию (что то среднее между тем, что я хочу сделать и то, что хотите сделать Вы). Но почему то Вы хотите настоять именно на распределенном консенсусе. Я же предлагаю в этом смысле не изобретать ничего нового, а сделать привычную децентрализованную сеть. Всё будет работать прекрасно и анонимно. Уговорить Вас мне не удалось Smiley

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

3. Для того, чтобы бот-сеть смогла подменить блокчейн, ей нужно захватить все 4 параметра: ловить больше транзакций, ловить наиболее "дорогие" транзакции, быстрее отсылать блоки, поймать удачу (чтобы хэш получился "красивым"). Если бот сеть не смогла ничего сделать с криптами, у которых только один параметр, то с 4-мя ей будет еще сложнее.

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

1. Для начала давайте немного определимся с тем, как мы понимаем распределенная и децентрализованная сеть.

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

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

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

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

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

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


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

4. Да это проблема, решая которую можно найти много интересный идей.
imhoneer
Full Member
***
Offline Offline

Activity: 168



View Profile
August 17, 2017, 10:31:47 PM
 #8

Возвращаясь к Вашему проекту. По большому счету добиться анонимности можно намного проще. Для этого вполне достаточно стандартного биткоинового PoW. Но Вы зачем то все усложнили.

Скорее не усложнил, а сделал по другому. Не забывайте, что у меня в сети нет комиссий и нет специализированных майнеров.
ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
August 29, 2017, 05:15:34 PM
 #9

Да, конечно, я понимаю различия Smiley

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

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

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

Hello world Wink
igordata
Full Member
***
Offline Offline

Activity: 126



View Profile WWW
August 29, 2017, 09:18:48 PM
 #10

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

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

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

В твоей сети каждые 1200 секунд будут появляться одинаковые конкурирующие блоки от всех майнеров сети, которые будут всеми остальными проверяться каждый блок.

только вдумайся

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

и чем больше у тебя будет майнеров - тем хуже ситуация.

imhoneer
Full Member
***
Offline Offline

Activity: 168



View Profile
August 30, 2017, 10:23:23 AM
 #11


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

2. Сейчас в своем проекте делаю что то среднее между Вашим предложением и тем, что у меня было изначально. Только я делаю обычную децентрализованную сеть. С распределенной, как Вы уже сами заметили, есть много нерешаемых вопросов. Например, та же самая транзакция на разные адреса, запущенная с разных концов сети. Может, все-таки стоит вернуться к децентрализованной сети? Она себя вполне успешно показала во множестве альткоинов. Если интересно, могу показать что у меня получается. Может понравится, тогда объединим усилия.

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

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

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

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


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

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

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


На текущий момент я работаю над ещё более усовершенствованной версией криптовалюты.
ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
September 04, 2017, 08:10:49 PM
 #12


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

2. Сейчас в своем проекте делаю что то среднее между Вашим предложением и тем, что у меня было изначально. Только я делаю обычную децентрализованную сеть. С распределенной, как Вы уже сами заметили, есть много нерешаемых вопросов. Например, та же самая транзакция на разные адреса, запущенная с разных концов сети. Может, все-таки стоит вернуться к децентрализованной сети? Она себя вполне успешно показала во множестве альткоинов. Если интересно, могу показать что у меня получается. Может понравится, тогда объединим усилия.

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

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

Я это прекрасно понимаю. Это и было "загвоздкой" до тех пор, пока не придумал (с Вашей подсказкой) другой способ. Чувствую, что мы немного не понимаем друг друга. Давайте я на днях выложу демонстрационную версию своих наработок (уже почти готова демонстрационная версия, но я ее буду отправлять не только программистам, но и потенциальным пользователям, поэтому хочу немного подразукрасить, чтобы прилично смотрелась Smiley ). Я думаю, увидев что получилось, Вы меня лучше поймете. Там, конечно, даже до альфа-версии ой-ой-ой как далеко. Но смысл того, как проводятся транзакции уже отчетливо виден. В принципе, все относительно безопасно. Сейчас думаю как можно было бы ускорить транзакции, чтобы на один платеж не уходило по 2-4 часа (вот это у меня сейчас слабое место для критики).

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

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

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

Ну, как я уже сказал выше, это немного кажется непонятным, пока не увидите своими глазами. Думаю, уже скоро закончу "разукрашивание". Потом скину сюда ссылку.

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

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

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


На текущий момент я работаю над ещё более усовершенствованной версией криптовалюты.

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

Hello world Wink
imhoneer
Full Member
***
Offline Offline

Activity: 168



View Profile
September 05, 2017, 09:19:48 AM
 #13

С удовольствием посмотрю на ваше решение. Хотя если честно непонятно, почему проведение транзакции обязательно ждать 2 часа, неужели нет способов уменьшить время.


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

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

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

- скрытие своего IP. Всё что нужно сделать это подменить свой адрес и отправить анонимную транзакцию на одну из нод обычной валюты.

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

- все остальные преимущества анонимной валюты, что я описывал в теме https://bitcointalk.org/index.php?topic=2025411.msg20176665#msg20176665
ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
September 06, 2017, 09:23:12 PM
 #14

С удовольствием посмотрю на ваше решение. Хотя если честно непонятно, почему проведение транзакции обязательно ждать 2 часа, неужели нет способов уменьшить время.


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

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

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

- скрытие своего IP. Всё что нужно сделать это подменить свой адрес и отправить анонимную транзакцию на одну из нод обычной валюты.

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

- все остальные преимущества анонимной валюты, что я описывал в теме https://bitcointalk.org/index.php?topic=2025411.msg20176665#msg20176665

Ответил в личку, но мне bitcointalk напомнил, что я тут дух; а духу не положено обращаться к дедам Smiley. Поэтому не знаю, дошло ли моё сообщение.

На всякий случай, основные моменты, дублирую сюда.

Вот сюда (http://witchcms.xyz/) выложил демоверсию. Там куча ограничений. Более полная (но также еще не доработанная) версия на гитхабе: https://github.com/ilyamain/witch.

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

Про 2-4 часа. Ну это чтобы сеть успела определиться с офранами. В принципе, стандартно, но если делать безопасную транзакцию, чтобы майнеры китайские не перехватили пароль и не подменили транзакцию, то потребуется сначала отправить намерение о совершении транзакции с публичным ключом. Потом дождаться "закрепления блока". И только потом отправлять саму транзакцию. Если время между формированием блоков 20 минут, а максимальная длина ветки офранов - 5 штук (вместе с принятым получается 6 штук), то примерно 4 часа на двухэтапную транзакцию и уйдет.

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

Hello world Wink
imhoneer
Full Member
***
Offline Offline

Activity: 168



View Profile
September 06, 2017, 11:03:43 PM
 #15


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

Ваше сообщение дошло, я также ответил в личку.

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

Кроме того,реализация в коде позволит увидеть, как система ведет себя и реагирует на различные факторы, т.к. при разработке идеи такие нюансы могут быть не видны.
sasha.rmnff
Jr. Member
*
Offline Offline

Activity: 41

rust and C++ developer


View Profile
September 07, 2017, 07:12:01 PM
 #16

С удовольствием посмотрю на ваше решение. Хотя если честно непонятно, почему проведение транзакции обязательно ждать 2 часа, неужели нет способов уменьшить время.


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

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

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

- скрытие своего IP. Всё что нужно сделать это подменить свой адрес и отправить анонимную транзакцию на одну из нод обычной валюты.

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

- все остальные преимущества анонимной валюты, что я описывал в теме https://bitcointalk.org/index.php?topic=2025411.msg20176665#msg20176665

Ответил в личку, но мне bitcointalk напомнил, что я тут дух; а духу не положено обращаться к дедам Smiley. Поэтому не знаю, дошло ли моё сообщение.

На всякий случай, основные моменты, дублирую сюда.

Вот сюда (http://witchcms.xyz/) выложил демоверсию. Там куча ограничений. Более полная (но также еще не доработанная) версия на гитхабе: https://github.com/ilyamain/witch.

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

Про 2-4 часа. Ну это чтобы сеть успела определиться с офранами. В принципе, стандартно, но если делать безопасную транзакцию, чтобы майнеры китайские не перехватили пароль и не подменили транзакцию, то потребуется сначала отправить намерение о совершении транзакции с публичным ключом. Потом дождаться "закрепления блока". И только потом отправлять саму транзакцию. Если время между формированием блоков 20 минут, а максимальная длина ветки офранов - 5 штук (вместе с принятым получается 6 штук), то примерно 4 часа на двухэтапную транзакцию и уйдет.

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

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

cryptopus – blockchain-платформа для брокеров
igordata
Full Member
***
Offline Offline

Activity: 126



View Profile WWW
September 07, 2017, 07:58:46 PM
 #17

О, круто! Фанаты! Поздравляю!

ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
September 07, 2017, 09:11:17 PM
 #18

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

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

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

В твоей сети каждые 1200 секунд будут появляться одинаковые конкурирующие блоки от всех майнеров сети, которые будут всеми остальными проверяться каждый блок.

только вдумайся

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

и чем больше у тебя будет майнеров - тем хуже ситуация.

Да, для этого все и сделано. Это и есть проверка PoW (proof of work, именно work). Я и не говорил, что майнерам будет легко. Они за это бабки получают Smiley. Но зато, они теперь посчитают наиболее оптимальную подборку транзакций, а не наиболее красивый хэш. Согласитесь - более интеллектуальная работа Smiley

P.S. Я извиняюсь за долгие ответы. У меня на форуме статус новичка. Форум мне постоянно говорит, что я могу отправлять одно сообщение в какое то там время (считай за весь нормальный вечер могу отправить одно сообщение). У меня одна ветка не отвечена уже примерно 3 недели. Прям стыдно перед пацанами Sad

Hello world Wink
igordata
Full Member
***
Offline Offline

Activity: 126



View Profile WWW
September 07, 2017, 09:14:44 PM
 #19

там очень короткое время (90 секунд) и тебя отпустит уже через пять сообщений, так что не парься. Ответь, как понял Wink

ilyaneba
Newbie
*
Offline Offline

Activity: 12

Ilya Kuznetsov


View Profile
September 17, 2017, 09:24:49 PM
 #20

там очень короткое время (90 секунд) и тебя отпустит уже через пять сообщений, так что не парься. Ответь, как понял Wink


Понял хорошо! Smiley

А вот прописать описанный способ проверки оказывается капец как сложно Sad. Особенно сложно коэффициенты и основания подбирать так, чтобы параметры примерно одинаковую силу имели и чтобы в равновесии держали друг друга. Тем более, в моем проекте этих параметров не 4, а 10, некоторые из них строковые, некоторые целочисленные, некоторые с плавающей запятой. Но я думаю, если после меня кому то понадобится, то он это сделает проще и быстрее, используя имеющиеся исходники.

Hello world Wink
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!