Pages:
Author

Topic: Мгновенные платежи (алгоритм реализации) - page 3. (Read 1847 times)

kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Алиса отправила по своим нодам валидную транзакцию с правильным номером, с правильной подписью и вот этим вот всем.

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


Ещё раз: каким "своим нодам"??

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

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

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

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

member
Activity: 280
Merit: 26
Алиса отправила по своим нодам валидную транзакцию с правильным номером, с правильной подписью и вот этим вот всем.

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

Дак еж твою налево.(с) кто-то в этой теме.

Ты чё, специально дурочку включил, подобно твоему друку?

Ещё раз: каким "своим нодам"??
По протоколу она обязана отправлять определённым нодам. Отправила другим - те обязаны переслать всё тем же определённым нодам. Ну, почитай, как DHT работает, в конце концов.

Отправила две разные транзакции с одним номером - так это быстро вычисляется, считанные секунды. И никто ничего не "получил", пока не подтвердил транзакцию.
Соответвтвенно, если кто-то будет что-то "слать" исключительно внутри себя, не пересылая тем, кому положено - оно внутри него и останется. И будет послано на йух при любой последующей попытке это своё дерьмо куда-то притулить.
member
Activity: 280
Merit: 26
Под валидным я подразумеваю value подписанный публичным ключом. К примеру, атакующий, используя свой ключ, одной ноде шлёт что этому ключу соответствует value 42, другой 100500, третьей 0. Какой из этих value истина? С чужими value можно провернуть такой же трюк, если хеш твоей ноды соотвествует запросам отвечающим за их ключи и ты сохраняешь старые value, а потом выдаёшь за свежие. Если майнер проебёт лохчейн, то встанет только запись, это не потеря данных. Забей на лохчейн и передачу цифровой пустоты, я говорю исключительно про децентрализованное хранилище данных.
Давай сперва отделим вилки от бутылок.
"Децентрализованное хранилище данных" - это торрент, как он есть: выложил blob, раздал всем хэши - качайте на здоровье.

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

В данном случае тот, кто шлёт всем один ключ с разными значениями - иными словами, транзакцию с одним номером, но разными получателями/суммами - сам себе злобный буратина: это пресловутый "даблспенд", попытка фрода и тыпы, ни одна нормальная нода в здравом уме такой платёж не примет. Вообще, "соседям" даже в каком-либо виде синхронизироваться между собой не нужно: эта запись (и, как следствие, транзакция) просто станет последней с этого адреса (точнее, последней валидной будет предыдущая).
legendary
Activity: 2450
Merit: 2190
member
Activity: 202
Merit: 27
Atom foundation
итд.
Я тебе сказал уже, твоя тупость совем унылой стала - иди глицин жри, может, поумнеешь, потом приходи.
ахах, истиричка, это ты себя в руках держать не можешь) себе свои советы про глицин давай
если не можешь ответить на неудобные вопросы, так и пиши

В общем, проще всё онлайн делать, нахер все эти оффлайновые "холодне кошельки", это всё в беткоэне от безысходности.

пиздец товарищи, фейспалм, ахах  Grin Grin Grin Cheesy Cheesy Cheesy Cheesy

Теперь он ту же транзакцию отправляет клиенту В. И опять отправляет её его (уже другим) соседям - и всё тем же самым своим.

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

Зафига отправлять каким-то трем ближайшим
Затем, что так положено по протоколу.

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

Да им не нужно знать, "правильная" нода, или нет. Они проверяют, правильность транзакции и подтверждения (согласно достаточно простых правил), ну и оповещают, кого надо - в первую очередь, получателя, если какая-то фигня (подпись не сходится, нарушена порядковая нумерация).

1. Ты можешь проверить подпись, а как ты проверишь сам счет? если ты хранишь только 1-2 транзакции. опять же если пару своих отвалилось в момент, как убедиться в валидности счета?

2. если умерли все свои или ушли в офлайн, твой счет мертв? кто его подтвердит твой счет?  и если ты наберешь новых своих, как им докажешь, что у тебя именно такое значение на счету?
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Ну вот, как пример:

Хорошо, я понял вроде тебя: получатель должен спросить у сети про валидность транзакции.
...
10 добрых соседей сказали правильная. 1 злой сказал неправильная.

Ведь 100500 раз писал же: что значит "сказал неправильная"?? Ну, так предъяви: либо с аналогичным или бОльшим номером, подписанную отправителем, либо другое какое доказательство "неправильности".


Дак еж твою налево. Я уже на васях-петях описал все. Куда уж проще я не знаюHuh

Quote
Шаг первый.
Алисина нода1 - Алисина нода2 - Валера (100 коинов, транзакция 1) <---валидная транзакция, но по хакерским нодам
Алисина нода1 - Добра нода - Боб (100 коинов, транзакция 1)

Шаг второй
Боб - Добрая нода - Галя (получила 100 коинов)
Валера - Алисина нода3 - Галя (получила еще 100 коинов)

Алиса отправила по своим нодам валидную транзакцию с правильным номером, с правильной подписью и вот этим вот всем.

И вот теперь Боб нихуя не сможет никому отправить, потому что в сети есть две полностью валидные транзакции но на разные адреса.
sr. member
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
Под валидным я подразумеваю value подписанный публичным ключом. К примеру, атакующий, используя свой ключ, одной ноде шлёт что этому ключу соответствует value 42, другой 100500, третьей 0. Какой из этих value истина? С чужими value можно провернуть такой же трюк, если хеш твоей ноды соотвествует запросам отвечающим за их ключи и ты сохраняешь старые value, а потом выдаёшь за свежие. Если майнер проебёт лохчейн, то встанет только запись, это не потеря данных. Забей на лохчейн и передачу цифровой пустоты, я говорю исключительно про децентрализованное хранилище данных.
member
Activity: 280
Merit: 26
итд.
Я тебе сказал уже, твоя тупость совем унылой стала - иди глицин жри, может, поумнеешь, потом приходи.
member
Activity: 280
Merit: 26
Как защититься от того, что пользователь вещает пирам разный value? (валидный)
"Разный" валидным быть не может - он либо устарел, либо одинаковый (либо невалидный вообще).
Quote
Как защититься от атаки большим количеством нод, которые отвечают на запросы пользователей несвежим value? (валидным)
Переведи.
Первый раз слышу об "атаке" ответами.
Quote
Как защититься от потери данных?
Так, чтоб абсолютно - никак.
Про QoS я вкратце писал выше - но если в беткоэне единственный майнер проебал блохчей, то и блохчейн в таком случае тоже ничто и никто не спасёт.
member
Activity: 280
Merit: 26
... обсуждение даблспенда уже на 10 круг пошло.

Ну дак чукчинечитатели патамучто.
Ну вот, как пример:

Хорошо, я понял вроде тебя: получатель должен спросить у сети про валидность транзакции.
...
10 добрых соседей сказали правильная. 1 злой сказал неправильная.

Ведь 100500 раз писал же: что значит "сказал неправильная"?? Ну, так предъяви: либо с аналогичным или бОльшим номером, подписанную отправителем, либо другое какое доказательство "неправильности".
Блин, сколько ещё раз написать-то надо.

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

На торренты я ссылался исключительно в смысле скорости передачи/распространения транзакции, которая равна скорости поиска пира в DHT.
sr. member
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
DevilOper, опиши на пальцах децентрализованное key-value хранилище, где key это публичный ключ, а value это подписанные данные относящиеся к этому ключу, а то обсуждение даблспенда уже на 10 круг пошло.

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

Имхо, без ответов на эти вопросы не столь важно имеет value отношение к финансам или нет. Надеюсь не будешь ссылаться на торренты, которые весьма далеки от данного кейса.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Хорошо, я понял вроде тебя: получатель должен спросить у сети про валидность транзакции.

Quote
Шаг первый.
Алисина нода1 - Алисина нода2 - Валера (100 коинов, транзакция 1)
Алисина нода1 - Добра нода - Боб (100 коинов, транзакция 1)

Шаг второй
Боб - Добрая нода - Галя (получила 100 коинов)
Валера - Алисина нода3 - Галя (получила еще 100 коинов)

Продолжаем.

Шаг третий
Галя спрашивает у соседей: правильная ли транзакция от Боба?
10 добрых соседей сказали правильная. 1 злой сказал неправильная. Галя видимо транзакцию реджектит ибо проверить кто злой, а кто добрый она не может и должна думать о законе Мэрфи...

Все верно с третьим шагом?
Хороший чувак Боб получил бабосы на абсолютно законных основаниях, от добрых соседей, но ничего с этими бабосами сделать не может до тех пор, пока в сети есть хакерские ноды, которые кричат "алярма, Боб хочет потратить то, чего у него нет, а есть это у Валеры".
member
Activity: 280
Merit: 26
Ну как ты узнаешь: отправил я трем ближайшим соседям байтики или не отправил? Я хакер, закодил свою ноду и срать хотел на правило трех соседей, а все остальные правила соблюдаю. Что твои хорошие ноды могут сделать? Как они узнают, что моя нода неправильная?
Да им не нужно знать, "правильная" нода, или нет. Они проверяют, правильность транзакции и подтверждения (согласно достаточно простых правил), ну и оповещают, кого надо - в первую очередь, получателя, если какая-то фигня (подпись не сходится, нарушена порядковая нумерация).
Тут уж просто в интересах получателя не принимать подобной транзакции.
Quote
В предыдущем посте я тебе привел пример атаки на сеть. Задал вопрос: как твой протокол от такой атаки защитится? Вместо ответа ты опять дурку включашь. Вроде, судя по всему, мозги есть у человека, но как с ним разговаривать я хз.  Sad

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

ПыСы. Отдельно вынесу:
Quote
Ну как ты узнаешь: отправил я трем ближайшим соседям байтики или не отправил?
Я, по-моему, миллион раз писал это скоро писалка отвалится: получатель по получении интересуется у этих соседей: а отправил ли отправитель? Не отправил - ну, так и нет твоей транзакции ни для кого.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Зафига отправлять каким-то трем ближайшим
Затем, что так положено по протоколу.
Ну как ты узнаешь: отправил я трем ближайшим соседям байтики или не отправил? Я хакер, закодил свою ноду и срать хотел на правило трех соседей, а все остальные правила соблюдаю. Что твои хорошие ноды могут сделать? Как они узнают, что моя нода неправильная?

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

Проще  надо быть. Ближе к народу. И люди к тебе потянутся.
member
Activity: 280
Merit: 26
Зафига отправлять каким-то трем ближайшим
Затем, что так положено по протоколу.
Ну, ты лично можешь и не отправлять - сидеть тихо сам с собою то левою то правою рукою в тишине.
Quote
В биткоине отличить плохих от хороших очень просто: у кого блокчейн сложнее, тот и хороший.
Зафига проверять, у кого блохчейн сложнее?(с) как-то так.
Походу, ты уверенной походкой идёшь по стопам твоего туповатого трука.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
"Небелые непушистые" могут пересылать сколько угодно чего им угодно внутри себя: как только дело доходит до положеных "трёх ближайших" - последние тут же скажут: "Какая-то у вас хуйня, малята; а идите-ка вы с ней нахуй".

Зафига отправлять каким-то трем ближайшим если: а) ты хакер, б) ты законнекчен к получателю (ближе некуда)?

Шаг первый.
Алисина нода1 - Алисина нода2 - Валера (100 коинов, транзакция 1)
Алисина нода1 - Добра нода - Боб (100 коинов, транзакция 1)

Шаг второй
Боб - Добрая нода - Галя (получила 100 коинов)
Валера - Алисина нода3 - Галя (получила еще 100 коинов)

Галя подцеплена и к добрым и к злым нодам. Как ей отличить плохих от хороших?


В беткоэне, в общем-то, всё точно так же: можно сколько угодно майнить собственную ветку в "своей сети".

В биткоине отличить плохих от хороших очень просто: у кого блокчейн сложнее, тот и хороший.
member
Activity: 280
Merit: 26
member
Activity: 280
Merit: 26
У меня такое очучение, что я с чукчами-нечитателями общаюсь.

Через какую "свою сеть"Huh Ну, и будут они там в своей сети вариться на здоровье, могут даже название себе собственное придумать, альтшиткоэн какой-нибудь.

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

"Небелые непушистые" могут пересылать сколько угодно чего им угодно внутри себя: как только дело доходит до положеных "трёх ближайших" - последние тут же скажут: "Какая-то у вас хуйня, малята; а идите-ка вы с ней нахуй".
В беткоэне, в общем-то, всё точно так же: можно сколько угодно майнить собственную ветку в "своей сети".
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Quote
Так не получится же транзакцию с одним номером заслать - ни онлайн, ни оффлайн. Ну, то есть, получится - но один раз и очень ненадолго.

Это если в твоей сети все белые и пушистые...

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

Итак поехали.
1. Алиса посылает через хорошую сеть транзакцию: номер 1, сумма 100 коинов, со счета номер Алиса100500, на счет номер Боб100500
2 Алиса посылает через свою сеть другую транзакцию: номер 1, сумма 100 коинов, со счета Алиса100500 на счет Валера100500

3. Радостный Боб получил коины и решил их отправить своей бабушке следующей транзакцией: номер 1, сумма 100 коинов, со счета Боб100500, на счет Галя100500. Все ОК, добрые ноды зарелеят эту транзу и баба Галя будет довольна.

4. Радостный Валера, который на самом деле Алиса, тоже отправляет транзакцию бабе Гале, потому что она продала Алисе пирожок. Номер 1, 100 коинов, со счета Валера100500, на счет Галя100500.

Внимание вопрос: получит ли баба Галя транзакцию от Валеры?
Внимание ответ в еврейском стиле: а собственно почему бы и нет, если к ней подцеплена хотя бы одна хакерская нода Алисы?

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

member
Activity: 280
Merit: 26
1. Отправляю коины клиенту который оффлайн.
...
Итог - про транзц все забыли. Печаль. Как быть?
Ну я изначально говорил, что в общем-то для алгоритма надо, чтобы отправитель и получатель были оба онлайн, хотя потом подумал и решил, что можно прикрутить костыль с "временем жизни" транзакции, в принципе, это ни на что особо не повлияет, просто усложнится слегка из-за несинхронности часов, ну там можно ещё небольшой запас по времени добавить, в течение которого нельзя будет сделать новую транзакцию после того, как ТТЛ предыдущей истёк. В общем, проще всё онлайн делать, нахер все эти оффлайновые "холодне кошельки", это всё в беткоэне от безысходности.
Quote
6. Чувак из п.1 решил наебать клиента который в офлайне. Отправил те же самые коины по другому маршруту другому клиенту.
7. Другой сосед получил, проверил транзакцию - все пучком, но транза не ему - отправил ее дальше, записал транзу к себе в текстовый файл. ТТЛ = ТТЛ-1.
8. Сосед другого соседа получил - проверил - переслал - записал. ТТЛ = ТТЛ-1.
9. Сосед соседа другого соседа получил - увидел ТТЛ=0 - ничего не стал переправлять, про транзу забыл.

Первый клиент появился в онлайне.

10. Клиент послал запрос в сеть: "есть че для меня". Из сети от п.2 и п.3 пришло: "да, вот, забирай".

второй клиент появился в онлайне.

11. второй клиент послал запрос в сеть: "есть че для меня". Из сети от п.7 и п.8 пришло: "да, вот, забирай".

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

Так не получится же транзакцию с одним номером заслать - ни онлайн, ни оффлайн. Ну, то есть, получится - но один раз и очень ненадолго.
Поясняю:
Злоумышленник отправляет транзакцию клиенту А. Одновременно он отправляет эту же транзакцию его соседям, и своим.
Теперь он ту же транзакцию отправляет клиенту В. И опять отправляет её его (уже другим) соседям - и всё тем же самым своим.
Причём, эти "соседи" - они только по хэшу, сами могут быть хз где.
Тут вообще пофигу, онлайн клиенты А и Б, или оффлайн.
Pages:
Jump to: